ページトップへ戻る

DIGITAL DNA
3dsMax:dependsOnを活用してみる
2007.2.24 - 2019.10.14
「dependsOn」を使うと、パラメータワイヤと同じことができます。


2つのオブジェクトが連動する処理

「Box01」がZ軸方向に移動すると「Box02」もZ軸方向に移動する処理を作ってみます。



方法
釣られて動くオブジェクトの[Z位置]に「実数スクリプトコントローラ」を割り当て、
dependsOn $[参照するオブジェクト名].pos.controller.z_position.controller;
$[参照するオブジェクト名].pos.z;
という式を書きます。

手順
1:
釣られて動く側である Box2 を選択し、
[モーションタブ] の [コントローラを割り当て] ロールアウト
から、[Z 位置:ベジェ実数] を選択したら、
[コントローラを割り当て] ボタンをクリック。
2:
「実数スクリプト」を選択して[OK]。
3:
「式」の欄に次の式を記述します。
dependsOn $Box001.pos.controller.z_position.controller;
$Box001.pos.z;

[評価]をクリックしてウィンドウを閉じます。

Box01を移動して動作を確認します。2つのboxがZ方向のみ連動して動きます。
補足
「式」を再度編集したい時は、
[コントローラを割り当て]ロールアウトの各コントローラ上で[右クリック]→[プロパティ]を選択。
または
[X位置 実数スクリプト]をダブルクリック。


注意
たとえば、Box2に対して、
dependsOn $Box002.pos.controller.z_position.controller;
$Box002.pos.z;
と書くなど、「自分を動かすと、自分が動く」といった意味合いの式を書くと、「循環従属」のエラーが出て、エラーから復帰できなくなるので注意が必要です。
エスケープキーを押すと、エラーの無限ループから脱出できます。



5フレーム遅れで動きを真似するオブジェクト

アニメーションでBox001が移動すると、5フレーム遅れてBox002が移動する処理を作ってみます。
Box001が移動するアニメーションが設定されていることが前提です。


方法
Box002 の [X位置],[Y位置],[Z位置] をそれぞれ「実数スクリプト」にし、
それぞれ次の式を記述します。


[X位置]の式
dependsOn $Box001.pos.controller.x_position.controller
at time(currenttime-5) $Box001.pos.x

[Y位置]の式
dependsOn $Box001.pos.controller.y_position.controller
at time(currenttime-5) $Box001.pos.y

[Z位置]の式
dependsOn $Box001.pos.controller.z_position.controller
at time(currenttime-5) $Box001.pos.z

Box001にアニメーションを設定した状態でテストしてみましょう。



参考サイト:リレーションを組んでいこう(基礎編3)(AREA Japan)



拡大縮小を真似する式
方法

-->