2016年12月7日水曜日

BlenderとAvastarでポーズやアニメをつくる




この記事は「セカンドライフ技術系 Advent Calendar 2016」のために書きました。
他の技術系の記事はこちら



Bento実装で尻尾や羽を動かすのにアニメーションも必要!でもまだそんなに出回ってない!ってことでBlenderとAvastarでポーズやアニメをつくる方法です。

AvastarとはBlenderで使う有料アドオンです。Second lifeでものづくりするための機能に特化しているためとても便利。リグ入りメッシュ服やアバターを作りたい時、ポーズやアニメーションを作れます。おすすめ。


今回はこのアニメーションを作ります。


まず、Blenderを起動してAvastarのアバターを出します

画面をアニメーション用のパレットに変更します


  1. 一番上のバーにパレット変更ドロップダウンメニューがあるので"Animation"を選択します。
  2. すると以下の様な画面になります。今回使用するのは丸で囲っている部分です。

タイムラインをセットします

  1. まずstartを0、Endを100にします。
    これでBlender上でアニメーションを再生する時に0〜100の間をループします。Endの数値は変更可能です。
  2. そして現在のタイムラインを0にします。

アバターの使わないツールを消します

  1. まず3D View上にカーソルを置いて キーボードの"T"を押してメニューを出します。
  2. 出したメニューの一番下Avastarタブの"Rig Display"メニューのControl BonesGroupsのボタンの色の濃い(表示)部分を"Arms"だけにします。

  3. アニメに必要なツールは緑色(Pose mode時)の SL Control Bonesです。

最初の一コマ目のポーズをつくる

  1. SL Control Bonesを選択して3D Viewのツールバー上にあるドロップダウンメニューから"Pose mode"を選択します。
  2. SL Control Bonesを動かしてポーズを作ります。
  3. 動かし方はオブジェを動かすときとほとんど同じで移動と回転を使います。


ポーズを固定する

  1. 最初のポーズが決まったらSL Control Bonesを全て選択します。
  2. そして3D View画面上でキーボードの"I"(アイ)ボタンをおして"Rotation"を選択します。(関節の回転を固定する)
  3. 左のDope Sheetにオレンジ色の◆が出来ました。
※一番下のWhole Characterは選択してはだめ! 
※LocRotはLocation(位置)とRotation(回転)の両方を固定する。
アバターを移動させたいときなど一部のSL Control Bonesでこれを使う。

ポーズをコピーして一番最後のフレームにペーストする

  1. このアニメはループしたいので最初のコマと最後のコマのポーズを同じにする必要があります。 
  2. Dope Sheetのタイムラインが0のところの◆を全て選択します。 
  3. そのウィンドウの下の右端部分にクリップボードアイコンがあるのでクリックします。これでコピーされました。 
  4. そして一番最後のタイムライン(緑の棒)を動かして以下のアイコンをクリックするとペーストが完了します。
 

アニメの間をつくる

  1. 上記のポーズを作って"I"(アイ)ボタンをおして"LocRot"か"Rotation"で固定するを繰り返して合間のアニメを作ります。
  2. この場合は動かしたい部分だけ固定大丈夫です。

データーを書き出す


  1. SLにアップロード出来るデーター形式で出力します。今回はBVH形式で出力します。
  2. SL Control Bonesを選択するとProparties画面にAnimation export メニューが出ます。
  3. そこのパラメーターを以下のように入力します。
    1. プルダウンからBVHを選択
    2. Start frame:1
    3. End frame:100
    4. Prepend reference にチェック
    5. in:0 out:100
  4. Export Avater actionボタンを押して書き出します。


アップロードをする

SLに作ったアニメをアップロードします。(Build>Upload>Animation(10L$) )

  • Priory(優先度)4
  • Loop にチェック




  • Priory(優先度)
    • アニメの強さです(弱)0〜5(強)まで設定できて、同時に複数のアニメが再生された場合、Prioryが高い方が再生されます。通常は3か4を使います。
  • Hand pose 
    • アニメ再生中の手の形を決める。
  • Expression 
    • 表情です
  • Preview while
    • プレビュー画面でSLに組み込まれているアニメーションを再生して確認ができる、特に気にしなくて大丈夫。
  • Loop 
    • ループをするかとループをする部分を決める基本はチェックだけ使ってそのまま
  • Ease In/out 
    • アニメが切り替わるとき(始まる・終わる)シャッキリ度を決める。0だとシャッキリ。数値が大きいとゆっくり切り替わる。すごく短いアニメでこの数値を大きくするとアニメが再生されない事がある。


