共用方式為


建立用於住家的 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. 模型 化 - 資產必須小於 10k 個三角形,每個 LOD 不超過 64 個節點和 32 個子訊息
  3. 材質 - 紋理不能大於 4096 x 4096,最小 mip 地圖在任一維度上不應大於 4
  4. 動畫 - 動畫 在 30 FPS 時不能超過 20 分鐘(36,000 個主要畫面格),且必須包含 <= 8192 型目標頂點
  5. 優化 - 資產應該使用 WindowsMRAssetConverter 進行優化。 Windows OS 版本 <= 1709* 的必要專案,且建議在 Windows OS 版本 >= 1803

注意

3D 查看器應用程式支援不同的格式和解析度,但最終會將模型轉換成 .glb/glTF,再將它們顯示在混合實境首頁中。

本文的其餘部分包含這些需求和額外指導方針的詳細概觀,以確保您的模型與 Windows Mixed Reality 家用版搭配運作良好。

詳細指引

匯出模型

Windows Mixed Reality 家用版預期使用 .glb 檔格式搭配內嵌影像和二進位數據傳遞 3D 資產。 Glb 是 glTF 格式的二進位版本,這是 Khronos 群組維護的 3D 資產傳遞的免版稅開放標準。 當 glTF 發展為可互操作 3D 內容的業界標準時,因此Microsoft支援跨 Windows 應用程式和體驗的格式。 如果您尚未建立 glTF 資產,才能在 glTF 工作組 github 頁面上找到 支持的導出者和轉換器 清單。

模型化指導方針

Windows 預期會使用下列模型指導方針產生資產,以確保與混合實境家庭體驗的相容性。 在您選擇的程式中建立模型時,請記住下列建議和限制:

  1. 向上軸應該設定為 「Y」。
  2. 資產應面向正 Z 軸的「向前」。
  3. 所有資產都應該建立在現場原點的地面飛機上(0,0,0)
  4. 工作單位應設定為計量和資產,以便以世界規模撰寫資產
  5. 所有網格不需要合併,但如果您以資源限制裝置為目標,建議您使用
  6. 所有網格都應該共用一個材質,只有一個紋理集用於整個資產
  7. UV 必須在 0-1 空間的方形排列中配置。 雖然允許並排紋理,但請避免將紋理貼上。
  8. 不支援多UV
  9. 不支援雙面材質

