又到了周末的时间,依旧的例牌菜。只是近期在和一些同事交流下,学习了一些新的知识。过去一直没有明确的问题,如今总算有点感觉了。

平时编程偶然会用到数学,特别是在做3d的时候。相信看过rokix的3d,那种震撼感染力到了如今还是存在。

为什么?由于rokix将flash 用得非常熟练,虽然如今的3d引擎已经能够满足了非常多功能,也是能够实现到当年rokix的效果,只是那份创意和精髓还是非常须要经验的积累。

flash 10 后新增了高级的画图API,一直非常少使用,只是当发现用上去。还是非常不错。有人说flash3d 已经阵忙得差点儿相同,unity3d 取缔它。

站在好玩角度。个人还是选择flash,由于比較熟悉。

unity3d 的坑还是存在非常深。所以说。原理还是非常重要。

当你使用过3dmax的时候,会导出一种叫obj格式文件。这个格式记录了顶点,法线。纹理信息和顶点,uv等索引相关的信息。

有了它,我们就能够尝试做一些实验来解析它。as3提供了高级的画图API。有了GraphicsTrianglePath 的这种方法,解析3d 导出的文件格式就能实现出来了。并且还是非常好玩。

以下 是经过3dmax 导出的 长方体模型,v 代表顶点,vn代表法线。vt  代表纹理坐标。即uv ,f 则是顶点索引。uv索引、法线索引。

v 顶点,代表空间坐标的3个坐标点(x,y,z);

这个还是比較easy理解,

以下f 的结构,

 1/1/1 2/2/1 3/3/1 (顶点索引。纹理索引。法线索引)

生成的文件。他们的关系是有序的,索引不能任意调换位置。

知道了这些,解析就变得easy多了。

以下就针对obj格式来解析我们想要的数据就可以。例牌菜使用urlloader 进行读取文本方式解析以下的格式。

var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE,onLoadComplete);
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.load(new URLRequest("cube.obj"));

GraphicsTrianglePath 參数里面,仅仅是须要四个參数,而obj 给我们提供的数据,仅仅是须要顶点坐标,uv贴图数据,等就可以。 有了这个数据后,我们读取的模型就能通过这个函数来创建显示出来。

当然以下的图并没有真正的贴图数据,并且还是不对,只是有了这个基础后。我们就能够对这个文件进行加工。获取我们想要的数据进行拼装。

而基本上 满足了这些參数下,一个基本模型就能呈现到屏幕下去。

当然你看到以下的图也是在实验的过程其中,呈现出来,可是离真正的3d 还是逊色不少。可是对眼下项目而已stage3d 基本上能够满足了,仅仅是stage3d 在硬件兼容性上 还多少出现故障。导致奇奇怪怪的问题。有了这个基础后。对解析obj 文件。就有进一步的玩法了。

GraphicsTrianglePath(vertices:Vector.<Number> = null, indices:Vector.<int>
= null, uvtData:Vector.<Number> = null, culling:String = "none")

IAO

# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# 创建的文件:22.05.2014 14:35:13 mtllib cube.mtl #
# object Box01
# v -22.9110 0.0000 31.5364
v -22.9110 0.0000 -32.0755
v 32.6146 0.0000 -32.0755
v 32.6146 0.0000 31.5364
v -22.9110 60.9164 31.5364
v 32.6146 60.9164 31.5364
v 32.6146 60.9164 -32.0755
v -22.9110 60.9164 -32.0755
# 8 vertices vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 -0.0000
# 6 vertex normals vt 0.7029 0.6461 0.0000
vt 0.3680 0.6461 0.0000
vt 0.3680 0.3539 0.0000
vt 0.7029 0.3539 0.0000
vt 0.3680 0.3023 0.0000
vt 0.3680 0.0100 0.0000
vt 0.7029 0.0100 0.0000
vt 0.7029 0.3023 0.0000
vt 0.0100 0.9900 0.0000
vt 0.0100 0.6977 0.0000
vt 0.3307 0.6977 0.0000
vt 0.3307 0.9900 0.0000
vt 0.3448 0.6745 0.0000
vt 0.0100 0.6745 0.0000
vt 0.0100 0.3539 0.0000
vt 0.3448 0.3539 0.0000
vt 0.3680 0.9694 0.0000
vt 0.3680 0.6771 0.0000
vt 0.6887 0.6771 0.0000
vt 0.6887 0.9694 0.0000
vt 0.3448 0.3307 0.0000
vt 0.0100 0.3307 0.0000
vt 0.0100 0.0100 0.0000
vt 0.3448 0.0100 0.0000
# 24 texture coords g Box01
usemtl 01___Default
s 2
f 1/1/1 2/2/1 3/3/1
f 3/3/1 4/4/1 1/1/1
s 4
f 5/5/2 6/6/2 7/7/2
f 7/7/2 8/8/2 5/5/2
s 8
f 1/9/3 4/10/3 6/11/3
f 6/11/3 5/12/3 1/9/3
s 16
f 4/13/4 3/14/4 7/15/4
f 7/15/4 6/16/4 4/13/4
s 32
f 3/17/5 2/18/5 8/19/5
f 8/19/5 7/20/5 3/17/5
s 64
f 2/21/6 1/22/6 5/23/6
f 5/23/6 8/24/6 2/21/6
# 12 faces

最新文章

  1. Python学习-day2
  2. How to copy remote computer files quickly to local computer
  3. Emit学习(3) - OpCodes - 循环和异常
  4. 在Mac mini上安装 ESXi 5.5
  5. 基于Maven构建开发第一个Storm项目
  6. Lambert漫反射.BLinnPhong及Phong模型 Unity自带的在Lighting.cginc里
  7. Python OpenCV —— Modifying
  8. unity 读取excel表 生成asset资源文件
  9. HTTP 304 的理解
  10. dedecms5.7 联动类型无法显示
  11. Datastage数据装载报错:Consumed more than 1000000 bytes looking for record delimiter
  12. Spark源码分析环境搭建
  13. 【CSS3】---颜色RGBA及渐变色
  14. u-boot使用
  15. leetcodequestion_56 Merge Intervals
  16. WeMall微信商城源码活动报名插件代码详情
  17. 【设计模式】之开闭原则(OCP)
  18. hdu 3549最大流Ford-Fulkerson算法
  19. Nginx配置优化及深入讲解,大家可以听一下
  20. MSIL实用指南-装箱拆箱

热门文章

  1. web前端读取文本文件内容
  2. 【计算几何】bzoj2338 [HNOI2011]数矩形
  3. 更新升级10.11 cocoapods安装出问题最简单的解决方法
  4. 浅谈RBF函数
  5. MORMOT数据库连接池
  6. Android中的线程池 ThreadPoolExecutor
  7. BigDecimal的精度舍入模式详解
  8. css3动画和JS+DOM动画和JS+canvas动画比较
  9. cinemachine unity
  10. How to simplify a PHP code with the help of the fa&#231;ade pattern?