ソラマメブログ
QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 2人
オーナーへメッセージ

  
Posted by at

2008年03月23日

Avimator でつくる小島よしお

「ゼロから始める Avimator」では Avimator を使った静止ポーズの作り方を見てみましたが、今回はいよいよ動きのあるものに挑戦です。どうせつくるなら、面白いものをつくろうということで小島よしおを選ぶことにしました。「そんなの関係ねえ~、そんなの関係ねえ~、そんなの関係ねえ~、はいおっぱっぴ~」のくだりをアニメにしてみます。

いきなり小島よしお!? と思うかもしれませんが、実は簡単なんです。実際につくるのは3種類の静止ポーズだけです。
驚かれましたか? Avimator にはひとコマひとコマをつくらなくてもコマとコマの間の動きを補完してくれる機能があります。この機能を用いれば、静止ポーズを三つつくるだけであの小島よしおの動きをつくることができるのです。 では早速見ていきましょう。まず最初に全体のコマ数を330に設定してください。また、コマ送りのスピードは毎秒45コマにしてください。Avimator を開いて最初のひとコマ目はそのままにしておきます。これは前回も説明したように、最初のひとコマ目のポーズをリファレンスとしてそれ以降の動きを記録するからです。したがってひとコマ目はそのままにして、ふたコマ目に移動します。そしてこの二つ目のコマに最初のポーズをつくります。

最初のポーズは腕を上にあげた状態のポーズです。(下の写真)



データを以下に書いておきますので、この数値を体の各部位に入力してください。
head<0, -28, 0>, neck<0, 0, 0>, rCollar<0.02, 0, 0>, rshldr<0, 21, -21>, rForeArm<0, 127, -36>, rHand<0, 0, 21>, lCollar<0, -30, -26>, lShldr<0, 48, 24>, lForeArm<0, -145, -1>, lHand<-74, 0, -14>, chest<0, 54, 0>, abdomen<86, 0, 0>, hip<0, -85, 0>, rThigh<-38, 0, 0>, rShin<41, 0, 0>, rFoot<0, 0, 0>, lThigh<-63, 0, 0>, lShin<138, 0, 0>, lFoot<0, 0, 0>

ふたコマ目の静止ポーズができたら、今度はそのまま12コマ目に移動し、そこにまた別の静止ポーズをつくります。今度は腕を振り下ろして、足も後ろに向けて蹴りだしたポーズになります。(下の写真参照)



これもデータを以下に書きますので、この数値を12コマ目の体の各部位に入れてください。
head<0, -28, 0>, neck<0, 0, 0>, rCollar<0.21, 0, 0>, rshldr<0, 21, -21>, rForeArm<0, 127, -36>, rHand<0, 0, 21>, lCollar<0, -34, -26>, lShldr<6, -101, 4>, lForeArm<0, 8, -1>, lHand<-74, 0, -14>, chest<0, 46, 0>, abdomen<86, 0, 0>, hip<0, -85, 0>, rThigh<-38, 0, 0>, rShin<41, 0, 0>, rFoot<0, 0, 0>, lThigh<-2, 0, 0>, lShin<58, 0, 0>, lFoot<0, 0, 0>

このとき2コマ目と12コマ目の間のコマを見ると、ちょうどこの二つのコマのポーズの間をつなぐように体の各部位が動いているのがわかります。8コマ目の写真は下のような感じ。これが最初に述べた、コマとコマの間の動きを補完する機能です。



2コマ目の静止ポーズはコピーして、20コマごとにペーストしていきます。つまり、22、42、62、とペーストしていき、282コマまでペーストします。12コマ目のポーズも同様にしてこちらも20コマごとに32、52、72、とコピーペーストしていき、最後は292コマにコピーしておわりです。

以上で「そんなの関係ねえ~」の部分は終わりです。次に「おっぱっぴー」のポーズを作ります。
「おっぱっぴー」のポーズは293コマ目につくり、このポーズのまま最後の330コマ目までいきます。



「おっぱっぴー」ポーズのデータを以下に書いておきます。この数値を体の各部位に入力してください。
head<-34, 0, 7>, neck<0, 0, 0>, rCollar<0.13, 0, 0>, rshldr<0, 53, 52>, rForeArm<0, 114, 0>, rHand<0, 0, 0>, lCollar<0, 0, 22>, lShldr<0, 0, 23>, lForeArm<0, 0, 0>, lHand<0, 0, 0>, chest<0, 0, -7>, abdomen<22, 0, -14>, hip<0, 0, 0>, rThigh<62, 0, -54>, rShin<0, 0, 0>, rFoot<39, 0, 0>, lThigh<0, 0, 0>, lShin<0, 0, 0>, lFoot<0, 0, 0>

