UltraScatter Pro 大量インスタンスを簡単配置するツール

指定したオブジェクトを、適当にバラバラと配置するツールだ。こんなことができる。


UltraScatterPro

UltraScatterの分散効果

例えば、鳥を多数配置して、渡り鳥の群れのようにするとこう!

木を配置して、森に!

寄りでレンダリングすると、こう!

人間を適当に配置して群衆シーンに。

散らばり具合のほか、向き、大きさ、も制御できる。

つまり、「荒木飛呂彦先生のかたつむり」のような表現が可能!

UltraScatterProの付属物

表示がおかしくなってるアイコンが7個あるけども、多分、無視して良いと思う。PDFのマニュアルと、UltraScatterProだけ相手にしてればいいんじゃなだろうか。Lowres…と書いてある枯れ枝みたいなやつは、表示が重くならないようにオブジェクトの代わりに表示させる木だ。

UltraScatterProのざっくりした使い方

球(Sphere)の表面に、立方体(Cube)をバラバラ並べてみよう。

まず、画面上部のCreateメニューから、Create PrimitiveでCubeとSphereを呼び出す。

Cube(立方体)をクリックして選択状態にしてから、Smart ContentのUltraScatterProを起動する
Scatter Object(散布オブジェクト)には、自動的に選択したオブジェクトが設定される。
Settings画面にで、surface(デフォルトで選択されてる)を選び、Target objectにSphereを選択、Number of Instance/Iterationsに200を設置する。
Number of Instancesは、散布するオブジェクト数だ。
Distributionタブにて、Density ControlのSpacing(cm)を10.00に設定、3D NoiseのプルダウンメニューをPerlinに設定。
Spacingは、散布するオブジェクトのすき間を設定する。3DNoiseは、ノイズの白いところに沿って散布オブジェクトを配布する感じ。
Rotationタブで、Rotaton PointをBottomに、AlignmentをSurface normalに設定する。
RotationPointは、回転の基準位置だ。この場合、立方体の底を、表面の法線方向に沿って回転させることになる。
平たく言うと、立方体の横を表面に沿って貼り付ける感じ。
ウインドウ下のSurfaceScatterボタンをクリックすると、オブジェクトが散布される。
散布されるのだが、あまりにポリゴン数が多かったり、テクスチャのサイズが大きすぎると操作不能なくらいにDAZ Studioが重くなるので注意。
散布前に、Scene Optimizerでテクスチャを削減したり、Decimettorでポリゴン数を減らしておくのがよいだろう。
※散布後にやろうとしても、処理に時間が重くなりすぎるのでダメ。散布処理前に軽量化しよう。

ボリューム散布 オブジェクト形状に沿って立体的に散布

指定したオブジェクトの形に合わせて立体的にオブジェクトを散布する。

象の形の植木を作ったり、そーゆーことに使うのかな。

けっこうな数のインスタンスを使わないと、もとの形には見えないので使いドコロが少々難しいかも知れない。

爆発する木片 大小の板を球状にボリューム散布

SphereをTargetObjectに指定して、RotationをX,Y,Zともバラバラに、大小2枚の木の板を散布。

爆発エフェクトはハリボテだ。木片のバリエーションは、もう少し増やしたほうがリアルかもなぁ。

参考)SY KABOOM Iray 

けっこうそれっぽく見える。

大量のナイフを投げるシーン

ジョジョ第三部の名シーンを再現。

ナイフの方向は、Point at指定しているのだが、そのままだと横を向いてしまう。刃先を対象に向けるためにRotatonタブのClamp Y axisにチェックを入れた。

原理はイマイチわかってないが、とりあえず目的の形に出来たのでよしとしよう。Z軸の値のみランダムに回転するうにして、バリエーション感を出している。

なお、point atの対象の「cube(プリミティブの立方体)」は、ナイフを投げる男性側に設置した。

ナイフの広がりは、cone状のプリミティブで指定。

コーン形状、使い勝手が良さそう。

振り返ってはいけない小道 大量の手が追ってくるシーン

同じくジョジョの名シーンから、「振り返ってはいけない小道」

手のフィギュア(Poserにデフォルトで付属してたやつ)を女の子の方に向けて、Sphre(球)状にボリューム散布した。

Rotationタブで、Inherit object rotationにチェックを入れると、オブジェクトの向きそのままで散布してくれる。

均一にみな同じ方向を向いてると違和感があるので、X、Y、Z方向それぞれランダムに最大20度づつ回転させるようにした。右手と左手の2パターンしかないんだけど、それっぽくしあがっている。

Matrix 等間隔に配置

