转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me
这是一个由14个三角形组成的一个房子
我们先要理解,这个房子是由 3DMAX 及其它软件制作出来的 3D模型,那我们应该怎么去在FLASH里展示出来
大家在用其它flash 3D引擎时,常会使用 .dae文件 。 因为dae是通度3D模型数据 他的结构 就是由 v, u, uv 组成
(如果细心的同志,会发现dae文件是个 XML 数据,简单的来说有三组数据来组成,当然可能会有什么灯光之类的
在这里我只争对最简单的模型来应用)
一、数据拆分方法,
①.同样那我们在这个FLASH程序里也要用到这三个参数, 数据都是字符串的形形式排列出着的,
②.接下来我们要将这些字符串的数据存到下面的数组中来,方便读取第几个
③.接下来我们要做的是怎么拆这些数据 怎么存到数据中去
var temp_array:Array = new Array(); //临时用到而以
var scale_D:Number = 0.006 //这个比例值,就是对上面数据进行缩放的,
④.拆3维中的点坐标
注意一下, 我们三个组成一个 Vector3D (他是一个3维的点,包含x,y,z)对象, 因为我们的dae文件的3维坐标是 x,z,y
在这里我们就将 第2,个和第3个换一下位置就可以了,
⑤.拆贴图的点和UV的方法,也是跟上面一个道理
⑥. 这部份在上一章节中有说明过
//在这里我们将3D的点转存到 _vitem 中,是为了方便转换相对镜头坐标而用 数量是一至的
⑦.初始化_triangles贴图坐标,用点坐标
二、渲染内容 _up_data()
//接下来就是特别注意的,从UV数数中找出对应该的 3D点的坐标
附:在这里我们并没有进行相对于X轴旋转,贴图深度变化的修改,后面的章节将会逐一介绍
这是一个由14个三角形组成的一个房子
我们先要理解,这个房子是由 3DMAX 及其它软件制作出来的 3D模型,那我们应该怎么去在FLASH里展示出来
大家在用其它flash 3D引擎时,常会使用 .dae文件 。 因为dae是通度3D模型数据 他的结构 就是由 v, u, uv 组成
(如果细心的同志,会发现dae文件是个 XML 数据,简单的来说有三组数据来组成,当然可能会有什么灯光之类的
在这里我只争对最简单的模型来应用)
一、数据拆分方法,
①.同样那我们在这个FLASH程序里也要用到这三个参数, 数据都是字符串的形形式排列出着的,
private var _stringV:String = “-11765.4 -4473.12 0.000033 11765.4 -4473.12 0.000033 -11765.4 4473.12 -0.000033 11765.4 4473.12 -0.000033 11765.4 0.0001 17448.4 -11765.4 0.0001 17448.4 11765.4 -7863.28 6070.26 -11765.4 -7863.28 6070.26 11765.4 7863.28 6070.26 -11765.4 7863.28 6070.26″; private var _stringU:String = “0.667021 0.012993 -0.225191 0.996577 0.012993 -0.22519 0.667468 0.010391 0.5 0.997024 0.010391 0.5 0.996577 0.993478 0.137405 0.667021 0.993478 0.137405 0.996577 0.354103 -0.5 0.667021 0.354103 -0.5 0.258144 0.016835 -0.5 0.258144 0.016834 0.5 0.074669 0.016835 -0.5 0.331531 0.014076 0.068861 0.664663 0.014076 0.068861 0.664663 0.992088 -0.5 0.331531 0.992088 -0.5 0.074669 0.016834 0.5 0.166407 0.990086 0.5 0.166407 0.990086 -0.5 0.664663 0.354325 0.5 0.327671 0.355428 0.5 0.331531 0.354325 0.5 0.327671 0.355428 -0.5 0.005142 0.355428 0.5 0.005142 0.355428 -0.5″; private var _stringUV:String = “1 1 6 6 7 7 7 7 0 0 1 1 3 15 8 22 6 19 6 19 1 9 3 15 2 11 9 20 8 18 8 18 3 12 2 11 0 8 7 21 9 23 9 23 2 10 0 8 4 4 5 5 7 7 7 7 6 6 4 4 8 22 4 16 6 19 5 14 4 13 8 18 8 18 9 20 5 14 7 21 5 17 9 23″;
②.接下来我们要将这些字符串的数据存到下面的数组中来,方便读取第几个
private var _v_array:Array=new Array() private var _u_array:Array=new Array() private var _uv_array:Array=new Array()
③.接下来我们要做的是怎么拆这些数据 怎么存到数据中去
var temp_array:Array = new Array(); //临时用到而以
var scale_D:Number = 0.006 //这个比例值,就是对上面数据进行缩放的,
④.拆3维中的点坐标
temp_array = (_stringV.split(” “)) //先将 字符串以 ” ” (空格存到数组中去) for (i = 0; i < temp_array.length / 3; i++ ) { //三个一组 _v_array.push(new Vector3D(temp_array[i * 3 + 0] * scale_D, temp_array[i * 3 + 2] * scale_D, temp_array[i * 3 + 1] * scale_D)) }
注意一下, 我们三个组成一个 Vector3D (他是一个3维的点,包含x,y,z)对象, 因为我们的dae文件的3维坐标是 x,z,y
在这里我们就将 第2,个和第3个换一下位置就可以了,
⑤.拆贴图的点和UV的方法,也是跟上面一个道理
temp_array = (_stringU.split(” “)) //拆分 2D 贴图 for (i = 0; i < temp_array.length / 3; i++ ) { _u_array.push(new Array(temp_array[i * 3 + 0], temp_array[i * 3 + 1],temp_array[i * 3 + 2])); } temp_array = (_stringUV.split(” “)) //折分UV 对应坐标 for (i = 0; i < temp_array.length/2 ; i++ ) { _uv_array.push(new Array(temp_array[i*2+0],temp_array[i*2+1])) }
⑥. 这部份在上一章节中有说明过
//在这里我们将3D的点转存到 _vitem 中,是为了方便转换相对镜头坐标而用 数量是一至的
for (var i = 0; i < _v_array.length ;i++ ) { var _obj:Object = new Object _obj.x = _v_array[i].x _obj.y = _v_array[i].y _obj.z = _v_array[i].z _obj.bx = 0; _obj.by = 0; _obj.bz = 0; _vitem.push(_obj); }
⑦.初始化_triangles贴图坐标,用点坐标
for (i = 0; i < _uv_array.length; i++ ) { //是_triangles进行 uvtData(贴图) 赋值 , 同时要给对应的vertices 进行赋值(暂为0,0)以后会运算的 _triangles.vertices.push(0,0); _triangles.uvtData.push(_u_array[_uv_array[i][1]][0],1-_u_array[_uv_array[i][1]][1],1); }
二、渲染内容 _up_data()
_Cam.angle_y++ //镜头角度变化 _catch_cam(_Cam) //找到镜头坐标 之前有改过 for (var i in _vitem) { math_change_point(_vitem[i]) //对所有点 转换成相对于镜头的坐标 }
//接下来就是特别注意的,从UV数数中找出对应该的 3D点的坐标
for (var j = 0; j < _uv_array.length ; j++ ) { var v_id = (_uv_array[j ][0]) //找到坐标 后然对_triangles.vertices的新坐标进行赋新值 _triangles.vertices[j * 2 + 0] = _vitem[v_id ].bx / (_vitem[v_id].bz + _Cam.br) * _Cam.br; _triangles.vertices[j * 2 + 1] = -_vitem[v_id ].by / (_vitem[v_id].bz + _Cam.br) * _Cam.br; }
附:在这里我们并没有进行相对于X轴旋转,贴图深度变化的修改,后面的章节将会逐一介绍
发表评论
-
基础知识10镜头位置变化[转]
2011-04-19 18:58 396转载 原文为 http://www.pan3d.me/tuto ... -
基础知识09镜头位置变化[转]
2011-04-19 18:51 475转载 原文为 http://www.pan ... -
基础知识07镜头设计,及映射原理[转]
2011-04-19 18:39 454转载 原文为 http://www.pan ... -
基础知识06四边形组成一个正方体并转动[转]
2011-04-19 18:34 509转载 原文为 http://www.pan3d.me/tuto ... -
基础知识05贴图深度计算[转]
2011-04-19 18:32 530转载 原文为 http://www.pan3d.me/tuto ... -
基础知识04一个自动旋转的四边形[转]
2011-04-19 18:27 568转载 原文为 http://www.pan3d.me/tuto ... -
基础知识03-drawTriangles三维到二维投影[转]
2011-04-19 18:18 580转载 原文为 [url]http://www.pan3d.me ... -
flash3d教学之基础知识02-drawTriangles绘制两个三角形[转]
2011-04-19 18:12 653转载 原文为 http://www.pan3d.me/tuto ... -
flash3d教学之基础知识01-drawTriangles绘制三角形[转]
2011-04-19 17:53 889转载 原文为 http://www.pan3d.me/tuto ...
相关推荐
旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形旋转三角形...
组合数学中的一节课作业,关于任意多边形,能分解成不同三角形的分法有多少种,分成的组合是那些。该程序,有于空间和电脑的资源限制,15多变形就比较慢了,理论上可以算任何条边的多边形。
【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 ) https://hanshuliang.blog.csdn.net/article/details/112796656 博客源码快照
用c++设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求多个个三角形对象的面积之和。
三角形基础知识及习题.doc
在c++中用opengl 编写实现四个三角形旋转
OpenGL三角形旋转源码(一个可以运行的实例,有需要的朋友可以下载)
是关于opengl 下的动态三角形旋转,有颜色的变换,三维动态旋转
Android OpenGLS20 绘制一个三角形 旋转
建立一个求三角形面积的类TRI,根据三角形3个顶点的位置,计算出三角形的边长,再由边长计算出三角形的面积。具体要求如下: (1)私有数据成员。 ● float x1,y1,x2,y2,x3,y3 说明:(x1,y1)、(x2,y2)、(x3,y3...
OpenGL ES 2.0 开发一个旋转三角形 注释超级详细 配套解析博客 : http://blog.csdn.net/shulianghan/article/details/17020359
webgl旋转三角形生成。后续webgl基础随笔持续更新。git地址:https://github.com/11zouzouzou
由用户输入三角形的三个顶点及屏幕上任意一点p的坐标(由于界面问题应输入第一象限坐标),在屏幕上画出该三角形及相对于点p顺时针旋转一定的角度(角度也由用户输入)后的图形。
NULL 博文链接:https://ienown.iteye.com/blog/1008325
平行四边形、三角形、梯形以及组合图形的图形练习题.doc
杨辉三角形及组合数的性质(43页).pdf
1. 任意输入三个数(不一定是整数),看是否构成三角形的三个边;如果不构成三角形,请提示错误信息。 2. 如果构成三角形,请判别三角形的类型(锐角三角形,直角三角形,钝角三角形;等腰三角形,等边三角形;或是...
用c++设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。
创意棱角三角形组合PPT模板。一份比较有创意的幻灯片模板,以三角形、多边形等有棱角的几何图形设计,通用性强。建议安装字体:方正姚体。