在ARCore Android中将物体放置在摄像头正前方

3

我尝试将一个大的3D物体(从.obj文件生成)放在摄像机前面,但无法做到。该模型被放置时以击中结果为中心点。有什么方法可以完成此操作吗?


请更新帖子,说明你已经完成了什么。 首先,声明节点,并将节点放入场景视图中。 - Jay Ryu
1个回答

6
以下代码将在相机前方放置一个距离为1M的锚点 - 您可以根据需要调整深度:
            // Place the anchor 1m in front of the camera. 
            Log.d(TAG,"adding Andy in fornt of camera");
            Frame frame = arFragment.getArSceneView().getArFrame();
            Session session = arFragment.getArSceneView().getSession();
            Anchor newMarkAnchor = session.createAnchor(
                    frame.getCamera().getPose()
                            .compose(Pose.makeTranslation(0, 0, -1f))
                            .extractTranslation());
            AnchorNode addedAnchorNode = new AnchorNode(newMarkAnchor);
            addedAnchorNode.setRenderable(andyRenderable);
            addedAnchorNode.setParent(arFragment.getArSceneView().getScene());

您可以在此处查看完整的工作示例 - 这使用一个按钮来添加节点,而不是使用命中结果,这对您也可能有用: https://github.com/mickod/LineView

当我将设备靠近模型时,它会移动远离模型。 - Nouman Ch
@NoumanCh 很有趣 - 我刚刚测试了一个使用上述代码的测试应用程序(https://github.com/mickod/LineView和PlayStore),虽然“Andy”在你靠近或穿过它时似乎没有深度,但它并不会移动(使用第一代Google Pixel)。我注意到ARCore正在随着更新和新版本的推出而发展,渲染效果肯定比以前更加稳定,所以也许这只是框架的一个特点。 - Mick
1
我基本上是在尝试当图像被检测到时弹出模型。问题是有时候图像是水平的,有时候是垂直的,但我必须水平弹出模型。 - Nouman Ch
这就是为什么我试图在图像被检测到时手动将模型放在摄像头前,而不是使用image.getCenterPose()的原因。 - Nouman Ch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接