ソラマメブログ › セカンドライフ自給自足生活めざして

  

Posted by at

2009年02月07日

フローティングテキスト

物作り教室第3回目は「フローティングテキスト」

文字の書けないSLでは
フローティングテキストなど文字を表示できるスクリプトは必須

というわけで今回も初心者の方がかんたんに扱えるよう
こんなスクリプトを作成しました



これですべてです


【 llSetText(text,color,1.0); 】

text → 文字
color → 色
1.0 → 透明度 (0.0にすると見えない) 

ほんとうにこれだけ


でもかんたんすぎるので解説すると
プログラミングには「型」というものが存在し
以下のように使い分けしているのです

「integer」・・・整数
「float」・・・小数点のつく数値(浮動小数)
「string」・・・文字列
「list」・・・複数リストとしてデータを扱う
「key」・・・アバターやプリムの識別
「vector」・・・float型を3つ集めて位置、色、速度などを表す
「rotation」・・・ float型4つ


最初に出ている「string text = "ここにメッセージを書く";」の「string
これは" "で囲った部分が「文字でっせ」と型を指定しているわけです

次に出ている「vector color = <1.0,0.0,0.0>;」の「vector
これはざっくり「3色を混ぜて色を表現してる」という意味合いでしょうか

各値が小数点を扱うfloatなのは
0.5とか0.8とかにするとまたも微妙な色合いが表現できるため
試しにいろいろ数値をかえると思いもよらぬ色調が出来上がります


今回はわかりやすいよう最初の行に文字を色を指定していますが

llSetText( " test " ,<1.0,0.0,0.0>,1.0);

こんなかんじで直接いれても同じ結果が得られます
日本語を扱う際は前回「タッチしたらしゃべる」でやったとおなじ
llUnescapeURL(" ")とエンコードした文字を入れるようにしてください  


Posted by 57577 iuga at 23:20Comments(0)物作り教室

2009年02月04日

ポーズボール

住人のCranberryさんがソファーを作ってました

ワインレッドの重厚感漂うソファーなので
これはかわいくsitは似合わない
ちょっと大人っぽく座ってみようじゃないかと
スクリプトをいれることになりました

「英語をみてたら眠くなる」先週ある住人さんが
そうつぶやき落ちていった経緯を踏まえ
今回はひとまず名前を入れ替えるだけで座れるポーズボールを
スクリプト工場にて無料配布することにしました

ゲットしたら持ち物から取り出し
スクリプトを開きます



「sit」というのは全アバターがデフォルトで持っているアニメーション
なのでこのスクリプトだけでもエラーは出ず座れますが
目標とするセクシー座りをするには他のポーズアニメーションが必要です

Freebieショップでタダでもらえるポーズで十分
なんか適当にもらってきた物を用意して
string animation_name = "sit"; の「sit」部分を
そのアニメーション名で書き換えます

例:string animation_name = "sitting chair 01";

ちなみに今回Cranberryさんが「座ったらしゃべるようにしたいねん」
そういっていたメッセージは2段目
string text = "こんにちわ"; の「こんにちわ」部分を書き換えるだけで実行できます

アニメーションをおなじプリム内にいれ
スクリプトを保存して完了です



配布はここ /express/64/227/0/
  


Posted by 57577 iuga at 22:36Comments(0)物作り教室

2009年02月02日

バロンの家

ノックさんちのわんこの家に
バロンがひとり お留守番で寝てた 



看板をタッチしたらこんなかんじ



ノックさん 完璧に
マスターしてた  


Posted by 57577 iuga at 20:35Comments(0)物作り教室

2009年02月01日

タッチしたらしゃべる

住人のknockさんが作ってたワンコのおうち
タッチしたらチャットに「touched.」ってでました


触ったら「さわったよ」と
犬小屋が喋っています

ちなみにこれは立派なスクリプト
プリムの生成をして「コンテンツ」タブを開き
「新しいスクリプト」をクリックすると出来上がるデフォルトのスクリプトです




出来上がった「New Script」をダブルクリックすると
こんな編集画面がでてきます



すべてはこのスクリプトが基本
以下、ざっくり解説です

*********************************************
default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, " Touched. " );
}
}
*********************************************


default
リンデンスクリプトのはじまりを意味します
例外もありますが、ここから以降がスクリプトとして動いていきます


state_entry
スクリプトの「最初の状態」を意味します
NewScriptを生成した際「Hello,Avator! 」とチャットで発言されるのは
その状態が「最初の状態」にあるから

ここでは「Hello,Avator! 」と発言されていますが
ほかにもこのスクリプト(プリム)がどんな性質であるか
記述する場合にも使われれます


touch_start
文字通り「タッチしたらスタート」です
この「タッチしたら〜」はイベントと呼ばれ
「装着したら〜」「ぶつかったら〜」「お金を払ったら〜」
スクリプトの動くきっかけになります


llSay( 0, " Hello,Avator! " );】
llSayは日本語で言うところの「動詞」にあたる部分です
ここではチャットで発言させるllSayが使われていますが
この赤文字にあたる「ll」のついた物を関数といいます

ちなみにこのllSay( 0, " Hello,Avator! " );
ざっくり訳すと「0チャンネルで、Hello,Avator! と発言さす」
ということになります

「0チャンネル」とは通常チャットで使われるチャンネル
このチャンネルについては必要に応じて説明しますが
みんながチャットでみえるよう喋らせたいときは通常「0」を指定します



さて、今回 knockさんが目指していたのは
「犬小屋をタッチしたらワンという」というスクリプトをいれること
いまの状態はタッチしたら「Touched.」といいますので
単純にこの部分を「ワン」に入れ替えてしまいます

default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, " ワン! " );
}
}

じつはこれは間違いです
では何が間違い?

