2008年02月29日
ゼロから始めるスクリプト(その6)
今日はオブジェクトに触ると地図を開いてランドマークを表示してくれるスクリプトです。
スクリプトは下のとおり。
default
{
touch_start(integer num)
{
llMapDestination("kagurazaka japan", <166, 22, 45>, ZERO_VECTOR);
}
}
llMapDestination("ここにSIM名をいれます", <ここはSIM内の目標とするランドマークの座標が入ります>, ZERO_VECTOR);
今回は神楽坂Japanにある私のお店のランドマークを表示するようにしてみました。いつものように「新しいスクリ」ボタンをクリックして、"Hello Avatar!"スクリプトのかわりに上のスクリプトをコピー/ペーストします。

これだけです。あとはお店の写真などをオブジェクトに貼り付けてパネルにすれば終わり。
タッチすると地図が開いてランドマークを表示してくれるTPパネルの出来上がりです。
できあがりはこんな感じ。店のロゴを貼るとか、写真を貼るとかしてもいいですね。

そしてこのパネルにタッチすれば

無事、地図が表示されました。
次回はいよいよこの地図表示するマップを回転体とリンクさせてみます。
スクリプトは下のとおり。
default
{
touch_start(integer num)
{
llMapDestination("kagurazaka japan", <166, 22, 45>, ZERO_VECTOR);
}
}
llMapDestination("ここにSIM名をいれます", <ここはSIM内の目標とするランドマークの座標が入ります>, ZERO_VECTOR);
今回は神楽坂Japanにある私のお店のランドマークを表示するようにしてみました。いつものように「新しいスクリ」ボタンをクリックして、"Hello Avatar!"スクリプトのかわりに上のスクリプトをコピー/ペーストします。

これだけです。あとはお店の写真などをオブジェクトに貼り付けてパネルにすれば終わり。
タッチすると地図が開いてランドマークを表示してくれるTPパネルの出来上がりです。
できあがりはこんな感じ。店のロゴを貼るとか、写真を貼るとかしてもいいですね。

そしてこのパネルにタッチすれば

無事、地図が表示されました。
次回はいよいよこの地図表示するマップを回転体とリンクさせてみます。
2008年02月26日
ゼロから始めるスクリプト(その5)
お友達の hirano くんから help コールがありました。
なんでも回転するオブジェクトに地図上のLMを表示するパネルを張り付けたいとのことなんですが、うまく回転してくれなかったり、地図表示がうまくいかなかったりということらしいのです。わたしに解決できるかどうか自信はなかったのですが、とりあえず様子を見にいってみることに。
オブジェクトを回転させるスクリプトは、これも非常に簡単です。
default
{
state_entry()
{
llTargetOmega(<0,0,1.0>,TWO_PI / 15,15);
}
}
ためしに適当にボックスオブジェクトを作ってコンテンツから New Script をつくってみましょう。 コンテンツのタブの中にある「新しいスクリ」ボタンを押すんでしたね。ボタンを押すとスクリプトがコンテンツの中に現れますから、スクリプトを開いて初期状態で書かれている"Hello Avatar!" スクリプトを消し、かわりに上のオブジェを回転させるスクリプトをコピー/ペーストします。
インワールドでのスクリプト編集には実は心強い味方がいるのです。うえのスクリプトで言えば llTargeteOmega の部分。ここをカーソルで選んでスクリプトウィンドウのメニューから Help>LSL Wiki ヘルプを選ぶと、下の画面に出ているようにWEBの解説画面が現れます。
これでこのスクリプトの入ったオブジェクトを回転させることができます。 llTargetOmega の後ろの括弧の中はパラメーター(変数)と言って、回転軸の方向や回転の速度などを決める数値が入りますが、とりあえず今回は置いときます。
さて、これだけならあまりに簡単ですが hirano 君の悩みはこの回転オブジェクトにパネルをリンクさせて貼った場合の話でした。どんな問題があったのでしょうか?次回それを見てみましょう。
なんでも回転するオブジェクトに地図上のLMを表示するパネルを張り付けたいとのことなんですが、うまく回転してくれなかったり、地図表示がうまくいかなかったりということらしいのです。わたしに解決できるかどうか自信はなかったのですが、とりあえず様子を見にいってみることに。
オブジェクトを回転させるスクリプトは、これも非常に簡単です。
default
{
state_entry()
{
llTargetOmega(<0,0,1.0>,TWO_PI / 15,15);
}
}
ためしに適当にボックスオブジェクトを作ってコンテンツから New Script をつくってみましょう。 コンテンツのタブの中にある「新しいスクリ」ボタンを押すんでしたね。ボタンを押すとスクリプトがコンテンツの中に現れますから、スクリプトを開いて初期状態で書かれている"Hello Avatar!" スクリプトを消し、かわりに上のオブジェを回転させるスクリプトをコピー/ペーストします。
インワールドでのスクリプト編集には実は心強い味方がいるのです。うえのスクリプトで言えば llTargeteOmega の部分。ここをカーソルで選んでスクリプトウィンドウのメニューから Help>LSL Wiki ヘルプを選ぶと、下の画面に出ているようにWEBの解説画面が現れます。

これでこのスクリプトの入ったオブジェクトを回転させることができます。 llTargetOmega の後ろの括弧の中はパラメーター(変数)と言って、回転軸の方向や回転の速度などを決める数値が入りますが、とりあえず今回は置いときます。
さて、これだけならあまりに簡単ですが hirano 君の悩みはこの回転オブジェクトにパネルをリンクさせて貼った場合の話でした。どんな問題があったのでしょうか?次回それを見てみましょう。
2008年02月24日
ゼロから始めるスクリプト(その4)
椅子にすわるスクリプトを今回は見てみます。
すべてのオブジェクトは座ることができますし、ふつうはそのまま座ってもほとんど問題なくすわれるんですが、オブジェクトの形状などによってはそのまますわるとポジションがずれていたりして一見して不自然な形になってしまったりします。
今日はそういった座るポジションの修正の仕方を見てみましょう。
まず、下の画像をご覧ください。これは椅子にすわってみたところなんですが、見事にすわるポジション、特に高さがずれてしまっていますね。これを修正するにはオブジェクトに座った時のポジションを指定するスクリプトを使います。

上の画を見る限りでは高さの調節、もうすこし高い位置に持っていくことと、前後の位置ももうすこし前にだしてやる必要がありそうです。そこで、SitTargetというコマンドを使って位置調整をします。具体的スクリプトについては以下の通り。
default
{
state_entry()
{
llSitTarget(<0.3, 0, 0.7>, ZERO_ROTATION);
}
}
上下方向には 0.7 前後方向には 0.3 を入力しています。
これで無事座る位置は修正され、ふつうにすわることができるようになりました。

今回もスクリプト自体は非常に簡単で、わかりやすかったと思います。
前回も言いましたが、一見難しそうに見えるスクリプトも単純なスクリプトの集積です。
次回以降もいろんなスクリプトの例を見ながら、解説を加えていきたいと思います。
すべてのオブジェクトは座ることができますし、ふつうはそのまま座ってもほとんど問題なくすわれるんですが、オブジェクトの形状などによってはそのまますわるとポジションがずれていたりして一見して不自然な形になってしまったりします。
今日はそういった座るポジションの修正の仕方を見てみましょう。
まず、下の画像をご覧ください。これは椅子にすわってみたところなんですが、見事にすわるポジション、特に高さがずれてしまっていますね。これを修正するにはオブジェクトに座った時のポジションを指定するスクリプトを使います。

