我尝试将Collada(.dae)加载到场景中并在手机屏幕上显示文件。
我从服务器上以名为0002.scnassets.zip的zip文件下载Collada文件。
我解压缩文件,并在Collada和Texture内部获得文件夹0002.scnassets。
该文件夹位于应用程序的“文档”目录中。
我尝试过
//download zip from server
//unzip
//try to display
self.Objectview.scene = [SCNScene sceneNamed:@"ObjectScene.scn"];
SCNScene *ObjectS = [SCNScene sceneNamed:@"/0002.scnassets/0002.dae"];
NSLog(@"Children :%@", ObjectS.rootNode.childNodes);
[self.Objectview.scene.rootNode addChildNode:[ObjectS.rootNode childNodeWithName:@"0002" recursively:YES]];
self.Objectview.allowsCameraControl = YES;
self.Objectview.autoenablesDefaultLighting = YES;
[self.Objectview play:(nil)];
执行代码时,将正确下载zip并解压缩。但是,当我尝试使用文件0002.dae创建场景时,日志刚说完:Children :(null)
就像我无法访问Collada文件一样。
我也尝试这样做:
self.Objectview.scene = [SCNScene sceneNamed:@"/0004.scnassets/0004.dae"];
NSLog(@"%lu", self.Objectview.scene.rootNode.childNodes.count);
不使用.scn文件将Collada直接添加到我的场景视图中,但是不起作用。我从NSLog获得:0
所以我想在场景视图上显示Collada文件。有什么想法吗?
谢谢
编辑
要确保文件存在,请使用以下命令进行检查:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",@"0004.scnassets/0004.dae"]];
NSLog(getPath);
BOOL isDir = NO;
BOOL isFile = [[NSFileManager defaultManager] fileExistsAtPath:getPath isDirectory:&isDir];
NSLog(@"is Dir : %d",isDir);
NSLog(@"is File : %d", isFile);
从这些ligne中,我得到了路径以及is Dir : 0
和is File : 1
因此该文件存在。我试图从getPath
加载场景,但是没有用:
SCNScene *ObjectS = [SCNScene sceneNamed:getPath];
NSLog(@"child ObjectScene : %@", ObjectS.rootNode.childNodes);
我得到child ObjectScene : (null)