これで完了です。

なお、この小島よしおのアニメはわたしのお店 Jammie Jazzie Reggae Cafe/Second Mime Theater で Freebie として入手可能です。小島よしお以外にも読書アニメ付きAFKツールや、水玉ちょうちん袖のワンピースなども Freebie として置いてありますので、ぜひ一度お越しください。URLは以下です。

http://slurl.com/secondlife/kagurazaka%20japan/160/33/45

皆様のご来店をお待ちしております。  

Posted by Jamaica at 14:01Comments(0)ポーズ/アニメ

2008年03月23日

ドアと窓を作ってみる(その2 - 窓編)

今回は窓をつくります。窓といってもただの窓ではありません。中が見えないようにカーテンをつけます。さらに、そのカーテンを開け閉めできるようにします。もちろん誰でも開けられるようでは困るので、特定の人しか開け閉めできないようなカーテンにします。
いままでは、サンプルスクリプトをそのまま入れてスクリプトを動かすことで、スクリプトを使う楽しさを体験してもらうことを狙いとしてきました。今回は一応設計めいたことに挑戦してみましょう。と言っても難しいことはありません。手順を追ってきちんとやっていけばだれにでもできます。

まず、「何をしたいのか(させたいのか)」を明確にしましょう。
そのために「なにをしなければいけないか」、もしくは「なくてはいけないか」もはっきりさせましょう。こういうこと5W1Hに従い「いつ、どこで、だれが、なにを、どうやって」実現するのか整理しておきます。

1)窓にカーテンをつける
 いつ?>常に。どうやって?>カーテンのついた窓のテクスチャーを貼る。
2)カーテンを開ける
 いつ?>窓にタッチしたとき。誰が?>特定のグループのメンバーが。どうやって?>テクスチャーを貼りかえる。
3)カーテンを閉める
 いつ?>窓にタッチしたとき。誰が?>特定のグループのメンバーが。どうやって?>テクスチャーを貼りかえる。
4)特定の人だけカーテンを開けられる
 いつ?>タッチしたとき。どうやって?>タッチした人がグループメンバーかどうか検知する。 

前回のドアの時もそうでしたが、スクリプトには状態 (state) という概念があります。前回のドアの時はドアの開いた状態(state open) と閉まった状態(state close) がありました。また、それ以外に実際のスクリプト上では初期設定を行う default という状態もありました。今回もカーテンの開いた状態と閉まった状態がありますので状態(state)に関してはドアの時と同じです。今回はdefault の状態をカーテンの閉まった状態(close) と考え、default と state open の二つの状態(state)でスクリプトを作ってみたいと思います。

スクリプトを書いていくときに、最初の状態(state) は必ず default が使われます。この default という状態(state)の中でやってもらいたいことをスクリプトを使って書いていきます。やってもらいたいことはさっき書き出したとおりですね。まずは(1)窓にカーテンをつける=カーテンのついた窓のテクスチャーをプリムに貼って窓をつくる。でしたね。今回使うテクスチャーはカーテンが閉まった状態の窓とカーテンが開いた状態の窓、それを内側と外側それぞれ作ります。合計4枚のテクスチャーが必要になるということです。まず、カーテンの閉じた状態の窓のテクスチャーを貼ることにしましょう。

default
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartaincloseout", <1, 1, 0>, <0, 0, 0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainclosein", <1, 1, 0>, <0, 0, 0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
}

"cartaincloseout" が閉じたカーテンのテクスチャー外側、"cartainclosein" が閉じたカーテンのテクスチャー内側です。"Brazillian rosewood" というのは窓枠の部分に貼ったテクスチャーです。SLを始めた時に初期でついてきたテクスチャーの中にありますが、ここはそれぞれ好みで色んなテクスチャーを選んでください。上記スクリプトと、スクリプトの中で指定したテクスチャーをオブジェクトのコンテンツの中に入れると、下の写真のように窓の体裁をなすようになります。
わかりやすいようにコピーして、窓の内側と外側が見えるようにしました。



