Table of Contents

Подготовка и оптимизация 3D-модели

В этой статье подробно объясняется, как подготовить 3D-модели, соответствующие требованиям EasyAR, включая спецификации формата, рекомендуемые инструменты и распространенное устранение неполадок, чтобы помочь разработчикам повысить успешность tracking с самого источника.

Формат и спецификации модели

EasyAR 3D object tracking поддерживает только формат Wavefront OBJ. При использовании соблюдайте следующие требования и спецификации.

Структура файлов модели

Полная 3D-модель должна включать следующие файлы:

  • Файл .obj: геометрические данные модели, включая вершины, грани, UV-координаты и т. д.
  • Файл .mtl: определения материалов, включая цвета и пути к texture map.
  • Texture maps: как минимум одно изображение JPEG или PNG. Рекомендуемое разрешение от 512×512 до 2048×2048.

Требования к файлам

  • Все файлы должны находиться в одной папке и ссылаться друг на друга с помощью относительных путей, например texture.jpg. Абсолютные пути, такие как C:\Models\texture.jpg, запрещены.
  • Имена файлов и пути внутри файлов не должны содержать пробелов. Рекомендуется использовать английские буквы или цифры.
  • Кодировка файлов должна быть UTF-8, чтобы избежать ошибок загрузки из-за искаженного текста.

Минимальные требования к файлам OBJ (.obj)

  • Должен содержать vertex
    Геометрические вершины, представленные координатами \((x, y, z [, w])\). \(w\) необязателен и по умолчанию равен 1.0. Цветовые параметры вершин не обязательны; если они указаны, система их не загрузит.
  • Должен содержать texture coordinates
    Текстурные координаты, представленные координатами \((u, v [,w])\). \(w\) необязателен и по умолчанию равен 0. Обычно значения \(u\) и \(v\) должны быть между 0 и 1. Для значений меньше 0 или больше 1 система по умолчанию обрабатывает их в режиме REPEAT: целая часть координаты игнорируется, затем создается бесконечно повторяющийся шаблон, аналогично обработке GL_REPEAT в OpenGL.
  • Должен содержать face
    Элементы face должны включать как минимум индексы вершин и индексы текстурных координат. Полигональные структуры граней с более чем 3 вершинами, например четырехугольники, также поддерживаются.
  • Должен содержать mtllib
    Ссылка на файл материала. Необходимо указать как минимум один внешний MTL-файл материала, и путь к файлу должен быть относительным, а не абсолютным.
  • Должен содержать usemtl
    Материал, на который ссылаются элементы модели, должен указывать имя материала, и это имя должно совпадать с именем материала, определенным во внешнем MTL-файле.

Минимальные требования к файлам MTL (.mtl)

  • В MTL-файле должен быть определен как минимум один материал.
  • Texture map обязательна.
    Обычно достаточно указать texture map для ambient или diffuse (map_Ka, map_Kd);
    Путь к texture map должен быть относительным, а не абсолютным.
  • Другие необязательные параметры texture map не требуются; если они указаны, система их не использует.

Подготовка модели

Подготовить OBJ-файлы моделей, соответствующие спецификациям, можно несколькими способами.

  1. Экспорт из существующей модели
    Используйте профессиональные инструменты, такие как Autodesk Maya / 3ds Max, чтобы импортировать существующую модель FBX или другого формата, при экспорте выберите “OBJ Export” и убедитесь, что включены опции “Materials” и “UVs”.

  2. Создание новой модели
    Используйте инструменты моделирования, такие как Autodesk Maya / 3ds Max, чтобы создать или нарисовать 3D-модель и вывести ее в формате OBJ.

  3. Сканирование реального объекта и 3D-реконструкция
    Используйте ПО для 3D-сканирования и моделирования, например Autodesk ReCap или Bentley ContextCapture, либо лазерный сканер для 3D-реконструкции реального объекта, затем экспортируйте результат в формате OBJ.

Важно

Текстуры модели должны точно воспроизводить визуальные особенности реального объекта, иначе recognition и tracking не будут работать корректно.

Лучшие практики для моделей

Ниже перечислены распространенные проблемы и примеры, возникающие при подготовке моделей, для быстрой справки и проверки.

  1. Обеспечьте богатые детали текстуры
    Текстура модели должна содержать богатые детали.

    Слева на эталонном изображении: может быть обнаружено и отслежено EasyAR. Справа: не может быть обнаружено или отслежено, потому что текстуры слишком мало.

  2. Форма модели
    Поддерживаются модели разных форм, но основная структура должна быть convex.

    Оба объекта могут быть обнаружены и отслежены EasyAR.

  3. Проверьте пути ссылок внутри файла
    Пути, на которые ссылается файл модели, должны быть relative paths, а не absolute paths.

    Модель справа не может быть загружена, потому что EasyAR не может найти файл, использующий absolute path.

    Пути, на которые ссылается файл модели, не должны содержать пробелов или специальных символов.

    Модель справа не может быть загружена, потому что referenced path содержит пробелы.

  1. Проверьте формат кодировки файла
    Файлы модели должны использовать кодировку UTF-8.

    Модель справа не может быть загружена, потому что ее кодировка файла вызывает decoding error при чтении.

  2. Проверьте нормали модели
    Положительное направление normal vector граней модели должно следовать right-hand rule.

    Normal vectors затененных граней во втором кубе имеют отрицательную ориентацию. Такие грани в EasyAR обрабатываются как invisible faces. Если смотреть изнутри модели, она будет выглядеть как третий куб.
    Модель должна избегать любых граней с отрицательной ориентацией нормалей.

  3. Количество граней модели
    Количество граней модели должно быть как можно меньше при сохранении геометрической формы объекта и обычно не должно превышать 100 000 triangle faces. Слишком большое количество граней может привести к:

    • Чрезмерно долгой загрузке модели, что влияет на user experience при запуске приложения
    • Увеличению вычислений для face texture projection, что влияет на frame rate приложения во время tracking

Качество 3D-модели напрямую определяет успешность tracking. Разработчики должны строго соблюдать спецификации формата, уделять особое внимание оптимизации деталей текстур и убедиться, что формат файлов корректен.