Intereting Posts
Рефакторинг быстрого кода Соответствие набора слов, начинающихся с определенной строки с использованием предиката Приложение iOS изменило поведение после того, как стало доступно на appStore Автозаполнение в Xcode, не показывающее все классы Главный экран моего приложения в Xcode 7 исчез iOS Forward Geocoding возвращает шаткий, редкий результат Область с использованием xCode 8 и Swift 2.3 Неудача Фоновое вычисление на пользовательском интерфейсе iPad-блоков Что эквивалентно раскрашиванию объекта в SceneKit? Утечка памяти при изменении размера UIImage в дуге Возникли проблемы с Restkit 0.2, загружая две разные таблицы с одним и тем же Entity и разными предикатами Как центрировать UIButton, который является заголовком раздела в UITableView? Почему NEHotspotHelper registerWithOptions возвращает FALSE? Получение кода ошибки 32 из Twitter при извлечении сведений о пользователях с помощью Social Framework & SLRequest Как я могу использовать Application Loader для массового ввода In-App Purchase в iTunes Connect?

Не удается отобразить 3d-файл из каталога кеша

Не могли бы вы помочь мне определить проблему здесь?

Кажется, что я не могу отобразить 3d-файл из каталога кеша. У меня возникла ошибка SceneKit IO: ошибка, файлы COLLADA не поддерживаются на этой платформе.

Сохранение zip-файла в каталоге кэша содержит файл .dae и .png для текстуры. С помощью Scene Kit вы можете:

Импортируйте 3D-объекты COLLADA и создайте сцены, созданные камерами, огнями и сетками. https://developer.apple.com/library/mac/documentation/3DDrawing/Conceptual/SceneKit_PG/Introduction/Introduction.html

Благодарю.

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(queue, ^{ NSURL *url = [NSURL URLWithString:@"my url" NSData *data = [NSData dataWithContentsOfURL:url options:0 error:&error]; if(!error) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSString *zipPath = [path stringByAppendingPathComponent:@"zipfile.zip"]; [data writeToFile:zipPath options:0 error:&error]; if(!error) { ZipArchive *za = [[ZipArchive alloc] init]; if ([za UnzipOpenFile: zipPath]) { BOOL ret = [za UnzipFileTo: path overWrite: YES]; if (NO == ret){} [za UnzipCloseFile]; NSString *floorFilePath = [path stringByAppendingPathComponent:@"house1.dae"]; NSURL *floorPathURL = [NSURL fileURLWithPath:floorFilePath]; dispatch_async(dispatch_get_main_queue(), ^{ SCNView *sceneView = (SCNView *)self.view; sceneView = (SCNView *)self.view; sceneView.allowsCameraControl = YES; sceneView.autoenablesDefaultLighting = YES; sceneView.backgroundColor = [UIColor whiteColor]; sceneView.scene = [SCNScene sceneWithURL:floorPathURL options:nil error:nil]; }); } } else { NSLog(@"Error saving file %@",error); } } else { NSLog(@"Error downloading zip file: %@", error); } }); 

Ссылка на класс SCNSceneSource содержит таблицу:

 Format Filename Extension Supported in Collada Digital Asset Exchange .dae OS X v10.8 and later Alembic .abc OS X v10.10 and later SceneKit compressed scene .dae or .abc OS X v10.10 and later iOS 8.0 and later SceneKit archive .scn OS X v10.10 and later iOS 8.0 and later 

Вы уверены, что ваш .dae файл является «сценой сцены SceneKit»? По-видимому, iOS поддерживает загрузку сжатых сцен из файлов .dae . Xcode должен автоматически конвертировать вашу Collada .dae в сжатую сцену (с тем же расширением), когда она компилирует ваше приложение. Если вы загружаете файл извне своего пакета приложений (например, из URL-адреса во время выполнения), это не будет сжатая сцена SceneKit, если вы не предприняли шаги для его преобразования в другом месте.

Я нашел следующий комментарий по этому вопросу:

Чтобы преобразовать файл dae в файл, который может быть прочитан SCNScene (named: …, вы можете преобразовать файл вручную, используя следующую команду в терминале: /Applications/Xcode.app/Contents/Developer/usr/bin/scntool –convert InFile.dae –format c3d –out OutFile.dae –force-y-up –force-interleaved –look-for-pvrtc-image (Конечно, замените InFile.dae и OutFile.dae на ваши собственные filenames) Извините, в комментариях нет реального форматирования. – Marcus Feb 2 at 18:23

Я не знаю, подходят ли все эти флаги для вашего использования. Согласно этому веб-сайту , есть также программа командной строки copySceneKitAssets (в том же подкаталоге Xcode), которая преобразует .scnassets , так что, возможно, именно это вы и хотите использовать.