转载 原文为 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 437转载 原文为 http://www.pan3d.me/tuto ... -
基础知识09镜头位置变化[转]
2011-04-19 18:51 518转载 原文为 http://www.pan ... -
基础知识07镜头设计,及映射原理[转]
2011-04-19 18:39 502转载 原文为 http://www.pan ... -
基础知识06四边形组成一个正方体并转动[转]
2011-04-19 18:34 553转载 原文为 http://www.pan3d.me/tuto ... -
基础知识05贴图深度计算[转]
2011-04-19 18:32 572转载 原文为 http://www.pan3d.me/tuto ... -
基础知识04一个自动旋转的四边形[转]
2011-04-19 18:27 609转载 原文为 http://www.pan3d.me/tuto ... -
基础知识03-drawTriangles三维到二维投影[转]
2011-04-19 18:18 621转载 原文为 [url]http://www.pan3d.me ... -
flash3d教学之基础知识02-drawTriangles绘制两个三角形[转]
2011-04-19 18:12 697转载 原文为 http://www.pan3d.me/tuto ... -
flash3d教学之基础知识01-drawTriangles绘制三角形[转]
2011-04-19 17:53 951转载 原文为 http://www.pan3d.me/tuto ...
相关推荐
一个常见的例子是房屋的屋顶框架,它实质上是一个或多个三角形的组合。这些三角形支撑着整个屋顶的结构,保证了其稳定性和强度。在抽象为几何图形后,我们通常用三角形的三个顶点来表示这个框架,比如△ABC。 另一...
《房屋建筑工程专业基础知识》练习题涵盖了建筑学的基本概念和技术细节,包括建筑制图、建筑材料、建筑结构、建筑构造等多个方面。以下是对部分题目所涉及知识点的详细解释: 1. 圆的中心线通常用单点划线表示,这...
在这个阶段,学生们需要掌握如何分析和计算由多个简单图形组合而成的复杂图形的面积。以下是对这一课题的详细解析: 首先,我们要明白什么是组合图形。组合图形是由两个或多个基本的平面图形,如长方形、正方形、...
例如,一间房子侧面墙的形状就是一个组合图形的例子,它可以被分割成一个正方形和一个三角形,或者通过添加辅助线变成一个长方形减去两个三角形。对于这样的问题,可以通过分别计算每个简单图形的面积,然后相加或...
房屋建筑基础知识涵盖了许多重要的概念,这些概念在设计、...以上是对房屋建筑基础知识部分练习题中涉及的知识点的详细说明,这些知识点涵盖了建筑绘图、结构、材料、施工等多个方面,对于理解和实践建筑行业至关重要。
例如,在课堂检测中,计算阴影部分面积时,可以先将图形分割为多个已知形状的简单图形进行计算,或者采用添补法,通过移动图形的一部分到空白区域,形成新的已知形状,再进行面积计算。 实际上,组合图形面积计算的...
组合图形是由两个或多个基础图形拼接或组合形成的复杂图形。处理这类图形计算面积主要有两种方法:分割法和添补法。 分割法的核心思想是将复杂的组合图形分解为已知面积的简单图形,分别计算每个简单图形的面积,...
房屋建筑工程专业基础知识涵盖了许多关于建筑设计、施工和结构的知识点,以下是根据提供的文件部分内容解析的关键概念: 1. **图纸表示法**:圆的中心线通常用单点划线表示,而不同类型的图线如实线、虚线和折断线...
在五年级数学的学习中,组合图形的面积是一个重要的概念,主要针对的是如何计算那些由多个基本几何图形(如长方形、正方形、三角形、梯形等)组合而成的复杂图形的总面积。这个主题旨在帮助学生提升空间观念,增强...
组合图形是由两个或多个基本图形拼接或重叠而成的复杂形状,理解并掌握如何计算这些图形的面积是解决实际问题的关键。 首先,我们需要了解基础图形的面积公式。常见的基础图形包括长方形、正方形、三角形和梯形。...
组合图形是由两个或多个简单图形,如长方形、正方形、平行四边形、三角形和梯形等,组合在一起形成的复杂图形。理解组合图形的面积计算是这个阶段数学学习的关键部分,因为它培养了学生的空间观念和问题解决能力。 ...
以题目中的例2为例,一间房子侧面墙的形状是一个组合图形,包含一个正方形和一个三角形。我们可以采用两种方法求解面积: 方法一:将图形看作正方形和三角形的组合,分别计算它们的面积后再相加。 方法二:将三角形...
例如,一个图形由两个不规则的四边形组成,可以通过延长或截取线条,将其拆分为多个我们知道面积计算方法的简单图形,如长方形、三角形等,然后分别计算,再求和。 对于题目中给出的其他图形,学生可以尝试不同的...
【组合图形的面积】是小学五年级数学课程中的一个重要知识点,主要涉及如何计算由多个简单图形拼接而成的复杂图形的总面积。这个概念是建立在对基础几何图形面积理解的基础之上的,包括长方形、正方形、平行四边形、...
组合图形是由两个或多个基本图形(如长方形、正方形、平行四边形、三角形和梯形)组合而成的新图形。理解和掌握如何计算组合图形的面积是这个阶段的重要教学内容。 首先,我们回顾一下几种常见图形的面积计算公式:...
在小学五年级数学的教学中,"人教版五年级数学上册多边形的面积组合图形的面积"是一个重要的知识点,旨在帮助学生理解和掌握不同类型的多边形面积的计算方法,以及如何解决由多个简单图形组合而成的复杂图形的面积...
课件中展示的房子侧面墙,可以是由一个长方形和两个三角形组合而成,也可以看作一个大长方形减去两个小三角形。这样的生活化例子,让学生在日常环境中就能发现数学,增加了数学与实际生活的紧密联系。 接下来,PPT...
3. **组合图形的概念**:组合图形是由两个或多个简单图形组合而成的复杂图形。解决这类问题的关键是将组合图形分解成已知面积的基本图形。 4. **组合图形的面积求解方法**: - **分解法**:将组合图形拆分成已知...
1. **组合图形的定义**:组合图形是指由两个或多个基本图形(如长方形、正方形、三角形、平行四边形、梯形等)组合而成的复杂图形。在实际生活中,这样的图形很常见,比如房屋的墙壁、剪贴画等。 2. **知识背景**:...