〜虚巧的解説劇場 モーションデータの章〜

ヘーイズヌマスター。今回は何を解説するんダーイ?

(そういうのいいから)いよいよモーション追加に入るよ。
前回適当に流したテキスト部分を直接編集する必要があるが……そこまで難しくは無い……はず。

つれねえな。それに、それを決めるのは俺らではなくここを読む人だぜ。
俺は便宜上「触ってみている」役だが、実態は筆者の分身であり、
「解っている側」であるというのが事実だからな。

微妙に重いねその発言は……まあ、早速モーションを追加してみようか。
今回は「手を振るモーション」を例として追加しようと思う。
歩くモーションのように、手を左右それぞれに振った2つのポーズを繰り返せば作れると想像はつくね?
そして今回は2つのポーズのJsonをこちらにご用意してあります。
{"speed":10,"waitMS":0,"masRotY":-23,"masRotZ":0,"earthX":0,"hipX":0,"leftHand1Y":72,"leftHand1Z":-12,"leftHand2Y":-6,"leftHand2Z":0,"rightHand1Y":72,"rightHand1Z":-36,"rightHand2Y":-24,"rightHand2Z":-135,"leftLeg1X":0,"leftLeg1Y":0,"leftLeg1Z":0,"leftLeg2X":0,"rightLeg1X":0,"rightLeg1Y":0,"rightLeg1Z":0,"rightLeg2X":0,"neckX":0,"offSetY":0,"offSetX":0,"neckOffset":0,"leftLegOffset":0,"rightLegOffset":0}
{"speed":10,"waitMS":0,"masRotY":-23,"masRotZ":0,"earthX":0,"hipX":0,"leftHand1Y":72,"leftHand1Z":-12,"leftHand2Y":-6,"leftHand2Z":0,"rightHand1Y":72,"rightHand1Z":-36,"rightHand2Y":60,"rightHand2Z":-135,"leftLeg1X":0,"leftLeg1Y":0,"leftLeg1Z":0,"leftLeg2X":0,"rightLeg1X":0,"rightLeg1Y":0,"rightLeg1Z":0,"rightLeg2X":0,"neckX":0,"offSetY":0,"offSetX":0,"neckOffset":0,"leftLegOffset":0,"rightLegOffset":0}

実に省エネ番組的だな。で、アットファーストに何をすればいいんだ?

前回読み込みの時に見たMotionDataフォルダを開こう。
その中に_09_UtilitySet.jsonというのがあるはずだ。

ほい開いた。……1つだけデータが入っている感じか?

うん。そしてここにユーザ定義したモーションを追加していくことが出来る。
2つあるのは、コピペ用だね。

勿論色々パラメータを弄る必要はあるな?

うん、とりあえず一気に全パラメータを説明しようか。
code : コード名。半角英数が望ましいね。「waveHands」とでもしておこう
name : モーション名。こちらはなんでもいいので、解りやすいので。「手を振る」
isLoop : モーションがループするかどうか。今回はtrueだね。
timeOffset : これはモーションの開始時間を調整するものなのだが、少し難しいので保留で。
poses : そしてこれがポーズの集合体となる。

だいたいわかるな。で、ポーズの中身がながーい{}で区切られたものになると。
Exportで出力したものをそのまま使えば良いのか?

使うことは出来るが、手動で調節すべきパラメータが多少ある。
それらは最初の方に並んでいるよ。今回は予め最適な値を入れてあるけどね。
speed : 前のポーズから次のポーズへの遷移速度。数字が大きいほど素早くポーズが変わる。今回は10で。
waitMS : このモーションの状態で何ミリ秒維持するか。今回は1秒間隔で手を振ろうと思うので、その半分の500msだね。
でこれら全てを記述したモーションデータはこのようになる。
{
"code": "waveHands",
"name": "手を振る",
"isLoop": true,
"poses": [
{"speed":10,"waitMS":500,"masRotY":-23,"masRotZ":0,"earthX":0,"hipX":0,"leftHand1Y":72,"leftHand1Z":-12,"leftHand2Y":-6,"leftHand2Z":0,"rightHand1Y":72,"rightHand1Z":-36,"rightHand2Y":-24,"rightHand2Z":-135,"leftLeg1X":0,"leftLeg1Y":0,"leftLeg1Z":0,"leftLeg2X":0,"rightLeg1X":0,"rightLeg1Y":0,"rightLeg1Z":0,"rightLeg2X":0,"neckX":0,"offSetY":0,"offSetX":0,"neckOffset":0,"leftLegOffset":0,"rightLegOffset":0}
,
{"speed":10,"waitMS":500,"masRotY":-23,"masRotZ":0,"earthX":0,"hipX":0,"leftHand1Y":72,"leftHand1Z":-12,"leftHand2Y":-6,"leftHand2Z":0,"rightHand1Y":72,"rightHand1Z":-36,"rightHand2Y":60,"rightHand2Z":-135,"leftLeg1X":0,"leftLeg1Y":0,"leftLeg1Z":0,"leftLeg2X":0,"rightLeg1X":0,"rightLeg1Y":0,"rightLeg1Z":0,"rightLeg2X":0,"neckX":0,"offSetY":0,"offSetX":0,"neckOffset":0,"leftLegOffset":0,"rightLegOffset":0}
]
}

ほいほい。あとはこれを既存の記法を参考にしてコピペすればいいと。

コンマとかに注意ねー。これはなまじPG経験ある人の方がひっかかりやすいらしいけど……
プログラミングの配列宣言系は最後の項目にコンマつけても問題ないからね……。

モーションデータを編集するときはバックアップをとった方が安全ということだな。
さて打ち終わったぞ。これで前に使ったビューアに反映されているのか?

できるよー、早速見てみよう。

…………お、ドロップダウンに選択肢が増えている。
「手を振る」、今回追加した名前と同じだな。選択。
おお、ちゃんと手を振っている。……若干メトロノームっぽく見えるが。まあこれで完了だな。
……しかし選択肢に出るのがnameパラメータならば、codeパラメータは必要あったのか?

このエディターの範疇なら実際必要ないね。
これをプログラムで扱う場合、日本語っていうのはあまり宜しくない。そういう人向けだね。
何はともあれ、これでモーションが追加できたという訳だ。

全面的にあっさりであったな。

とりあえずここまで。まとめはいつかかく。

適当すぎる。
[Prev]
[Back]