認識 Mixos AI探索

如何為網頁與遊戲引擎匯出 3D 動畫

要為網頁或遊戲引擎匯出 3D 動畫,請使用 glTF——GLB 是它的單檔二進位形式——或 FBX。兩者都儲存節點階層、骨架、蒙皮權重與關鍵影格片段。glTF 是瀏覽器與多數引擎原生讀取的開放標準;FBX 則是 Maya、3ds Max、Unity 與 Unreal 管線長期建立的交換格式。轉換後能保留什麼取決於匯出器,因此約束、IK 與程序化動作要先烘焙成關鍵影格。

作者:

簡短回答

把格式無法儲存的任何東西——IK、約束、驅動器與模擬——烘焙成關鍵影格,檢查片段的名稱與長度,然後為網頁與多數現代引擎匯出 GLB,或在管線預期時匯出 FBX。變換、骨架動畫與形狀關鍵影格權重會保留;綁定控制、自訂曲線與設定關鍵影格的材質數值通常不會。在你依賴檔案之前,先在目標中開啟它。

逐步說明

  1. 1

    烘焙格式無法儲存的東西

    檔案格式儲存的是關鍵影格,而不是產生它們的系統。IK 解算器、約束、驅動器、表達式與模擬,必須在匯出前取樣成一般關鍵影格,否則檔案抵達時,它們原本的位置就沒有動作。在 Studio 中,Rigging 面板中的 Bake IK,以及驅動器用的 Animate ▸ Bake motion to keyframes…,各自都能做到這件事。

  2. 2

    命名並修剪片段

    引擎會把檔案中的每個動畫依名稱匯入為獨立片段。請給片段程式設計師看得懂的名稱——Walk、Idle、Open——並檢查每個片段的長度,因為有個關鍵影格孤零零地落在結尾後二十格的片段,會播放二十格的空白。

  3. 3

    選擇格式

    GLB 適用於網頁,以及原生讀取 glTF 的 Godot、Blender、three.js 與 Babylon.js;Unity 透過 glTFast 等套件讀取它,Unreal 也能匯入。FBX 用於圍繞它建立的管線——Maya、3ds Max,以及許多 Unity 與 Unreal 專案。

  4. 4

    匯出

    在 Studio 中,選擇 File ▸ Export 3D model… 並選 GLB 或 glTF——或 FBX,它能攜帶物件與骨架動畫及蒙皮權重,但不含形狀關鍵影格或貼圖。場景中的每個片段都會寫入,你正在處理的片段排在最前面。Export for the web… 則產生可播放動畫的網頁、嵌入、React 元件或 three.js 模組。

  5. 5

    在目標中檢查

    把檔案匯入它要使用的引擎或檢視器,並播放每個片段。檢查縮放、面向、循環,以及有緩動的動作是否仍有緩動——下列問題會在這裡顯現,否則根本不會顯現。

動畫用的 glTF 與 GLB

glTF 2.0 以通道儲存動畫,每個通道針對單一節點的平移、旋轉或縮放,或網格的形變目標(形狀關鍵影格)權重。每個通道以 LINEAR、STEP 或 CUBICSPLINE 內插取樣關鍵影格,時間以秒而非影格儲存,旋轉則為四元數。蒙皮網格帶有其關節、逆綁定矩陣,以及每組每個頂點最多四個權重。

這是刻意設計得很窄,所以 glTF 幾乎在任何地方都不需轉換就能載入。超出此範圍的任何東西——設定關鍵影格的材質顏色、燈光強度、攝影機焦距——都需要擴充功能,例如 KHR_animation_pointer,而各引擎對擴充功能的支援不一。glTF 依定義是公尺與 Y 軸向上,所以很少以錯誤的尺寸到達。

動畫用的 FBX

FBX 是 Autodesk 專有的格式,二十年來一直是在 DCC 與遊戲引擎之間移動已綁定骨架、帶動畫角色的預設格式。它儲存骨架、蒙皮、混合形狀、多個 take 與影格率,Mixamo、Unity 與 Unreal 都能流暢讀取它。

