我正在尝试理解在three.js中如何使用up向量和lookAt()函数。我设置了axisHelper的up向量,使得Y轴始终指向目标geo的位置,即标记up向量的位置。对于X和Y轴,它按照预期围绕Z轴旋转轴线;当我尝试调整up向量的Z值时,我期望轴线会围绕X轴旋转,但是却没有任何反应。
http://jsfiddle.net/68p5r/4/ [编辑:我添加了geo以展示up向量的位置。]
我有一个dat.gui界面来演示up向量的操作,但是即使我手动设置向量,问题仍然存在。
我怀疑问题出现在第74行附近:
zControl.onChange(function(value) {
axes.up.set(this.object.x, this.object.y, value);
axes.lookAt(new THREE.Vector3(0, 0, 1));
});
当我更新上向量时,我指示axisHelper通过沿着其Z轴重新执行lookAt()来更新其在屏幕上的方向。更改X和Y的工作效果符合预期,为什么Z不行?(如果我使用geo而不是axisHelper,情况也是如此:http://jsfiddle.net/68p5r/5/)
![rotated axisHelper](https://istack.dev59.com/mAyCj.gif)
axis.normalize()
。