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://youtu.be/WwsW3V4CMOw?si=LO2tdIuazSpQf8GH

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

前回の内容

前回はチュートリアルの内容を追ってメッシュをUV座標に投影するところまで進めた。
今回は動画には無い部分を追加でいくつかの調整を行う

UV座標へのメッシュ投影を利用したプロシージャルニット作成①
https://www.procedural.jp/articles/nsv5rh0_7v/

今回の記事の内容

本記事では以下について触れています

  • アーティファクト修正
  • 太さの微調整
  • 糸ごとに色をそろえる
  • スキンメッシュをコンバートして動かすための調整
スキンメッシュコンバート、動作テスト

糸の太さを場所によって調整する

Sweapノードで糸をpolyCurveから生成しているが、pscaleを設定することで場所ごとの太さが調整できる。

pscaleでパターン内の場所によって径のサイズ調整ができる

紐全体にバリエーションをつけたい場合はSweapで全体の紐を生成する際にScaleによるばらつきを持たせることもできる

全体の中にばらつきなどを持たせたい場合はSweapのパラメータで調整できる

伸びた糸(エラーカーブ)を削除

UVの形状や網目パターンのサイズによって削除したカーブがつながって細い線が生まれてしまう場所がある。これを直したい

投影外のカーブを削除した際に発生してしまうアーティファクト

ConvertLineを接続してPplyCurveをpointごとに分割し、MeasureでLengthを測定

ポイント単位でカーブを分離し、Measureで長すぎるカーブを取得

group expressionでlengthが長すぎるものを削除するとこのエラーカーブを削除できる

グループ化して長すぎるカーブを削除する

糸方向に色を揃える

投影直後の状態は色ごとにpolyCurveがつながった状態になっている

ForEachの終了時点だと糸ごとに分離したMeshCurveとなっている

なのでこの時点でAssembleなどでpackして元のテクスチャの色を転送すると糸ごとに共通の色が設定できる。

Assembleなどを使ってPack
PackオブジェクトにColorを設定するとPack単位で共通の色を設定できる

スキンメッシュをコンバートして動かす

スキンメッシュに対してプロシージャルニットを作成し、バインド情報をコピーすればスキンメッシュでも動作させることができる
入力メッシュをMixamoのXbotに差し替えてメッシュモデルにコンバートし、BoneCaputureをコピーする

BoneCaptureをAttribCopy

bone deformで動かせるようになる

BoneDeformで動かせる
コンバート後のスキンメッシュ動作テスト

次はゲームリソース向けにコンバートを行っていきたいと思います。

ところで、スキンメッシュはともかく、背景用のモデルならこの外側の毛糸をポリゴンで持つ編み物モデルはNaniteを使えば最適化しなくても行けたりするのでしょうか。

とはいえリソースレベルの制御性はプロシージャルなパイプラインの非常に大きな魅力なのでなので、将来的に不要だなとなる可能性があるにしてもテクスチャベイクのフローは作るべきだろうと思います。

fish_ball

プロシージャル魚類