我试图在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对象?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)