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フレームループになっていません。
これを解決したのが下図の例です、これは上図に加えて、0fに値15のキーフレームを打つことで解決しています。
つまり、Out-of-RangeTypesによるループは、ループにしたいモーションの最初と最後で同じポーズになるフレームにキーが打ってある必要があるようです。 これはAlembicに限った話ではないので、注意する必要がありそうです。
0 件のコメント:
コメントを投稿