続き:
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 はここでは使っていなさそう?ちゃんと見てみる。