首页 > 编程知识 正文

杭州西湖三维全景,北京故宫三维全景

时间:2023-05-05 12:17:48 阅读:245953 作者:489

做三维全景图,需要找到一ymdxy照片,利用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.典雅的戒指=.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;//鼠标移出场景为假
}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。