完成!


参考

Avastar-My first Animation

Avastar-Pose a Character
今回まったく触れなかったDope sheetの下のウィンドウも上手く使えばふわふわ浮かんだりするポーズが楽に作れたりします。


2016年10月26日水曜日

Meshのテクスチャーが巻き戻る

原因は分からないのですが、対処法はあるのでメモ。

リグ(ボーン)入りのMeshでたまーにあるのですが、テクスチャを設定しても、コピーしたりほんの数秒たっただけで元のテクスに戻ったり予想外の動きをする時があります。

白いテクスチャがコピーすると両方赤いテクスチャに戻る

こういうときはブレンダーなどでデーターを出力する前にメインにしているオブジェクトを別のオブジェクトにして出力してからアップロードすると正常な状態に戻る場合があります。ブレンダーだと最後にsift+右クリックして選択したオブジェクトです。




※別の原因として、まれにSecond lifeが不安定な時に巻き戻ったり、ひとつ前の状態に戻ったりするとこがあります。これはmeshや普通のプリムにも起こります。

2016年9月15日木曜日

Meshとプリム数とランドインパクトの話

作りながら感覚で覚えたので用語が変かもしれない
MeshのLI(ランドインパクト)を小さくする方法、Sarver(プリム)数編です。


アップロード画面の説明

まず、メッシュをアップロードする時。ランドインパクトに関わる数値が3つ有ります。
この中の一番大きな数字がアップロード時のメッシュのランドインパクトに適用されます。 


今回は一番右のServerの数値を低く抑える話です。


Sarverの数値を抑える方法

Sarverの数値はプリム(リンクを解除した時の塊)の数によります。大体一プリムにつき0.5増えます。メッシュの中にスクリプトを入れた場合も増加。
下の画像は6個のリンクされたメッシュをアップロードしたので6個☓0.5負荷でServerの数値は3です。
ランドインパクトは3。

↓ 

これをUVマップを一切変えずに6個のテクスチャの面を持った一つのプリムにします。
すると、プリム数はひとつなのでSarverの数値が0.5になりランドインパクトは1になります。




複数のUVテクスチャ面を持つ単一のプリムの作り方

ひとつ目は別々のプリムでメッシュを作って、それぞれにマテリアルを振り分け、最後に結合(Join)する方法。一番簡単。

一番上のプリムのマテリアルを変更する

1.『3DViwe画面』のObject Modeで一番上のプリムを選択します。
2.『OutLiner』画面のピンク色の玉のアイコンをクリックしてマテリアル画面を表示します。

3.下の画面のマテリアルタブのピンク色の文字で囲った『+』をクリックして新しいマテリアルを作ります。これで一番上のプリムを別のマテリアルにすることが出来ました。


4.全部のプリムにマテリアルを振り分けられたら、『3DViwe画面』のObject Modeで全てのプリムを選択。
5.『3DViwe画面』上にマウスカーソルを乗せてキーボードの『T』を押して『Tool』タブを出す。
6.『Tool』タブの『Join』ボタンを押して全てのプリムを結合する。
後は普通のメッシュと同じようにアップロードするだけです。


注意点はマテリアルを振り分ける時に、別々のマテリアルを選択することです。
同じマテリアルにしてしまうとその部分は同じ面として扱われて、別々のテクスチャを割り当てられなくなります。
※色は被っても大丈夫、色は分かりやすい用に塗っているだけです。


※『Join』をする時にそれぞれのプリムのUV Mapsの名前が同じであることを確認してください。名前が違うとUv mapが統合出来ず、バラバラのUvマップになってしまします。
 SLにアップロードする時にUvマップが複数あると、ひとつのUvマップしか適用されないっぽい。


