Choose your operating system:
Windows
macOS
Linux
リアルタイム 3D アプリケーションのレンダリング パフォーマンスを改善するひとつとして、シンプルにフレームごとに描画されるオブジェクトの数を減らす方法があります。通常、カメラは 3D シーンで同時にすべてのオブジェクトを撮っていません。他のオブジェクトによってブロックされ、現在のカメラ ビューに入っていないオクルードされたオブジェクトをレンダリング中に安全に省略して、最終イメージを変えることなくパフォーマンスを改善することができます。
Unreal Engine には、視錐台のカメラの外側のメッシュや、カメラから遠すぎるメッシュを間引くなどの、フレームごとにオクルードされたメッシュを除去するいくつかの方法が組み込まれています。しかし、Unreal Engine が実行時に、どのメッシュが他のメッシュにオクルードされているか効果的に判断できないこと場合があります。特に、あるメッシュがもう 1 つのメッシュのバウンディング ボックスの内側にある場合です。この問題は一般的に、Unreal Engine にレンダリングのために取り込まれたコンピュータ支援デザイン (CAD) のデータにおいて、組立部品がケーシングの内側に完全に隠れた様々な小さなパーツで構成されているときに頻繁に発生します。パーツがリアルタイム レンダリングでまったく見えないものであれば、これらのパーツをレベルから完全に隠すか除去することでレンダリング パフォーマンスを改善できることがよくあります。Unreal Engine でレンダリングするためにインポートした、完全にモデル化された車のボンネットの中を見る方法を、プレイヤーやビューアに提供していない場合は、エンジンの内部パーツをフレームごとにレンダリングしてリソースを浪費する必要はありません。
たとえば、次のエンジンの組立部品には、別個のスタティック メッシュ アクタが 542 個存在します。しかし、これらのうち 321 個は完全にケーシング内に入っており、決してカメラには写りません。レベルからオクルードされたジオメトリを除去すると、視覚的な見栄えを変更せずに、残りのジオメトリのレンダリングがはるかに高速になります。
このような場合のために Unreal Editor では、レベルで選択されたスタティック メッシュ アクタをスキャンして完全にオクルードされた、つまり外側のどのビューポイントからも見えないアクタを探すオンデマンドの処理を提供します。プロセスが完全にオクルードされたアクタを特定すれば、それらのアクタをレイヤ上で分離して、レベルから完全に除去するか、内部のディテールを除去してジオメトリを単純化することができます。
この処理は Jacketing (覆いを付けること) と呼ばれることがあります。
隙間
視界から内部のメッシュを隠しているジオメトリの外側のシェルが完全に閉じていないことがあります。外側のジオメトリに小さな隙間 (gap) や途切れがあっても、内部の詳細を見せるのをブロックしています。たとえば、このモーターのチェーンは小さな穴を通って外部のシェルを通過しています。
このような場合は、内部のメッシュを隠した方が良いでしょう。このことから、オクルードされたトライアングルを検出する際に、Jacketing アルゴリズムは小さな隙間を埋めて、ギャップがあたかもメッシュに覆われているかのように処理します。これにより、オクルージョンしているメッシュが完全に塞がっていなくても、内部でオクルードされたパーツを隠すことができます。
オクルージョン テスト中に無視する隙間の最大サイズを設定できます。
念のため、隙間サイズのしきい値をかなり高く設定しておこうと考えるかもしれません。しかし、このしきい値は、どのトライアングルがスタティック メッシュから安全に除去できるかを評価するメッシュ ターゲット モードでも使用されます (下記を参照)。隙間のしきい値を大きくしすぎると、ジオメトリ内部のトライアングルが最適に単純化されません。しきい値は、オクルージョンの対象メッシュの実際の隙間サイズにできるだけ近い値を設定してください。
ターゲット
Jacketing 操作の実行結果は、レベルのスタティックメッシュ アクタ、または スタティックメッシュ アセットのジオメトリ のいずれかのターゲットに適用することができます。
レベル ターゲット
レベル ターゲットで Jacketing ツールを実行すると、レベル内の選択されたスタティック メッシュ アクタ一式にオクルージョン テストが実行されます。すべての角度からアクタのジオメトリを分析して、すべての角度から完全に見えなくなっているアクタを検出します。オクルードされたアクタのリストが作成されたら、処理方法を選択できるようになります。
Unreal Editor UI で次のことができるようになります。
オクルードされたアクタに [Jacketing Hidden] という新規コンポーネントタグを付ける
Jacketing という名の新規レイヤにオクルードされたアクタを置きます。
[Actor Hidden in Game] 設定をオフにしてオクルードされたアクタをビューから隠す。
レベルからオクルードされたアクタを除去する。
ブループリントや Python スクリプトからレベル ターゲットのツールを実行すると、オクルードされたアクタのリストが返るので、スクリプトは取るべき適切なアクションを決定できます。
個々のスタティック メッシュ アクタでそれぞれ表された多数の細かいパーツが、比較的単純なジオメトリを持ったボックスまたはシェル内にある場合は、レベル ターゲット モードを選択すると良いでしょう。
レベル ターゲット モードでは、Jacketing ツールは、スタティック メッシュ アセットを変更しません。オクルージョン テストを実行して完全にオクルードされたアクタを検出するだけです。
メッシュ ターゲット
メッシュ ターゲット モードで Jacketing ツールを使用すると、個々のトライアングルのレベルでオクルージョンを検討します。オクルージョン テストの実行後、個々の スタティック メッシュ アセットからオクルードされたと判断されたトライアングルがすべて除去されます。これにより、サーフェスの内部からディテールを除去し、オクルージョンしているメッシュを効果的に減らしてシェルを空にします。
これは、ケーシングやオクルージョンしているメッシュが複雑な内部サーフェスを持っていたり、ジオメトリがオーバーラップした複数のアクタを持っている場合に有効なオプションです。オーバーラップした領域内のジオメトリは可能な限り単純化されます。
Jacketing ツールは、保守的なアプローチを用いて安全に除去可能なトライアングルを識別し、表示結果が劣化するのを避けます。見える可能性のあるトライアングルは手付かずのまますべて残します。Jacketing ツールはジオメトリのトライアングルを再作成したり単純化したりしません。不要なトライアングルを除去するだけです。
たとえば、下記の組立部品の内部には外部から決して見えない複雑なジオメトリがあります。メッシュ ターゲットに Jacketing ツールを実行するることにより、内部のディテールをすべて除去できます。ただし、外を向く辺面のジオメトリを除いて、シェルの内向きのサーフェスまでもが除去されます。
[Output Log (出力ログ)] パネルで、除去できたトライアングルの数など Jacketing ツールの結果を確認できます。
メッシュ ターゲット モードで Jacketing ツールは、スタティック メッシュ アセットを変更します。これらのアセットがレベルのどこか他の場所またはプロジェクトの他のレベルで使用されいる場合、それらのインスタンスも自動的にアップデートされて新規ジオメトリを表示します。
プロジェクト設定
Jacketing ツールを使用するには、ご使用のプロジェクトの Polygon Editing プラグインを有効にします。
Architecture, Engineering, and Construction または Automotive, Manufacturing, and Product Design カテゴリのいずれかのテンプレートから開始した場合は、このプラグインがデフォルトですでに有効になっていることがあります。
Polygon Editing プラグインは 64-bit Windows のみでサポートされています。
レベルのビューポートの Jacketing
レベルのビューポートに Jacketing を適用するには以下を実行します。
オクルージョン テストで対象にしたいレベルのスタティック メッシュ アクタを選択します。筐体の外側を構成するメッシュおよび内側のメッシュを選択してください。
レベルのビューポートまたは [アウトライナ] で選択したアクタを右クリックして [Jacketing] を選択します。
[Remove occluded meshes] ウィンドウで、オクルージョン テストの感度を設定し、影響を与えたいターゲットを設定します。
設定
説明
Voxel precision
オクルージョン テストの感度を制御します。小さなモデルを対象に値を小さくして精度を上げます。
この設定はコリジョン テストの速さおよびメモリ要件に直接影響します。比較的大きな値から開始して、要求された忠実さが得られるまで値を下げていってください。
Gap max diameter
オクルージョン テストで埋まっていると判断されるオクルージョンするボリュームのギャップの最大サイズを設定します。
この値を低くしすぎないでください。詳細については上の「隙間」セクションを参照してください。
Action Level
ツールが Level (レベル) ターゲットか Mesh (メッシュ) ターゲットのどちらを使用するかを選択します。
Action Type
Level ターゲットの使用を選択すると Action Type ドロップダウンリストが使用され、Jacketing ツールが完全にオクルードされたアクタのセットに実行することを選択します。詳細については、上記の「レベル ターゲット]」を参照してください。
Proceed をクリックするとオクルージョン テストを開始します。
メッシュ ターゲットを選択すると、修正したメッシュはダーディとしてマークされます。変更内容を保持したければ Unreal Editor を閉じる前に保存してください。
エディタ スクリプトでの Jacketing
レベルのビューポート (および アウトライナ) で提供された Jacketing の操作をブループリントと Python でも同様に実行できます。
前提条件: 今回の使用が初めての場合は、Editor Scripting Utilities プラグインをインストールしてください。詳細は「エディタをスクリプト化および自動化する」を参照してください。
実装方法を選んでください。
Python