フィールド

基本的に、フィールドは関数です: つまり、任意の数の入力を単一の出力に変換できる一連の命令です。フィールドの結果は、さまざまな入力データを使用して何度も計算できます。これらはジオメトリノード全体で使用され、要素(メッシュの頂点、面、など)ごとに異なる結果を持つ計算を可能にします。

../../_images/modeling_geometry-nodes_fields_title.png

ノードへのフィールド入力。

例えば、上の図では、 "Set Position(位置設定)" ノードに接続されているフィールドは、 Position(位置)Index(インデックス) の2つの入力に依存しており、1つの命令を使用してそれらをベクトルに変換します。

フィールドの視覚化

ソケットの形状は、どのソケットがフィールドで、どのソケットが通常のデータであるかを伝えるために使用されます。可能なソケットの形状は3つあり、それぞれが "フィールドステータス" を視覚化します:

Circle(円)

ソケットには単一の実数値が必要であり、フィールド入力を受け入れることはできません。出力ソケットの場合、これはノードが常に単一の値を出力することを意味します。

Diamond(ダイアモンド)

ソケットはフィールド入力を受け入れるか、フィールドを出力します。これらのソケットには一定の単一値を接続できますが、出力は要素ごとに変化しないことがよくあります。

ドット付きダイアモンド

ソケットはフィールドにすることができますが、現在は単一の値です。これは、多くの異なる結果を持つフィールドの代わりに、単一の値が計算される場所を追跡できるため便利です。また、 ソケットの検証 がフィールド入力名の代わりに値を表示することも意味します。

../../_images/modeling_geometry-nodes_fields_constant.png

ソケットの形状はドット付きのダイアモンドです。つまり、フィールドはすべての要素で同じ値になります。すべてのポイントが5m上に移動します。

../../_images/modeling_geometry-nodes_fields_varying.png

ソケットの形状はダイアモンドで、フィールド入力にはさまざまな入力があります。つまり、値は要素ごとに異なる可能性があります。この場合、すべてのポイントのオフセットがポイントの位置であるため、位置は2倍になります。

ちなみに

多くの場合、フィールドから単一の値を抽出することが望まれます。フィールドを単純に単一の値に変更することは概念的には意味がありませんが、 Index(インデックス) モードの Transfer Attribute(属性転送)ノード や、 Attribute Statistic(属性統計)ノード を使用して、ジオメトリで評価されたフィールドから単一の値を取得できます。

フィールドをサポートする2つのノードソケット間で接続が確立されると、ノード接続は破線で描画されます。非フィールドソケットをフィールドソケットに接続するのを間違えた場合、接続はエラーがあることを示す赤い実線で描画されます。

ノードタイプ

ノードは、通常はジオメトリを渡すデータフローノードと、要素ごとのデータを操作するフィールドノードの2つのカテゴリに分類できます。フィールドノードは、ジオメトリデータをノードツリーに取り込む入力ノード、またはそのデータを操作する関数ノードにすることができます。

データフローノード

ジオメトリ入力とジオメトリ出力を持つノードは、ほとんどの場合、データフローノードになります。つまり、Geometry Nodes(ジオメトリノード)モディファイアーから出力されるジオメトリデータを実際に変更します。

関数ノード

ダイアモンドのソケット入力と出力を持つノードはフィールドノードであり、データフローノードによって評価される命令に似ています。関数ノードの例としては、数式ノードや、 Geometry Proximity Node などのより複雑なノードがあります。

Input(入力)ノード

入力ノードは、フィールド評価プロセスにデータを提供します。それ自体では、何の意味もありません。実際に値を出力するには、データフローノード(ジオメトリ)のコンテキスト内で評価する必要があります。入力ノードの例としては、 Position(位置)ID などの組み込み属性の入力ノードだけでなく、 Endpoint Selection(端を選択) などの選択ノードもあります。

フィールド入力は、 匿名属性 の形式で、 Distribute Points on Faces などのジオメトリを処理する他のノードから取得される場合もあります。

フィールドコンテキスト

すべてのフィールドノードは、接続されているデータフローノードのコンテキストで機能します。コンテキストは通常​​、ジオメトリコンポーネントタイプと属性ドメインで構成されており、入力ノードから取得するデータを決定します。

よくある誤解の1つは、複数の場所で使用されている同じフィールドノードツリーが同じデータを出力するだろうということです。これは必ずしも正しくはありません。フィールドノードツリーはすべてのデータフローノードに対して評価され、異なるジオメトリまたは変更されたジオメトリからデータを取得する可能性があるためです。

../../_images/modeling_geometry-nodes_fields_flow-1.png

ここでは、 Set Position(位置設定) ノードの入力フィールドが1回評価されます。フィールドを評価するために、ノードは逆方向にトラバースして、フィールド入力ノードから入力を取得します。

../../_images/modeling_geometry-nodes_fields_flow-2.png

2番目のSet Position(位置設定)ノードが追加されると、同じフィールドノードツリーがデータフローノードごとに1回ずつ、2回評価されます。2番目のSet Position(位置設定)ノードでは、ジオメトリ入力の最初のノードからの位置がすでに変更されているため、結果は異なります。

../../_images/modeling_geometry-nodes_fields_flow-3.png

ただし、多くの場合、ジオメトリを変更した後でも同じフィールド値を使用する必要があります。 Capture Attribute(属性キャプチャ)ノード はフィールドを評価し、結果をジオメトリの 匿名属性 にコピーします。

ここで、Capture Attribute(属性キャプチャ)ノードは初期位置のコピーを保存します。Capture Attribute(属性キャプチャ)ノードのフィールド入力の評価は、まったく異なるステップであることに注意してください。後で、Set Position(位置設定)ノードへの入力フィールドは実際の位置を使用せず、その匿名属性のコピーを使用します。