加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash绘图API:解析obj格式

发布时间:2020-12-15 17:36:14 所属栏目:百科 来源:网络整理
导读:? ? ? 又到了周末的时间,依然的例牌菜。不过最近在和一些同事交流下,学习了一些新的知识,过去一直没有明白的问题,现在总算有点感觉了。平时编程偶然会用到数学,特别是在做3d的时候,相信看过rokix的3d,那种震撼感染力到了现在还是存在。为什么?因为ro

? ? ? 又到了周末的时间,依然的例牌菜。不过最近在和一些同事交流下,学习了一些新的知识,过去一直没有明白的问题,现在总算有点感觉了。平时编程偶然会用到数学,特别是在做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);

这个还是比较容易理解,


下面f 的结构,

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

生成的文件,他们的关系是有序的,索引不能随意调换位置。知道了这些,解析就变得容易多了。


下面就针对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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读