建立用於住家的 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 (36,000 個主要畫面格) 超過 20 分鐘,且必須包含 < = 8192 型目標頂點
  5. 優化 - 資產應該使用 WindowsMRAssetConverter 進行優化。 Windows OS 版本 < = 1709* 的必要專案,且建議在 Windows OS 版本 > = 1803

注意

3D 檢視器應用程式支援不同的格式和解析度,但最終會在Mixed Reality首頁中顯示模型之前,先將模型轉換成 .glb/glTF。

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

詳細指引

匯出模型

Windows Mixed Reality家預期使用 .glb 檔案格式搭配內嵌影像和二進位資料傳遞 3D 資產。 Glb 是 glTF 格式的二進位版本,這是 Khronos 群組所維護之 3D 資產傳遞的免付費標準。 隨著 glTF 發展為可互通 3D 內容的業界標準,因此 Microsoft 對於跨 Windows 應用程式和體驗的格式支援也一樣。 如果您尚未建立 glTF 資產,您可以在 glTF 工作組 github 頁面上找到 支援的匯出者和轉換器清單

模型化指導方針

Windows 預期會使用下列模型化指導方針來產生資產,以確保與Mixed Reality首頁體驗相容。 在您選擇的程式中建立模型時,請記住下列建議和限制:

  1. Up 軸應該設定為 「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 (底色) 地圖

沒有光源資訊的原始色彩。 此地圖也包含金屬 (白色的反射和擴散資訊,分別) 和隔離器 (黑色) 表面。

正常

正切空間標準圖

粗略度地圖

描述 物件的微表面。 白色 1.0 是粗略黑色 0.0 是平滑的。 此地圖會提供資產的最大字元,因為它確實描述表面。 例如,臨時、指紋、smudges、smudme 等等。

環境遮蔽地圖

顯示遮蔽光線區域的值縮放地圖,其會封鎖反射

金屬地圖

告知著色器是否為金屬。 原始金屬 = 1.0 白色 非金屬 = 0.0 黑色。 可能會有轉換灰色值,表示涵蓋原始金屬的內容,例如中途,但一般而言,此地圖應該是黑白。

最佳化

Windows Mixed Reality首頁提供一系列優化功能,以使用自訂擴充功能定義的核心 glTF 規格為基礎。 Windows 版本 < = 1709 需要這些優化,並建議用於較新版本的 Windows。 您可以使用GitHub 上提供的 Windows Mixed Reality Asset Converter,輕鬆地優化任何 glTF 2.0 模型。 此工具會執行正確的紋理封裝和優化,如下所示。 針對一般用法,建議您使用 WindowsMRAssetConverter,但如果您需要更充分地控制體驗,而且想要建置您自己的優化管線,您可以參考以下的詳細規格。

注意

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

材質

為了改善Mixed Reality環境中的資產載入時間,Windows MR 支援根據本節中定義的紋理封裝配置轉譯壓縮的 DDS 紋理。 DDS 紋理是使用 MSFT_texture_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支援藉由接受多個 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延伸模組的「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 上,這些動畫不會播放,不過,如果根據本文中的指引撰寫,它們仍會載入。

混合實境首頁支援 HoloLens 上的動畫 glTF 物件,以及沉浸式 (VR) 頭戴式裝置。 如果您想要在模型上觸發動畫,您必須在 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。 您也可以在即時 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。

Restrictions

動畫不能超過 20 分鐘,而且不能包含超過 36,000 個主要畫面格, (20 分鐘 30 FPS) 。 此外,使用以型目標為基礎的動畫時,不會超過 8192 個型目標頂點或更少。 超過這些計數會導致Windows Mixed Reality家不支援動畫資產。

功能 最大值
持續時間 20 分鐘
Keyframes 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、colorFactor、roughnessFactor
  • baseColorTexture:必須指向儲存在 dds 中的紋理。
  • emissiveTexture:必須指向儲存在 dds 中的紋理。
  • emissiveFactor
  • AlphaMode

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

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

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

只支援單一 UV 頂點屬性。

其他資源

另請參閱