PV3D学习笔记-坐标系
为了搞清PV3D的坐标系是左手系还是右手系,最简单的办法就是在场景中画出坐标轴来。
PV3D中的线对象叫Line3D,包含在org.papervision3d.core.geom.renderables中,创建格式为:
var 线段名:Line3D=new Line3D(Lines3D对象,材质,粗细,起点坐标,终点坐标);
五个参数中除了粗细可以直接填数字,其他4个都要先创建对象,Lines3D是包含Line3D对象的容器,包含路径是org.papervision3d.core.geom。Line3D必须放在Lines3D对象中,才能在场景中显示,Lines3D的创建很简单,直接写:
var 名称:Lines3D=new Lines3D();
材质则是Line3D对象专用的LineMaterial类型,包含路径是org.papervision3d.materials.special创建方式也很简单,对于纯色材质来说(线段一般都是纯色的吧),只需要带一个颜色参数:
var 名称:LineMaterial=new LineMaterial(0x0000FF);
这里创建了一个蓝色线段材质。剩下的起点终点坐标都是Vertex3D类型的,和Line3D包含路径相同,创建时带入三个坐标值即可:
var p1:Vertex3D=new Vertex3D(0,0,0);
创建完的线条还要用Lines3D的addLine方法加入后才能显示。分别创建指向三个坐标轴的三条线段:
private function initLine():void
{
var lmx:LineMaterial=new LineMaterial(0xFF0000);
var lmy:LineMaterial=new LineMaterial(0x00FF00);
var lmz:LineMaterial=new LineMaterial(0x0000FF);
var p1:Vertex3D=new Vertex3D(0,0,0);
var p2:Vertex3D=new Vertex3D(400,0,0);
var p3:Vertex3D=new Vertex3D(0,400,0);
var p4:Vertex3D=new Vertex3D(0,0,400);
LN=new Lines3D();
var l1:Line3D=new Line3D(LN,lmx,2,p1,p2);
var l2:Line3D=new Line3D(LN,lmy,2,p1,p3);
var l3:Line3D=new Line3D(LN,lmz,2,p1,p4);
LN.addLine(l1);
LN.addLine(l2);
LN.addLine(l3);
LN.rotationY=-35;
scene.addChild(LN);
}
这里更改了Lines3D的rotationY值,便于观察Z轴,否则Z轴会垂直屏幕。运行,结果如图:
可以看到在PV3D中,默认的X正向指向屏幕右侧,Y正向指向屏幕上方,Z正向垂直屏幕向内,即PV3D采用的是左手坐标系。