プロシージャル散布

Dashには、特定の用途に合わせたさまざまな散布ツールが含まれています。このページでは、なぜこれらの散布ツールがDashで最もよく使われているのかを説明します。

Surface Scatterはメッシュの表面上で動作する世界クラスの散布ソリューションです。 基本的な考え方は、いくつかのジオメトリ(スタティックメッシュ、ランドスケープ、プロシージャルメッシュなど...)を散布する表面/地面として与え、散布したいアクターを与えると、それが魔法のように作用する、というものです。

これはDashで最も包括的なツールであり、複数の大手AAAスタジオ、才能ある個人アーティスト、そして我々のチームによる最先端のワールドビルディング追求から要望された機能を含んでいます。

circle-info

必ず はじめに(Getting Started) このページの情報を容易に理解するために該当ページを読んでください。このページでは私たちが知っていることを前提に進めます。 環境作成(environment creation) セクションではDashツールを使う基本が説明されており、ここではそれを理解していることを前提とします。

特定のユースケース向けの使いやすい専用散布ツールを用意していることに加え、人々が我々の散布ツールを好む主な理由はそのマスキング機能です。多くのツールは基本的なマスキング設定を共有しますが、Surface Scatterはほぼすべての機能を備えているため、それらを一つずつ見ていきましょう!

マスキング機能

Dashの散布ツールにはさまざまなマスキング機能があり、その多くはSurface Scatterにのみありますが、他のツールにもいくつかあり、我々はそれらへマスキング機能を積極的に拡張しています。 主要なマスキング機能のすべて、それらの動作方法、できることを見ていきましょう。

掘り下げる前に、ここで「マスキング」は散布されたインスタンスを除去することを意味します。さらに、ほとんどのマスキンググループはマスク結果を反転する機能を持ちます。いくつかのプロパティの右下に小さな暗い円があるのに気づくでしょう。これはそのプロパティを右クリックして選択できることを示します: マスクを反転(Invert Mask).

近接マスキング(Proximity Masking)

この機能では曲線、メッシュ、インスタンスによるマスクが可能です。

距離(Distance) というプロパティがあり、近接距離を制御し、UEのネイティブ単位に依存します。 もう一つのプロパティは サンプリング(Sampling)です。この値はマスキングの品質を制御します。値が高いほど品質は高く、低いほど品質は低くなります。

上の例ではメッシュと曲線をマスキングに使っていますが、インスタンスに依存するのも同様に簡単です:ビューポートでそれらを選択し、近接オブジェクトに追加してください。 下の例では球を散布し、その近くの円盤だけを残すように円盤を散布しています。

近接マスキングを利用して現実的な森林を構築できます。まず木を散布し、その下にシダや葉を残し、必要なら曲線を経路の近接マスクとして使い、その経路の端に岩を散布するといったことができます。

Dash 1.8.5以降、Surface Scatterは無限数の近接マスクを追加する機能を持ち、これはProximity Tableを通じて行われます。これは以前の3つの近接マスクに代わるものです。Proximity Tableではグループを作成でき、各グループは独自のオブジェクト、距離、幅の値を持ちます。例えば最初のグループで特定の距離のオブジェクトをマスクし、他のグループでも同様のことを行うことができます。

最後に、近接マスキングはマスク反転にも非常に適しています。

角度マスキング(Angle Masking)

角度マスキングは非常に直感的です:基になる表面に依存して角度を決定し、その領域内の散布オブジェクトを除去します。これは山地で散布する際に斜面を木や他のオブジェクトからクリアに保つのに理想的です。

高さマスキング(Height Masking)

Surface Scatterのようなツールには 最小高さマスク(Min Height Mask)最大高さマスク(Max Height Mask) というプロパティがあり、散布オブジェクトを上または下からクリップすることができます。

オブジェクトマスキング(Object Masking)

単に距離に依存する近接マスキングとは異なり、オブジェクトマスキングはレイトレースを使用してインスタンスがオブジェクトの内側、外側、あるいは近くにあるかを判定します。曲線を描いてその曲線の内側に全てのインスタンスを残したい場合など、この機能は完璧です。メッシュやボリュームの内側/外側にあるインスタンスを維持するためにも使用できます。

このマスキング方法にはまた 内側を保持(Keep Inside) というブールプロパティがあり、切り替えてマスクが入力オブジェクトの内側のインスタンスを保持するか、外側のインスタンスを保持するかを決められます。さらに 距離(Distance) というプロパティを使って近くのインスタンスを保持することもできます。

ノイズマスキング(Noise Masking)

ノイズマスキングは散布オブジェクトの均一性を素早く崩すことを可能にします。 スケーリングから周波数、軸別ストレッチ、ノイズの平滑化、ワーピングなど、幅広いパラメータが提供されます。

草、木、あるいはゴミを散布する場合は、この機能を使って結果をより自然に見せることを強くお勧めします。

クラスタマスキング(Clump Masking)

