一些全局设置,还有log函数
二、core
1.Number3D.as
Number3D类:3D坐标系中的一个值
(1)属性:x,y,z:Number:浮点数
(2)方法:clone()
modulo():长度
add()
sub()
dot()
cross()
normalize()
get ZERO():(0,0,0)
toString()
2. NumberUV.as
NumberUV类:UV坐标系中的一个值
(1)属性:u,v:Number
(2)方法:clone()
get ZERO()
toString()
3. Matrix3D.as
Matrix3D类:4×3矩阵
import flash.geom.Matrix;
(1)属性:n11,n12,n13,n14,
n21,n22,n23,n24,
n31,n32,n33,n34
(2)方法:IDENTITY()
toString()
calculateMultiply( a:Matrix3D, b:Matrix3D ) :void:矩阵a和矩阵b相乘
multiply( a:Matrix3D, b:Matrix3D ):Matrix3D:矩阵a和矩阵b相乘,返回值为结果
calculateMultiply3x3 ( a:Matrix3D, b:Matrix3D ):void:3×3矩阵相乘
public static function multiply3x3( a:Matrix3D, b:Matrix3D ):Matrix3D:3×3矩阵相乘,返回值为结果
calculateAdd( a:Matrix3D, b:Matrix3D ):void
public static function add( a:Matrix3D, b:Matrix3D ):Matrix3D
public function calculateInverse( m:Matrix3D ):void
public static function inverse( m:Matrix3D ):Matrix3D:逆
get det():行列式(3×3)
get trace()
copy( m:Matrix3D ):Matrix3D
copy3x3( m:Matrix3D ):Matrix3D
clone( m:Matrix3D ):Matrix3D
multiplyVector( m:Matrix3D, v:Number3D ):void
multiplyVector3x3( m:Matrix3D, v:Number3D ):void
rotateAxis( m:Matrix3D, v:Number3D ):void
rotationX( rad:Number ):Matrix3D
rotationY( rad:Number ):Matrix3D
rotationZ( rad:Number ):Matrix3D
rotationMatrix( x:Number, y:Number, z:Number, rad:Number ):Matrix3D
rotationMatrixWithReference( axis:Number3D, rad:Number, ref:Number3D ):Matrix3D:ref-参考点
translationMatrix( x:Number, y:Number, z:Number ):Matrix3D
scaleMatrix( x:Number, y:Number, z:Number ):Matrix3D
static private var toDEGREES :Number = 180/Math.PI;
static private var toRADIANS :Number = Math.PI/180;
4.proto. DisplayObjectContainer3D
DisplayObjectContainer3D类:继承自EventDispatcher,可作为DisplayObject3D容器的所有对象的基类。每个DisplayObjectContainer3D对象有自己的child list。
(1)属性:
protected var _children :Dictionary; //以children作为索引的名字列表
protected var _childrenByName :Object; //以名字作为索引的children列表
private var _childrenTotal :int; // children数目
5.objects.DisplayObject3D(不属于core,属于objects!!!)
DisplayObject3D类:继承自DisplayObjectContainer3D,表示场景中的3D对象(也包括摄像机和其目标)
提供x,y,z,rotationX,rotationY,rotationZ,scaleX,scaleY.scaleZ,visible,transform Matrix3D
(1)属性:visible:Boolean:是否可见
name:String:对象名(可选)
id:int:对象标识
extra :Object:包含用户定义属性的对象
container :Sprite:绘制到的sprite
material :MaterialObject3D:材质
materials :MaterialsList:材质列表
scene :SceneObject3D:对象所属的场景
parent :DisplayObjectContainer3D:包含该对象的容器(只读)
MESH_SORT_CENTER:String = "meshSortCenter":告诉Mesh3D的render()方法如何排序
MESH_SORT_FAR:String = "meshSortFar":
MESH_SORT_CLOSE:String = "meshSortClose"
相对方向:
static private var FORWARD :Number3D = new Number3D( 0, 0, 1 );
static private var BACKWARD :Number3D = new Number3D( 0, 0, -1 );
static private var LEFT :Number3D = new Number3D( -1, 0, 0 );
static private var RIGHT :Number3D = new Number3D( 1, 0, 0 );
static private var UP :Number3D = new Number3D( 0, 1, 0 );
static private var DOWN :Number3D = new Number3D( 0, -1, 0 );
由此可见,PV3D的坐标系是左手系(和D3D一样)
transform :Matrix3D:变换矩阵(scaling,translation,rotation)
var view :Matrix3D:摄像机变换矩阵
projected :Dictionary:
faces :Array = new Array():面
geometry :GeometryObject3D:包含该对象的3D几何定义(instances:不同的对象共享相同的几何形体,也就是相同的对象显示多次,instance技术可以节省内存)
screenZ :Number:变换后的物体中心的深度值(Z坐标),也就是到camera的距离。
(2)方法:
addGeometry( geometry:GeometryObject3D=null ):void:增加几何定义
distanceTo( obj:DisplayObject3D ):Number:与obj的距离
hitTestPoint( x:Number, y:Number, z:Number ):Boolean:是否与指定点相交(与物体的边界球的半径相比较)
hitTestObject( obj:DisplayObject3D, multiplier:Number=1 ):Boolean:与obj是否相交(边界球),multiplier-边界球组(貌似还没实现)
getMaterialByName( name:String ):MaterialObject3D:获得材质
materialsList():String:材质列表中的材质名
project( parent :DisplayObject3D, camera :CameraObject3D, sorted :Array=null ):Number:投影
render( scene :SceneObject3D ):void:渲染
moveForward(distance:Number)
moveBackward()
moveLeft()
moveRight()
moveUp()
moveDown()
translate( distance:Number, axis:Number3D ):void:沿给定方向移动物体
pitch( angle:Number ):void:(绕X轴旋转)
yaw( angle:Number ):void:偏航角(绕Y轴旋转)
roll( angle:Number ):void:绕Z轴旋转
lookAt( targetObject:DisplayObject3D, upAxis:Number3D=null ):void:让物体看着某一指定位置(upAxis:向上方向,一般是Y轴正向)
copyPosition( reference:* ):void:拷贝位置(reference可以为DisplayObject3D或Matrix3D)
copyTransform( reference:* ):void:拷贝变换矩阵
updateTransform():void:更新变换矩阵
内部使用的属性:
protected var _transformDirty :Boolean = false; //Dirty技术。变换时就设为true
private var _rotationX :Number;
private var _rotationY :Number;
private var _rotationZ :Number;
private var _rotationDirty :Boolean = false; //Dirty技术。旋转时就设为true
private var _scaleX :Number;
private var _scaleY :Number;
private var _scaleZ :Number;
private var _scaleDirty :Boolean = false; //Dirty技术。缩放时就设为true
protected var _sorted :Array;
static private var _totalDisplayObjects :int = 0; // id