日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/17 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Away3D实现全景的相机控制器。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ?最近研究打算做個全景的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

總結

以上是生活随笔為你收集整理的基于Away3D实现全景的相机控制器。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。