3Dのアニメーションを作っていて
カットの途中からの破損等で「このフレームから既存のオブジェクトに追加部分が追従してほしい」といったことはないでしょうか?
これまでも ある程度は可能でしたが、ジオメトリノードで比較的扱いやすい状態にできたので書き残しておきたいと思います。
今回はこのモデルを使用します
レストポーズは左側に映っているモデルのような状態で
選択オブジェクトが脚の動きに追従させている追加パーツで 動画の15フレームの脚の位置でメッシュを作成しています。
ベイクノード
まずはベイクノードについて触れておきます。
「ベイク」ノードは Blender 4.1から搭載された機能です
追加>ジオメトリ>処理>ベイクから追加できるノードで
.blendファイルを保存した状態でノード上の「ベイク」のボタンを押すと
ノードに入力されているジオメトリの情報が ファイルと同一パスに保存されるようです。
(blendcache_bakenode というフォルダが自動生成されましたが"_"の後ろ側は.blendファイル名です)
一旦保存したジオメトリの情報は ファイルを開きなおしても利用されます。
つまり特定のフレームの変形状態を再利用可能な状態で保存しておけるということです。
ノードとベイク
今回のノードの設定です ベイク設定前の状態でベイクを行うのとは別のフレームの状態で表示しています
モディファイアパネルで指定しているのが 動きを取得するオブジェクトです。
少ないノードですが
- ベイクしたジオメトリの頂点IDを元に 動きを取得したいオブジェクトの頂点の現在位置を取得
- ベイクデータのジオメトリに「diff」の名前付き属性で頂点の移動量を格納
- 最近接表面サンプルで変形するオブジェクトの移動量を取得して移動
という手順を踏んでいます
後は目的のフレームに現在のフレームを移動した後 ベイクのノードの ベイクボタンを押すだけです
有機的な形状でもある程度利用できるようです
このままではシーンの中でしか利用できませんが
一旦アニメーションを付けているオブジェクトをレスト位置に持って行ってジオメトリノードのモディファイアを適用してしてしまえば
他で再利用可能な状態に再セットアップも可能かと思います
Bleder 3.3での場合
実はこの手法自体は ベイクのノードは必須ではなく
過去のバージョンのジオメトリーノードでも利用可能です
ただし ベイクデータから計算していた移動量を他の方法で取得する必要があります
移動対象のオブジェクトを複製して 移動に関わるモディファイアを適用してしまえば 同様のデータは作れます
ただし 複製オブジェクトをレンダリング対象外にしたりと色々手間がかかります。
いずれの場合も 頂点のIDを元に移動を計算しているので
調点数が変わってしまうようなモディファイアを使っている場合には利用できない手法なのも注意が必要です