FaceNinja

Útmutató · Unity · Godot 4 · three.js

Használd a fejedet Unityben, Godotban vagy three.js-ben.

A FaceNinja-fej egyszerű GLB vagy FBX MetaHuman-topológiában, szemekkel, fogakkal, 4K textúrákkal és az 52 ARKit blendshape-pel, így az Unrealen kívül is működik. Így hozod be a Unitybe, a Godot 4-be és a three.js-be, és így mozgatod az arcot kódból.

Three.js-ben renderelt FaceNinja-fej, mosolyra nyitott szájjal
S-16 minta, szintetikus személy, three.js-be töltve az ARKit shape-es GLB-ből, felerősített jawOpen és a két mouthSmile shape-pel. Képernyőkép a saját tesztoldalunkról.

Melyik fájl melyik motorhoz

Fájlok motoronként
MotorFájlMértékegység
UnityFBX ARKit shape-ekkelCentiméter; a Unity méterre váltja
Godot 4GLB ARKit shape-ekkelMéter, Y felfelé
three.jsGLB ARKit shape-ekkelMéter, Y felfelé

Mindkettő életnagyságú. A haj nincs benne a GLB-ben és az FBX-ben: az Unrealben a MetaHuman groomok pótolják, más motorokban adj hozzá saját hajat.

Használhatok MetaHumant Unityben?

A FaceNinja-fej a saját fájlod, MetaHuman-topológiában, a mi feltételeink szerint: bármely motorban használhatod. A MetaHuman Creatorban épített MetaHuman az Epic licence alá tartozik, amely 2025 júniusa óta más motorokat és eszközöket is megenged (az Epic licencoldala).

Unity: az FBX importálása

  1. Hozd be az FBX-et

    Töltsd le az ARKit shape-ekkel ellátott FBX-et, és húzd be a projekted Assets mappájába.

  2. Ellenőrizd az importbeállításokat

    A Model fülön hagyd bekapcsolva a Convert Units opciót, hogy a centiméterből méter legyen, és az Import BlendShapes opciót (ez az alapértelmezés). Nyomd meg az Apply gombot.

  3. Bontsd ki az anyagokat

    A Materials fülön bontsd ki (Extract) a textúrákat és az anyagokat, hogy szerkeszthesd őket. URP-ben vagy HDRP-ben alakítsd át az anyagokat a pipeline Lit shaderére.

  4. Keresd meg a shape-eket

    Tedd a fejet egy jelenetbe. A Skinned Mesh Renderer a BlendShapes alatt sorolja fel az 52 shape-et, az ARKit shape-ek nevével.

  5. Vezéreld őket kódból

    A Unityben a súlyok 0-tól 100-ig terjednek.

    Kód
    // 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);

Inkább GLB? A Unity egy glTF-importáló csomaggal olvassa, például a glTFast-tal.

Godot 4: a GLB importálása

  1. Hozd be a GLB-t

    Töltsd le az ARKit shape-ekkel ellátott GLB-t, és másold be a projektedbe. A Godot jelenetként importálja, méterben.

  2. Keresd meg a shape-eket

    Nyisd meg a jelenetet, és jelöld ki a fej MeshInstance3D csomópontját. Az Inspector a Blend Shapes alatt az ARKit-nevükkel sorolja fel a blend shape-eket.

  3. Vezéreld őket kódból

    A Godotban a súlyok 0-tól 1-ig terjednek.

    Kód
    # 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: a GLB betöltése

  1. Töltsd be a GLTFLoaderrel

    A fej több hálóként nyílik meg (bőr, szemek, fogak és így tovább); mindegyik ugyanazt az 52 shape-nevet hordozza.

  2. Állítsd a shape-eket név szerint

    A morphTargetDictionary minden ARKit-nevet a hozzá tartozó morphTargetInfluences-indexhez rendel; a súlyok 0-tól 1-ig terjednek.

    Kód
    // 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. Tiszta szemek

    A three.js-ben tiszta, tükröződő szemekhez töltsd le a fájlt a cornea=transmission beállítással, vagy cseréld le a szaruhártya anyagait betöltéskor (dokumentáció EN).

Ehhez az útmutatóhoz betöltöttük ennek a mintának a GLB-jét a three.js-be: 6 hálóként nyílik meg, és mindegyik felsorolja mind az 52 ARKit-nevet.

Jó tudni

  • Ugyanaz a háló, ugyanaz a rig. Minden fejnek ugyanaz a vertexsorrendje és UV-kiosztása, így az egy fejhez készített beállítás mindegyiken működik.
  • Lépték. Minden fájl életnagyságú. A measured letöltési beállítás a fejet a személy becsült méretére skálázza.
  • Könnyebb fájlok. Kérj 2K textúrákat a texture_size letöltési beállítással, ha a 4K több a szükségesnél.
  • A webes előnézet nem motorokhoz való. A GLB-t vagy az FBX-et használd, ne a webalkalmazásban látható tömörített előnézetet.

Kérdések: fejek Unityben, Godotban és three.js-ben

01Használhatok MetaHumant Unityben?
A FaceNinja-fej egyszerű FBX vagy GLB, tehát igen. A MetaHuman Creatorban épített teljes MetaHuman 2025 júniusa óta az Epic licence alapján más motorokban is használható; nézd meg a feltételeit.
02Az 52 blendshape is bekerül?
Igen, az ARKit-nevükkel: Unityben BlendShapes a Skinned Mesh Rendereren, Godotban Blend Shapes a MeshInstance3D-n, three.js-ben pedig morph targetek.
03Van haj?
Ezekben a fájlokban nincs. Az Unrealben a MetaHuman groomok adják; más motorokban adj hozzá saját hajat.
04Melyik formátum kisebb?
Az ARKit shape-es GLB 4K textúrákkal körülbelül 105 MB, a statikus GLB körülbelül 65 MB. 2K textúrákkal mindkettő kisebb.

Kipróbálhatok egy fejet mind az 52 shape-pel?

Igen. Regisztrálj ingyen, és töltsd le a 20 mintafejet: minden GLB-ben és FBX-ben mind az 52 megvan.