FaceNinja

Guide · Unity · Godot 4 · three.js

Votre tête dans Unity, Godot ou three.js.

Une tête FaceNinja est un simple GLB ou FBX sur la topologie MetaHuman, avec yeux, dents, textures 4K et les 52 blendshapes ARKit : elle fonctionne donc aussi hors d’Unreal. Voici comment l’importer dans Unity, Godot 4 et three.js, et comment animer le visage par code.

Une tête FaceNinja rendue dans three.js, la bouche ouverte en un sourire
Exemple S-16, une personne synthétique, chargé dans three.js depuis le GLB avec blendshapes ARKit, avec jawOpen et les deux blendshapes mouthSmile activés. Capture de notre propre page de test.

Quel fichier pour quel moteur

Fichiers par moteur
MoteurFichierUnités
UnityFBX avec blendshapes ARKitCentimètres ; Unity les convertit en mètres
Godot 4GLB avec blendshapes ARKitMètres, Y vers le haut
three.jsGLB avec blendshapes ARKitMètres, Y vers le haut

Les deux sont grandeur nature. Les cheveux ne sont ni dans le GLB ni dans le FBX : dans Unreal, les grooms MetaHuman les remplacent ; dans les autres moteurs, ajoutez vos propres cheveux.

Peut-on utiliser un MetaHuman dans Unity ?

Une tête FaceNinja est votre propre fichier, sur la topologie MetaHuman, sous nos conditions : utilisez-la dans n’importe quel moteur. Un MetaHuman que vous créez dans MetaHuman Creator relève de la licence d’Epic, qui depuis juin 2025 autorise aussi d’autres moteurs et outils (page de la licence d’Epic).

Unity : importer le FBX

  1. Ajoutez le FBX

    Téléchargez le FBX avec blendshapes ARKit et déposez-le dans le dossier Assets de votre projet.

  2. Vérifiez les réglages d’import

    Dans l’onglet Model, laissez Convert Units activé, pour que les centimètres deviennent des mètres, et Import BlendShapes activé (par défaut). Cliquez sur Apply.

  3. Extrayez les matériaux

    Dans l’onglet Materials, extrayez les textures et les matériaux pour pouvoir les modifier. En URP ou HDRP, convertissez les matériaux vers le shader Lit du pipeline.

  4. Trouvez les blendshapes

    Placez la tête dans une scène. Le Skinned Mesh Renderer liste les 52 blendshapes sous BlendShapes, nommés d’après ARKit.

  5. Pilotez-les par code

    Dans Unity, les poids vont de 0 à 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);

Vous préférez le GLB ? Unity le lit avec un package d’import glTF, comme glTFast.

Godot 4 : importer le GLB

  1. Ajoutez le GLB

    Téléchargez le GLB avec blendshapes ARKit et copiez-le dans votre projet. Godot l’importe comme une scène, en mètres.

  2. Trouvez les blendshapes

    Ouvrez la scène et sélectionnez le MeshInstance3D de la tête. L’Inspector liste les blend shapes par leur nom ARKit sous Blend Shapes.

  3. Pilotez-les par code

    Dans Godot, les poids vont de 0 à 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 : charger le GLB

  1. Chargez-le avec GLTFLoader

    La tête s’ouvre en plusieurs maillages (peau, yeux, dents, etc.) ; chacun porte les mêmes 52 noms de blendshapes.

  2. Réglez les blendshapes par nom

    morphTargetDictionary associe chaque nom ARKit à son index dans morphTargetInfluences ; les poids vont de 0 à 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. Des yeux transparents

    Pour des yeux transparents et réfléchissants dans three.js, téléchargez avec l’option cornea=transmission, ou remplacez les matériaux de la cornée au chargement du fichier (docs EN).

Nous avons chargé le GLB de cet exemple dans three.js pour ce guide : il s’ouvre en 6 maillages, et chacun liste les 52 noms ARKit.

Bon à savoir

  • Même maillage, même rig. Chaque tête a le même ordre de sommets et les mêmes UV : un réglage fait pour une tête vaut pour toutes.
  • Échelle. Chaque fichier est grandeur nature. L’option de téléchargement measured met une tête à l’échelle d’une estimation de la taille de la personne.
  • Fichiers plus légers. Demandez des textures 2K avec l’option de téléchargement texture_size quand la 4K dépasse vos besoins.
  • L’aperçu web n’est pas fait pour les moteurs. Utilisez le GLB ou le FBX, pas l’aperçu compressé affiché par l’application web.

Questions sur les têtes dans Unity, Godot et three.js

01Peut-on utiliser un MetaHuman dans Unity ?
Une tête FaceNinja est un simple FBX ou GLB, donc oui. Un MetaHuman complet créé dans MetaHuman Creator peut aussi être utilisé dans d’autres moteurs sous la licence d’Epic depuis juin 2025 ; vérifiez ses conditions.
02Les 52 blendshapes sont-ils importés ?
Oui, avec leurs noms ARKit : en BlendShapes sur le Skinned Mesh Renderer dans Unity, en Blend Shapes sur le MeshInstance3D dans Godot et en morph targets dans three.js.
03Y a-t-il des cheveux ?
Pas dans ces fichiers. Dans Unreal, les grooms MetaHuman les fournissent ; dans les autres moteurs, ajoutez vos propres cheveux.
04Quel format est le plus léger ?
Le GLB avec blendshapes ARKit pèse environ 105 Mo avec des textures 4K, et le GLB statique environ 65 Mo. Des textures 2K allègent les deux.

Puis-je essayer une tête avec les 52 blendshapes ?

Oui. Inscrivez-vous gratuitement et téléchargez les 20 têtes d’exemple : chaque GLB et FBX a les 52.