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

平时编程偶然会用到数学,特别是在做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

flash画图API:解析obj格式的更多相关文章

  1. Obj格式解析以及在Unity3D下导入测试

    目前基本实现了导入,注意只能打开含有单个模型的obj文件 四边面模型: 全三角面模型(测试单一材质,自动分了下UV): 这里介绍下obj格式: obj格式是waveFront推出的一种3D模型格式,可 ...

  2. CSharpGL(9)解析OBJ文件并用CSharpGL渲染

    CSharpGL(9)解析OBJ文件并用CSharpGL渲染 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...

  3. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  4. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  5. urlparse模块(专门用来解析URL格式)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #urlparse模块(专门用来解析URL格式) #URL格式: #protocol ://hostname[ ...

  6. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  7. Scala解析Json格式

    Scala解析Json格式 代码块 Scala原生包 导入包 import scala.util.parsing.json._ def main(args: Array[String]): Unit ...

  8. JavaScript 对象所有API解析【2020版】

    JavaScript 对象所有API解析[2020版] 写于 2019年08月20日,虽然是2019年写的文章,但现在2020年依旧不过时,现在补充了2019年新增的ES10 Object.fromE ...

  9. WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)

    DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...

随机推荐

  1. hdu5076

    好题,首先观察可得w[i][j]选择只有可能两种,一种比阀值大,一种比阀值小 比阀值大就一定选满足条件最大的w,比阀值小同样一定选满足条件最大的w 那么一个最小割模型就呼之欲出了,注意w可能是负数那么 ...

  2. 如何在windows平台下使用hsdis与jitwatch查看JIT后的汇编码

    1. 安装hsids 这一步比较麻烦,需要提前安装cygwin,以及下载openjdk的源码 具体步骤请参考下面的两篇文章 How to build hsdis-amd64.dll and hsdis ...

  3. Windows下python的第三方库的安装

    D:\Python27\Scripts\pip.exe install beautifulsoup4

  4. Maven学习笔记1

    Maven是什么? 百度百科:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 这些描述总是让人更加难理解Maven,扔掉它,咱们先看看Mave ...

  5. n2n搭建手记-1-V1

    搭建环境 supernode :阿里云主机一台 aly1(Centos 6.5) edg2node:美团云机器两台 mty1,mty2(Centos 7.0) Step-1 各机器安装subviers ...

  6. 分享Kali Linux 2017年第29周镜像文件

     分享Kali Linux 2017年第29周镜像文件 Kali Linux官方于7月16日发布2017年的第29周镜像.这次维持了11个镜像文件的规模.默认的Gnome桌面的4个镜像,E17.KDE ...

  7. luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...

  8. [LOJ6436]神仙的游戏

    感觉border的性质还是挺神奇的 一个border的性质是$S$有长度为$len$的border当且仅当对$\forall i\equiv j\left(\bmod(n-len)\right)$有$ ...

  9. python3开发进阶-Django框架中的ORM的常用(增,删,改,查)操作

    阅读目录 如何在Django终端打印SQL语句 如何在Python脚本中调用Django环境 操作方法 单表查询之神奇的下划线 ForeignKey操作 ManyToManyField 聚合查询和分组 ...

  10. (转)关于Unity3D的编辑器崩溃时的线索定位

    今天在Unity3D编辑器中进行功能测试的时候,编辑器突然崩溃了(就是整个窗口突然消失,进程直接结束)之后也没有任何错误报告信息提示.好吧,应该是偶现问题,我侥幸地想,我用的好歹也是正版啊,不应该总出 ...