AWAY3D SKYBOX AND HOVERCAMERA

用away3D 做了一个渲染360°全环境贴图的demo,并制作了一个环绕漫游相机对着中间的盒子进行y轴和x轴的旋转,这样可以更好看看到周围的环境与中间盒子的细节。
skybox

由于单页面渲染多个3D视图 或者 同浏览器多标签渲染 3D视图 会导致 fps 丢失,因此这个demo 放在 》继续阅读 的页面中。
所以先上代码:
[cc lang=”actionscript3″ nowrap=”false”]
package
{
import away3d.materials.utils.CubeMap;
import away3d.primitives.SkyBox;

import flash.events.Event;
import flash.geom.Vector3D;
import flash.ui.ContextMenu;

[SWF(width=”500″,height=”500″,frameRate=”60″)]
public class ViewportClipping extends away3D
{
// Environment map.
[Embed(source=”../Embed/envMap/snow_positive_x.jpg”)]
private var EnvPosX:Class;
[Embed(source=”../Embed/envMap/snow_positive_y.jpg”)]
private var EnvPosY:Class;
[Embed(source=”../Embed/envMap/snow_positive_z.jpg”)]
private var EnvPosZ:Class;
[Embed(source=”../Embed/envMap/snow_negative_x.jpg”)]
private var EnvNegX:Class;
[Embed(source=”../Embed/envMap/snow_negative_y.jpg”)]
private var EnvNegY:Class;
[Embed(source=”../Embed/envMap/snow_negative_z.jpg”)]
private var EnvNegZ:Class;

private var _wave:Number = 0;
private var _origin:Vector3D=new Vector3D(0,0,0);

public function ViewportClipping()
{
var myMenu:ContextMenu=new ContextMenu();
myMenu.hideBuiltInItems();
this.contextMenu=myMenu;

_createView();
_createScene();
_createCamera();
_createSkyBox();
}

protected function _createSkyBox():void
{
var _cubeMap:CubeMap=new CubeMap(new EnvPosX().bitmapData,new EnvNegX().bitmapData,new EnvPosY().bitmapData,
new EnvNegY().bitmapData,new EnvPosZ().bitmapData,new EnvNegZ().bitmapData);

_view.scene.addChild(new SkyBox(_cubeMap));
}

protected override function _onEnterFrame(ev:Event):void
{
_cube1.rotationY-=.5;
_cube1.rotationX-=.5;

_view.camera.position=_origin;
_view.camera.rotationY += .1;
_view.camera.rotationX += .1;
_view.camera.moveBackward(1000);
_wave+= .005;
_view.camera.y = 400+Math.sin(_wave)*200;

_view.render();
}
}
}
[/cc]


本demo需要 flash player 11.0.0+ 如果你的版本为 10.0.0+ 的话,是无法观看的。

demo大小为900k,目前没有做载入动画,期间会出现白屏,请耐心等待15秒即可观看

发表评论

电子邮件地址不会被公开。 必填项已用*标注