Blender 3.0 のジオメトリノードのフィールドについて

CGソフト

Blender 3.0ではジオメトリノードが拡張され、ノードを構築する際の仕様が変更されました。ここでは、Blender 3.0 のジオメトリノードで導入されたフィールドについて紹介したいと思います。

フィールド(Fields)

Blender 3.0のジオメトリノードでは、フィールドというデータや関数を受け渡すための新しいコンセプトが採用されています。

フィールドを使用すると、中間データを保存するための名前付きアトリビュートや単純な操作のための特別な ”アトリビュート” ノードが不要になるので、以前より高いレベルでのノードグループの構築がより簡単になります。

フィールドとは

フィールドは基本的に関数で、任意の数の入力を1つの出力に変換する命令の集合体です。フィールドはジオメトリノードの至る所で使用されており、すべての要素(メッシュの頂点、面など)に対して異なる結果を持つ計算が可能になります。

例えば、上の画像では「位置設定(Set Position)」ノードに接続されているフィールドは、位置(positionとインデックス(index2つの入力に依存しており、1つの命令でベクトルに変換しています。

フィールドのビジュアル

ソケットの形状によって、どのソケットがフィールドで、どのソケットが通常のデータであるかが判別できるようになっています。ソケットの形状には以下の3種類あります。

■円

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

■ひし形(ダイヤモンド)

ダイヤモンド形のソケットはフィールドの入出力が可能です。このソケットには一定の単一値を接続することができますが、その場合は出力は要素ごとに変化しないことが多いです。

■ひし形+ドット

このソケットはフィールドにすることができますが、現在は単一の値になっていることを意味します。多くの異なる結果を持つフィールドではなく、単一の値が計算される場所を追跡するのに役立ちます。また、Socket Inspectionでは、フィールドの入力名ではなく、値が表示されることになります。

Socket Inspectionとは、ソケットをホバーしたとき、評価中のソケットの値に関する情報を表示する機能のことです。

上の動画で見ると、ひし形+ドット形状の値は、フィールドがすべての要素で同じ値を持つことを意味しているのですべての点が同じ方向に移動します。

位置ノードを接続するとソケットから点がなくなります。要素ごとに異なる値になるので、この場合、すべての点のオフセットはその点の位置となり、それぞれの点の位置の値は2倍になります。

フィールドをサポートする 2 つのノードソケット間で接続を行うと、ノード接続は破線で描かれます。フィールドをサポートしないソケットをフィールドソケットに誤って接続すると、接続はエラーを示す赤い実線で描かれます。

フィールドから1つの値を抽出したい場合、インデックスモードの転送属性ノード(Transfer Attribute Node )や属性統計( Attribute Statistic Node)ノードを使用すると、ジオメトリで評価されたフィールドから単一の値を取得することができます。

ノードの種類

ノードは、通常ジオメトリを通過させるデータフローノードと、エレメントごとにデータを操作するフィールドノードの2つのカテゴリーに分けることができます。フィールドノードは、ジオメトリデータをノードツリーに持ち込む入力ノード、またはそのデータを操作する関数ノードになります。

■データフロー(DataFlow)ノード

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

■関数(Function)ノード

ひし形ソケットの入力と出力を持つノードはフィールドノードで、データフローノードで評価される命令に似ています。関数ノードの例としては、数学(Math)ノードや、ジオメトリ近接(Geometry Proximity)ノードのような複雑なノードがあります。

■入力(Input)ノード

入力ノードは、フィールド評価プロセスにデータを提供します。実際に値を出力するには、データフローノード(ジオメトリ)のコンテキスト内で評価する必要があります。入力ノードの例としては、位置(position)やIDなどの組み込みのアトリビュート入力ノードや、端を選択(endpoint selection)などの選択ノードがあります。

また、フィールドの入力は、面にポイント配置(Distribute Points on Faces)のようなジオメトリを処理する他のノードから、匿名アトリビュート(Anonymous Attributes)の形で来ることもあります。

匿名アトリビュート(Anonymous Attributes)はジオメトリに保存されている名前を持たない一般的なデータのセットです。通常、Blenderのインターフェイスで公開されているアトリビュートはすべて名前を持っていますが、ジオメトリノードでアトリビュートをノード・ソケットで受け渡す場合、属性フィールド出力(Attribute Field output )が作成され、ノードが入力ジオメトリ内のアトリビュートデータを見つけるために使用されます。

注意点

よくある誤解として、同じフィールドノードツリーを複数の場所で使用したとき、同じデータが出力されると思ってしまうというものがあります。

フィールドノードツリーはデータフローノードごとに評価され、異なるまたは変更されたジオメトリからデータを取得することがあるので同じとは限りません。

下の画像のように2つの位置設定(Set Position)ノードにフィールドノードツリーを接続した場合、同じフィールドノードツリーが2回評価され、各データフローノードに対して1回ずつ評価されます。2つ目の位置設定ノードでは、ジオメトリの入力が最初のノードから変更された位置になっているため、結果が異なります。

属性キャプチャ(Capture Attribute ノードを使用することで、ジオメトリを変更した後でも、同じフィールド値を使用することができます。属性キャプチャノードはフィールドを評価し、その結果をジオメトリの匿名アトリビュートにコピーします。下の画像では、属性キャプチャノードが初期位置のコピーを保存しています。

以上フィールドについてでした。

この内容はこちらのページでも確認することが可能です。

コメント

Translate »
タイトルとURLをコピーしました