Houdiniの強い点は常にその手続き的な性質でした。いくつかのノードと小さい表現のセットを使用すると、複雑で自然主義的な結果を作成することができます。
長期的には、Houdiniは視覚効果業界で多くの大規模なプロダクションのバックボーンでした。しかしながら、その手続き的なアプローチのために、学ぶのが難しいと主張することが多い。
これは数年後に真実だったかもしれませんが、物事は変わりました。より多くのアクセス可能なライセンススキームとHoudiniのインタフェースの完全な復上では、それは小さなスタジオ、アーティスト、そして愛好家まで開かれ続けています。他のパッケージから来て、それはまだ非常に違う考え方です。
このチュートリアルでは、プログラムの概要を説明します。葉や草の基本的なモデリング技術で始まります。プラントの成長を分配するために、サンプリングVDBボリュームをカバーし、最終的にはVEXコードと除外ノードを使用してその場でジオメトリを生成します。
私たちはHoudiniについて誰が言っているかどうかを見るつもりです:あなたが手続き型上訴されると、あなたは戻ることは決してないだろう!
ファイルをダウンロードしてください このチュートリアルのために。
葉を覆いたい破滅のモデルから始めます。あなたの形を意味のある方法であなたの形に名前を付けてください。これにより、後で異なる目的のためのジオメトリのグループ化が簡単になります。それを壁、板、レンガ、窓、ガラスに分割します。 Houdini Alembic Importはインポート時にパス属性を設定します。その後、スプリットノードまたはBLASTノードを簡単に使用して、必要な部分を選択できます。
破滅が施されていると、後で瞬時に使用するために個々の葉の作成を始める時が来ました。より現実的な結果が望まれる場合は、必ず本質からの参照画像を処理してください。葉が片面で、かなり低いポリカウントに必要です。カーブを外側の葉の形状に似せることで始まります。いくつかの表面テッセレーションを追加するために、リムシュノードを使用してください。柔らかい変換で、茎の中心を少し持ち上げます。緑色の色合いの色属性を追加します。
床を覆うために草の個々の鎖も必要です。やはり、幅が変わる単純な片面多角形ストランドで十分である。一般的に言えば、より多くのバリエーションは常に良いです。しかし、5つの異なる形でさえ、あなたは非常に現実的な結果を達成するでしょう。私たちのセットアップが手続き的なので、後で簡単に追加することができます。すべてのメッシュが自分の足のピボットで原点を中心としていることを確認することが重要です。このようにして、私たちはそれらをまっすぐに使うことができます。
草がどこに成長する場所を決めるのに多くの方法があります。自然配信に似たルールを見つけます。建物や瓦礫の覆われていない地面の至る所で草が成長します。成長は壁や岩に沿ってより密度が高く長くなる必要があります。地面をジオメトリから分離し、リムーシュノードを使用してかなり高いレベルの細分化を得ます。
壁に白い点の色を加え、グレーのグラウンドに灰色を付けます。壁の色を地面にマッピングするには、AttributeTransferを使用してください。壁のベースの周りに合うように、ノード上のブレンド半径を微調整します。壁をVdbfrompolygonsでVDBに回します。 AttributeWrangleでは、VolumeSample関数を使用して各ポイントでVDB値を取得します。負の値で点を取り除きます。
コピースタンプを使用する前に、いくつかの属性が準備を必要とします。 vexでは、乱数のランプを駆動するために乱数を使用します。これはスケール分布を制御する視覚的方法です。同様に、色をランダムな緑に設定します。ストランドをわずかに異なる方向に点)するには、x方向とz方向にランダムなオフセットを追加することによって法線を変えます。 Voila、あなたは草を育てました!
登山植物のために、私たちは成長機構を模倣するためにvexで私たち自身のソルバーを書く必要があります。それは厄介に聞こえるかもしれませんが、私たちは一歩ずつステップで進みます。 vexのHoudiniリファレンスを使用することを忘れないでください。根の点を見つけるには私たちが草の上で使ったのと同じメカニズムで行く。地面の数ポイントで、壁の近くに始まります。
仕事に3つの軍隊があります。最初に呼びかけて、地上から重力引出しに向けて指しています。 2つ目は、壁に沿ってランダムな方向を向くように、Wanderという名前のベクトルです。 3番目の力は壁と呼ばれ、最も近い障害物を向いています。これは植物の登山の欲求をエミュレートします。各成長反復で3つの力をすべて使用します。
現在、ポイント除去を使用してvexに飛び込む時間があります。 FORループでは、開始位置で初期化されている変数POSに加えて、短いセグメントの苗を成長させます。今のところ、アップベクトルに沿ってのみ成長してください。
パラメータをインターフェイスに公開するために、ch()およびchv()関数を利用することをお勧めします。その後、それらの値を対話的に変更することによってアルゴリズムの結果を簡単に実験することができます。
より自然な外観のために、さまよう力を加えます。各ステップでは、ノイズ関数に基づいてランダムな方向を計算します。このランダムベクトルは、シードが移動する方向を追加します。バランスを良くするために、2つの重み付け係数もインタフェースに導入し、強制的な強制を上下に拡大します。その結果、より多くのバリエーションでブドウが成長していますが、彼らは今会う障害物を浸透させています。これを回避するために、第3の種類の力は便利で壁の方向になる。
破滅の値と勾配VDBをサンプリングして、最後の力をVEXループに追加します。これはあなたにポイントと壁の間の距離、ならびに壁の法線方向を与えます。壁に向かって指す力を計算し、それを成長方向に加えます。 VDBを新しい位置に2回目の場合、点が壁の内側にあるかどうかを確認します。もしそうなら、ただ通常に沿って押し出します。
ブドウはまだ自然には見えません。これは、各ステップで迅速に方向を変えることができるためです。前のステップと現在のステップの方向の間のソフトブレンドを滑らかにします。また、位置が壁から離れすぎると、成長を止めたいと思います。 VDBサンプルから取得した壁の距離が特定のしきい値を超えるかどうかを確認してください。そうであれば、ただのループから抜けてください。
登山植物のもう一つの側面はまだ分岐する必要があります。しかし、これは達成するのに非常に簡単です。各成長工程には、特定の確率を分岐点にすることができます。次に、ポイント自体をルートとして使用して、マークされたポイントのそれぞれで再度成長アルゴリズムを実行します。
壁に沿ってエリアを埋めるために、より徘徊し、上向きになっているために、2回目のパスの成長パラメータを微調整することをお勧めします。
私たちは今、支店の成長に似たポイントのシーケンスを作成しました。ポイントのID属性を使用し、追加ノードを作成して個々の曲線に変換します。
UVテクスチャは、行とアンプに設定されます。列は曲線の長さに沿ってUVを提供します。これは、それから個々の長さに沿ってpscaleという属性に沿って傾斜します。多線ノードは、厚さに$ PSCALEを使用する管に曲線を回します。山とファセットを追加し、枝を確定します。
instancing葉は早い草のストランドのように少し機能します。成長アルゴリズムから出てくる曲線に沿った配布属性を定義します。これは各ブランチの開始時にゼロ、次に先端の1です。その属性に基づいてカーブに沿ってポイントを配置するための散布を使用してください。 PSCALEを変えることをお勧めします。これらの点に準備された葉をインスタンスにインスタンスに使用します。
この記事は最初に登場しました 3D世界 問題225; ここで購入してください !
関連記事:
JavaScriptでは、CSS3またはWebアニメーションAPIを使用しているブラウザでネイティブに実現できる�..