FaceNinja

Руководство · Unity · Godot 4 · three.js

Ваша голова в Unity, Godot или three.js.

Голова FaceNinja — обычный GLB или FBX на топологии MetaHuman, с глазами, зубами, текстурами 4K и 52 блендшейпами ARKit, поэтому она работает и вне Unreal. Здесь — как перенести её в Unity, Godot 4 и three.js и как двигать лицо из кода.

Голова FaceNinja в three.js с открытым в улыбке ртом
Пример S-16, синтетический человек, загружен в three.js из GLB с формами ARKit, с поднятыми jawOpen и двумя формами mouthSmile. Скриншот с нашей тестовой страницы.

Какой файл для какого движка

Файлы по движкам
ДвижокФайлЕдиницы
UnityFBX с формами ARKitСантиметры; Unity переводит их в метры
Godot 4GLB с формами ARKitМетры, Y вверх
three.jsGLB с формами ARKitМетры, Y вверх

Оба в натуральную величину. Волос нет ни в GLB, ни в FBX: в Unreal их заменяют groom MetaHuman, в других движках добавьте свои волосы.

Можно ли использовать MetaHuman в Unity?

Голова FaceNinja — ваш собственный файл на топологии MetaHuman, на наших условиях: используйте её в любом движке. MetaHuman, созданный в MetaHuman Creator, подпадает под лицензию Epic, которая с июня 2025 года разрешает и другие движки и инструменты (страница лицензии Epic).

Unity: импорт FBX

  1. Добавьте FBX

    Скачайте FBX с формами ARKit и перетащите его в папку Assets проекта.

  2. Проверьте настройки импорта

    На вкладке Model оставьте включёнными Convert Units, чтобы сантиметры стали метрами, и Import BlendShapes (по умолчанию). Нажмите Apply.

  3. Извлеките материалы

    На вкладке Materials извлеките текстуры и материалы, чтобы их можно было редактировать. В URP или HDRP переведите материалы на шейдер Lit этого пайплайна.

  4. Найдите формы

    Поместите голову в сцену. Skinned Mesh Renderer показывает 52 формы в разделе BlendShapes, с названиями форм ARKit.

  5. Управляйте ими из кода

    Веса в Unity — от 0 до 100.

    Код
    // 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);

Предпочитаете GLB? Unity читает его через пакет импорта glTF, например glTFast.

Godot 4: импорт GLB

  1. Добавьте GLB

    Скачайте GLB с формами ARKit и скопируйте его в проект. Godot импортирует его как сцену, в метрах.

  2. Найдите формы

    Откройте сцену и выберите MeshInstance3D головы. Inspector показывает blend shapes с названиями ARKit в разделе Blend Shapes.

  3. Управляйте ими из кода

    Веса в Godot — от 0 до 1.

    Код
    # 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: загрузка GLB

  1. Загрузите через GLTFLoader

    Голова открывается как несколько мешей (кожа, глаза, зубы и так далее); у каждого те же 52 названия форм.

  2. Задавайте формы по названию

    morphTargetDictionary сопоставляет каждое название ARKit с индексом в morphTargetInfluences; веса — от 0 до 1.

    Код
    // 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. Прозрачные глаза

    Для прозрачных, отражающих глаз в three.js скачайте файл с параметром cornea=transmission или замените материалы роговицы при загрузке (документация EN).

Для этого руководства мы загрузили GLB этого примера в three.js: число мешей — 6, и в каждом есть все 52 названия ARKit.

Полезно знать

  • Один меш, один риг. У всех голов одинаковые порядок вершин и UV, поэтому настройка, сделанная для одной головы, работает для всех.
  • Масштаб. Все файлы в натуральную величину. Вариант скачивания measured масштабирует голову по оценке размера человека.
  • Файлы полегче. Запросите текстуры 2K параметром скачивания texture_size, когда 4K больше, чем нужно.
  • Веб-предпросмотр не для движков. Используйте GLB или FBX, а не сжатый предпросмотр из веб-приложения.

Вопросы о головах в Unity, Godot и three.js

01Можно ли использовать MetaHuman в Unity?
Голова FaceNinja — обычный FBX или GLB, так что да. Полноценный MetaHuman из MetaHuman Creator по лицензии Epic с июня 2025 года тоже можно использовать в других движках; проверьте её условия.
02Импортируются ли 52 блендшейпа?
Да, с названиями ARKit: как BlendShapes на Skinned Mesh Renderer в Unity, Blend Shapes на MeshInstance3D в Godot и morph targets в three.js.
03Есть ли волосы?
Не в этих файлах. В Unreal их дают groom MetaHuman; в других движках добавьте свои волосы.
04Какой формат легче?
GLB с формами ARKit весит около 105 MB с текстурами 4K, статичный GLB — около 65 MB. С текстурами 2K оба меньше.

Можно ли попробовать голову со всеми 52 формами?

Да. Зарегистрируйтесь бесплатно и скачайте 20 примеров голов: в каждом GLB и FBX есть все 52.