【Blender 5.1】Volume系ノード解説:ジオメトリノード

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

Blenderのジオメトリノードで使う、Volume系のノードについてまとめます。

ボリュームと聞くと、煙や雲を作るイメージが強いですが、ジオメトリノードではそれだけではありません。
例えば、ポイントを分布させてオブジェクトを敷き詰めたり、形状を自然に融合させるときにも活用できます。

この記事では、ボリュームを使ってできることや操作の基本を解説し、主に使うボリュームノードも紹介します。

正直なところ、ボリュームは重くて扱いにくく、これまで避けていました。
しかし Blender 5.0 / 5.1 のアップデートで、ボリューム内部のデータである Grid が操作できるようになり、扱いやすさや自由度が向上しました。

まずは Grid を使わずにボリュームを扱う方法を整理し、基本的な操作や考え方をまとめます。
Grid を活用したより高度な操作については、以下の記事で詳しく解説しています。

スポンサーリンク

そもそもVolume(ボリューム)とは何か?

Volume(ボリューム)って聞くと、大体の人は

  • 煙、雲、霧、炎、などの気体
  • 水などの液体
  • メッシュの中身

を表現するときに使うもの、みたいに思うと思うんですが、まぁ大体その通りです。
結局、スザンヌとかのメッシュは表面しかないですよね。中身はスカスカのジオメトリです。
気体や液体とか、中身は表現できません。

それに対してボリュームは、空間をグリッド状に分割し、その各位置に値(密度など)を持たせたデータ構造です。
メッシュが表面(ポリゴン)で形を表現するジオメトリなのに対して、ボリュームは内部まで含めた密度の分布を扱えるジオメトリです。

Volume(ボリューム)のデータ構造

これまでもボリュームは扱えましたが、その内部データを直接編集する手段はほとんどありませんでした。

メッシュであれば、頂点や面を移動・削除するなどして直接形状を編集できますが、ボリュームの場合は
メッシュ → ボリュームに変換する
といった使い方が中心で、内部の値そのものを操作することは困難でした。
そのため、一度メッシュを編集してからボリュームに変換する、という回りくどい手順が必要でした。

しかし、Blender5.0から、ボリュームも中のデータそのものを編集できるようになりました。
そして、ボリュームのデータ構造は今までメッシュで扱っていたものとは全く異なるものになっています。

  • メッシュ…頂点・辺・面の接続関係(トポロジー)でできたジオメトリ
  • ボリューム…空間をグリッドで分割し、その各ボクセル(または格子点)に密度や速度などの値が格納されたジオメトリ
項目メッシュボリューム
データの場所表面空間(グリッド上)
データの単位頂点・辺・面ボクセル
構造接続関係(トポロジー)分布構造(Grid)
※Gridで言われるトポロジーとは「データが存在している場所とその広がり方」でマスクみたいに言われることもある

導入文でも言いましたが、グリッドに関して簡単に触れていますが、グリッドデータを使った本格的な操作は別記事で書く予定です。
この記事では、基本的にはグリッドを使わずにボリュームを操作する方法をメインで書いていきます。ただ、ボクセルサイズなどのパラメータがあるので、そのときにボクセルとは何かイメージしやすいように解説してみました。

スポンサーリンク

ボリュームの作成の方法

グリッドデータを直接扱わずにボリュームを作成する方法は、主に以下の3つがあります。

  • Volume Cubeノードである範囲内に密度を設定して作成する
  • Mesh to Volumeノードで、あるメッシュの中身のボリュームを作成する
  • Points to Volumeノードで、ポイント位置にボクセルを配置してボリュームを作成する
スポンサーリンク

ボリュームの使いみち

で、結局ボリュームで何を作れるのか、何が出来るのかなんですが、大体以下のようなことができます。(他にもいろいろあるとは思いますが思いつくのが今こんな感じ)

気体を作る

Volume CubeにDensityの値を入力できるソケットがあるので、そこにノイズとか、いろんなテクスチャを入力することで、
靄・フォグ・煙・雲
のようなボリュームを作成することができます。

形を作る

