欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

基于Away3D實(shí)現(xiàn)全景的相機(jī)控制器。

系統(tǒng) 2076 0

? ?最近研究打算做個(gè)全景的Demo,發(fā)現(xiàn)Away3D本身的天空盒跟全景屬于兩種完全不同東西。最后只能基于HoverController來擴(kuò)展(原因是HoverController能提供的距離控制,類似拉近拉遠(yuǎn)的效果)等不夠好用。下面直接貼出擴(kuò)展的代碼,命名RotateController。

? ?其實(shí)也就是在HoverController的基礎(chǔ)上添加了對(duì)distance的距離判斷,添加了對(duì)負(fù)值的顯示控制..

      
        package away3d.controllers

{

    
      
      
        import
      
      
         away3d.core.math.MathConsts;

    
      
      
        import
      
      
         away3d.core.render.PositionRenderer;

    
      
      
        import
      
      
         away3d.entities.Entity;

    

    
      
      
        import
      
      
         flash.geom.Matrix3D;

    
      
      
        import
      
      
         flash.geom.Vector3D;

    

    
      
      
        public
      
      
        class
      
       RotateController 
      
        extends
      
      
         ControllerBase

    {

        
      
      
        private
      
      
        var
      
       _distance:
      
        Number
      
       = 100
      
        ;

        

        
      
      
        private
      
      
        var
      
       _panAngle:
      
        Number
      
       = 0
      
        ;

        

        
      
      
        private
      
      
        var
      
       _tiltAngle:
      
        Number
      
       = 0
      
        ;

        

        
      
      
        private
      
      
        var
      
       _currentTiltAngle:
      
        Number
      
       = 0
      
        ;

        

        
      
      
        private
      
      
        var
      
       _currentPanAngle:
      
        Number
      
       = 0
      
        ;

        

        
      
      
        public
      
      
        function
      
       RotateController(targetObject:Entity=
      
        null
      
      
        )

        {

            
      
      
        super
      
      
        (targetObject);

        }

        

        override 
      
      
        public
      
      
        function
      
       update(interpolate:
      
        Boolean
      
      =
      
        false
      
      ):
      
        void
      
      
        

        {

            
      
      
        if
      
      
         (_invalid) {

                _invalid 
      
      = 
      
        false
      
      
        ;

                

                
      
      
        if
      
       (_panAngle < 0
      
        ) {

                    _currentPanAngle 
      
      += _panAngle%360 + 360 -
      
         _panAngle;

                    _panAngle 
      
      = _panAngle%360 + 360
      
        ;

                } 
      
      
        else
      
      
         {

                    _currentPanAngle 
      
      += _panAngle%360 -
      
         _panAngle;

                    _panAngle 
      
      = _panAngle%360
      
        ;

                }

                

                
      
      
        while
      
       (_panAngle - _currentPanAngle < -180
      
        )

                    _currentPanAngle 
      
      -= 360
      
        ;

                

                
      
      
        while
      
       (_panAngle - _currentPanAngle > 180
      
        )

                    _currentPanAngle 
      
      += 360
      
        ;

                

                _currentPanAngle 
      
      =
      
         _panAngle;

                _currentTiltAngle 
      
      =
      
         _tiltAngle;

                

                

                
      
      
        if
      
      
        (targetObject)

                {

                    
      
      
        var
      
       tempMatrix3d:Matrix3D =
      
         targetObject.transform;

                    tempMatrix3d.identity();

                    

                    tempMatrix3d.appendRotation(_currentTiltAngle, Vector3D.X_AXIS);

                    tempMatrix3d.appendRotation(_currentPanAngle, Vector3D.Y_AXIS);

                    

                    
      
      
        var
      
       pos:Vector3D = 
      
        new
      
      
         Vector3D;

                    pos.x 
      
      = distance*Math.sin(_currentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(_currentTiltAngle*
      
        MathConsts.DEGREES_TO_RADIANS);

                    pos.z 
      
      = distance*Math.cos(_currentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(_currentTiltAngle*
      
        MathConsts.DEGREES_TO_RADIANS);

                    pos.y 
      
      = distance*Math.sin(_currentTiltAngle*
      
        MathConsts.DEGREES_TO_RADIANS);

                    

                    tempMatrix3d.appendTranslation(pos.x, 
      
      -
      
        pos.y, pos.z);

                    

                    targetObject.transform 
      
      =
      
         tempMatrix3d;

                    

                }

            }

        }



        
      
      
        public
      
      
        function
      
      
        get
      
       distance():
      
        Number
      
      
        

        {

            
      
      
        return
      
      
         _distance;

        }



        
      
      
        public
      
      
        function
      
      
        set
      
       distance(value:
      
        Number
      
      ):
      
        void
      
      
        

        {

            _distance 
      
      =
      
         value;

            _invalid 
      
      = 
      
        true
      
      
        ;

            notifyUpdate();

        }



        
      
      
        public
      
      
        function
      
      
        get
      
       panAngle():
      
        Number
      
      
        

        {

            
      
      
        return
      
      
         _panAngle;

        }



        
      
      
        public
      
      
        function
      
      
        set
      
       panAngle(value:
      
        Number
      
      ):
      
        void
      
      
        

        {

            _panAngle 
      
      =
      
         value;

            _invalid 
      
      = 
      
        true
      
      
        ;

            notifyUpdate();

        }



        
      
      
        public
      
      
        function
      
      
        get
      
       tiltAngle():
      
        Number
      
      
        

        {

            
      
      
        return
      
      
         _tiltAngle;

        }



        
      
      
        public
      
      
        function
      
      
        set
      
       tiltAngle(value:
      
        Number
      
      ):
      
        void
      
      
        

        {

            _tiltAngle 
      
      = Math.max(-90, Math.min(90
      
        , value));

            _invalid 
      
      = 
      
        true
      
      
        ;

            notifyUpdate();

        }





        
      
      
        private
      
      
        var
      
       _invalid:
      
        Boolean
      
       = 
      
        false
      
      
        ;

    }

}
      
    

?

基于Away3D實(shí)現(xiàn)全景的相機(jī)控制器。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美精品一区二 | 久久久久国产一区二区三区 | 日韩美女一区 | 久久精品视频网站 | 亚洲午夜精品一区二区三区他趣 | 成人欧美日韩一区二区三区 | 精品国产一二三区 | 久久亚洲AV成人无码电影A片 | 色综合天天综合高清网国产 | 精品毛片视频 | 一级做a爰片久久毛片人呢 达达兔午夜起神影院在线观看麻烦 | 欧美国产视频 | 亚洲成人一区 | 免费看一级毛片 | 九色福利 | 色婷亚洲 | 野花国产精品入口 | 91色在线观看 | 2022国内精品免费福利视频 | 中文字幕 在线观看 | 国产成久久免费精品AV片天堂 | 久久精品久久久 | 综合欧美一区二区三区 | 国产一区二区精品在线观看 | 日本久久中文字幕 | 中国黄色一级生活片 | 国产视频在线观看免费 | 国产精品久久久久久久一区探花 | 全日本爽视频在线 | 天天爆操| 国产99久久久国产精品 | 99精品国产一区二区青青牛奶 | 高清人人天天夜夜曰狠狠狠狠 | 午夜视频免费 成人 | 草莓视频午夜在线观影 | 一级高清视频www | 国产在线一区二区 | 国产成人视屏 | 欧美精品欧美精品系列 | 国产精品资源在线观看网站 | 久久精品中文字幕 |