家で使用する 3D モデルの作成

Windows Mixed Reality ホームは出発点であり、ユーザーはここに移動してからアプリケーションを起動します。 Windows Mixed Reality ヘッドセット用のアプリケーションを設計するときは、3D モデルをアプリ ランチャーとして使用し、3D ディープ リンクを Windows Mixed Reality ホームに配置します。 この記事では、Windows Mixed Reality ホームと互換性のある 3D モデルを作成するためのガイドラインをまとめています。

資産要件の概要

Windows Mixed Reality の 3D モデルを作成する場合、すべての資産が満たすべき要件がいくつか存在します。

  1. エクスポート - 資産は .glb (バイナリ glTF)、.obj、または .fbx ファイル形式で配信する必要があります。
  2. モデリング - 資産の三角形の数は 10,000 未満、LOD あたりのノード数は 64 以下、サブメッシュ数は 32 以下とする必要があります
  3. 素材 - テクスチャは 4096 x 4096 より大きくすることはできず、どの次元でも最小の MIP マップを 4 より大きくすることはできません
  4. アニメーション - アニメーションは 30 FPS (36,000 キーフレーム) で 20 分より長くすることはできず、<= 8192 のモーフ ターゲット頂点を含める必要があります
  5. 最適化 - 資産はWindowsMRAssetConverter を使用して最適化する必要があります。 Windows OS バージョン <= 1709 で必須*、Windows OS バージョン >= 1803 で推奨

Note

3D ビューアー アプリはさまざまな形式と解像度をサポートしますが、最終的には、Mixed Reality ホームに表示する前にモデルを .glb/glTF に変換します。

この記事の残りの部分では、これらの要件の詳しい概要と、モデルが Windows Mixed Reality ホームで適切に機能するための追加のガイドラインを示します。

詳細なガイダンス

モデルのエクスポート

Windows Mixed Reality ホームでは、画像とバイナリ データが埋め込まれた .glb ファイル形式を使用して 3D 資産が配信されることを想定しています。 glb は、Khronos グループによって管理されている 3D 資産配信用のロイヤリティ フリーのオープン標準である glTF 形式のバイナリ バージョンです。 相互運用可能な 3D コンテンツの業界標準として glTF が進化するのに合わせて、Microsoft でも Windows アプリとエクスペリエンス全体でこの形式をサポートする予定です。 これまでに glTF 資産を作成していない場合は、glTF 作業グループの GitHub ページで サポートされているエクスポーターとコンバーターの一覧を見つけることができます。

モデリング ガイドライン

Windows では、Mixed Reality ホームのエクスペリエンスとの互換性を確保するために、次のモデリング ガイドラインを使用して資産が生成されることを想定しています。 任意のプログラムでモデリングする場合は、次の推奨事項と制限事項に留意してください。

  1. 上下軸は "Y" に設定する必要があります。
  2. 資産の "前方" を Z 軸の正の方向に合わせる必要があります。
  3. すべての資産は、シーンの原点 (0, 0, 0) の平面上に構築する必要があります
  4. 資産をワールドスケールで作成するため、作業単位をメートルと資産に設定する必要があります
  5. すべてのメッシュを結合する必要はありませんが、使用するデバイスのリソースに限りがある場合は、そうすることをお勧めします
  6. すべてのメッシュで 1 つの素材を共有する必要があり、資産全体で使用するテクスチャ セットは 1 つだけです
  7. UV は、0-1 空間内に四角形の配置でレイアウトする必要があります。 テクスチャのタイリングは使用できますが避けてください。
  8. マルチ UV はサポートされません
  9. 両面の素材はサポートされません

三角形の数と詳細レベル (LOD)

Windows Mixed Reality ホームは、三角形の数が 10,000 を超えるモデルはサポートしません。 メッシュがこの数を超えないよう、エクスポートする前にメッシュを三角形に分割することをお勧めします。 Windows MR では、パフォーマンスが高く高品質なエクスペリエンスを実現するために、オプションのジオメトリ詳細レベル (LOD) もサポートしています。 WindowsMRAssetConverter を利用すると、モデルの 3 つのバージョンを 1 つの .glb モデルに結合できます。 Windows では、モデルが使用している画面領域の量に基づいて、どの LOD を表示するかを決定します。 サポートされる LOD レベルは 3 つのみで、推奨されている三角形の数は次のとおりです。

LOD レベル 推奨されている三角形の数 三角形の最大数
LOD 0 10,000 10,000
LOD 1 5,000 10,000
LOD 2 2,500 10,000

ノード数とサブメッシュの制限

