Как я могу использовать OBJ-файл или файл CTM вместо DAE-файла в SceneKit?

Я использовал рендеринг 3d-сцены с openGL и металлом на IOS, а формат файла, который я использовал, был OBJ и CTM. В эти дни я пытаюсь Сцена. Кажется, что SceneKit загружает только DAE-файл. Все демо, которые я могу найти в Интернете, используют DAE-файл, и я не вижу массив вершин и граней в своих кодах. Как загрузить файл OBJ или файл CTM вместо файла DAE?

вы можете это сделать, написав собственный импортер. Взгляните на SCNGeometry , SCNGeometrySource и SCNGeometryElement .

edit: запуск iOS 9.0 и OS X 10.11 SceneKit может открывать файлы OBJ или любой другой формат файла, поддерживаемый вводом / выводом модели. Вы можете использовать ранее существующие API для этого (например, +sceneNamed: или новый метод +sceneWithMDLAsset: .

EDIT: ModelIO может, вероятно, загружать файлы OBJ. Я сам не пробовал этот путь. Этот ответ был написан до iOS 9 и OS X 10.11:

SceneKit не может загружать файлы DAE в iOS, фактически, он фактически прекомпиляет файлы DAE во внутренний формат для устройств iOS.

Если вы хотите преобразовать OBJs в DAE, вы можете написать простой импортер / экспортер в OS X, чтобы сделать это – на OS X SceneKit будет фактически читать файлы OBJ (он не документирован, но он работает) и будет писать DAE.

Или вы можете загрузить проект «Assimp» на github, если вы хотите попробовать самостоятельно прочитать OBJ, но это будет небольшая работа, чтобы попасть в объекты SceneKit.

Начиная с iOS 9 / OS X 10.11, вы можете использовать MDLAsset модели I / O для импорта файлов OBJ (и нескольких других форматов). Как преобразовать файл OBJ Wavefront в SCNNode с образцом ввода-вывода с образцом кода.

Загрузка OBJ-файла

Это так же просто, как передача MDLAsset действительного URL-адреса.

 private func nodeForURL(url: NSURL) -> SCNNode { let asset = MDLAsset(URL: url) let object = asset.objectAtIndex(0) let node = SCNNode(MDLObject: object) return node } 

Это не только правильно загрузит файл .obj , но и загрузит ссылки .mtl файлов.

Дополнительная информация о поддерживаемых форматах файлов:

Следующие 3D-форматы поддерживаются SceneKit и могут быть импортированы в .scn файл с помощью редактора сцен в Xcode:

DAE, OBJ, Alembic, STL и PLY.

Источник: WWDC 2015 Сессия «Усовершенствования к SceneKit» в 02:24