次にカーテンの開いた状態の窓を作ってみることにしましょう。作り方はカーテンの閉じた状態の窓と全く同じです。
ただし、テクスチャーだけが窓の開いた状態のものに変わります。今回は "cartainopenout" と "cartainopenin" という名前になっています。

default
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartainopenout", <1, 1, 0>, <0, 0, 0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainopenin", <1, 1, 0>, <0, 0, 0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
}

下の写真をご覧ください。ちゃんとカーテンが開いて窓の向こうの景色が見えますね。わかりやすいようにカーテンを閉めた状態のものと並べてみました。



あとはこの二つの状態をいったりきたりできるようにすればいいわけです。最初に5W1Hで整理したように、タッチしたときに切り替わるようにしたいんでした。そこで窓にタッチしたときに二つの状態を行ったり来たりできるようなスクリプトを追加します。開閉二つの状態と、その間を窓にタッチするたび行ったり来たりできるスクリプトは下記のようになります。
default
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartaincloseout", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainclosein", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
touch_start(integer total_number)
{
state open;
}
}
state open
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartainopenout", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainopenin", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
touch_start(integer total_number)
{
state default;
}
}

見ていただくとわかるとおり、カーテンが閉まった状態(default)の方は touch_start(integer total_number) という部分とstate open; という部分が追加されました。これは「タッチしたときに、state open という状態(state)に移行するということを意味しています。同様にしてカーテンが開いた方の状態(state open)の方も、touch_start(integer total_number) と、こちらは state default; という記述があります。これも同様に「タッチしたときにstate default(つまりカーテンの閉まった状態)に移行しますということです。

上記スクリプトと4種類のテクスチャー(窓の開閉x内と外)を窓のプリム(オブジェク)のコンテンツに入れて家にとりつけてみました。それが下の写真です。



タッチするとちゃんとカーテンが開いて部屋の中が見えます。当然部屋からもカーテンを開けて外を見ることができます。



最後の仕上げはセキュリティーですね。タッチしたときにグループメンバー以外はカーテンを操作できないようにします。
グループメンバーかどうかを検知するには llDetectedGroup(0) という機能を使います。この機能を用いて条件文をつくり、グループメンバーであればカーテンが開き(閉じ)、グループメンバーでない場合は"You are not granted to touch" というメッセージが出るようにします。これを行うために以下の記述を touch_start(integer total_number) に続けて加えます。

