代码之家  ›  专栏  ›  技术社区  ›  Sekhat

2D骨系统

  •  4
  • Sekhat  · 技术社区  · 16 年前

    我正在尝试用XNA编写一个二维骨骼系统。

    我最初的想法是使用矩阵来跟踪旋转,并通过骨骼树进行定位,这样项目就可以很容易地显示出来。

    很酷,我想,然后当我看到矩阵只能应用于单个sprite批量时,沮丧的打到了我的脸上。开始调用,而不是每次调用!

    我做了一些性能测试来检查我的沮丧是否已经消失了,这就是所谓的spritebatch。

    所以,在绘制一个骨骼图像之前,我必须手动构建它的最终位置和旋转(可能在将来还会缩放)。在这种情况下,您是否仍然会使用矩阵,并在绘制骨骼之前以某种方式提取末尾的信息?如果是的话,有什么关于如何获得我需要的最终信息的想法吗?或者,尝试从父节点的原始位置和旋转来构建所有这些节点会更容易吗?

    提前感谢有想法的人。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Ron Warholic    16 年前

    老实说,我会抛弃sprite渲染对象,切换到屏幕空间四边形。屏幕空间四边形没有人为限制,您可以使用骨骼系统的标准实现:沿树向下遍历并在移动时应用转换,然后在移回树时弹出转换。

        2
  •  0
  •   Cecil Has a Name    16 年前

    不管怎样,当你在二维空间工作时,矩阵是否会被过度杀戮?我的意思是每个矩阵向量积有16个标量乘法,当你可以用4个乘法来表示旋转,用2个求和来表示平移?