Table of Contents

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

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

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

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

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

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

  • Файл .obj: данные геометрической модели (содержит вершины, грани, UV-координаты и т.д.).
  • Файл .mtl: определение материалов (цвет, путь к текстурной карте).
  • Текстурные карты: как минимум одно изображение в формате 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
    Элементы граней. Должен содержать как минимум индексы вершин и индексы текстурных координат вершин. Также поддерживаются полигональные грани с более чем 3 вершинами (например, четырехугольники).
  • Обязательно должен содержать mtllib
    Ссылка на файл материалов. Требуется указать как минимум один внешний MTL-файл. Путь к файлу должен быть относительным, а не абсолютным.
  • Обязательно должен содержать usemtl
    Для элементов модели, использующих материал, должно быть указано имя материала. Это имя должно соответствовать имени материала, определенному во внешнем MTL-файле.

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

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

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

Вы можете подготовить файлы модели в формате 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.

Важно

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

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

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

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

    Левый эталонный рисунок: может быть обнаружен и отслежен EasyAR. Правый эталонный рисунок: не может быть обнаружен и отслежен, недостаточно текстур.

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

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

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

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

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

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

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

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

  2. Проверка нормалей модели
    Направление нормалей полигонов модели должно следовать правилу правой руки.

    У затененных полигонов второго куба нормали направлены отрицательно. Такие полигоны в EasyAR обрабатываются как невидимые. При взгляде изнутри модели она будет выглядеть как третий куб.
    Модель должна избегать любых полигонов с отрицательно направленными нормалями.

  3. Количество полигонов модели
    Количество полигонов модели должно быть минимально возможным при сохранении геометрической формы объекта, обычно не превышая 100,000 треугольных полигонов. Избыточное количество полигонов приводит к:

    • Увеличению времени загрузки модели, что ухудшает пользовательский опыт при запуске приложения
    • Увеличению вычислительной нагрузки при проецировании текстур на полигоны, что снижает частоту кадров при отслеживании в приложении

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