上の画を見る限りでは高さの調節、もうすこし高い位置に持っていくことと、前後の位置ももうすこし前にだしてやる必要がありそうです。そこで、SitTargetというコマンドを使って位置調整をします。具体的スクリプトについては以下の通り。
default
{
state_entry()
{
llSitTarget(<0.3, 0, 0.7>, ZERO_ROTATION);
}
}
上下方向には 0.7 前後方向には 0.3 を入力しています。
これで無事座る位置は修正され、ふつうにすわることができるようになりました。

今回もスクリプト自体は非常に簡単で、わかりやすかったと思います。
前回も言いましたが、一見難しそうに見えるスクリプトも単純なスクリプトの集積です。
次回以降もいろんなスクリプトの例を見ながら、解説を加えていきたいと思います。
2008年02月23日
ゼロから始めるスクリプト(その3)
さて、「ゼロから始めるスクリプト」も3回目になりました。実は第一回目からどうしようか考えていたことがあります。
多くのスクリプト入門書、もしくはWEB、ブログはきちっと系統だててスクリプトのなんたるかを解説しているものがほとんどです。でもそのやり方だと、多くの方は実際にスクリプトを活用して楽しむ前の段階で挫折してしまうのではないでしょうか。実際わたしも真面目に一から覚えようとして挫折しそうになりました。
そんな私を救ってくれたのが、先人達がつくってくれたフリーで公開されているスクリプトの数々です。
それをつかって実際にいろんなスクリプトの動作を見ながら、また、必要な部分だけ取り出してモジュール化したりしながらやっているうちに、なんとなくスクリプトの全体像がつかめてきました。ですので、ここでもいちからスクリプトの基本を教えるのではなく、実際にスクリプトのモジュールをプリム(オブジェクト)の中に入れて、いろんなことをやりながら、まずはスクリプトを使うおもしろさを体験していただければと思います。その上で、スクリプトについて細かく解説してくれている他の教材を見ればさらに理解が深まるのではないかと思います。
スクリプトは前回、前々回もお話したように台本のようなものです。プリム(オブジェクト)にいろいろ仕事をさせる手順書のようなものとも考えられます。(ああ、手順書の方がわかりやすいかも。)手順書の中には実際にプリム(オブジェクト)にやらせたい仕事の内容が書いてあります。当然複雑なことをやらせたいと思えばやらせる仕事の数も増えますし、スクリプト自体も長く複雑になります。でも、一見長く見えるスクリプトも実はひとつひとつの仕事を順序良く並べただけのものなのです。
今日はみなさんもよく目にするオブジェクトの上に表示されている文字。あれを表示するスクリプトを見てみましょう。
default
{
state_entry()
{
llSetText("Pose Ball",<1,1,1>,1);
}
}
これだけです。
これを実際にボールの中に入れて、文字を表示させてみましょう。
まずボールをつくります。作り方は「ゼロから始めるプリム作成(その1)」を参照してください。

(読書をしながら余裕でボールを作るの図w)
ボールの中のコンテンツのところにスクリプトが入ります。コンテンツのタブの中に「新しいスクリ」というボタンが見えますね。このボタンを押すと、New Scriptというスクリプトが現れます。
New Scriptには前々回お話したように「Hello, Avatar」のスクリプトが入っているので、それを消して代わりに上の文字表示のスクリプトを書き込みます。上に書いてあるものをそのままコピーペーストしてもいいでしょう。

保存のボタンを押して保存しましょう。あとスクリプトの名前も "Pose Ball" に変更しておきます。
すでにこの時にはボールの上にPose Ballの文字が表示されているのが見えます。

どうです?これだけだったら簡単でしょ?^^
今回は「オブジェクトの上に文字を表示させる」というひとつの作業だけでした。
先ほども述べたように、スクリプトとはこういうオブジェクトにさせる仕事の手順を決められたルールに従って並べていくだけなんです。一見複雑に見えるスクリプトも、細かく分解していくとこのような最小単位に分解されます。
すこし、スクリプトに対する苦手意識が解消されたでしょうか?
次回は椅子に座るときのポジションを決めるスクリプトを使ってみましょう。
多くのスクリプト入門書、もしくはWEB、ブログはきちっと系統だててスクリプトのなんたるかを解説しているものがほとんどです。でもそのやり方だと、多くの方は実際にスクリプトを活用して楽しむ前の段階で挫折してしまうのではないでしょうか。実際わたしも真面目に一から覚えようとして挫折しそうになりました。
そんな私を救ってくれたのが、先人達がつくってくれたフリーで公開されているスクリプトの数々です。
それをつかって実際にいろんなスクリプトの動作を見ながら、また、必要な部分だけ取り出してモジュール化したりしながらやっているうちに、なんとなくスクリプトの全体像がつかめてきました。ですので、ここでもいちからスクリプトの基本を教えるのではなく、実際にスクリプトのモジュールをプリム(オブジェクト)の中に入れて、いろんなことをやりながら、まずはスクリプトを使うおもしろさを体験していただければと思います。その上で、スクリプトについて細かく解説してくれている他の教材を見ればさらに理解が深まるのではないかと思います。
スクリプトは前回、前々回もお話したように台本のようなものです。プリム(オブジェクト)にいろいろ仕事をさせる手順書のようなものとも考えられます。(ああ、手順書の方がわかりやすいかも。)手順書の中には実際にプリム(オブジェクト)にやらせたい仕事の内容が書いてあります。当然複雑なことをやらせたいと思えばやらせる仕事の数も増えますし、スクリプト自体も長く複雑になります。でも、一見長く見えるスクリプトも実はひとつひとつの仕事を順序良く並べただけのものなのです。
今日はみなさんもよく目にするオブジェクトの上に表示されている文字。あれを表示するスクリプトを見てみましょう。
default
{
state_entry()
{
llSetText("Pose Ball",<1,1,1>,1);
}
}
これだけです。
これを実際にボールの中に入れて、文字を表示させてみましょう。
まずボールをつくります。作り方は「ゼロから始めるプリム作成(その1)」を参照してください。

(読書をしながら余裕でボールを作るの図w)
ボールの中のコンテンツのところにスクリプトが入ります。コンテンツのタブの中に「新しいスクリ」というボタンが見えますね。このボタンを押すと、New Scriptというスクリプトが現れます。
New Scriptには前々回お話したように「Hello, Avatar」のスクリプトが入っているので、それを消して代わりに上の文字表示のスクリプトを書き込みます。上に書いてあるものをそのままコピーペーストしてもいいでしょう。

保存のボタンを押して保存しましょう。あとスクリプトの名前も "Pose Ball" に変更しておきます。
すでにこの時にはボールの上にPose Ballの文字が表示されているのが見えます。

どうです?これだけだったら簡単でしょ?^^
今回は「オブジェクトの上に文字を表示させる」というひとつの作業だけでした。
先ほども述べたように、スクリプトとはこういうオブジェクトにさせる仕事の手順を決められたルールに従って並べていくだけなんです。一見複雑に見えるスクリプトも、細かく分解していくとこのような最小単位に分解されます。
すこし、スクリプトに対する苦手意識が解消されたでしょうか?
次回は椅子に座るときのポジションを決めるスクリプトを使ってみましょう。
2008年02月20日
ゼロから始めるスクリプト(その2)
さて、今日はいよいよポーズをとらせるためのスクリプトをポーズボールに入れていきます。
この前FG三姉妹の写真を撮るときにつかったポーズボールがありますのでその中身をみながら、どんなスクリプトを使っているのか解説したいと思います。
この前お話したようにスクリプトはポーズボールのオブジェクトのコンテンツというところに入っています。
ここにはスクリプト以外にアバターにつけさせるポーズのアニメーションも入っています。
あとよく見ると何かテクスチャーも入っていますね。これについては後で解説いたします。