さらに、Volume to Meshノードをつないで、複雑な形態をメッシュ化することができます。

例えばボロノイテクスチャをつなぐと、穴あきチーズが作れます。内部も、穴が空いてるとか、構造がきちんとある物体を作ることができます。

気体を作ったあとにメッシュ化することで、液体のような形も作れると思います。

形を融合する

メッシュをjoin Geometryで統合しても、境目がくっきりして、ただ重なったようになります。

そんなときに、Mesh to VolumeVolume to Meshを挟むと、境目が融合したような自然な見た目にすることができます。

※形の融合に関しては、今後はGridなどを使った方が効率がいいかもしれません。

ボリューム内をオブジェクトで充填する

Distribute Points in Volumeノードである体積内にポイントを分布させて、インスタンスで充填することもできます。詳細は下記のDistribute Points in Volumeノードセクションで書きます

注意点

ボリュームは、空間にたくさんのボクセルがあり、そこに数値を格納していくので、
解像度をあげて細かくきれいに表示しようと思うとかなり処理が重くなります。

普通にPCが処理落ちしそうになるので、Timingにチェックをして、処理にどのくらい時間がかかってるか確認しつつやると少しは安全に作業できると思います。

スポンサーリンク

ボリューム系ノード(Grid使わない)

ボリュームを作成するときによく使うノードを簡単に紹介しておきます。

  • Volume Cubeノード
  • Volume to Meshノード
  • Mesh to Volumeノード
  • Distribute Points in Volumeノード
  • Points to Volumeノード
スポンサーリンク

Volume Cube ノード

3D空間にVolumeを生成するノード。ボリュームのプリミティブ(基本の形)みたいなもの。
指定した範囲(Min〜Max)をグリッドで区切って各ボクセルにDensityの値を計算して埋める

ノイズ、距離、グラデーション
などを使って「空間に値を定義する」感じです。

パラメータ

Density(密度)

各ボクセルに入る値
大きい → 密度が高い(濃い)
小さい → 密度が低い(薄い)

  • 例:
    • Noise → 雲、煙、フォグ
    • Gradient → フォグ
    • Distance → 球状

Min / Max

Volumeの範囲(バウンディングボックス)
Min:最小座標(左下奥)
Max:最大座標(右上手前)
この間の空間だけが計算対象になります。

Resolution X / Y / Z

グリッドの細かさ(分割数)
値が大きい → 高精細(重い)
値が小さい → 粗い(軽い)

グリッド点の数であって、ボクセル数ではない
Resolution (2, 2, 2) → ボクセルは1個
(※スプレッドシートでは8個と出る。)
指数的に重くなるので注意

Background

範囲の外側における値で、密度がこの背景値と等しいボクセルは削除されます。

また、Volume to Mesh のように しきい値(Threshold)で内外を判定する処理 において重要なパラメータで、
Background>Thresholdになると、Threshold以下の密度の部分がメッシュ化したように見えますが、面が反転します。

詳しくは以下の記事に書いています。

スポンサーリンク

Volume to Meshノード

ボリュームの「表面」からメッシュを生成するノード。
どこを表面とみなすかは しきい値(Threshold) によって決まる。
→ しきい値より大きい値のボクセルは「内側」と判定され、
その内側と外側の境界にメッシュが作られる。

パラメータ

Resolution Mode(解像度モード)

最終的なメッシュの細かさ(解像度)の決め方。

Grid(グリッド)
元のボリュームグリッドの解像度に依存

Voxel Amount(ボクセル量)
最終メッシュの「だいたいの解像度」を指定
ボクセルサイズはボリューム全体に合わせて自動調整される

Voxel Size(ボクセルサイズ)
ボクセルの大きさを固定で指定
ボリュームのサイズが変わっても解像度は変わらない

※この設定は入力内の各グリッドごとに個別に適用される(複数のグリッドがあった場合)

Threshold(しきい値)

この値より大きいボクセル → 内側
小さい → 外側
内外の境界にメッシュが生成される
アイソバリュー(iso value)」とも呼ばれる

詳しくは以下の記事に書いています。

Adaptivity(適応性)

