• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
元某人的代码农场
博客园    首页    新随笔    联系   管理    订阅  订阅

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采用的是左手坐标系。

posted @ 2010-11-06 10:38  元某人  阅读(932)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3