実際にここに入っているスクリプトを以下に書き出してみます。
一番手っ取り早いのは下のスクリプトをそのままコピーペーストして使うのが簡単です。
このとき一番上の string SET_TEXT="Arin Pose" のArin Poseを自分の好きな文字に入れ替えれば、その文字をポーズボールの上に表示させることができます。
string SET_TEXT="Arin Pose";
vector POSITION=<0.0, 0.0, -0.1>;
list rgb;
string animation;
default
{
state_entry()
{
llSetText(SET_TEXT,<1,1,1>,1);
llSitTarget(POSITION, ZERO_ROTATION);
llSetAlpha(1.0, ALL_SIDES);
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
else
{
integer perm=llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(animation)>0)
llStopAnimation(animation);
animation="";llSetText(SET_TEXT,<1,1,1>,1);
llSetAlpha(1.0, ALL_SIDES);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit");
animation=llGetInventoryName(INVENTORY_ANIMATION,0);
llStartAnimation(animation);
llSetText("",<0,0,0>,0);
llSetAlpha(0.0, ALL_SIDES);
}
}
}
こうしてコピーペーストして作ったスクリプトはしっかりと保存しておきましょう。
実際にポーズのアニメーションとスクリプトをボールの中に入れて(あとテクスチャーをボールに貼った場合はボールに貼ったのと同じテクスチャーをスクリプトやアニメーションと一緒にコンテンツの中に入れます。)、これで終了です。
さて、ポーズボールに座ってみましょう。 あれれ?足が床につきささってしまっています。

ポーズボールの位置が悪いようです。ボールを右クリックして編集の状態にしてからボールに座ると、矢印が出たままになりますので、ボールの位置を動かして調整することが可能です。

はい、できました^^

今回は、とりあえず深く考えずに既にあるスクリプトをボールに入れてみました。
次回以降はスクリプトをすこしずつ見ながら解説をしていきたいと思います。
文字が多くなりそうですけど、なるべく分かり易くすこしずつやっていきます。お付き合いください。
この前FG三姉妹の写真を撮るときにつかったポーズボールがありますのでその中身をみながら、どんなスクリプトを使っているのか解説したいと思います。
この前お話したようにスクリプトはポーズボールのオブジェクトのコンテンツというところに入っています。
ここにはスクリプト以外にアバターにつけさせるポーズのアニメーションも入っています。
あとよく見ると何かテクスチャーも入っていますね。これについては後で解説いたします。

実際にここに入っているスクリプトを以下に書き出してみます。
一番手っ取り早いのは下のスクリプトをそのままコピーペーストして使うのが簡単です。
このとき一番上の string SET_TEXT="Arin Pose" のArin Poseを自分の好きな文字に入れ替えれば、その文字をポーズボールの上に表示させることができます。
string SET_TEXT="Arin Pose";
vector POSITION=<0.0, 0.0, -0.1>;
list rgb;
string animation;
default
{
state_entry()
{
llSetText(SET_TEXT,<1,1,1>,1);
llSitTarget(POSITION, ZERO_ROTATION);
llSetAlpha(1.0, ALL_SIDES);
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
else
{
integer perm=llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(animation)>0)
llStopAnimation(animation);
animation="";llSetText(SET_TEXT,<1,1,1>,1);
llSetAlpha(1.0, ALL_SIDES);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit");
animation=llGetInventoryName(INVENTORY_ANIMATION,0);
llStartAnimation(animation);
llSetText("",<0,0,0>,0);
llSetAlpha(0.0, ALL_SIDES);
}
}
}
こうしてコピーペーストして作ったスクリプトはしっかりと保存しておきましょう。
実際にポーズのアニメーションとスクリプトをボールの中に入れて(あとテクスチャーをボールに貼った場合はボールに貼ったのと同じテクスチャーをスクリプトやアニメーションと一緒にコンテンツの中に入れます。)、これで終了です。
さて、ポーズボールに座ってみましょう。 あれれ?足が床につきささってしまっています。

ポーズボールの位置が悪いようです。ボールを右クリックして編集の状態にしてからボールに座ると、矢印が出たままになりますので、ボールの位置を動かして調整することが可能です。

はい、できました^^

今回は、とりあえず深く考えずに既にあるスクリプトをボールに入れてみました。
次回以降はスクリプトをすこしずつ見ながら解説をしていきたいと思います。
文字が多くなりそうですけど、なるべく分かり易くすこしずつやっていきます。お付き合いください。
2008年02月18日
ゼロから始めるスクリプト(その1)
さて、今日はいよいよスクリプトです。
ただの置物のオブジェクトに生命を吹き込むのがこのスクリプト。最初はとっつきにくいかもしれませんが、やり始めると一番面白く、はまるのもこのスクリプトかもしれません。
スクリプトは多少なりともプログラミングの経験とか知識があると理解しやすいかもしれませんが、そうでない人にとってはなんだかとっつきにくいだけで、大変だあという想いだけかもしれません。実際スクリプトに関するブログなりWEBページを見るとまず字が多い!ということでやる気をそがれる方が多いのではないでしょうか。
スクリプト=Scriptとは英語で台本、脚本のことです。つまり、オブジェクトという役者が、SL内でいろんなふるまいをするための脚本がスクリプトと言ってもよいでしょう。ですのでまあ、字が多いのも当たり前といえば当たり前なのかもしれません。ということで、ごめんなさい。このブログもご多分にもれず字が多くなりそうです。でも極力画もいれながらやっていきますのでおつきあいください。
いろんなスクリプト関係のページやブログなどを見ると必ずでてくるスクリプトに "Hello, Avatar!" スクリプトというものがあります。これはSL内でスクリプトを新規に作成しようとすると最初に出てくるスクリプトなのです。
まずは、実際にこの "Hello, Avatar!" スクリプトがどういうものか見てみましょう。
持ち物を開くと、上の方に作成というメニューがあるかと思います。
その中に「新しいスクリプト」という項目があるのでそれを選びます。

すると、New Scriptという名前のスクリプトが作られます。

これから作ろうとしているのはポーズボールに入れるスクリプトなので、名前を変えておきましょう。
PoseBallと変更してみました。

名前を変更してからスクリプトをクリックして開いてみると、すでに何かが書いてあります。

この、新規作成した時に既にスクリプトとして書かれているものが、"Hello, Avatar!" スクリプトなのです。
スクリプトの記述内容を下記に写してみました。
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
これだけ見てもなんのことやらさっぱりわかりませんので、実際にこのスクリプトをオブジェクトの中に入れてみましょう。
入れる場所は、前回の「ゼロから始めるプリム作成(その1)」で述べたように、オブジェクトのコンテンツに入れます。
持ち物のScriptのフォルダーからオブジェクトのコンテンツにスクリプトをドラグします。

これでオブジェクトに "Hello, Avatar!" のスクリプトが入りました。
ではオブジェクトをいったん持ち物に取り込みましょう。作成したオブジェクトを取り込むには右クリックして Take で取り込むことができます。

取り込まれたオブジェクトは持ち物の中のRecent Itemsというところで確認すると良いでしょう。特に名前をつけない限り、取り込まれたオブジェクトは Object という名前になっています。

この状態で取り込んだオブジェクトを再び外にだしてみましょう。持ち物から外にドラグすれば出すことができます。
オブジェクトを持ち物から外にだすことを REZ すると言います。
オブジェクトはこのようにして持ち物から出して編集して、また持ち物に戻すということを頻繁にやりますので、出し方と戻し方は覚えておいてください。
さて、出したオブジェクト(ボール)に触ってみましょう。なにが起きましたか?
下の画面左下に Object:Touched という緑の文字が出ていますね。これがこの "Hello, Avatar!" スクリプトでできることです。
実はあともうひとつ、 "Hello, Avatar!" スクリプトがやってくれることがあります。スクリプトを最初にコンテンツにドラグしたときだけ "Hello, Avatar!" という同じく緑の文字が出るのです。

