您的位置:首页 > 其它

Sandy引擎学习笔记:摄影机

2012-02-16 20:34 197 查看
第三课程:如何使用摄影机?通过摄影机移动来使摄影的对象产生变化,这样会使动画变得容易。因为你不需要改变观察对象的的属性,只是改变摄影机的变化

package

{

import flash.display.Sprite;

import flash.events.*;

import sandy.core.Scene3D;

import sandy.core.data.*;

import sandy.core.scenegraph.*;

import sandy.materials.*;

import sandy.materials.attributes.*;

import sandy.primitive.*;

import sandy.parser.*;

import flash.ui.Keyboard;

public class My3D extends Sprite

{

private var scene:Scene3D;

private var camera:Camera3D;

private var pot:Shape3D;

public function My3D()

{

var parser:IParser = Parser.create("asset/teieraASE.ASE",Parser.ASE );//导入ase格式,让它在flash里面重写绘画

parser.addEventListener( ParserEvent.FAIL, onError );//模型导入失败监听

parser.addEventListener( ParserEvent.INIT, createScene );//初始化监听事件

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);

parser.parse();//加载文件

}

private function onError( pEvt:ParserEvent ):void

{

trace("加载文件错误");

}

private function createScene(p_eEvent:ParserEvent ):void

{

camera = new Camera3D( 500, 300 );//建立摄影机

camera.y = 30;

camera.z = -200;

var g:Group = Group( p_eEvent.group);

pot = g.children[0] as Shape3D;//将模型转为shape3d 类型

pot.x = 0;

var materialAttr:MaterialAttributes = new MaterialAttributes(new LightAttributes( true, 0.2 ) );

var material:Material = new ColorMaterial( 0xE0F87E, 0.9, materialAttr);//添加颜色材质和和光线

material.lightingEnable = true;//开启光线

var app:Appearance = new Appearance( material);//创建一个物体表面

pot.appearance = app;

scene = new Scene3D( "scene", this, camera, g );

addEventListener( Event.ENTER_FRAME, enterFrameHandler );

}

private function enterFrameHandler( event : Event ):void

{

//pot.pan +=3;

scene.render();

}

private function keyPressed(event:KeyboardEvent):void

{

switch (event.keyCode)

{

case Keyboard.UP :

camera.tilt +=2;//上移动

break;

case Keyboard.DOWN :

camera.tilt -=2;//下移动

break;

case Keyboard.RIGHT :

camera.pan -=2;//左移动

break;

case Keyboard.LEFT :

camera.pan +=2;//右移动

break;

case Keyboard.CONTROL :

camera.roll +=2;//旋转

break;

case Keyboard.PAGE_DOWN :

camera.z -=5;//向后移动

break;

case Keyboard.PAGE_UP ://后移动

camera.z +=5;

break;

}

}

}

}

通过键盘控制,使摄影机可以上下左右,前后旋转推进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: