見出し画像

工作としての blender - 散りばめる

3DCG のモデリングは、木工や粘土細工に似ているところがあります。そこで、モデリングをバーチャルな工作と捉え、第 6 回では、「ばらまく、散りばめる」操作のいくつかを紹介します。


環境 Blender 4.3.0 , Mac Mini M1 OS 14.4



Randomize Transform

  • オブジェクト > トランスフォーム > ランダムトランスフォーム

選択オブジェクトの位置、回転、スケールをランダムに変更する機能。

上の 25 個のオブジェクトを整列させ、全選択。
オブジェクト > トランスフォーム > ランダムトランスフォーム を実行
左下のプロパティ画面を開き、位置 X, Y を 6 m 以内でランダムに配置。
180°以内でZ軸にランダムに回転。
1.4倍以内で、スケールをランダム化(均一スケーリング)

手軽にオブジェクトを配置をバラけさせることができる。木々や草などを自然に配置させるときなどに便利。


Array - Curve

  • 配列、カーブモディファイア

カーブに沿って、オブジェクトを配置するパターン。

NURB カーブ を追加、編集モード E キーでカーブポイントを押し出し、上のカーブを作成
人物オブジェクトを、カーブの始点に追加。

念のため、人物オブジェクトには、オブジェクト > 適用 > 回転・スケール を実行しておく。

人物オブジェクトに配列モディファイアを適用する。

適合する種類「カーブに合わせる」 一定のオフセット
カーブには、最初に追加した「NurbsCurve」を指定

配列モディファイアに加え、カーブモディファイアを適用する。

 カーブオブジェクトには、同様に、「NurbsCurve」を指定

カーブに沿って散りばめたい、整列させたい場合などに便利。


Instancing

オブジェクトの面や、頂点上に、別オブジェクトを散りばめるパターン。

Faces(面の上に配置)

  •  平面、コーン(中央)の、2 オブジェクトを作成。

  • コーン、平面の順に Shift キーを押しながら選択し、⌘(Ctrl)+ P キー > オブジェクト を実行、平面を親としてペアレント化する。

 平面オブジェクトは、頂点をややランダムに配置した。
コーンオブジェクトの原点は底の中央。
  • 平面オブジェクトの、オブジェクトプロパティを表示、インスタンス化 > 「面」 を ON にする。

コーンオブジェクトが、平面オブジェクトの各面上に配置された。
平面オブジェクトに、サブディビジョンサーフェスモディファイア レベル 1 を適用

細分化によって面が増えるので、配置されるコーンオブジェクトの数も増える。

オブジェクトプロパティ、「面のサイズで拡大縮小」にチェック。係数は、ここでは、7.5 面の面積によってコーンオブジェクトのサイズも変わる。


Vertices(頂点上に配置)

同様の操作で、ICO 球を親、コーンを子としてペアレント化し、インスタンス化を適用した。

インスタンス化「頂点」をON。

親の、ICO 球の各「頂点」に、コーンが配置される。

頂点の法線に揃える をチェック。このケースでは揃わない
オブジェクトモードで、コーンオブジェクトをX 軸に - 90° 回転。
オブジェクト > 適用 > 回転 を実行。

※ 法線の向きと、インスタンス(上ではコーン)の回転軸が合っている必要があるようだ。X, Y いずれかの軸に回転させ、正しいと思われる回転を与える。自動で正しく合わせる方法は現状でよくわかっていない。

ICO 球に、サブディビジョンサーフェスモディファイア レベル 2 を適用

なお、上の各オブジェクトは、オリジナル以外はインスタンス(オブジェクトのコピー状態)であり、通常のオブジェクトに変換するには、オブジェクト > 適用 > インスタンスを実体化 を実行する。※上のオブジェクトでは、 242 個の大量のオブジェクトになるので、必要がある場合のみでよいだろう。


Hair System


通常はキャラクターの髪などを生成する機能だが、オブジェクトの散布にも利用できる。

中央の Tree オブジェクト、および、平面オブジェクトを追加した。

Tree オブジェクトの原点は底の中心。
  • 平面オブジェクトのパーティクルプロパティを表示。

  • + ボタンを押し、Particle System を追加。「ヘアー」を ON にする。

発生 >  数 は、ここでは、100 とした。
  • レンダー > レンダリング方法に「オブジェクト」を選択。

  • インスタンスオブジェクト には、Tree オブジェクトを指定する。