クラスタマスキングはランダムに選んだインスタンスを中心点としてクラスタを形成することで機能します。 サンプリングするインスタンスの密度を調整する値と、クラスタの半径を制御する別の値が提供されます。 ノイズや他のマスクと組み合わせると、現実的な散布設定に非常に強力なツールになります。

境界マスキング(Border Masking)

境界マスキングは表面ジオメトリの境界エッジを検出し、それらの境界近くのオブジェクトをマスクします。

この機能は庭のような人工的な散布設定で非常に有用です。基になるジオメトリの形状を作り、そこに植物を散布してからそのジオメトリを隠すといった使い方ができます。 ジオメトリの各エッジループ境界は別々に扱われ、 境界最小/最大(Border Min/Max) プロパティにより各境界ループのマスキングにランダム性を追加できます。 Noiseは境界の均一性を崩すための単純なノイズ効果です。

投影マスキング(Projection Masking)

投影マスキングは各インスタンスの点から上向きにレイを飛ばし、追加したメッシュに当たった場合はそのレイが当たったインスタンスを保持することで機能します。効果を反転することもできます。 使用例は車の下の植物やゴミのようにオブジェクトの下にあるインスタンスを保持する、またはシーン内の任意のオブジェクトの下にあるすべてのインスタンスを削除する、などです。

ランドスケープレイヤーマスキング(Landscape Layer Masking)

このマスキング機能ではペイントレイヤーの名前をSurface Scatterに渡し、そのレイヤーをマスクとして使用します。最大で3つのレイヤーを渡せます。

テクスチャマスキング(Texture Masking)

テクスチャマスキングは比較的直感的です:UEのコンテンツブラウザでテクスチャを選択し、それを テクスチャパス(Texture Path) のプロパティに渡せば完了です。 どのチャンネルをマスクとして使うかを選び、グラデーションピクセルのためにカラースレッショルドを調整し、テクスチャマスクをタイルできます。 テクスチャが黒地に白のピクセルを含んでいることを確認すれば、白いピクセルがマスクとして使用されます。 非常に特定の形状で装飾された小さな庭のような構造を作成したい場合、この方法を使って平面上に散布して平面を隠し、その平面に花壇の形状を表すテクスチャを与えることをお勧めします。

頂点カラーによるマスキング(Vertex Color Masking)

頂点カラーはスタティックメッシュに適用でき、このマスキンググループではRGBのすべてのチャンネルが使用可能です。加えて、グラデーションピクセルでのマスキングの挙動を調整するためのピクセルしきい値コントロールがあり、さらに ブレンドモード(Blend Modes) のドロップダウンから頂点カラーがマスキングロジックにどのように影響するかを選べます。

方向性マスキング(Directional Masking)

角度マスキングとは異なり、方向性マスキングでは太陽光(または任意のオブジェクト)アクターを使用して太陽の回転に基づいてオブジェクトをマスクできます。コケのように日光に敏感なオブジェクトを除去するのに使えます。

追加 / 除去マスキング(Add / Remove Masking)

これはインスタンスをランダムに追加または除去するシンプルなマスキングトリックです。 例えば近接マスキングで植物の経路をクリアにした後、低い値の追加マスクを使ってところどころにいくつかの植物を残す、という使い方ができます。

プロパティ参照(Property References)

森の木用にSurface Scatterを使い、別のものを低木用、別のものを草用に使い...その後に森沿いの木製の杭用にPath Scatterを使い、道路を作るなど複雑なセットアップを作成すると、その複雑さはすぐに圧倒的になります。こうした状況を整理するために参照を使います。 道路には幅があり、木製の杭はわずかなオフセットがあってもその幅を尊重してほしいでしょう。同様に森林の植生は道路上に出現してほしくありません、といった具合です。

これを行う方法は参照プロパティを作成することです。我々はそれを はじめに(Getting Started) ページで説明していますが、ワークフローはかなりシンプルです:道路の幅を決定するDistanceやWidthといったプロパティを作成し、すべてのツールがそれを使用するようにします。プロパティが参照を使用する場合、ウェイトを与えることができ、参照が提供する値を超えてプロパティの値を拡張できます。例えばWidthが320で、木製の杭に0.1のウェイトを与えると、ウェイトが割合の乗数として作用して杭が幅よりわずかに大きくなります。

散布テーブル(Scatter Table)

後のバージョン(Dash 1.8.5以降)では、特定のツールにデータテーブルを追加し始めました。主なものはSurface Scatterの散布テーブルです。散布プロパティの+アイコンで複数の散布オブジェクトを単に割り当てる代わりに、Edit Tableボタンを押して散布テーブルを開くことができます。

ここでは複数のプロパティ行を作成し、各行に1つまたは複数の散布オブジェクトを割り当てることができ、さらに各プロパティ行ごとに制御できる 密度オフセット(density offset)スケールオフセット(scale offset) が用意されています。つまり、複数のSurface Scatterを作成する代わりに、1つのSurface Scatterで散布オブジェクトを非常に細かく制御できるということです。

このデータテーブルロジックは、必要に応じて粒度の高い制御を提供するため、他のツールや設定にも徐々に拡張されています。

最終更新

役に立ちましたか?