它的弱點與讓它靈活的原因相同:單位與軸向慣例因匯出器而異,所以來自某個工具的 FBX 可能大了一百倍,或躺在地上,不同 SDK 版本的細節也不同。許多來自 Maya 與 Mixamo 的檔案使用公分,而 glTF 使用公尺。

哪些會保留,哪些不會

可靠保留:物件變換、骨骼上的骨架動畫、形狀關鍵影格權重,以及片段結構。通常遺失:IK 與約束、驅動器與表達式、自訂綁定控制,以及設定關鍵影格的材質、燈光與攝影機鏡頭數值。第一類損失要烘焙成關鍵影格;第二類則要檢查目標是否支援擴充功能,或需要重建該效果。

曲線是較細微的部分。匯出器對於保留貝茲切線、寫入三次雲形線資料,或將曲線取樣成關鍵影格,做法各異。只寫入你設定的關鍵影格、並在其間以線性內插的匯出器,會把相距甚遠的關鍵影格之間強烈的緩動壓平。如果引擎中的精確緩動很重要,請在緩動內部加入關鍵影格,或以影格率烘焙動作。

從 Mixos Studio 匯出動畫

Studio 的 GLB 與 glTF 匯出會攜帶設定關鍵影格的物件變換與形狀關鍵影格權重,保留場景階層,讓每個物件在自己的區域空間中動畫,並寫入場景中的每個片段。已綁定骨架的角色以蒙皮網格匯出——其關節、逆綁定矩陣,以及每個頂點最多四個骨骼權重——因此身體會在目標中變形,而不是在骨骼移動時僵立不動。Studio 的 FBX 匯出同樣保留階層——每個物件的軸心、骨架的關節、蒙皮權重以及每個片段,逐格取樣——但材質只攜帶基礎色,不含貼圖,也不攜帶形狀關鍵影格。OBJ、STL 與 USDZ 目標不攜帶動畫,匯出對話框會在下載前說明這一點。

有兩個限制值得知道。在 GLB 與 glTF 中,關鍵影格寫入你設定的時間,並在檔案中以線性方式在其間內插——曲線編輯器的緩動不會被烘焙進去——因此若引擎必須精確重現,請在長的緩動內部加入關鍵影格;FBX 是逐格取樣,所以其緩動會保留。而設定關鍵影格的材質、燈光與攝影機數值會留在場景中,因為核心 glTF 沒有對應的通道。.mxs 場景檔則保留模型格式無法承載的一切——生成器、修改器、動畫與算圖設定——適用於目的地就是 Studio 本身時。匯出屬於付費方案;製作動畫與預覽免費。

常見問題

動畫用 GLB 還是 FBX 比較好?

GLB 適用於網頁,以及原生讀取 glTF 的引擎,例如 Godot 與 three.js——它是開放標準、採公制,並在各工具之間一致。FBX 則用於圍繞它建立的管線,特別是 Maya、3ds Max 以及許多 Unity 與 Unreal 專案。兩者都能承載骨架動畫與形狀關鍵影格。

glTF 支援動畫嗎?

支援。glTF 2.0 可為節點的平移、旋轉、縮放與形變目標權重製作動畫,支援線性、階梯或三次雲形線內插,並支援蒙皮網格。為其他屬性製作動畫,例如材質數值,需要擴充功能。

為什麼我匯出的動畫沒有動?

通常是因為動作來自格式無法儲存的東西——IK 解算器、約束、驅動器或模擬——而且在匯出前沒有烘焙成關鍵影格。另一個常見原因是引擎沒有播放該片段:多數引擎需要指派片段或設為自動播放。

為什麼我的動畫在引擎中尺寸錯誤或被旋轉?

單位與軸向慣例。glTF 一律是公尺與 Y 軸向上;FBX 則視匯出器而定,常是公分。請在匯出時設定單位與軸向選項,或在匯入時套用單一縮放,而不是逐片段修正。

能從瀏覽器匯出動畫嗎?

可以。Mixos Studio 能將動畫場景匯出為含所有片段的 GLB 或 glTF,或匯出為播放它們的網頁或 three.js 模組。製作動畫免費;匯出屬於付費方案。