好的,所以我试图将一个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];
有什么想法吗?我现在还不知道。
答案 0 :(得分:0)
啊我明白了。没有关于此的任何文档,但它是有道理的。您必须在SCNMorpher实例上将其中一个目标设置为完全权重(1.0f):
[self.MorphedModels setWeight:1.0f forTargetAtIndex:0];
一旦我这样做,一切都保存得正确。