我可以从场景中删除对象吗?

时间:2017-08-22 07:37:57

标签: ios arkit

相对较新的ARKit,我想知道是否有一种方法可以在将3D对象放入场景后将其移除。

3 个答案:

答案 0 :(得分:3)

只需使用此功能:

夫特:

node.removeFromParentNode()

目标-C

[node removeFromParentNode];

答案 1 :(得分:0)

我建议您阅读ARKitSceneKit及其基本类的文档。

如果您不希望它出现在屏幕上,则需要从场景图中删除节点。您需要将其从其父节点中删除。在Apples文档中的SCNNode - Managing the Node Hierachy中了解更多相关信息。

答案 2 :(得分:0)

要从“场景”视图中删除对象(SCNNode),可以使用长按手势。只需在 viewDidLoad 中添加以下代码即可。

UILongPressGestureRecognizer *longPressGestureRecognizer = 
[[UILongPressGestureRecognizer alloc] initWithTarget:self 
action:@selector(handleRemoveObjectFrom:)];
longPressGestureRecognizer.minimumPressDuration = 0.5;
[self.sceneView addGestureRecognizer:longPressGestureRecognizer];

然后处理您的手势识别器方法,如下所示

- (void)handleRemoveObjectFrom: (UILongPressGestureRecognizer *)recognizer {

if (recognizer.state != UIGestureRecognizerStateBegan) {
    return;
}
CGPoint holdPoint = [recognizer locationInView:self.sceneView];
NSArray<SCNHitTestResult *> *result = [self.sceneView hitTest:holdPoint
                                                      options:@{SCNHitTestBoundingBoxOnlyKey: @YES, SCNHitTestFirstFoundOnlyKey: @YES}];
if (result.count == 0) {
    return;
}

SCNHitTestResult * hitResult = [result firstObject];
[[hitResult.node parentNode] removeFromParentNode];

}

希望这可以帮助您解决问题。

由于