上禮拜參加MMUG的網聚,邦邦介紹了使用PVD3D的方法。寫了一個小練習,附上的自已畫的sprite、camera、3D物件的關係圖,有錯的話請指正,哈哈
~
package {
import flash.display.BitmapData;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.scenes.MovieScene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import org.papervision3d.utils.*;
import org.papervision3d.objects.Sphere;
import org.papervision3d.scenes.*;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.BlendMode;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.geom.Matrix;
import flash.display.Bitmap;
[SWF(backgroundColor="#000000", frameRate="30", width="1400", height="1400")]
public class Step2 extends Sprite
{
[Embed(source="min.JPG")]
private var CubeTexture:Class;
private var container:Sprite;
private var scene:Scene3D;
private var camera:Camera3D;
private var rootNode:DisplayObject3D;
private var material:ColorMaterial;
private var myCube1:Cube;
private var myCube3:DisplayObject3D;
public function Step2()
{
// initialize the objects
init3D();
// add a listener for the 3D loop
addEventListener(Event.ENTER_FRAME, loop3D);
}
private function init3D():void{
container = new Sprite();
addChild(container);
//產生最原始的影片物件
container.x =300;
container.y = 300;
//設定影片大小
scene = new Scene3D(container);
//把Scenen3D物件放到影片物件中
var cubeTexture:Bitmap = new CubeTexture() as Bitmap;
//新增Bitmap類別(用來載入jpg)
var bpp:ColorMaterial=new ColorMaterial(0xffcc00);
//顏色材質,等等要貼在cube上
var mp2:MaterialsList = new MaterialsList(
//材質列表物件,應該是用來貼多邊型,有前後左右下上面可設定材質
{
//all:
front: new ColorMaterial(0xffcc00),
back: new ColorMaterial(0x5CCC00),
right: new ColorMaterial(0xEBEBEB),
left: new BitmapMaterial(cubeTexture.bitmapData),
top: new ColorMaterial(0x3D38EB),
bottom: new ColorMaterial(0xffcc00)
} );
//mp2.addMaterial(bpp,"all");
//也可以用add的方式貼
var myCube1:Cube=new Cube(mp2,500,500,800);
//產生cube物件,帶入材質和大小
scene.addChild(myCube1);
//把cube增加入畫面
camera = new Camera3D();
//攝影機物件
camera.z = -1000;
//攝影機的距離
camera.zoom = 5;
//攝影機的zoom in程度
camera.focus = 100;
}
private function loop3D(event:Event):void{
//不斷loop的程式
camera.hover(1, (container.x - mouseX)/100, (container.y-mouseY)/100);
scene.renderCamera( this.camera );
}
}
}
</pre><p></p></div></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BODY></HTML>