Utility ノード
Utility ノードとは
Utility ノードはシェーダーの機能を拡張することができます。
- General Utilities
- マッピング、算術演算など
- Color Utilities
- 色に関するもの
- Switch Utilities
- 同じシェーダーで、オブジェクトごとに一部のアトリビュートだけ変化させたい場合に使用
Sampler Info とは
Sampler Info ノードによって、
サンプリング点(カメラからの視点がオブジェクトにあたる点)についての、
さまざまな情報を得ることができます。
- Facing Ratio (0.0 〜 1.0)
- サンプリング点からカメラへのベクトルと、法線ベクトルの内積を計算したもの。
カメラへの向きと、法線がどれくらいの角度をなしているかがわかります。
1.0 で向きが同じ、0.0 で角度が 90 度になります。
Sampler Info の使用例 1
Sampler Info を作成して、色々な実験をしてみましょう。
ここでは、Sampler Info の他に以下のノードを使ってみます。
- Reverse
- 入力(0.0 〜 1.0)の値を逆転(1.0 〜 0.0)させます。
- Remap Value
- 入力を別の値にマッピングします。
ramp に似ています。
- Blender Colors
- 2 つの色を混ぜ合わせます。
- 球と平面で適当にシーンを作成します。
わかりやすくするために、平面にテクスチャーをアサインしておきます。
- Blinn マテリアルを作成し、球にアサインしておきます。
- Sampler Info ノードを作成します。
Hypershade → Create Maya Nodes → General Utilities → Sampler Info
から Sampler Info ノードを作成します。
- Sampler Info ノードの Facing Ratio と Blinn ノードの
transparencyR, transparencyG, transparencyB をコネクトします。
- レンダリングするとカメラと同じ向きの部分が透明に、
垂直な部分が不透明になっているのがわかります。
- transparency と同じように、
Sampler Info の Facing Ratio を球の incandenscence にコネクトしてみます。
球の真ん中が白くなって透明になりません。
- 修正するために incandenscence へのコネクトをはずします。
- Reverse ノードを作成します。
Hypershade → Create Maya Nodes → General Utilities → Reverse
- Sampler Info の Facing Ratio を Reverse ノードの input にコネクトします。
- Reverse ノードの output を球の incandenscence にコネクトします。
- レンダリングをすると、今度は真ん中が透明になっています。
- 次に、色を変更できるようにしてみましょう。
そのために、Reverse ノードを削除し、Blend Colors ノードを作成します。
- Sampler Info の Facing Ratio を Blender Colors ノードの Blender にコネクトします。
- Blender Colors ノードの Blender を球の incandenscence にコネクトします。
- Blender Colors ノードのアトリビュート Color1, Color2 を変更すると色を変えることができます。
- しかし、このままでは incandenscence の範囲を調節することができません。
ということで、Remap Value ノードを作成します。
Hypershade → Create Maya Nodes → Colors Utilities → Remap Value
- Sampler Info の Facing Ratio を Remap Value の Input Value にコネクトします。
- Sampler Info の Facing Ratio から Blend Colors の Blender へのコネクトを解除します。
- Remap Value の Out Value を Blend Colors の Blender にコネクトします。
- Remap Value の Value セクションで値を調節します。
以下の図は、interpolation を smooth にして、グラフを変更しています。
Sampler Info のアトリビュート
カメラからの視線と法線の角度を調べるには Facing Ratio が便利ですが、
法線マップによる法線ベクトルとの角度を調べるためには使用できません。
その場合には Ray Direction などを使って自分で内積の計算を行う必要があります。
- Ray Direction
- カメラからサンプリング点への長さ 1 のベクトル
Sampler Info の使用例 2
Crater テクスチャーを利用して、
バンプの部分にも Facing Ratio を使用したのと同じような効果が出るようにしてみましょう。
新しく以下のノードを利用します。
- Multiple Divide
- 1 〜 3 個の数同士を乗算・除算・階乗します。
- Vector Product
- ベクトル同士の演算(内積・外積など)を行います。
- 球と平面で適当にシーンを作成します。
わかりやすくするために、平面にテクスチャーをアサインしておきます。
- Surface Shader マテリアルを作成し、球にアサインしておきます。
ここでは、色の計算をすべてシェーディングネットワークで計算してしまうので、
Surface Shader を使用します。
- General Utilities から Sampler Info ノードを作成します。
- General Utilities から Multiple Divide ノードを作成します。
- Sampler Info ノードの Ray Direction と Multiple Divide ノードの
input1 をコネクトします。
- Multiple Divide ノードのアトリビュートエディタを開き、
input2 の 3 つの数値をすべて -1 にします。
これによって、カメラからサンプリング点に向かっているベクトルの向きを逆転します。
- 3D Texture から Crater ノードを作成します。
- General Utilities から Vector Product ノードを作成します。
- Crater ノードの outNormal と Vector Product の input1 をコネクトします。
- Multiple Divide ノードの output と Vector Product の input2 をコネクトします。
ここまでのシェーディングネットワークで Facing Ratio と同じ計算しています。
- Colors Utilities の Blender Colors ノードを作成します。
- Vector Product の outputX を Blender Colors ノードの Blender にコネクトします。
- Blender Colors ノードの output を Surface Shader の outColor にコネクトします。
- 以下のアトリビュートを適当に変更します。
Crater ノード
- Frequency
- テクスチャーの色を混ぜる度合い
- Norm Depth
- クレーターの深さ
Blender Colors ノード
- Color1
- Blender アトリビュートの値が 1 の場合の値
- Color2
- Blender アトリビュートの値が 0 の場合の値
- Crater の代わりに任意のバンプマップを使用することができます。
その場合は、Bump2d または Bump3d の outNormal から
Vector Product の input1 へコネクトします。
参考
- Maya
Maya, MEL 関係(Tips, FAQ, コマンド)のページ
Prev | Next
Index | Home
Mail