| On this page |
レイヤは、雪、水、特定の種類の岩石など、特定の特徴を可視化する非常に優れた方法です。 レイヤは、基本的には再利用するために個別に複製/保存されたマスクです。 また、レイヤを使用することで規則的なパターンや繰り返しを崩すことができます。 HoudiniのHeight Fieldは、瓦礫、流れ、堆積物、水、岩盤など、幅広い種類のレイヤを書き出します。 さらに、ほぼ無限でカスタムのレイヤやマスクを作成することもできます。
テクスチャの基本のページでは、カラーや様々なレイヤを通じて地形構造を可視化する方法を学びました。 この章では、それらの様々なレイヤをテクスチャリング向けにSolarisやKarmaに読み込む方法について説明しています。
Note
より見やすく説明を簡素化するために、以下のガイドでは実際のテクスチャではなくカラーを使用しています。
SOPセットアップ ¶
どの地形もお使いいただけますが、少なくとも2枚のレイヤが含まれている必要があります。
レイヤの役立つソースとして、HeightField Erode SOPが挙げられます。
こちらでは、
debris 、sediment 、flowのレイヤを取得することができますが、カスタムマスクを作成することもできます。
HoudiniのHeight Fieldはボリュームフィールドですが、Solarisフレームワークではポリゴンを想定しています。
そのため、地形を変換する必要があります。
その一つの方法は、Convert HeightField SOPを使用することです。
別の方法では、 stage 上で
SOP Import LOPを実行する必要があります(“LOPセットアップ”を参照)。
LOPセットアップ ¶
前述のSOP Import LOPを使用して、Height FieldをSolarisにインポートする必要があります。
SOP Path パラメータの横にある Open floating operator chooser ボタンをクリックします。
表示されるパネルのツリー表現から、Height FieldのSOPネットワークの最終ノード(通常は
Null SOP)を選択して Accept をクリックします。
インポート前に地形を変換したくないのであれば、SOP Import LOPの Primitive Definition セクションを開いてください。 そこで、 Enable Import HeightFields as Mesh オプションを有効にして、 Import HeightFields as Mesh オプションを無効のままにします。 今回は地形を変換したいので、 Import HeightFields as Mesh オプションを有効にします。 また、マテリアルも必要です。 シェーダを作成して適用するには、以下の手順に従ってください。
-
Material Library LOPを配置して、その入力をそのSOP Import LOPの出力に接続します。
-
そのMaterial Library LOPをダブルクリックして中に入ります。⇥ Tabを押してタブメニューを開いて、 Karma Material Builder を選択します。このツールはサブネットワークを追加します。そのサブネットワーク内に基本的なシェーダセットアップを見つけることができます。
そのシェーダセットアップの中核となっているノードはMtlX Standard Surface VOPです。
このシェーダノードには、マテリアルの外観を最終的に決定する幅広いカテゴリが備わっています。
カテゴリを展開すると、関連するパラメータが表示されます。
以下の例では、 Base パラメータグループを展開します。
以下の説明で関係するパラメータ入力は
base_colorです。
シェーダを地形に適用するために、stage レベルに戻ります。
-
Material Library LOP上で、 Auto-fill Materials ボタンをクリックします。 これによって、先ほど追加したマテリアルが Material VOP パラメータおよび Material Path パラメータに設定されます。
-
Assign to Geometry オプションを有効にします。
-
Geometry Path パラメータには、Height FieldのSolarisパスを入力します。 デフォルトでは
/sopimport1/heightですが、カスタムのパスと名前を適用している場合は、そちらを使用する必要があります。 -
再度、マテリアルのサブネットワーク内に入ります。
シェーダのセットアップ ¶
地形の岩盤を表現したベースカラーから始めましょう。
MtlX Mix VOPを追加して、その
outピンをそのMtlX Standard Surface VOPのbase_colorチャンネルに接続します。
そのMtlX Mix VOPの Signature ドロップダウンメニューから Color を選択します。
これで、 Fg (前景)、 Bg (背景)、 Mix (マスク)という名前の3つとも0の値が設定されたパラメータが表示されます。
-
Bg カラーフィールドをクリックして、オレンジ色を選択します。
-
Fg カラーフィールドをクリックして、赤色を選択します。
Height Fieldは背景色であるにもかかわらずオレンジ色に変わりました。
その原因は、 Mix パラメータです。
Mix パラメータの値が0は、背景色が100%の強度で表示されることを意味します。
Mix パラメータの値を1に設定すると、地形は赤色に変わります。
中間値(=グレーの濃淡)は混合色を生成します。
地形のレイヤを混合マップとして使用することで、色のブレンド方法を制御することができます。
-
レイヤの値を取得するために、
MtlX Geometry Property Value VOPを配置します。
-
Geomprop フィールドに
flowと入力します。Height Fieldレイヤは常にfloat型なので、 Signature パラメータを変更する必要はありません。 -
そのMtlX Geometry Property Value VOPの
out出力を、そのMtlX Mix VOPのmix入力に接続します。
最終結果を確認するには、ビューポートをレンダリングする必要があります。 ビューポートの右上コーナーに2つのドロップダウンメニューがあります。 1つ目のメニューを開いて、高速プレビュー用に Karma XPU を選択します。 すると、下図のような地形が表示されるはずです。
さらにレイヤを追加する ¶
より複雑な地形ネットワークでは、例えばHeightField Mask by Feature SOPから多様なレイヤを書き出すことが多いです。
次の例では、既存の
flowレイヤとocclusionレイヤを組み合わせて、地形の稜線を強調する方法を説明します。
-
シェーダネットワーク内に、さらにMtlX Mix VOPを追加します。1つ目のMtlX Mix VOPの結果は、オクルージョンミックスの背景として利用したいです。1つ目のMtlX Mix VOPの
outピンを、2つ目のMtlX Mix VOPのbg入力に接続します。 -
さらにMtlX Geometry Property Value VOPを追加して、その
outピンを2つ目のMtlX Mix VOPのmix入力に接続します。 -
その2つ目のMtlX Geometry Property Value VOPの Geomprop フィールドに
occlusionと入力します。 -
2つ目のMtlX Mix VOPの
outピンを、そのMtlX Standard Surface VOPのbase_colorチャンネルに接続します。
下図は、2枚のレイヤを用いた地形の外観を示しています(ライトにはEnvironment Light LOPを使用しています)。
この手法では、複数のマップを直列接続して重ね合わせています。 各MtlX Mix VOPは、前工程のミックス結果に新たなマップまたはカラーを加算しています。 スペキュラやラフネスなどの特性マップを追加する場合でも同様にレイヤミックスで組み合わせる必要があります。
マップ ¶
上記の説明ではカラーを使用していますが、たいていの場合はテクスチャを扱うことになります。 Houdiniのジオメトリに変換されたHeight FieldにはUVが追加されていますが、急峻な領域では引き伸ばしや歪曲が生じる場合があります。 大規模な地形では、継ぎ目や繰り返しパターンが目立つ問題がよく起こります。
そのため、Triplanarマッピングを使用する方が良い場合があります。
MaterialXシステムにはMtlX Triplanar Projection VOPが用意されています。
また、当社独自の
Karma Hexagonal Tiling Triplanar VOPを使用することも推奨します。
このノードは六角形のパターンを生成して、領域上にマップを“散布”します。
パッチにはランダムなスケールと回転を適用できるため、継ぎ目や繰り返しパターンの発生を回避することができます。
Triplanarノードにはテクスチャマップが必要になります。
そのoutピンをMtlX Mix VOPのfgおよびbg入力に接続することで、カラーを置き換えることができます。