【Blender 5.2】新しく追加されたノードについて解説:ジオメトリノード

blender
記事内に広告が含まれています。

Blender5.2のLTSがリリースされました。今回のアップデートでは、ジオメトリノードにたくさんの新しいノードが追加されています。

物理演算などができるXPBD Solverノードや、音声ファイルの周波数解析をしてくれるSample Sound Frequenciesノードなど、新しい機能や実験的なノードが追加されていたり、Mesh BevelノードやMerge Pointsノードなど、使いやすく便利になるような補助的なノードが増えています。

各ノードについて、使い方や使用例などをざっくりと説明してまとめていきたいと思います。

スポンサーリンク

Blender5.2に追加されたノード

  • Physics系
    • XPBD Solver
  • Bundle系
    • Get Geometry Bundle
    • Set Geometry Bundle
  • Lists系
    • Field to List
    • Closure to List
    • List Length
    • Get List Item
    • Filter List
    • Sort List
  • Collection Children 
  • Sample Sound Frequencies
  • Empty Objectsも使用可能に
  • Merge系
    • Merge Points
    • Cluster by Distance
    • Cluster by Connected
  • Mesh Bevel
  • Attributes系
    • Rename Attribute
    • Get Attribute Names
    • Transfer Attributes
  • Curve系
    • Set NURBS Order
    • Set NURBS Weight
  • String系
    • Trim String
    • Reverse String
    • Set String Case
    • Split String
  • 空間変換・プロジェクション系
    • 3D to Screen Space
    • Screen to 3D Space
    • Transform and Project
    • Project with Depth
  • Principal Component Analysis:主成分分析
    • Geometry Principal Components
    • Principal Components
  • その他
    • Instance Reference
    • Get Geometry Component
スポンサーリンク

XPBD Solver ノード(Experimental)

XPBD Solver ノード(Experimental)が追加されています。

布や髪などのシミュレーションをGeometry Nodes上で動作させるための、制約ベースの物理計算ソルバーノードです。

ただし、現在はExperimental(実験的機能)として提供されており、今後ノード構成や仕様が変更される可能性があります。

そのため、現時点では詳細な解説は割愛します。気が向いたら何か追記するかもしれません。

スポンサーリンク

Bundle系ノード

Blender 5.2で導入された Geometry Bundles は、ジオメトリに任意のデータを関連付けて保存できる機能です。

これにより、ジオメトリと一緒に追加の情報を持ち運ぶことができます。

保存できるデータには、通常の値だけでなく Field(フィールド)やClosure(クロージャ) も含まれます。

また、バンドルに保存されたデータは、モディファイアやオブジェクトの境界をまたいで渡すことができます。(試してみたところ、まだクロージャやフィールドはまたいで渡すことはできないかもしれません。)

Geometry Bundleを扱うために、2つのノードが追加されています。

Set Geometry Bundleノード

ジオメトリにバンドルを保存、または保存されているバンドルを更新します。

複数の値ジオメトリクロージャなど様々なデータをバンドルとして保存できます。

Get Geometry Bundleノード

ジオメトリに保存されているバンドルを取得します。

オプションで、取得時にバンドルを削除することもできます。

例えばオブジェクトAにジオメトリやデータをバンドルに保存し、別のオブジェクト側でObject Infoノードで取り込んでGet Geometry Bundleノードで取得して利用するといった処理が可能になります。

保存されたデータはSpreadsheet(スプレッドシート)でも確認できます。

補足すると、ここでいう「ジオメトリにデータを付ける」は、今までの名前付き属性(Named Attribute)とは少し違います。

名前付き属性は基本的に、

頂点
 └ 位置
 └ 色
 └ 重み

のようなジオメトリ内部の要素に付くデータでした。

一方Geometry Bundleは、

Geometry
 ├ Mesh
 ├ Instances
 └ Bundle
       ├ 別のGeometry
       ├ Field
       └ Closure

のように、ジオメトリそのものに付随するデータ入れ(コンテナ)というイメージです。

Geometry Bundleは、オブジェクト間で情報を受け渡すための仕組みです。現時点では対応しているデータ型や用途に制限がありますが、複数オブジェクトにまたがるシステムを構築するための基盤となる機能として、今後も拡張が進められると考えられます。

スポンサーリンク

Mesh Bevel ノード

