>   >  Houdini Cook Book:vol.81 Copy and UV
vol.81 Copy and UV

vol.81 Copy and UV

プロシージャルモデリングの基礎を解説します。

TEXT_秋元純一 / Jyunichi Akimoto(トランジスタ・スタジオ/ディレクター)
日本でも指折りのHoudini アーティスト。手がけてきた作品は数々の賞を受賞している。
代表作に、HIDETAKETAKAYAMA『Express feat. Silla(mum)』など。
www.transistorstudio.co.jp
blog.junichiakimoto.com


EDIT_小村仁美 / Hitomi Komura(CGWORLD)

プロシージャルな考え方

今回紹介するテクニックは、Houdiniでは最も基礎的な考えであるプロシージャルなモデリング方法に迫ります。基礎中の基礎でもあるこの考え方は、後々Houdiniを使いこなす上で、非常に重要な礎になってくるでしょう。

今回はUVを作成しながらモデリングするゲームアセットなどにも応用できる内容です。単純なモデリングですが、UVをプロシージャルに作成しつつ、モデルもプロシージャルなアプローチで作成していくのは、なかなかセットアップが大変な作業でもあります。

今回紹介する作例は鎖ですが、実際にこういったつくり方をする方が少ないかと思われます。ただ、こういったアプローチを理解することで、大量のくり返しのモデリングやランダムなモデリングに対し、Houdiniならではの制御を組み込むことが可能になります。

鎖をつくることが今回の目的ではなく、一括制御や自動作成にフォーカスして考えてください。UVは基本的に後付けすることが多いですが、Houdiniでは、UVを意識したモデリングが可能であることが今回の作例で理解できるはずです。また、それがプロシージャルモデリングへの意識改革には非常に重要なポイントとなってきます。

今回のHoudiniプロジェクトデータはこちらから

01 All Flow

全体のワークフローを紹介します。

全体のながれを確認してください。大きくは、鎖のリングを作成する部分になります。ここがプロシージャルなモデリングの要になります。作成したリングをカーブにコピーすることで、鎖を作成します。

ノードの全体像




  • まずはリングのベースを作成していきます。Circle SOP【A】を使い、弧を作成します。このとき、Polygon【1】でArc TypeをOpen Arcに設定し【2】、180度の半円の弧を作成します【3】


この弧に対し、Add SOP【B】を使用して両端にPointを追加します。Delete Geometry But Keep Points【4】でPointのみにして、2点追加します。このPointの座標は、ベースの弧の半径や位置、Divisionsなどから自動的に算出します【5】。こうすることで、弧のサイズや分割数が変わっても自動的に変化についてきます




  • さらに、[Polygons→By Pattern]から一括でPointをつなぎ、Polygon化します【6】。このときに$Nを使用することで、Pointの数が変わっても、こちらも自動的に対応するセットアップにしておきます【7】



  • この弧をMirrer SOP【C】でY軸方向へ鏡面コピーし【8】、 Join SOP【D】を使って2つの弧を1つのPrimitiveになるようにコネクトします。Wrap Last to Firstをチェックすることで、閉じた状態になります【9】【10】




  • このときはPolygonなので、Convert SOP【E】でU Orderが2のNURBSへ変換し【11】、Carve SOP【F】を使って、First Uを0の位置でカットします【12】




  • 次に、このNURBSに対し、UVを作成します。UV Texture【G】を使って、Arc Length Spline【13】をPointのクラスで作成します【14】。PointクラスでUVを作成する必要があるため、Carve SOPであらかじめカットしておく必要があります。また、Arc Length SplineはPolygonでは上手く動作しませんので、こちらもNURBSに変換しておくことも重要です。UVはUの方向へ作成しており、0~1の範囲に収まっています【15】。ただ、Arc Length Splineで作成することで、Pointの距離に応じて作成できるため、比率を維持することができます



  • Measure SOP【H】を使い、Perimeterでカーブの長さを計測し【16】、PerimeterのAttribute名をlengthへ変更します【17】。また、lengthはPrimitiveクラスのAttributeですので、PointへAttribute Promote SOP【I】を使ってクラス変更します。このlengthを使って、UVのUの値へ乗算しその積を新しいUVのUの値とします【18】【19】。このような単純な計算の場合は、Attribute Wrangle SOP【J】を使用すると簡単です




  • このカーブに対して、NおよびupのAttributeを作成します。これは後々コピーする際に必要となるAttributeです。Poly Frame SOP【K】を使用し、NormalNameを"up"【20】、Tangent Nameを"N"【21】とします。こうすることで、Tangent方向へ法線を作成することができます。この2つのベクトルを作成する手順は、配置の際に回転を指示するためのセオリーのようなもので、手癖としてできるようになっておくと便利です。これで、リングのベースとなるカーブが完成しました【22】


次ページ:
02 All Flow-2

その他の連載