天天看點

[原]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);