見出し画像

Pivot Painter ことはじめ

Pivot Painter とは?

Pivot Painter とはモーフを拡張したような概念と説明されることがあるが、モーフのようにモーフ後の位置を持つわけではなく、モデルの頂点ごとに仮想的なピボットと回転情報を持つことができ、その情報を使ってマテリアルで様々な動きを実現できる Unreal Engine のマテリアルノードです。

Unreal Engine 5 では、Pivot Painter1 と Pivot Painter2 が存在する。Pivot Painter1はメッシュ(追加UVチャンネル)にデータを持ち、Pivot Painter2はテクスチャに保存する。
本ページでは主にPivot Painter1について解説する。

ピボット関連のデータを使い、動きそのものはUnreal Engineのマテリアルノード内で組む。そのためマテリアルを変えると別の表現が可能になる。

同じデータを使い、様々な表現が可能

Pivot Painter のマテリアルノード

Pivot Painter の肝になるのがこのマテリアルノードPivotPainter_PerObjectData。文字通り(仮想的な)オブジェクトごとの様々なデータを持つ。

Pivot Painter のデータを扱えるシンプルなノード

残念ながらドキュメントは古くて最新版の実装にあっていない。X-Axis Vectorというのは、ドキュメントのChild X-Axisのことだと思われる。

まとめると、以下のデータを使うことができる。
仮想的なピボット位置と回転情報、スケール、0-1 の範囲のランダムな値、モデルの頂点アルファ チャネルに格納されている値、X 軸方向のベクター。ドキュメントにはないBlack Maskというのはサーフェイスの黒の値のことらしい。もう1チャンネル好きなfloat値を持つことができるということだろうか?

Pivot Painter の書き出し方法

Houdiniを使用した場合、Pivot Painter 1 を書き出すには以下のノードを使用する。

左のインプットにはジオメトリ、右にはピボットを入力する。

ジオメトリにはuv(vertex)とname(point)が重要で、ピボットにはN(point)とname(point)が重要なアトリビュート。nameはジオメトリとピボットの一致をとり、NがX-Axis、uvは座標を焼き込むために必要。
nameはstring型で作る必要がある。

サンプルモデルは球の法線方向にNが向いているが、少し面白くするために、Nを加工した。ピボットの位置は変わらないようにRestPositionに戻している。

球状にボックスが並ぶサンプルに手を加えた

マテリアルにも少し手を加えて、法線方向に移動しつつ、回転も加えた。

マテリアルなので大量のオブジェクトを軽量に動かせる

この記事が気に入ったらサポートをしてみませんか?