在使用Three.JS进行交互展示时,对相机动作的控制都交给了OrbitControls.JS来实现,因为他拥有交互所需的所有基本功能,如旋转相机,缩放等功能,而对特性相机运动效果的操作却并不自由,可控性不高。
为了实现更多种的相机运动效果以模拟人在三维空间中的运动或特殊的视角变换过程,可以使用Tween.js对contrlos进行动画绑定。
该方法参考文章:https://blog.csdn.net/qq_30100043/article/details/84796961
PS:强推这位大佬,做的东西极好!
实现功能:
1.仿照大佬实现controls的水平角度与垂直角度的获取与赋值
2.将获取的数值传入tween中进行动画轨迹设定
实现代码:
1.完全照超大佬的代码,在OrbitControls.js中增加如下方法并保存
//自增的方法,用于改变controler的水平、垂直角度
this.setAngle=function (phi,theta,distance) {
var r = distance || controls.object.position.distanceTo(controls.target);
var x = r * Math.cos(phi - Math.PI / 2) * Math.sin(theta) + controls.target.x;
var y = r * Math.sin(phi + Math.PI / 2) + con