[3dsmax]Out-of-RangeTypes(範囲外のタイプ)を使って、アニメーションのループを正確にさせる方法

2014/01/10

3dsmax animation

t f B! P L

3dsamxでループアニメーションを作成する

キャラクターのループモーションを作成し、そのモデルをAlembic化した後にabcmodモディファイヤでループの設定を行った際に正確にループしないという事があり、検証してみました。(alembicのプラグインはDigitalFrontierさんから提供されているものを使用)

以下は、alembicを例にしていますが、単純に3dsmaxのOut of Range Types(範囲外のタイプ)の挙動のクセの話なので、他の場合でも当てはまるかと思います。 
 

Out of Range Types(範囲外のタイプ)を使用したループアニメーションは正確にループしない

Out-of-RangeTypesでのループは、最後のキーフレームに相当するフレームと同じフレームに、最初のキーフレームに相当するフレームを持ってくることによってループにしているようで、下図の例のように1フレーム分重複してしまい、ズレが生じてしまいました。(画像クリックで拡大可)

 下図は、0fと15fのポーズが同じで1f~15fでループになるモーションをAlembic化しabcmodモディファイヤのtimeトラックで、1fに値1、15fに値15のキーフレームを打ち、Out-of-RangeTypesでループにした例です。
(timeトラックにはBezierFloatコントローラーをアサインしています)。

 Out-of-RangeTypesの処理により、15fに値1の部分が入ってしまっているので、16fが値2になり(ループさせるなら1でないといけない)、30fを見ても値2になっており、15フレームループになっていません。

Bad example of loop animation in track view
これを解決したのが下図の例です、これは上図に加えて、0fに値15のキーフレームを打つことで解決しています。

Good example of loop animation in track view
つまり、Out-of-RangeTypesによるループは、ループにしたいモーションの最初と最後で同じポーズになるフレームにキーが打ってある必要があるようです。 これはAlembicに限った話ではないので、注意する必要がありそうです。


ブログ内検索:Search

Translate

ブログ アーカイブ

ラベル

Blogリンクタグ

QooQ