【Blender5.0】シェーダーのGeometry(ジオメトリ)ノードについて解説

blender
記事内に広告が含まれています。

マテリアルシェーダーにあるGeometry(ジオメトリ)ノードは、現在のシェーディングポイントにおける幾何学的な情報を取得できる非常に重要なノードです。

特に、カメラの視点によって明るさや色を変化させる表現や、視線方向を利用したシェーダー・テクスチャ制御を行いたい場合、このノードは欠かせません。

ノーマル方向・視線方向・位置情報などを直接取得できるため、

  • 視点依存のハイライト表現
  • 縁だけが明るくなるリムライト風表現
  • 背面か前面かで色や質感を切り替える処理

といった、表現力の高いシェーダーを効率よく構築できます。

Geometryノードの基本的な役割と、各出力項目が何を意味しているのかを整理して解説し、便利な使い方なども紹介します。

この記事は、BlenderのマテリアルシェーダーにあるGeometry(ジオメトリ)ノードの使い方を解説している中級者向けの記事です。

難易度 3.0

Geometryノードとよくセットで使われるTexture Coodinateノードについては以下の記事で詳しく解説しています。Geometryノードの使用は、テクスチャ座標についての知識も合った方がより理解しやすいです。

スポンサーリンク

Geometryノードとは

Geometryノードは、シェーディング計算が行われている地点(シェーディングポイント)に関する情報を出力するノードです。

  • すべてのベクトル情報は ワールド空間 で扱われます
  • ボリュームシェーダーでは Position(位置)Incoming(入射) のみが使用可能です

入力ソケットやプロパティは持たず、接続するだけで各種情報を取得できます。

各出力は以下のものがあります。

  • Position(位置)
  • Normal(ノーマル)
  • Tangent(タンジェント)
  • True Normal(本来の法線)
  • Incoming(入射)
  • Parametric(面上の座標)
  • Backfacing(後ろ向きの面)
  • Pointness(凸部分)Cycles only
  • Random Per Island(アイランド毎の乱数)Cycles only

以下に各出力項目をそれぞれ解説します。

スポンサーリンク

Position(位置)

シェーディングポイントのワールド座標上の位置です。

アウトプットで見ると、各ポイントの位置がそのままRGBの色となって表されています。ワールド座標での位置なので、動くと座標は変化します。

グラデーションマスクや、空間的な高さ・距離による制御などに使用できます。

スポンサーリンク

Normal(ノーマル)

シェーディングで使用される法線です。

アウトプットで見ると、ワールド座標上で各面から出る法線のベクトルをRGBとして表しています。

  • スムーズシェーディングの影響を受けます(Shade SmoothでNormal出力が変化します。)
  • バンプマップやノーマルマップの影響も含まれます

ライティングや視線方向との内積計算などで頻繁に使われます。

  • Normalノードを使うと、ノード中の球の方向を変えるだけで、その方向とNormal出力の内積を出してくれます。
  • ある特定の向きを向いているほど+1、反対向きの面ほど-1に近くなるので、光の表現や方向によるグラデーションなどの効果をつけることができます。
スポンサーリンク

Tangent(タンジェント)

サーフェス(面)に沿った接線ベクトルです。

Geometry ノードの Tangent 出力は、Tangentノードの「Radial(軸指定)」に近い挙動をしているように見えます。

ワールド空間のZ方向を軸として、放射状に接線を生成している可能性が高いです。

右図の円柱を見てもらえばわかりやすいですが、Z軸の周りに垂直に、面に沿った接線ベクトルを生成しています。この接線ベクトルは張り付いているようで、オブジェクトを回転させると接線ベクトルも同様に回転してついてきます。

主に異方性シェーダーなど、方向性を持った表現で使用されます。

  • 左:パターンの座標に使うと、面に沿ったパターン出力ができます。
  • 右:異方性のコントロールができます。(Tangentノードの方が多くのオプションがあります。)
スポンサーリンク

True Normal(本来の法線)

