一些全局設定,還有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