多くの人がずっと待ってたノードなんじゃないかと思います。ベベルしてくれるノード。
作ったオブジェクトやテキストなどが楽にベベルできるようになりますね。

メッシュジオメトリのエッジまたは頂点にベベル(面取り)を適用します。

Affect Type

  • Edges
    • 選択したエッジにベベルを適用します。
    • ※ちょうど2枚の面に接しているエッジ(マニフォールドエッジ)のみベベルできます。
  • Vertices
    • 選択した頂点にベベルを適用します。

Offset
ベベル時に、各面、エッジ方向へどれだけ面取りを広げるかを指定します。(エッジの場合、Start頂点からEnd頂点を見たときの左側が左面です。)

Miter
ベベル同士が頂点で交わる部分に、マイター接続を作成するエッジを指定します。

Spread
マイター部分の頂点をどれだけ広げるかを指定します。

Segments
いくつの面、辺に分割するかを指定します。

Shape
ベベル断面の形状を凹型から凸型まで調整します。Segmentsが2未満の場合は効果がありません。

Profile
カーブを接続すると、通常のShapeではなくそのカーブ形状をベベル断面として使用します。

  • カーブはXY平面(Z=0)上にあり、(0,1)から(1,0)へ向かう形である必要があります。
  • カーブはSegments数に応じて分割されます。
スポンサーリンク

Lists系ノード

Blender5.2から新しいデータ型であるLists(リスト)という型が追加されました。

現時点では基本的なノードのみが実装されていますが、リリースノートでは「今後さらに拡張される予定」と明記されており、将来的にはより多くのリスト操作ノードが追加されることが期待されています。

リストの作成

Field to Listノードでフィールドや指定した数値でリストを作成できます。

Closure to List ノードでクロージャからもリストを作成できます。

リストの操作

Mathノードを使うことでリストの計算も行えます。

リスト同士の演算も行うことができます。

Filter Listノードでフィルタリング、

Sort Listノードで昇順に好きな重みをつけてソーティングもできます。

スポンサーリンク

Collection Children ノード

Collection Children ノードは、指定したコレクションに含まれる子コレクションやオブジェクトを取得するノードです。

リスト機能が使えるようになったことで可能になったノードです。

入力

  • Collection(コレクション)
    取得対象となるコレクションを指定します。
  • Recursive(再帰)
    ネストされた子コレクション内に含まれるコレクションやオブジェクトも取得するかを設定します。
    • 有効の場合
      子コレクションの中にある、さらに下の階層のコレクションやオブジェクトもすべて取得します。
    • 無効の場合
      指定したコレクション直下にある子コレクションとオブジェクトのみ取得します。

つまり、コレクション階層をたどって中身をまとめて取得したい場合に使うノードです。

ViewerノードでSpreadsheetを見ています。

※SpreadSheet(スプレッドシート)で見るときは
Viewer NodeからViewer Data > Objects or Collectionsを開いてください。

スポンサーリンク

Sample Sound Frequencies ノード

新しく Sample Sound Frequenciesノード が追加されました。指定した時刻の音声を周波数解析して、その結果を数値として返すノードです。

このノードを使うことで、読み込んだ音声を利用してアニメーションやシミュレーションを制御できます。

指定した時間の音声から、以下の情報を取得できます。

  • 音声全体の振幅(Amplitude)を1つの値として取得
  • 特定の周波数範囲をサンプリング(LowとHighで設定)

周波数範囲を取得することで、サウンドスペクトラムアニメーションを作成できます。

また、このノードでは新しい Soundソケットタイプ が使用されてますが、インプットノードはまだありません。

音声(サウンドファイル)はGeometry Nodes内で直接読み込むことができます。

オリジナルのサウンドビジュアライザーを作ったり、いろんな楽器やオブジェクトが音楽と連動するようなアニメーションも簡単に作れるようになっています。

音声の再生について
再生中に音声を確認したい場合は、Video Sequence Editorにも音声を追加する必要があります。その際、再生設定の Sync to Audio を有効にすると、音声とアニメーションの同期がずれるのを防ぐことができます。

スポンサーリンク

Emptyにジオメトリノードが使える

そのままですが、Emptyオブジェクトにもジオメトリノードを使用できるようになりました。

特にジオメトリが必要ない場合に便利です。

また、Collection Instance(コレクションインスタンス)にもジオメトリノードが使用できるようになっています。

