首页 文章

仅在检测到正确的水平面时使用 iOS 11 ARKit(Scenekit)放置 3D 对象

提问于
浏览
0

我使用 iOS 11 ARKit(Scenekit- https://developer.apple.com/sample-code/wwdc/2017/PlacingObjects.zip开发了 POC。当我尝试使用相机放置 3D 对象时,它会检测水平面并将其放置。

但是我能够将对象 anywhere(like 放到空中),即使它没有检测到合适的水平面也不是理想的情况。

是否可以限制用户,使对象只能放置在有效的水平平面(例如地板)上,而不能放置在其他任何地方?那就是我想检测地板的水平并将物体仅放置在有效平面之上,而不是空中。

1 回答

  • 1

    您可以通过指定点击测试选项ARHitTestResultTypeExistingPlaneUsingExtent来限制ARHitTestResult用户触摸事件。

    CGPoint tapPoint = [recognizer locationInView:self.sceneView];
    NSArray<ARHitTestResult *> *result = [self.sceneView hitTest:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent];
    

    然后将所选对象放置在ARHitTestResult.worldTransform中指定的位置。这样可以确保用户只能将物体放在 ARKit 检测到的平面上。

相关问题