Событие нажатия 3D-объектов в ARCore

Как получить событие щелчка 3D-объекта, визуализируемого с помощью arcore SDK в студии Android? Мое требование - щелкнуть этот 3D-объект и отобразить всплывающее диалоговое окно.


person Janak Phuyal    schedule 16.04.2018    source источник
comment
Вы программируете в чистом OpenGL? Если это так, то вам придется вручную выполнить трассировку лучей и проверку ограничивающей рамки на пересечение. В противном случае вам следует рассмотреть возможность использования платформы рендеринга более высокого уровня, такой как Viro: viromedia.com, которая управляет рендерингом и предоставляет вспомогательные функции. чтобы делать raycasting и простые события для вас.   -  person ACVM    schedule 19.04.2018


Ответы (3)


Это не имеет ничего общего с ARCore. На самом деле за это отвечает игровой движок/фреймворк, который вы используете.

Например, если вы используете Unity, вы можете использовать Raycasting.

RaycastHit hit;
Ray ray = yourARCamera.ScreenPointToRay(Input.GetTouch(0).position);
if (Physics.Raycast(ray, out hit))
{
     // Check if what is hit is the desired object
     if(hit.tag == "The_Tag_Of_The_Object_You_Are_Looking_For")
     {
           // User clicked the object.. Do something here..
     }
}

Подробнее здесь:

https://unity3d.com/learn/tutorials/topics/physics/raycasting https://docs.unity3d.com/ScriptReference/Physics.Raycast.html

person JackMini36    schedule 19.04.2018

ARCore не поддерживает эту функцию. Вам нужно сделать это самостоятельно. Наиболее популярным способом является метод пикинга лучей. Есть много примеров, как это использовать

person Fixus    schedule 17.04.2018
comment
ссылка на эти примеры была бы отличной. - person Andreas Mennel; 18.04.2018
comment
Не могли бы вы предоставить мне несколько соответствующих примеров или несколько примеров кода, которые вы сделали в своих проектах. Я искал, но не смог найти точного решения моей проблемы. Заранее спасибо. - person Janak Phuyal; 18.04.2018
comment
не поймите меня неправильно, но такие примеры найти несложно: stackoverflow.com/questions/16746211/ Это, вероятно, не решит вашу проблему на 100%, потому что большинство элементов должны быть связаны с ваш код, а вы его не предоставили. - person Fixus; 18.04.2018

В случае с Arcore - Sceneform SDK после создания якоря вам просто нужно установить прослушиватель на вашем AnchorNode следующим образом.

anchorNode.setOnTapListener((hitResult,motionEvent)->{
   //Your pop up
});
person Oush    schedule 10.11.2019