读书人

基础知识07画面设计及映射原理[转]

发布时间: 2012-12-21 12:03:49 作者: rapoo

基础知识07镜头设计,及映射原理[转]
转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me



先打开SWF。观察效果,

①.你会发现一直在绕着中间这张图片在旋转。留右上角 的红点,就是相当于镜头的坐标(俯视图 只能表现 X,Z)
程序解释。
private var _Cam:Object = { x:0, y:0, z:0, br:1000, angle_x:0, angle_y:0, angle_z:0 } //设计一个镜头

我们先来设计一个镜头(镜头这个东西自己领悟是什么意思,外事问GOOGLE,内事问百度,房事问天涯)

一般镜头都会由一个坐标, 在这里 它的 x,y,z,都初如为0 ,以及偏转角度,也应该是 三个角度的偏转角

在这个程序里,我们只针对绕 Y轴旋转的情况下的效果,另两个做为以后保留使用

②. 在这里我用了 v, u ,uv 来描述 这个矩形面片(由两个三角形组成), 它也是一个完整的贴图

(1)._v:Array = [ -50, 50, 0, -50, -50, 0, 50, -50, 0, 50, 50, 0];

我们把它分来 3个一组,就可以得到 4个点(x,y,z)的坐标, 他们的z都为0,说明这4个点都在同一深度上(世界坐标)。

试着想想,会是一个怎样的形状

(2)._u:Array = [0, 0, 0, 1, 1, 1, 1, 0];

贴图坐标,因为它是平面上的,所以只需要(x,y)两个坐标来修饰,我们把它二个一组同样可以得到4组数据 。

这里要说明一下贴图坐标他是相对于原始图片的坐标,跟据百分比来标记的(前几节教程里有测试过,与是为了统一所有

3D原文件的,以后3D模形数据无设是3DMAX,还是MAYA,等都是这样)。

(3)._uv:Array = [0, 0, 1, 1, 2, 2,0,0,2,2,3,3];

这是最关键的 贴图组合,并不难理解, 简单来说,一个3维中的点,对应该贴图中的一个点,

一个三角形由三个空间中的点来组成,同时这三个点,又对应该贴图的三个点。就需要6个点来表示一个带贴图的

三角形, 在这里一共有12位,也就是两个三角形,那我们接下来解释这些点是怎个对应的

0,0,1,1,2,2 分开 第一个为 0, 为3维中的坐标 在 v数级第1个点 (-50, 50, 0)

第二个为 0 , 为贴图坐标 在 u数组第1 个点 (0,0)

第三个为 1, 这个又是3维中的坐标 相对应该 在 v数组的第2个点(-50, -50, 0)

…………….

0,0,2,2,3,3 第二个三角形,同上, (你如果想试一个只有一个三角形的话,把这些数据删除就可以发现只有一个三角形)

③. 上一步的数据,DAE格式,就是传说中的3D模形的基本数据,格式适应所有的3D应该。都是通过这种方法互转换的

现在我们要做的是编入到FLASH里能识别的数据,

public function _draw_pic() {_tempmc.graphics.clear()_tempmc.graphics.beginBitmapFill(_Bmpsource);_tempmc.graphics.lineStyle(1,0×4564587)_tempmc.graphics.drawTriangles(_triangles.vertices, _triangles.indices, _triangles.uvtData, TriangleCulling.NONE ); /}


先清除上次画的内容 clear()

贴图数据.beginBitmapFill(_Bmpsource);

提示边线lineStyle(1,0×4564587) 在这也可以注消掉的

接着画图 drawTriangles

附(多对比里面的数据,试着修改基本参数,查看效果

读书人网 >编程

热点推荐