ARCore Android Studio: поместите 3D-модель в 2D-координату экрана

#android #anchor #arcore

#Android #привязка #arcore

Вопрос:

У меня есть 2D-координаты экрана. Вот где я хочу разместить 3D-модель независимо от глубины. Не обязательно должна быть плоскостью. Это может быть в эфире или где угодно. Как мне это сделать?

Как мне получить положение привязки из 2D-координаты. Я здесь потерялся, поскольку документации нет. Во всех руководствах, которые я видел, поместите 3D-модель при нажатии на горизонтальную плоскость.

Ответ №1:

Если вы все еще используете Sceneform, то приведенный ниже код поместит объект перед камерой на любую желаемую глубину — вы можете поиграть с «pos», чтобы переместить его, если центр вам не подходит, и изменить глубину.

 //Add an Anchor and a renderable in front of the camera       
Session session = arFragment.getArSceneView().getSession();
float[] pos = { 0, 0, -1 };
float[] rotation = { 0, 0, 0, 1 };
Anchor anchor =  session.createAnchor(new Pose(pos, rotation));
anchorNode = new AnchorNode(anchor);
anchorNode.setRenderable(andyRenderable);
anchorNode.setParent(arFragment.getArSceneView().getScene());
  

Обратите внимание, что Sceneform является «открытым исходным кодом и архивируется», поэтому вы можете не захотеть использовать его сейчас — см. Примечание здесь: https://developers.google.com/sceneform/develop .

Если вы не используете Scenefrom, вы можете поэкспериментировать с ARCore ‘instant placement’ — он предназначен для размещения объекта до удаления плоскостей и т. Д., Поэтому Это не совсем то, что вы ищете, но вы можете обнаружить, что он может удовлетворить ваши потребности. Более подробная информация и примеры здесь: https://developers.google.com/ar/develop/java/instant-placement/developer-guide