今天重新细看了 Molehill Game Programming Beginner’s Guide . 我承认之前都是一味的敲代码,完全没去理解(或许是当初理解不能), 现在似乎相关知识都积累够了,也玩了几个3D引擎所以略知其原理了.
UV坐标就是 XYZ坐标的变种,作为2D贴图坐标不需要Z轴,又为了于三维坐标进行区分,因此改名为UV坐标.
UV坐标最大值1,最小值0 多了,少了都没有意义.
在 Molehill Game Programming Beginner’s Guide 中的 <第三章> 有绘制2个三角形构建一个屏幕并贴图的例子代码如下
[cc lang=”actionscript3″ nowrap=”false”]
meshVertexData = Vector.
( [
//X, Y, Z, U, V, nX, nY, nZ
-3, -1, 1, 0, 0, 0, 0, 1,
1, -1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 1, 1, 0, 0, 1,
-1, 1, 1, 0, 1, 0, 0, 1
]);
[/cc];
贴图完毕后,结果图片是垂直翻转的.
我猜测,对于位图来说其坐标系的0,0点在左上角,而molehill的uv坐标系0,0点在左下角,因此在贴图的时候导致垂直翻转了.
于是我进行uv坐标的反转,将左上和左下坐标对换,右上和右下坐标对换,结果成功的转换回正常情况了.
既然我猜测没有错误,那么就可以进一步对图片进行水平翻转了.即将 左下和右下对换,左上和右上对换
如此一来扩展一下,对图片的各种扭曲也是很轻松的.