FaceNinja

Hướng dẫn · Unity · Godot 4 · three.js

Dùng đầu 3D của bạn trong Unity, Godot hoặc three.js.

Đầu 3D FaceNinja là một tệp GLB hoặc FBX thông thường trên topology MetaHuman, có mắt, răng, texture 4K và 52 blendshape ARKit, nên nó dùng được cả bên ngoài Unreal. Dưới đây là cách đưa nó vào Unity, Godot 4 và three.js, và cách điều khiển khuôn mặt từ code.

Một đầu 3D FaceNinja render trong three.js với miệng mở cười
Mẫu S-16, một người tổng hợp, được tải trong three.js từ GLB có shape ARKit, với jawOpen và hai shape mouthSmile được tăng lên. Ảnh chụp màn hình từ trang thử nghiệm của chúng tôi.

Tệp nào cho engine nào

Tệp theo engine
EngineTệpĐơn vị
UnityFBX có shape ARKitCentimet; Unity đổi sang mét
Godot 4GLB có shape ARKitMét, trục Y hướng lên
three.jsGLB có shape ARKitMét, trục Y hướng lên

Cả hai đều ở kích thước thật. Tóc không có trong GLB hay FBX: trong Unreal, groom MetaHuman thay thế phần đó; trong các engine khác, hãy tự thêm tóc.

Tôi có thể dùng MetaHuman trong Unity không?

Đầu 3D FaceNinja là tệp của riêng bạn, trên topology MetaHuman, theo điều khoản của chúng tôi: dùng nó trong bất kỳ engine nào. MetaHuman bạn dựng trong MetaHuman Creator thuộc giấy phép của Epic, mà từ tháng 6 năm 2025 cũng cho phép các engine và công cụ khác (trang giấy phép của Epic).

Unity: nhập FBX

  1. Đưa FBX vào

    Tải FBX có shape ARKit và thả vào thư mục Assets của dự án.

  2. Kiểm tra thiết lập nhập

    Trên tab Model, giữ Convert Units bật để centimet thành mét, và Import BlendShapes bật (mặc định). Nhấn Apply.

  3. Tách material

    Trên tab Materials, tách texture và material ra để bạn chỉnh sửa được. Trong URP hoặc HDRP, chuyển material sang shader Lit của pipeline đó.

  4. Tìm các shape

    Đặt đầu 3D vào một scene. Skinned Mesh Renderer liệt kê 52 shape dưới mục BlendShapes, đặt tên theo các shape ARKit.

  5. Điều khiển chúng từ code

    Trọng số trong Unity chạy từ 0 đến 100.

    Code
    // 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);

Thích GLB hơn? Unity đọc được nó bằng một package nhập glTF, chẳng hạn glTFast.

Godot 4: nhập GLB

  1. Đưa GLB vào

    Tải GLB có shape ARKit và chép vào dự án của bạn. Godot nhập nó dưới dạng một scene, tính bằng mét.

  2. Tìm các shape

    Mở scene và chọn MeshInstance3D của đầu 3D. Inspector liệt kê các blend shape theo tên ARKit dưới mục Blend Shapes.

  3. Điều khiển chúng từ code

    Trọng số trong Godot chạy từ 0 đến 1.

    Code
    # 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: tải GLB

  1. Tải bằng GLTFLoader

    Đầu 3D mở ra thành nhiều mesh (da, mắt, răng, v.v.); mỗi mesh mang cùng 52 tên shape.

  2. Đặt shape theo tên

    morphTargetDictionary ánh xạ mỗi tên ARKit sang chỉ số của nó trong morphTargetInfluences; trọng số chạy từ 0 đến 1.

    Code
    // 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);
  3. Mắt trong

    Để có mắt trong và phản chiếu trong three.js, hãy tải về với tùy chọn cornea=transmission, hoặc thay material giác mạc khi tải tệp (tài liệu EN).

Chúng tôi đã tải GLB của mẫu này trong three.js cho hướng dẫn này: nó mở ra thành 6 mesh, và mỗi mesh liệt kê đủ 52 tên ARKit.

Nên biết

  • Cùng mesh, cùng rig. Mọi đầu 3D có cùng thứ tự vertex và UV, nên thiết lập bạn làm cho một đầu 3D dùng được cho tất cả.
  • Kích thước. Mọi tệp đều ở kích thước thật. Tùy chọn tải về measured chỉnh đầu 3D theo kích thước ước tính của người đó.
  • Tệp nhẹ hơn. Yêu cầu texture 2K bằng tùy chọn tải về texture_size khi 4K nhiều hơn mức bạn cần.
  • Bản xem trước trên web không dành cho engine. Hãy dùng GLB hoặc FBX, không dùng bản xem trước đã nén mà ứng dụng web hiển thị.

Câu hỏi về đầu 3D trong Unity, Godot và three.js

01Tôi có thể dùng MetaHuman trong Unity không?
Đầu 3D FaceNinja là một tệp FBX hoặc GLB thông thường, nên có. Một MetaHuman đầy đủ dựng trong MetaHuman Creator cũng có thể được dùng trong engine khác theo giấy phép của Epic từ tháng 6 năm 2025; hãy xem điều khoản của nó.
0252 blendshape có được nhập vào không?
Có, theo tên ARKit: là BlendShapes trên Skinned Mesh Renderer trong Unity, Blend Shapes trên MeshInstance3D trong Godot, và morph target trong three.js.
03Có tóc không?
Không có trong các tệp này. Trong Unreal, groom MetaHuman đảm nhận phần đó; trong các engine khác, hãy tự thêm tóc.
04Định dạng nào nhẹ hơn?
GLB có shape ARKit khoảng 105 MB với texture 4K, còn GLB tĩnh khoảng 65 MB. Texture 2K làm cả hai nhẹ hơn.

Tôi có thể thử một đầu 3D có đủ 52 shape không?

Có. Hãy đăng ký miễn phí và tải 20 đầu 3D mẫu: mọi tệp GLB và FBX đều có đủ 52 shape.