![見出し画像](https://assets.st-note.com/production/uploads/images/140018175/rectangle_large_type_2_df3e0ad58306a8e135ba2dc800fd4fd0.png?width=800)
文系の blender 4.1 はじめての Geometry Node | Read ノード
ここでは、ジオメトリノードで頻出する、Index, Position, Normal 等、各 Read ノードについて簡単に紹介します。
環境 Blender 4.1.0 , Mac Mini M1 OS 14.4
Index | インデックス
Index ノードは、接続先(下の例では Grid)の構成要素の識別番号を出力する。
ここではインスタンスだが、接続先がジオメトリであれば頂点の、カーブであればコントロールポイント … 等の構成要素の番号を出力する
![](https://assets.st-note.com/img/1714960619049-Xu8cebmi2r.png?width=800)
スプレッドシート画面をみると、この例では 80 個あるインスタンスに、それぞれ、0 〜 79 番の Index が割り当てられている。
![](https://assets.st-note.com/img/1714889097334-20YQXSp6cB.png?width=800)
単純な整数値の数列の出力なので、要素の拡大、回転、選択(Selection)等さまざまな用途に利用することも可能だ。
動的な数列による出力は、フィールド値と呼ばれ、ソケットは菱形。
![](https://assets.st-note.com/img/1715216903490-2iTDoMrcUw.png?width=800)
![](https://assets.st-note.com/img/1714888941712-gx1BSENtVo.png?width=800)
![](https://assets.st-note.com/img/1715217017197-2JsGkekiC4.png?width=800)
![](https://assets.st-note.com/img/1714890507703-RSg0ydbCXr.png?width=800)
![](https://assets.st-note.com/img/1715217198626-ZmUNzCoPr2.png?width=800)
![](https://assets.st-note.com/img/1714961128217-BxDxgClPNI.png?width=800)
Position | 位置
Index ノードと同様に、接続先の各要素の位置情報、X, Y , Z の値を出力する。
![](https://assets.st-note.com/img/1715144873181-QqUeEXg4jG.png?width=800)
下の例では、Position ノードから、接続先の Grid の 60 個のインスタンスの位置情報が出力されている。
その出力から、Separate XYZ で X の値のみ抽出し、Absolute で正の値に変換、Multiply で値を 3 倍し、その値でインスタンスを拡大している。
![](https://assets.st-note.com/img/1715145098768-cS6wIUQk4B.png?width=800)
![](https://assets.st-note.com/img/1715145122107-jwS1YO4Sqj.png?width=800)
下の例では、各インスタンスと、右寄りに置かれたエンプティオブジェクトとの距離を Distance ノードで計算し、同じくインスタンスのスケールに反映させている。
![](https://assets.st-note.com/img/1715145918688-n6KfSoTpNR.png?width=800)
![](https://assets.st-note.com/img/1715145900037-FeOrfCyvxX.png?width=800)
Normal | ノーマル
接続先のジオメトリの面、頂点、辺などのノーマル(法線)のベクトルを出力する。
下はよくあるノード。球オブジェクトの頂点に、四角錐のオブジェクトを配置した。デフォルトでは四角錐はすべて同じ向きに配置される。
![](https://assets.st-note.com/img/1715150238798-6oErCDkxnS.png?width=800)
![](https://assets.st-note.com/img/1715150455383-tEGKpbZthG.png?width=800)
Normal ノードから、上の球の面のノーマル情報が出力され、Align Euler to Vector ノードで角度に変換、四角錐の回転に反映させた。
Align Euler to Vector は、4.2 より、Rotation to Vector に改称される予定
![](https://assets.st-note.com/img/1715150565218-btn7M0Hiek.png?width=800)
![](https://assets.st-note.com/img/1715150699909-0klLtD6TrS.png?width=800)
ノーマルの Z は面の向きが上を向いている場合、正の値、下を向いている場合、負の値なので、下では、
Separate XYZ ノードで Normal の Z 値のみ抽出
Greater Than ノードで、ゼロより大きい場合は 1 (True)、小さい場合は 0 (false)を出力、値を Selection に渡す。
Selection で、True のインスタンスのみ選択。
![](https://assets.st-note.com/img/1715151832660-H6V2BCjn9j.png?width=800)
XYZ分離 数式 - 大きい
![](https://assets.st-note.com/img/1715151786864-kElXG1YdxP.png?width=800)
Selection は、ブーリアン型ソケットで、True (選択する)、False (選択しない)のいずれかの処理を行う。数値を渡された場合、ゼロあるいはそれ以下が false 、それ以外は true 扱いになる。
Radius | 半径
ジオメトリの(カーブならばコントロールポイントの)半径プロパティを出力する。すでに設定されている半径に操作を加えることができる。
![](https://assets.st-note.com/img/1715223854471-KlVEEnKWkX.png?width=800)
![](https://assets.st-note.com/img/1715224340885-DlJeV66jZV.png?width=800)
右のNurbPathの各ポイントには手動で Radius が設定されている。
Named Attribute | 名前付き属性
Store Named Attribute ノードで保存された、数値、ベクトル、カラーなどのデータを出力する。
Store Named Attribute
下のオブジェクトの、Z 軸のみ反転させた頂点のデータをStore Named Attribute ノードで保存、ReverseZ と名前を付けた。
![](https://assets.st-note.com/img/1714970242954-9lcVoTwFJS.png?width=800)
![](https://assets.st-note.com/img/1714970712160-RBbFmT3qnb.png?width=800)
ReverseZ という属性が作成され、Z 値は -1 倍されている。
![](https://assets.st-note.com/img/1714970781441-Nb9l7uRXne.png?width=800)
Named Attribute
上のノードの右部分。オブジェクトを複製し、複製には、Named Attribute に ReverseZ を指定し、頂点の位置に反映させた。
![](https://assets.st-note.com/img/1714970993708-wfKiUekYLW.png?width=800)
下が複製されたオブジェクト。Z 軸のみ反転している。
![](https://assets.st-note.com/img/1714971147406-CtBL6ZXRwA.png?width=800)
ミラーモディファイアと同じ。本来はこのような操作に Named Attribute は必要ないのだろうが、現状でのわたしの知識範囲では、より現実的な利用方法を見いだせなかった。
なお、Named Attributeで保存されたデータは、Attributeノードから、シェーダーエディタでも利用できる。
まとめ
これまでにプログラムを組んだ経験があると、ジオメトリノードでどことなく違和感がある、接続元もなく、唐突に出てきてなにが出力されるのか心もとない、と感じるノードが Read ノードかもしれません。
ただ、ジオメトリノードには欠かせないノードであることは確かで、応用範囲も広そうです。参考まで。
この記事が気に入ったらサポートをしてみませんか?