サイトアイコン ほろほろりドットコム

[Blender 2.8] パーティクルのパスに沿ってメッシュを変形 [パーティクルインスタンスモディファイアー]

Blender パーティクルインスタンス シェーダーエディター マテリアル 3DCG

[Blender 2.8] ヘアーパーティクルを基に、オブジェクトの変形をするのに便利な、パーティクルインスタンスモディファイアーの機能と使い方のご紹介

今回の記事は、Blenderの『パーティクルインスタンスモディファイアー』についてです。

公式Blenderマニュアルには、このモディファイアーの用途として、「他のオブジェクトの『パーティクルシステム』のパーティクルの位置に、メッシュオブジェクトを「インスタンス」として複製するのに使用します」とあるのですが、私の個人的な所感としましては、「ヘアーカーブに沿って変形させた細長いメッシュオブジェクトを量産」という用途になら、使えるかな…?と思いました。

ちなみに、『パーティクルシステム』について、詳しくは下記記事をご覧ください。

※2020年7月23日 加筆修正を行いました。

目次

まず最初に

『パーティクルインスタンスモディファイアー』を追加したいオブジェクトを選択しておき、[プロパティエディタ]>[モディファイアー]>[モディファイアーを追加]で表示される一覧から、[パーティクルインスタンス]という項目を選びます。

追加されると↓のように表示されます。

memo: 『インスタンス』とは?

『インスタンス』と聞いたら、プログラミングの経験多少ある方なら、恐らくご存じかと思うのですが、『クラス』というものを雛形として発生させる複製物(厳密に言えば違うのですが)の事です。「実体」と訳される事もあるようです。

インスタンス 【 instance 】 

特に、オブジェクト指向プログラミングで、クラス定義に基いてメモリ上にデータと手続きの集合として実体化されたオブジェクトのことをインスタンスという。クラスからインスタンスを生成することを「インスタンス化」(instantiation)という。

引用元: インスタンスとは – IT用語辞典 e-Words

基本的な使い方

冒頭でご説明しました通り、このモディファイアーは『パーティクルシステム』を使用する事が前提となっておりますので、まずは『パーティクルシステム』を設定した他のオブジェクトを最低でも1つは用意する必要があります。

  1. 『パーティクルシステム』を設定したオブジェクトを用意します。
  1. 次に、『パーティクルインスタンスモディファイアー』を設定するオブジェクトを用意し、[モディファイアーを追加]>[パーティクルインスタンス]を追加します。
  1. [パーティクルインスタンス]>[オブジェクト]に『パーティクルシステム』を設定したオブジェクトを指定します。
  1. アニメーション再生時に分かりやすいように、[サイズ]にチェックを入れて有効化しておきます。
  1. アニメーション再生したら、『パーティクルシステム』と連動しているのが分かるかと思います。
パーティクルインスタンス(左側)と、パーティクルシステム(右側)

[パーティクルインスタンス]の詳細設定項目一覧

[オブジェクト(Object)]

パーティクルシステムが関連付けられているターゲットオブジェクト。

[パーティクルシステム(Particle System)]

このモディファイアーを適用する、ターゲットオブジェクトのパーティクルシステムを指定します。

[生成元(Create From)]

[標準(Regular)]

この項目を有効にすると、通常のパーティクルを使用して、インスタンスを生成します。

[子パーティクル(Children)]

この項目を有効にすると、『子パーティクル』を使用して、インスタンスを生成します。

[子パーティクル]のチェックの有無で比較

ちなみに、『子パーティクル』について、詳しくは下記記事をご覧ください。

[サイズ(Size)]

この項目を有効にすると、パーティクルサイズの属性によって、メッシュのインスタンス化された複製をスケーリング出来ます。無効にすると、全ての複製体が元のオブジェクトのサイズと同じサイズで表示されます。

[サイズ]のチェックの有無で比較

パーティクルのサイズは、パーティクルシステムの[レンダー]パネルの[拡大縮小]と、(『子パーティクル』を使用している場合は)[子パーティクル]パネルの[サイズ]で調整できます。

『パーティクルシステム』の[レンダー]パネルについては下記記事をご覧ください。

[パーティクルの表示タイミング(Show Particles When)]

[生存(Alive)]