スケール は、ここでは 0.1
散布はされるが、回転軸が合っていない。
  • オブジェクトモードで、Tree オブジェクトをX 軸に - 90° 回転。

  • オブジェクト > 適用 > 回転 を実行。


回転軸が合った。Tree オブジェクトは非表示にしてかまわない。
レンダー > スケールのランダム化
回転のランダム化。詳細設定 ON  回転する軸「ノーマル」 ランダム化 0.1


Vertex Group

頂点グループのウェイトによって、散布の範囲を指定することもできる。

  • 平面オブジェクトを細分化し、編集モードで、全選択する。

  • データプロパティを表示し、頂点グループを追加、割り当てをクリック

  • ウェイトペイントモードに切り替える。

ウェイトペイントモード。

ブラシなどで、散布させたいエリア(赤に近い)をペイントする。

ブラシのウェイトが 1.0 に近いほど、赤くペイントされる。

パーティクルプロパティ 頂点グループ > 密度 に、上で設定した頂点グループ「Group」を指定。

ウェイトが強いエリアのみ散布される。

Collection

コレクションに複数のオブジェクトを入れることで、異なるオブジェクトを散布することもできる。

  • コレクションを新規作成、名前を「Particles」とし、下では 3 種の異なるオブジェクトを収めた。

  • レンダー > レンダリング方式 に、コレクションを選択

  • コレクションインスタンス に「Particles」コレクションを指定。

3 種のオブジェクトが散布された。

新規コレクションは、右上のアウトライナー画面上右クリック > 新規コレクション 等で作成できる。

やや手数はかかるが、散布状態をリアルタイムに変更でき、また、ランダムな配置、散布エリアの指定などカスタマイズオプションが豊富なのが特長だ。


Rigid Body


物理シミュレーションで、物理法則に沿って散りばめるパターン。

オブジェクトを追加。デフォルトの立方体(サイズ 2m)をやや変形。

複雑な形状だと、計算が増え、正しく処理されないことがある。シミュレーション後、形状を変更する操作は後述する。

必要に応じて、複製し配置。
  • いずれかのオブジェクトに、リジッドボディを適用。

物理演算プロパティ。タイプはアクティブ。シェイプはメッシュ

オブジェクトのの形状やサイズによっては、感度 > 余白 を、0.004 m など少なく設定したほうがシミュレーションの精度が高くなる。

  • オブジェクトを全選択し、Shift キーを押しながら、リジッドボディを適用したオブジェクトを選択(オレンジ枠状態)

  • オブジェクト > リジッドボディ > アクティブからコピー を実行

選択したすべてのオブジェクトに、同じ設定のリジッドボディが適用される。

  • 適宜、皿オブジェクト等を追加、タイプ「パッシブ」のリジッドボディを適用。床オブジェクトにも適用する。

タイプ パッシブ シェイプ メッシュ
  • スペースバーを押す、あるいは、タイムラインの再生ボタンをクリックし、シミュレーションを開始する。

キーフレームは 1 。そうでない場合は 1 へ戻す。
皿や床に散りばめられた。

形状を適用

ここから、シミュレーションの影響を受けずに各オブジェクトの形状等に自由に変更を加えたい場合は、シミュレーション結果を「固定」する必要がある。

  • オブジェクトを全選択し、オブジェクト > リジッドボディ > トランスフォームを適用 を実行する。

この操作で、オブジェクトはシミュレーションから離れ、通常のオブジェクトとして変更を加えることができる。

  • いずれかのオブジェクトの形状を変更。

  • オブジェクトを全選択、Shift キーを押しながら、変更を加えたオブジェクトを選択する(アクティブ。オレンジ枠状態)

  • オブジェクト > データのリンク/転送 > オブジェクトデータをリンク を実行する。

ジオメトリがリンク(同期)され、すべて同一の形状になる。

シミュレーションによる操作はオブジェクトの形状等によってやや動作がトリッキーな難点もあるが、オブジェクト同士に重なりがなく、当然、物理法則に沿ったリアルな散りばめになる。詳細については、リジッドボディで詰めもの 記事も参照してください。


まとめ


習いはじめのころは、オブジェクトが大量になってくるとすこし怖いイメージもあるかもしれませんが、モデリングのステップアップには欠かせない要素です。参考まで。



いいなと思ったら応援しよう!