3次元の等間隔にオブジェクトを配置する。XとZのRowsだけ数値を指定すれば、2次元的に等間隔配置が可能だ。

応用例は、CITY BLOCKと呼ばれる市街地コンストラクションキットなどを配置して街を作り上げたり。

教室シーンを簡単に整列散布

漫画の背景などで、とても面倒くさいとされる教室シーン。

親子関係のあるオブジェクトを整列散布できるので、机を親にして、イス、子供を子に設定したオブジェクトを散布するとこのとおり。

親子関係の設定は、Sceneタブにてドラッグ&ドロップ操作をおこない、イス、子供をドラッグして机の上にドロップすれば親子関係にできる。(右クリックして、Change Parentでも可)

男の子と女の子の2種類を散布した。

UltraScatterの小技集

UltraScatterをメニューから直接使えるようにする

UltraScatterを使う場合、毎回Smart Contentから使うのはけっこう面倒。画面上部のメニューから使えるようにしておくと便利だ。

Smart Contentにて、UltraScatterのScript上で右クリック、Create Custom Actionを選択する。

Submenuのところにわかりやすいサブメニュー名をつけて、Acceptをクリック。今回は「layout」とした。

すると、画面上部のScripts→layoutにUltraScatterProが現れ、どこからでもUltrascatterが呼び出せるようになる。

配布済みのインスタンスを再編集する

UltraScatterでは、ほしい結果を出すのにパラメータを微調整してトライアンドエラーを繰り返す感じになる。そのため、毎回イチからパラメータを指定していると非常に面倒くさいのだ。

しかし、Sceneタブで生成済みのインスタンスを選択してからUltraScatterを起動すると、生成時に指定したパラメータを指定済みの状態で起動できる。

生成済みインスタンスは、UltraScatterPro…[xx instances]という名前になっているはずだ。

これを知らないと、試行の繰り返しで無駄な時間を使うので、絶対覚えておこう。私は、ある程度使ってから知って、とても後悔した。

この方法を使って、パラメータをちょっとだけ変えて結果をチェックしつつ、いい感じのパラメータを探そう。

複数のオブジェクトをランダムに散布する方法

画面上部のCreateメニューから、Create Groupを作り、Groupの子オブジェクトにオブジェクトを設定すると、Group内のオブジェクトを散布してくれる。

Groupの子オブジェクトに設定するには、Sceneタブにてドラッグ&ドロップ操作でいける。

Affinity 散布範囲を制御

指定したオブジェクトの周囲にだけ散布したり、散布しなかったりを制御できる。

上記は、鉄火巻きの周辺10cmに散布しない(Repel設定)&周辺30cmに配布する(Attract)を組み合わせた例。

結果として、ドーナツ状に配布ができている。

指定した木の周りだけキノコを生やすとか、そういう使い方ができそう。

指定の高さにのみインスタンスを生成

DistributionタブのElevation(標高)で指定。以下のようにMin、Maxを指定すると150cm以上の場所にのみ生成される。

なお、今回のケースでは生成数を100にしても28しか生成されなかった。

おそらく、インスタンスをランダムに100生成し、そのうち条件に合わなかった72個を捨てて、残りが28個ということのよう。

本当は、条件に合うインスタンスを100個生成してほしかったのだが、そういう仕様なのでしょうがない。

なので、100個生成したい場合は、100で28だから、ざっくり3倍の300個生成とかにすると結果として100個くらい生成されるんじゃないだろうか。

斜面の勾配の強さを指定して配置

ちょっと言葉で説明するのは難しいけど、坂の角度がきつい・ゆるいで配置するかどうかを決める。

以下は、勾配が0度~20度の箇所にのみ配置した例。

設定は、DistributionタブのSlopeにて、Minを0、Maxを20にした。

平らに近いところだけ配置するという感じ。逆に斜面がきついところにだけ配置することも可能。

なお、このパラメータでは300個指定したら280個くらい生成された。うーん、いちおう指定した数に近くなるようにがんばってる感じか…?Elevationとは生成条件が違うのかもしれない。

指定した方向のみインスタンス配置

指定方向のみのインスタンス配置は、OrientationのExtent、Angle、Pitchというパラメータを使うのだが、考え方が難しい。

パラメータを変化させて、結果を見比べていこう。まずは、Extentを90にした例。

Extentは配置する方向を範囲指定するパラメータっぽい。X軸の正方向を0として、90で右半分、180で全体に配置する。

Angleは、範囲指定の開始位置をずらすオフセットのようなパラメータ。

最後のPitchは、配置範囲の境界線を斜めに傾けるためのパラメータという感じか。

すごくわかりにくいけど、配置物の境界線がわずかに斜めに傾いている…んだと思う。

