使用浮动原点时保持“真实”世界坐标的轨迹

问题描述 投票:0回答:1

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

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

您会推荐什么?

java opengl graphics lwjgl
1个回答
0
投票

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

  • 我使用双精度累加器跟踪换档,因此在任何时候,我都可以使用双重Vector3d计算。
  • 对于距离,比较距离更快平方,并在大型系统中使用倍数,因为如果您将单精度值平方为地球比例或更大,然后它们很快就会溢出,您会失去准确性。
  • 这里是demo,我使用单精度来实现每帧内容的高速渲染,而在后端,则使用双精度来定期检查距离,接近度等。
© www.soinside.com 2019 - 2024. All rights reserved.