この項目を有効にすると、発生して消滅していないパーティクルを使用したインスタンスを表示します。

[発生前(Unborn)]

この項目を有効にすると、発生前のパーティクルを使用したインスタンスを表示します。

[消滅(Dead)]

この項目を有効にすると、消滅したパーティクルを使用したインスタンスを表示します。

[生存]
[発生前]
[消滅]

追加オプション

[スペース(Space)]

パーティクルシステムが割り当てられているターゲットオブジェクトのワールド空間、またはローカル空間を使用します。

それぞれに設定した時に、『パーティクルシステム』を設定した方のオブジェクトを回転させたらどうなるかを見てみます。

[スペース: ワールド]
[スペース: ローカル]

[量(Amount)]

使用するパーティクルの割合を設定します。パーティクルをランダムに省略して、インスタンスの数を調整することができます。

[オフセット(Offset)]

インスタンス化に使用されるパーティクルの範囲の相対的なオフセット。

同じパーティクルシステムを複数のモディファイアーで使用されている場合に、使用されるパーティクルのオーバーラップを回避できます。

もし、オーバーラップを完全に回避したい場合は、オフセット値を最低でも[量]の値と同じにしなければなりません。

[量]の調節

[X]、[Y]、[Z]

インスタンス化されたパーティクルからの回転を適用するために、オブジェクトのどの軸を「回転の中心軸」として使用するかを指定します。

オリジナルの方向
[X]選択時のインスタンスの方向
[Y]選択時のインスタンスの方向
[Z]選択時のインスタンスの方向

『パス』を使用する場合

[パスに沿って作成(Create Along Paths)]

デフォルトでは、インスタンスは現在のフレーム内のパーティクルの位置に応じて配置されますが、このオプションを有効にすると、現在のフレームに関係なく、パーティクルパスに沿った位置を選択できるようになり、オブジェクトの形状をパーティクルパスに沿って変形させます。

[パスに沿って作成]で変形させたメッシュオブジェクト(左側)と、元々のヘアータイプの『パーティクルシステム』(右側)

ちなみに、パーティクルパスは、パーティクルシステムの[レンダー]パネルで[レンダリング方法]を[パス]に設定することで、調整が出来るようになります。

[形を保持(Keep Shape)]

この項目を有効にすると、インスタンスが変形するのを防ぎ、[位置]の値に従ってパスに沿った配置をします。

[形を保持]

[位置(Position)]

インスタンスがパスの何パーセントを占めるか、または[形を保持]が有効になっている場合は、パス上に配置する位置を指定します。

[ランダム(Random)]

各インスタンスの[位置]の値にランダム性を追加します。

[位置]

[回転(Rotation)]

パスを中心として回転させる度合いを指定します。

[ランダム(Random)]

各インスタンスの[回転]の値にランダム性を追加します。

[回転]

カスタムデータレイヤー

これらの項目の入力フィールドを使用すると、頂点カラーレイヤーを選択できます。このレイヤーには、パーティクル情報に基づいて色が塗りつぶされます。これらの頂点カラーレイヤーは、『シェーダー』等で使用して、『マテリアル』にバラつきを追加できます。

[インデックスレイヤー(Index Layer)]

パーティクルインデックスに基づく値の頂点カラーレイヤー。

[値レイヤー(Value Layer)]

パーティクルごとのランダムな値の頂点カラーレイヤー。

この2つの項目の扱い方ですが、例えば、↓の画像のように、”index_layer”という頂点カラーを新しく作成しておきます。

次に、[インデックスレイヤー]に作成した”index_layer”を設定します。

準備が整ったら、[シェーダーエディター]で[属性]というノードに、”index_layer”と入力して、パーティクルインデクスに基づく値から生成される頂点カラーを読み込み、それを使ってマテリアルを作成してみます。ちなみに、ただ[属性]のカラーを使った場合は↓のような感じになります。

↓のように、バラつかせることが出来ました。

参考にさせて頂いたサイト・ページ一覧

モディファイアー関連の記事のご紹介

この記事の他にも、Blenderの様々なモディファイアーについて、機能や使い方を私自身も試しながらではありますが、ご紹介させていただいております。よろしければ、こちらも併せてご覧ください。

生成

Blenderに関する記事や作品をまとめたページ作りました!

Blender Note
モバイルバージョンを終了