ARCore Android Studio:在屏幕的 2D 坐标上放置一个 3D 模型
ARCore Android Studio: Place a 3D model on the 2D coordinate of the screen
我有二维屏幕坐标。这就是我想要放置 3D 模型的地方,无论深度如何。应该不一定是飞机吧。它可以在空中或任何地方播放。我该怎么做?
如何从二维坐标获取锚点位置。我在这里迷路了,因为没有文档。我看过的所有教程,都是把3D模型放在水平面上点击。
如果您仍在使用 Sceneform,那么下面的代码会将一个对象放置在相机前面,无论您想要什么深度 - 如果中心对你,并改变深度。
//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 是 'open sourced and archived',因此您现在可能不想使用它 - 请参阅此处的说明:https://developers.google.com/sceneform/develop。
如果您不使用 Scenefrom,您可以尝试使用 ARCore 'instant placement' - 它旨在允许在平面等被删除之前放置一个对象,所以这不是您要找的东西,但您可能会发现它可以满足您的需求。更多细节和例子在这里:https://developers.google.com/ar/develop/java/instant-placement/developer-guide
我有二维屏幕坐标。这就是我想要放置 3D 模型的地方,无论深度如何。应该不一定是飞机吧。它可以在空中或任何地方播放。我该怎么做?
如何从二维坐标获取锚点位置。我在这里迷路了,因为没有文档。我看过的所有教程,都是把3D模型放在水平面上点击。
如果您仍在使用 Sceneform,那么下面的代码会将一个对象放置在相机前面,无论您想要什么深度 - 如果中心对你,并改变深度。
//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 是 'open sourced and archived',因此您现在可能不想使用它 - 请参阅此处的说明:https://developers.google.com/sceneform/develop。
如果您不使用 Scenefrom,您可以尝试使用 ARCore 'instant placement' - 它旨在允许在平面等被删除之前放置一个对象,所以这不是您要找的东西,但您可能会发现它可以满足您的需求。更多细节和例子在这里:https://developers.google.com/ar/develop/java/instant-placement/developer-guide