【Away3D代码解读】(一):主要类及说明
在深入解读Away3D的代码之前,需要对其有个大概的认识。本节主要列出Away3D中常用的类,并附上说明:
View3D:
Away3D的入口类,即创建该类就会初始化一个可以使用GPU呈现3D的对象,需要注意的是该类是继承自Sprite,所以可以将其添加到2D显示列表中,但是最终呈现3D是在Stage3D中进行的,所以实际的3D对象并非存在View3D这个2D容器中。View3D更像一个管理3D内容的管理器,并且每帧都需要调用其render方法来渲染其内部的所有3D对象。
Scene3D:
每个View3D对象创建时或运行时都可以指定一个Scene3D对象,不进行指定时其内部会实例化一个Scene3D对象,可以使用View3D的scene属性获取到Scene3D对象,该对象类似原生列表中的Stage对象,是所有3D显示对象的根容器,我们真正用于渲染的3D对象都应该添加到该对象中。
ObjectContainer3D:
3D容器对象,该对象支持3D对象的层级嵌套。
Camera3D:
类似于Scene3D对象,Camera3D对象也是作为View3D对象的一个属性存在的。
OrthographicLens:
正交镜头对象,可以设定到Camera3D对象中,控制3D渲染使用正交矩阵进行渲染。
PerspectiveLens:
透视镜头对象,可以设定到Camera3D对象中,控制3D渲染使用透视矩阵进行渲染。
Mesh:
网格对象,最终会使用GPU进行绘制的对象,Mesh对象主要包含Geometry、Material及Animator对象,这3个对象分别描述了一个3D对象的形状、材质及动作;内部包含多个SubMesh对象,与Geometry的SubGeometry对象一一对应。
Geometry:
几何对象,几何对象用来记录一个3D对象的顶点、法线、uv等信息。
Texture:
贴图对象,贴图对象记录程序会使用到的位图信息,但不会包含诸如光照或者滤镜信息。
Material:
纹理对象,纹理对象包含会贴图对象,同时可以设置光照或滤镜信息来产生特殊的效果。
animators包:
动画包,包含大量3D动画数据的解析和实现,主要包括骨骼动画、顶点动画、UV动画等。
DirectionalLight:
光源对象,该对象用来实现直线光源。
PointLight:
光源对象,该对象用来实现点光源。
loaders包:
加载及解析包,包含多种3D文件的加载及解析实现。
好文链接:
Texture(纹理)和Material(材质)概念上的区别
【Away3D代码解读】(一):主要类及说明的更多相关文章
- Android开源代码解读-基于SackOfViewAdapter类实现类似状态通知栏的布局
一般来说,ListView的列表项都会采用相同的布局,只是填充的内容不同而已,这种情况下,Android提供了convertView帮我们缓存列表项,达到循环利用的目的,开发者也会使用ViewHold ...
- 【Away3D代码解读】(三):渲染核心流程(渲染)
还是老样子,我们还是需要先简略的看一下View3D中render方法的渲染代码,已添加注释: //如果使用了 Filter3D 的话会判断是否需要渲染深度图, 如果需要的话会在实际渲染之前先渲染深度图 ...
- 【Away3D代码解读】(二):渲染核心流程(简介、实体对象收集)
我之前解析过Starling的核心渲染流程,相比Away3D而言Starling真的是足够简单,不过幸运的是两者的渲染流程是大体上相似的:Starling的渲染是每帧调用Starling类中的rend ...
- 【Away3D代码解读】(四):主要模块简介
数据模块: Away3D中最核心的数据类是Mesh类,我们先看看Mesh类的继承关系: NamedAssetBase:为对象提供id和name属性,是Away3D大部分类的基类: Object3D:3 ...
- 【Away3D代码解读】(五):动画模块及骨骼动画
动画模块核心存放在away3d.animators包里: Away3D支持下面几种动画格式: VertexAnimator:顶点动画 SkeletonAnimator:骨骼动画 UVAnimator: ...
- 【Away3D代码解读】其它一些的记录(持续更新)
查看当前正在使用的AGAL代码可以在程序开始时添加下面的代码,AGAL代码会被trace出来: Debug.active = true; 具体的输出是在MaterialPassBase类的update ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备
本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...
随机推荐
- 屏蔽QQ聊天对话框中的广告
原文地址: 怎么在QQ聊天对话框中屏蔽广告_百度经验 http://jingyan.baidu.com/article/48a42057ca12c1a924250402.html QQ已经成为 ...
- HDU1548——A strange lift(最短路径:dijkstra算法)
A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...
- P90、面试题11:数值的整数次方
题目:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 需要注意的地方: 1)输入的指 ...
- 1439. Battle with You-Know-Who(splay树)
1439 路漫漫其修远兮~ 手抄一枚splay树 长长的模版.. 关于spaly树的讲解 网上很多随手贴一篇 貌似这题可以用什么bst啦 堆啦 平衡树啦 等等 这些本质都是有共同点的 查找.删除特 ...
- php 类 成员变量 $this->name='abc'
<?php class test { public function getName() { $this->name='abc'; echo $this->name; } }$a=n ...
- 对DataTable里数据进行排序
在日常开发过程中,有一个DataTable集合,里面有很多字段,现在要求针对某一列进行排序,如果该列为数字的话,进行ASC即可实现,但是该字段类型为string,此时排序就有点不正确了. 我也不多废话 ...
- Google 多源码管理工具 gclient
google的chromium项目是用gclient来管理源码的checkout, update等. gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起 ...
- Java [Leetcode 226]Invert Binary Tree
题目描述: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 解题思路: 我只想说递归大法好. ...
- 【转】Android项目中编译 C的模块
原文网址:http://blog.csdn.net/Harrison_zhu/article/details/4057738 Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才 ...
- HDU 5628 Clarke and math Dirichlet卷积+快速幂
题意:bc round 72 中文题面 分析(官方题解): 如果学过Dirichlet卷积的话知道这玩意就是g(n)=(f*1^k)(n), 由于有结合律,所以我们快速幂一下1^k就行了. 当然,强行 ...