• pv3d(三)camera


    代码
    package {
        import fl.controls.Slider;
        import fl.events.SliderEvent;
        import flash.display.Sprite;
        import flash.display.Shape;
        import flash.events.Event;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import org.papervision3d.core.clipping.FrustumClipping;
        import org.papervision3d.materials.ColorMaterial;
        import org.papervision3d.objects.DisplayObject3D;
        import org.papervision3d.objects.primitives.Plane;
        import org.papervision3d.view.BasicView;
        [SWF(width
    ="600",height="800",frameRate="40",backgroundColor="#000000")]
        public class CameraSettingsDemo extends BasicView {
            private 
    var camTarget:DisplayObject3D;
            private 
    var sliderValuesMin:Array;//装载slider最小值
            private var sliderValuesMax:Array;//装载slider最大值
            private var menuContainer:Sprite;//装载Slider实例的容器
            private var textFields:Array;//装载TextField实例
            private var initialValues:Array;//装载获取值

            private 
    var numberOfSliders:uint;
            private 
    var nearPlane:Plane;
            private 
    var addCounter:uint;
            private 
    var viewportSize:int=480;

            public 
    function CameraSettingsDemo() {
                super(viewportSize, viewportSize,
    false,true,"Free");
                init();
                createSliders();
                startRendering();
            }
            private 
    function sliderChangedListener(event:SliderEvent):void {
                
    switch (event.target.name) {
                    
    case "0" :
                        camera.zoom
    =event.target.value;
                        textFields[
    0].text="camera.zoom: "+camera.zoom;
                        Slider(menuContainer.getChildByName(
    "2")).value=camera.fov;
                        textFields[
    2].text="camera.fov: "+Math.round(camera.fov);
                        
    break;
                    
    case "1" :
                        camera.focus
    =event.target.value;
                        textFields[
    1].text="camera.focus: "+Math.round(camera.focus);
                        Slider(menuContainer.getChildByName(
    "2")).value=camera.fov;
                        textFields[
    2].text="camera.fov: "+Math.round(camera.fov);
                        
    break;
                    
    case "2" :
                        camera.fov
    =event.target.value;
                        textFields[
    2].text="camera.fov: "+Math.round(camera.fov);
                        Slider(menuContainer.getChildByName(
    "1")).value=camera.focus;
                        textFields[
    1].text="camera.focus: "+Math.round(camera.focus);
                        
    break;
                    
    case "3" :
                        camera.x
    =event.target.value;
                        textFields[
    3].text="camera.x: "+camera.x;
                        
    break;
                    
    case "4" :
                        camera.y
    =event.target.value;
                        textFields[
    4].text="camera.y: "+camera.y;
                        
    break;
                    
    case "5" :
                        camera.z
    =event.target.value;
                        textFields[
    5].text="camera.z: "+camera.z;
                        Slider(menuContainer.getChildByName(
    "2")).value=camera.fov;
                        textFields[
    2].text="camera.fov: "+Math.round(camera.fov);
                        Slider(menuContainer.getChildByName(
    "1")).value=camera.focus;
                        textFields[
    1].text="camera.focus: "+Math.round(camera.focus);
                        
    break;
                    
    case "6" :
                    
                        viewport.viewportWidth
    =viewport.viewportHeight=viewportSize*(event.target.value)/100;
                        viewport.x=stage.stageWidth/2-viewport.viewportWidth/2;
                        viewport.y
    =stage.stageHeight/2-viewport.viewportHeight/2;
                        textFields[
    6].text="viewport: "+viewport.viewportWidth;
                        Slider(menuContainer.getChildByName(
    "2")).value=camera.fov;
                        textFields[
    2].text="camera.fov: "+Math.round(camera.fov);
                        Slider(menuContainer.getChildByName(
    "1")).value=camera.focus;
                        textFields[
    1].text="camera.focus: "+Math.round(camera.focus);
                        viewport.graphics.clear();
                        viewport.graphics.lineStyle(
    20xffffff);
                        viewport.graphics.drawRect(
    00, viewport.viewportWidth, viewport.viewportHeight);
                        
    break;

                    
    default :
                        
    break;
                }
                

            }

            public 
    function init():void {
                camera.z
    =-201;
                camera.useClipping
    =false;
                camera.useCulling
    =true;
                viewport.graphics.lineStyle(
    20xffffff);
                viewport.graphics.drawRect(
    00, viewport.viewportWidth, viewport.viewportHeight);
                viewport.x
    =stage.stageWidth/2-viewport.viewportWidth/2;
                viewport.y
    =stage.stageHeight/2-viewport.viewportHeight/2;
                renderer.clipping
    =new FrustumClipping(FrustumClipping.NEAR);
                
                camTarget
    =new Plane(new ColorMaterial(0x0000ff),200,200);
                camTarget.z
    =2000;
                scene.addChild(camTarget);
                
                camera.target 
    = camTarget;
                
                
                textFields
    =[];
                sliderValuesMin
    =[1,1,1,-100,-100,-2500,0];
                sliderValuesMax
    =[100,100,100,100,100,2000,100];
                initialValues
    =[camera.zoom,camera.focus,camera.fov,camera.x,camera.y,camera.z,viewport.viewportWidth];
                
                
    var plane:Plane=null;
                
    var planeMaterial:ColorMaterial=new ColorMaterial(0xff0000);
                
    for (var i:int=0; i<4; i++) {
                    plane
    =new Plane(planeMaterial,200,200,4,4);
                    plane.localRotationY
    =90;
                    plane.z
    =i*300;
                    plane.x
    =-300;
                    scene.addChild( plane);
                }
                
    for (i=0; i<4; i++) {
                    plane
    =new Plane(planeMaterial,200,200,4,4);
                    plane.localRotationY
    =-90;
                    plane.z
    =i*300;
                    plane.x
    =300;
                    scene.addChild( plane);
                }
                
                

            }

            override protected 
    function onRenderTick(event:Event = null):void {
                super.onRenderTick();

            }

            private 
    function createSliders():void {
                menuContainer 
    = new Sprite();
                addChild(menuContainer);
                
    var slider:Slider=null;
                numberOfSliders
    =7;
                trace(camera.x,camera.y,camera.z);
                
    for (var i:int=0; i<numberOfSliders; i++) {
                    slider
    = new Slider();
                    slider.name
    =String(i);
                    
    //addChild(slider);
                    slider.x=i*100;
                    slider.liveDragging
    =true;
                    slider.minimum
    =sliderValuesMin[i];
                    slider.maximum
    =sliderValuesMax[i];
                    slider.value
    =initialValues[i];


                    slider.addEventListener(SliderEvent.CHANGE, sliderChangedListener);
                    menuContainer.addChild(slider);
                    textFields[i] 
    = new TextField();
                    textFields[i].defaultTextFormat 
    = new TextFormat(null,null,0xFFFFFF);
                    textFields[i].selectable
    =false;
                    
    //textFields[i].background=true;
                    textFields[i].height=20;

                    textFields[i].x
    =i*100;
                    textFields[i].y
    =20;
                    menuContainer.addChild(textFields[i]);
                    
    if (i==5) {
                        slider.width
    =200;

                        slider.x
    =0;
                        slider.y
    =40;
                        textFields[i].x
    =0;
                        textFields[i].y
    =60;


                    }
                    
    if (i==6) {
                        slider.width
    =100;

                        slider.x
    =300;
                        slider.y
    =40;
                        textFields[i].x
    =300;
                        textFields[i].y
    =60;


                    }
                }
                menuContainer.x
    =stage.stageWidth/2-menuContainer.width/2;
                menuContainer.y
    =600;
                textFields[
    0].text="camera.zoom: "+initialValues[0];
                textFields[
    1].text="camera.focus: "+Math.round(initialValues[1]);
                textFields[
    2].text="camera.fov: "+Math.round(initialValues[2]);
                textFields[
    3].text="camera.x: "+Math.round(initialValues[3]);
                textFields[
    4].text="camera.y: "+Math.round(initialValues[4]);
                textFields[
    5].text="camera.z: "+initialValues[5];
                textFields[
    6].text="viewport: "+initialValues[6];

            }

        }
    }

  • 相关阅读:
    C#|android与c#之间scoket获取数据进行赋值显示的问题
    C#|窗体获取系统时间、回车触发按钮事件、实现验证码功能
    C#|Insert Into 语句的语法错误
    Android|单片机与android手机通信(控制LED小灯亮灭)
    《软件工程导论》考试复习题集锦
    计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案
    (转)关于数学建模竞赛的一点思考、总结和建议
    答应我,安装chromedriver,按照版本号,v70就安装v2.42,
    (转)Python爬虫--通用框架
    你想转载博客,用这招就好了
  • 原文地址:https://www.cnblogs.com/ddw1997/p/1660477.html
Copyright © 2020-2023  润新知