既に結合してあるメッシュに複数のマテリアルを振り分ける方法

1.『3DViwe画面』のObject Modeでのメッシュを選択します。『Edeit Mode』に変更します。
2.『OutLiner』画面のピンク色の玉のアイコンをクリックしてマテリアル画面を表示します。『+』をクリック、その下の『New』ボタンを押して新しいマテリアルを作ります。区別がつきやすいように水色にします。


3.『3DViwe画面』の『Edeit Mode』で違うマテリアルを割り振りたい部分を選択します。今回は真ん中の立方体のマテリアルを変更します。
4.『マテリアルタブ』に戻り、新しく出した水色のマテリアルを選択。
5.『マテリアルタブ』の『Assign』ボタンを押して、水色のマテリアルを選択をした部分のメッシュに適用します。

6.完成、後は普通のメッシュと同様にアップロードします。




参考
Calculating land impact
https://community.secondlife.com/t5/English-Knowledge-Base/Calculating-land-impact/ta-p/974163
Uploading a mesh model
https://community.secondlife.com/t5/English-Knowledge-Base/Uploading-a-mesh-model/ta-p/974185

2016年7月13日水曜日

llSetPrimitiveParams複数設定

llSetPrimitiveParams系は複数のパラメーターを一度に設定できる。

例
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        llSetLinkPrimitiveParamsFast(LINK_THIS,
              [ PRIM_TEXTURE, ALL_SIDES,
                      "5748decc-f629-461c-9a36-a35a221fe21f", <1,1,1>,<1,1,1>, 0 , 
     PRIM_FULLBRIGHT, ALL_SIDES, TRUE   , 
     PRIM_GLOW, ALL_SIDES ,0.1 ] 

);
    }
}


メモ
”|”など間に入れてもコンパイルは一応できるが、実行時エラーが出る。(やっちゃダメ)
 エラー文 例
  • llSetPrimitiveParams error running rule #1 (PRIM_FULLBRIGHT): bounds error; 25 is not in (0, 1).
  • llSetPrimitiveParams error running rule #2: need integer prim type.


LlSetPrimitiveParams/ja
http://wiki.secondlife.com/wiki/LlSetPrimitiveParams/ja

2016年7月12日火曜日

ダイアログをアバターが喋ってしまう

ダイアログのボタンをおした時にアバターがボタンの名前を喋ってしまう時
→チャンネル設定のミスが考えられます

ダイアログに設定したチャンネルが有効な範囲外の数字を設定した場合に上記の事が起こるので、桁数を減らしましょう。



セカンドライフで有効なチャンネル 

-2147483647から2147483647
10桁




LlListen/ja

2016年5月25日水曜日

AO種類互換リスト


llSetAnimationOverrideでのアニメーション

"Crouching"
"CrouchWalking"
"Falling Down"
"Flying"
"FlyingSlow"
"Hovering"
"Hovering Down"
"Hovering Up"
"Jumping"
"Landing"
"PreJumping"
"Running"
"Sitting"
"Sitting on Ground"
"Standing"
"Standing Up"
"Striding"    
"Soft Landing"
"Taking Off"
"Turning Left"
"Turning Right"
"Walking"

ZHAO

[ Standing ]
[ Walking ]
[ Sitting ]

[ Sitting On Ground ]
[ Crouching ]
[ Crouch Walking ]
[ Landing ]
[ Standing Up ]
[ Falling ]
[ Flying Down ]
[ Flying Up ]
[ Flying ]
[ Flying Slow ]
[ Hovering ]
[ Jumping ]
[ Pre Jumping ]
[ Running ]
 [ Turning Right ]
[ Turning Left ]
[ Floating ]
[ Swimming Forward ]
[ Swimming Up ]
[ Swimming Down ]
[ Typing ]

ZHAOとLSLの互換

