オブジェクトの回転をシーンの時間にリンクさせる方法はありますか。

MAXScript に関する質問と回答 > アニメーションの操作 > オブジェクトの回転をシーンの時間にリンクさせる方法はありますか。

質問:

現在の時間に基づいてオブジェクトを回転させる単純な式を作成したいと考えています。

回答:

実数スクリプト コントローラを、それぞれの回転サブコントローラに割り当て、currentTime グローバル変数を使用して、時間を取得することができます。

例:

オブジェクトを X 軸の周りに回転させる場合、実数スクリプト コントローラを、.rotation.x_rotation.controller プロパティに割り当てる必要があります。

obj = Teapot()
obj.rotation.x_rotation.controller = Float_Script()
obj.rotation.x_rotation.controller.script = "currentTime"

これによりオブジェクトが回転しますが、時間値がラジアンで取得されているため、この回転は非常に高速になります。 このため、6.28 フレームごとに 360 度回転してしまいます。

時間を度数で取得する場合、

次のスクリプトを使用できます。

obj.rotation.x_rotation.controller.script = "degToRad currentTime"

この場合、オブジェクトは 360 フレームで 360 度回転します。もちろん、この結果に何らかの係数を掛け合わせて、正確な速度に調整することもできます。

例:

obj.rotation.x_rotation.controller.script = "0.1 * degToRad currentTime"

この場合、オブジェクトは 3600 フレームで 360 度回転します。

別の方法で同じことを行うには、実数式コントローラを使用します。残念ながら、すべてをスクリプト化することはできません。

obj = Box()
obj.rotation.x_rotation.controller = Float_Expression()

実数式コントローラを X 回転トラックに割り当てます。

これで、[モーション](Motion)タブへ移動して、コントローラを右クリックし、[プロパティ](Properties)を選択すると、[式](Expression)ウィンドウが開きます。

式を入力します。

degToRad(F)

[評価](Evaluate)ボタンを押します。

この結果は、実数スクリプト コントローラの方法と同じになります。

関連事項