直感的に理解しにくいけど、山に木を生やすようなケースでは約に立つんだろうなぁ。

UltraScatterデメリット弱点

インスタンス数が増えると重い

かなり面白そう。だけど、そんなにたくさんアイテムを配置したら、重くてしょうがないんじゃん?

うちのパソコンなんて、G8フィギュア1体に服と髪をつけたら、イッパイイッパイだよ?

そうなのだ。

だから、遠くのアイテムはポリゴン数を減らすような措置が絶対必要になる。

フィギュアのようなポリゴンが多いものを配置するには、Decimator for DAZ Studio(ポリゴン削減)や、Scene Optimizer(テクスチャ削減)が必須と言えるだろう。

Decimator for DAZ Studio ポリゴン削減ツール
重いフィギュアのポリゴンを減らすツール。UnityやUnreal Engineなどゲームエンジンにデータを持ち込む際に使われるツールだが、DAZ STUDIOでのレンダリング速度や配置時の操作レスポンスが向上するため単にデータを軽くする目的でも重宝されている。早い段階で入手しておくと、何かと役立つツールだ。
DAZのレンダリング高速化 Scene Optimizer
DAZ Studioのレンダリング時間を激減するという不思議ツール。 Scene Optimizer  そのカラクリはというと、シーン内のアイテムに使われているテクスチャの解像度を自動的に下げてくれるのだ。 ややカメラが引き気味のシーンで、...

インスタンスを大量生成後に、フィギュアに服を着せるとハングアップする

なぜか、インスタンスを散布後にフィギュアに服を着せるといつまでたっても服を着せ終わらない…という状態になった。

そうなると、強制終了するしかなくて、シーンを保存してないと全部パー。悲しい。

なお、どうしてもデータを残したい場合はひたすら待ってれば処理が終わるっぽい。単に時間かかってたのか。私が経験した中では、服を着せるだけで30分くらいかかったというケースがあった。

原因は不明だけど、以下の様な対処をしておくしかなさそうだ。

  • こまめにシーン保存
  • オブジェクト散布前にフィギュアに服を着せておく

Restrict to Viewが効かない

UltraScatterには、「Restrict to camera」という、指定したカメラに映らない部分にはインスタンスを配置しないという超便利そうな機能があるのだが、効かない。

フォーラムでも「効かない」という声が多数あったので、たぶん、私が使い方を間違っているわけじゃなさそうだ。

とりあえずの対策としては、Camera View Optimizerなどの別アプリを併用して、カメラ範囲外のインスタンスを削除する方法。

UltraScatterの応用アイデア

人体についた「汗」や「水滴」の表現に使えるんじゃないだろうか。

透明な球を人体の表面上に分散配置すれば、手描きの汗マップを描くことなくリアル汗を作り出せる…?

やってみた。結果は上々。

設定パラメータレシピを記録しておく。

半径1cmの球を画面上部のCreateメニュー→Create Primitiveから作って選択状態にしてからUltraScatterProを起動。

インスタンスの数は300個。でも、実際に生成されるのは、何故かこの数より少し少ない。

Distributionは特に設定なし。

Scaleは球を細長く伸ばすためにXとZのScaleを変化させる。

球をランダムに回転。これで合ってんのかな。配置の基準は球の中心部(Center)になるようにして、顔の表面に球が半分埋まる感じにした。

球(Sphere)にGlassシェーダーを適用。

平たく言うと、Surfacesタブで球のsurfaceを選択状態にしてから、Smart ContentのShaders→Iray→Glass(デフォルトで入ってるやつ)の中から適当なやつを適用したということだ。

こうなった。美しい。


フィギュア:Dior HD for Genesis 8 Female 

UltraScatterの関連ツール

UltraScatterと組み合わせて使うと、より遊べる範囲が広がるツールを紹介しておこう。

インスタンス実体化ツール


Instances to Objects 

UltraScatterProで生成したインスタンスをオブジェクト化(実体化)できる。インスタンスは、メモリの使用量が少なくて済む分、ポーズやモーフが全インスタンスに反映されてしまう。このツールを使うと別オブジェクトに変換できるというわけだ。

ただ、あまりにもインスタンス数が多いと変換処理自体が失敗したり、重くて操作不能になったりする点は注意。もともと、DAZ Studioのインスタンスを、別の3DCGにエクスポートするためのツール。

以下は、象の形にボリューム配置した球を、オブジェクト実体化して、dForceで物理演算をかけた例。

インスタンスの状態だと物理演算対象にできないが、実体化(オブジェクトに変換)することで物理演算対象にできるのだ。

