Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Geometric 編)

続き:
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(2D/3D Procedural/Texture 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Adjustment 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Application 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Compositing 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Data 編)

Geometric Shader Graph group は、説明文をそのままに理解すると、GPU がグラフを適用する際に現在処理しているデータ値を取得するノード。座標や法線ベクトル、接線などが取得可能。Reflect や Refract ノードは、現在の値を元にベクトルを修正することもできる、とのこと。

つまり、モデル表面の各点ごとに取得した幾何属性から、何を描画するのか(色など)を決定できそう。


  • Normal:法線ベクトル
  • Tangent:接線ベクトル
  • Bitangent:Normal × Tangent (Normal, Tangent それぞれに直行するベクトル)

Bitangent のイメージが掴めずに調べてみると、法線はモデル表面に対して一意に決まることが分かりやすいが、Tangent は UV の U 方向、Bitangent は UV の V 方向らしい。(バイタンジェント、かと思ったら ビタンジェント と読むっぽい)

Normal、Tangent、Bitangent から得られるTBN行列を用いて、ノーマルマップをワールド空間に変換する、らしい。

UV座標系 | CG・映像の専門情報サイト | CGWORLD.jp
📐TBN行列の作り方|タンジェント空間と法線マップをGLSLで理解する|批評テレビ/文学フリマ東京42出展

そして、そのままだと平すぎるポリゴンに、詳細なでこぼこ(凹凸や傷など)を与えるのがノーマルマップ、ノーマルマップはあくまで接線空間のローカル座標なので、これをワールド座標に変換するために使うと。なんとなくイメージできた。

で、Texture Coordinates は、テクスチャのUV座標をそのまま返す。モデル表面の各点が、テクスチャ画像のどの座標に対応するかを知るためのノード。


Geometry Color は、モデルのジオメトリに埋め込まれた頂点カラーを取得するもの(マテリアル色ではない)。

Geometry Property は、ジオメトリに定義されたカスタム属性を読み取るもの。
Data グループにあった Primvar Reader に似ている気がした。

ChatGPT によると、

結論から言うと、この 2 つは 「同じものを見ているが、立ち位置と責務が違う」 です。

Primvar Reader は「primvar を読むための専用ノード」
Geometric Property は「ジオメトリ属性を“汎用的に”引くためのノード」

両方とも「ジオメトリにぶら下がったデータ」を読む点は同じですが、用途・安全性・設計思想が違います。

Primvar Reader は、読む対象が明確に USD の primvar に限定されるのに対して、Geometry Property はこれに Geomprop や Custom property を含むカスタム属性全般を読み取れる、という違いがあるらしい。


Reflect, Refract (RealityKit) は、処理中の天の法線ベクトルに対して、物理的法則に基づいた変換を加えるもの。

  • Reflect:反射方向を算出。鏡や金属、水面の表現に使用
  • Refract:屈折方向を算出。Eta が屈折率 (屈折率の比)。ガラスや水面など透明な物質の表現に使用

屈折と聞いて、ばんじゅん🍓さんのこのプレゼンを思い出した。Refract はここでは使っていなさそう?ちゃんと見てみる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です