纹理图集UV坐标转换
Texture atlas UV coordinate conversion
我的纹理有一些从 (0, 0)
到 (16, 16)
的 UV 坐标。现在,我已将此纹理打包到大小为 dim (w, h)
的纹理图集中,位置为 rec (x, y, w, h)
。需要转换UV坐标才能在图集里解决,但是最近脑子炸了,自己也想不通
如何转换坐标?
(思路是将How转化为纹理矩阵,所以矩阵也算答案)
终于自己找到了:
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
- 因为是矩阵,可能需要颠倒运算顺序
我的纹理有一些从 (0, 0)
到 (16, 16)
的 UV 坐标。现在,我已将此纹理打包到大小为 dim (w, h)
的纹理图集中,位置为 rec (x, y, w, h)
。需要转换UV坐标才能在图集里解决,但是最近脑子炸了,自己也想不通
如何转换坐标?
(思路是将How转化为纹理矩阵,所以矩阵也算答案)
终于自己找到了:
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
- 因为是矩阵,可能需要颠倒运算顺序