例: 式コントローラを使用してオブジェクトをアニメートするには

次の例では、式コントローラを使用してオブジェクトをアニメートする方法を示します。

この例は、次の 4 つのステージに分かれています。

  1. エクスプレッションを作成する
  2. 式を修正する
  3. 式で変数を使用する
  4. 式をアニメートする

例: 球を正確な円軌道に従って移動させる式を作成するには:

  1. 半径 15.0 の球を作成します。

    トラック ビュー式コントローラを作成します。

  2. アクティブなビューポートで、球を右クリックし、カーブ エディタをクリックします。
  3. 階層リストを下にスクロールして[オブジェクト](Objects)ブランチを表示し、必要に応じて[Sphere001]を展開して球の[位置](Position)トラックを表示します。[位置](Position)ラベルをクリックして、ハイライト表示します。
  4. 階層リストで[位置](Position)ラベルを右クリックし、[コントローラ/ノードを割り当て](Assign Controller \ Node)をクリックします。

    3ds Max は、[コントローラを割り当て](Assign Controller)ダイアログ ボックスを開きます。

  5. コントローラの種類のリストで[位置式](Position Expression)を選択し、[OK]をクリックします。

    3ds Max の[式コントローラ](Expression Controller)ダイアログ ボックスが開きます。

  6. [式](Expression)編集ボックスに次の位置式を入力し、既定値として表示されている式を上書きします。

    [100*cos(360*NT), 100*sin(360*NT), 0]

    球の円軌道が指定されました。NT は平均化した時間を示す変数です。 NT を使用した式で導出される移動は、アニメーションのフレーム数にかかわらず、アクティブな時間セグメントを通じて 1 回だけ実行されます。

  7. [評価](Evaluate)ボタンをクリックします。
  8. アニメーションを 再生します。球オブジェクトがワールド原点(0, 0, 0)を中心とした円軌道を描きながら移動します。中心から軌道までの半径は 100 単位です。

円の半径を変更するには:

    上記の位置式では、2 つの「100」によって半径を指定しています。円軌道の半径を調整するには、この値の代わりに変数で半径を表現します。変数に任意の定数を代入すると、必要に応じて容易に半径を変更できます。

  1. 必要に応じてトラック ビューと[式コントローラ](Expression Controller)ダイアログ ボックスを再度開きます。
  2. [式コントローラ](Expression Controller)ダイアログ ボックスの[名前](Name)フィールドに radius と入力します。[スカラー](Scalar)が選択されていることを確認し、[作成](Create)ボタンをクリックします。

    ダイアログ ボックスの[スカラー](Scalars)リストに変数名「radius」が表示されます。

  3. [定数を割り当て](Assign Constant)をクリックします。

    3ds Max の「radius」という名前のダイアログ ボックスが開きます。

  4. [値](Value)フィールドに 150 と入力し、[OK]をクリックします。

    変数 radius の値が 150 に設定されます。

    次に、リテラル値を変数名に置き換えて、式で新しい変数を使用する必要があります。

新しい変数を式で使用するには:

  1. [式](Expression)編集ボックスで、2 箇所の 100 を radius に変更します。変更後の式は次のようになります。

    [radius*cos(360*NT), radius*sin(360*NT),0]

  2. [評価](Evaluate)ボタンをクリックします。
  3. アニメーションを 再生します。球オブジェクトがワールド原点(0, 0, 0)を中心とした円軌道を描きながら移動します。中心から軌道までの半径は 150 単位です。

球をボックスの周りで回転させるには:

  1. 1 辺 40 単位ほどのボックス オブジェクトを作成し、そのオブジェクトの位置を 3 ~ 4 個のキーフレームにわたってアニメートします。
  2. 球を 選択します。
  3. [式コントローラ](Expression Controller)ダイアログ ボックスの[名前](Name)フィールドに boxposn と入力します。[ベクトル](Vector)を選択し、[作成](Create)ボタンをクリックします。

    ダイアログ ボックス左下の[ベクトル](Vectors)リストに「boxposn」と表示されます。

    変数名の大文字と小文字は区別されます。上記の変数名は、すべて小文字で入力します。

  4. ([コントローラを割り当て](Assign Controller))をクリックします。

    [トラック ビュー選択](Track View Pick)ダイアログ ボックスが表示されます。このダイアログ ボックスには、[トラック ビュー - ドープ シート](Track View-Dope Sheet)の左側と同様のオブジェクト階層が表示されます。

  5. 階層リストで[Box001]の位置コントローラを選択し、[OK]をクリックします。
  6. [式](Expression)編集ボックスの式に、位置のオフセットとして boxposn を追加します。

    [radius * cos(360*NT), radius * sin(360*NT), 0]+boxposn.

  7. [評価](Evaluate)をクリックして、[閉じる](Close)をクリックします。
    アニメーションをもう一度 再生します。球がボックス オブジェクトを中心として回転します。ボックスを移動すると、球も同様に移動します。
    注: 手順 5 で Box001 の位置コントローラを選択すると、変数に位置コントローラの値が保持されます。親ノードがある場合、この位置の値は、親ノードのトランスフォームを基準とする相対的な値です。代わりにノード Box001 を選択すると、変数には Box001 のワールド位置(親のトランスフォーム + ノードのトランスフォーム)が保持されます。