【问题标题】:Need a clarification on James Arvo's AABB transformation需要澄清 James Arvo 的 AABB 转型
【发布时间】:2023-02-16 00:45:47
【问题描述】:

我正在努力理解/实施 James Arvo 的算法来转换 AABB,很好地给出了 in this answer。鉴于我们正在通过对象的平移和旋转来修改 AABB,这应该如何在每一帧上起作用?在算法中,我们最初将新的 AABB 设置为我们所在位置的零体积框。然而,当基于旧的 AABB 和我们的对象转换修改它时,我们不是将对象的翻译加倍吗?

如果我们假设没有旋转或缩放,我们的矩阵就变成了单位矩阵,这有望使我的观点(或误解)清楚:

new_min = new_max = position
// no need to iterate through matrix, since off diagonals are now 0, and on diagonals are 1
for i<3
    a = old_min[i] // <- this is just previous frame's position AABB
    b = old_max[i]

    new_min += min(a,b)
    new_max += max(a,b)

但是我们的 old_min 和 max 包含前一帧的位置信息,然后我们添加到当前帧的位置。当我尝试实现这一点时,这正是我发现的,我的 AABB 跑向了无穷大。

我误会了什么?

【问题讨论】:

    标签: collision-detection game-physics game-development aabb


    【解决方案1】:

    为后人回答,或者为那些像我这样过于密集的人回答。

    使用创建时的原始 AABB,只需计算每帧更改的 AABB。就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2012-06-02
      相关资源
      最近更新 更多