FaceNinja

Guía · Unity · Godot 4 · three.js

Usa tu cabeza en Unity, Godot o three.js.

Una cabeza FaceNinja es un GLB o FBX normal con topología MetaHuman, con ojos, dientes, texturas 4K y los 52 blendshapes ARKit, así que también funciona fuera de Unreal. Así se lleva a Unity, Godot 4 y three.js, y así se mueve la cara desde código.

Una cabeza FaceNinja renderizada en three.js con la boca abierta en una sonrisa
Muestra S-16, una persona sintética, cargada en three.js desde el GLB con formas ARKit, con jawOpen y las dos formas mouthSmile activadas. Captura de nuestra propia página de pruebas.

Qué archivo para cada motor

Archivos por motor
MotorArchivoUnidades
UnityFBX con formas ARKitCentímetros; Unity los convierte a metros
Godot 4GLB con formas ARKitMetros, eje Y hacia arriba
three.jsGLB con formas ARKitMetros, eje Y hacia arriba

Ambos están a tamaño real. El pelo no está en el GLB ni en el FBX: en Unreal lo ponen los grooms de MetaHuman; en otros motores, añade tu propio pelo.

¿Puedo usar un MetaHuman en Unity?

Una cabeza FaceNinja es tu propio archivo, con topología MetaHuman, bajo nuestros términos: úsala en cualquier motor. Un MetaHuman que creas en MetaHuman Creator queda bajo la licencia de Epic, que desde junio de 2025 también permite otros motores y herramientas (página de la licencia de Epic).

Unity: importa el FBX

  1. Trae el FBX

    Descarga el FBX con formas ARKit y suéltalo en la carpeta Assets de tu proyecto.

  2. Revisa los ajustes de importación

    En la pestaña Model, deja Convert Units activado, para que los centímetros pasen a metros, e Import BlendShapes activado (por defecto). Pulsa Apply.

  3. Extrae los materiales

    En la pestaña Materials, extrae las texturas y los materiales para poder editarlos. En URP o HDRP, convierte los materiales al shader Lit del pipeline.

  4. Encuentra las formas

    Coloca la cabeza en una escena. El Skinned Mesh Renderer muestra las 52 formas en BlendShapes, con los nombres de las formas ARKit.

  5. Muévelas desde código

    En Unity, los pesos van de 0 a 100.

    Código
    // 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);

¿Prefieres GLB? Unity lo lee con un paquete importador de glTF, como glTFast.

Godot 4: importa el GLB

  1. Trae el GLB

    Descarga el GLB con formas ARKit y cópialo en tu proyecto. Godot lo importa como escena, en metros.

  2. Encuentra las formas

    Abre la escena y selecciona el MeshInstance3D de la cabeza. El Inspector muestra las blend shapes con sus nombres ARKit en Blend Shapes.

  3. Muévelas desde código

    En Godot, los pesos van de 0 a 1.

    Código
    # 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: carga el GLB

  1. Cárgalo con GLTFLoader

    La cabeza se abre como varias mallas (piel, ojos, dientes, etc.); cada una lleva los mismos 52 nombres de formas.

  2. Ajusta las formas por nombre

    morphTargetDictionary asigna a cada nombre ARKit su índice en morphTargetInfluences; los pesos van de 0 a 1.

    Código
    // 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. Ojos transparentes

    Para unos ojos transparentes y con reflejos en three.js, descarga con la opción cornea=transmission, o cambia los materiales de la córnea al cargar el archivo (docs EN).

Cargamos el GLB de esta muestra en three.js para esta guía: se abre como 6 mallas, y cada una enumera los 52 nombres ARKit.

Conviene saber

  • La misma malla, el mismo rig. Todas las cabezas tienen el mismo orden de vértices y las mismas UV, así que lo que configures para una cabeza sirve para todas.
  • Escala. Todos los archivos están a tamaño real. La opción de descarga measured escala una cabeza a una estimación del tamaño de la persona.
  • Archivos más ligeros. Pide texturas 2K con la opción de descarga texture_size cuando 4K sea más de lo que necesitas.
  • La vista previa web no es para motores. Usa el GLB o el FBX, no la vista previa comprimida que muestra la aplicación web.

Preguntas sobre cabezas en Unity, Godot y three.js

01¿Puedo usar un MetaHuman en Unity?
Una cabeza FaceNinja es un FBX o GLB normal, así que sí. Un MetaHuman completo creado en MetaHuman Creator también puede usarse en otros motores bajo la licencia de Epic desde junio de 2025; revisa sus condiciones.
02¿Se importan los 52 blendshapes?
Sí, con sus nombres ARKit: como BlendShapes en el Skinned Mesh Renderer en Unity, Blend Shapes en el MeshInstance3D en Godot y morph targets en three.js.
03¿Hay pelo?
No en estos archivos. En Unreal lo ponen los grooms de MetaHuman; en otros motores, añade tu propio pelo.
04¿Qué formato ocupa menos?
El GLB con formas ARKit ocupa unos 105 MB con texturas 4K, y el GLB estático unos 65 MB. Con texturas 2K, ambos ocupan menos.

¿Puedo probar una cabeza con los 52 blendshapes?

Sí. Regístrate gratis y descarga las 20 cabezas de muestra: cada GLB y FBX tiene los 52.