Если ваша сцена AR уже содержит какую-либо трехмерную геометрию в текущем сеансе, вы определенно можете использовать тестирование удара , чтобы поместить туда новую модель (размещение на основе уже содержащейся трехмерной геометрии)), или вы можете использовать характерные точки для размещения модели (если есть).
Если в вашей AR-сцене вообще нет трехмерной геометрии или очень облако разреженных точек , к чему вы применяете метод тестирования на попадание?Хит-тест - это спроецированная двухмерная точка из экранного пространства на трехмерную поверхность (помните, что обнаруженные плоскости являются скрытыми трехмерными плоскостями) или на любую подходящую характерную точку .
Таким образом, в AR обнаружение плоскости имеет решающее значение, когда разработчик использует тестирование попаданий .
func hitTest(_ point: CGPoint,
types: ARHitTestResult.ResultType) -> [ARHitTestResult]
Здесь вы можете увидеть все ARHitTestResult.ResultType доступно.
Но обратите внимание на это, есть метод hitTest, возвращающий SCNHitTestResult
:
func hitTest(_ point: CGPoint,
options: [SCNHitTestOption : Any]?) -> [SCNHitTestResult]
Использование:
let touchPosition: CGPoint = gesture.location(in: sceneView)
let hitTestResult = sceneView.hitTest(touchPosition,
types: .existingPlaneUsingExtent)
или:
let hitTestResult = sceneView.hitTest(touchPosition,
types: .featurePoint)
Кроме того, в 3D-играх активно используется хит-тестирование, но оно скорее для виртуальной реальности, чем для AR.