ZHAO / LSL
[ Standing ] / "Standing"
[ Walking ] / "Walking"
[ Sitting On Ground ]/"Sitting on Ground"
[ Sitting ] /"Sitting"
[ Crouching ] /"Crouching"
[ Crouch Walking ] /"CrouchWalking"
[ Landing ] / "Landing"
[ Standing Up ] /"Standing Up"
[ Falling ] /"Falling Down"
[ Flying Down ] /"Hovering Down"
[ Flying Up ] /"Hovering Up"
[ Flying ] / "Flying"
[ Flying Slow ] /"FlyingSlow"
[ Hovering ] /"Hovering"
[ Jumping ] /"Jumping"
[ Pre Jumping ] /"PreJumping"
[ Running ] / "Running"
 [ Turning Right ] / "Turning Right"
[ Turning Left ] / "Turning Left"

[ Floating ] /海。該当なし
[ Swimming Forward ] /海。該当なし
[ Swimming Up ] /海。該当なし
[ Swimming Down ] /海。該当なし
[ Typing ] /該当なし


該当なし / "Striding" 

 アバターがオブジェクトの角に引っかかっているときや、他のアバターの上にいるとき。
該当なし / "Soft Landing" 短い距離を落下したあと。
該当なし / "Taking Off" 離陸





AOメモ
ジャンプ : "PreJumping"→"Jumping"→ Landing"
飛ぶ : "Standing" →"Hovering Up"→"Hovering"
落下 :  "Falling Down"→"Standing Up"(地面着地)→"Standing"
飛行移動 : "FlyingSlow"→"Flying"→"FlyingSlow"

参考
Second Life Wiki > LlSetAnimationOverride

2016年1月11日月曜日

Second lifeの始め方と基本的な操作 2

第一回目はこちら

SL基本操作編

とりあえず最低限のslで遊ぶための操作方法。

・SLの画面

左と下のショートカットアイコンはカスタマイズ可能。
これらはシュートカット以外にも一番上の黒いメニューバー(ミー、コミニュケーションなど…)の何処かに収まってます。

  • 現在地 現在の居場所です。
  • 所持金 現在の所持金です、通貨単位はL$(リンデンドル)。
    • 増やすには公式からクレジットなどで購入、公式以外の換金業者から購入(日本の業者だとslmameの所が有名かな?)、作ったアイテムを他のユーザーに買ってもらうなど。
  • SLでの時間 SLでの時間です。SL内のイベント告知の時間は基本この時間です(SLTと表記することも)。日本だと日本時間が基準の物もあります(JPT)。
  • 持ち物 あなたのSL内のすべての持ち物です、手に入れたアイテムは全てここに入ります。緑色のライブラリフォルダはSL公式が用意したアイテムです。基本捨てられない、たまに増える。
  • チャットパネル "近くのチャット"と書かれているところに文字を入力して、エンターを押すと発言することができる。
  • 移動パネル 移動するときに使います。飛ぶことも可能。

・移動/歩く、飛ぶ

キーボードで移動

移動できない時は環境設定パネルからキーボードで移動を有効にします。
環境設定パネルの一般タブからムーブメントに影響にチェックを入れて右下のOKを押すと有効になります。

移動パネルクリックで移動
パネルは
画面下の"歩行/走行/飛行ボタン"または左上の"ミー>ムーブメント>歩行/走行/飛行"、で取り出せます。

※飛行禁止エリアでは飛行は出来ません。

・テレポート(瞬間移動)をする

second lifeはとても広い上に土地が全て繋がっているわけではないので基本的にテレポートで移動をします。方法は大きく分けて二つあります。

一つ目はLM(ランドマーク)というテレポート地点を記録してあるアイテムをクリックする。持ち物(インベントリ)の中の地球儀のアイコンがLMです。お気に入りの地点を記録することもできます。
LM(ランドマーク)

二つ目はwebプラウザからslurlをクリックしてテレポートをする方法です。
以下のようなアドレスをslurlと言います。
クリックして、ページを開いたらvisit this location ボタンをクリック。
するとSecondlife内で"テレポートしますか?"と聞かれるのでOkを押すとその場所へ移動することができます。

※テレポート先が立ち入り禁止になっていたり、人が沢山集まりすぎていた場合はテレポートに失敗します。

次は見た目の変更方法(着替え)などを説明する予定です。