FaceNinja

Guide · Unity · Godot 4 · three.js

Brug dit hoved i Unity, Godot eller three.js.

Et FaceNinja-hoved er en almindelig GLB- eller FBX-fil med MetaHuman-topologi, med øjne, tænder, 4K-teksturer og de 52 ARKit-blendshapes, så det virker også uden for Unreal. Sådan får du det ind i Unity, Godot 4 og three.js, og sådan bevæger du ansigtet fra kode.

Et FaceNinja-hoved renderet i three.js med munden åben i et smil
Eksempel S-16, en syntetisk person, indlæst i three.js fra GLB-filen med ARKit-blendshapes, med jawOpen og de to mouthSmile-blendshapes skruet op. Skærmbillede fra vores egen testside.

Hvilken fil til hvilken motor

Filer efter motor
MotorFilEnheder
UnityFBX med ARKit-blendshapesCentimeter; Unity omregner dem til meter
Godot 4GLB med ARKit-blendshapesMeter, Y-up
three.jsGLB med ARKit-blendshapesMeter, Y-up

Begge er i naturlig størrelse. Hår er ikke med i GLB- eller FBX-filen: i Unreal erstatter MetaHuman-grooms det; i andre motorer tilføjer du selv hår.

Må jeg bruge en MetaHuman i Unity?

Et FaceNinja-hoved er din egen fil, med MetaHuman-topologi, under vores vilkår: brug det i enhver motor. En MetaHuman, du bygger i MetaHuman Creator, er omfattet af Epics licens, som siden juni 2025 også tillader andre motorer og værktøjer (Epics licensside).

Unity: importér FBX-filen

  1. Hent FBX-filen ind

    Hent FBX-filen med ARKit-blendshapes, og læg den i projektets Assets-mappe.

  2. Tjek importindstillingerne

    Lad Convert Units være slået til på fanen Model, så centimeterne bliver til meter, og lad Import BlendShapes være slået til (standard). Apply.

  3. Udtræk materialerne

    Udtræk teksturer og materialer på fanen Materials, så du kan redigere dem. I URP eller HDRP konverterer du materialerne til pipelinens Lit-shader.

  4. Find blendshapes

    Placér hovedet i en scene. Skinned Mesh Renderer viser de 52 blendshapes under BlendShapes, navngivet efter ARKit-blendshapes.

  5. Styr dem fra kode

    Vægte i Unity går fra 0 til 100.

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

Foretrækker du GLB? Unity læser det med en importpakke til glTF, for eksempel glTFast.

Godot 4: importér GLB-filen

  1. Hent GLB-filen ind

    Hent GLB-filen med ARKit-blendshapes, og kopiér den ind i dit projekt. Godot importerer den som en scene, i meter.

  2. Find blendshapes

    Åbn scenen, og vælg hovedets MeshInstance3D. Inspector viser blend shapes med deres ARKit-navne under Blend Shapes.

  3. Styr dem fra kode

    Vægte i Godot går fra 0 til 1.

    Kode
    # 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: indlæs GLB-filen

  1. Indlæs den med GLTFLoader

    Hovedet åbner som flere meshes (hud, øjne, tænder og så videre); hvert af dem bærer de samme 52 blendshape-navne.

  2. Sæt blendshapes ved navn

    morphTargetDictionary knytter hvert ARKit-navn til dets indeks i morphTargetInfluences; vægtene går fra 0 til 1.

    Kode
    // 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. Klare øjne

    For klare, reflekterende øjne i three.js henter du med indstillingen cornea=transmission, eller du udskifter hornhindematerialerne, når du indlæser filen (dokumentation EN).

Vi indlæste dette eksempels GLB-fil i three.js til denne guide: den åbner som 6 meshes, og hvert af dem viser alle 52 ARKit-navne.

Godt at vide

  • Samme mesh, samme rig. Hvert hoved har den samme vertexrækkefølge og de samme UV'er, så et setup, du laver til ét hoved, virker til dem alle.
  • Skala. Hver fil er i naturlig størrelse. Downloadindstillingen measured skalerer et hoved til et skøn over personens størrelse.
  • Lettere filer. Bed om 2K-teksturer med downloadindstillingen texture_size, når 4K er mere, end du har brug for.
  • Webforhåndsvisningen er ikke til motorer. Brug GLB eller FBX, ikke den komprimerede forhåndsvisning, som webappen viser.

Spørgsmål om hoveder i Unity, Godot og three.js

01Må jeg bruge en MetaHuman i Unity?
Et FaceNinja-hoved er en almindelig FBX- eller GLB-fil, så ja. En fuld MetaHuman bygget i MetaHuman Creator må siden juni 2025 også bruges i andre motorer under Epics licens; tjek vilkårene.
02Kommer de 52 blendshapes med?
Ja, med deres ARKit-navne: som BlendShapes på Skinned Mesh Renderer i Unity, Blend Shapes på MeshInstance3D i Godot og morph targets i three.js.
03Er der hår?
Ikke i disse filer. I Unreal står MetaHuman-grooms for håret; i andre motorer tilføjer du selv hår.
04Hvilket format er mindst?
GLB-filen med ARKit-blendshapes fylder omkring 105 MB med 4K-teksturer, og den statiske GLB-fil omkring 65 MB. 2K-teksturer gør begge mindre.

Kan jeg prøve et hoved med alle 52 blendshapes?

Ja. Tilmeld dig gratis, og hent de 20 eksempelhoveder: hver GLB og FBX har alle 52.