blender 4.5 オブジェクトを散りばめる 5 つの方法
オブジェクトの表面などに、別オブジェクトを散布、散りばめたい場合がよくあります。ここでは、用途に応じた 5 つの方法を紹介します。
環境 Blender 4.5.0 , Mac Mini M1 OS 14.4
1.インスタンス化
オブジェクト表面に、別オブジェクトを散布する方法としてはもっともシンプルな方法。
たとえば、以下のようなオブジェクト(名前を Stick とした)を追加する

同じ位置に、ここでは、ICO 球を追加

Shift キーを押しながら、Stick、ICO 球の順に選択
オブジェクト > ペアレント > オブジェクト を実行( ⌘(Ctrl) + P )

ICO 球を選択し、オブジェクトプロパティ > インスタンス化 > 面 を選択

ICO 球の面上に、Stick オブジェクトが生成される。「頂点」上にも生成できるが、ここでは拡大縮小のオプションもある「面」を選択。
「面のサイズで拡大縮小」を ON にすると、「係数」の値で stick オブジェクトのサイズを拡大、縮小できる。


なお、「インスタンサーを表示」では、インスタンサー(ここでは ICO 球)を、ビューポート、あるいは、レンダーの際、非表示にできる。

インスタンスとは
以降のほぼすべての操作で「インスタンス」という用語が頻出するが、インスタンスとはオリジナルのコピーオブジェクトのような存在で、同じ形状のオブジェクトを大量に生成する際に用いられる。インスタンスは形状データを持たないので、オリジナルを大量に複製するより、処理負担が軽く、データ量の削減になるためだ。
2. ヘアーパーティクルシステム
通常はキャラクター等のヘアーを生成するシステムだが、ヘアーの代わりに別オブジェクトを生成させることもできる。
たとえば、以下のようなオブジェクト(名前を Grass とした)を追加する

平面オブジェクトを追加

平面オブジェクトのパーティクルプロパティ > +ボタンで、パーティクルシステムを追加、タイプは「ヘアー」を選択

レンダー > レンダリング方法を「オブジェクト」に変更
インスタンスオブジェクトに「Grass」オブジェクトを指定
「オブジェクトの回転」にチェックを入れる

Grass オブジェクトの回転軸が合っていないので、
オブジェクトモードで、Grass オブジェクトを、ここでは Y 軸に 90°回転

この後、Grass オブジェクトは非表示にしてもかまわない。
スケールのランダム化

回転のランダム化

子パーティクル

「表示数」(ビューポートでの表示数)、および、「レンダリング時の表示」は、ここでは、10 とした。なお、デフォルトでは子パーティクルの長さは親と同じになるが、子パーティクル > 長さ 、しきい値の値の変更で、長さが同じではない子パーティクルを混在できる。
頂点グループ
頂点グループのウェイトによって発生の分布を制御できる。
パーティクルシステムをいったん非表示とし、平面を 20 程に細分化

ウェイトペイントモードで、ウェイトペイントを行う

パーティクルシステムを表示させ、頂点グループを指定


3. パーティクルシステム
パーティクルを発生させ、オブジェクト表面に付着させるパターン。
たとえば、平面オブジェクト、および、トーラスオブジェクトを追加し、どちらも、「コリジョン」を適用する。

付着度 10 摩擦 1.0 どちらも最大にし、パーティクルが滑り落ちるのを防ぐ。
さらに、平面オブジェクト、および、右の、円筒オブジェクト(名前を Chip とした)を追加。

平面オブジェクトを選択し、パーティクルプロパティ、+ ボタンをクリックし、パーティクルシステムを適用

開始、終了フレームを 1 にすることで、200 個のパーティクルが、シミュレーションを開始時に同時に発生する。
「回転」> ランダム化を 1.0 に変更
レンダー > レンダリング方法は「オブジェクト」 スケールのランダム化 を 0.5 程に変更
オブジェクト > インスタンスオブジェクト には「Chip」オブジェクトを指定

