ThingJS 使用角度控制物体旋转。
通常使用如下属性和接口控制物体旋转:
在世界坐标系下,使用 angles 属性来设置或访问旋转信息。
obj.angles = [0,45,0] //设置世界坐标系Y轴向旋转45角度
在父物体坐标系下,使用 localAngles 属性来设置或访问旋转信息。
obj.localAngles = [0,45,0] //设置父物体坐标系Y轴向旋转45角度
在自身坐标系下,使用如下接口方法:
//使用rotate,可输入角度和轴向。设置沿给定轴向转一定角度,传入的旋转轴是自身坐标系下的轴方向 obj.rotate( 45, [0,1,0]) //沿自身x轴向旋转,等同于 obj.rotate( 30, [1,0,0]) obj.rotateX(30) //沿自身y轴向旋转,等同于 obj.rotate( 90, [0,1,0]) obj.rotateY(90)//沿自身z轴向旋转,等同于 obj.rotate( -45, [0,0,1]) obj.rotateZ(-45)
我们还可以使用 lookAt 接口方法,使得物体的观察方向一直对准一个位置或物体
//让物体面向[0,1,0],该坐标是在世界坐标下obj.lookAt( [0,1,0]) //让物体一直面向摄影机obj.lookAt( app.camera ) //让物体一直面向一个物体obj.lookAt( obj ) //让物体一直面向一个物体,同时物体沿自身Y轴向再旋转90度obj.lookAt( obj, [0,90,0] ) //取消lookAt功能obj.lookAt( null )
查看示例网页链接
正常情况下,子物体会随着父物体旋转而一起旋转,如果想控制子物体不随父物体旋转,可通过设置子物体的 inheritAngles 属性为 false 而实现。
引入这个js <script src="../js/controls/OrbitControls.js"></script>找你自己的路径哈,在threejs的库文件里面有的。然后在代码中加入var controls = new THREE.OrbitControls(camera)//创建控件对象 camera是你的相机对象
controls.addEventListener('change', render)//监听鼠标、键盘事件
就可以随意旋转了。