Papervision3D类关系解析(一)

来源:互联网 发布:淘宝需要3c认证类目 编辑:程序博客网 时间:2024/06/18 04:02
 

一些全局设置,还有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 ):void3×3矩阵相乘

public static function multiply3x3( a:Matrix3D, b:Matrix3D ):Matrix3D3×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 ):Matrix3Dref-参考点

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":告诉Mesh3Drender()方法如何排序

              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:渲染

       moveForwarddistance: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可以为DisplayObject3DMatrix3D

       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

原创粉丝点击