轨道摄像机控制加滚动(如Blender)

时间:2017-07-21 04:29:10

标签: three.js

轨道控制很棒,但它们有Y轴总是在屏幕上指向UP的限制。

我想添加" roll"相机并在轨道运行时保留它。如果我改变了camera.up矢量,它会添加一个滚动,但当我围绕物体运行时,滚动矢量的外观会发生变化。例如如果它开始向屏幕左侧倾斜,当我绕另一侧运行时,camera.up不变,但现在它在屏幕右侧倾斜。

根据屏幕截图,我注意到这正是相机在Blender中的工作原理。

enter image description here

知道如何在threejs中实现这个目标吗?

(加分点:在Blender中,轨道控制也能够在球体的顶部顺利地继续轨道运行,而三个轨道控制在轨道顶部被卡住。很高兴知道太)

2 个答案:

答案 0 :(得分:1)

您可以使用OrbitControls和"倾斜"相机使用这样的图案:

var tilt = Math.PI / 8;
camera.rotation.order = 'YXZ';

在动画循环中,执行以下操作:

controls.update();
camera.rotation.z = tilt;

这是有效的,因为rotation.order设置为YXZOrbitControls设置的相机方向为camera.rotation.z = 0。所以在这种情况下,改变它是没有害处的。

小提琴:http://jsfiddle.net/ar5rfydj/

three.js r.86

答案 1 :(得分:0)

TrackballControls对于threejs做你想要的:Y轴并不总是向上,你可以在顶部进行轨道运动。

这是官方的例子: https://threejs.org/examples/?q=trackbal#misc_controls_trackball