「え?それだけ?」なんて言わないでくださいねw
今日はとりあえず、スクリプトがどういうものなのかということだけでも何となくわかっていただけたでしょうか?
スクリプトは先ほど述べたようにオブジェクトという役者にいろんなことを演じさせる台本のようなものです。
そしてこの台本はオブジェクトに分かるように(もちろん比喩的に言ってますw)特殊な言葉で書かれていると思ってください。
多くのスクリプト入門のブログやページではその言葉の構造というか、文法のようなものも解説したりしていますが、ここではあえてそれはしません。もちろん最初からきちんと体系的に勉強するという方法もあると思いますが、まずは既に出来上がっているサンプルをオブジェクトに入れて動作させて見て、それを楽しみながら徐々に覚えていくという方法をとりたいと思います。
実際、自分で一から十までスクリプトを書けなくても、既存のモジュールを組み合わせて自分なりのスクリプトを作って楽しんでいる人も多いのです。
気楽にかまえて、スクリプトを楽しみましょう。
次回以降はポーズボールに入れるスクリプトを具体的に見ていきたいと思います。
ただの置物のオブジェクトに生命を吹き込むのがこのスクリプト。最初はとっつきにくいかもしれませんが、やり始めると一番面白く、はまるのもこのスクリプトかもしれません。
スクリプトは多少なりともプログラミングの経験とか知識があると理解しやすいかもしれませんが、そうでない人にとってはなんだかとっつきにくいだけで、大変だあという想いだけかもしれません。実際スクリプトに関するブログなりWEBページを見るとまず字が多い!ということでやる気をそがれる方が多いのではないでしょうか。
スクリプト=Scriptとは英語で台本、脚本のことです。つまり、オブジェクトという役者が、SL内でいろんなふるまいをするための脚本がスクリプトと言ってもよいでしょう。ですのでまあ、字が多いのも当たり前といえば当たり前なのかもしれません。ということで、ごめんなさい。このブログもご多分にもれず字が多くなりそうです。でも極力画もいれながらやっていきますのでおつきあいください。
いろんなスクリプト関係のページやブログなどを見ると必ずでてくるスクリプトに "Hello, Avatar!" スクリプトというものがあります。これはSL内でスクリプトを新規に作成しようとすると最初に出てくるスクリプトなのです。
まずは、実際にこの "Hello, Avatar!" スクリプトがどういうものか見てみましょう。
持ち物を開くと、上の方に作成というメニューがあるかと思います。
その中に「新しいスクリプト」という項目があるのでそれを選びます。

すると、New Scriptという名前のスクリプトが作られます。

これから作ろうとしているのはポーズボールに入れるスクリプトなので、名前を変えておきましょう。
PoseBallと変更してみました。

名前を変更してからスクリプトをクリックして開いてみると、すでに何かが書いてあります。

この、新規作成した時に既にスクリプトとして書かれているものが、"Hello, Avatar!" スクリプトなのです。
スクリプトの記述内容を下記に写してみました。
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
これだけ見てもなんのことやらさっぱりわかりませんので、実際にこのスクリプトをオブジェクトの中に入れてみましょう。
入れる場所は、前回の「ゼロから始めるプリム作成(その1)」で述べたように、オブジェクトのコンテンツに入れます。
持ち物のScriptのフォルダーからオブジェクトのコンテンツにスクリプトをドラグします。

これでオブジェクトに "Hello, Avatar!" のスクリプトが入りました。
ではオブジェクトをいったん持ち物に取り込みましょう。作成したオブジェクトを取り込むには右クリックして Take で取り込むことができます。

取り込まれたオブジェクトは持ち物の中のRecent Itemsというところで確認すると良いでしょう。特に名前をつけない限り、取り込まれたオブジェクトは Object という名前になっています。

この状態で取り込んだオブジェクトを再び外にだしてみましょう。持ち物から外にドラグすれば出すことができます。
オブジェクトを持ち物から外にだすことを REZ すると言います。
オブジェクトはこのようにして持ち物から出して編集して、また持ち物に戻すということを頻繁にやりますので、出し方と戻し方は覚えておいてください。
さて、出したオブジェクト(ボール)に触ってみましょう。なにが起きましたか?
下の画面左下に Object:Touched という緑の文字が出ていますね。これがこの "Hello, Avatar!" スクリプトでできることです。
実はあともうひとつ、 "Hello, Avatar!" スクリプトがやってくれることがあります。スクリプトを最初にコンテンツにドラグしたときだけ "Hello, Avatar!" という同じく緑の文字が出るのです。

「え?それだけ?」なんて言わないでくださいねw
今日はとりあえず、スクリプトがどういうものなのかということだけでも何となくわかっていただけたでしょうか?
スクリプトは先ほど述べたようにオブジェクトという役者にいろんなことを演じさせる台本のようなものです。
そしてこの台本はオブジェクトに分かるように(もちろん比喩的に言ってますw)特殊な言葉で書かれていると思ってください。
多くのスクリプト入門のブログやページではその言葉の構造というか、文法のようなものも解説したりしていますが、ここではあえてそれはしません。もちろん最初からきちんと体系的に勉強するという方法もあると思いますが、まずは既に出来上がっているサンプルをオブジェクトに入れて動作させて見て、それを楽しみながら徐々に覚えていくという方法をとりたいと思います。
実際、自分で一から十までスクリプトを書けなくても、既存のモジュールを組み合わせて自分なりのスクリプトを作って楽しんでいる人も多いのです。
気楽にかまえて、スクリプトを楽しみましょう。
次回以降はポーズボールに入れるスクリプトを具体的に見ていきたいと思います。
2008年02月17日
ゼロから始めるプリム作成(その1-球体を作る)
さて、ポーズを入れるポーズボール作成のため今日からオブジェクト(プリムとも言います)の作成について見ていきましょう。
まず最初に何処で作るかが問題です。
自分で土地を持っているひとであれば、自分の土地の敷地内でオブジェクトの作成が可能ですが、そうでないひとはオブジェクトの作成が許可されている場所をさがすことが先決です。SL内にはそのようなオブジェクトの作成がだれでもできる場所があり、一般的にはSand Boxと呼ばれています。「砂場」などと呼ぶ人もいます。
最初にSLをスタートしたWalker OrientationにもSand Boxがあります。
こちら ⇒ http://slurl.com/secondlife/Kadokawa%202/224/196/40
Sand Box は個人のSIMの中に作られているものもあります。探してみると意外にいろんなところにあるものです。
Sand Boxを利用する際は、作ったオブジェクトの後片付けをちゃんとするなど、マナーを守って使用しましょう。
通常Sand Boxでは作られたオブジェクトは一定時間が経つと作ったひとに自動的に返却されるようになっていますが、それでも人が多くなると放置されたオブジェクトが邪魔になったりするものです。基本的には公共の場での常識的なルールを守っていれば良いと思います。
せっかく同じモノづくりを志す人が集まってくるのですから、声をかけたりしてお友達になるのもいいかもしれません。
下の画像はWalker Orientation のSand Boxです。

私の場合は自宅がありますので、そちらで作ることにします。
オブジェクトを作るにはまずその辺の適当な場所を右クリックして作成を選びます。

作成を選ぶと下の画面のようなメニューがでます。いろんな形のオブジェクトがあるのがわかると思います。
今回はポーズボールを作るので、球形を選びましょう。

球形を選んだら、カーソルでその辺を適当にちょこっとドラッグしてやると、球形のオブジェクトが出現します。

