2013-06-15 2 views
4

У меня есть файл collada, он содержит куб, из которого я экспортирую данные в файл (только сырые байты), и я импортирую байты в iOS. Все хорошо, я изучил данные, и все выглядит одинаково для вершин на iOS и osx.Collada to SceneKit to iOS

Однако, когда я проверить файл Collada, нормали очень сильно отличается от того, что SceneKit имеет

В SceneKit нормали либо 0, -1 или 1. В файле Collada я имею -2,831 ... -1,31 ... и т.д.

Любое понимание ценится,

Благодаря

D

+1

(я понял, преобразование в Swift, используя денди автозаполнения Xcode в.) Нормали в вашем файле не кажутся нормированными (длина 1). Возможно, ваша программа не заботится об этом при экспорте геометрии. –

+0

Вы имеете в виду, что в файле Collada нормали не нормализованы, но в наборе сюжетов они были? Это имеет значение? или это нормально? – Darren

+0

-2.831 больше, чем -1, поэтому оно не нормируется. В большинстве случаев вам нужен только угол нормальной поверхности, поэтому конечный результат должен иметь визуальное значение. Если это разница, которую вы видите в данных, и то, что вы видите на экране, как ожидается, я бы сказал, что вам не о чем беспокоиться. –

ответ

1

В Swift, следующий код загрузит сотрудничества llada .dae файл в сцену:

let url = NSBundle.mainBundle().URLForResource("scene", withExtension: "dae") 
var error: NSErrorPointer? = nil 
let scene = SCNScene.sceneWithURL(url, options: nil, error: error!) 

В Obj-C:

NSURL *url = [[NSBundle mainBundle] urlForResource:@"scene" withExtension:@"dae"]; 
NSError *error; 
SCNScene *scene = [SCNScene sceneWithURL:url options:nil error:&error]; 

См http://adcdownload.apple.com//videos/wwdc_2012__sd/session_504__introducing_scene_kit.mov

+2

Это не загружает DAE как таковой. В iOS SceneKit может загружать только файлы DAE, которые были добавлены в ресурсы пакета приложения в Xcode. Когда Xcode создает ваше приложение, он конвертирует DAE в сжатый, оптимизированный для устройства формат. – rickster

+0

Вполне возможно, что если вы импортируете файл в свой проект, он будет оптимизирован, но поскольку API предполагает URL-адреса, а не пути к файлам, я считаю, что он должен работать, даже если вы напрямую загружаете соответствующий файл с сервера. – podperson

+1

См. [Документы] (https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNSceneSource_Class/index.html). Просто Xcode-испеченные активы или NSKeyedArchiver-сериализованные объекты SCN в iOS. Хотя я полагаю, вы могли бы использовать Xcode для испечь DAE, а затем поместить полученный файл на сервер. – rickster

Смежные вопросы