
Geometry nodesデータ構造
Blender3.3にアップデートされ、やっと安定したGeometry nodesで遊べるようになった。今回はGeometry nodesの理論的なことについて。理論的な話はほとんど英文での動画やサイトばかりだったのでニュアンスがわかりにくかったので理解するのに苦労した。自分なりの解釈も含めてまとめておく。
データの構造
Geometryとは
そもそもGeometryとは何なのか?辞書で単語を調べると、「幾何学」とかそのような意味が出てくる。Geometry nodesにおけるGeometryとは「データの構造体」とでも思ってもらえればいい。
Geometryには5つの要素がある。
Mesh
Curve
Point Cloud
Valume Grids
Instance
Spreadsheetを見るとそれぞれの情報と、内臓されたデータを確認することができる。

Attributes
Attributes(属性)とはGeometryのデータレイヤーである。
例えばMesh VertexのPositonやVertex GroupsのWeight値などがAttributesにあたる。
用語としてよく出てくるが内容としては単純である。動画等を見つつ使いながら覚えていった方がよい。

Data type
Data typeは次のものがある。
Value(Float)
Vector(XYZ)
Color(RGB)
Integer
Boolean
上3項はMaterial nodesでも使っているので、使い勝手は変わらない。ただし色付けはMaterialで行われるので、Color nodesはRGBをXYZ変換して使用する使い方が主である。
IntegerはIndexやSeed値の指定などの役割として使うことがほとんどである。計算はほぼValue(Float)で行う。
Booleanはソケットについている処理を部分的に有効無効の切り替えができるので使いながら覚えていった方がよい。
Fields
Fields
海外の動画を見ているとFieldsという言葉がよく出てきている。
fieldsはGeometry nodes間でreferencesへattributesとoperationsを渡す方法である。平たく言うとプログラミングの関数のようなものである。GeometryのデータフローにValueやVectorを追加し整形していく。この線形を与える概念がFeildsになる。

operations
operationsは関数の中身のことを指している。attributesが入力となり、計算処理しFeildsが出力する。
Feildsはこの一連の流れInstructionsを持っている。対照的にGeometryはattributesをひとまとめにしたDataを持つ。
references
GeometryはDataを持ち、法線のようにDataから計算され一意に決まるものをDerived Dataと呼ぶ。このDataとDerived Dataをひっくるめてreferencesと呼ぶ。