HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

UV座標へのメッシュ投影を利用したプロシージャルニット作成①

UV位置にメッシュを張り付ける手法のチュートリアル紹介

環境

HoudiniFX 20.5.613
UnrealEngine 5.6.0

概要

entagmaのチュートリアルで過去に共有してくださっている方法。 ニットのメッシュパターンを作成し、UV位置に割り当てることで編み物のようなモデルを作成することができる。

Knitting in 3d: Building a UV Deformer
https://www.youtube.com/watch?v=C9VBY9Wbbrw

ただしこのチュートリアルは5年前のもので、スクリプトで作成している部分を代用できるノードも多い。 そういった部分を置き換えてくれているこちらのチュートリアルの内容が参考にしやすかった。

Houdini - Procedural knitted fabric
https://www.youtube.com/watch?v=WwsW3V4CMOw

覚えておくとプロシージャルモデリングの自由度がすごく広がるので一度視聴をオススメします。

メッシュのニットパターンを作成する

UV座標に投影するためのニットパターンを作成する。
カーブ、line、addなどでパターン用の形状を作成

パターンの元形状を作成

途切れている部分は必要に応じてfuseやpolypathなどで結合

PolyPathを使えばポリゴンカーブを接合できる

コピーノードで複製する

コピーで複製してパターンを作成

matchsizeで0-1の範囲に合わせる(UV座標と対応させるため)

match sizeでサイズを合わせる

後述しますが、チュートリアルではニット表現のために投影をしているものの、投影するオブジェクトは何でもいけるので覚えておくとプロシージャルモデリングの様々なようで利用できると思います。

UV座標に投影する

UVをもつモデルに対して 右クリック/ UV Split Seamsで作成したノードを接続。 これでUVごとに分離したピースになる

UVの島ごとにメッシュを分割

For Each Connected PieceでUVエリアごとに処理を実行する。 uvがvertex attributeの場合attrib promoteでpoint attributeに変換し、Pをuv位置に移動する。

元メッシュのP座標ををUV位置に移動

作成したpatternのz位置をアトリビュートに保持しておき、

Z位置を保存(あとで復元するため)

rayでpatternをuv位置に移動したメッシュに投影する。
あたっていない部分を後で削除したいのでray衝突したpointをグループ化してdeleteで削除

Rayで投影

元のメッシュを第2入力として一致するuv座標の元メッシュPにパターンポリゴンカーブを移動してloopを完了

元メッシュのUV位置にパターンを移動

Sweapなどでポリゴンカーブに合わせてメッシュを作成するとUV位置に網目パターンを投影したメッシュができる。

メッシュを作成

チュートリアル動画の方だとHairGenを使った毛の表現なども追加していてより見栄えが良くなっているので是非そちらも見てみてください。

最終イメージ(記事で触れていない内容と②で触れる色付けなどもしている画像ですが)

補足:ニット以外の投影

UVへの投影はニット以外でも活用できるので覚えておくと便利。

(端の補完などはそれぞれで考える必要はある)

レンガパターン
レンガパターンをUV投影した例

Entagmaは昔のチュートリアルも素晴らしいものにあふれているので本当にいつでもお勧めです。
昔理解できなかったものを見直して学ぶことが非常に多いです。

チュートリアルで行っている部分はこの記事の内容で終わりですが(毛を生やすなど、レンダリング向けの見た目の補完には触れていないです)、チュートリアルに無い部分で細かな調整をしたのでそちらは次回の②にまとめます。

fish_ball

プロシージャル魚類