【问题标题】:Keeping track of "real" world coordinates while using Floating Origin在使用浮动原点时跟踪“真实”世界坐标
【发布时间】:2018-09-22 16:32:51
【问题描述】:

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

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

你会推荐什么?

【问题讨论】:

  • 你不是存储当前原点和真实原点之间的差异吗?
  • 我想我是,但我仍然无法使用它来计算我的“真实位置”
  • 好吧,如果你知道你的世界被移动了多少(即当前原点和真实原点之间的差异),你只需要将你的玩家位置添加到 shift-by 值以获得实际值。
  • 我想是的,虽然计算不是很精确。每一次“原点偏移”,似乎我们认为的“真实”原点都会偏移 4 左右

标签: java opengl graphics lwjgl


【解决方案1】:

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

  • 我使用双精度累加器跟踪班次,所以
    在任何时候,我都可以使用双 Vector3d 来准确
    计算。
  • 对于距离,比较距离比较快
    平方,并在大规模系统中使用双打,因为如果 您对地球比例或更大的单精度值进行平方,然后
    它们很快就会溢出,你会失去准确性。
  • 这是一个demo,我使用单精度来实现每帧的高速渲染,而在后端,使用双精度来定期检查距离、接近度等。

【讨论】:

    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多