gpt4 book ai didi

android - 如何在 ArCore 中获取跟踪状态

转载 作者:行者123 更新时间:2023-11-29 23:05:57 29 4
gpt4 key购买 nike

我正在构建一个 AR Android 应用程序,我想在用户位置发生变化时生成一个箭头。但是,当我尝试创建 anchor 时出现 NotTrackingException。我怎么知道 ARCore 检测到平面以便我可以添加我的 anchor ?

我唯一找到的是 this ,但我能从中得到的并不多。

fun onLocationChanged(location: Location) {
val session = arFragment.arSceneView.session
var arrowViewRenderable:ViewRenderable
val pos = floatArrayOf(0f,0f,-1f)
val rotation = floatArrayOf(0f,0f,0f,1f)
val anchor = session!!.createAnchor(Pose(pos,rotation))
val anchorNode = AnchorNode(anchor)
anchorNode.setParent(arFragment.arSceneView.scene)
ViewRenderable.builder()
.setView(this, R.layout.arrow)
.setSizer(DpToMetersViewSizer(400 ))
.build()
.thenAccept { renderable -> arrowViewRenderable = renderable
anchorNode.renderable = arrowViewRenderable
}
}
status.cc:156 ArStatusErrorSpace::AR_ERROR_NOT_TRACKING: Cannot create anchors while the camera is not tracking.
2019-06-12 14:58:37.369 29685-29685/com.carmeq.carfind E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.carmeq.carfind, PID: 29685
com.google.ar.core.exceptions.NotTrackingException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.google.ar.core.Session.throwExceptionFromArStatus(Session.java:134)
at com.google.ar.core.Session.nativeCreateAnchor(Native Method)
at com.google.ar.core.Session.createAnchor(Session.java:93)
at com.carmeq.carfind.MainActivity.onLocationChanged(MainActivity.kt:282)
at com.carmeq.carfind.MainActivity$mLocationCallback$1.onLocationResult(MainActivity.kt:223)
at com.google.android.gms.internal.zzbzq.zzq(Unknown Source:4)
at com.google.android.gms.common.api.internal.zzcj.zzb(Unknown Source:8)
at com.google.android.gms.common.api.internal.zzck.handleMessage(Unknown Source:16)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6981)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

最佳答案

您可以从当前帧的相机中获取 TrackingState。

val frame = session.update()
if (frame.camera.trackingState == TrackingState.tracking) {
// place anchor
}

关于android - 如何在 ArCore 中获取跟踪状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56563464/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com