PV3D学习笔记-基本对象创建
吃了以前没学过D3D的亏,竟然不知道3D对象的相对0点是位于其几何中心的,PV3D也采用这个原则。
PV3D创建基本几何体和其他任何一种3D引擎一样简单,简单几句代码即可,需要注意的是只有继承自DisplayObject3D或DisplayObjectContainer3D的类才能直接通过scene.addChild来添加到场景。
以下几何体包含路径都是org.papervision3d.objects.primitives。
var pl:Plane = new Plane(new BitmapColorMaterial(0xc0c0c0), 200, 200, 2, 2); pl.position = new Number3D(100,0,100); scene.addChild(pl);
这里Plane对象需要5个参数,第一个材质,可以是任何继承自MaterialObject3D的对象,这里用BitmapColorMaterial创建了一个灰色的纯色材质。第二第三分别是平面的宽和高,一半数学上定义平面采用长和宽,但在PV3D里创建的平面是默认平行屏幕的,也就是放在XOY平面,因此长就是“宽”,宽就是“高”。第四第五分别是宽高方向上的片段数。
var mp:BitmapFileMaterial = new BitmapFileMaterial("brick.jpg", true); var m:MaterialsList = new MaterialsList(); m.addMaterial(mp, "all"); var cu:Cube = new Cube(m, 200, 200, 200); cu.position = new Number3D(100,100,100); scene.addChild(cu);
代码稍微多一些,因为创建长方体的第一个参数是一个材质列表,即MaterialsList对象,它负责保存一系列材质对象,在用addMaterial添加材质时需要一个name参数,可选的name参数有“back”,“front”,“left”,“right”,“top”,“bottom”,“all”。前六个分别对应立方体的6个面,不过PV3D里面的front面是离屏幕较远的面,back才是离屏幕最近的面。
创建立方体的参数有9个,第一个材质列表,后面3个分别是长,宽,高,这里的宽高就是数学意义上的宽高。第4到第6个分别是长宽高方向上的片段数,第7个是从立方体内部可见的面,第8个是在外部可见的面。PV3D中几乎所有对象的创建都带有默认值,不需要的可以省略。
球:
var mp:BitmapFileMaterial = new BitmapFileMaterial("brick.jpg", true); mp.doubleSided = true; var sp:Sphere = new Sphere(mp, 200, 20, 20); sp.position = new Number3D(200, 0, 200); scene.addChild(sp);
创建球要4个参数,第一个是任意 MaterialObject3D对象,第二个是半径,第三个是对应贴图的宽度方向的片段数,第四个就是对应贴图高度方向的线段数。
创建参数第一第二和球一样,第三个是高度,后面两个依然是各自方向上的片段数。
圆柱的创建参数有8个,前5个和圆锥完全一样,第6个是顶部半径,如果要创建圆台就可以设置这个值,最后两个参数控制是否显示顶面和底面。