Dynamics 365 Guides または Power Apps で作成されたアプリに含まれる Mixed Reality コンポーネントで使用するための、リアルタイム 3D オブジェクトの変換と最適化を行うためのベスト プラクティス
このトピックでは、Dynamics 365 Guides および Power Apps で作成された Mixed Reality コンポーネントを含むアプリのために、3D オブジェクトを変換して最適化するためのベスト プラクティスについて説明します。
マテリアルとサーフェスを減らす
3D オブジェクトのソースとコンテンツの表現方法によっては、物理ベース レンダリング (PBR) システムの全機能を使用するができます。 PBR システムでは、カラー、粗さ、バンプを視覚的に表現するために、テクスチャ マップを作成します。3D オブジェクトに多数のさまざまなマテリアルや、複雑なサーフェスを含む必要がありません。
単にアセットが存在する必要があり、PBR システムが提供する詳細は必要ない場合には、単一色のみを適用することにより、パフォーマンスを大幅に向上できます。 これにより、さまざまなカラー、反射、バンプなどの、必要のないテクスチャ データとサーフェス情報が除外されます。
A. PBR システムを使用しない、高パフォーマンスの単一色の 3D オブジェクト
B. PBR システムを使用した、高品質な表現の 3D オブジェクト
テクスチャを減らす
粗さマップを減らすと、モデルのパフォーマンスを向上できます。
A. 粗さマップ テクスチャが 2048 x 2048 のモデル
B. 粗さマップ テクスチャが 1024 x 1024 のモデル解像度とテクスチャの量を減らすと、メモリ消費とファイル サイズに最大の影響があります。
視覚的な影響に基づいて、テクスチャを減らします。 たとえば、多くの場合、メタリック粗さマップをベース カラー マップと法線マップの半分の解像度にしても、認識できる品質の低下はありません。
JPG 圧縮と PNG 量子化によってファイル サイズをさらに削減できますが、実行時のモデルの読み込み時に必要なメモリには影響しません。
非表示データと不使用データの削除
3D オブジェクトの表現に必要のないデータは必ず削除します。 必要のないノード、メッシュ、マテリアル、テクスチャが、多数追加されていることがあります。 たとえば、次の 3D オブジェクトでは、非表示のモーター パーツを削除すると、三角形の数が減り、階層が単純化され、3D オブジェクトのパフォーマンスが向上します。
Autodesk Inventor でビジュアル化されたワイヤーフレームとシェード モデル。
三角形を減らす
三角形または頂点の数が多いと、パフォーマンスが低下する可能性があります。これは特にパフォーマンスに制約のあるデバイスで発生します。
モデルの使用法が事前にわかっている場合は、三角形を減らすことができます。 重要性の低いエリアで集中的に減らし、重要なエリアではメッシュ密度を高くします。
詳細なジオメトリ サーフェスとマテリアルのカラーは、多くの場合、法線マップ、カラー マップ、ORM (オクルージョン、粗さ、メタリック) マップにベイク処理して置き換えることができます。これにより、三角形を大幅に減らすことができます。
A. ネイティブ CAD 3D オブジェクト
B. 法線マップを使用して三角形の数を減らしたポリゴン モデル
C. 法線マップで最適化されたモデル
ドロー コールを減らす
ドロー コールとは、フレームごとのグラフィック命令の数を指します。これは、画面上のマテリアルの数です。 オブジェクトのマテリアルを減らすか、統合すると、ドロー コールを減らすことができます。
この例では、複数のテクスチャを 1 つのテクスチャに統合して、ドロー コールが 22 から 1 に減少しました。
最も一般的な実行時のパフォーマンスのボトルネックは、多数のドロー コールが原因であることがあります。
複数のマテリアルからテクスチャ アトラスを作成し、メッシュをマージすると、ドロー コールを統合できます。
階層の複雑さを減らす
グループ化、ペアレンティング、多数のノード (ヌル、ロケーター、生の曲線、メッシュ、ジョイントなど) は、実行時のパフォーマンスの低下につながることがあります。
可能な場合には、階層を簡素化し、不要なノードを削除して、メッシュを結合します。
メッシュを結合してドロー コールを減らします。 Autodesk 3DS Max でビジュアル化されています。
A. 元の階層
B. 最適化された階層glTF は、マテリアルとアトラス マテリアルごとに 1 つのメッシュを作成して、ノード数とドロー コールを減らします。
ジオメトリ面の間の距離を増やす
ジオメトリ面が同一平面上またはほぼ同一平面上にある場合、フリッカーが発生する可能性があります。特に、モデルがアニメーション化されている場合や、アプリケーション内で移動する場合によく発生します。 これは、ジオメトリ面が重複していることを意味し、いわゆる Z ファイティングが発生します。
2 つの形状がほぼ重複し、Zファイティング効果が発生しています。
多くの場合、ジオメトリ面の間の距離を少し増やすと、フリッカーの問題は解消します。
反転の面の法線を反転する
反転面の法線により、モデルが正しくシェーディングされない場合があります。
正しくシェーディングされていない面の法線を反転すると、レンダリングの問題が解決されます。
Blender でビジュアル化された面の法線。
A. 法線が反転した 3D オブジェクト
B. 法線を修正した 3D オブジェクト
接線ベースの競合
接線ベースが競合すると、法線マップが反転して表示される場合があります。
Autodesk Maya でビジュアル化された接線ベース。
A. 3D オブジェクトからベイク処理した法線マップと法線反転ネジ
B. 法線反転したオブジェクトでベイク処理した表示結果接線とモデルをエクスポートしない場合、glTF とリアルタイム レンダラーは右利きであると想定します。
左利きの設定で接線空間の法線マップをベイク処理する場合は、接線とモデルをエクスポートします。 または、法線マップの緑のチャネル (Y 軸) を反転することもできます。