基于Away3D实现全景的相机控制器。

本文介绍了一个基于Away3D的HoverController扩展实现的全景视图控制器——RotateController。该控制器通过增加对距离和角度的控制,实现了更为灵活的全景视图展示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   最近研究打算做个全景的Demo,发现Away3D本身的天空盒跟全景属于两种完全不同东西。最后只能基于HoverController来扩展(原因是HoverController能提供的距离控制,类似拉近拉远的效果)等不够好用。下面直接贴出扩展的代码,命名RotateController。

   其实也就是在HoverController的基础上添加了对distance的距离判断,添加了对负值的显示控制..

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;
    }
}

 

转载于:https://www.cnblogs.com/xignzou/p/3603544.html

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值