首页 > 解决方案 > 在使用浮动原点时跟踪“真实”世界坐标

问题描述

在我的游戏中,我尝试使用“浮动原点”方法来防止模型因浮点不精确而变形。每个游戏循环,我都会检查我的玩家位置 (sqrt(dx * dx + dy * dy + dz * dz)) 是否与移动原点有一定距离(从 0、0、0 开始)距离原点一定距离,我将玩家移回 0、0、0 以及其他所有位置,然后将移动原点设置为玩家最后的位置。

但是,我很难跟踪玩家的“真实”位置,因为原点一直在移动,我应该改用网格系统吗?

你会推荐什么?

标签: javaopenglgraphicslwjgl

解决方案


这是一个很好的问题,因为单精度的速度和双精度的精度之间总是需要权衡取舍。

  • 我使用双精度累加器跟踪班次,以便
    随时可以使用双精度 Vector3d 进行准确
    计算。
  • 对于距离,比较距离的
    平方会更快,并在大型系统中使用双精度值,因为如果您对地球比例或更大的单精度值进行平方,那么
    它们很快就会溢出并且您会失去准确性。
  • 这是一个演示,我使用单精度进行每帧的高速渲染,并在后端使用双精度来定期检查距离、接近度等。

推荐阅读