- 最后登录
- 2013-9-29
- 注册时间
- 2012-8-20
- 阅读权限
- 90
- 积分
- 6371
- 纳金币
- 6372
- 精华
- 0
|
经过我不懈的努力,总算成功解决了全景中热点的不变形添加。
步骤如下:
1、首先建一个Sphere,将用鱼眼镜头拍摄的图片作为材质贴到这个球的内部,鼠标拖动时旋转镜头。具体的代码就不写了,这个应该不难。用论坛里的PV3D中的教程改一下就可以了。
2、再建一个三维空间物体,如一个Plane,然后把它调整到要放热点的地方。
3、最重要的一步,就是在场景中放一个热点的影片剪辑,在全景代码中加一个定时器,最好间隔小一些,我用的是10.
var timer:Timer=new Timer(10);
给这个定时器加事件,根据Plane的实时坐标转换的屏幕坐标调整热点影片剪辑的坐标就可以了。如下是三维坐标转二维的代码,其实这才是最主要的东西,自己可以多试几次:
var real2DX:Number=0;
var real2DY:Number=0;
plane.calculateScreenCoords(camera);
real2DX = plane.screen.x + viewport.width/2;
real2DY = plane.screen.y + viewport.height/2;
trace(real2DX+"||"+real2DY);//这个就是二维坐标了
完成了。
另外附上三维转二维坐标及二维转三维坐标的代码:
3D转2D
do3d.calculateScreenCoords(camera3D);
var real2DX:Number = do3d.screen.x + viewport3D.width/2;
var real2DY:Number = do3d.screen.y + viewport3D.height/2;
2D转3D
var ray:Number3D = camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY);
ray = Number3D.add(ray, camera.position);
|
|