Форматы 3D-моделей в разработке ARKit / ARCore

Я новичок в разработке игр AR для iOS и Android. У меня следующие вопросы:

  1. Какие форматы 3D-моделей поддерживаются ARKit для iOS и ARCore для Android соответственно? (Я пробовал .dae и .obj поддерживаются ARkit, но еще не тестировал ARCore.)

  2. Наш поставщик 3D-моделей может предоставить нам только формат FBX. Как я могу преобразовать его в форматы, поддерживаемые ARKit и ARCore? Я пробовал использовать конвертер 3D-моделей, но у преобразованной модели нет текстуры.


person Funny LI    schedule 04.10.2017    source источник


Ответы (4)


Обновлено: 25 июля 2021 г.


SceneKit

Фреймворк Apple SceneKit обрабатывает 3D-модели для ARKit и 3D-приложений. SceneKit поддерживает следующие 3D-ресурсы с соответствующими файлами материалов:

  • .dae (с анимацией или без)
  • .obj (однокадровый) с .mtl текстурой
  • .abc (поддерживается только однокадровый)
  • .usdz (с анимацией или без)
  • .scn (собственный формат сцены SceneKit)


RealityKit

Фреймворк Apple RealityKit также обрабатывает 3D-модели для ARKit. Вы можете прототипировать контент для RealityKit в отдельном приложении под названием Reality Composer . RealityKit поддерживает следующие 3D-ресурсы:

  • .usdz (с анимацией или без)
  • .reality (с анимацией и динамикой или без них) - Сделано для гораздо более быстрой загрузки
  • .rcproject (с анимацией и динамикой или без них)

Кроме того, вы можете использовать команду Терминала usdzconvert для получить .usdz из следующих форматов:

  • .obj
  • .glTF
  • .fbx
  • .abc
  • .usda
  • .usdc
  • .usd

И, конечно же, вы можете использовать приложение Reality Converter (выпущено в 2020 г.) с простой интерфейс.


Sceneform

Google Sceneform обрабатывает 3D-модели для ARCore SDK < / сильный>. Sceneform поддерживает следующие 3D-ресурсы с их материальными зависимостями:

  • .obj (с зависимостью .mtl)
  • .glTF (анимация не поддерживается)
  • .fbx (с анимацией или без)
  • .sfa (определение актива ascii, не рекомендуется в Sceneform 1.16)
  • .sfb (определение двоичного актива, не рекомендуется в Sceneform 1.16)

P.S. К сожалению, с июня 2020 года Sceneform был заархивирован и больше не поддерживается Google.


SceneKit, RealityKit, Sceneform и Reality Composer поддерживают рендеринг на основе физических данных.


ARKit and ARCore

Но какова тогда роль ARKit и ARCore?

Эти два модуля не заботятся об импорте и рендеринге 3D-геометрии. Они заботятся только об отслеживании, понимании сцены (обнаружение плоскости, тестирование попаданий и лучей, точное восприятие глубины сцены, оценка освещенности, реконструкция геометрии сцены и т. Д.).

person Andy Fedoroff    schedule 26.04.2019

ARKit не заботится о форматах моделей, потому что сам ARKit не отображает 3D-модели (или что-либо еще).

ARKit предоставляет информацию для использования механизмом рендеринга более высокого уровня - SceneKit или SpriteKit от Apple, сторонними плагинами Unreal или Unity или движком, созданным вами с помощью Metal или OpenGL. Механизм рендеринга отвечает за отрисовку канала камеры и наложение 3D-контента для создания иллюзий AR, и он использует информацию, предоставляемую ARKit, чтобы сделать это убедительно.

Я мало что знаю об ARCore, но, судя по всему, он играет ту же роль в экосистеме Android - это Unity, Unreal или какой-то другой движок, который также обрабатывает там 3D-модели.

Итак, подобные вопросы относятся к любому 3D-движку, который вы используете с ARKit / ARCore. SceneKit может обрабатывать DAE и OBJ напрямую, а также несколько других форматов через Model I / O (см. MDLAsset < / a> и SCNScene. init(mdlAsset:)). Для Unreal, Unity и всего остального, что вы используете с дескриптором ARCore ... см. Документацию по этим технологиям.

person rickster    schedule 04.10.2017

Сам ARcore на данный момент не имеет никакой логики обработки 3D-моделей. Чтобы визуализировать 3D-модель в любом формате, вам необходимо проанализировать данные и нарисовать их с помощью openGL. Пример приложения в пакете демонстрирует, как это можно сделать для простой 3D-модели, то есть 1 файла OBJ и 1 файла текстуры.

person JohnLXiang    schedule 05.10.2017

Я не уверен, что вы правильно проверили ARCore. Базовый пример, представленный Google, работает с форматом .obj. ARCore - это набор инструментов, связанных только с AR. Вы можете использовать 3D-формат, как хотите, при условии, что сможете использовать его на Android. Это не связано с ARCore. Вопрос 2 не связан с ARCore и / или android или даже с arkit.

person Fixus    schedule 04.10.2017