DAZ dForce設定 服と布をシミュレーションでフィット
自然に服や髪をフィットする物理演算機能dForce。パラメータ指定が複雑なのが難点だ。実は、簡易的に設定できるdFore Surface Adjusterが用意されている。ウェイトマップで作用範囲を塗り分けて制御しよう。パラメータを変えたら布の動きがどう変わるか、GIF動画を使って解説。

なお、ポーズはそのままで移動だけしたい場合は、インスタンスの塊を選択状態にしてから、画面上部のEditメニュー→Object→Instances→Break Instancesを選べば、インスタンスがバラバラになり、位置・回転・拡大縮小を個別に手動設定できるようになる。

ポリゴン削減ツール

Decimator for DAZ Studio ポリゴン削減ツール
重いフィギュアのポリゴンを減らすツール。UnityやUnreal Engineなどゲームエンジンにデータを持ち込む際に使われるツールだが、DAZ STUDIOでのレンダリング速度や配置時の操作レスポンスが向上するため単にデータを軽くする目的でも重宝されている。早い段階で入手しておくと、何かと役立つツールだ。

インスタンスは、メモリ上ではオブジェクト1つ分の容量しか食わない…とは言え、プレビューやレンダリングではポリゴンが多いほど処理は重くなる。

遠景などの場合は、分散配置前にこのツールでポリゴンをできるだけ削減しておくといいだろう。私のような素人から見ると、ポリゴンを30%(7割減)に減らしても、見た目は大きく変わらない気がした。遠景なら20%くらいに減らしてもいいかも。

テクスチャ解像度削減ツール

DAZのレンダリング高速化 Scene Optimizer
DAZ Studioのレンダリング時間を激減するという不思議ツール。 Scene Optimizer  そのカラクリはというと、シーン内のアイテムに使われているテクスチャの解像度を自動的に下げてくれるのだ。 ややカメラが引き気味のシーンで、...

インスタンスをたくさん配置したいときって、遠景がほとんどだろう。解像度の高いテクスチャは不要なことが多い。

そこで、テクスチャの解像度をワンタッチで削減してくれるこのツールが役立つ。

プレビュー、レンダリングが劇的に軽くなるので、インスタンス大量配置シーンを作る人にとっては必須のツールだ。

カメラに映らないインスタンスを削除してくれるツール

Camera View Optimizer カメラ範囲外のオブジェクトを消すツール
カメラに写ってないオブジェクトを隠す・削除してシーンを軽くするツール。 Camera View Optimizer  大量のオブジェクトがシーン内にあって、レンダリングが重いとかメモリ不足になる場合に威力を発揮する。 ふつうなら、Scene...

Ultrascatterによるインスタンスの自動配置は、カメラ位置によっては映らない箇所にも大量のインスタンスを生成する。(本当は、カメラ範囲外にはインスタンスを作らない機能があるはずだが、機能していない)

そこで便利なのがこのツール。

カメラを指定すると、映らないオブジェクトやインスタンスを自動で削除、または非表示にしてくれる。

実際に組み合わせて、ちゃんと動くことを確認した。UltraScatterProで生成したインスタンスを、うまく削除することができた。


▲609オブジェクトのうち、カメラに映らない512オブジェクトを削除した!

UltraScatterの関連アイテム 分散配置済みの自然な森

道路わきに木を自然に分散配置したアイテムがこれ。同作者による背景シーンだ。

The Harpwood Trail for Daz Studio

おそらく、UltraScatterを使って木を自然に配置している。

なるほど、木一本のアイテムなら買わないけど、リアルに木が配置された森なら、けっこういいな…。

分散配置することには、価値があるということか。

UltraScatter ProとAdvanced Instancingの違い

UltraScatterには、Pro版とAdvanced Instancing版の2グレードがあるが、Advanced Instancingは旧版だ。Pro版を選ぼう。

Proが上位版で機能が多い。10ドル差なので、とりあえずProを買ってしまうのもアリだと思う。

だけど、このアイテムが親切なところは、下位のAdvanced Instancingを買ったあと、「あー、Pro買えばよかった」と思った時に、アップグレード版があるのだ。

UltraScatterPro – Upgrade from UltraScatter Advanced Instancing  (アップグレード用)

Proにだけできるのは以下のの通り。

  • 指定オブジェクト内部(Volume)、格子状(Matrix)配置が可能
  • 分散配置設定をインポート(保存)できる
  • アイテムの向き+傾きを揃える
  • アイテムの向きを自然にフォールオフさせる
  • ランダム配置用ノイズを関数で生成できる
  • 指定オブジェクトの方向に向ける

 

そんな感じ。面白ツールのひとつとして、一応ウィッシュリスト入りさせておこう。

UltraScatterPro