では、先ほどの円運動をする Box のスクリプトが、長くてとても読み辛かったので、変数を使って書きかえてみましょう。
b = Box length:1 width:1 height:1
for i=0 to 100 do (
addNewKey b.pos.controller.x_position.controller i
b.pos.controller.x_position.controller.keys[i+1].value =cos(360.0/100*i)
addNewKey b.pos.controller.z_position.controller i
b.pos.controller.z_position.controller.keys[i+1].value = sin(360.0/100*i)
)
これを、次のように書き直します。
b = Box length:1 width:1 height:1
xCtrl = b.pos.controller.x_position.controller
yCtrl = b.pos.controller.z_position.controller
for i=0 to 100 do (
addNewKey xCtrl i
xCtrl.keys[i+1].value =cos(360.0/100*i)
addNewKey yCtrl i
yCtrl.keys[i+1].value = sin(360.0/100*i)
)
一気にスッキリしました!
アニメーションの差し替えを行う
制作現場では、モデルデータを更新する度、既にレイアウトの終わっているシーンデータのモデルを差し替えるという作業が、頻繁に起こります。特にキャラクタを扱う作品では必ず起こる上、数やデータ量も多くなりがちで時間がかかります。
このように、何度も繰り返し発生する面倒臭い作業は、ツール化するのにもってこいの題材です。とは言っても、キャラクタの差し替えを行う仕組みを、全てここで解説するにはボリュームがありすぎるので、今回は、そのエッセンスだけを紹介します。
先ほどの章では、あるオブジェクトから別のオブジェクトにコントローラを代入するだけで、アニメーションを移し替えることができました。このテクニックを使って、アニメーションデータをそのままでモデルデータに差し替えてみましょう。
01 元データの準備
キャラクタの差し替えシステムを作成するためにはリグを作成する必要がありますが、今回は簡単化のため、ただの Box を使用します。
まずは Box を作成する
また、差し替え用のモデルも作成しておきます。
アニメーションを移し替えるモデルも作成
もちろん実際の制作ではきちんとコントローラを設けたり、階層を作る必要はありますが、今回はこの Box にアニメーションを付けてみます。
02 新規シーンの作成とモデルの読みこみ/アニメーション作成
次に、アニメーションを行うために新規シーンを作成してモデルデータを合成で読み込みます。
この時、モデルデータを1体、読み込んだら、そのモデルにプレフィックスを追加してください。こうすることで複数のモデルを読みこんだときにも名前の衝突が起こらなくなります。
今回は2体のモデルデータを読み込み、それぞれに model001 と model002 というプレフィックスを追加しました。ちなみに、プレフィックスと名前の間は ':' で区切っています。
こうしておけば、モデル間でオブジェクト名が被ったときでも、勝手に名前が変更されることはありません。
モデルにプレフィックスを追加し、名前の衝突を避ける
このシーンにアニメーションを付けていきましょう。