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

标签 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];

有什么想法吗?我现在一无所知。

最佳答案

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

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

一旦我这样做了,一切就正确保存了。

关于cocoa - 当我尝试将 SCNScene 写入文件时,设置 SCNNode.morpher 会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868663/

相关文章:

swift - 旋转光照环境内容ARKit和SceneKit

ios - Alpha map 在 scenekit swift ios 中不起作用

objective-c - NSOutlineView,setFloatsGroupRows : not working

objective-c - ReactiveCocoa 捕捉所有错误——对集合对象的异步网络操作

objective-c - 制作一个圆形的 NSSlide 外观和行为就像在 GarageBand 中一样

ios - 如何从 Blender 3D 程序 SWIFT 将行走的人动画放入 SceneKit Xcode

swift - 将背景模糊添加到 SKSpriteNode(或 SKScene)

ios - SCNNode 渲染上的奇怪错误/伪影

macos - 如何在 NSDocument 加载之前拦截 openDocument 的结果?

cocoa - mouseDown 方法中出现异常