当我尝试将SCNScene写入文件时,设置SCNNode.morpher会导致崩溃

时间:2015-03-05 01:54:55

标签: cocoa scenekit

好的,所以我试图将一个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];

有什么想法吗?我现在还不知道。

1 个答案:

答案 0 :(得分:0)

啊我明白了。没有关于此的任何文档,但它是有道理的。您必须在SCNMorpher实例上将其中一个目标设置为完全权重(1.0f):

[self.MorphedModels setWeight:1.0f forTargetAtIndex:0];

一旦我这样做,一切都保存得正确。