java– 使用GPS位置渲染ARCore中的3D对象?

java– 使用GPS位置渲染ARCore中的3D对象?,第1张

概述我试图在Android中使用arcore构建增强现实导航.AR导航方向在印度是否可用?我只是按照这个链接使用arcore开发带有核心loaction的ar导航.https://github.com/appoly/ARCore-Locationree/legacy.是否有可能在Android中使用ARCore进行导航?任何帮助非常感谢请….解决方法:我也在研

我试图在Android中使用arcore构建增强现实导航. AR导航方向在印度是否可用?我只是按照这个链接使用arcore开发带有核心loaction的ar导航. https://github.com/appoly/ARCore-Location/tree/legacy.

是否有可能在AndroID中使用ARCore进行导航?任何帮助非常感谢请….

解决方法:

我也在研究这个问题,据我说,这是有可能的.由于其他一些工作,我还没有完成它,但我可以告诉你为实现这一目标你可以遵循的步骤.

最初,您需要了解如何在不点击屏幕的情况下放置对象,因为ARCore示例不允许这样做.我在StackOverflow上问了这个问题,最后得到了一个确实有效的答案.
How to place a object without tapping on the screen.你可以参考这个来实现这一目标.

在此之后,您需要找出将ar对象显示为方向所需的方向.为此,使用此公式找出标题

let lat1:Double = latSource/180 * .pilet lng1:Double = lngSource/180 * .pilet lat2:Double = latDestination/180 * .pilet lng2:Double = lngDestination/180 * .pilet y = sin(lng2 - lng1)*cos(lat2)let x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lng2 - lng1)let tan2 = atan2(y, x)let degre = tan2 * 180 / .piif degre < 0 {  return degre+360  }else {  return degre  }

您需要传递源和目的地的纬度和经度,然后这将返回您目的地的Truenorth角度.这是写的Swift,我希望你能把它转换成你想要的语言. Java或Kotlin

然后,您需要将此角度与设备罗盘角度匹配,并且当两者匹配时使用不放置对象的方法.我已经分享了这个链接.
这将为您提供目的地的对象.

之后,进行循环并将对象放在不同的z轴上.这是我写的代码

@OverrIDepublic voID onUpdate(FrameTime frameTime) {        frame = fragment.getArSceneVIEw().getArFrame();        if (frame != null) {            for (Object o : frame.getUpdatedTrackables(Plane.class)) {                plane = (Plane) o;                if (plane.getTrackingState() == TrackingState.TRACKING) {                    fragment.getPlanediscoveryController().hIDe();                    Iterator iterableAnchor = frame.getUpdatedAnchors().iterator();                    if (!iterableAnchor.hasNext()) {                        method(plane, frame);                    }                }            }        }}public voID makeAr(Plane plane, Frame frame ) {    for (int k = 0; k <10 ; k ++) {        if (this.degree >= 160 && this.degree <= 170) {            Toast.makeText(this, "walk", Toast.LENGTH_SHORT).show();            List<HitResult> hitTest = frame.hitTest(screenCenter().x, screenCenter().y);            Iterator hitTestIterator = hitTest.iterator();            while (hitTestIterator.hasNext()) {                HitResult hitResult = (HitResult) hitTestIterator.next();                modelAnchor = null;                modelAnchor = plane.createAnchor(hitResult.getHitPose());                AnchorNode anchorNode = new AnchorNode(modelAnchor);                anchorNode.setParent(fragment.getArSceneVIEw().getScene());                transformableNode transformableNode = new transformableNode(fragment.gettransformationSystem());                transformableNode.setParent(anchorNode);                transformableNode.setRenderable(MainActivity.this.andyRenderable);                float x = modelAnchor.getPose().tx();                float y = modelAnchor.getPose().compose(Pose.makeTranslation(0f, 0f, 0)).ty();                transformableNode.setWorldposition(new Vector3(x, y, -k));            }        }    }}private Vector3 screenCenter() {    VIEw vw = findVIEwByID(androID.R.ID.content);    return new Vector3(vw.getWIDth() / 2f, vw.getHeight() / 2f, 0f);}

此OnUpdate方法将Ar绘制到目标.完成此操作后,您需要使用Google Map API数据安排所有内容.

据我所知,这是使用ARCore在AR中进行导航的最佳方式,因为在ARCore中有非常的限制,将来会有一些其他库可以使它变得容易.

我也尝试了ArCore Location,但是这对你来说不会有任何帮助,因为当你在路上行走时,它不会放置2D图像而不是3D.

祝你好运,希望你能完成这件事.

总结

以上是内存溢出为你收集整理的java – 使用GPS位置渲染ARCore中的3D对象?全部内容,希望文章能够帮你解决java – 使用GPS位置渲染ARCore中的3D对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/web/1115818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存