Можно ли размещать объекты с помощью теста на удар без определения плоскости? - PullRequest
2 голосов
/ 03 июля 2019

После того, как Apple создал эффект погружения в AR с аудио , я подумал, что было бы интересно поэкспериментировать и попытаться разместить объекты где угодно, а не только в вертикальной и горизонтальной плоскости.Можно ли вообще разместить объект с помощью прикосновения без определения плоскости?Я понимаю, что обнаружение самолета повысило бы точность тестов на попадание и обнаружение ARAnchor, поэтому есть ли способ провести тесты на попадание в любом другом месте на сцене?

1 Ответ

0 голосов
/ 03 июля 2019

Если ваша сцена 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)

enter image description here

Кроме того, в 3D-играх активно используется хит-тестирование, но оно скорее для виртуальной реальности, чем для AR.

...