オブジェクトにはこのように赤、緑、青の矢印がついています。この矢印をクリック/ドラッグしてやることでX, Y, Zの各方向に動かすことができます。また、メニューのタブからオブジェクトを選ぶと位置、サイズ、回転などのデータの数値を見ることができます。この数値を直接入力することでオブジェクトの位置、大きさ、角度を動かすこともできます。

オブジェクトの位置や大きさはこのようにして編集ができますが、外観を決めるのはテクスチャーです。
オブジェクトは初期状態では下図のように木目のテクスチャーが貼られています。

このテクスチャーを張り替えてみましょう。
テクスチャーをクリックすると持ち物のウィンドウが現れますので、その中のTextureというフォルダーを見てみましょう。
この中にはテクスチャーとして使える画像が入っています。今回はその中からバスケット地の布地を選んでみました。

テクスチャーについては好きなものを選んでもらえば良いと思います。とりあえずこれでポーズボールのボールの部分はできました。もちろんこれだけではただのボールでしかなくて、ポーズボールとしては機能しません。これをポーズボールとして使うためにはボールの中につけさせたいポーズのアニメや、アニメを実際に実行させるためのスクリプトを入れ込んでいかねばなりません。それを入れる場所がコンテンツです。(下図参照)

このコンテンツは、商品を梱包して販売する際にここに商品を入れたりするなどいろいろな場面で使用しますが、今回はここにスクリプトとポーズのアニメを入れます。ポーズはとりあえず作りましたので、次回はスクリプトの作り方を見ていきましょう。
まず最初に何処で作るかが問題です。
自分で土地を持っているひとであれば、自分の土地の敷地内でオブジェクトの作成が可能ですが、そうでないひとはオブジェクトの作成が許可されている場所をさがすことが先決です。SL内にはそのようなオブジェクトの作成がだれでもできる場所があり、一般的にはSand Boxと呼ばれています。「砂場」などと呼ぶ人もいます。
最初にSLをスタートしたWalker OrientationにもSand Boxがあります。
こちら ⇒ http://slurl.com/secondlife/Kadokawa%202/224/196/40
Sand Box は個人のSIMの中に作られているものもあります。探してみると意外にいろんなところにあるものです。
Sand Boxを利用する際は、作ったオブジェクトの後片付けをちゃんとするなど、マナーを守って使用しましょう。
通常Sand Boxでは作られたオブジェクトは一定時間が経つと作ったひとに自動的に返却されるようになっていますが、それでも人が多くなると放置されたオブジェクトが邪魔になったりするものです。基本的には公共の場での常識的なルールを守っていれば良いと思います。
せっかく同じモノづくりを志す人が集まってくるのですから、声をかけたりしてお友達になるのもいいかもしれません。
下の画像はWalker Orientation のSand Boxです。

私の場合は自宅がありますので、そちらで作ることにします。
オブジェクトを作るにはまずその辺の適当な場所を右クリックして作成を選びます。

作成を選ぶと下の画面のようなメニューがでます。いろんな形のオブジェクトがあるのがわかると思います。
今回はポーズボールを作るので、球形を選びましょう。

球形を選んだら、カーソルでその辺を適当にちょこっとドラッグしてやると、球形のオブジェクトが出現します。

オブジェクトにはこのように赤、緑、青の矢印がついています。この矢印をクリック/ドラッグしてやることでX, Y, Zの各方向に動かすことができます。また、メニューのタブからオブジェクトを選ぶと位置、サイズ、回転などのデータの数値を見ることができます。この数値を直接入力することでオブジェクトの位置、大きさ、角度を動かすこともできます。

オブジェクトの位置や大きさはこのようにして編集ができますが、外観を決めるのはテクスチャーです。
オブジェクトは初期状態では下図のように木目のテクスチャーが貼られています。

このテクスチャーを張り替えてみましょう。
テクスチャーをクリックすると持ち物のウィンドウが現れますので、その中のTextureというフォルダーを見てみましょう。
この中にはテクスチャーとして使える画像が入っています。今回はその中からバスケット地の布地を選んでみました。

テクスチャーについては好きなものを選んでもらえば良いと思います。とりあえずこれでポーズボールのボールの部分はできました。もちろんこれだけではただのボールでしかなくて、ポーズボールとしては機能しません。これをポーズボールとして使うためにはボールの中につけさせたいポーズのアニメや、アニメを実際に実行させるためのスクリプトを入れ込んでいかねばなりません。それを入れる場所がコンテンツです。(下図参照)

このコンテンツは、商品を梱包して販売する際にここに商品を入れたりするなどいろいろな場面で使用しますが、今回はここにスクリプトとポーズのアニメを入れます。ポーズはとりあえず作りましたので、次回はスクリプトの作り方を見ていきましょう。
2008年02月16日
メガネ大好き!
Learning Second Languageという外国語(主として英語)習得のグループを主宰しています。
だからというわけではないのですが、時に先生っぽい雰囲気を演出したりしています。
その小道具のひとつがメガネ。でもこれがなかなか良いのがないのですね。
いままで使っていたのがSLを始めたばかりのころFreebieで見つけた下の画像のもの。
これはこれで気に入っているのですが、もうちょっとレンズの大きいのが欲しいと思っていました。

ところが、いざ探すとなるとレンズが必要以上に大きかったりして、なかなか「これだ!」というサイズのものに出会えませんでした。
でも、やっと見つけました。Koenji にある眼鏡屋さん、ottico の numero47 というモデルです。
フレームとレンズの色、それにレンズの透明度が選べるというすぐれものです。
これひとつで普通のメガネからサングラスまでOK
otticoのKoenji 店へはこちらから⇒ http://slurl.com/secondlife/Koenji/96/138/39
さっそく黒縁メガネで先生風に。

あと色つきレンズでサングラスにもできます。
下の画像はサングラスとして使った場合。 髪は一昨日RaCでゲットしてきたバレンタイン限定のFreebieです。
RaCへはこちらから⇒ http://slurl.com/secondlife/RaC%20City/180/125/27
ただしFreebieはバレンタイン限定なのでもうないかも。

ものづくりの方ですが、Avimatorで作ったポーズをポーズボールに入れるにあたり、入れるためのボールを作らないといけませんね。明日あたりからオブジェクトの作り方をすこしづつ見ていくことにしましょう。
では、また明日~^^
だからというわけではないのですが、時に先生っぽい雰囲気を演出したりしています。
その小道具のひとつがメガネ。でもこれがなかなか良いのがないのですね。
いままで使っていたのがSLを始めたばかりのころFreebieで見つけた下の画像のもの。
これはこれで気に入っているのですが、もうちょっとレンズの大きいのが欲しいと思っていました。
ところが、いざ探すとなるとレンズが必要以上に大きかったりして、なかなか「これだ!」というサイズのものに出会えませんでした。
でも、やっと見つけました。Koenji にある眼鏡屋さん、ottico の numero47 というモデルです。
フレームとレンズの色、それにレンズの透明度が選べるというすぐれものです。
これひとつで普通のメガネからサングラスまでOK
otticoのKoenji 店へはこちらから⇒ http://slurl.com/secondlife/Koenji/96/138/39
さっそく黒縁メガネで先生風に。

あと色つきレンズでサングラスにもできます。
下の画像はサングラスとして使った場合。 髪は一昨日RaCでゲットしてきたバレンタイン限定のFreebieです。
RaCへはこちらから⇒ http://slurl.com/secondlife/RaC%20City/180/125/27
ただしFreebieはバレンタイン限定なのでもうないかも。

