Three.js - 向量如何与lookAt()一起使用?

mee*_*tar 9 vector linear-algebra three.js

我试图了解向量和lookAt()如何在three.js中一起工作.我正在设置此axisHelper的向上矢量,以便Y轴始终指向目标地理位置,这标记向上矢量的位置.它对X和Y有预期的作用,绕Z轴旋转轴; 当我尝试调整向上矢量的Z值时,我希望轴绕X轴旋转,但没有任何反应.

http://jsfiddle.net/68p5r/4/ [编辑:我添加了geo来显示目标位置.]

我有一个dat.gui接口操纵向上矢量来演示,但是当我手动设置向量时也存在问题.

我怀疑问题出在第74行:

zControl.onChange(function(value) {
  axes.up.set(this.object.x, this.object.y, value);
  axes.lookAt(new THREE.Vector3(0, 0, 1));
});
Run Code Online (Sandbox Code Playgroud)

当我更新向上矢量时,我指示axisHelper通过沿其Z轴重做其lookAt()来更新其在屏幕上的方向.改变X和Y按预期工作,为什么不是Z?

(如果我使用geo而不是axisHelper也是如此:http://jsfiddle.net/68p5r/5/)

旋转axisHelper

Wes*_*ley 8

调用时Object.lookAt( vector ),旋转对象使其内部z轴指向目标vector.

但这还不足以指定对象的方向,因为对象本身仍然可以在其z轴上"旋转".

因此,对象随后"旋转",使其内部y轴位于其内部z轴和up矢量的平面中.

目标矢量和up矢量一起足以唯一地指定对象的方向.

three.js r.63


提示:three.js中的轴应始终具有单位长度; 一定要在代码中调用axis.normalize().