这一篇,我们将一起学习使用几个基本的PV3D内置模型,PV3D的内置模型有平面,球体,立方体,柱状体,等等。这些模型都是些最基本的形状,可能对于开发比较复杂的3D应用没有帮助,但是学习使用它们可以帮助我们深入学习PV3D,在我们做后续试验的时候可以有实验对象 建立步骤:
显示效果 http://flex.unbe.cn/PV3D/Try04_Sphere/Main.swf
package {
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.scenes.MovieScene3D;
import org.papervision3d.materials.MaterialsList;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.core.proto.MaterialObject3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.Sphere;
[SWF(width='200',height='200',backgroundColor='0xFFFFFF',frameRate='30')]
public class PV3D_Basic1 extends Sprite
{
private var _container:Sprite;
private var _scene:MovieScene3D;
private var _camera :Camera3D;
private var _material:MaterialObject3D;
private var _displayObj:DisplayObject3D;
public function PV3D_Basic1()
{
Init3D();
}
private function Init3D():void
{
// 创建3D舞台的容器
_container = new Sprite();
_container.x = 100;
_container.y = 100;
addChild(_container);
// 创建3D舞台
_scene = new MovieScene3D(_container);
// 创建摄像头
_camera = new Camera3D();
//该值越小,_container就越小
_camera.z = -500;
//该值越小,_container就越小
_camera.zoom = 5;
// 创建一个线框材质
_material = new WireframeMaterial(0xff0000);
//直径80, 高度和宽度的精度为10 直径就很好理解了,精度决定了球的显示效果,大家可以用不同精度试试看
_displayObj = new Sphere(_material, 80, 10, 10);
_scene.addChild(_displayObj);
this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
}
private function OnEnterFrame(event:Event):void
{
_displayObj.rotationX += 5;
_displayObj.rotationY += 5;
//舞台更新显示
_scene.renderCamera(_camera);
}
}
}
这是一个球形,如果想要做成立方体,则只需修改上面代码中红色部分如下
显示效果:http://flex.unbe.cn/PV3D/Try03_Cube/Main.swf
/** 创建立方体 */
var materialList:MaterialsList = new MaterialsList();
//六个面的材质
materialList.addMaterial(new WireframeMaterial(0xFF0000), "top");
materialList.addMaterial(new WireframeMaterial(0xFFFF00), "bottom");
materialList.addMaterial(new WireframeMaterial(0x0000FF), "front");
materialList.addMaterial(new WireframeMaterial(0x00FF00), "back");
materialList.addMaterial(new WireframeMaterial(0x000000), "left");
materialList.addMaterial(new WireframeMaterial(0xCC00CC), "right");
_displayObj = new Cube(materialList, 128, 128, 128, 12, 2, 2);
如果想要创建柱状体,则使用如下代码
显示效果:http://flex.unbe.cn/PV3D/Try05_Cylinder/main.swf
/** 创建柱状体 */
_material = new WireframeMaterial(0xff0000)
//直径40, 高度100, 显示精度10,上底面直径40
_displayObj = new Cylinder(_material, 40, 100, 10, 10, 40);
dmh2002注:本文在原文基础上略有改变,所有代码均通过flex3,PV3D2.0测试,如有不明之处可参看原文或对PV3D构造过程还不了解,可参看。
Papervision3D入门-PV3D程序结构及基本贴图