ものづくりの方ですが、Avimatorで作ったポーズをポーズボールに入れるにあたり、入れるためのボールを作らないといけませんね。明日あたりからオブジェクトの作り方をすこしづつ見ていくことにしましょう。
では、また明日~^^
2008年02月14日
アバターであそぼ - シェイプとヘアであそぶ(その1)
Fujiyama Geisha三姉妹の三女、アリンちゃんがシェイプを売り出しました。
置いてあるのは上町のFGのお店、Oriental Market、価格は10L$です。
さっそく購入して身につけてみました。最近手に入れたFreebieのショートヘアと合わせてイメージチェンジです。
これがその写真。ユーリズミックスのアニーレノックスって感じ?w(自己満足です、はい)

ちなみにわたしの自分のシェイプだとこんな感じ

同じスキンでもシェイプを変えるとがらっと感じが変わりますね。
このブログではものづくりだけでなく、シェイプやスキン、ヘアでアバターをいじって遊ぶのもやってみたいと思います。
ひとと同じなのはいやだけど、アバターのいじり方がよくわからない。そんな人のために一緒にアバターをいじって遊びながらみんなでかっこよくなりましょうw
置いてあるのは上町のFGのお店、Oriental Market、価格は10L$です。
さっそく購入して身につけてみました。最近手に入れたFreebieのショートヘアと合わせてイメージチェンジです。
これがその写真。ユーリズミックスのアニーレノックスって感じ?w(自己満足です、はい)

ちなみにわたしの自分のシェイプだとこんな感じ

同じスキンでもシェイプを変えるとがらっと感じが変わりますね。
このブログではものづくりだけでなく、シェイプやスキン、ヘアでアバターをいじって遊ぶのもやってみたいと思います。
ひとと同じなのはいやだけど、アバターのいじり方がよくわからない。そんな人のために一緒にアバターをいじって遊びながらみんなでかっこよくなりましょうw
2008年02月12日
ゼロから始めるAvimator (その3)
さて、前回まででとりあえず立ち姿をアップロードしIn Worldで再生するところまでこぎつけました。
静止のポーズを作るだけなら、以外に簡単だということがおわかりいただけたのではないでしょうか。
今日は静止ポーズを作るときの大事なポイントをひとつお話しておきたいと思います。
それは
実際は動かす必要のない関節でも数値的には微量でいいから必ず動かしておくこと。
なぜそんなことが必要なのでしょうか?その理由は下の画像をご覧ください。

そう、腕が体を突き抜けてしまっています。(こわ~い)
なぜこんなことが起きてしまったのでしょう。わたしもしばらくその理由がわかりませんでした。
前回(その2)でアニメーションのアップロードをするときに優先度(プライオリティー)の話をしたのを覚えていらっしゃるでしょうか。SLのアニメーションにはそれぞれ優先度が設定されていて、二つのアニメーションが同時に重なると優先度の高い方が再生されるのです。
ところが、いくら優先度が高いからと言っても、そもそも動きが設定されていない部位に関してはアニメーションの上書きはなされません。
たとえば肘を曲げたようなポーズ(かりにポーズAとします)があったとしましょう。そこにポーズAより優先度の高いポーズBが同時再生により上書きされたとします。このときポーズBの肘になんの動きも設定されていなかったとしましょう。すると、ポーズAの肘を曲げたポーズはポーズBに上書きされることなく、そのまま残ってしまうのです。
上の腕が体を突き抜けているポーズは、Defaultの腰に手をあてたポーズ(肘を曲げている)に対し、一番高い優先度でポーズを上書きしたものの、肘を全く動かしていなかったためにDefaultの肘を曲げたポーズが残ってしまった結果です。
こうならないように各部位は必ず動かしておくようにします。(数値的にはX, Y, Z のいずれかを 1 動かすだけで十分です。)
次回はできたポーズをポーズボールに入れていきましょう。お楽しみに。
静止のポーズを作るだけなら、以外に簡単だということがおわかりいただけたのではないでしょうか。
今日は静止ポーズを作るときの大事なポイントをひとつお話しておきたいと思います。
それは
実際は動かす必要のない関節でも数値的には微量でいいから必ず動かしておくこと。
なぜそんなことが必要なのでしょうか?その理由は下の画像をご覧ください。

そう、腕が体を突き抜けてしまっています。(こわ~い)
なぜこんなことが起きてしまったのでしょう。わたしもしばらくその理由がわかりませんでした。
前回(その2)でアニメーションのアップロードをするときに優先度(プライオリティー)の話をしたのを覚えていらっしゃるでしょうか。SLのアニメーションにはそれぞれ優先度が設定されていて、二つのアニメーションが同時に重なると優先度の高い方が再生されるのです。
ところが、いくら優先度が高いからと言っても、そもそも動きが設定されていない部位に関してはアニメーションの上書きはなされません。
たとえば肘を曲げたようなポーズ(かりにポーズAとします)があったとしましょう。そこにポーズAより優先度の高いポーズBが同時再生により上書きされたとします。このときポーズBの肘になんの動きも設定されていなかったとしましょう。すると、ポーズAの肘を曲げたポーズはポーズBに上書きされることなく、そのまま残ってしまうのです。
上の腕が体を突き抜けているポーズは、Defaultの腰に手をあてたポーズ(肘を曲げている)に対し、一番高い優先度でポーズを上書きしたものの、肘を全く動かしていなかったためにDefaultの肘を曲げたポーズが残ってしまった結果です。
こうならないように各部位は必ず動かしておくようにします。(数値的にはX, Y, Z のいずれかを 1 動かすだけで十分です。)
次回はできたポーズをポーズボールに入れていきましょう。お楽しみに。
2008年02月11日
Fujiyama Geisha 三姉妹
今日は神楽坂Japanに本部のある、初心者支援組織Fujiyama Geishaの三姉妹をご紹介します。
向って左から長女のアキナ、次女のわたしジャマイカ、三女のアリンです、

アリンちゃんのブログでも紹介してもらっていますが、三人が着ている服と靴、ポーズはすべて私が作成しました。
(もっとも服はFull Permissionのテクスチャーを買ってきて張り込んだだけですが。)
おいおい服や靴の作り方もこのブログで見ていきたいと思いますのでお楽しみに。
向って左から長女のアキナ、次女のわたしジャマイカ、三女のアリンです、

アリンちゃんのブログでも紹介してもらっていますが、三人が着ている服と靴、ポーズはすべて私が作成しました。
(もっとも服はFull Permissionのテクスチャーを買ってきて張り込んだだけですが。)
おいおい服や靴の作り方もこのブログで見ていきたいと思いますのでお楽しみに。
2008年02月09日
ゼロから始めるAvimator(その2)
今回は作ったアニメを Upload していきます。
前回お話したように、Beta Test Grid で確認してから通常のGrid にUploadするようにしましょう。
まずはTest Grid にログインします。実際にログインしてみると、一見通常のGrid となんら違いはありません。メニューの構成などはTest Viewer も 通常のViewer も同じです。下の画面のようにメニュのファイル>アニメーションをアップロードを選びます。

アニメーションをアップロードを選ぶとファイル選択のウィンドウが現れます。アニメーションのファイルは前回お話したように .bvh という拡張子がついています。今回つくったファイルを選択しましょう。
(ファイル選択ウィンドウの外観は使っているマシンやOSによって異なります。)

ファイルを選択すると次に下記のようなウィンドウが現れます。
このウィンドウでアニメーションをアップロードする際のいろいろな設定を行っていきます。最初にまず「ループ」のボックスにチェックを入れましょう。ポーズの場合はここをチェックしておかないと、一瞬でポーズが終わってしまいます。
ループの上に優先順位という欄があります。これは再生されるアニメの優先度を決めるもので、0から4までの間で設定できます。4が一番優先度が高くなっていますが、今回はとりあえず2で設定してみましょう。
手の動きはリラックスのままでいいでしょう。(Avimator では指の動きまではつくることができないので、指の状態はここで指定してやる必要があります。)
同時進行は「立つ」にしておきます。

