[Blender 2.8] メッシュオブジェクトを大量複製できる、配列モディファイアーの機能と使い方のご紹介
今回の記事は、Blenderでオブジェクトを複製する方法の中で、一度に大量に作る場合に便利な『配列モディファイアー』についてです。
以前も”複製”という点で似ている 『ミラーモディファイアー』という機能について取り上げました。
ですが、『ミラーモディファイアー』はあくまで左右対称のオブジェクトを作る時に真価を発揮する機能です。シンメトリーを実現するのには向いていますが、反転させたりせず、しかも“大量”のオブジェクト複製には向きません。
ですが、この『配列モディファイアー』は、その“大量”のオブジェクト複製が簡単に実現できるんです!
更に、この『配列モディファイアー』の便利なところは、使い方によっては、複製体を“等間隔”に、“円形状”に配置することもできたりもします!
そういう詳しい使い方も含め、今回は、大量のオブジェクトを一度に”複製”、“等間隔”に並べるような方法を、『配列モディファイアー』に備わっている色々な機能についての説明と共に取り上げさせていただきたいと思います。
※2019年12月6日 加筆修正を行いました。
※2019年12月10日 加筆修正を行いました。
※2019年12月11日 加筆修正を行いました。
※2020年1月10日 加筆修正を行いました。
※2020年2月13日 加筆修正を行いました。
※2020年2月16日 加筆修正を行いました。
※2020年11月23日 加筆修正を行いました。
※2020年12月27日 加筆修正を行いました。
目次
- Memo: 複数のモディファイアーの順序設定
- [配列]の詳細設定項目一覧
- Memo: プログラミングでの『配列』についての小話
- おまけ
Memo: 複数の『モディファイアー』の順序設定
ちなみに、今回も花びらのモデルを使うのですが、花びらのモデルにはあらかじめ『ミラーモディファイアー』も使用されています。
勿論、モディファイアーは、一つのオブジェクトに複数個使用することが可能です。『ミラー』と一緒に『配列』のモディファイアーも共存できるのですが、そのようなモディファイアーが複数個存在する場合、1点気を付けて欲しい事があります。
モディファイアーの”優先順位“についてです。
例えば今回は、『ミラー』の後に『配列』を付け足した場合、↑の画像のような感じに表示されます。
恐らくは、違和感なく、思い通りに表示されているかと思わます。
ですが、もし、『配列』と『ミラー』の順番を逆に追加した場合には、違う風に表示されます。
『モディファイアー』は基本的には、追加した順番に優先順位が決定されるので、おそらく想像していたのと違う見た目になったかと思います。
こういった場合には、『モディファイアー』の優先順位を変更する必要があります。そのための方法もちゃんと用意されてますので、一度全部削除して、また付け直す必要はありません。ご安心ください。
優先順位を変更するには、各『モディファイアー』の右上辺りにあるこの[▲][▼]ボタンで操作できます。
[配列]の詳細設定項目一覧
- [適合する種類(Fit Type)]
- [定数で指定(Fixed Count)] …複製する個数を定数で指定する。
- [長さに合わせる(Fit Length)] …複製する個数を長さで指定する。
- [カーブに合わせる(Fit Curve)] …複製する個数をカーブオブジェクトで指定する。
- オフセット
- [一定のオフセット(Constant Offset)] …1つ前の複製体(または本体)から、次の複製体までのオフセットを定数で指定する。
- [オフセット(倍率)(Relative Offset)] …1つ前の複製体(または本体)から、次の複製体までのオフセットを、元のオブジェクトの大きさを基準に倍率で指定する。
- [オフセット(OBJ)(Object Offset)] …1つ前の複製体(または本体)から、次の複製体までのオフセットを「本体のオブジェクト→入力した他のオブジェクト」のベクトルとして指定する。入力したオブジェクトに与えた回転・拡大縮小の値も複製体に反映される。
- マージ
- [マージ(Merge)] …[距離]で入力した範囲内の隣接する頂点同士を結合する。
- [ループ(First Last)] …[距離]で入力した範囲内に、最初(本体)と最後の複製体の隣接する頂点がある場合のみ、頂点同士を結合する。[マージ]にチェックが入っていないと設定できない。
- [距離(Distance)] …[マージ]や[ループ]での頂点の結合を実行する距離を指定する。
- [UV(UVs)]
- [U軸のオフセット(U Offset)] …複製体のテクスチャマッピングの、U軸のオフセットを設定する。
- [V軸のオフセット(V Offset)] …複製体のテクスチャマッピングの、V軸のオフセットを設定する。
- コピーした別オブジェクトを追加
- [始端(Start Cap)] …本体の前方に、指定した他のオブジェクトの複製を作成、配置する。
- [終端(End Cap)] …一番最後の複製体の後方に、指定した他のオブジェクトの複製を作成、配置する。
[適合する種類(Fit Type)]
ここで設定した種類によって、複製される個数が決まります。
ただし、[定数で指定]以外の場合、[一定のオフセット]、[オフセット(倍率)]、[オフセット(OBJ)]の値によって、複製される個数が影響を受けます。
[定数で指定(Fixed Count)]
複製体の個数を指定します。
下の入力欄は[数]となります。
このタイプで指定した場合は、オフセットや本体のオブジェクトの形状などによる影響を受けません。
[長さに合わせる(Fit Length)]
複製体を作成する範囲を指定します。
下の入力欄は[長さ]となり、その範囲内で配置できる限りの複製体が作成されます。
このタイプで指定した場合、オフセットや本体のオブジェクトの形状などによって、作成される複製体の個数が左右されます。
[カーブに合わせる(Fit Curve)]
複製体を作成する範囲をカーブオブジェクトで指定します。
下の入力部分は[カーブ]となります。※カーブオブジェクトは、スカラー値の入力の扱い。
このタイプで指定した場合、オフセットや本体のオブジェクトの形状などによって、作成される複製体の個数が左右されます。
Memo: [カーブに合わせる]と『カーブモディファイアー』を併用したオススメの使い方
この[カーブに合わせる]を使う場合、『カーブモディファイアー』を併用すると非常に便利で効率的なモデリングをすることが出来ます。
詳しい使い方については、下記記事の「おまけその1: おすすめの使い方」をご覧ください。
オフセット
最終的なオフセットは、次の3項目の合計値となるようです。
[一定のオフセット(Constant Offset)]
X, Y, Zにそれぞれ小数点数・整数値で、1つ前の複製体(または本体)の基準位置から、次の複製体までのオフセットを、定数で指定します。
[オフセット(倍率)(Relative Offset)]
X, Y, Zにそれぞれ小数点数・整数値で、 1つ前の複製体(または本体)の基準位置から、次の複製体までのオフセットを、倍率で指定する。そのため、オブジェクトの形状に比例します。
[オフセット(OBJ)(Object Offset)]
3Dビューポート上に存在する他のオブジェクト名で、 1つ前の複製体(または本体)の基準位置から、次の複製体までのオフセットを「本体のオブジェクト→入力したオブジェクト」のベクトルとして指定します。
また、ここで入力したオブジェクトに与えた回転・拡大縮小の値も複製体に反映されます。
(0, 0, 0)あたりに、『エンプティオブジェクト』を用意し、花びらのメッシュに追加している『配列』モディファイアーの [オフセット(OBJ)] の項目に設定しました。
エンプティオブジェクトを回転したり、拡大縮小したら、『配列』モディファイアーで複製したメッシュもそれに比例して、位置や大きさが変更されます。
ちなみに、ただ単純に同一円周上に並べる場合、『Spin』というツールを使った方が断然手軽で簡単です。
『Spin』というツールにつきましては、他の記事で詳しく書かせていただきましたので、その記事を関連記事としてご紹介させていただきます。
マージ
複製体同士で設定した[距離]以内で接している頂点をマージ(結合)します。
マージに関連する項目は以下の3つです。
この内の[ループ]、[距離]は、[マージ]にチェックを入れていない状態では設定することができません。
今回、[マージ]と[ループ]の比較のため、UV球を『配列』で7つ複製したものを、[オフセット(OBJ)]に設定したエンプティオブジェクトを回転させて一周するように配置しました。
[マージ(Merge)]
0以上の小数点数・整数値で、 [距離]で入力した範囲内の隣接する頂点同士を結合します。
他の部分はマージ(結合)されていますが、オリジナルと最後の複製の境目はマージ(結合)されていません。
[ループ(First Last)]
0以上の小数点数・整数値で、[距離]で入力した範囲内に、最初(本体)と最後の複製体の隣接する頂点がある場合のみ、頂点同士を結合します。
※[マージ]にチェックを入れた上でないと設定できません。
こちらは、オリジナルと最後の複製の境目もマージ(結合)され、すべての境目が結合されています。
[距離(Distance)]
[マージ]や[ループ]での頂点の結合を実行する距離を指定します。
Memo: [マージ]と[ループ]の違い
[マージ]は、[距離]で入力した範囲に入る次の配列の要素との頂点を結合するため、最初(本体)と最後は直前と直後の関係ではないため、結合されません。
そこで、 最初(本体)と最後を結合するために[ループ]を使うわけです。
ちなみに、Blenderでの各種『マージ』機能について、別の記事で書かせていただきましたので、よろしければ合わせてご覧ください。
[UV(UVs)]
複製体のテクスチャマッピングに影響を与えます。
- [U軸のオフセット(U Offset)]
- [V軸のオフセット(V Offset)]
[U軸のオフセット(U Offset)]
複製体のテクスチャマッピングの、U軸のオフセットを設定できます。
複製の個数のカウント(要素数)が大きくなる程、オフセットの倍率が高くなります。
[V軸のオフセット(V Offset)]
複製体のテクスチャマッピングの、V軸のオフセットを設定できます。
複製の個数のカウント(要素数)が大きくなる程、オフセットの倍率が高くなります。
[U軸のオフセット]、[V軸のオフセット]を使ってテクスチャマッピング
テクスチャを使わなければ変化が良くわからないので、適当なテクスチャを用意し、そのテクスチャを使ったマテリアルを、前項で使ったUV球のオブジェクトに割り当てます。
[U軸のオフセット]、[V軸のオフセット]のそれぞれの値を動かすと、複製の個数のカウント(要素数)が大きくなる程、オフセットの倍率が比例して高くなるようで、バラバラな柄になります。
コピーした別オブジェクトを追加
それぞれの入力欄に、入力した別オブジェクトの複製体を、それぞれの位置に配置します。
[始端(Start Cap)]
3Dビューポート上に存在する他のオブジェクト名を入力し、設定されたオフセット分、 本体の前方の位置に、入力したオブジェクトの複製が作られ、配置されます。
[終端(End Cap)]
3Dビューポート上に存在する他のオブジェクト名を入力し、設定されたオフセット分、一番最後の複製体の後方の位置に、入力したオブジェクトの複製が作られ、配置されます。
UV球の『配列モディファイアー』の[始端]に、花のオブジェクト(花びらを『配列』で複製した物を含め、同じテクスチャを割り当てたオブジェクト)を設定し、[終端]にも同じく花のオブジェクトを設定したものです。
Memo: プログラミングでの『配列』についての小話
プログラミングの経験がおありの方であれば、ピンとくるかと思われます。
ざっくりと説明すれば、
Q.『配列』とは?
A.「ある一定の規則的なデータを大量に保有している、データの集合体」
と言えます。
言語によって記述の方法に違いがあったりもするのですが、大体、↓のような感じになります。
int a[] = { 3, 5, 11 };
この場合は、整数という形が決まっているデータが沢山入っている訳ですね。こういった形でデータが一か所に纏めて保管されていれば、いざ扱う時に同じような処理をしたい場合、まとめて変化を加えられるので、大量のデータを管理するのに優れています。
同様に、Blenderでの『配列モディファイアー』も、大量に同じ形のオブジェクトを生成、管理するのに向いている複製方法なわけです。
ちなみに、『配列』について触れている以前の記事です。ご興味湧かれた方は合わせてご覧ください!
おまけ
UV球に『配列』モディファイアーを使って複製体をつなげたメッシュオブジェクトに、花のオブジェクト(花びらメッシュに『配列』で複製体を円を描くようにつなげたオブジェクト)を[始端: ][終端: ]に設定し、エンプティオブジェクトを[オフセット(OBJ)]に設定したものを2個用意します。
そして、そのエンプティオブジェクトをただ回転させるという単純なアニメーションとなっております。
めっちゃくるくるしてますので、
— ほろほろり (@_horo_horori) November 19, 2019
目を回さないようご注意ください。#blender pic.twitter.com/neV1829lWC
参考にさせていただいたサイト・ページ一覧
モディファイアー関連の記事のご紹介
この記事の他にも、Blenderの様々なモディファイアーについて、機能や使い方を私自身も試しながらではありますが、ご紹介させていただいております。よろしければ、こちらも併せてご覧ください。
変更
- データ転送
- メッシュキャッシュ
- メッシュ連番キャッシュ
生成
変形
- アーマチュア
- スムーズ
- スムーズ(修正)
- スムーズ(ラプラシアン)
シミュレート
- コリジョン
- ダイナミックペイント