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

Can I remove an object from my scene?

ARKit 相对较新,我想知道是否有办法在将 3D 对象放置在场景中后删除它。

我建议阅读 ARKit, SceneKit 的文档及其基本 类。

如果您不想让某个节点出现在屏幕上,您需要从场景图中移除一个节点。您需要将其从其父节点中删除。在 Apple 文档的 SCNNode - Managing the Node Hierachy 中阅读更多相关信息。

只需使用这个功能:

Swift:

node.removeFromParentNode()

Objective-C

[node removeFromParentNode];

要从场景视图中删除对象 (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];

}

希望本文能帮助您解决问题。

谢谢