4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

岩のマテリアル

Last updated at Posted at 2022-12-25

はじめに

この記事はHoudini Apprentice Advent Calendar 2022の19日目の記事です。

今回は岩のマテリアル作っていこうと思います。
私のオリジナルではなく、↓のチュートリアル動画を参考にしています。
https://youtu.be/uTPR0cUVRdg
記事にする都合上少し内容を前後させてることもありますが、ほぼ同じものを作っていきます。
また、こちらの動画はパート4にあたるもので、別パートでは岩のモデリングの解説などをしてださっていますので、岩を作りたくて見ていない方はぜひご覧ください!

ノードの値をキャプチャーで載せてますが、写ってないパラメーターはデフォルト値だと思ってください。
Houdiniのバージョンは19.5.368

オブジェクト

まず質感をつけるためにはオブジェクトが必要ですが、今回はピッグヘッドをsubdivideして適当にノイズを与えたものを使っていきます。
今回の記事の趣旨ではないので詳しい解説はしません。(というより解説できるほど丁寧に作ってないです)
岩を作るときはWorleyノイズを使うとなんとなくそれっぽくなりやすい気がします。
チュートリアル動画の岩のサイズに少し近づけるためTransformノードでUniform Scaleを0.5してます。
image.png

ライト

ライトはEnvironment Lightだけ使ってます。
↓のHDRIを使用してます。
https://polyhaven.com/a/alps_field
image.png

マテリアル作成

ベースカラー作成

mat ネットワークに移動し、Principled Shaderを作成します。名前を任意で変えます。今回はrock shaderという名前にしました。
image.png

以下3つのノードを作成します。
Global Variables
Unified Noise-Static
Ramp Parameter

↓図のようにネットワークを繋げます。
image.png

Unified Noise-Staticのパラメーターを変更します。
image.png

Ramp Parameterはbase_colorという名前に変更し、Nameを$OSにします。
image.png

rock_shaderのRoughnessを0.9にします。
image.png

ここまででこのような見た目になります。
image.png

base_colorの色を変えます。
image.png

好みの調整でいいと思いますが、参考に実際の設定してみた値を載せておきます。
image.png
image.png
image.png

レンダリング結果はこのようになります。
image.png

まだら模様

Unified Noise-StaticとRamp Parameter複製します。
複製してできたbase_colorはtint_colorという名前に変えます。
Color Mixを作成し、base_colorとtint_colorをつなぎます。
ネットワークは↓図のようになります。
image.png

複製したUnified Noise-StaticのFrequencyとOffsetを変更します。
image.png

tint_colorの色を変更します。
image.png
image.png
image.png
image.png

Unified Noise-Staticを新しく作成し、Color Mixのbiasに接続します。
image.png

unifiednoise_static3のパラメーターを変更します。Offsetは適当で大丈夫です。
image.png

ここまでのレンダリング結果です。
image.png

Color Mixノードをbase_color_outという名前に変更します。ノードに色をつけておいてわかりやすくしておきます。
image.png

岩のエッジの色を変える。

新しく以下のノードを作成します。
Curvature
Color Mix
Color_Correction

画像を参考にノードをつないでください。
image.png

Curvatureのパラメーターを変更します。尖った箇所を検出することができます。
image.png

Color Mixのパラメーターを変更します。base_color_outの色を参照し、彩度を下げて明度を上げるような処理をしてます。
image.png

レンダリング結果です。
image.png

エッジを馴染ませる

Multiply
Unified Noise-Static

を作成します。

MltiplyにCurvatureとUnified Noise-Staticをつないで掛け合わせます。
image.png
unifiednoise_static4のposにはGlobal VariablesのPをつないでください。

unifiednoise_static4のパラメーターを変更します。
image.png

レンダリング結果です。
image.png

岩の窪みを暗くする処理

curvature1
unifiednoise_static4
multiply1

を複製します。

Color Mix
Color_Correction

を作成します。

ネットワークを↓図のようにつなぎます。
curvature2、unifiednoise_static5、multiply2、colorcorrection2、colormix2が新しいノードです。
image.png

curvature2は、Convex Scaleを0.05に増やしエッジの検出範囲を広げます。
image.png

unifiednoise_static5はoffsetを適当に入れます。
image.png

colorcorrection2は元のカラーが暗くなるような調整にします。
image.png

レンダリング結果です。
image.png

colormix2の名前をrock_diffuse_detailに変更します。
image.png

ラフネスの設定

base_colorかtint_colorを複製します。
名前をroughness_rampにします。

unifiednoise_static5
multiply2

を複製します。

ノードをつなぎます。(だんだん複雑になってきました・・・)
unifiednoise_static6、multiply3、roughness_rampが新しいノードです。
image.png
見てわかるようにラフネスはcurvature2の範囲を利用してマスキングしてます。

unifiednoise_static6のOffset値を適当に変えます。
image.png

roughness_rampの設定です。
image.png
image.png
image.png

レンダリング結果です。
image.png

ここまでで岩のベースのマテリアルは完成です。
以降は岩に生えた苔の表現をしていきます。

苔の生成

苔のマスク

以下のノードを新しく作ります。
Global Variables
Ramp Parameter
Vector to Float
Fit Range
Color Mix

ネットワークを↓図のようにつなぎます。
image.png

global2は新しく作成せずに、global1を使いまわしても問題ないです。ネットワークの見やすさを考慮して作成しています。
vectofloat1でNのY値だけを取り出します。

fit1のパラメーターを変更します。Nの-1~1という値の範囲を0~1の範囲にリマップします。次につながっているランプパラメーターを使いやすくするためです。
image.png

Ramp Parameterはmoss_rampという名前に変えます。
色は、1は白、0.65以下は黒になるように設定します。
image.png

そうすることで、横や下を向いている面は黒色に、上を向いている面ほど白色になるようなマスクを作ることができます。
image.png

Occlusion
Multiply
Fit Range

苔の色設定

以下のノードを作成します。

Multiply
Ramp Parameter
Unified Noise-Static(2つ)

ノードをつなぎます。
image.png

unifiednoise_static7のパラメーター
image.png

unifiednoise_static8のパラメーター
image.png

Ramp Parameterはmoss_colorという名前にします。
色は適当に苔っぽい色を選択します。
unifiednoise_static7とunifiednoise_static8をMultiplyしてる影響で0.5以下の範囲に色がのりやすいですので、0.5以下のところにグラデーションを集中させてます。
image.png

レンダリング結果
image.png

苔のディスプレイスメント

以下のノードを作ります。

Mix
Constant
Multiply
Unified Noise-Static

ノードを↓図を参考につなぎます。
image.png

unifiednoise_static9のパラメーター
image.png

rock_shaderのdispに繋いだだけではディスプレイスメントは有効にならないので、
DisplacementのCustom Inputを有効にします。
image.png

レンダリング結果
image.png
少し苔のディテールが入った感じに。
ディスプレイスメント具合はconst1の数値を変えればOKです。

マテリアル作成は以上です。お疲れ様でした。

全体のネットワーク

image.png

おわりに

後半は岩に藻をつける作業ですが、応用すれば雪の表現などもできると思います。
image.png

個人的にマテリアルをノードでがっつり組んだことなかったのでやってよかったです。
各種ランプのカラーやノイズの周波数などは適宜調整することでよりよい質感になるのではないかと思います。
特に周波数なんかは、オブジェクトの大きさによって変えたほうがいいかもしれません。
ノイズの種類もいろいろ試してみるとおもしろそうです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?