インスタンス全体にノードの効果がかかります。

スポンサーリンク

Merging Points(ポイントの結合)

Blender 5.2では、これまでMerge by Distanceノードが行っていたポイントの結合処理を、より細かく制御できるようになりました。

より基本的なノードの組み合わせで構築できるようになり、「どのポイント同士を結合するか」を柔軟に指定できるようになっています。

そのため、新たに次の3つのノードが追加されました。

Merge Points

Merge Pointsノードは、同じGroup IDを持つポイントまたは頂点を1つに結合します。

どのポイントを結合するかは、入力したGroup IDによって決まります。

カーブは使えません

Cluster by Distance

Cluster by Distanceノードは、一定距離以内にあるポイントをグループ化し、それぞれにGroup IDを生成します。

Cluster by Connected

Cluster by Connectedノードは、接続されているメッシュ要素ごとにGroup IDを生成します。

メッシュ専用

Position入力は接続された頂点同士の距離を測るときに使う位置として加工した値などを入れられるようです。

これまでのMerge by Distanceノードでは、ポイントのグループ化から結合までを1つのノードで行っていました。

Blender 5.2では、

  1. Cluster系ノードでグループ(Group ID)を作成する
  2. Merge Pointsノードで同じGroup IDのポイントを結合する

というように処理が分割され、ポイントを結合する条件をより柔軟に制御できるようになりました。

スポンサーリンク

Attribute系ノード

Capture Attributeノードに「Selection」入力を追加

Capture AttributeノードにSelection(選択)入力が追加されました。

これにより、属性を記録する対象を一部の要素だけに限定できます。属性が必要な要素だけを処理するため、不要な計算を減らし、処理効率を向上させることができます。

※選択されなかった要素には、通常は0(デフォルト値)が設定されます。

Get Attribute Namesノードを追加

新しくGet Attribute Namesノードが追加されました。

このノードは、ジオメトリに存在する属性名をリストとして取得します。

また、取得する属性は

  • ドメイン(頂点・エッジ・面など)
  • データ型(Float、Vector、Colorなど)

で絞り込むこともできます。

Rename Attributeノードを追加

新しくRename Attributeノードが追加されました。

  • 1つの属性名を変更する
  • 特定のプレフィックス(接頭辞)が付いた属性をまとめてリネームする

といった操作を簡単に行えます。

例えば、

old_color
old_weight
old_normal

のような属性を、

new_color
new_weight
new_normal

へ一括で変更できます。

プレフィックスとは、属性名の先頭に付いている共通の文字列のことです。例えば old-old_ をプレフィックスに指定すると、それで始まるすべての属性名をまとめてリネームできます。

Transfer Attributesノードを追加(復活ではない)

新しくTransfer Attributesノードが追加されました。(※旧バージョンにあった同名ノードとは機能が違います。)

このノードは、複数の属性を一度に別のジオメトリへコピーできます。

属性名を指定するときはリスト型なので、Get Attribute Namesノードを使って絞り込んだりすると便利です。

Exclude Namesにチェックを入れると指定した属性名以外の属性を転送します。

デフォルトではインデックス(要素番号)を基準に対応付けて転送しますが、各ドメインに独自のID属性を指定して、それを基準に対応付けることもできます。

これにより、インデックスが一致しないジオメトリ間でも、対応する要素同士で属性を正しく受け渡せます。

Blender 2.x~3.xくらいまでにもほぼ同名のTransfer Attributeノードが存在しましたが、一度廃止されています。今回追加されたTransfer Attributesノードは、新しい設計で生まれ変わった別のノードです。旧バージョンのチュートリアルで使われるものとは機能が異なるため注意してください。

近い場所の属性を取得したい場合は、従来どおりSample Nearestなどのサンプリング系ノードを使用します。

4次元ベクトル属性に対応

属性データとして4次元のFloatベクトル(Vector4)を保存できるようになりました。

※4D Float Vector属性の保存には対応しましたが、現時点ではGeometry Nodesから4Dベクターを作成・編集・演算することはできません。実際に扱えるベクトルは従来どおり3Dベクターのみです。

スポンサーリンク

Curve系ノード

新しくSet NURBS OrderSet NURBS Weightノードが追加されました。これらのノードを使うことで、NURBSカーブの形状を決定する組み込み属性(OrderWeight)を、Geometry Nodesから簡単に設定できるようになりました。