touch_start(integer total_number)
{
if(llDetectedGroup(0);)
{
state open; ((閉める場合は state defualt; )
}
else
{
llSay(0, "You are not granted to touch");
}

これを入れて完成させたスクリプトが下記のものです。

default
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartaincloseout", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainclosein", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
touch_start(integer total_number)
{
if(llDetectedGroup(0))
{
state open;
}
else
{
llSay(0, "You are not granted to touch");
}
}
}
state open
{
state_entry()
{
llSetPrimitiveParams([PRIM_TEXTURE, 1, "cartainopenout", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 3, "cartainopenin", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
llSetPrimitiveParams([PRIM_TEXTURE, 0, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 2, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 4, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
llSetPrimitiveParams([PRIM_TEXTURE, 5, "Brazillian rosewood", <1,1,0>, <0,0,0>, 0]);
}
touch_start(integer total_number)
{
if(llDetectedGroup(0))
{
state default;
}
else
{
llSay(0, "You are not granted to touch");
}
}}

スクリプト全般に言えることですが、中で使われている括弧( { や   }  )の数に気をつけてください。
ちゃんと正しい場所に使われているか。もしくは前の括弧と後の括弧の数が合っているかなどです。実際にスクリプトを書くときには In World (SL内)でエディターを使って書いていきますので、括弧に限らず誤りがあると保存するときにエラーが出て知らせてくれます。よくある文法エラーとしてはこの括弧の間違いや、セミコロンのつけ忘れ、もしくはいらないところにつけてる、などがあります。この辺は習うより慣れろで実際に使っているうちに誤りも少なくなってくるでしょう。

長い記事でしたが、ようやく終了です。グループ限定のセキュリティーの方もちゃんと動いてくれました。(下写真)



家づくりが一段落したので、今度は久しぶりに Avimatar で遊んでみましょう。前回は静止ポーズでしたが、次は動きのあるものに挑戦です。題材としては、もはや旬は過ぎた感は否めませんが小島よしおですw お楽しみに。  

Posted by Jamaica at 08:37Comments(3)家づくり

2008年03月20日

ドアと窓を作ってみる(その1 - ドア編)

家づくりの最後はドアと窓です。まずはドアから作ってみましょう。
ドアの基本的な機能として、普段は閉じていて侵入者を防ぐ、家の主もしくは関係者が来たときは開いて中に入れる、中に入った後は再び閉まる、といったところでしょうか。スクリプトを入れる前にまず、ドアをつくります。右クリックから「作成」を選び、ボックスを作っておいてから、それを伸ばして一枚の板にしてドアにします。テクスチャーはとりあえずあるものの中から適当に張っておきましょう。もちろん自分でカッコ良いドアのテクスチャーを作ってはってもOKです。わたしはとりあえず間に合わせてで下の写真のようなものを作ってみました。



このドアにスクリプトを入れてみます。スクリプトは下記のものをコピー・ペーストして使ってください。
やり方はオブジェクトの編集メニューからコンテンツのタブを選び「新しいスクリプト」ボタンを押します。するとHello Avatar! というスクリプトが出てきますので、これをすべて消して下記のスクリプトをそこにコピー・ペーストします。保存をすることを忘れないでください。名前もNew ScriptとなっているのをDoorScriptとか何か適当な名前に直しておきましょう。
最初から3行目の vector MOVE_TO=<1.0,-1.0,0.0>; の数値は作るドアの大きさ、取り付ける場所などによって微妙に変わってきます。実際にドアの開閉をしながら微調整をしてみてください。
llSetText("Staff Only", <1.0,1.0,1.0>,1.0); はドアの上にStaff Only という文字を表示させるためのものです。この表示が必要ない場合はこの命令自体をとってしまうか、Staff Only を消して "" だけにしてください。
ドアは開けてから5秒後に自動的に閉まるように設定されています。開けてから閉まるまでの間隔を調整するのは llSetTimerEvent(5.0); の値を 5.0 から変えてやります。また、5秒経たなくてもタッチすれば閉まるようになっています。

rotation rot;
vector pos;
vector MOVE_TO = <1.0,-1.0,0.0>;

default
{
state_entry()
{
llSetText("Staff Only",<1.0,1.0,1.0>,1.0);
llSetSitText("");
llSetTouchText("Enter");
pos = llGetLocalPos();
rot = llGetRot();
state close;
}
}

state open
{
state_entry()
{
llSetRot( rot*llEuler2Rot(<0.0,0.0,90.0>*DEG_TO_RAD));
llSetPos( pos+MOVE_TO);
llSetTimerEvent(5.0);
}

touch_start(integer total_number)
{
state close;
}
timer()
{
llSetTimerEvent(0);
state close;
}
}

state close
{
state_entry()
{
llSetRot(rot);
llSetPos(pos);
}

touch_start(integer total_number)
{
if(llDetectedGroup(0))
{state open;}
else
{llSay(0,"You are not allowed to enter.");}
}
}

スクリプトをコンテンツタブに入れ、ドアの完成ですが、このときグループ設定をどうするかを確認しましょう。今回のドアスクリプトはオブジェクトに設定されたグループと同じグループの人だけがドア操作できるようになっています。それ以外の人がドアにタッチすると "You are not allowed to enter" というメッセージが出るようになっています。オブジェクト(プリム)にはそれを作成したときに作者がアクティブにしていたグループが設定されています。オブジェクトのグループ設定を変えたい場合は編集メニューの一般というタブを選びグループの設定を変えることができます。(下の写真参照)



さあ、これでドアの完成です。ちゃんと開いていますね^^



次回は窓をつくります。中が見えないようにカーテンをかけて、さらにそれが開け閉めできるようにします。  

Posted by Jamaica at 15:22Comments(4)家づくり

2008年03月16日

ゼロから始めるプリム作成(その2-家を作ってみる3)

家づくりもいよいよ最終段階、ドアと窓が残っていますが今日はまず窓をつけてみましょう。

前回テクスチャーを貼るときに説明がもれましたが、窓はプリムを中空にして穴をあけるというやり方の他に、透明なテクスチャーを貼り付けるという方法でも作ることができます。前回テクスチャーを貼っていったときに、入口の横の壁だけは窓のついたテクスチャーを貼りました。あの窓の部分が透明なテクスチャーになっています。下の写真をご覧いただくとわかります。窓の部分から部屋の中がちゃんと見えるようになっていますね。



好みのテクスチャーでこのような窓の開いたものがあれば良いのですが、なかなかそうもいかないので窓を作ることにします。
ガラスを作るには透明なテクスチャーを貼ってやることが必要になります。一番てっとり早い方法は一枚の板を作り編集メニューのテクスチャーのところで透明度を最大にしてやることです。では板を窓のためにあけた開口部に取り付けましょう。取り付ける前に開口部の面のテクスチャーの色を変えて、窓枠っぽくしましす。



次に板を窓にはめ込みます。下の写真では板に引き伸ばしただけで、テクスチャーはデフォルトの状態です。



この板のテクスチャーをブランクにし、透明度を最大にします。テクスチャーの透明度は最大で90%です。完全に透明にしたい場合は別途100%透明なテクスチャーを作って、それを貼り付けるという方法をとります。テクスチャーの色は白が普通の窓らしくて良いと思いますが、今回はちょっとUV加工っぽく茶色にしてみました。



これで一応窓枠として開けた開口部に窓ガラスが入りました。窓ガラスが入ったことで人が勝手に出入りする心配はなくなりましたが、家の中は丸見えですね。せめて出かけるときにはカーテンもしくはブラインドを閉めていきたいですね。次はカーテンやブラインドを開け閉めできるような窓を作ってみましょう。窓の状態を変更するのはプリムのテクスチャーを貼りかえることによって行いますが、そのためにはスクリプトが必要になってきます。同じく開閉のためにスクリプトが必要となるドアと合わせて、次回作ってみましょう。  

Posted by Jamaica at 10:31Comments(2)プリム作成

2008年03月13日

ゼロから始めるプリム作成(その2-家を作ってみる2)

さて、前回はパネルをパタパタと組み立てて、なんとか家の形ができました。ちょうど木質パネル住宅の建築途中のような外観でしたね。オブジェクトはデフォルトのテクスチャーが木なので見た目がほんとにそのものという感じでした。(下の写真参照)



今回はこの家にテクスチャーを貼っていきます。リアルの家の建築になぞらえれば、木質パネルの上に外側はモルタルを塗ったり、内側は壁紙をはったりということになるわけですが、SLの家づくりもまさにそういう感じです。
さて、リアルの家だとまずは屋根からということが多いように思います。そこでSLでもまず屋根のテクスチャーを貼ってみましょう。前回の木質パネルの模型状態から、下の写真はすでにテクスチャーを貼り付けています。貼り付けたテクスチャーをひとつづつ見ていきましょう。オブジェクトを右クリックして編集を選びます。



編集メニューの中の「テクスチャーを選択」にチェックを入れます。こうすることでオブジェクトの各面のテクスチャーを個別に選べるようになります。これをやらないと、テクスチャーを選んだ際にオブジェクトのすべての面に同じテクスチャーが貼られてしまいます。ですのですべての面に同じテクスチャーを貼りたい場合は逆にここをチェックしないようにします。



編集メニューのテクスチャータブの中からテクスチャーを選び、持ち物の中から貼りたいテクスチャーを選びましょう。今回は初期アバターの時から持っているテクスチャーの中から「Shangles」というテクスチャーを選びます。テクスチャーはオブジェクトに貼り込む際に引き伸ばしたり縮めたりすることができます。テクスチャーの伸縮は水平/垂直それぞれの方向について独立して行うことができます。編集メニューのテクスチャータブの中に「顔ごとに繰り返す」という項目があります。変な訳ですが、顔というのはおそらくFace(面)の誤訳でしょう。ひとつの面について何枚分のテクスチャーを貼るかということを言っています。デフォルトではここは垂直、水平ともに1.00になっていますが、たいていの場合それではテクスチャーの柄が大きすぎるので数値を大きくして調整します。今回の屋根の場合は水平/垂直ともに3.00に設定してみました。



つづけて壁にテクスチャーを貼っていきます。壁のテクスチャーにはこれも初期でついてくる「Atoll Road Planks」というテクスチャーを使います。テクスチャーの引き伸ばしは水平方向は1.00、垂直は3.00に設定します。



今度は入口横の壁にテクスチャーを貼ってみましょう。テクスチャーは「Atoll Shack Wall Int」というのを使います。下の画面をごらんいただくと分かりますが窓がついていますね。実は、このような一部に透明なテクスチャーを持つテクスチャーを使うと窓を作ることができるのです。透明テクスチャーの作り方は別の機会に見てみたいと思いますが、今回はこのように透明テクスチャーを使って窓をつくることもできる、ということを覚えておいてください。



床には「Carpet Shortpile」というテクスチャーを貼ります。



天井は「Woodfloor」、Buildings というフォルダーの中にあります。



気がつくといつの間にか夜が明けていました。w



次は窓とドアをつくりましょう。  

Posted by Jamaica at 09:48Comments(0)プリム作成

2008年03月11日

ゼロから始めるプリム作成(その2-家を作ってみる1)

その1で球体を作ったと思ったらいきなり家!?とびっくりされるかもしれませんが、数あるオブジェクトの中でも比較的簡単なのが家だと思います。もちろん洒落た家を作ろうとかなるとセンスも要求されますし、張り込むテクスチャーもこだわりたいですが、基本的な家の機能、すなわち夜露がしのげるよう(まあ、実際SLでは関係ないですけど^^;)壁と屋根と床を作ってみましょう。(その1)でオブジェの出し方はわかったと思います。右クリックで「作成」を選び適当にその辺をドラグしてやるとプリムが現れるのでしたね。(MACの人は右クリックの代わりにCtrl+クリックです)前回は球体のオブジェでしたが、今回はボックス(立法体)を使います。

適当にその辺を右クリックすると円形のメニューが現れますので作成を選びます。



今回使う形状は前回(その1)で作った球体ではなく、立法体です。ボックスという言い方もします。
プリムの種類がいくつかありますが、デフォルトではボックスがそのまま選択されます。
作成を選んだ状態でその辺をクリックするとボックスが現れます。



ボックスを引き伸ばしてパネルにしてみましょう。まず、編集メニューから「引き伸ばす」を選びます。



「引き伸ばす」を選ばない場合でも、オブジェクトパラメーターのサイズの数値をいじることで大きさを変えることはできますが、「引き伸ばす」を選ぶと直接各軸の印(赤、青、緑)をクリックドラグして大きさをいじれます。
どちらのやり方でもいいので適当に引き伸ばして一枚のパネルをつくってみましょう。
引き伸ばせるパネルの最大の大きさは10mx10mです。



要はこれを何枚も作ってパタパタと組み立てていけば家らしきものはできますね。ちょっとやってみましょう。
まず、パネルを立てましょう。編集メニューの「回転」を選ぶと(赤、青、緑)のリングが現れ、それをクリック、ドラグすることでオブジェクトを回転させることができます。先ほどのサイズと同じようにオブジェクトパラメーターの「回転」のところの数値を直接いじってやっても回転させることができます。



同じようなパネルを何枚かつくり、回転させて立てて壁にします。
ちょうど、木質系パネル住宅の建築現場っていう感じですね^^



と、ここまで書いてきて気づいた方もいるかと思いますが、そうです、何も回転させなくても伸ばす方向を考えればそのまま壁をつくれます。実際にはボックスのオブジェから回転させなくても済むような方向に引き伸ばしてパネルを作りながら、それを組み立てて作っていくのが簡単でしょう。



パネルで四方を囲まれてなんとなく家らしくなってきましたが、窓や入口がありませんね。



窓の付け方にはオブジェの真ん中をくり抜くとか、透明のテクスチャーを貼るなど、いろいろな方法がありますが、まずはオブジェをくり抜く方法でやってみましょう。まずパネルを床と同じ方向に伸ばします。ただしサイズとしてはもう一方の対面の側壁と同じサイズにしておきます。



この状態で壁を回転させて立てます。



編集メニューのオブジェクトタブのところにある「中空」の値をいじってみましょう。これで壁に窓を開けることができます。
今回は数値を50に設定してみました。



窓ができたところで、こんどは入口を作りましょう。別の側面の壁を二枚のパネルに分けて、間に入口を作りました。



あと一息です。ここまできたら屋根も載せちゃいましょう^^
屋根を作るにはボックスを作ってからパスカットで三角屋根の形をつくります。パスカットの値は0.5になります。



回転で方向を合わせて、下のような感じになりました。



今日はここまでにしておきましょう。次回はこれにテクスチャーを貼ったり、窓やドアをつけていきましょう。

では、またね~^^  

Posted by Jamaica at 01:12Comments(0)プリム作成

2008年03月08日

ゼロから始めるGIMP(その1)

お店の看板作り、服の制作、SLでのものづくりに欠かせないのがペイントソフト。
フォトショップが定番ですが、簡易版のエレメントでも結構値段するし、使い方もよくわからなかったり、という感じでせっかく購入したのに使わなかったり、お試し版をちょっといじっただけであきらめてしまっている人も多いのではないでしょうか。

そんな人のための強い味方がGIMPです。

GIMPとはフォトショップなどと同様のペイントソフトで、アニメ作成のところで紹介したAvimatarのように無償で配布されているフリーウェアです。フリーウェアと言ってもその機能は有償のフォトショップエレメントなどと比べても何ら遜色なく、SLでの使用に限って言えば、むしろ使い勝手は良いくらいです。

たとえばこんなセルフポートレイトもスナップショットとGIMPで作れちゃいます。



今日はそんなGIMPの使い方をサクサクっと覚えちゃいましょう。

まずはGIMPを入手。 ⇒ http://gimp-win.sourceforge.net/stable.html

MACの方はこちらから。 ⇒ http://gimp-app.sourceforge.net/

残念ながら最新バージョンの2.4はWindowsしか対応していません。MACの方は2.2を使っていただくことになります。

ダウンロードを終えたら、早速GIMPを起動してみましょう。 初期画面が出たら新規作成であたらしいファイルを開いてみましょう。



ファイルはデフォルトでは420x300となっていますが、この大きさは任意に選ぶことが可能です。
フォトショップなどもそうですが、GIMPもレイヤーが使えるようになっています。レイヤーとは、下の画面に上から別の画面を重ねることでひとつの画面とすることができるような構造で、テンプレートを使って服を作るときなどに必ず使います。新規ファイル作成時にはこのレイヤーはまだ無く、背景だけがあります。ですのでこの背景の上にレイヤーをつくることにします。
レイヤーの構造は メニューの ダイアログ>レイヤー で見ることができます。



レイヤーの作成はメニューの レイヤー>新規レイヤー でできます。



新規レイヤーは何も書かれていない状態では、丁度一枚の透明シートのような感じです。また、このような透明シートとしてのレイヤーは何枚も重ねることが可能です。ですので服などを作るときにはこの特性を利用し、一番下の背景にTexture Map(型紙)を読み込み、レイヤーを使って服を書き込んでいくといった方法をとります。レイヤーのウィンドウで背景をオフにしてみると下の画面のようなチェック模様の画面がでてきます。これは透明であるということを表していますので、今後レイヤーを使う際に覚えておいてください。



さて、以上GIMPの初期画面から新規ファイルを開きました。ここでいちから絵を描いていってもいいのですが、実際には既にある画像を背景として読み込み、そこにいろいろな加工をしていくというケースが多いかと思います。ということで、実際にSLで撮ったスナップショットを使ってちょっと遊んでみましょう。

まず、加工したいスナップショットを読み込みます。



ちょっとこのままだと大きすぎますね。人物のまわりだけ切り取って使うことにしましょう。
切り取るにはメニューの 道具>選択ツール>Rectangle Select を選びます。(なんで最後だけ英語なんだろ?まあフリーソフトですから、ご愛敬ということでw)



選択した範囲だけを切り取るにはメニューから 画像>Crop to Selection を選びます。



これで選択範囲だけを切り取ることができました。



次に文字を入れてみましょう。メニューから 道具>文字 を選びます。



文字を入力する際に文字色を選んでおきましょう。今回はピンクで入れてみることにします。
色の変更はツールウィンドウのカラーパレットをクリックして「描画色を変更」というウィンドウで行います。



色を選んだら、文字カーソルで画面上をクリックすると「GIMP文字エディター」というウィンドウが現れますので、そこから文字を入力していきます。フォントや文字の大きさ、色はツールウィンドウの方で変更することができます。



文字の位置を動かしたいときはツールウィンドウからMoveツールを選びMoveの設定を Move the active layer とし、かつレイヤーダイアログで文字レイヤーを選択してやると、Moveツールで文字位置を動かすことができます。このように文字を入れる場合は自動的に一番上に文字レイヤーが出現します。また、文字レイヤーに限らず各レイヤーは可視、不可視の切り替えができます。またレイヤーを重ねる順番も入れ替えることができますので、いろんな部分を別々に描いて後で重ねるといったことも自由にできます。



さて、次に顔のまわりをハートで囲んでみましょう。(自分でやるのはちょっと恥ずかしいんですが・・・^^;)
まず、周りを囲むハートの枠を描くためにメニューから レイヤー>新規レイヤー で新しいレイヤーを作ります。



新規レイヤーは一番上にきますので、そのまま枠を塗りつぶすと文字が隠れてしまいます。そこでレイヤーの階層をひとつ下げて、文字と写真の間に来るようにします。



この写真と文字の間に入ったレイヤーにハートの枠を書いていきます。ハートの枠を描くにはPathツールを使うと便利でしょう。Pathツールは私のようにフリーハンドで描くお絵かきが全く駄目なひとでも比較的きれいにいろんな形を描くことができます。なにより服を作る際など、テクスチャーマップ(型紙)があれば、それにそって服の形を奇麗につくることだって可能です。(それはまた後日) ということでPathツールを使ってハートを描いてみましょう。メニューから 道具>Path を選びます。



やり方は簡単、点をプロットしていくと点と点の間が線で結ばれていきます。曲線部分などは点の間隔を細かくしてあげるときれいに描けるでしょう。また、ちょっと歪んでいるなとか思ったらば、後で修正もききます。



形が整ったら、メニューから 選択>パスから を選びます。



この状態ですと、ハートの内側が選択されたことになっています。しかし、塗りつぶして枠にしたいのはハートの外側ですね。そこでメニューから 選択>反転 を選んでやります。これで選択範囲はハートの外側になりました。



さあ、いよいよハートの枠を色付けしましょう。メニューから 編集>描画色で塗りつぶす を選ぶことで選択範囲のハートの外側を塗りつぶすことができます。塗りつぶす前に、ツールウィンドウの中のカラーパレットの描画色を塗りつぶしたい色に変えておくことを忘れずに。



今回は青でぬりつぶすことにします。結果は下の画のとおり。



今回の手順をひととおり覚えておけば、テクスチャーマップ(型紙)を使った服作りなどもできるようになるでしょう。
後日機会を見てGIMPを使った服作成にもトライしてみましょう。
楽しみにしていてください。

では、きょうのところはこの辺で。なが~いトピックでしたが、お付き合いいただきありがとうございました。  

Posted by Jamaica at 07:32Comments(0)GIMP

2008年03月04日

ゼロから始めるスクリプト(その7)

さて、ゼロから始めるスクリプト。(その5)ではオブジェクトを回転させるスクリプトを、(その6)ではパネルを触るとLMの地図を表示するスクリプトを見てみました。今回は(その6)で作ったパネルを(その5)で作った回転体にリンクさせてみます。

リンクの方法はリンクさせたい最初のオブジェクトを右クリックで編集モードにした後、Shiftキーを押しながら他のリンクさせるオブジェクトをクリックしていきます。すると各オブジェクトが黄色く縁取られますので、その状態でCtrl+Lを押すことで各オブジェクトをリンクさせることができます。
下の写真はリンクさせた後の状態。左側のパネルだけが黄色く、中央のボールと右側のパネルは水色になっています。これは最後に選択したオブジェクトが黄色くなるのですが、その黄色くなったオブジェクトがこのリンク全体のルート、すなわち大元の本体となります。



実はこのようなリンクのさせ方は問題があります。もともとは球体と一緒にリンクさせたパネルも回転させたかったのですが、上の写真のようにルートをパネルに設定した状態だと、まんなかの球体だけが回転してしまい、パネルは止まったままです。パネルも一緒に回転させるためには、中心となる回転スクリプトの入った球体をルートにしてやる必要があります。
オブジェクトをルートに設定する方法は単純で、最後に選択したオブジェクトがルートになります。

下の写真が球体をルートに設定した状態です。



この状態ですと無事にパネルも回転させることができました。



ちなみに、この回転させるパネルのトピックを書くきっかけになった hirano 君のお店ではこんな感じで回転しています^^


hirano 君のお店はこちら ⇒ http://slurl.com/secondlife/CHERRY/60/173/21
ビーチサイドのカジュアルな雰囲気のお店です。所在地の Cherry SIM はサーフィンのメッカ。

次回はちょっとプリム作成にもどって窓の作り方を見てみましょう。  

Posted by Jamaica at 21:04Comments(0)スクリプト