查看: 1724|回复: 0
打印 上一主题 下一主题

papervision3d学习笔记:简单的摄影机

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-31 10:11:32 |只看该作者 |倒序浏览

    package   
    {  
        import flash.display.DisplayObject;  
        import flash.display.Sprite;  
        import flash.events.*;  
        import flash.ui.Keyboard;  
        import org.papervision3d.cameras.Camera3D;  
        import org.papervision3d.scenes.Scene3D;  
        import org.papervision3d.materials.*;  
        import org.papervision3d.objects.DisplayObject3D;  
        import org.papervision3d.view.Viewport3D;  
        import org.papervision3d.render.BasicRenderEngine;  
        import org.papervision3d.objects.primitives.*;  
        import org.papervision3d.materials.utils.MaterialsList;  
        public class Example3 extends Sprite  
        {  
            private var objetisplayObject3D = new DisplayObject3D();  
            private var viewport:Viewport3D=new Viewport3D(550,400);//视窗   
            private var renderer:BasicRenderEngine= new BasicRenderEngine();//创建渲染器   
      
            private var camera:Camera3D= new Camera3D();//创建摄影机   
            private var cude:Cube = new Cube(new MaterialsList({all:new BitmapFileMaterial('map.jpg')}),200,200,200);//创建一个立方体,并且进行贴图   
            //private var cude:Sphere = new Sphere(new BitmapFileMaterial('map.jpg'),200, 24, 24);   
            private var sence:Scene3D = new Scene3D();//创建一个三维场景   
      
            public function Example3()  
            {  
                init3D();//初始化3d   
            }  
            private function init3D():void  
            {  
                addChild(viewport);//添加视窗到显示列表   
                camera.z =-500;  
                sence.addChild(cude);//场景添加立方体   
                addEventListener(Event.ENTER_FRAME, Run);  
                stage.addEventListener(KeyboardEvent.KEY_DOWN, onkeyDown);  
            }  
            private function Run(event:Event):void  
            {  
                cude.rotationX += 1;//以x轴自转   
                cude.rotationY += 1;//以y轴自转   
                renderer.renderScene(sence, camera, viewport);//渲染模型   
            }  
            private function onkeyDown(event:KeyboardEvent):void  
            {  
                if (event.keyCode==Keyboard.UP)  
                {  
                    camera.zoom+=1;//放大   
                }  
                if (event.keyCode==Keyboard.DOWN)  
                {  
                    camera.zoom-=1//缩放   
                }  
                  
            }  
        }  
    }  

通过这个简单的代码,我们使用键盘进行简单控制,实现摄影机移动。达到一种放大缩小的状况。

private var camera:Camera3D= new Camera3D();//创建摄影机

下面是通过键盘进行交互,实现摄像机进行交互。







    private function onkeyDown(event:KeyboardEvent):void  
            {  
                if (event.keyCode==Keyboard.UP)  
                {  
                    camera.zoom+=1;//放大   
                }  
                if (event.keyCode==Keyboard.DOWN)  
                {  
                    camera.zoom-=1//缩放   
                }  
                  
            }  



    private function onkeyDown(event:KeyboardEvent):void  
            {  
                if (event.keyCode==Keyboard.UP)  
                {  
                    camera.zoom+=1;//放大   
                }  
                if (event.keyCode==Keyboard.DOWN)  
                {  
                    camera.zoom-=1//缩放   
                }  
                  
            }





分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-1-11 11:15 , Processed in 0.061192 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部