>   >  Houdini Cook Book:Vol.94 Build Material
Vol.94 Build Material

Vol.94 Build Material

02 Material Flow - Base

シェーディングは、まずベースになる木材の質感から作成していきます。プロシージャルシェーダでは、導入的な位置にある木目のシェーディングも、本気で取り組もうとするとなかなかに難易度が高いものです。今回は、シンプルな構造である程度リアルに見えるよう模様をつくり上げたいと思います。


まず、木目の生成に必要な座標系を作成します。PositionであるPは、Transform【A】を使ってObject Spaceに設定します。こうすることで、GeometryのTransform情報がシェーダに引き継がれます。もしDeformも必要であれば、Geometry側にRest Positionを設定することをオススメします。

次に、木目の軸を作成します。XYZのいずれかの座標が0になるように設定し、今回はそれらをSwitchで選択できるようにしています【B】。この座標系から、指定した木目の中心となる座標との距離を算出します【C】。こうして作成した新しい座標を使ってNoise【D】を生成すれば、同心円状に広がる模様をつくり出すことができます【1】

さらにリアルにするために、密度にNoiseを加え【E】、元々の空間にもNoise【F】を加えます。ここまでが、ベースとなる模様を生成するフローになります【G】。これでリアルな木目を作成することができました【2】


さらにディテールを加えるためのフロー【H】を解説します。模様に対して、木の繊維の雰囲気を足すNoise【I】をつくります。これも先ほどの座標系から作成しますが、Frequencyに、軸によって伸び方が変わるようなしくみを追加します【J】。これは木目の軸を選択するSwitchと同期するようにセッティングします。これで、詳細なNoiseが作成できます【3】

Ramp Parameterを使って、作成したNoiseのFloat情報を色情報へ変換します。中心から外側に向かって変化するグラデーションと、Noiseによって変化するグラデーションを作成します【K】。ただの木目【4】だけでは平坦な雰囲気ですが、ディテールが加わることでさらに情報量が増え、有機的になります【5】。この色情報に対してPBD Difuuse【L】を乗算し陰影を付けていきます【6】



さらに、PBR Non-Metallic【M】を使ってReflectionを作成します【7】。Displace Along Normal【N】を使ってBumpを作成し、そのNormalを利用してDiffuseやReflectionを作成することで、凹凸の雰囲気をつくり出すことができます。最後にこれらを合成して木材の質感が完成です【8】。実際にGeometryに適用してレンダリングしてみると調整箇所がわかりやすいので、テストモデルと切り替えながらリテイクを重ねましょう【9】



03 Material Flow - Curvature

次に、Curvatureのマスクを作成します。HoudiniにはデフォルトでCurvatureを計算してくれるノードがありますが、今回はそれを使用せずゼロから組み上げています。まずコアになるのがGather Loop【A】です。これは、レイを複数飛ばしてサンプリングするためのノードですが、今回はNoise【B】を使ってDisplacement【C】させたNormalをサンプリングし、元々のNormalとの内積値【D】を取ることで擬似的にCurvatureをつくり出しています。Gather Loop内部では、空のNに対して、つくり出したNを加算していく方法を採っています【E】。トリッキーですが、今回のGeometryの場合はこちらの方が良い結果が得られたので、このようなアプローチを選択しました。


さらに、Curvatureのエッジ部分から一部を取り出し、元々の木目とかけ合わせることで、エッジ部分にディテールを追加しています【F】。また、全体に木目のスレを入れることで、さらに説得力をもたせています【G】。これで、Curvatureマスクの完成です【1】


次ページ:
04 Material Flow - Paint

その他の連載