不要な細かさを削減してポリゴン数を減らす
ディテールが必要ない部分を簡略化する
デシメート(ポリゴン削減)に近い処理

スポンサーリンク

Mesh to Volumeノード

メッシュの形状をもとに、フォグ(煙のような)ボリュームを生成するノード。
生成されるボリュームは “density”(密度)という名前のグリッド を持つ。

パラメータ

Mesh(メッシュ)
通常のメッシュを入力。

Density(密度)
メッシュ内部のボクセルに入る値。
→ 値が高いほど“濃いボリューム”になる。

Resolution Mode(解像度モード)
ボクセルサイズ(解像度)の決め方。

  • Amount(量)
    対角線方向にどれくらいボクセルを並べるか(ざっくりした数)で指定
  • Size(サイズ)
    ボクセル1個の大きさで指定
    ※少し小さくするだけで処理が重くなるので注意

Voxel Amount(ボクセル量)
→ Amountモード時の具体的な数値指定

Voxel Size(ボクセルサイズ)
→ Sizeモード時のボクセルの一辺の長さ


Interior Band Width(内部バンド幅)
メッシュ内部におけるグラデーション(密度変化)の幅。大きいと密度が減衰する範囲が大きくなります。

※4.0より前はボリュームで埋めるんじゃなくて、表面に膜のようにボリュームを作成することが可能だったので、そのときにInterior Band Widthなどで幅を設定していましたが、今はできなくなっています…。

スポンサーリンク

Distribute Points in Volume ノード

Volumeの中にポイントをばらまくノード
ただし空間全体ではなく Volume Gridの値を参照して配置する

パラメータ

Mode

  • Random(ランダム)
    • ランダムにポイントを配置
    • ただし完全ランダムではなくDensity × ボクセル値 に応じて数が変わる
    • 密度が高いところ → ポイント多い
    • 密度が低いところ → ポイント少ない
    • 特徴
      • 自然な分布になる
      • ただし変形すると結果が不安定

Density
単位体積あたりのポイント数
実際の数はDensity × ボクセル値

Seed
ランダムのパターン変更

  • Grid(グリッド)
    • 規則的な格子状にポイント配置
    • そのうえで各ボクセルの値がThreshold以上ならポイントを置く
    • 特徴
      • 安定している
      • 規則的な分布

Spacing
ポイントの間隔
小さいほど密になる

Threshold
この値以上ならポイント生成

画像下にあるように、ポイントにインスタンスを配置するとブロックでしきつめなどができます。

スポンサーリンク

Points to Volume ノード

ポイント → Volumeに変換する
より具体的には各ポイントの周りに密度の球を作る
生成されるGridは“density” という名前のVolume Grid

パラメータ

Density

ボクセルの密度値
見た目の濃さに影響

Resolution Mode

ボクセルの細かさを決める

Amount(ボクセル数)
対角線上のボクセル数
大きいほど高解像度

Size(ボクセルサイズ)
1ボクセルの大きさ
小さいほど高精細(=激重になるので注意)

Radius
各ポイントの影響範囲
大きい → ふわっと広がる
小さい → 点に近い

ノード同士の関係

この2つはセットで使うことが多いです:
Volume → Distribute Points → Points → Points to Volume → Volume

Distribute Points = Volume → 離散化(サンプリング)
Points to Volume = 点 → 連続的な密度へ復元

Volumeを一度「点」にして再びVolumeに戻す

スポンサーリンク

まとめ

ボリュームを扱う際、必ずしも Grid のデータを直接操作する必要はありません。
ボリューム系ノードを活用すれば、簡単にボリュームを作成・表現することが可能です。

ただし、データを直接編集できないため、段階的なアプローチが必要です。
まずはメッシュやボリューム内にポイントを分布させ、その上でボリューム化する、といった手順を踏むことで、扱いやすいボリュームが作れます。

視覚的に確認しやすく、試しやすい方法として、ちょっとしたボリュームを作成したい場合はこの手順がおすすめです。

なお、Grid を使ったボリュームの作成や編集については、以下の関連記事で解説しています。

スポンサーリンク

関連記事

Gridの基礎的な使い方

コメント