チュートリアル / 宋さんの3ds Max キッチンスタジアム
第16回:リレーションを組んでいこう(基礎編3)

  • 3ds Max
  • アニメーション
  • コラム
  • チュートリアル
  • リレーション

では、「式コントローラ」へ別のオブジェクトの値を代入させる例を作ってみましょう。
まずは、簡単なシーンを作っておきます。
ボックスとTeapotがあるシーンです。前回説明したようにボックスをX軸方向に移動すると連動して、TeapotがZ軸方向に移動するというシンプルな構造を組んでいきますよ。

まずは上記の動作をさせる場合は、Teapotが受け身側となりますので、Teapotのコントローラに式コントローラを使用します。この際注意するべき事は移動に関するコントローラの1軸に限定した制御を行うので、「スカラー値」を扱う形にします。
TeapotのZ位置に関するコントローラーを「ベジェ実数」から「実数式」に変更しましょう。

式コントローラプロパティ が表示されますからスカラーでの変数を作成します。前回と同じように変数名は「AREA_JP」としておきましょう。

前回までは、「定数に割り当て」をクリックして実数値を代入していましたが、今回は「コントローラに割り当て」を使って、ボックスのコントローラの値を代入します。つまり、ボックスの特定の位置情報をTeapotのZ位置の値に割り当てようということですね。

「コントローラに割り当て」をクリックすると、「トラックビューに割り当て」ウインドウが開きます。表示されているシーン情報を開いていき、ボックスの位置コントローラを開きましょう。実はここで注意する点があります。各座標に割り当てられたコントローラは選択できますが、「位置:XYZ位置」のような3軸がまとまったコントローラにはアクセスできません。つまりスカラーで変数を作成したので割り当てられる物は1軸の値、つまりスカラー値のコントローラしか可能にならないという点です。当たり前のことですが、必ず同じ「型」同士でないといけないという原則を覚えておいてくださいね。
なので、今回はボックスの「X位置:ベジェ実数」を割り当てます。


割り当てが終わると、割当先に「$Box001.pos.controller. `X位置’」と記載されていますね。
ここの内容をよく見ると「$」という記号がボックスのオブジェクト名である「Box001」の前に書かれています。これは3ds Maxの内部においてオブジェクトやパラメータ、さらには変数などを指定する際に用いる記述方法です。いまの段階ではあまり意識しなくても良いですが、せっかくなので簡単に説明すると、「Box001」の「位置情報」内の「コントローラ」である「X位置」を指定するものです。通常のWindows のファイルパスのように書けば、¥Box001¥Position¥Controller¥X位置 といったところでしょうかね。
MAXScriptなどでプログラムを組むときにもよく使用する記述方法なので覚えておくと良いですよ。

さて本題に戻りましょう。
今まで行った操作では、TeapotのZ位置のコントローラを実数式に置き換えました、さらにその実数式のプロパティで変数「AREA_JP」をスカラーで作成し(宣言し)、Box001のX位置コントローラをAREA_JPに代入しました。
では前回と同じように右側の「式」の内部を以下の様「AREA_JP」と記述し、「評価」をクリックしましょう。

この状態でボックスをX軸方向に移動させると、Teapotは上下に移動するようになりますね。
でもこれじゃ、このブログの最初の回で行ったアニメーションコントローラをコピーペースとしたのと何ら変わりないです。正直意味なしです。
では前回と同じように簡単な四則演算をかけてみましょう。
AREA_JP-50 といったように記述すれば、Teapotの位置をオフセットかけることが出来ますね。
では、このように記述して「評価」をクリックしましょう。

同様に移動量を相対的に小さくさせるのであれば、
AREA_JP*0.2-50
と記述して見ましょう。ボックスの移動量の20%の移動量で、なおかつオフセットがかかっている形です。
といった感じで、ものすごく初歩的な解説を行ってきましたが、あとはこの式の中に関数リストに入っているものを利用し、複雑な動作を組んでいけば良いわけです。

でも箱と茶瓶の移動じゃ、あまりにも単純すぎて面白くないですね。では実際のお仕事で遭遇しそうなセットアップを例として組んでみましょう。
歯車がかみ合って動くアニメーションを作ります。基本的なところ説明は割愛しますが、もう大丈夫ですよね。
では以下の様なアニメーションを作りますよ。

キーフレームアニメーションを付けているのは黄色い歯車のみで、赤と青の歯車はZ軸方向のコントローラに「式コントローラ」を割り当てているだけです。
ポイントは、歯車ですからサイズの違う歯車がずれることなく正しく噛み合うようにさせるところですね。
この歯車の直径ですが黄色が150、赤が300、青が600という値です。
キーフレームを付けているのは黄色い歯車ですから、まずは赤い歯車のZ回転に割り当てた式コントローラにスカラーで変数を作成し、黄色い歯車のZ回転を代入します。変数の名前は「Rotate2」としてあります。
代入する値は $YellowGeer.rotation.controller.`Z回転` ですね。

しかしこれだけだと同じ回転数になるので、歯車の歯が噛み合いません。ですので、以下のように式を組んでみましょう。
-Rotate2*(150/300)

つまり、歯車の大きさの比率をそのまま回転値にかけているだけです。いたって簡単ですよね。式の最初に「-」が付いていますが、歯が噛み合って動く場合影響受ける歯車は逆回転しますので、「-」記号を付けて動きを逆転させています。たったそれだけです。
同じように、青い歯車と赤い歯車の値を式コントローラでリレーションさせてあげれば、黄色い歯車だけを動かして全ての歯車をずれる事なく連動させることが出来ますよ。何百枚の歯車があったとしても互いに連動して動くモーションを正確に作れるわけです。
簡単で便利ですよね!

ちなみに少し話が変わってしまいますが、直径が異なる歯車の各歯のサイズが全ての歯車で同じ大きさでないと正確に噛み合いませんよね。
これは円周の長さを求める方程式を上手く使うと、簡単に割り出せます。
円周の長さ=半径×2×円周率(π) ですよね。
例えば上記の例で言うと、各歯車は直径150,300,600の3種類です。
なので75×2×π と150×2×π と 300×2×π の比率になるので、簡単にいえば 直径の長さの比率にあった数にすればいいのです。上記の例だと150:300:600なので1:2:4ですから、円周のセグメントを20,40,80ぐらいにしておけばちゃんと合いますよね。
昔習った円に関する様々な方程式などはいろいろな箇所で使うことになるので時間があったら復習してみるといいですよ。

では次回は、回転値と移動値でリレーションを組む際に注意しなければならない点を説明していきましょう。

おまけ「便利なツール紹介」<スクリプトツール>
LA OLA!

大量にあるオブジェクトのアニメーションに時間オフセットを設定して連続するアニメーションを作成する便利なScriptツールです。
Autodeskのショーリールなどで、タイルやオブジェクトがドミノ倒しのように連続して動いていくビデオを見たことがあると思います。「どうやって設定するのだろう?」「一つ一つキーフレームを付けているのかな?」と思われている方も多いと思います。そんなモーションを簡単に作成できるものですね。

http://www.danielwichterich.de/
http://www.scriptspot.com/3ds-max/scripts/la-ola
http://www.youtube.com/watch?feature=player_embedded&v=UEXRuk_giPU#at=15

使い方 1. マスターオブジェクトをクリックします。
2. マスターオブジェクトに連動させたいオブジェクトを選択して「Add Selection」をクリックします。
3. マスターオブジェクトによってコントロールされるプロパティを選びます。
4. 時間オフセットさせる場合の遅延量をティックの値で入力します。
5. “Process” ロールアウト内にある “OK”ボタンをクリックします。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。