pv3d 打造三維全景圖


做三維全景圖,需要找到一張全景照片,利用pv3d的立方體或球體貼圖即可輕松實現。這里用的是球體,圖片是在網上找的,有興趣的朋友也可以自己做。

來源:(http://blog.sina.com.cn/s/blog_652776220100gomj.html) - Flex+pv3d 打造三維全景圖_niutifa_新浪博客

源碼:

package {
import flash.events.Event;
import flash.events.MouseEvent;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.materials.BitmapFileMaterial;
 
 //設置舞台寬高、背景顏色、幀頻
[SWF (width="460", height="300", backgroundColor="0xffffff", frameRate="30")]

public class pv3dwholeScene extends BasicView
{
 private var sphere:Sphere;
 private var w:Number=460;
 private var h:Number=300;
 private var angleX:Number;
 private var angleY:Number;
 private var over:Boolean=false;
 
 public function pv3dwholeScene()
 {
 super(460,300,true, false,CameraType.FREE);
 init();
 }
 private function init():void
 {
 initObj();

 //注冊幀頻偵聽用於不斷刷新屏幕
 addEventListener(Event.ENTER_FRAME,onEnterFrame);

 //當鼠標移到舞台時注冊偵聽
 stage.addEventListener(MouseEvent.MOUSE_OVER,onOver);

 //當鼠標移出舞台時注冊偵聽
 stage.addEventListener(MouseEvent.MOUSE_OUT,onOut);
 }

 private function initObj():void
 {
 var material:BitmapFileMaterial=new BitmapFileMaterial("images/yourImage.jpg");
 
 //PV3D默認情況下不顯示背面,doubleSided屬性應設為true
 material.doubleSided = true;
 material.smooth = true;
 
 //實例化球體 (由周長算出半徑 S=2*PI*R)
 sphere=new Sphere(material,98.68,20,20);
 scene.addChild(sphere);

 //把攝像機移到中心位置,PV3D攝像機的默認位置是camera.z=-1000
 camera.z=0;

 //攝象機的縮放參數,
 camera.zoom=.8;

 //攝象機的焦距
 camera.focus=300;
}

 private function onEnterFrame(e:Event):void
 {

 if(over)
 {
 //當over是真時設置攝像機的旋轉角度
 var xm:Number=stage.mouseX;
 var ym:Number=stage.mouseY;
 angleX=(w/2-xm)*-.004;
 angleY=(h/2-ym)*-.002;
 }
 else
 {
 //當over是假時設置攝像機的旋轉角度為0
 angleX=0;
 angleY=0;
 }
 // 旋轉攝像機
 camera.yaw(angleX);
 camera.pitch(angleY);
 //渲染
 singleRender();
}

private function onOver(event:MouseEvent):void
{
 over=true;//鼠標移到場景上為真
}
private function onOut(event:MouseEvent):void
{
 over=false;//鼠標移出場景為假
}

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM