场景和地理定位
Sceneform and geolocation
使用 ARCore 和 Sceneform 我正在尝试在垂直表面(这是一面墙)上添加肖像,我目前正在使用 ViewRenderer 从 Sceneform 库中执行此操作。一切正常,但我现在面临 2 个问题:
第一个问题是 ViewRenderer 将在 3D 中渲染一个 Android 视图,所以我不得不将节点在其右向量上旋转 90 度,以便它在墙上变平。这可行,但现在我的第二个问题是我需要肖像始终与地球引力垂直。
如何实现?
您可能想在为您的对象创建锚点时调用 Pose.extractTranslation() (https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation())。这将从 ARCore 处理触摸事件时添加的 Pose 中删除旋转部分。
使用 https://developers.google.com/ar/reference/java/com/google/ar/core/Session#createAnchor(com.google.ar.core.Pose) 您可以从该姿势创建一个新的锚点。
如果你有一个 ArFragment,它看起来像这样:
arFragment?.setOnTapArPlaneListener { hitResult, plane, motionEvent ->
val arSession = arFragment.arSceneView.session
val hitPose = hitResult.hitPose
val poseWithoutRotation = hitPose.extractTranslation()
val anchor = arSession.createAnchor(poseWithoutRotation)
val anchorNode = AnchorNode(anchor)
...
经过大量研究,我发现目前最好的解决方案 here。
但是,如果您对传感器数据应用一些规范化,这样它就不会经常跳来跳去,那么该解决方案将是完美的。
使用 ARCore 和 Sceneform 我正在尝试在垂直表面(这是一面墙)上添加肖像,我目前正在使用 ViewRenderer 从 Sceneform 库中执行此操作。一切正常,但我现在面临 2 个问题:
第一个问题是 ViewRenderer 将在 3D 中渲染一个 Android 视图,所以我不得不将节点在其右向量上旋转 90 度,以便它在墙上变平。这可行,但现在我的第二个问题是我需要肖像始终与地球引力垂直。
如何实现?
您可能想在为您的对象创建锚点时调用 Pose.extractTranslation() (https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation())。这将从 ARCore 处理触摸事件时添加的 Pose 中删除旋转部分。 使用 https://developers.google.com/ar/reference/java/com/google/ar/core/Session#createAnchor(com.google.ar.core.Pose) 您可以从该姿势创建一个新的锚点。
如果你有一个 ArFragment,它看起来像这样:
arFragment?.setOnTapArPlaneListener { hitResult, plane, motionEvent ->
val arSession = arFragment.arSceneView.session
val hitPose = hitResult.hitPose
val poseWithoutRotation = hitPose.extractTranslation()
val anchor = arSession.createAnchor(poseWithoutRotation)
val anchorNode = AnchorNode(anchor)
...
经过大量研究,我发现目前最好的解决方案 here。
但是,如果您对传感器数据应用一些规范化,这样它就不会经常跳来跳去,那么该解决方案将是完美的。