首页 > 代码库 > [原]unity3d 纹理旋转

[原]unity3d 纹理旋转

纹理旋转实现思路:纹理坐标*平移矩阵*旋转矩阵(类似顶点旋转);

矩阵一般要求中心点为(0,0) 而纹理中心点默认(0.5,0.5);所以先得平移到(0,0);可以考虑乘以平移矩阵[1,0,0,0,1,0,-0.5,-0.5,1]

也可以直接简化 (texcoord.x-0.5,texcoord.y-0.5)。

纹理坐标二维坐标 旋转矩阵为[cosA,sinA,-sinA,cosA]; 旋转结果:mul(平移后纹理坐标,旋转矩阵) //注意 u3d中mul函数,我用的不好使,我直接用后面的公式算的;旋转后的纹理坐标=(cosA(x-0.5)-sinA(y-0.5),sinA(x-0.5)+cosA(y-0.5));

因为纹理坐标范围[0,1] 所以需要把旋转好的纹理在平移回来;旋转好的纹理坐标+float2(0.5)=最终输出纹理;

如果实现纹理移动 需要TRANSFORM_TEX(最终输出纹理, _MainTex);