メッシュの実際の形状に基づいた、幾何学的な法線です。

Normalとほぼ同じで、違いはShade Smoothなどの影響を受けないことです。

スムーズ処理やバンプの影響を受けないため、

  • 面の向きそのものを判定したい場合
  • エッジや面単位の制御を行いたい場合

に有効です。

スポンサーリンク

Incoming(入射)

シェーディングポイントからカメラへ向かうベクトル

※マニュアルではカメラ(視点)からシェーディングポイントへ向かうベクトルと書いてあるのですが、どう考えても反対のベクトルが表示されています…。

この出力を使うことで、

  • 視線方向に依存した明るさ変化
  • フレネル風の表現
  • 視点が変わると見え方が変化するマテリアル

などを作成できます。

Geometryノードの中でも特に使用頻度の高い出力です。

NormalとIncomingの内積を使った表現

NormalIncoming出力をDot Productノードで内積すると、

  • カメラ方向に向いている面は1に近づく。
  • 後ろ向きの面ほどー1に近づく。

これらの値をmap Rangeノードで調整して、Color Rampで色をつけると、カメラ方向を向いているときだけ光っている・色がついている、ような不思議な物質を作ることができます。

右:動画再生できます。

また、その反対に、フチやエッジ側のみを使うこともできます。

アニメ表現のようなリムライトなどに使えます。

スポンサーリンク

Parametric(面上の座標)

サーフェス上のシェーディングポイントのパラメトリック座標です。

  • エリアライトでは平面マッピングの UV 座標
  • ポイントライトでは球面座標

が出力されます。

主にライトシェーダーで使用される項目です。

オブジェクトに出力すると三角ポリゴンの範囲内に座標が出るようになります。

面白いパターンが作れたりします。

スポンサーリンク

Backfacing(後ろ向きの面)

その面が 背面から見えている場合は 1.0前面から見えている場合は 0.0 を出力します。

  • 両面マテリアルの制御
  • 内側と外側で質感を変える表現

などに使えます。

右図の例ではMixノードのFactorに使い、裏面が白の犬の写真を作成しています。

Blenderでは普通に画像をつなぐと両面に同じ画像が出ます。表・裏の切り替えにはMixノードやMix ShaderノードなどのFactorBackfacing出力がよく使われています。

スポンサーリンク

Pointiness(凸部分)Cycles only

メッシュの曲率を頂点ごとに近似した値です。

※Cyclesでしか使えない出力です。

  • 明るい部分:凸
  • 暗い部分:凹

汚れ、摩耗、エッジの強調などの表現に利用できます。

下図は分かりやすく黒の数値を上げただけのものです

Pointiness出力を使って金属のエッジ摩耗を表現した例

ノイズなども混じってますが、基本的にはpointiness出力値を使って

  • 粗さ(Roughness)
  • メタリック(Metallic)

を調整しています。

スポンサーリンク

Random per Island(アイランド毎の乱数)Cycles only

統合された(1つのメッシュとされてる)メッシュの各コンポーネント(アイランド)ごとに、 異なるランダム値を出力します。(エッジやポイントでつながってない面にランダム値を出力)

※Cyclesでしか使えない出力です。

  • 木の葉
  • 板材
  • 分離されたパーツ

などにランダムな変化を与えたい場合に便利です。

Arrayモディファイアを使用している場合は、 各インスタンスごとに異なるランダム値を取得できます。

スポンサーリンク

まとめ

Geometryノードは、

  • カメラ視点に応じた明るさ・色の変化
  • 面の向きや形状を利用した制御
  • シェーダー表現の自由度向上

といった目的において、非常に強力な基礎ノードです。

視線方向や法線を意識したシェーダーを作りたい場合は、理解しておきたいノードの一つと言えるでしょう。

スポンサーリンク

関連記事

テクスチャ座標について書いている記事です。ジオメトリとセットで使われることも多い

マテリアルやテクスチャを作るためのガイド記事。

コメント