Order(オーダー)

カーブ上の各点を計算するときに参照する制御点の数です。値を大きくするとより多くの制御点が影響するため曲線は滑らかになり、値を小さくすると制御点に沿った形状になりやすくなります。

  • 値大きい…滑らか
  • 値小さい…元のポイントの形

Weight(ウェイト)

各制御点がカーブを引っ張る強さを表します。値を大きくするとカーブはその制御点に近づき、値を小さくすると影響が弱くなります。標準値は1.0で、0以上の値を設定できます。

スポンサーリンク

Strings(文字列)系ノード

文字列フィールドに対応

Geometry Nodesで文字列フィールド(String Field)を扱えるようになりました。

※ただし、文字列属性(String Attribute)にはまだ対応していません。そのため、ノード内で文字列を処理することはできます(リスト作成などはできます)が、文字列を属性としてジオメトリに保存することは現時点ではできません。

Find in Stringノードを強化

Find in Stringノードに、文字列の末尾から最初に一致する文字列を検索する機能が追加されました。

これにより、最後に現れる区切り文字や拡張子などを探しやすくなります。

Reverse Stringノードを追加

新しくReverse Stringノードが追加されました。

文字列の並び順を反転します。

例:

"Blender"

"rednelB"

Trim Stringノードを追加

新しくTrim Stringノードが追加されました。

文字列の先頭または末尾から、指定した文字を取り除くことができます。

例えば、

"___Hello___"

から _ を削除すると、

"Hello"

になります。

whitespace…半角スペースを一緒に削除するかしないかを決めることができます。

"x and x"

からxを削除すると、

whitespaceにチェックあり

"and"

whitespaceにチェックなし

" and "

になります。

Set String Caseノードを追加

新しくSet String Caseノードが追加されました。

文字列を大文字または小文字へ変換できます。

例:

"Blender"

Case…Uppercase

"BLENDER"

Case…Lowercase

"blender"

Split Stringノードを追加

新しくSplit Stringノードが追加されました。

指定した区切り文字(Separator)で文字列を分割し、文字列のリストとして出力します。

例えば、

"Apple,Banana,Orange"

を「 , 」で分割すると、

["Apple", "Banana", "Orange"]

というリストが得られます。

Integer⇔String変換にBase入力を追加

Value to StringノードやString to Valueノードなどの整数と文字列を相互変換するノードに、Base(基数)入力が追加されました。

これにより、2進数、8進数、10進数、16進数など、任意の基数で整数と文字列を変換できます。

スポンサーリンク

Group Input新機能

グループノードを作るときなどに、Group Inputにデフォルトの値をセットできるものが増えました。

  • Scene Frame:現在のシーンフレームをノードグループのデフォルト入力として利用できるようになりました。(フレームによって進む値をデフォルトで設定できる)
  • Self Object:オブジェクト入力のデフォルト値として、自身のオブジェクト(Self Object)を指定できるようになりました。これにより、通常は自身のオブジェクトを使用し、必要な場合だけ別のオブジェクトを指定するようなノードグループを作りやすくなります。コライダーオブジェクトなど、自身を基準に処理する用途を想定した機能らしいです。(リリースノートより)
スポンサーリンク

Bundled Assets

このBundled Assetsは、Geometry Nodes本体に追加された新ノードではなく、Blenderに付属するノードグループアセット(Node Assets)の追加です。

新規のノードというより、ノードを使って作った便利なノードグループが新たに収録されたという変更になります。ダウンロードの必要もなく普通に追加されたノードとして検索・使用できます。

座標変換・投影ノードを追加

3D空間と画面座標(スクリーン座標)を相互に変換するための新しいノードが追加されました。

  • 3D to Screen Space
    • ワールド座標の3D位置を、カメラを基準とした正規化スクリーン座標(0~1)へ変換します。
  • Screen to 3D Space
    • スクリーン座標と奥行き(Depth)から、3D空間上の位置を計算します。
    • 3D to Screen Spaceの逆変換にあたるノードです。
  • Transform and Project
    • 3D to Screen Spaceの上位版です。
    • カメラオブジェクトではなく、TransformProjectionを入力として受け取り、スクリーン座標へ変換します。
  • Project with Depth
    • Screen to 3D Spaceの上位版です。
    • スクリーン座標と奥行きから3D座標を復元します。
    • 例えば、Viewport Transformノードと組み合わせることで、ビューポート座標と3D空間を相互に変換できます。

