好的,我正在尝试将 SCNGeometry 数组添加到 SCNMorpher 对象,并将该对象添加到场景的根节点,并将结果导出到 DAE 文件。
出于某种原因,每当我尝试保存文件时,我都会在 writeToURL 调用中收到 BAD_ACCESS 错误。
只有当我设置了node.morpher属性时才会发生这种情况。即使我将 morpher 属性设置为 [[SCNMorpher alloc] init]] 或具有空目标数组的实例,也会发生这种情况。
这是在 Mac 应用程序上。 我的代码:
NSMutableArray *frames = [[NSMutableArray alloc] init];
for (int f=0; f<self.Animations[0].framesCount; f++) {
SCNGeometry *frameGeo = [self MorphedModel:self.Animations[0] atFrame:f+1];
SCNMaterial *framemat = [SCNMaterial material];
framemat.diffuse.contents = texture;
framemat.name = @"Dino Skin";
frameGeo.firstMaterial = framemat;
[frames addObject:frameGeo];
}
self.MorphedModels = [[SCNMorpher alloc] init];
self.MorphedModels.targets = [[NSArray alloc] initWithArray:frames];
node.morpher = self.MorphedModels;
SCNScene *scene = [SCNScene scene];
[scene.rootNode addChildNode:node];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Dino.dae"];
[scene writeToURL:[NSURL fileURLWithPath:path] options:nil delegate:nil progressHandler:nil];
有什么想法吗?我现在一无所知。
最佳答案
啊,我明白了。没有任何关于此的文档,但它是有道理的。您必须在 SCNMorpher 实例上将其中一个目标设置为完整权重 (1.0f):
[self.MorphedModels setWeight:1.0f forTargetAtIndex:0];
一旦我这样做了,一切就正确保存了。
关于cocoa - 当我尝试将 SCNScene 写入文件时,设置 SCNNode.morpher 会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868663/