Windows Mixed Reality 首頁是用戶在啟動應用程式之前登陸的起點。 為 Windows Mixed Reality 頭戴式裝置設計應用程式時,請使用 3D 模型作為應用程式啟動器,並將 3D 深層連結放入 Windows Mixed Reality 首頁。 本文概述建立與 Windows Mixed Reality 首頁相容之 3D 模型的指導方針。
資產需求概觀
為 Windows Mixed Reality 建立 3D 模型時,所有資產都必須符合一些需求:
- 匯 出 - 資產必須以 .glb (二進位 glTF) 、.obj 或 .fbx 檔案格式傳遞
- 模型化 - 資產必須小於 1 萬個三角形、每個 LOD 不超過 64 個節點和 32 個子網格
- 材 質 - 紋理不能大於 4096 x 4096,而且在任一維度上,最小的 mip 對應不應大於 4
- 動畫 - 動畫在 30 個 FPS (36,000 個主要畫面格) 時不能超過 20 分鐘,而且必須包含 <= 8192 個變形目標頂點
- 優化 - 資產應該使用 WindowsMRAssetConverter 進行優化。 Windows OS 版本 <= 1709* 上為必要項目,建議使用 Windows OS 版本 >= 1803
注意事項
3D 查看器應用程式支援不同的格式和解析度,但最後會先將模型轉換成 .glb/glTF,再將其顯示在 Mixed Reality 首頁中。
本文的其餘部分包含這些需求的詳細概觀和額外的指導方針,以確保模型能在 Windows Mixed Reality 家順利運作。
詳細指引
匯出模型
Windows Mixed Reality 家預期使用 .glb 檔案格式搭配內嵌影像和二進位數據來傳遞 3D 資產。 Glb 是 glTF 格式的二進位版本,這是 Khronos 群組所維護之 3D 資產傳遞的免費版稅開放標準。 隨著 glTF 發展為可互作 3D 內容的業界標準,因此Microsoft支援跨 Windows 應用程式和體驗的格式。 如果您之前尚未建立 glTF 資產,可以在 glTF 工作組 github 頁面上找到 支持的導出工具和轉換器清單 。
模型化指導方針
Windows 預期會使用下列模型化指導方針來產生資產,以確保與 Mixed Reality 住家體驗的相容性。 在您選擇的程式中建立模型時,請記住下列建議和限制:
- 向上軸應設定為 「Y」。。
- 資產應該會朝向正 Z 軸「向前」。
- 所有資產都應該建置在場景原點的地面平面上, (0,0,0)
- 工作單位應設定為計量和資產,以便可以全球規模撰寫資產
- 不需要合併所有網格,但建議您將目標設為資源受限裝置
- 所有網格都應該共用一個材質,只有一個紋理集用於整個資產
- 0-1 空間中必須以正方形排列方式配置 PV。 雖然允許,但請避免將紋理分閂。
- 不支援多UV
- 不支援雙面材質
三角形計數和詳細數據層級 (LOD)
Windows Mixed Reality 家不支持超過10,000個三角形的模型。 建議您在匯出之前先將網格三角形,以確保它們不會超過此計數。 Windows MR 也支持選用的詳細數據幾何層級 (LOD) ,以確保高效能且高品質的體驗。
WindowsMRAssetConverter 可協助您將 3 個模型版本合併成單一 .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 金屬粗略工作流程來準備。 首先,建立一組完整的紋理,包括 Albedo、Normal、Occlusion、Metallic 和 Roughness。 Windows Mixed Reality 支援解析度高達 4096x4096 的紋理,但建議您以 512x512 撰寫。 紋理應該以倍數 4 的解析度撰寫。 這是以下所述導出步驟中套用至紋理的壓縮格式需求。 產生 mip 對應或紋理時,最低 mip 的最大值必須為 4x4。
建議的紋理大小 | 最大紋理大小 | 最低 Mip |
---|---|---|
512x512 | 4096x4096 | 最大值 4x4 |
Albedo (基底色彩) 地圖
不含光源資訊的原始色彩。 此地圖也包含五金地圖) 中的金屬 (白色的反射和擴散資訊,以及分別在金屬地圖) 表面中 (黑色的模擬器。
一般
正切空間一般地圖
粗略度對應
描述物件的微表面。 白色 1.0 是粗略的黑色 0.0 是平滑的。 此地圖會提供資產最常用的字元,如同它真正描述表面一樣。 例如,草稿、指紋、自定義、賡等。
環境遮蔽對應
顯示遮住光線區域的值縮放圖,這會封鎖反射
金屬地圖
告知著色器是否為金屬。 Raw Metal = 1.0 白色非金屬 = 0.0 黑色。 可能有過渡灰色值,表示覆蓋原始金屬的某些專案,例如灰色,但一般而言,此地圖應為黑色和白色。
優化
Windows Mixed Reality 首頁在使用自定義擴充功能定義的核心 glTF 規格之上提供一系列的優化。 Windows 版本 <= 1709 需要這些優化,建議在較新版本的 Windows 上使用。 您可以使用 GitHub 上提供的 Windows Mixed Reality 資產轉換器,輕鬆地優化任何 glTF 2.0 模型。 此工具會執行正確的紋理封裝和優化,如下所示。 針對一般使用方式,建議您使用 WindowsMRAssetConverter,但如果您需要更充分掌控體驗,而且想要建置自己的優化管線,您可以參閱下列詳細規格。
注意事項
如需確切模型限制可能性的明確清單,請參閱 3D 模型優化一文,以在 Dynamics 365 應用程式中使用。
材料
為了改善 Mixed Reality 環境中的資產載入時間,Windows MR 支援根據本節中定義的紋理封裝配置來轉譯壓縮的 DDS 紋理。 使用 MSFT_texture_dds 延伸模組來參考 DDS 紋理。 強烈建議您壓縮紋理。
HoloLens
以 HoloLens 為基礎的混合實境體驗預期使用下列封裝規格,使用 2 紋理設定來封裝紋理:
glTF 屬性 | Texture | 封裝配置 |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 紅色 (R) 、綠色 (G) 、藍色 (B) |
MSFT_packing_normalRoughnessMetallic | normalRoughnessMetallicTexture | 一般 (RG) 、粗略 (B) 、Metallic (A) |
壓縮 DDS 紋理時,每個地圖上預期會有下列壓縮:
Texture | 預期的壓縮 |
---|---|
baseColorTexture、normalRoughnessMetallicTexture | BC7 |
沉浸式 (VR) 頭戴式裝置
適用於沉浸式 (VR) 頭戴式裝置的電腦型 Windows Mixed Reality 體驗,預期使用下列封裝規格使用 3 紋理設定來封裝紋理:
Windows OS >= 1803
glTF 屬性 | Texture | 封裝配置 |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 紅色 (R) 、綠色 (G) 、藍色 (B) |
MSFT_packing_occlusionRoughnessMetallic | occlusionRoughnessMetallicTexture | 遮蔽 (R) 、粗略 (G) 、Metallic (B) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | 一般 (RG) |
壓縮 DDS 紋理時,每個地圖上預期會有下列壓縮:
Texture | 預期的壓縮 |
---|---|
normalTexture | BC5 |
baseColorTexture, occlusionRoughnessMetallicTexture | BC7 |
Windows OS <= 1709
glTF 屬性 | Texture | 封裝配置 |
---|---|---|
pbrMetallicRoughness | baseColorTexture | 紅色 (R) 、綠色 (G) 、藍色 (B) |
MSFT_packing_occlusionRoughnessMetallic | roughnessMetallicOcclusionTexture | R () 、Metallic (G) 、Occlusion (B (粗略) |
MSFT_packing_occlusionRoughnessMetallic | normalTexture | 一般 (RG) |
壓縮 DDS 紋理時,每個地圖上預期會有下列壓縮:
Texture | 預期的壓縮 |
---|---|
normalTexture | BC5 |
baseColorTexture, roughnessMetallicOcclusionTexture | BC7 |
新增網格 LOD
Windows MR 會使用幾何節點 LOD,根據螢幕涵蓋範圍,以不同層級的詳細數據呈現 3D 模型。 雖然技術上不需要這項功能,但建議所有資產使用此功能。 Windows 目前支援 3 個詳細數據層級。 默認 LOD 為 0,代表最高品質。 其他 LOD 會循序編號,例如 1、2,質量會逐漸降低。
Windows Mixed Reality Asset Converter 支援透過接受多個 glTF 模型,並將它們合併成具有有效 LOD 層級的單一資產,來產生符合此 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延伸模組的 [額外] 區段中使用 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 上,這些動畫將不會播放,不過,如果根據本文中的指引撰寫,它們仍會載入。
混合實境首頁支援 HoloLens 上的動畫 glTF 物件,以及沉浸式 (VR) 頭戴式裝置。 如果您想要在模型上觸發動畫,您必須使用 glTF 格式的動畫地圖延伸模組。 此延伸模組可讓您根據使用者在全球的存在,在 glTF 模型中觸發動畫,例如,當使用者接近物件或在查看該物件時觸發動畫。 如果您的 glTF 對象有動畫,但未定義觸發程式,動畫將不會播放。 下一節說明將這些觸發程式新增至任何動畫 glTF 物件的一個工作流程。
工具
首先,如果您還沒有下列工具,請下載這些工具。 這些工具可讓您輕鬆地開啟任何 glTF 模型、進行預覽、進行變更,並以 glTF 或 .glb 形式儲存:
開啟和預覽模型
首先,將 .glTF 檔案拖曳至編輯器視窗,以在 VSCode 中開啟 glTF 模型。 如果您有 .glb 而非 .glTF 檔案,您可以使用您下載的 glTF 工具附加元件將它匯入 VSCode。 移至 [檢視 -> 命令選擇區],然後開始在命令選擇區中輸入 “glTF”,然後選取 [glTF: 從 glb 匯入],這會彈出檔案選擇器供您匯入 .glb。
開啟 glTF 模型之後,您應該會在編輯器視窗中看到 JSON。 您也可以使用 在即時 3D 查看器中預覽模型,方法是以滑鼠右鍵按下檔名,然後從右鍵功能表中選取 「glTF: Preview 3D Model」 命令快捷方式。
新增觸發程式
動畫觸發程式會使用動畫地圖延伸模組新增至 glTF 模型 JSON。 動畫地圖延伸模組會 在 GitHub 上 公開記載 (注意:這是草稿延伸模組) 。 若要將延伸模組新增至您的模型,只要捲動到編輯器中的 glTF 檔案結尾,並在您的檔案中新增 “extensionsUsed” 和 “extensions” 區塊,如果它們不存在。 在 [extensionsUsed] 區段中,您將新增 “EXT_animation_map” 延伸模組的參考,而在 “extensions” 區塊中,您會將對應新增至模型中的動畫。
如 規格中 所述,您可以使用 「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 分鐘,且在 30 FPS) 時不能包含超過 36,000 個主要畫面格 (20 分鐘。 此外,使用以變形目標為基礎的動畫時,不會超過8192個或更少的變形目標頂點。 超過這些計數會導致 Windows Mixed Reality 住家不支持動畫資產。
功能 | 最大值 |
---|---|
持續時間 | 20 分鐘 |
主要畫面格 | 36,000 |
變形目標頂點 | 8192 |
glTF 實作注意事項
Windows MR 不支援使用負數刻度翻轉幾何。 具有負數刻度的幾何可能會產生視覺效果成品。
glTF 資產必須使用 Windows MR 要轉譯的場景屬性,指向默認場景。 此外,在 2018 年 4 月更新 Windows 10 之前的 Windows MR glTF 載入器需要存取子:
- 必須具有最小值和最大值。
- 類型 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
核心規格會忽略下列材質屬性:
- 所有多重MV
- metalRoughnessTexture:必須改用下面定義Microsoft優化紋理封裝
- normalTexture:必須改為使用下面定義Microsoft優化紋理封裝
- normalScale
- occlusionTexture:必須改用下面定義Microsoft優化紋理封裝
- occlusionStrength
Windows MR 不支援基本模式行和點。
僅支援單一UV頂點屬性。
其他資源
- glTF 匯出工具和轉換器
- glTF Toolkit
- glTF 2.0 規格
- Microsoft glTF LOD 延伸模組規格
- 計算機 Mixed Reality 紋理封裝延伸模組規格
- HoloLens Mixed Reality 紋理封裝延伸模組規格
- Microsoft DDS 紋理 glTF 延伸模組規格