その下のフェーズイン、フェーズアウトはアニメの開始、終了時の過渡動作の長さを決めるものです。Defaultでは0.3秒になっていますので、そのままだと0.3秒かけて所定のポーズになります。ここを長めにとると、ポーズに入るときの動作がエレガントに見えるので、わたしは1.0に設定しています。0.5~1.0ぐらいの間で設定すると良いでしょう。
注意しなければいけないこととして、フェーズイン/フェーズアウトの設定をする時は数値を直接入力するようにし、入力欄の矢印ボタンは使わないようにしてください。理由はわかりませんが、矢印ボタンを使って設定するとほぼ100%の確率でViewer がクラッシュします。
設定が終わったら、再生ボタンを押して実際のアニメの動きを確認してみましょう。
問題がなければ、アップロード10L$ のボタンを押します。
アップロードされたアニメーションはInventry=持ち物の Animations というフォルダーに保存されます。(下画面)

さて、いよいよ自分のアバターに動きをつけてみましょう。(ドキドキ・・^^)

できましたー!^^
他のいろんなポーズも今回の要領でつくることができます。
自分だけのキメポーズをつくって楽しみましょう。
前回お話したように、Beta Test Grid で確認してから通常のGrid にUploadするようにしましょう。
まずはTest Grid にログインします。実際にログインしてみると、一見通常のGrid となんら違いはありません。メニューの構成などはTest Viewer も 通常のViewer も同じです。下の画面のようにメニュのファイル>アニメーションをアップロードを選びます。

アニメーションをアップロードを選ぶとファイル選択のウィンドウが現れます。アニメーションのファイルは前回お話したように .bvh という拡張子がついています。今回つくったファイルを選択しましょう。
(ファイル選択ウィンドウの外観は使っているマシンやOSによって異なります。)

ファイルを選択すると次に下記のようなウィンドウが現れます。
このウィンドウでアニメーションをアップロードする際のいろいろな設定を行っていきます。最初にまず「ループ」のボックスにチェックを入れましょう。ポーズの場合はここをチェックしておかないと、一瞬でポーズが終わってしまいます。
ループの上に優先順位という欄があります。これは再生されるアニメの優先度を決めるもので、0から4までの間で設定できます。4が一番優先度が高くなっていますが、今回はとりあえず2で設定してみましょう。
手の動きはリラックスのままでいいでしょう。(Avimator では指の動きまではつくることができないので、指の状態はここで指定してやる必要があります。)
同時進行は「立つ」にしておきます。

その下のフェーズイン、フェーズアウトはアニメの開始、終了時の過渡動作の長さを決めるものです。Defaultでは0.3秒になっていますので、そのままだと0.3秒かけて所定のポーズになります。ここを長めにとると、ポーズに入るときの動作がエレガントに見えるので、わたしは1.0に設定しています。0.5~1.0ぐらいの間で設定すると良いでしょう。
注意しなければいけないこととして、フェーズイン/フェーズアウトの設定をする時は数値を直接入力するようにし、入力欄の矢印ボタンは使わないようにしてください。理由はわかりませんが、矢印ボタンを使って設定するとほぼ100%の確率でViewer がクラッシュします。
設定が終わったら、再生ボタンを押して実際のアニメの動きを確認してみましょう。
問題がなければ、アップロード10L$ のボタンを押します。
アップロードされたアニメーションはInventry=持ち物の Animations というフォルダーに保存されます。(下画面)

さて、いよいよ自分のアバターに動きをつけてみましょう。(ドキドキ・・^^)

できましたー!^^
他のいろんなポーズも今回の要領でつくることができます。
自分だけのキメポーズをつくって楽しみましょう。
2008年02月07日
ゼロから始めるAvimator(その1)
はじめまして。Jamaica Tomorrowです。
このブログでは、素人の視点からSLでのモノづくりを追いかけていきたいと思います。
ブログとしてとりあげる最初のテーマはAvimator。 そう、ポーズやアニメを簡単につくれるあのフリーウェアです。
わたしが最初にAvimatorでポーズを作ってみたのは昨年の11月、SLを始めて3か月目の頃でした。腰に手をあて仁王立ちのDefault立ち姿をなんとかしたいと思い、AvimatorをDownloadしてきたのでした。
簡単にポーズやアニメが作れるということで始めてみたのですが、実際にやってみると大違い。確かにPoserなどの本格的なソフトを使うのに比べれば随分簡単なようですが、できたポーズをUploadしてみると思っていたのと違っていたり、変なうごきをしたりなどで、最近ようやくまともなものが作れるようになってきました。
そうやってある程度いろんなポーズやアニメが作れるようになって、改めて周りを見渡してみると、Avimatorの存在は知っているもののなんとなく敷居が高いと感じて、踏み込めないでいる人が意外に多いことに気がつきました。
ここではそんな人のために、Avimatorを入手するところから始めて、簡単なポーズの作り方、Uploadの仕方、椅子やポーズボールなどのオブジェクトへの組込み方などを一緒に見ていきたいと思います。
では早速AvimatorをDownloadしてみましょう。 ⇒ http://www.avimator.com/
AvimatorはWindowsのみならず、MACやLinuxまで、全部無償で提供されています。ご自分のマシンに合わせてDownloadしてください。
Avimatorを手に入れたところで、早速ポーズを作ってみましょう。まず手始めに手を腰にあてたあの仁王立ち姿をなんとかしたいですね。
早速ですが、Avimatorを立ち上げてみましょう。

初期の画面はこのように男性のアバターが表示されます。
女性アバターにしたい場合は下記のようにメニューの Option>Figure>Female を選択します。

関節の動きが制限されないように Option>JointLimits>off にします。

ただし、これをやると関節が外れたような変なポーズも可能になるので注意が必要です。Uploadする際には*Beta Test Gridで実際のポーズがどんな感じになるのか確認しましょう。
Avimatorの初期画面では上で見ていただいたようにアバターが両手を拡げて立っています。
初期状態ではトータル30フレーム(Frame)の画面が用意されており、一秒間のフレーム数は30フレーム/秒に設定されています。つまり、初期状態では一秒間のアニメを作成することが可能ということになります。
アニメについてはおいおい作り方を見ていくこととして、まず今回は静止のポーズをつくります。
まず最初にこれから作るポーズを保存しておきましょう。
メニューからFile>Save Asで保存の画面がでます。

次に保存場所を選び、保存するファイルに名前をつけます。このとき拡張子として .bvh をファイル名の後ろにつけることを忘れないようにしてください。

さて、保存が済んだらいよいよ、ポーズをつくっていきましょう。
先ほど初期状態では毎秒30フレームで一秒分が用意されていると言いました。この30フレームそれぞれに異なる連続的なポーズをつけることでアニメがつくられるわけです。(パラパラ漫画の要領ですね。)ただし、今回は静止ポーズを作ろうとしているので、実際には2フレームしか使いません。最初の1フレーム目と2フレーム目までです。
このうち1フレーム目は2フレーム以降のポーズに対する基準となりますので、手を拡げて立っているポーズを何もいじらずそのままにしておきます。
2フレーム目に今回作りたいポーズを入れます。一番下のバーを操作し、2番目のフレームに移動します。

さあ、では早速ポーズを作っていきましょう。
画面上でアバターの動かしたい関節をクリックします。下の画像は肩をクリックした状態です。この状態で右側のX, Y, Zのコントロールバーを操作すると、関節を動かすことができます。

