android – ARCore – 如何在没有任何Feature Points的墙壁上放置/创建对象?
作者:互联网
例如:我有兴趣将2D图像放置在垂直平面上(例如:白色或单个纯色墙,不存在特征点).
有哪些不同的解决方法?
我知道ARCore支持相对于其他对象放置对象.如何扩展它以满足我相对于未检测到特征点的其他对象放置对象的要求?
任何想法或解决方法非常感谢.
解决方法:
您可以相对于摄像机位置设置锚点 – 即将摄像机指向要连接的墙壁.
要获得正确的深度,您需要将摄像机保持在设定的预设距离,或者添加向后和向前移动对象的能力.正如@Ali所提到的,你会有漂移,但这在当时很常见.
下面的代码将在摄像机视图的中间添加锚点:
//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());
请看这里有关此的更多讨论:
> https://github.com/google-ar/sceneform-android-sdk/issues/19
该方法确实有效,您可以根据需要设置深度.
如果你确实想要向前和向后移动可渲染,那么可能有更好的方法来做到这一点,但我发现,在一个单独的GitHub讨论建议之后,最可靠的方法是删除锚并创建一个新的锚.新位置后面或前面的设定位置 – 即有一个按钮,允许用户将可渲染的背面移动0.1M或向前移动0.1M.
标签:android,arcore,opencv,augmented-reality,sceneform 来源: https://codeday.me/bug/20190827/1745868.html