正解は " ワン! "
スクリプトに日本語が使えないからです

しかしエンコードという方法を用いて日本語を表示可能にします
SL内でもできなくはありませんが今回はこちらのサイトを使い
日本語をエンコードしていきます

urlencode.net

左のマスに日本語を 
「オプション」で必ず「UTF-8」を選択して
「エンコード」ボタンを押します
すると右のマスに暗号のような半角英数の文字列が出てきます

ワン! → %E3%83%AF%E3%83%B3%EF%BC%81

エンコードするとこんな結果になりました
では以下 貼付けてみます

*********************************************
default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, llUnescapeURL(" %E3%83%AF%E3%83%B3%EF%BC%81 " ));
}
}
*********************************************


エンコードした文字列をスクリプトに読ませるため
llUnescapeURL( )を追加してやりました


編集画面の「保存」をクリックします
「Compile successful,saving...」 ・・・保存中
「Save complete」       ・・・保存成功


これで完了です





【エラーが出る場合はここを疑え】

・スクリプトはみな{ }( ) でくくられます
 括弧がきちんと閉じられないとエラーが出ます

・関数のあとにある「;」は大事
 編集中に消したりしているとエラーになります

・スクリプトに日本語は使えません 
 すべて半角英数字で記述します。全角の( )や句読点もエラーの対象です

・文章や文字列は必ずダブルクォーテーション「" "」で囲みます
 スクリプトでは文字列と整数はサルと鯛くらい種別が異なります
 文字列は必ずダブルクォーテーション「" "」でしっかり囲ってやります


ここまでできればいろんな物に応用可能です
おもわぬ物におもわぬ発言をさせて遊びましょう  


Posted by 57577 iuga at 05:36Comments(0)物作り教室

2009年01月31日

画像をアップロード

デフォルトのプリムは木の箱ですが
いろいろ物を作っていく上でテクスチャは欠かせません

ちなみにテクスチャ(texture)とは
物の表面の質感・手触りなどを指す概念、本来は織物の質感を意味する。
コンピュータグラフィックスにおいて、3次元オブジェクト表面に貼り付けられる模様。(wikipediaより)


フリーで配布しているところも数多くありますが
今回は自分で作った画像をテクスチャに貼る方法をご紹介

ちなみにわたしはMacではフォトショップ
WindowsではフリーのPaint.netを愛用しています
どちらもレイヤーがつかえるのと
背景を透明に仕上げる「tga」という拡張子がつかえるのがその理由
自作の画像もですがもちろん
写真などもそのままテクスチャとしてつかえます


【画像をアップロード】
アップロードとは「リンデンのサーバーに画像を入れる」という意味合い、画像はアップロードに1枚10L$かかります。インターネットに公開するため、デスクトップからブログに画像をアップするのと同じ作業です

セカンドライフのブラウザ「ファイル」から
「画像をアップロード」を選びます



自分のパソコン内ファイルが表示されます
画像を選択すると確認のプレビューがこんなかんじ


名前はセカンドライフ用につけることも可
アップロード後にも変更できますが、
わけがわからなくなってしまうのを防止するために
ここで名前を付けておくことをおすすめします。(日本語はつかえません)

「アップロード10L$」ボタンを押すとアップは完了です


【テクスチャを貼る】
ブラウザ下の「建造」ボタンを押し、画像を貼付けるプリムをクリックし編集状態へ
「テクスチャを選択」にチェックをいれ「テクスチャー」タブを開きます

図1


「テクスチャ」「色」と2つの窓がありますが
左の窓、デフォルトでは木箱のほうがテクスチャ操作窓です

窓をクリックするとこんなかんじのがでます



左の画像が現在設定されているテクスチャです
右が自分の持ち物内 つかえるテクスチャが表示されています

とりあえず適当にクリック クリック・・
左窓の画像がかわるのとおなじテクスチャが
編集中のプリムに張り付いているのがわかります

「選択」ボタンを押すとテクスチャが確定します


【テクスチャの調整】
図1の編集タブ内
「面ごとに繰り返す」を見ていきます

・水平
・垂直
ここの数値をかえていくとテクスチャの見た目がかわっていくのがわかります

・水平 1.000
・垂直 1.000
テクスチャが1:1の割合で張り付きます

・水平 2.000
・垂直 2.000
縦横2回くりかえしています

このように木目や壁紙など 
調整していくとよりそれっぽい見た目が得られます



ちなみに今回の画像はこんなかんじに
言葉を入れ替えられるよう バックとセパレートになっています



ぜんタネプロデューサー田中さんの銘言掛け軸 完成

  


Posted by 57577 iuga at 19:24物作り基礎編

2009年01月29日

物作り教室1

セカンドライフで物作りをしたことがない住人さんへむけて
ちょっとづつその方法を紹介することになりました

レッスン1回目は「プリムの出し方、動かし方」

【プリムを出す】

※写真をクリックすると大きく表示します


【プリムの移動】

※写真をクリックすると大きく表示します


【プリムを回転させる】

※写真をクリックすると大きく表示します


【プリムを伸縮させる】

※写真をクリックすると大きく表示します


移動 回転 伸縮の方法がわかったところで
教材のかぶり物をみんなで装着します



このとき装着位置は「左耳」

プリムのカツラをかぶっている人など「Skull(頭)」につけるときは要注意
うっかりかぶり物をとってしまうと人まえでハゲ頭!
なんてことになりかねないからです

なにかとあとが厄介なのでこの場合
鼻(nose)や耳(Right Ear)(Left Ear)など
頭が動いても位置が変わらない装着位置は代用可能です

移動 回転 伸縮を利用して
自分の頭にぴったり合うよう ポジションを直しました



グッジョブ  


Posted by 57577 iuga at 21:11物作り教室