シミュレーションを開始し、適当なタイミングで停止する

Chip オブジェクトが上から降り積もり、トーラスオブジェクトの表面に付着する。
なお、インスタンスをオブジェクト化するには、付着したインスタンスオブジェクトを選択し、オブジェクト > 適用 > インスタンスを実体化(Make Instances Real)を実行する。大量の(上では 200 個の)オブジェクトが生成されるので、適宜、コレクションに収めたり、ひとつのオブジェクトに統合する、などの処理をしたほうがよいだろう。
4. リジッドボディ
パーティクルシステムに似ているが、より精密な衝突判定をしたい場合、リジッドボディを利用する。
下のようなオブジェクトを追加
オブジェクト > 適用 > 回転・スケール を実行

物理演算プロパティ > リジッドボディ を選択
コリジョン > シェイプ は「ボックス」とする

衝突判定の形状による精度は、コリジョン > シェイプ > 凹包、あるいは、メッシュが高い。ただし、上のようなややポリゴンの多いオブジェクトでは、処理に負担がかかり、誤動作もあるので、精度はやや低くなるが、ボックス、球状、カプセル、など形状に合わせたシェイプを設定する。
大きめの平面オブジェクトを追加
物理演算プロパティ > リジッドボディ を選択
タイプを「パッシブ」とする

立方体オブジェクトを、Option + D で複製する

全選択し、オブジェクト > トランスフォーム > ランダムトランスフォーム を実行

Option + D で複製することにより、複製オブジェクトは「インスタンス」となる。データ量がコンパクトになり、また、後の形状の変更がすべての複製オブジェクトに適用される。
シミュレーションを開始する

なお、リジッドボディの値の変更をすべてのオブジェクトに反映させるには、値を変更したオブジェクト(上では右上)を、Shift キーを押しながら最後に選択(オレンジ枠)し、オブジェクト > リジッドボディ > アクティブからコピー(Copy from Active)を実行する。

また、上の結果を固定し、シミュレーションの適用外とするには、
散布オブジェクトをすべて選択し、オブジェクト > リジッドボディ > トランスフォームを適用(Apply Transformation)を実行
シーンプロパティ > リジッドボディワールドを削除 をクリック

積み木のようなオブジェクトを大量に散布する場合に最適だろう。なお、同様の方法で、器に詰める、などの操作は、Rigid Body リジットボディで詰めもの も参照してください。
4. リジッドボディ - 2
リジッドボディにフォースフィールドを併用するパターン。
下のように、デフォルトの UV 球と、吸着させる、ねじオブジェクト群を追加。
具体的な手順は、上のリジッドボディと同じ。UV 球には、リジッドボディ > パッシブ を、ねじオブジェクトにはすべて、同 > アクティブ を適用する


追加 > フォースフィールド > 力 を追加

シミュレーションを開始


中心に向かって吸着するアニメーションなどに。このパターンについては、いろいろフォースフィールド 記事も参照してください。
5. 面にポイント配置
Distribute Points on Faces
ジオメトリノードによる散布。1. インスタンス化に似ているが、ノードによる操作の幅が格段に広い。
左の 円オブジェクト(名前を Disk とした)と、デフォルトの UV 球オブジェクトを追加
UV 球を選択し、Geometry Nodes ワークスペースに変更、「新規」をクリック

下のノードを組む

面にポイント配置 に「ポアソンディスク」を指定することで、最小距離の範囲内には、散布オブジェクトに重なりができない。

スケールのランダム化


回転のランダム化

ベクトル演算(Vector Math)ノードで、ランダムな値(ベクトル)を加えた。

もちろん、他のノードによる幅広い操作も加えることができるが、単純な散布を行う場合も、比較的手順も簡単で便利だ。なお、関連のジオメトリノードについては、インスタンス - はじめての Geometry Nodes も参照してください。
まとめ
どの方法も、オブジェクトを散りばめたり、表面に散布するのに便利な機能ですが、適切な設定値を忘れやすいので、まとめてみました。参考になれば幸いです。
