LoginSignup
1
0

アニメーションの特定フレームの状態に追加パーツを追従させる

Last updated at Posted at 2024-03-19

3Dのアニメーションを作っていて
カットの途中からの破損等で「このフレームから既存のオブジェクトに追加部分が追従してほしい」といったことはないでしょうか?

これまでも ある程度は可能でしたが、ジオメトリノードで比較的扱いやすい状態にできたので書き残しておきたいと思います。
24031901.gif
今回はこのモデルを使用します
レストポーズは左側に映っているモデルのような状態で
選択オブジェクトが脚の動きに追従させている追加パーツで 動画の15フレームの脚の位置でメッシュを作成しています。

ベイクノード

まずはベイクノードについて触れておきます。
「ベイク」ノードは Blender 4.1から搭載された機能です
image.png
追加>ジオメトリ>処理>ベイクから追加できるノードで

.blendファイルを保存した状態でノード上の「ベイク」のボタンを押すと
ノードに入力されているジオメトリの情報が ファイルと同一パスに保存されるようです。
(blendcache_bakenode というフォルダが自動生成されましたが"_"の後ろ側は.blendファイル名です)
image.png
一旦保存したジオメトリの情報は ファイルを開きなおしても利用されます。
つまり特定のフレームの変形状態を再利用可能な状態で保存しておけるということです。

ノードとベイク

今回のノードの設定です ベイク設定前の状態でベイクを行うのとは別のフレームの状態で表示しています
モディファイアパネルで指定しているのが 動きを取得するオブジェクトです。
image.png
少ないノードですが

  • ベイクしたジオメトリの頂点IDを元に 動きを取得したいオブジェクトの頂点の現在位置を取得
  • ベイクデータのジオメトリに「diff」の名前付き属性で頂点の移動量を格納
  • 最近接表面サンプルで変形するオブジェクトの移動量を取得して移動

という手順を踏んでいます
後は目的のフレームに現在のフレームを移動した後 ベイクのノードの ベイクボタンを押すだけです
24032101.gif
有機的な形状でもある程度利用できるようです

このままではシーンの中でしか利用できませんが
一旦アニメーションを付けているオブジェクトをレスト位置に持って行ってジオメトリノードのモディファイアを適用してしてしまえば
他で再利用可能な状態に再セットアップも可能かと思います

Bleder 3.3での場合

実はこの手法自体は ベイクのノードは必須ではなく
過去のバージョンのジオメトリーノードでも利用可能です
image.png
ただし ベイクデータから計算していた移動量を他の方法で取得する必要があります
移動対象のオブジェクトを複製して 移動に関わるモディファイアを適用してしまえば 同様のデータは作れます
ただし 複製オブジェクトをレンダリング対象外にしたりと色々手間がかかります。

いずれの場合も 頂点のIDを元に移動を計算しているので
調点数が変わってしまうようなモディファイアを使っている場合には利用できない手法なのも注意が必要です

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0