チュートリアル / 宋さんの3ds Max キッチンスタジアム
第15回:リレーションを組んでいこう(基礎編2)
- 3ds Max
- アニメーション
- コラム
- チュートリアル
- リレーション
前回では簡単な例をとって、ベクトルとスカラーの違いについて説明しました。
ベクトルは方向と量を持った値であるということ、スカラーは単純な値のことを示す、ということはもうおわかりだと思います。
それではそれらを考慮して、式コントローラを具体的に組んでみましょう。
シーン内にボックスとTeapotを作成します。
最終的にボックスをX軸方向に移動すると連動して、TeapotがZ軸方向に移動するというシンプルな構造を組んでいきますが、まずは式コントローラを組むとして、きわめて基本的なところから解説していきましょう。
ボックスを選択して、コマンドパネル>モーションタブに移動します。
コントローラ欄を見ると「位置 : XYZ位置」と表示されていて、さらにその内訳として「X位置」、「Y位置」、「Z位置」と構成されています。つまり「位置 : XYZ位置」を式として扱うのであれば「ベクトル」として扱う必要があり、各「X位置」、「Y位置」、「Z位置」をそれぞれ扱うのであれば「スカラー」として扱わなければなりませんよね。
ちなみに、様々な呼び方はありますが、この「ベクトル」とか「スカラー」というデータのタイプのことをデータの「型」とも言います。
では、試してみましょう。
「位置 : XYZ位置」を選択して上部にある「コントローラを割り当て」ボタンをクリックします。
「位置コントローラを割り当て」ダイアログが開きますので、リストから「位置式」を選択します。
すると、画面上に「式コントローラ : Box001\位置」というダイアログが表示されます。
さー、やっかいなウインドウが開きました。
でも、ちっとも難しくないから安心して下さいね。
まずは、変数を定義します。
変数ってなに?
って声が聞こえそうですが、特定のデータ等に名前を付けて登録しておくという物です。
変数を作るには、最初に名前を付けて(宣言し)保存し、その宣言された物に何らかの値を登録(代入する)必要があります。実際にデータを処理する場合は変数の名称を指定して計算を行えば終了!という作業です。プログラマーの方からすると「なに当たり前のこといってんじゃい!」って怒られそうですが・・・。
ちょっとニュアンスが違うかもしれませんが、「クリヤファイルを買ってきて、表紙に名前を書いて、書類をファイルの中に入れておく」といった感じです。書類を棚に入れたければ、クリヤファイルを持って棚に入れればいいですし、書類を2つにコピーしてもらうのであれば、「このクリヤファイルを2部コピーしておいて、」って誰かに頼めばいいですよね、なんかそんな感じです。
なので、まずは簡単な変数を作ってみましょう。
式コントローラでは、まずはどういった「型」で変数を定義するかを決めます。
今回は「ベクトル」にします。ちゃんと名前も付けましょうね。
ここでは「AREA_JP」と命名します。
名前を付けたら、「作成」をクリックします。
するとウインドウ下部のベクトルのリストに変数名が表示されますので、リスト内の「AREA_JP」を選択して「定数に割り当て」をクリックしましょう。
すると、以下の様なダイアログが出てきます。
あれ? なんか座標系のような値ですね、そうこれは座標系を表しています。前回説明したとおり、3DCGでのベクトルというのはXYZの各スカラー(値、量)をまとめたものになりますから、3軸の情報が出てくるのですね。
ちなみに作成する変数を「スカラー」で作ってみると
というように、一つの値しか定義できなくなります。
何となくわかってきましたね
では各入力欄に全て50と入力しましょう。
すると一覧の下に、割当先: Constant: [50, 50, 50] と表示されています。
つまり、変数「AREA_JP」に [50, 50, 50]というベクトルの値を代入した。ということになります。リストに登録されている「変数」は、このリストからスカラーの値なのか、ベクトルの値なのかを確認することが出来るのですね。
さて、次に画面右側の「式」の項目に移りましょう。
私の環境では[50, 12, 0]と表示されていますが、これは現在ボックスが位置している座標値になります。
なので、この部分をベクトル値の変数「AREA_JP」と書き換えてみましょう。記載するときには特にカッコでくくる必要はないですよ。終わったらウインドウ下にある「評価」というボタンをクリックします。
どうでしょうか?ボックスの位置するところが、[X, Y, Z,]が[50, 50, 50]の位置に移動しますよね。
つまり「AREA_JP」という変数は[50, 50, 50]という値なんだよ、ってことです。
それではこの変数に簡単な四則演算を簡単に割り当ててみましょう。四則演算って何?って方もいるかもしれませんが、何のことはなくて、足し算、引き算、掛け算、割り算のことです。掛け算をする場合は「x」ではなく「*」を使います。割り算の時は「/」ですね。足し算、引き算は小学校のときに習った「+」と「-」を使います。あと注意するところは必ず半角英字で記入して下さい。
たとえば、式の欄に記述内容を「AREA_JP*2」とします。同様に「評価」をクリックすると[X, Y, Z,]が[50, 50, 50]から倍の距離である[100, 100, 100]に移動します。つまり各座標が50 x 2 = 100という計算結果になるってことですね。
たったこれだけのことですが、変数を使わないと各座標に2倍となるように値を記述しなければなりません。あらかじめ変数を定義することで式を効率よく式を組んでいくことができようになります。
じゃあ、四則演算以外でどういった式が使用できるのか?という質問が来そうですが、式コントローラウインドウ右下にある「関数リスト」をクリックしてみて下さい。すると使用可能な関数リストが表示されます。
ここで表示されている関数を使って様々な計算を行うことが出来ます。「あー、、、なんかまた難しそうな記号がいっぱいある!!」って思う方もいると思いますが、追々この辺も説明していきますね。
逆に、「これしかないの?」ってお思いの方もいると思いますが、より広範囲なデータを活用して高度な式を組みたい場合は、兄弟コントローラーともいえる「スクリプト コントローラ」を使うことが出来ます。
スクリプト コントローラが式コントローラと異なるのは、ループ、スクリプト化関数、パス名を含む MAXScript 言語のすべての機能が使用できる点です。当然ですがMAXScriptの知識が必要になりますので、今回はご紹介までとしますね。
<スクリプトコントローラの画面>
では、式コントローラの話に戻って、新たに「スカラー」での変数を作ってみましょう。
先ほどと同様に、変数を作りますが変数名をAREA_JP_Sとします。型は「スカラー」にチェックを入れ「作成」をクリックします。式の箇所には、先ほど記入した「AREA_JP*2」といった式が書かれていますが、あえて[50, 0, 0]としましょう。念のため「評価」をクリックしてボックスの位置がX:Y:Z 50, 0, 0に移動するのを確認します。
スカラー一覧の中から「AREA_JP_S」を選択して、「定数を割り当て」をクリック。表示されたダイアログに「100」を入力してOKしてください。
さらに式内の記述ですが下図のように、X座標の値に「AREA_JP_S」と書き込みましょう。式ウインドウの中には[AREA_JP_S, 0, 0」と記載されている状態です。つまり、X位置のみをスカラーで代入した変数「AREA_JP_S」に置き換えた形ですね。最後に「評価」をクリックするとボックスの位置が[100, 0, 0]に移動します。
だいぶ理解出来てきたのではないでしょうか?
最後に一つ触れていないパラメータがあります。「可変パラメータ」です。これは時間を調整するパラメータで「ティック」という単位で調整します。具体的な使い方は次回の別オブジェクトが持つコントローラを参照して値を定義する作業の解説でご紹介します。
ちなみに「ティック」とは3ds Max上での時間単位のことで一秒間は4800ティックで構成されています。つまり1秒30フレームの場合は1フレームあたり、160ティックで構成されているという訳です。この辺も追ってご説明していきましょう。
以上が、式コントローラの超ベーシック操作です。わかってしまえば何も怖くないですよね。
あと、スカラー、ベクトルの関係も理解できたと思います。
次回はもう少し進んで別のオブジェクトの値を取り込んでちょっとだけ手を加えた式を組んでみましょう。
実際にリレーションを組んでいく「式」を作っていきますよ。お楽しみに・・・。
おまけ「便利なツール紹介」<スクリプトツール>
今回ご紹介するのは、結構有名なプラグインですが、gw::Ivyというプラグインです。
http://www.guruware.at/main/ivy/
前回紹介したのがSpline Mesherというニョキニョキパスに沿ってオブジェクトが伸びてくるツールでしたので、ちょっと似た感じの物として紹介します。
使い方はいたって簡単で、コマンドパネル>作成タブ>ジオメトリ>Gruware>「gwIvy」をクリックします。
あとは任意のオブジェクトの近くにクリックして「種」をまいてあげます。
作成した「種」を選択して、修正パネルに移り、「Grow Ivy」をクリックすると、にょきにょきツタが生えてきて、近くのオブジェクトにまとわりついてきます。
上に伸びる勢いや、重力の具合、枝分かれのパラメータなども設定で変化させることが出来ます。
適当なところで、もう一度「Grow Ivy」をクリックすると、シミュレーションは終了して、葉が自動的に作られます。葉に関しては基本アルファマップ混みで構成されてますが、ユーザーが拡散反射光テクスチャーとマスクテクスチャーを編集して別のデザインに変更することも出来ますよ
面白いのは生成が終わってから「Grow Ivy」ボタン下にある「Age」パラメータにアニメーションがかけられるので以下の様な面白いアニメーションも作れます。
ちょっとした背景制作や樹木の製作などに便利かもしれませんね。