日々適当

hibitekitou

ラインの色を根本のメッシュの色にする

cg |2023-08-17

Blenderのパーティクルヘアの毛をメッシュ化した時、そのメッシュの色は生え際となっているオブジェクトの色にしたいって要請がありました。

パーティクルヘアのメッシュ化は、モディファイヤのParticleSystemにあるConvert to Meshボタンを押すことでラインのポリゴンが出力されてくるので、そのラインをカーブに変換してそのカーブをどうこうするって流れが普通だと思いますが、色をどうにかしたいと思ったので、Gometory Nodesを使うことにしました。

ベースとなっているキューブについている色はVertex Color(Color Attribute)に記録してあります。つまりは毛の根本のVertex Color(Color Attribute)を拾って毛の色を設定してます、ってことです。

ノードツリー全景。左側で根本部分のキューブの色(Color Attribute)を取得して、一本の毛を構成する全ポイントにその色を記録してます。右側で毛のラインに沿った形の円錐を生成して色をつけてます。よく理解していないから苦労した…

左側

ヘアパーティクルから出力されたポリライン(HairMeshという名前)は一本ずつがこの例の場合5個のポイントで構成されてます。HairColorというアトリビュートに根本にあるキューブ(BaseShapeという名前)の色をその5個のポイントに記録しているというツリーの流れになってます。

右側

Curve to MeshでCircleを断面にしたメッシュを作成する際、Spline ParameterのFacter(長さ方向に根本が0、先っぽが1)の値をもとに半径を指定して先に行くほど細い形状を作成。生成されたメッシュのポイントは、元になるカーブのポイントに記録されたAttributeを引き継ぐみたいで、マテリアルでツリー左側で設定したHairColorの色を参照するように設定したらこんな感じになりました。

ちなみに右側のCapture Attribute部分から先はUVを作ってます。これを使って毛の先っぽが光っているって表現になってたりします。このツリーでなんでUVが出来上がるかいまいち分かってません…。困ったものです。<追記>このやり方だといいUVはできてないことが確認できました(GNモディファイヤをApplyしてアトリビュートをUVにして出来上がるUVがよろしくない)。難しい…</追記>

余談ながら左側のツリーの左下は、0,1,2,3,4,5,6,7,8,...ってのを0,0,0,3,3,3,6,6,6,...にするみたいな手法を使ってます。なるほどねぇって思いました。

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。