Z軸(青)のコントロールバーを操作して肩をちょっと下げてみました。

さらに上腕をいじって腕を完全に下に下げます。

正面からでは、腕の前後の動きがわかりませんので側面から見てみます。
側面から見るには、画面上のどこでもいいのでクリック>ドラグすることで、視点を動かすことができます。

さらに視点を動かして、後ろから見てみました。腕や手も動かして、ちょうど腕を後ろ側にまわしたような感じになっています。

このような要領で身体の各部位をいじってポーズを作っていきます。
右側のコントロールバーは、直接いじって体の各部位を動かすこともできますが、バーの上部に表示されている数値をクリックすると直接数字を入力することもできます。また、コントロールバーではなく、矢印キーでうごかすこともできますので、やりやすい方法で動かしてみてください。
最後に、わたしがつくった立ちポーズをお見せします。(下画面)

各部位の数値も入れておきますので参考にしてください。
各部位データ(X, Y, Z)
head:(2.0, 0.0, 5.0), chest;(0.0, 0.0, 5.0), abdomen:(0.0, 0.0, -9.0), rCollar:(0.0, 0.0, 40.0), lCollar:(0.0, 0.0, -62.0), rShldr:(0.0, -20.0, 61.0), lShldr:(0.0, 22.0, -36.0), rForearm:(0.0, 0.0, 4.0), lForearm:(0.0, 0.0, -8.0), rHand:(-2.0, 0.0, 0.0), lHand:(0.0, 0.0, -8.0), lThigh:(-10.0, 0.0, 7.0), lShin:(16.0, 0.0, 0.0), lFoot:(7.0, 0.0, 0.0)
各部位のデータは画面右上のEdit Partというプルダウンメニューから見ることができます。

最後にせっかくつくったポーズを保存することを忘れずに。

今日のところはとりあえずここまでにしておきましょう。
次回はいよいよ作ったポーズをUploadしてみます。実はポーズの出来栄えはUpload時の設定が非常に重要です。次回はそのあたりもお話したいと思います。 続きを読む
このブログでは、素人の視点からSLでのモノづくりを追いかけていきたいと思います。
ブログとしてとりあげる最初のテーマはAvimator。 そう、ポーズやアニメを簡単につくれるあのフリーウェアです。
わたしが最初にAvimatorでポーズを作ってみたのは昨年の11月、SLを始めて3か月目の頃でした。腰に手をあて仁王立ちのDefault立ち姿をなんとかしたいと思い、AvimatorをDownloadしてきたのでした。
簡単にポーズやアニメが作れるということで始めてみたのですが、実際にやってみると大違い。確かにPoserなどの本格的なソフトを使うのに比べれば随分簡単なようですが、できたポーズをUploadしてみると思っていたのと違っていたり、変なうごきをしたりなどで、最近ようやくまともなものが作れるようになってきました。
そうやってある程度いろんなポーズやアニメが作れるようになって、改めて周りを見渡してみると、Avimatorの存在は知っているもののなんとなく敷居が高いと感じて、踏み込めないでいる人が意外に多いことに気がつきました。
ここではそんな人のために、Avimatorを入手するところから始めて、簡単なポーズの作り方、Uploadの仕方、椅子やポーズボールなどのオブジェクトへの組込み方などを一緒に見ていきたいと思います。
では早速AvimatorをDownloadしてみましょう。 ⇒ http://www.avimator.com/
AvimatorはWindowsのみならず、MACやLinuxまで、全部無償で提供されています。ご自分のマシンに合わせてDownloadしてください。
Avimatorを手に入れたところで、早速ポーズを作ってみましょう。まず手始めに手を腰にあてたあの仁王立ち姿をなんとかしたいですね。
早速ですが、Avimatorを立ち上げてみましょう。

初期の画面はこのように男性のアバターが表示されます。
女性アバターにしたい場合は下記のようにメニューの Option>Figure>Female を選択します。

関節の動きが制限されないように Option>JointLimits>off にします。

ただし、これをやると関節が外れたような変なポーズも可能になるので注意が必要です。Uploadする際には*Beta Test Gridで実際のポーズがどんな感じになるのか確認しましょう。
Avimatorの初期画面では上で見ていただいたようにアバターが両手を拡げて立っています。
初期状態ではトータル30フレーム(Frame)の画面が用意されており、一秒間のフレーム数は30フレーム/秒に設定されています。つまり、初期状態では一秒間のアニメを作成することが可能ということになります。
アニメについてはおいおい作り方を見ていくこととして、まず今回は静止のポーズをつくります。
まず最初にこれから作るポーズを保存しておきましょう。
メニューからFile>Save Asで保存の画面がでます。

次に保存場所を選び、保存するファイルに名前をつけます。このとき拡張子として .bvh をファイル名の後ろにつけることを忘れないようにしてください。

さて、保存が済んだらいよいよ、ポーズをつくっていきましょう。
先ほど初期状態では毎秒30フレームで一秒分が用意されていると言いました。この30フレームそれぞれに異なる連続的なポーズをつけることでアニメがつくられるわけです。(パラパラ漫画の要領ですね。)ただし、今回は静止ポーズを作ろうとしているので、実際には2フレームしか使いません。最初の1フレーム目と2フレーム目までです。
このうち1フレーム目は2フレーム以降のポーズに対する基準となりますので、手を拡げて立っているポーズを何もいじらずそのままにしておきます。
2フレーム目に今回作りたいポーズを入れます。一番下のバーを操作し、2番目のフレームに移動します。

さあ、では早速ポーズを作っていきましょう。
画面上でアバターの動かしたい関節をクリックします。下の画像は肩をクリックした状態です。この状態で右側のX, Y, Zのコントロールバーを操作すると、関節を動かすことができます。

Z軸(青)のコントロールバーを操作して肩をちょっと下げてみました。

さらに上腕をいじって腕を完全に下に下げます。

正面からでは、腕の前後の動きがわかりませんので側面から見てみます。
側面から見るには、画面上のどこでもいいのでクリック>ドラグすることで、視点を動かすことができます。

さらに視点を動かして、後ろから見てみました。腕や手も動かして、ちょうど腕を後ろ側にまわしたような感じになっています。

このような要領で身体の各部位をいじってポーズを作っていきます。
右側のコントロールバーは、直接いじって体の各部位を動かすこともできますが、バーの上部に表示されている数値をクリックすると直接数字を入力することもできます。また、コントロールバーではなく、矢印キーでうごかすこともできますので、やりやすい方法で動かしてみてください。
最後に、わたしがつくった立ちポーズをお見せします。(下画面)

各部位の数値も入れておきますので参考にしてください。
各部位データ(X, Y, Z)
head:(2.0, 0.0, 5.0), chest;(0.0, 0.0, 5.0), abdomen:(0.0, 0.0, -9.0), rCollar:(0.0, 0.0, 40.0), lCollar:(0.0, 0.0, -62.0), rShldr:(0.0, -20.0, 61.0), lShldr:(0.0, 22.0, -36.0), rForearm:(0.0, 0.0, 4.0), lForearm:(0.0, 0.0, -8.0), rHand:(-2.0, 0.0, 0.0), lHand:(0.0, 0.0, -8.0), lThigh:(-10.0, 0.0, 7.0), lShin:(16.0, 0.0, 0.0), lFoot:(7.0, 0.0, 0.0)
各部位のデータは画面右上のEdit Partというプルダウンメニューから見ることができます。

最後にせっかくつくったポーズを保存することを忘れずに。

今日のところはとりあえずここまでにしておきましょう。
次回はいよいよ作ったポーズをUploadしてみます。実はポーズの出来栄えはUpload時の設定が非常に重要です。次回はそのあたりもお話したいと思います。 続きを読む