FaceNinja

Návod · Unity · Godot 4 · three.js

Použijte svou hlavu v Unity, Godotu nebo three.js.

Hlava FaceNinja je obyčejný soubor GLB nebo FBX v topologii MetaHuman, s očima, zuby, texturami 4K a 52 blendshapy ARKit, takže funguje i mimo Unreal. Takto ji dostanete do Unity, Godot 4 a three.js a takto hýbete obličejem z kódu.

Hlava FaceNinja vyrenderovaná v three.js s otevřenými ústy v úsměvu
Ukázka S-16, syntetická osoba, načtená v three.js z GLB s tvary ARKit, s vytaženým jawOpen a oběma tvary mouthSmile. Snímek obrazovky z naší vlastní testovací stránky.

Který soubor pro který engine

Soubory podle enginu
EngineSouborJednotky
UnityFBX s tvary ARKitCentimetry; Unity je převede na metry
Godot 4GLB s tvary ARKitMetry, Y-up
three.jsGLB s tvary ARKitMetry, Y-up

Oba v životní velikosti. Vlasy v GLB ani FBX nejsou: v Unrealu je nahradí groomy MetaHuman; v jiných enginech přidejte vlastní vlasy.

Můžu použít MetaHuman v Unity?

Hlava FaceNinja je váš vlastní soubor, v topologii MetaHuman, za našich podmínek: použijte ji v jakémkoli enginu. MetaHuman, kterého postavíte v MetaHuman Creatoru, spadá pod licenci Epicu, která od června 2025 povoluje i jiné enginy a nástroje (licenční stránka Epicu).

Unity: importujte FBX

  1. Přidejte FBX

    Stáhněte FBX s tvary ARKit a přetáhněte ho do složky Assets ve svém projektu.

  2. Zkontrolujte nastavení importu

    Na záložce Model nechte zapnuté Convert Units, aby se centimetry změnily na metry, a Import BlendShapes (výchozí). Klikněte na Apply.

  3. Extrahujte materiály

    Na záložce Materials extrahujte textury a materiály, abyste je mohli upravovat. V URP nebo HDRP převeďte materiály na Lit shader dané pipeline.

  4. Najděte tvary

    Umístěte hlavu do scény. Skinned Mesh Renderer vypíše 52 tvarů v sekci BlendShapes, pojmenovaných podle tvarů ARKit.

  5. Ovládejte je z kódu

    Váhy v Unity jdou od 0 do 100.

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

Dáváte přednost GLB? Unity ho načte přes balíček importéru glTF, například glTFast.

Godot 4: importujte GLB

  1. Přidejte GLB

    Stáhněte GLB s tvary ARKit a zkopírujte ho do projektu. Godot ho importuje jako scénu, v metrech.

  2. Najděte tvary

    Otevřete scénu a vyberte MeshInstance3D hlavy. Inspector vypíše blend shapes pod názvy ARKit v sekci Blend Shapes.

  3. Ovládejte je z kódu

    Váhy v Godotu jdou od 0 do 1.

    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: načtěte GLB

  1. Načtěte ho přes GLTFLoader

    Hlava se otevře jako několik sítí (pleť, oči, zuby a tak dále); každá nese stejných 52 názvů tvarů.

  2. Nastavujte tvary podle názvu

    morphTargetDictionary přiřazuje každému názvu ARKit jeho index v morphTargetInfluences; váhy jdou od 0 do 1.

    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. Průzračné oči

    Pro průzračné, odrazivé oči v three.js stáhněte soubor s volbou cornea=transmission, nebo při načítání vyměňte materiály rohovky (dokumentace EN).

Pro tento návod jsme GLB této ukázky načetli v three.js: počet sítí po otevření je 6 a každá uvádí všech 52 názvů ARKit.

Dobré vědět

  • Stejná síť, stejný rig. Každá hlava má stejné pořadí vrcholů a stejné UV, takže nastavení udělané pro jednu hlavu funguje pro všechny.
  • Měřítko. Každý soubor je v životní velikosti. Volba stahování measured přeškáluje hlavu na odhad velikosti dané osoby.
  • Lehčí soubory. Když je 4K víc, než potřebujete, vyžádejte si textury 2K volbou stahování texture_size.
  • Webový náhled není pro enginy. Použijte GLB nebo FBX, ne komprimovaný náhled z webové aplikace.

Otázky k hlavám v Unity, Godotu a three.js

01Můžu použít MetaHuman v Unity?
Hlava FaceNinja je obyčejný soubor FBX nebo GLB, takže ano. Plnohodnotný MetaHuman postavený v MetaHuman Creatoru se podle licence Epicu smí od června 2025 používat i v jiných enginech; ověřte si její podmínky.
02Přenesou se i 52 blendshapy?
Ano, pod svými názvy ARKit: jako BlendShapes na Skinned Mesh Renderer v Unity, Blend Shapes na MeshInstance3D v Godotu a morph targety v three.js.
03Jsou tam vlasy?
V těchto souborech ne. V Unrealu je dodají groomy MetaHuman; v jiných enginech přidejte vlastní vlasy.
04Který formát je menší?
GLB s tvary ARKit má s texturami 4K asi 105 MB, statický GLB asi 65 MB. Textury 2K oba zmenší.

Můžu si vyzkoušet hlavu se všemi 52 tvary?

Ano. Zaregistrujte se zdarma a stáhněte si 20 ukázkových hlav: každý soubor GLB i FBX má všech 52.