記事の目次

    VDBを使用したプロシージャルモデリングを紹介します。

    TEXT_秋元純一 / Junichi Akimoto(トランジスタ・スタジオ/取締役副社長)
    日本でも指折りのHoudini アーティスト。
    アーティスト業務の傍ら、Houdiniアーティスト育成や布教活動に勤しむ
    www.transistorstudio.co.jp
    blog.junichiakimoto.com


    EDIT_小村仁美 / Hitomi Komura(CGWORLD)

    ●CGWORLD Online Tutorialsにて特別無料配信中!
    【無料】Houdini COOKBOOK +ACADEMY 特別編 ~コロナをやっつけよう!~

    • 「Houdini COOKBOOK +ACADEMY」
      Houdiniを基礎から楽しく学ぶオンライン講座

      公開日程:毎週金曜日公開(予定)
      価格:1,300円(税込)※セットでの割引販売有
      ※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
      受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
      cgworld.jp/special/houdinicookbookacademy

    ソースのコントロール

    今回は、VDBを用いたプロシージャルモデリングを作成していきたいと思います。とはいえ、VDBはあくまでも最終的に形状化するための手段であって、重要なのはそこに至るまでのソースの作成にあると言えます。SOPを用いたベース形状のモデリングは非常に奥が深く、自由度が高すぎるゆえに、弊害としてアプローチ選択の難しさがあります。どういった形状を作りたいのか、目的に応じた設計のプロセスを頭の中で組み立て、試行錯誤していく必要がどうしても出てきてしまいます。そういった場合に、どのようにマイルストーンを置いていけば良いか、今回のモチーフをベースに検討していきたいと考えます。

    今回のモチーフは、ネットワーク構造をもつ抽象的で、有機的なものです。まず、形状の大本から、どういったディテールをもつ構造なのかをデザイン・設計する必要があります。構造体を分析し、その形状をどういったアプローチで組み上げるのか、SOPにおける引き出しを探らなくてはいけません。

    今回はネットワーク構造の骨組みになるCurveの作成を主題として解説していきます。また、それにどうやって動きやディテールを付けていくかが、画づくりのカギになります。

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

    01 Source Point Flow

    ソースポイントのセッティングを解説します。


    まず、ベースとなるジオメトリを読み込み、Remesh SOPを使い【A】、扱いやすいように2種類の解像度を準備します。これは、表面のディテールを維持したものと、デフォームさせやすいようにローポリにしたものです【1】


    内部構造としてのジオメトリを作成していきます。Peak SOPで少し表面からもち上げて、そこに合わせてRay SOPで貼り付けます。このとき、Reverse Rayに設定することで、法線の反対側へ貼り付きます。そのジオメトリに対して、元のジオメトリとの中間付近にブレンドすることで、概ね中心となるあたりにジオメトリを変形することができます【B】。今回はしくみをわかりやすくするためにこのようにしていますが、ブレンドしない場合は、Ray SOPのScaleを変更すれば、距離のパーセンテージで制御することもできます。

    あくまでもベースジオメトリなので、形状はある程度破綻していても問題ありません。このジオメトリに対して、Smooth SOP【C】を使って滑らかに調整しておきます【2】


    次に、表面に対してPointを作成していきます。先ほど作成した中心のジオメトリと表面のサーフェスの距離を使って、密度のAttributeを作成します。Wrangleで距離を測り、値を整理します【3】


    それを高解像度のジオメトリにAttribute Transfer SOPで移行させておきます【D】【4】。このAttributeを使用して、密度を調整したPointを作成します【E】。今回は、全体のものと、脚の先に密度を濃くしたもので、微調整できるように切り分けています【5】



    同じように、中心のジオメトリに対しても密度Attributeを付け【F】、Pointを作成します【G】【6】。また、中心のPointには、後でコントロールしやすいように、別途コンスタントなAttributeを付けておきます【H】


    02 Base Curve Flow

    ベースカーブの作成フローを解説します。

    表面のCurveを作成していきます。まず、表面のジオメトリに対してRest Position SOPで"rest"を作成し、VOPを使ってノイズデフォームをかけます【A】。このジオメトリを表面用のPointからVoronoi Fracture SOP【B】を使って分割していきます。

    さらにWrangle【C】で"rest"の位置に戻せば、歪んだ形状にカットできます【1】。これに対して表面のジオメトリだけを抜き出し、Divide SOPのRemove Shared Edgeで余分な面を削除し、PointをFuseすれば、カットされた輪郭だけを抽出できます【D】【2】



    次に、Facet SOP【E】でRemove Inline Pointsを除き、Add SOPでPointのみにして、さらに近似のPointはFuseして、交差する点のみにします【F】【3】。このPointと内部のPointをMergeして、Wrangle【G】でPointをつないでCurveにします【4】【5】


    このとき、Attribute Promote SOPで【H】、内部のAttributeをMaximumで移行すれば【6】、表面の余分な接続Curveを排除できます【I】【7】



    両方のCurveをMergeしてLine化し、Resample SOPで分割数を上げます【J】【8】


    密度のAttributeを移行して、それを基に"pscale"を作成します【K】

    表面のジオメトリからSDFを作成し【L】、そのVolumeを基に、VOP【M】を使ってPointがサーフェスのどの程度の深度にいるか計算します。これは、Volume Sample VOP【N】で計算可能です【9】。その深度を基に、内部のみノイズでデフォームをかけます【10】




    これでベースとなるカーブの完成です。

    03 Animation Flow

    アニメーションのフローを解説します。

    カーブの準備が終わったら、アニメーションを付けて、最終的なメッシュを張っていきます。

    カーブに対して、Rest Position SOPとVOPを使い、ノイズデフォームをかけます【A】。これに対して、成長点をSphere SOP【B】で指定し、VOP【C】を使い、このPointと、カーブのPointの距離【D】から成長エリアを作成します【1】



    Wrangle【E】で元の形状に戻せば、歪んだ形にエリアを指定することができます【2】


    エリア指定外の部分をDelete SOP【F】で削除して、成長のアニメーションを完成させます【3】。必要に応じて、カーブの時点で、カラー指定や"pscale"の調整をしておきます【G】


    このカーブアニメーションに対して、VDB from Particles SOP【H】で、SDFに変換します【4】。これをVDB Smooth SDF SOPで滑らかにして、Polygonに変換すれば、メッシュの完成です【I】【5】



    最終的に、カーブのAttributeをAttribute Transfer SOP【J】でPolygonに流し込んで完成です。

    04 Operators

    主要ノードを解説します。

    ●VDB from Particles SOP

    今回は、VDBを使って有機的なプロシージャルモデリングを行いました。VDBを使えば、複雑な形状、特に今回のような有機的なものに対しては非常に効果的です。例えばVDB from Particles SOPのようにPointをVDBに変換する機能を使えば、一定の距離にPointを配置するだけで簡単にきれいなメッシュを張ることが可能です。

    ただ、それも最初に説明したように、VDB自体はあくまでも最終的なツールであって、これが全てではありません。むしろ、そこに至るまでのプロセスこそが、自由度を与えてくれます。

    今回のモチーフは細いラインで構成されているため、非常に高解像度な分割をする必要があります。そのため、無駄な計算はしたくないのが本音です。それに向けて、動きの調整や形状などは、あくまでも骨組みの時点で完成させ、見た目だけVDBで調整すればストレスは限りなく軽減できます。

    VDBを使うことでプロシージャルモデリングの幅は非常に広がったと考えます。それだけに、細かなSOPのテクニックや引き出しを自分の中に収集しておくことが、オブジェクト的な積み重ねで、デバッグやカスタマイズ性の高いアプローチを組み上げるためのリソースになります。

    今回のような小さなテクニックの積み上げのような手法は、今後プロシージャルモデリングをする上で、非常に重要なポイントだと思います。


    • 「Houdini COOKBOOK +ACADEMY」
      Houdiniを基礎から楽しく学ぶオンライン講座

      公開日程:毎週金曜日公開(予定)
      価格:1,300円(税込)※セットでの割引販売有
      ※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
      受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
      cgworld.jp/special/houdinicookbookacademy