ポーズボールというのは、アバターを座らせたり躍らせたりするためのスイッチのようなものです。椅子の上に丸いボールが置かれているのをよく見かけると思います。
ここではチュートリアルにあるスクリプトを利用して、実際のポーズボールの作成方法を紹介します。
用意するものは3つ。
1.アニメーションファイル
2.オブジェクト
3.スクリプト
このうちアニメーションファイルはSLの外で作成します。汎用ツールでもSL用に作られたツールでも作成可能です。今回は簡単のためにQAvimatorというソフトを使います。各OS版がでてますが、他はわからないのでWindows前提で話を進めます。
アニメーションの作成法はSLwiki(JP)でも紹介されています。
アニメーション作成(SL wiki JP)
1.QAvimatorセットアップ
公式サイトhttp://qavimator.org/からWindows版QAvimator(2007/02現在では「qavimator-install-2006-09-25.zip」)をダウンロードします。
そのまま解凍してセットアップファイルを実行、インストールします。
2.QAvimator起動・作成
QAvimatorを起動します。

今回は2こまのアニメーションなので、右下のフレーム数を「2」に設定します。
2フレーム目にアバターにとらせたいポーズを作成しますが、起動した状態で最後のフレームになっているのでそのままで大丈夫です。各パーツを選択した状態で右の「Rotation」や「Position」を変更してポーズを作っていきます。
このとき腰パーツの位置がアバターの座標となります。腰位置が高すぎるとポーズをとらせたときに体が浮いてしまったりします。
3.アニメーションファイル保存
ポーズが完成したらファイルに保存します。拡張子は「BVH」です。
拡張子は手打ちしないとダメそうだったので、例えばファイル名を「pose.bvh」などとします。
4.アニメーションファイルアップロード
セカンドライフビューワーを起動してログインします。
左上のfileメニューの3番目に「Upload Animation(L$10)というのがあるので、先ほど保存したアニメーションファイルを選択してアップロードします。
その際、LoopにチェックをいれPriorityを4にします。
5.アニメーションチェック
アップロードしたアニメーションは、下のメニューの一番右の「Inventory」→「Animation」に収納されています。
ファイル名右クリックで出るメニューから、「Play in World」(またはPlay Local)を選択すると、実際にアニメーションを試してみることができます。
ここでうまくいかない場合はアニメーションがうまく作れてないかもしれません。
また、アバターが浮いたり埋まってしまう場合はもう一度修正してからアップロードするか、場合のよってはスクリプトで補正できるかもしれません。
6.オブジェクト作成
今度はセカンドライフの中でオブジェクトを作成します。
下のメニューの中からBuild(または「立てる」)を選んで編集モードに入ります。create(または「生成」)を選んで適当に丸いオブジェクトを作成します。
オブジェクト作成の細かい操作方法ははじめてのオブジェクト作成(SL wiki JP)などで。
7.スクリプト作成
オブジェクト編集の「Content」で「New Script」を選択して新しいスクリプトをオブジェクト内に作ります。
「New Script」という名前のスクリプトができているので、中身をダブルクリックで開き、そこに書いてあるスクリプトは消してポーズボール用のスクリプトを書き込みます。
今回はLSL wikiのチュートリアルにあるスクリプトをそのまま使います。
現在元ページが工事中らしくて参照できないので、以下をそのままコピペしてください。
-------引用開始----------------
integer hidden = FALSE; // Stores whether the object is visible
default
{
state_entry()
{
llSitTarget(<0,0,1>,<0,0,0,1>); // Set the target one meter above the ground
llSetSitText("Pose!");
}
changed(integer change)
{
if(change & CHANGED_LINK) // If someone has sat on, or "linked," to this prim...
{
key agent = llAvatarOnSitTarget();
if(agent)
{
llStopAnimation("sit");
llStartAnimation("stand");
}
else
{
llStopAnimation("stand");
}
}
}
touch_start(integer total_number)
{
if(hidden)
{
hidden = FALSE;
llSetLinkAlpha(LINK_SET,1,ALL_SIDES);
}
else
{
hidden = TRUE;
llSetLinkAlpha(LINK_SET,0,ALL_SIDES);
}
}
}
-------引用終わり----------
さらに、このスクリプトで「dance1」となっているところを、自分のアニメーションの名前にします。(そのままだと「dance1」というもともとあるアニメーションが再生されます)
「Save」をクリックして保存し、エラーが出ていないことを確認します。

8.オブジェクトにアニメーションファイルを格納
先ほどのInventory内のアニメーションファイルを、ドラッグアンドドロップで「Content」のボックスに格納します。

これで、ポーズボールの作成は完了です。
何かがおかしいとき
・アバターの向きや位置がおかしくなる
オブジェクトの向きを変えるか、スクリプトの最初のほうにある「llSitTarget(<0,0,1>,<0,0,0,1>); 」を調整してください。<0,0,1>が座標、<0,0,0,1>が向きになります。座標を調整することで、アニメーション作成で失敗してアバターが浮いてしまった、というのも直せる場合があります。
向きは欲しい向きを算出するのがめんどくさいので、編集モードでオブジェクトの向きを変えてしまうほうが楽だと思います。
参考:オブジェクトの回転に関する覚書
・ポーズボールの上に黄色い三角と「!」が表示される
エラーがでているので、その内容を確認します。
ビューワーのToolメニューから「Show Script Warning~」を選ぶとエラーの内容を確認することができます。でてこない場合はすでにその辺にでてるかもしれません。
考えられることは、コピペでミスをしている、アニメーションのファイル名が一致していない、などです。
・踊ってしまう
スクリプトで実行するアニメーションが「dance1」のままになっています。書き換えて見てください。
ちなみに私はエラー落ちしたり、立ち上がるときにまれに周りが真っ暗になったりしました。なのでどこか適正でないところがあるのかもしれません。
Recent Comments