我试图在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 * .pi
let lng1:Double = lngSource/180 * .pi
let lat2:Double = latDestination/180 * .pi
let lng2:Double = lngDestination/180 * .pi
let 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 / .pi
if degre < 0 { return degre+360 }
else { return degre }
您需要传递源和目的地的纬度和经度,然后这将返回您目的地的Truenorth角度.这是写的Swift,我希望你能把它转换成你想要的语言. Java或Kotlin
然后,您需要将此角度与设备罗盘角度匹配,并且当两者匹配时使用不放置对象的方法.我已经分享了这个链接.
这将为您提供目的地的对象.
之后,进行循环并将对象放在不同的z轴上.这是我写的代码
@Override
public 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.
祝你好运,希望你能完成这件事.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。