คู่มือ · Unity · Godot 4 · three.js
ใช้ศีรษะของคุณใน Unity, Godot หรือ three.js
ศีรษะ FaceNinja คือ GLB หรือ FBX ธรรมดาบนโทโพโลยี MetaHuman พร้อมดวงตา ฟัน เท็กซ์เจอร์ 4K และ blendshape ARKit 52 แบบ จึงใช้นอก Unreal ได้ด้วย นี่คือวิธีนำเข้า Unity, Godot 4 และ three.js และวิธีขยับใบหน้าด้วยโค้ด
เผยแพร่

jawOpen และ mouthSmile ทั้งสองแบบ ภาพหน้าจอจากหน้าทดสอบของเราเองไฟล์ไหนสำหรับเอนจินไหน
| เอนจิน | ไฟล์ | หน่วย |
|---|---|---|
| Unity | FBX พร้อม ARKit shape | เซนติเมตร Unity แปลงเป็นเมตรให้ |
| Godot 4 | GLB พร้อม ARKit shape | เมตร, Y-up |
| three.js | GLB พร้อม ARKit shape | เมตร, Y-up |
ทั้งคู่เป็นขนาดจริง ไม่มีผมใน GLB หรือ FBX: ใน Unreal groom ของ MetaHuman ทำหน้าที่แทน ในเอนจินอื่นให้เพิ่มผมเอง
ใช้ MetaHuman ใน Unity ได้ไหม
ศีรษะ FaceNinja เป็นไฟล์ของคุณเอง บนโทโพโลยี MetaHuman ภายใต้เงื่อนไขของเรา: ใช้ในเอนจินใดก็ได้ ส่วน MetaHuman ที่สร้างใน MetaHuman Creator อยู่ภายใต้ไลเซนส์ของ Epic ซึ่งตั้งแต่มิถุนายน 2025 อนุญาตให้ใช้กับเอนจินและเครื่องมืออื่นได้ด้วย (หน้าไลเซนส์ของ Epic)
Unity: นำเข้า FBX
นำ FBX เข้ามา
ดาวน์โหลด FBX พร้อม ARKit shape แล้ววางลงในโฟลเดอร์ Assets ของโปรเจกต์
ตรวจการตั้งค่านำเข้า
ในแท็บ Model ให้เปิด Convert Units ไว้ เพื่อให้เซนติเมตรเป็นเมตร และเปิด Import BlendShapes ไว้ (ค่าเริ่มต้น) แล้วกด Apply
แยก material ออกมา
ในแท็บ Materials ให้ extract เท็กซ์เจอร์และ material ออกมาเพื่อแก้ไขได้ ใน URP หรือ HDRP ให้แปลง material เป็น Lit shader ของไปป์ไลน์นั้น
หา shape
วางศีรษะในซีน Skinned Mesh Renderer แสดง 52 shape ใต้ BlendShapes ตามชื่อ 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 เข้ามา
ดาวน์โหลด GLB พร้อม ARKit shape แล้วคัดลอกลงในโปรเจกต์ Godot นำเข้าเป็นซีน หน่วยเมตร
หา shape
เปิดซีนแล้วเลือก MeshInstance3D ของศีรษะ Inspector แสดง blend shape ตามชื่อ ARKit ใต้ Blend Shapes
ขับด้วยโค้ด
ค่าน้ำหนักใน 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
ศีรษะเปิดออกมาเป็นหลายเมช (ผิว ตา ฟัน และอื่นๆ) แต่ละเมชมีชื่อ shape 52 ชื่อชุดเดียวกัน
ตั้ง shape ตามชื่อ
morphTargetDictionaryจับคู่ชื่อ ARKit แต่ละชื่อกับ index ใน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หรือเปลี่ยน material ของกระจกตาตอนโหลดไฟล์ (เอกสาร EN)
เราโหลด GLB ของตัวอย่างนี้ใน three.js สำหรับคู่มือนี้: เปิดออกมาเป็น 6 เมช และแต่ละเมชมีชื่อ ARKit ครบทั้ง 52 ชื่อ
สิ่งที่ควรรู้
- เมชเดียวกัน rig เดียวกัน ศีรษะทุกตัวมีลำดับเวอร์เท็กซ์และ UV เดียวกัน การตั้งค่าที่ทำไว้สำหรับศีรษะหนึ่งตัวจึงใช้กับทุกตัวได้
- สเกล ทุกไฟล์เป็นขนาดจริง ตัวเลือกดาวน์โหลด
measuredปรับสเกลศีรษะตามขนาดโดยประมาณของคนคนนั้น - ไฟล์เบาลง ขอเท็กซ์เจอร์ 2K ด้วยตัวเลือกดาวน์โหลด
texture_sizeเมื่อ 4K มากเกินความจำเป็น - พรีวิวบนเว็บไม่ได้มีไว้สำหรับเอนจิน ใช้ GLB หรือ FBX ไม่ใช่พรีวิวแบบบีบอัดที่เว็บแอปแสดง
คำถามเรื่องศีรษะใน Unity, Godot และ three.js
- 01ใช้ MetaHuman ใน Unity ได้ไหม
- ศีรษะ FaceNinja เป็น FBX หรือ GLB ธรรมดา จึงใช้ได้ ส่วน MetaHuman เต็มรูปแบบที่สร้างใน MetaHuman Creator ก็ใช้ในเอนจินอื่นได้ภายใต้ไลเซนส์ของ Epic ตั้งแต่มิถุนายน 2025 โปรดตรวจดูเงื่อนไข
- 02blendshape 52 แบบมาด้วยไหม
- มา ตามชื่อ ARKit: เป็น BlendShapes บน Skinned Mesh Renderer ใน Unity, Blend Shapes บน MeshInstance3D ใน Godot และ morph target ใน three.js
- 03มีผมไหม
- ไม่มีในไฟล์เหล่านี้ ใน Unreal groom ของ MetaHuman ให้ผม ในเอนจินอื่นให้เพิ่มผมเอง
- 04รูปแบบไหนเล็กกว่า
- GLB พร้อม ARKit shape และเท็กซ์เจอร์ 4K มีขนาดราว 105 MB ส่วน GLB แบบ static ราว 65 MB เท็กซ์เจอร์ 2K ทำให้ทั้งคู่เล็กลง
ลองศีรษะที่มีครบ 52 shape ได้ไหม
ได้ สมัครได้ฟรีแล้วดาวน์โหลดศีรษะตัวอย่าง 20 ตัว: GLB และ FBX ทุกไฟล์มีครบ 52 แบบ