FaceNinja

Veiledning · Unity · Godot 4 · three.js

Bruk hodet ditt i Unity, Godot eller three.js.

Et FaceNinja-hode er en vanlig GLB- eller FBX-fil i MetaHuman-topologi, med øyne, tenner, 4K-teksturer og de 52 ARKit-blendshapes, så det fungerer også utenfor Unreal. Slik henter du det inn i Unity, Godot 4 og three.js, og slik beveger du ansiktet fra kode.

Et FaceNinja-hode rendret i three.js med munnen åpen i et smil
Eksempel S-16, en syntetisk person, lastet inn i three.js fra GLB-filen med ARKit-former, med jawOpen og de to mouthSmile-formene skrudd opp. Skjermbilde fra vår egen testside.

Hvilken fil til hvilken motor

Filer per motor
MotorFilEnheter
UnityFBX med ARKit-formerCentimeter; Unity gjør dem om til meter
Godot 4GLB med ARKit-formerMeter, Y opp
three.jsGLB med ARKit-formerMeter, Y opp

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 legger du til ditt eget hår.

Kan jeg bruke en MetaHuman i Unity?

Et FaceNinja-hode er din egen fil, i MetaHuman-topologi, under våre vilkår: bruk det i hvilken som helst motor. En MetaHuman du bygger i MetaHuman Creator, er underlagt Epics lisens, som siden juni 2025 også tillater andre motorer og verktøy (Epics lisensside).

Unity: importer FBX-filen

  1. Hent inn FBX-filen

    Last ned FBX-filen med ARKit-former og slipp den i Assets-mappen i prosjektet ditt.

  2. Sjekk importinnstillingene

    På Model-fanen lar du Convert Units stå på, så centimeterne blir meter, og Import BlendShapes på (standard). Trykk Apply.

  3. Trekk ut materialene

    På Materials-fanen trekker du ut teksturene og materialene så du kan redigere dem. I URP eller HDRP konverterer du materialene til pipelinens Lit-shader.

  4. Finn formene

    Plasser hodet i en scene. Skinned Mesh Renderer viser de 52 formene under BlendShapes, med navn etter ARKit-formene.

  5. Styr dem fra kode

    Vekter 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);

Foretrekker du GLB? Unity leser det med en glTF-importpakke, for eksempel glTFast.

Godot 4: importer GLB-filen

  1. Hent inn GLB-filen

    Last ned GLB-filen med ARKit-former og kopier den inn i prosjektet ditt. Godot importerer den som en scene, i meter.

  2. Finn formene

    Åpne scenen og velg hodets MeshInstance3D. Inspector viser blend shapes med ARKit-navnene under Blend Shapes.

  3. Styr dem fra kode

    Vekter 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: last inn GLB-filen

  1. Last inn med GLTFLoader

    Hodet åpnes som flere mesher (hud, øyne, tenner og så videre); hver av dem har de samme 52 formnavnene.

  2. Sett formene etter navn

    morphTargetDictionary kobler hvert ARKit-navn til indeksen i morphTargetInfluences; vektene 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 øyne

    For klare, reflekterende øyne i three.js laster du ned med valget cornea=transmission, eller bytter hornhinnematerialene når du laster inn filen (dokumentasjon EN).

Vi lastet inn GLB-filen til dette eksempelet i three.js for denne veiledningen: den åpnes som 6 mesher, og hver av dem har alle 52 ARKit-navnene.

Greit å vite

  • Samme mesh, samme rigg. Alle hoder har samme vertexrekkefølge og UV-er, så et oppsett du lager for ett hode, fungerer for alle.
  • Skala. Alle filer er i naturlig størrelse. Nedlastingsvalget measured skalerer et hode til et estimat av personens størrelse.
  • Lettere filer. Be om 2K-teksturer med nedlastingsvalget texture_size når 4K er mer enn du trenger.
  • Forhåndsvisningen på nett er ikke for spillmotorer. Bruk GLB- eller FBX-filen, ikke den komprimerte forhåndsvisningen som nettappen viser.

Spørsmål om hoder i Unity, Godot og three.js

01Kan jeg bruke en MetaHuman i Unity?
Et FaceNinja-hode er en vanlig FBX- eller GLB-fil, så ja. En full MetaHuman bygget i MetaHuman Creator kan også brukes i andre motorer under Epics lisens siden juni 2025; sjekk vilkårene.
02Blir de 52 blendshapes med?
Ja, med ARKit-navnene: som BlendShapes på Skinned Mesh Renderer i Unity, Blend Shapes på MeshInstance3D i Godot, og morph targets i three.js.
03Er det hår?
Ikke i disse filene. I Unreal står MetaHuman-grooms for håret; i andre motorer legger du til ditt eget.
04Hvilket format er minst?
GLB-filen med ARKit-former er omtrent 105 MB med 4K-teksturer, og den statiske GLB-filen omtrent 65 MB. Med 2K-teksturer blir begge mindre.

Kan jeg prøve et hode med alle 52 formene?

Ja. Registrer deg gratis og last ned de 20 eksempelhodene: hver GLB- og FBX-fil har alle 52.