Principal Component Analysis(主成分分析)ノードを追加

新しくPrincipal Component Analysis(PCA:主成分分析)ノードが追加されました。(Principal Componentsノードを中で使用しています。)

Geometry Principal Componentsノード

Geometry Principal Componentsノードは、ジオメトリ上の点に対して主成分分析(PCA:Principal Component Analysis)を行うノードです。

主成分分析では、点群の中心どの方向に最も広がっているか、その向き(回転)を求めることができます。

また、求められた3本の軸は、

  1. 最も広がっている方向
  2. 次に広がっている方向
  3. 最も広がりが小さい方向

の順に並びます。(計算結果がx,y,z軸そのものを意味するものではないものもあります)

  • Group Center(グループ中心)
    解析対象となった点群の中心位置です。
  • Rotation(回転)
    主成分分析で求めた軸に合わせた回転です。
  • Principal Components(主成分)
    各軸方向への広がり(分散)を表します。
  • Principal Axes(主軸)
    主成分分析で求めた3本の軸です。

このノードは例えば、

  • メッシュや点群の向きを自動で求める
  • オブジェクトを点群の向きに合わせる
  • ジオメトリからローカル座標系を作る
  • ジオメトリの形状の広がりを解析する

といった用途に利用できます。

スポンサーリンク

その他追加ノード

その他追加されたノード

Instance Referenceノード

Instance Referenceノードが追加されました。

このノードは、各インスタンスがどのジオメトリを参照しているかを保持している内部属性にアクセスします。

インスタンスが参照している元のジオメトリ情報を取得するために使用できます。

Get Geometry Componentノード

Get Geometry Componentノードは、複数の要素を含むジオメトリから、特定のコンポーネントだけを取り出すためのノードです。

Blenderのジオメトリは、Mesh(メッシュ)、Curve(カーブ)、Instance(インスタンス)など複数のコンポーネントを持つことがあります。このノードを使うことで、その中から必要なコンポーネントだけを取り出して編集できます。

※以前はSeparate Componentsノードでコンポーネントを取り出していました。

スポンサーリンク

その他の変更点

Blender 5.2のGeometry Nodesでは、既存機能の改善も行われています。

以下はリリースノートを参照しています。

Closuresの再帰呼び出し対応

Closuresが再帰的に呼び出せるようになりました。

また、Geometry Nodesで使用できる再帰呼び出しの深さを制限する設定が、ユーザー設定に追加されました。

Node Toolsの改善

Node Toolsが改善されました。

  • Node Toolsの入力値が、次回のオペレーター実行時にも保持されるようになりました。
  • PythonからNode Toolsの入力値を設定できるようになりました。

パフォーマンスの改善

Geometry Nodesの処理性能が改善されました。

主な変更点:

  • 内部フィールドが重複して評価されないよう最適化されました。
    • 例えば、Sample UV Surfaceノードを複数回使用するような場合に、フィールド評価が高速化する可能性があります。
  • 一部のサンプリングノードでは、依存するフィールドが単純なドメインの場合、Face Cornerドメインへの変換を避けられるようになり、処理が高速化されました。

Viewerノードの改善

Viewerノードでデータブロック名を表示できるようになりました。

Data Blockの比較

ObjectやCollectionなどのData Blockソケットで、以下の比較が可能になりました。

  • 他のData Blockとの比較
  • Noneとの比較

Bone Infoノードの改善

Bone Infoノードに Exists出力 が追加されました。

指定したボーンが存在するかどうかを取得できます。

Python APIの変更

Geometry NodesモディファイアのプロパティにアクセスするPython APIが変更されました。

PythonでGeometry Nodesを操作している場合は、Blender 5.2向けの対応が必要になる場合があります。

スポンサーリンク

まとめ

今回も便利なノードがたくさん追加されました。

個人的には待望のMesh Bevelや、音楽に合わせた演出が作れそうなSample Sound Frequenciesが特に気になっています。

Geometry Bundleもまだ発展途上ですが、今後さらに機能が充実して、オブジェクト間のデータ受け渡しやドライバーのような用途にも活用できるようになることを期待しています。

スポンサーリンク

関連記事

ジオメトリノード記事をまとめたガイド記事です

コメント