似乎 HitResult 只为我们提供了与表面(平面)或点云的交集。如何通过单击在空气中间获得一个点,从而使物体漂浮在空中?
最佳答案
这真的取决于你所说的“在空中”是什么意思。我看到了两种可能性:
"在检测到的表面之上" 对飞机进行正常的 HitTest ,并将返回的姿势偏移一些 Y 距离以获得悬停位置。例如:
Pose.makeTranslation(0, 0.5f, 0).compose(hitResult.getHitPose())
返回命中位置上方 50 厘米的姿势。从这里创建一个 anchor ,你就可以开始了。您也可以只在命中位置创建 anchor ,并在每一帧中使用 y 平移进行组合,以便为悬停高度设置动画。
" float 在当前设备位置的前面" 为此,您可能希望在相机姿势的右侧进行翻译:
frame.getPose().compose(Pose.makeTranslation(0, 0, -1.0f)).extractTranslation()
为您提供位于显示器中心前方 1m 处的仅平移姿势。如果你想在一个特定的屏幕位置前面,我在 this answer 中放了一些代码来做屏幕点到世界光线的转换。
抱歉,如果您使用的是 Unity/Unreal,您的问题没有具体说明,所以我假设是 Java。
关于arcore - 如何将物体置于空中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46008630/