|
Workgroupの設定
用意されているICE_Kinematicsを使えるように設定しよう2011にはインストールした時点で、大量のICEノードがサンプルとして用意されています。 まずは、これらを使用できるようにしておきましょう。 ファイル > プラグインマネージャーを起動し、ワークグループタブで [接続] C:\Program Files\Autodesk\Softimage 2011\Application\Workgroups\ICE_Kinematics を設定します。 ![]() どんどん理解を深めるのに利用し、実際に活用していきましょう!! ![]() |
ICE Tree の設定
ICE Tree の表示、シーン内の任意のオブジェクトに設定まずは ICE Tree のオブジェクトへの設定からです。 > > そんなん知ってるよ!! という方はどんどん吹っ飛ばして行ってください。 プリミティブの立方体を取り出し、ALT+9 キーで表示されたICETree設定画面で 作成 > ICEツリーを実行するとICETree というノード が出現します!!以上です。すべてはここから始まります・・・。 ![]() シーン内の大きな構造体、例えば人体構造体などを制御するようなICEを作ったとしても、 シーン内の特定のオブジェクト、例えばセンターに置いてある Null に ICETree をくっ付けておけば良いようです。 ただし、そのシーンを受け取った側からすると、どこに ICEが設定したのか解らないので、 名前を付けた特徴的なオブジェクトに設定するなど、何かルールを作っておいた方が良いように思います。 (たとえば、正四面体に付けるとか・・・、ICEというカーブに付けるとか・・、中心にあるNullに付けてあるよとか・・) さて、話を戻して、この立方体を動かしてみましょう。(いきなりちょっと進むよ。こんなん作るからついて来て・・・!!) この左の SRTtoMatrix というノードをダブルクリックするとPPGが表示され↓、そこに値を入れると立方体がその値に変化するというものです。 作り方は・・・ ![]() 1)SetData 値を設定するノードです。[ set ]までを検索する空欄に記入すると、Set で始まる名前のノードにしぼって表示します。 その中から、 SetData を探し出し、ドラッグ&ドロップして画面上に持ってきます。 真赤っかになっています。これはデータが正しく設定されてない時の表示です。 SetData ノードをダブルクリックするとPPGが表示されるので、[ Explorer ] ボタンを押して、Cubeの GlobalTransform のノードをクリックします。 ![]() この青くなった SetData の出力を ICETreeノードのPort1に接続しやがれーです。 ![]() 検索から文字を無くしたことを確認して、Conversion > SRTtoMatrix を探し出し、 D&Dしてその出力を SetData の同じ色の入力に接続します。はい出来上がりです。 ![]() 「この SRTtoMatrix ノードに入って来る値をシーンの何かから得られればこの立方体をSRT変化させられる」 というもっとも基本的なキネマティクスが手に入れられたということです。 3)Scalar to 3D Vector Conversion > Scalar to 3D Vector を探し出し、その黄色の出力を SRT to Matrix の Translation に接続すると、 これで X,Y,Z軸への値を入力すると、その値で立方体が動くのか確認できます。 ![]() 何か数値を設定したい場合は、Constant 項目内のScalarや、例えば Pi なんてのがあります。
設定した値が代入されます。 ![]() はい、ここまでのサンプルをModelで用意しました。 > vICE_Kinematics-Sample01.zip<<<(用意するまでも無いくらいです、自分でつくってみでください)
|
シーン内のデータを取得して利用する
シーン内の情報に応じた取得最初のは、実はSetDataから始まりました。今度はGetDataなんです。 前の状態のまま、話を続けましょう。前述の立方体はデータを受け取れる状態になっています。 そこで、シーン内のべつのもの例として球体の動きを捉えて、その動きの2倍で動くという風にしてみましょう。 取得する球体のGlobalTransformノードを Explorer からドラッグ&ドロップします。以上です。GetDataからも当然できますが・・・。 ![]() すると水色の出力になっているので、そのままSetDataにつなげば、=(イコール)の値になることが想像できます。 でも、そんなつなぎ方しちゃうと、いったい球体の何の値をどう立方体に伝えたのか詳細を把握出来ません。 ![]() 掛け算のところは Math>Multiplyを使います。" 2 "という実数はあ、Constant>Scalar だと気が付きますよね。 |
データタイプ (ヘルプより)
接続部の色でデータの種類をあらわしている ICEノードの接続部分は、その色で、ブール・整数・スカラ・ベクトルなど、値の種類が解るようになっています。
ノードの種類によっていは入力したタイプによって色が変わるものもあります。(例えば Multiply など計算用のもの)
覚える必要は無いのですよ。色が違うと接続できないとか知っているだけで良いです。 そのうち、色で判断出来るようになるのでしょう。 |
コンパウンドの作成
ノード群を1つにまとめるて扱いやすくする。 上記のように、色々な設定を仕込むとどんどんとノードが増えていってしまいます。
そこで、1つにコンパウンドし、合わせてバージョン管理や、配信にも便利に出来ます。 既存の便利機能も、実はコンパウンド化されていて、中身を見ることが出来ます。 その中を更に編集すれば、既存機能に追加した機能を持たせることができ、再度コンパウンドしておけば配布も楽になります。 では、今までの記述と合わせて、ICEのPositionConstraintにオフセット値を付けるというものを作成してみましょう。 情報提供、FMTさん、サンキューです。 まず最初に Null と Cube を取り出します。Null によって Cube が動かされるという関係にします。 Cube に ICETreeを設定します。 左項目から Kinematics > AddConstraintを取り出します。データを設定してないので真っ赤です。 ![]() おもむろに AddConstraintを ICETreeノードに接続します。
AddConstraintをダブルクリックしてPPGを見ると、 Self となっています。 左項目から Kinematics > Constraint Positionを取り出します。データを設定してないので真っ赤です。 ![]() ConstraintPosition をダブルクリックしてPPGから、下段の影響するオブジェクトとして[ピック]ボタンから Null を選択します。
これで Nullを動かすと立方体が動きます。 ![]() で、実は、この2つ共、複数のノードで組み合わせて作られたコンパウンドなのです。
AddConstraintのノード上で右マウスボタン > コンパウンドの編集を選択すると中身が見れます。 なにやら設定しています。嫌がらずに見ると、グローバルの値を己の位置として設定していると解ります。 ![]() さー、ここでコンストレイントにオフセット値を設定できるように編集したいと思います。
見るところは、そのグローバルの値が入力されている所に、追加の値も入るようにすれば良い、ということです. その方法は、実はもうやっているのです。Scalarto_3DVector を接続した記述なんです。 Math> Multiply と Conversion > SRTtoMatrixと Conversion > SRTtoMatrix を探し出し、順につなぎ合わせます。 コンパウンドは箱と考えて、左の●からデータが入力され、右の●で結果を出力しています。 では、左の●に今作った X・Y・Z軸の値が入るように接続部を作ってあげます。 左上の●から引っ張って来た白い矢印を X、Y、Z とつないであげます。 ![]()
左上の[×]部分でコンパウンドを閉じます。
すると、あたらしく X・Y・Z軸の入力が出来ています。 AddConstraints の名前の所に*が付いています。これは内容を編集していていることを示しています。 ![]() どうせなら、あたらしいノードとして保存しておきましょう。右マウスボタン > コンパウンドのプロパティーを選択し、名前を変更します。
![]() この新しく作成したものを保存すると共に ICETree の左項目一覧に登録できます。
右マウスボタン > コンパウンドの書き出しを選択し、ユーザーのディレクトリーに保存したとします。 <C:\users\ユーザー名\Autodesk\Softimage_2011\Data\Compounds> ![]() すると、Kinematicsの項目に作成した新しいコンパウンドが登録され U (ユーザー)と表示がついています。
![]() ここにAdd Constraints with Offset.xsicompoundを用意してみました。利用してみてください。
|
コンパウンドの作成 2 とバージョン管理
MatrixのOffsetを作成しておこう よく利用するであろう機能はコンパウンドとして作成しておいて Workgroup に設定した場所に保存しておくと、とてっても便利です。
そこで、オフセット値を追加できるMatrix Offset useというものを作成してみましょう。 Matrix to SRT とSRT to Matrix の間にAddを差し込んで追加代入されるものと合わせれば良いと構想します。 <なんとなくなんですが、このICEの作成って、構想を練ってから作り出すと良い感じです。>
4つのノードを選択した状態で、右のノードから右マウスクリック > コンバウンドの作成を選択します。
CompoundNode という名前で1になるので、右マウスクリック > コンバウンドの編集を選択します。 ![]() すると箱の中に選択したノードがしまい込まれたって感じになります。
左側の●からびゅーーーっと白色の矢印を引っ張って来て、各値の Value2 に接続します。これが外部接続の入力●になります。 右側の●も設定して、これが外部接続の出力●になります。 名前や上下の場所が右クリックから表示されるPPGで設定出来ます。 ![]() もう少し探求しましょう。この追加された値を使うのか/使わないのかのチェックボタンを追加してみましょう。(動作確認用としても便利)
最初見るとビビってしまいそうですが、なんて事ないんです。 Execution>If を使います。IF文みたいでチェックが入っている(有効=True)ならば、そのTrueの値(結果=Result)を通すてな感じです。 Execution>Pass Through は、文字通りデータを伝えるもので、 自動的に作成されたり、外部入力から値を複数の場所に利用する時に便利なものです。 コンパウンドを閉じると右下図のようなノードが完成します。 ![]() 出来たコンパウンドに名前とカテゴリ、バージョンを設定しておきます。
実は、このノード達はバージョン管理できます。同じ名前で保存しながらバージョン番号だけ変えて保存すると ノードを持って来た時にバージョンが選べるようになります。ので、バージョン番号は意識して使うと便利です。 ![]() さて、次は、作成したノードを書き出し=保存する訳なんですが、下記のように自分用のWorkgroupとか設定しておくと便利です。
この中にはこのようなICEコンパウンド、RTシェーダー、自動認識型プラグインとか入れておけば、ツールの管理がしやすいです。 ![]() 保存したいノード上を右マウスクリック > コンパウンドの書き出しで保存先を選択して[OK]を押します。
すると、設定したカテゴリ、この場合、Matrix に保存したノード名 Matrix Offset use が表示されます。次からはここから使用できます。 ![]() 最初に説明に利用したシーンですが、作成した Matrix Offset use を使うと、こんな見やすく、簡単に設定出来ました。
![]() ここにMatrix Offset use.xsicompoundを用意してみました。利用してみてください。
これを利用すれば、Add Constraints with Offset もバージョンアップできることに気が付きます。 バージョンを V2.0 として保存してみてみましょう。Matrix Offset use を間に挟み込むだけです。 ![]() *が右上に付いているはずです。
右マウスクリック > コンパウンドのプロパティーからバージョンを 2.0にしてOKを押します。 右マウスクリック > コンパウンドの書き出しから名前に 2.0と付いた名前で保存します。 ![]() 同じ名前の付いているノード上で右マウスクリック > バージョン > 2.0を選択すると、バージョンの異なるPPGになるのが確認出来ます。
![]() ここにAdd Constraints with Offset.2.0.xsicompoundを用意してみました。利用してみてください。 |
という訳で、次回は ICE IK です。 乞う、ご期待!!
|