Windows Mixed Reality ホームでは、LOD あたり 64 を超えるノード、または 32 を超えるサブメッシュを含むモデルはサポートしません。 ノードは、シーン内のオブジェクトを定義する glTF 仕様の 1 つの概念です。 サブメッシュは、オブジェクトのメッシュ上のプリミティブの配列で定義します。

機能 説明 サポートされている最大数 ドキュメント
Nodes glTF シーン内のオブジェクト LOD あたり 64 こちら
サブメッシュ すべてのメッシュ上のプリミティブの合計 LOD あたり 32 こちら

素材のガイドライン

テクスチャは、PBR 金属粗さのワークフローを使用して準備する必要があります。 まず、アルベド、法線、オクルージョン、メタリック、粗さを含む完全なテクスチャ セットを作成します。 Windows Mixed Reality でサポートされるテクスチャの解像度は最大 4096x4096 ですが、512x512 で作成することをお勧めします。 テクスチャは、4 の倍数の解像度で作成する必要があります。 これは、以下で説明するエクスポート手順でテクスチャに適用される圧縮形式の要件です。 MIP マップまたはテクスチャを生成する場合、最小 MIP を最大 4x4 にする必要があります。

推奨テクスチャ サイズ 最大テクスチャ サイズ 最小 MIP
512 x 512 4096x4096 最大 4x4

アルベド (ベース カラー) マップ

照明情報を含まない未加工の色。 このマップには、金属 (メタリック マップの白) 絶縁体 (メタリック マップの黒) の表面のそれぞれの反射率と拡散情報も含まれています。

Normal

接空間の法線マップ

粗さマップ

オブジェクトのマイクロサーフェイスについて説明します。 白 1.0 は粗く、黒 0.0 は滑らかです。 このマップは実際に表面を表すため、資産に大きな特徴を与えます。 たとえば、傷、指紋、しみ、汚れなどです。

アンビエント オクルージョン マップ

反射をブロックする、遮光された光の領域を示す値のスケール マップです

メタリック マップ

金属部分があるかどうかをシェーダーに指示します。 未加工金属 = 1.0 白、非金属 = 0.0 黒。 泥など、未加工金属を覆うものがあることを示す推移的なグレーの値が存在する可能性もありますが、通常、このマップは白黒のみです。

最適化

Windows Mixed Reality ホームには、カスタム拡張機能を使用して定義された、gITF のコア仕様への追加となる一連の最適化が用意されています。 これらの最適化は、Windows バージョン <= 1709 で必須であり、新しいバージョンの Windows では推奨です。 glTF 2.0 モデルは、GitHub で利用できる Windows Mixed Reality Asset Converter を使用して簡単に最適化できます。 このツールで、次に示すような、適切なテクスチャ パッキングと最適化が実行されます。 一般的な使用方法として WindowsMRAssetConverter を使用することをお勧めしますが、エクスペリエンスをより細かく制御する必要があり、独自の最適化パイプラインを構築する場合は、以下の詳細な仕様を参照してください。

Note

モデルの詳細な制限事項に対して何が可能であるかを明確に示す一覧については、Dynamics 365 アプリケーションで使用する 3D モデルの最適化に関する記事を参照してください。

素材

Mixed Reality 環境での資産の読み込み時間を向上するために、Windows MR では、このセクションで定義されているテクスチャ パッキング スキームに従ってパックされた圧縮 DDS テクスチャのレンダリングをサポートします。 DDS テクスチャは、MSFT_texture_dds 拡張機能を使用して参照されます。 テクスチャは圧縮することを強くお勧めします。

HoloLens

HoloLens ベースの Mixed Reality エクスペリエンスでは、次のパッキング仕様を使用して 2 テクスチャ設定でテクスチャがパックされることを想定しています。

glTF プロパティ テクスチャ パッキング スキーム
pbrMetallicRoughness baseColorTexture 赤 (R)、緑 (G)、青 (B)
MSFT_packing_normalRoughnessMetallic normalRoughnessMetallicTexture 法線 (RG)、粗さ (B)メタリック (A)

DDS テクスチャを圧縮する場合、各マップで次の圧縮が想定されます。

テクスチャ 想定される圧縮
baseColorTexture、normalRoughnessMetallicTexture BC7

イマーシブ (VR) ヘッドセット

イマーシブ (VR) ヘッドセット用の PC ベースの Windows Mixed Reality エクスペリエンスでは、次のパッキング仕様を使用して 3 テクスチャ設定でテクスチャがパックされることを想定しています。

Windows OS >= 1803

