使用“浮动原点”时跟踪“真实”世界坐标

时间:2018-09-22 16:32:52

标签: java opengl graphics lwjgl

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

但是,由于原点不断移动,我很难跟踪玩家的“真实”位置,我应该改用网格系统吗?

您会推荐什么?

1 个答案:

答案 0 :(得分:0)

这是一个好问题,因为在单精度速度和双精度之间总是要取舍。

  • 我使用双精度累加器跟踪换档,所以
    我可以随时使用Double Vector3d进行精确处理
    计算。
  • 对于距离,比较距离更快
    平方,并在大型系统中使用倍数,因为如果 您可以将地球范围或更大的单精度值平方,然后
    它们很快就会溢出,您会失去准确性。
  • demo中,我使用单精度来实现每帧内容的高速渲染,而在后端,则使用双精度来定期检查距离,接近度等。