ホームで使用する 3D モデルを作成する
Windows Mixed Realityホームは、ユーザーがアプリケーションを起動する前に着陸する出発点です。 Windows Mixed Reality ヘッドセット用のアプリケーションを設計するときは、3D モデルをアプリ起動ツールとして使用し、3D ディープ リンクを Windows Mixed Reality ホームに配置します。 この記事では、Windows Mixed Reality ホームと互換性のある 3D モデルを作成するためのガイドラインについて説明します。
資産要件の概要
Windows Mixed Realityの 3D モデルを作成する場合、すべての資産が満たす必要がある要件がいくつかあります。
- エクスポート - アセットは、.glb (バイナリ glTF)、.obj、または .fbx ファイル形式で配信する必要があります
- モデリング - アセットは 10,000 個未満の三角形にする必要があります。ノード数は 64 個以下、LOD あたり 32 サブメッシュ
- マテリアル - テクスチャは 4096 x 4096 より大きくすることはできません。最小ミップ マップは、どちらの次元でも 4 以下にする必要があります
- アニメーション - アニメーションは 30 FPS (36,000 キーフレーム) で 20 分を超えることはできません。また、 <= 8192 モーフ ターゲット頂点を含める必要があります
- 最適化 - 資産は WindowsMRAssetConverter を使用して最適化する必要があります。 Windows OS バージョン <= 1709* で必須であり、Windows OS バージョン >= 1803 で推奨されます
注:
3D Viewer アプリはさまざまな形式と解像度をサポートしていますが、最終的にはモデルを .glb/glTF に変換してから、Mixed Realityホームに表示します。
この記事の残りの部分には、これらの要件の詳細な概要と、モデルがWindows Mixed Realityホームで適切に動作するようにするための追加のガイドラインが含まれています。
詳細なガイダンス
モデルのエクスポート
Windows Mixed Realityホームでは、埋め込み画像とバイナリ データを含む .glb ファイル形式を使用して 3D アセットが配信されることを想定しています。 Glb は glTF 形式のバイナリ バージョンであり、Khronos グループが管理する 3D アセット配信用のロイヤリティフリーオープン標準です。 glTF が相互運用可能な 3D コンテンツの業界標準として進化するにつれて、Windows アプリとエクスペリエンス全体の形式に対する Microsoft のサポートも同様になります。 glTF アセットを作成していない場合は、 glTF 作業グループ github ページでサポートされているエクスポーターとコンバーターの一覧 を見つけることができます。
モデリング ガイドライン
Windows では、Mixed Reality ホーム エクスペリエンスとの互換性を確保するために、次のモデリング ガイドラインを使用して資産が生成されることを想定しています。 任意のプログラムでモデリングを行う場合は、次の推奨事項と制限事項に注意してください。
- アップ軸は "Y" に設定する必要があります。
- 資産は、正の Z 軸に向かって "前方" に向かう必要があります。
- すべてのアセットは、シーンの原点の地上平面上に構築する必要があります (0,0,0)
- 資産を世界規模で作成できるように、作業単位をメートルと資産に設定する必要があります
- すべてのメッシュを組み合わせる必要はありませんが、リソースに制約のあるデバイスをターゲットにする場合は推奨されます
- すべてのメッシュが 1 つのマテリアルを共有する必要があり、アセット全体に使用されるテクスチャ セットは 1 つだけです
- UV は、0 から 1 のスペースに正方形の配置でレイアウトする必要があります。 テクスチャは許可されていますが、タイリングは避けてください。
- マルチ UV はサポートされていません
- 両面素材はサポートされていません
三角形の数と詳細レベル (LOD)
Windows Mixed Realityホームでは、10,000 を超える三角形を持つモデルはサポートされていません。 エクスポートする前にメッシュを三角形化して、この数を超えないようにすることをお勧めします。 Windows MR では、パフォーマンスと高品質のエクスペリエンスを確保するために、オプションのジオメトリ レベルの詳細 (LOD) もサポートされています。
WindowsMRAssetConverter は、3 つのバージョンのモデルを 1 つの .glb モデルに結合するのに役立ちます。 Windows では、モデルが占有している画面の不動産の量に基づいて、表示する LOD が決定されます。 次の推奨される三角形の数では、3 つの LOD レベルのみがサポートされています。
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 仕様 の概念です。 サブメッシュは、オブジェクト内のメッシュ上の プリミティブ の配列で定義されます。
機能 | 説明 | サポートされる最大数 | ドキュメント |
---|---|---|---|
Nodes | glTF シーン内のオブジェクト | LOD あたり 64 | ここは |
サブメッシュ | すべてのメッシュのプリミティブの合計 | LOD あたり 32 | ここは |
マテリアル ガイドライン
テクスチャは、PBR 金属粗さのワークフローを使用して準備する必要があります。 まず、アルベド、標準、オクルージョン、メタリック、ラフネスなどのテクスチャの完全なセットを作成します。 Windows Mixed Realityでは、最大 4096 x 4096 の解像度を持つテクスチャがサポートされていますが、512x512 で作成することをお勧めします。 テクスチャは、4 の倍数の解像度で作成する必要があります。 これは、次に示すエクスポート手順でテクスチャに適用される圧縮形式の要件です。 ミップ マップまたはテクスチャを生成する場合、最も小さいミップは最大 4x4 である必要があります。
推奨テクスチャ サイズ | テクスチャの最大サイズ | 最も低いミップ |
---|---|---|
512x512 | 4096x4096 | 最大 4x4 |
Albedo (基本色) マップ
照明情報のない生の色。 このマップには、金属 (金属マップの白) サーフェスと絶縁体 (金属マップの黒) サーフェスの反射率と拡散情報も含まれています。
標準
タンジェントスペース法線マップ
粗さマップ
オブジェクトのマイクロサーフェスについて説明します。 白1.0はラフ黒0.0は滑らかです。 このマップは、サーフェスを実際に記述しているため、アセットに最も多くの文字を与えます。 たとえば、傷、指紋、汚れ、汚れなどです。
アンビエント オクルージョン マップ
反射をブロックする隠れた光の領域を示す値スケール マップ
メタリックマップ
何かが金属であるかどうかをシェーダーに伝えます。 未加工金属 = 1.0 白 非金属 = 0.0 黒。 汚れなどの生金属を覆う何かを示す遷移灰色の値が存在する場合がありますが、一般的に、このマップは白黒のみである必要があります。
最適化
Windows Mixed Realityホームでは、カスタム拡張機能を使用して定義されたコア glTF 仕様の上に一連の最適化が提供されます。 これらの最適化は、Windows バージョン <= 1709 で必要であり、新しいバージョンの Windows では推奨されます。 GitHub で利用できるWindows Mixed Reality Asset Converter を使用すると、任意の glTF 2.0 モデルを簡単に最適化できます。 このツールは、次に示すように、正しいテクスチャ パッキングと最適化を実行します。 一般的な使用方法については、WindowsMRAssetConverter を使用することをお勧めしますが、エクスペリエンスをより詳細に制御する必要があり、独自の最適化パイプラインを構築したい場合は、以下の詳細な仕様を参照してください。
注:
正確なモデル制限の可能性の明確な一覧については、Dynamics 365 アプリケーションで使用する 3D モデルの最適化に関する記事を参照してください。
料
Mixed Reality環境でのアセットの読み込み時間を短縮するために、Windows MR では、このセクションで定義されているテクスチャ パッキング スキームに従って圧縮された DDS テクスチャパックのレンダリングがサポートされます。 DDS テクスチャは、 MSFT_texture_dds拡張機能を使用して参照されます。 テクスチャの圧縮を強くお勧めします。
HoloLens
HoloLens ベースの Mixed Reality エクスペリエンスでは、次のパッキング仕様を使用して、2 テクスチャセットアップを使用してテクスチャをパックすることが想定されています。
glTF プロパティ | Texture | パッキング スキーム |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 赤 (R)、緑 (G)、青 (B) |
MSFT_packing_normalRoughnessMetallic | normalRoughnessMetallicTexture | 標準 (RG)、粗さ (B)、金属 (A) |
DDS テクスチャを圧縮する場合、各マップで次の圧縮が予想されます。
Texture | 予想される圧縮 |
---|---|
baseColorTexture, normalRoughnessMetallicTexture | BC7 |
イマーシブ (VR) ヘッドセット
イマーシブ (VR) ヘッドセット用の PC ベースのWindows Mixed Reality エクスペリエンスでは、次のパッキング仕様を使用して、3 テクスチャ セットアップを使用してテクスチャがパックされることを想定しています。
Windows OS >= 1803
glTF プロパティ | Texture | パッキング スキーム |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 赤 (R)、緑 (G)、青 (B) |
MSFT_packing_occlusionRoughnessMetallic | occlusionRoughnessMetallicTexture | オクルージョン (R)、ラフネス (G)、メタリック (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normal (RG) |
DDS テクスチャを圧縮する場合、各マップで次の圧縮が予想されます。
Texture | 予想される圧縮 |
---|---|
normalTexture | BC5 |
baseColorTexture, オクルージョンRoughnessMetallicTexture | BC7 |
Windows OS <= 1709
glTF プロパティ | Texture | パッキング スキーム |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 赤 (R)、緑 (G)、青 (B) |
MSFT_packing_occlusionRoughnessMetallic | roughnessMetallicOcclusionTexture | 粗さ (R)、メタリック (G)、オクルージョン (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | Normal (RG) |
DDS テクスチャを圧縮する場合、各マップで次の圧縮が予想されます。
Texture | 予想される圧縮 |
---|---|
normalTexture | BC5 |
baseColorTexture, 粗さMetallicOcclusionTexture | BC7 |
メッシュ LOD の追加
Windows MR では、ジオメトリ ノードの LOD を使用して、画面のカバレッジに応じて異なる詳細レベルで 3D モデルをレンダリングします。 この機能は技術的には必要ありませんが、すべての資産に推奨されます。 現在、Windows では 3 レベルの詳細がサポートされています。 既定の LOD は 0 で、これは最高品質を表します。 その他の LOD は、1、2 など、順番に番号付けされ、品質が徐々に低下します。
Windows Mixed Reality Asset Converter では、複数の glTF モデルを受け入れ、有効な 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% 以下 | - |
アニメーションのガイドライン
注:
この機能は、2018 年 4 月の更新プログラムWindows 10の一部として追加されました。 以前のバージョンの Windows では、これらのアニメーションは再生されませんが、この記事のガイダンスに従って作成した場合でも読み込まれます。
Mixed Reality ホームでは、HoloLens とイマーシブ (VR) ヘッドセット上のアニメーション glTF オブジェクトがサポートされています。 モデルでアニメーションをトリガーする場合は、glTF 形式でアニメーション マップ拡張機能を使用する必要があります。 この拡張機能を使用すると、ユーザーがオブジェクトに近づいたときに、またはオブジェクトを見ているときにアニメーションをトリガーするなど、世界でのユーザーの存在に基づいて glTF モデルのアニメーションをトリガーできます。 glTF オブジェクトにアニメーションがあるのにトリガーが定義されていない場合、アニメーションは再生されません。 以下のセクションでは、アニメーション化された glTF オブジェクトにこれらのトリガーを追加するための 1 つのワークフローについて説明します。
ツール
最初に、次のツールがまだない場合はダウンロードします。 これらのツールを使用すると、glTF モデルを簡単に開き、プレビューし、変更を加え、glTF または .glb として保存できます。
モデルを開いてプレビューする
まず、.glTF ファイルをエディター ウィンドウにドラッグして、VSCode で glTF モデルを開きます。 .glTF ファイルの代わりに .glb を使用している場合は、ダウンロードした glTF Tools アドオンを使用して VSCode にインポートできます。 [表示-> コマンド パレット] に移動し、コマンド パレットで「glTF」と入力し、"glTF: glb からインポート" を選択します。これにより、.glb をインポートするためのファイル ピッカーがポップアップ表示されます。
glTF モデルを開くと、エディター ウィンドウに JSON が表示されます。 ファイル名を右クリックし、右クリック メニューから [glTF: Preview 3D Model] コマンド ショートカットを選択して、 を使用して、ライブ 3D ビューアーでモデルをプレビューすることもできます。
トリガーの追加
アニメーション トリガーは、アニメーション マップ拡張機能を使用して glTF モデル JSON に追加されます。 アニメーション マップ拡張機能は、 GitHub で 公開されています (注: THIS IS A DRAFT EXTENSION)。 モデルに拡張機能を追加するには、エディターで glTF ファイルの末尾までスクロールし、ファイルに "extensionsUsed" ブロックと "extensions" ブロックを追加します (まだ存在しない場合)。 [extensionsUsed] セクションでは、"EXT_animation_map" 拡張機能への参照を追加し、[拡張機能] ブロックでモデル内のアニメーションにマッピングを追加します。
仕様で説明したように、アニメーション インデックスの配列である "animations" の一覧で "セマンティック" 文字列を使用してアニメーションをトリガーする方法を定義します。 次の例では、ユーザーがオブジェクトを見つめているときに再生するアニメーションを指定しました。
"extensionsUsed": [
"EXT_animation_map"
],
"extensions" : {
"EXT_animation_map" : {
"bindings": [
{
"semantic": "GAZE",
"animations": [0]
}
]
}
}
次のアニメーション トリガー セマンティクスは、Windows Mixed Reality ホームでサポートされています。
- "ALWAYS": アニメーションを常にループする
- "HELD": オブジェクトがつかまれる間、ループされます。
- "GAZE": オブジェクトの検索中にループ
- "PROXIMITY": ビューアーがオブジェクトの近くにある間にループ
- "POINTING": ユーザーがオブジェクトを指している間にループ
保存とエクスポート
glTF モデルに変更を加えたら、glTF として直接保存できます。 また、エディターでファイルの名前を右クリックし、[glTF: GLB にエクスポート (バイナリ ファイル)] を選択して .glb をエクスポートすることもできます。
制限
アニメーションは 20 分を超えることはできません。また、36,000 個を超えるキーフレーム (30 FPS で 20 分) を含めることはできません。 さらに、モーフ ターゲット ベースのアニメーションを使用する場合は、モーフ ターゲット頂点が 8192 以下です。 これらの数を超えると、Windows Mixed Realityホームでアニメーションアセットがサポートされなくなります。
機能 | 最大 |
---|---|
期間 | 20 分 |
キーフレーム | 36,000 |
モーフ ターゲット頂点 | 8192 |
glTF 実装に関する注意事項
Windows MR では、負のスケールを使用したジオメトリの反転はサポートされていません。 スケールが負のジオメトリでは、視覚的なアーティファクトが発生する可能性があります。
glTF アセットは、Windows MR によってレンダリングされるシーン属性を使用して、既定のシーンを指す必要があります。 さらに、2018 年 4 月の更新プログラムWindows 10前の Windows MR glTF ローダーには、アクセサーが必要です。
- 最小値と最大値が必要です。
- TYPE 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 では、プリミティブ モードの行とポイントはサポートされていません。
サポートされている UV 頂点属性は 1 つだけです。
その他のリソース
- glTF エクスポーターとコンバーター
- glTF Toolkit
- glTF 2.0 仕様
- Microsoft glTF LOD 拡張機能の仕様
- PC Mixed Reality テクスチャ パッキング拡張機能の仕様
- HoloLens Mixed Reality テクスチャ パッキング拡張機能の仕様
- Microsoft DDS Textures glTF 拡張機能の仕様