纹理图集UV坐标转换

时间:2016-08-20 14:04:16

标签: textures coordinate-transformation texturepacker

我的纹理有一些从(0, 0)(16, 16)的UV坐标。现在,我已将此纹理打包在位置为dim (w, h)的大小为rec (x, y, w, h)的纹理图集中。我需要转换UV坐标,以便我可以在地图册中解决它们,但我的大脑最近爆炸了,我无法自己解决。

如何转换坐标?

(我们的想法是将 How 转换为纹理矩阵,因此矩阵也算作答案)

1 个答案:

答案 0 :(得分:0)

我终于找到了自己:

translate(rec.x, rec.y)
scale(1 / dim.w, 1 / dim.h)
scale(rec.w / 16, rec.h / 16)

if (invertY)
  scale(1, -1)
  translate(0, dim.h)

注意:

  • 您可以合并两个缩放操作
  • 您可以添加解压缩图片的尺寸
  • ,而不是/ 16
  • 由于矩阵,您需要3个维度,并且z = 0用于翻译,z = 1用于缩放
  • 由于矩阵,您可能需要撤消操作顺序