Collada(.dae)文件未加载到我的场景中,如何解决?

时间:2019-04-26 15:30:09

标签: objective-c scenekit collada

我尝试将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 : 0is File : 1

因此该文件存在。我试图从getPath加载场景,但是没有用:

SCNScene *ObjectS = [SCNScene sceneNamed:getPath];
NSLog(@"child ObjectScene : %@", ObjectS.rootNode.childNodes);

我得到child ObjectScene : (null)

0 个答案:

没有答案