glTF プロパティ テクスチャ パッキング スキーム
pbrMetallicRoughness baseColorTexture 赤 (R)、緑 (G)、青 (B)
MSFT_packing_occlusionRoughnessMetallic occlusionRoughnessMetallicTexture オクルージョン (R)、粗さ (G)、メタリック (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture 法線 (RG)

DDS テクスチャを圧縮する場合、各マップで次の圧縮が想定されます。

テクスチャ 想定される圧縮
normalTexture BC5
baseColorTexture、occlusionRoughnessMetallicTexture BC7
Windows OS <= 1709

glTF プロパティ テクスチャ パッキング スキーム
pbrMetallicRoughness baseColorTexture 赤 (R)、緑 (G)、青 (B)
MSFT_packing_occlusionRoughnessMetallic roughnessMetallicOcclusionTexture 粗さ (R)、メタリック (G)、オクルージョン (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture 法線 (RG)

DDS テクスチャを圧縮する場合、各マップで次の圧縮が想定されます。

テクスチャ 想定される圧縮
normalTexture BC5
baseColorTexture、roughnessMetallicOcclusionTexture BC7

メッシュ LOD を追加する

Windows MR では、ジオメトリ ノード LOD を使用し、画面のカバレッジに応じてさまざまな詳細レベルで 3D モデルをレンダリングします。 この機能は理論上では必須ではありませんが、すべての資産で推奨されています。 現在 Windows では、3 つの詳細レベルがサポートされています。 既定の LOD は 0 で、最高の品質を表します。 その他の LOD には、1、2 のように順番に番号が付けられ、品質が徐々に下がっていきます。 Windows Mixed Reality Asset Converter では、複数の gITF モデルを受け入れ、それらを有効な LOD レベルで 1 つの資産にマージすることで、この LOD 仕様を満たす資産の生成をサポートします。 次の表に、想定される LOD の順序付けと三角形のターゲットをまとめています。

LOD レベル 推奨されている三角形の数 三角形の最大数
LOD 0 10,000 10,000
LOD 1 5,000 10,000
LOD 2 2,500 10,000

LOD を使用する場合は、常に 3 つの LOD レベルを指定します。 欠落する LOD があると、LOD システムが欠落している LOD レベルに切り替えられる時に、予期せずにモデルがレンダリングされなくなります。 glTF 2.0 では、現在コア仕様の一部として LOD をサポートしていません。LOD は MSFT_LOD 拡張機能を使用して定義する必要があります。

画面カバレッジ

LOD は、各 LOD に設定された画面カバレッジの値によって制御されるシステムに基づき、Windows Mixed Reality に表示されます。 現在、より多くの画面領域を使用しているオブジェクトは、より高い LOD レベルで表示されます。 画面カバレッジは、glTF 2.0 のコア仕様には含まれず、MSFT_lod 拡張機能の “extras” セクションで MSFT_ScreenCoverage を使用して指定する必要があります。

LOD レベル 推奨範囲 既定範囲
LOD 0 100% - 50% 0.5
LOD 1 50% 未満 - 20% 0.2
LOD 2 20% 未満 - 1% 0.01
LOD 4 1% 未満 -

アニメーションのガイドライン

Note

この機能は、Windows 10 April 2018 Update の一部として追加されました。 以前のバージョンの Windows ではこれらのアニメーションは再生されませんが、この記事のガイダンスに従って作成された場合は読み込まれます。

Mixed Reality ホームでは、アニメーション化された gITF オブジェクトが HoloLens およびイマーシブ (VR) ヘッドセットでサポートされます。 モデルでアニメーションをトリガーする場合は、glTF 形式でアニメーション マップ拡張機能を使用する必要があります。 この拡張機能を使用すると、ユーザーがその世界に存在していることを前提に、glTF モデルでアニメーションをトリガーできます。たとえば、ユーザーがオブジェクトに近づいたとき、またはそれを見ているときにアニメーションをトリガーできます。 glTF オブジェクトにアニメーションがあっても、トリガーが定義されていない場合、アニメーションは再生されません。 以下のセクションでは、これらのトリガーをアニメーション化された glTF オブジェクトに追加する 1 つのワークフローについて説明します。

ツール

まず、次のツールをダウンロードします (まだ行っていない場合)。 これらのツールを使用すると簡単に、glTF モデルを開いてプレビューし、変更を加えて glTF または .glb として保存できます。

  1. Visual Studio Code
  2. Visual Studio Code 用の glTF ツール

モデルを開いてプレビューする

まず、VSCode で、.glTF ファイルをエディター ウィンドウにドラッグして gITF モデルを開きます。 .glTF ファイルではなく .glb がある場合は、ダウンロードした glTF ツール アドオンを使用して VSCode にインポートできます。 [表示] -> [コマンド パレット] と移動し、コマンド パレットに「glTF」と入力し、[glTF: Import from glb](glTF: glb からインポートする) を選択します。これにより、.glb のインポートに使用するファイル ピッカーがポップアップ表示されます。

glTF モデルが開いたら、エディター ウィンドウに JSON が表示されます。 また、ライブ 3D ビューアーでモデルをプレビューすることもできます。それには、ファイル名を右クリックし、右クリック メニューから [glTF: Preview 3D Model](glTF: 3D モデルのプレビュー) コマンド ショートカットを選択します。

トリガーを追加する

アニメーション トリガーは、アニメーション マップ拡張機能を使用して glTF モデルの JSON に追加します。 アニメーション マップ拡張機能は、GitHub 上のこちらに公開されています (注: これはドラフト拡張機能です)。 モデルにこの拡張機能を追加するには、エディターで glTF ファイルの末尾までスクロールし、"extensionsUsed" および "extensions" ブロックを (まだ存在していなければ) ファイルに追加します。 "extensionsUsed" セクションで、"EXT_animation_map" 拡張機能への参照を追加し、"extensions" ブロックでモデルのアニメーションへのマッピングを追加します。

仕様に示されているように、"animations" の一覧 (アニメーション インデックスの配列) の上の "semantic" 文字列を使用して、何がアニメーションをトリガーするかを定義します。 下の例では、ユーザーがオブジェクトを凝視しているときにアニメーションを再生することを指定しています。

  "extensionsUsed": [
    "EXT_animation_map"
  ],
  "extensions" : {
      "EXT_animation_map" : {
            "bindings": [
                {
                    "semantic": "GAZE",
                    "animations": [0]
                }
            ]
      }
  }

次のアニメーション トリガー セマンティクスが、Windows Mixed Reality ホームでサポートされています。

  • "ALWAYS": アニメーションを連続的にループ再生します
  • "HELD": オブジェクトがグラブされている間はずっと、ループ再生されます。
  • "GAZE": オブジェクトが見られている間はループ再生されます
  • "PROXIMITY": ビューアーがオブジェクトの近くにいる間はループ再生します
  • "POINTING": ユーザーがオブジェクトを指さしている間はループ再生します

保存とエクスポート

glTF モデルに変更を加えたら、直接 glTF として保存できます。 また、エディターでファイルの名前を右クリックし、[glTF: Export to GLB (binary file)](glTF: GLB (バイナリ ファイル) にエクスポート) を選択して .glb をエクスポートすることもできます。

制限

アニメーションは 20 分より長くすることはできません。また、36,000 (30 FPS で 20 分) を超えるキーフレームを含めることもできません。 また、モーフ ターゲットベースのアニメーションを使用する場合は、8192 のモーフ ターゲット頂点を超えないでください。 これらの数を超えると、アニメーション化された資産が Windows Mixed Reality ホームでサポートされなくなります。

機能 最大値
Duration 20 分
キーフレーム 36,000
モーフ ターゲット頂点 8192

gITF の実装に関する注意事項

Windows MR では、負のスケールを使用したジオメトリの反転をサポートしていません。 負のスケールを使用するジオメトリによって、ビジュアル成果物が生成される可能性があります。

gITF 資産は、Windows MR によってレンダリングされるシーン属性を使用して、既定のシーンをポイントする必要があります。 さらに、Windows 10 April 2018 update より前の Windows MR gITF ローダーにはアクセサーが必要です。

  • 最小値と最大値が必要です。
  • SCALAR 型は、componentType UNSIGNED_SHORT (5123) または UNSIGNED_INT (5125) であることが必要です。
  • VEC2 および VEC3 型は、componentType FLOAT (5126) であることが必要です。

次の素材プロパティは、glTF 2.0 のコア仕様で使用されていますが、必須ではありません。

  • baseColorFactor、metallicFactor、roughnessFactor
  • baseColorTexture: dds に格納されているテクスチャをポイントする必要があります。
  • emissiveTexture: dds に格納されているテクスチャをポイントする必要があります。
  • emissiveFactor
  • alphaMode

次の素材プロパティはコア仕様では無視されます。

  • すべてのマルチ UV
  • metalRoughnessTexture: 代わりに、以下で定義されている Microsoft 最適化テクスチャ パッキングを使用する必要があります
  • normalTexture: 代わりに、以下で定義されている Microsoft 最適化テクスチャ パッキングを使用する必要があります
  • normalScale
  • occlusionTexture: 代わりに、以下で定義されている Microsoft 最適化テクスチャ パッキングを使用する必要があります
  • occlusionStrength

Windows MR では、プリミティブ モードの線とポイントをサポートしていません。

1 つの UV 頂点属性のみがサポートされています。

その他のリソース

関連項目