三角形計數和詳細數據層級 (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 規格定義場景中物件的概念。 子訊息定義於物件中網格的基本類型數位中。

功能 描述 支援上限 文件集
節點 glTF 場景中的物件 每個 LOD 64 個 這裡
Submeshes 所有網格的基本類型總和 每個 LOD 32 個 這裡

材料指導方針

紋理應使用 PBR 金屬粗糙度工作流程來準備。 首先,建立一組完整的紋理,包括 Albedo、Normal、遮蔽、金屬和粗糙度。 Windows Mixed Reality 支援解析度高達 4096x4096 的紋理,但建議您以 512x512 撰寫。 紋理應該以 4 倍的解析度撰寫。 這是在下列導出步驟中套用至紋理的壓縮格式需求。 產生 Mip 地圖或紋理時,最低 Mip 必須最多為 4x4。

建議的紋理大小 紋理大小上限 最低 Mip
512x512 4096x4096 max 4x4

Albedo (基底色彩) 地圖

沒有光源資訊的原始色彩。 此地圖還分別包含金屬(金屬地圖中的白色)和絕緣體(金屬地圖中的黑色)表面的反射和擴散資訊。

Normal

正切空間一般地圖

粗糙度地圖

描述物件的微表面。 白色 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,但如果您需要對體驗有更多的控制權,而且想要建置自己的優化管線,則可以參考下列詳細規格。

注意

如需確切模型限制可能性的明確清單,請參閱 3D 模型優化 文章,以用於 Dynamics 365 應用程式。

材質

若要改善混合實境環境中的資產載入時間,Windows MR 支援根據本節中定義的紋理封裝配置來轉譯封裝的壓縮 DDS 紋理。 使用 MSFT_texture_dds 延伸模組參考 DDS 紋理。 強烈建議壓縮紋理。

HoloLens

HoloLens 型混合實境體驗預期使用下列封裝規格的 2 紋理設定來封裝紋理:

glTF 屬性 紋理 封裝配置
pbrMetallicRoughness baseColorTexture 紅色(R),綠色(G),藍色(B)
MSFT_packing_normalRoughnessMetallic normalRoughnessMetallicTexture 標準 (RG), 粗糙度 (B), 金屬 (A)

壓縮 DDS 紋理時,每個地圖上都預期會有下列壓縮:

紋理 預期的壓縮
baseColorTexture,normalRoughnessMetallicTexture BC7

沉浸式 (VR) 頭戴式裝置

沉浸式 (VR) 頭戴式裝置的電腦型 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, 粗糙度MetallicOcclusionTexture BC7

新增網格 LOD

Windows MR 會使用幾何節點 LOD,根據螢幕涵蓋範圍,以不同層級的詳細數據呈現 3D 模型。 雖然此功能在技術上並非必要,但建議用於所有資產。 目前 Windows 支援 3 個層級的詳細數據。 默認 LOD 為 0,代表最高品質。 其他 LOD 會循序編號,例如 1、2,並逐漸降低品質。 Windows Mixed Reality Asset Converter 支援產生符合此 LOD 規格的資產,方法是接受多個 glTF 模型,並將其合併成具有有效 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% -

動畫指導方針

注意

此功能已新增為 Windows 10 2018 年 4 月更新一部分。 在舊版 Windows 上,這些動畫不會播放,不過,如果根據本文中的指引撰寫,這些動畫仍會載入。

混合實境首頁支援 HoloLens 和沉浸式 (VR) 頭戴式裝置上的動畫 glTF 物件。 如果您想要在模型上觸發動畫,則必須在 glTF 格式上使用動畫對應延伸模組。 此延伸模組可讓您根據使用者在世界上的存在來觸發 glTF 模型中的動畫,例如,當使用者靠近物件或查看動畫時觸發動畫。 如果您 glTF 物件具有動畫,但未定義觸發程式,則不會播放動畫。 下一節說明將這些觸發程式新增至任何動畫 glTF 物件的工作流程。

工具

首先,如果您還沒有這些工具,請下載下列工具。 這些工具可讓您輕鬆地開啟任何 glTF 模型、預覽、進行變更,並儲存回 glTF 或 .glb:

  1. Visual Studio Code
  2. glTF Tools for Visual Studio Code

開啟和預覽模型

從在 VSCode 中開啟 glTF 模型開始,方法是將 .glTF 檔案拖曳至編輯器視窗。 如果您有 .glb 而非 .glTF 檔案,您可以使用您下載的 glTF 工具附加元件將其匯入 VSCode。 移至 [檢視 -> 命令選擇區],然後在命令選擇區中開始輸入 “glTF”,然後選取 [glTF:從 glb 匯入],這會彈出檔案選擇器,讓您匯入 .glb。

開啟 glTF 模型之後,您應該會在編輯器視窗中看到 JSON。 您也可以使用以滑鼠右鍵按下檔名,然後從滑鼠右鍵功能表選取 「glTF: Preview 3D Model」 命令快捷方式,以預覽即時 3D 查看器中的模型。

新增觸發程式

動畫觸發程式會使用動畫對應延伸模組新增至 glTF 模型 JSON。 動畫對應延伸模組已公開記載 於 GitHub 上(注意:這是草稿延伸模組)。 若要將延伸模組新增至您的模型,只要捲動至編輯器中的 glTF 檔案結尾,並在檔案中新增 “extensionsUsed” 和 “extensions” 區塊,如果檔案不存在的話。 在 「extensionsUsed」 區段中,您將新增 「EXT_animation_map」 延伸模組的參考,並在 「extensions」 區塊中,將對應新增至模型中的動畫。

如規格中所述,您在「動畫」清單上使用「語意」字串來定義觸發動畫的專案,這是動畫索引陣列。 在下列範例中,我們已指定要在使用者注視 物件時播放的動畫:

  "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 個主要畫面格(20 分鐘 30 FPS)。 此外,使用變形目標型動畫時,不會超過8192型目標頂點或更少。 超過這些計數會導致 Windows Mixed Reality 首頁不支持動畫資產。

功能 最大值
期間 20 分鐘
主要畫面格 36,000
變形目標頂點 8192

glTF 實作注意事項

Windows MR 不支援使用負尺規翻轉幾何。 具有負尺規的幾何可能會導致視覺成品。

glTF 資產必須指向默認場景,並使用 Windows MR 所轉譯的場景屬性。 此外,Windows 10 2018 年 4 月更新之前 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

核心規格會忽略下列材質屬性:

  • 所有多UV
  • metalRoughnessTexture:必須改用下面定義的優化紋理封裝Microsoft
  • normalTexture:必須改用下面定義的Microsoft優化紋理封裝
  • normalScale
  • occlusionTexture:必須改用下面定義的優化紋理封裝Microsoft
  • occlusionStrength

Windows MR 不支援基本模式行和點。

僅支援單一UV頂點屬性。

更多資源

另請參閱