指南 · Unity · Godot 4 · three.js
在 Unity、Godot 或 three.js 中使用你的頭部。
FaceNinja 頭部是 MetaHuman 拓樸上的普通 GLB 或 FBX,帶眼睛、牙齒、4K 紋理和 52 個 ARKit 混合變形,所以在 Unreal 之外也能用。下面介紹如何把它匯入 Unity、Godot 4 和 three.js,以及如何用程式碼讓臉部動起來。
發布於

jawOpen 和兩個 mouthSmile 形狀。截圖來自我們自己的測試頁面。哪個引擎用哪個檔案
| 引擎 | 檔案 | 單位 |
|---|---|---|
| Unity | 帶 ARKit 形狀的 FBX | 公分;Unity 會轉換為米 |
| Godot 4 | 帶 ARKit 形狀的 GLB | 米,Y 軸向上 |
| three.js | 帶 ARKit 形狀的 GLB | 米,Y 軸向上 |
兩者都是真人尺寸。GLB 和 FBX 中都沒有頭髮:在 Unreal 中由 MetaHuman 的毛髮(Groom)替代;在其他引擎中,請自行新增頭髮。
可以在 Unity 中使用 MetaHuman 嗎?
FaceNinja 頭部是你自己的檔案,採用 MetaHuman 拓樸,受我們的條款約束:可以在任何引擎中使用。你在 MetaHuman Creator 中建立的 MetaHuman 受 Epic 的許可約束,自 2025 年 6 月起,該許可也允許在其他引擎和工具中使用(Epic 的許可頁面)。
Unity:匯入 FBX
匯入 FBX
下載帶 ARKit 形狀的 FBX,拖進專案的 Assets 資料夾。
檢查匯入設定
在 Model 分頁中保持 Convert Units 開啟,讓公分變為米,並保持 Import BlendShapes 開啟(預設如此)。點選 Apply。
提取材質
在 Materials 分頁中提取紋理和材質,以便編輯。在 URP 或 HDRP 中,把材質轉換為該管線的 Lit 著色器。
找到形狀
把頭部放進場景。Skinned Mesh Renderer 在 BlendShapes 下列出 52 個形狀,以 ARKit 形狀命名。
用程式碼驅動
Unity 中的權重範圍是 0 到 100。
程式碼// Unity (C#): the head's SkinnedMeshRenderer; Unity blend shape weights run 0–100 var smr = GetComponentInChildren<SkinnedMeshRenderer>(); var mesh = smr.sharedMesh; for (int i = 0; i < mesh.blendShapeCount; i++) if (mesh.GetBlendShapeName(i).EndsWith("jawOpen")) smr.SetBlendShapeWeight(i, 60f);
更想用 GLB?Unity 可以透過 glTF 匯入套件(例如 glTFast)讀取它。
Godot 4:匯入 GLB
匯入 GLB
下載帶 ARKit 形狀的 GLB,複製到你的專案中。Godot 會把它作為場景匯入,單位為米。
找到形狀
開啟場景,選取頭部的 MeshInstance3D。檢查器在 Blend Shapes 下按 ARKit 名稱列出混合變形。
用程式碼驅動
Godot 中的權重範圍是 0 到 1。
程式碼# Godot 4 (GDScript): the head's MeshInstance3D; weights run 0–1 @onready var head: MeshInstance3D = $Head func _ready(): var i := head.find_blend_shape_by_name("jawOpen") if i >= 0: head.set_blend_shape_value(i, 0.6)
three.js:載入 GLB
用 GLTFLoader 載入
頭部會以多個網格開啟(皮膚、眼睛、牙齒等);每個網格都帶有同樣的 52 個形狀名稱。
按名稱設定形狀
morphTargetDictionary把每個 ARKit 名稱對映到它在morphTargetInfluences中的索引;權重範圍是 0 到 1。程式碼// three.js: every mesh of the head carries the same 52 names; weights run 0–1 import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; const gltf = await new GLTFLoader().loadAsync('head.glb'); gltf.scene.traverse((o) => { const i = o.morphTargetDictionary?.jawOpen; if (i !== undefined) o.morphTargetInfluences[i] = 0.6; }); scene.add(gltf.scene);清澈的眼睛
要在 three.js 中得到清澈、有反光的眼睛,下載時使用
cornea=transmission選項,或在載入檔案時替換角膜材質(文件 EN)。
為了寫這篇指南,我們在 three.js 中載入了這個樣本的 GLB:它以 6 個網格開啟,每個網格都列出了全部 52 個 ARKit 名稱。
須知
- 同一網格,同一綁定。 每個頭部的頂點順序和 UV 都相同,所以為一個頭部做的設定適用於所有頭部。
- 尺寸。 每個檔案都是真人尺寸。下載選項
measured會把頭部縮放到估算的本人尺寸。 - 更輕的檔案。 如果 4K 超出你的需要,可以用下載選項
texture_size請求 2K 紋理。 - 網頁預覽不適合用於引擎。 請使用 GLB 或 FBX,而不是網頁應用程式顯示的壓縮預覽。
關於在 Unity、Godot 和 three.js 中使用頭部的問題
- 01可以在 Unity 中使用 MetaHuman 嗎?
- FaceNinja 頭部是普通的 FBX 或 GLB,所以可以。自 2025 年 6 月起,按照 Epic 的許可,在 MetaHuman Creator 中建立的完整 MetaHuman 也可以在其他引擎中使用;請檢視其條款。
- 0252 個混合變形會一起匯入嗎?
- 會,並保留 ARKit 名稱:在 Unity 中是 Skinned Mesh Renderer 上的 BlendShapes,在 Godot 中是 MeshInstance3D 上的 Blend Shapes,在 three.js 中是變形目標(morph target)。
- 03有頭髮嗎?
- 這些檔案裡沒有。在 Unreal 中由 MetaHuman 的 groom 提供;在其他引擎中,請自行新增頭髮。
- 04哪種格式更小?
- 帶 ARKit 形狀的 GLB 在 4K 紋理下約 105 MB,靜態 GLB 約 65 MB。用 2K 紋理兩者都會更小。
能試試帶全部 52 個形狀的頭部嗎?
能。免費建立帳號,下載 20 個範例頭部:每個 GLB 和 FBX 都帶有全部 52 個。