使用ARCore和Sceneform我正在尝试在垂直表面(这是一个墙)上添加一个肖像我正在使用ViewRenderer从Sceneform库中执行此操作..所有工作都很完美但我现在面临两个问题:
第一个问题是ViewRenderer将在3D中呈现Android视图,因此我必须将其右侧矢量上的节点旋转90度,因此它在墙上展开..这有效但现在我的第二个问题是我需要画像始终是直接与地球的引力 .
如何才能实现这一目标?
您可能希望在为对象创建Anchor时调用Pose.extractTranslation()(https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation()) . 这将从ARCore处理触摸事件时添加的姿势中移除旋转部分 . 使用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 .
但是,如果对传感器数据进行一些标准化处理,那么该解决方案将是完美的,因此它不会经常跳转 .
2 回答
您可能希望在为对象创建Anchor时调用Pose.extractTranslation()(https://developers.google.com/ar/reference/java/com/google/ar/core/Pose.html#extractTranslation()) . 这将从ARCore处理触摸事件时添加的姿势中移除旋转部分 . 使用https://developers.google.com/ar/reference/java/com/google/ar/core/Session#createAnchor(com.google.ar.core.Pose),您可以从该姿势创建一个新锚点 .
如果你有一个ArFragment,它看起来像这样:
经过大量的研究,我发现现在最好的解决方案here .
但是,如果对传感器数据进行一些标准化处理,那么该解决方案将是完美的,因此它不会经常跳转 .