【发布时间】:2013-12-10 22:12:50
【问题描述】:
我试图了解 upvectors 和 lookAt() 如何在 three.js 中协同工作。我正在设置这个axisHelper的向上向量,这样Y轴总是指向目标geo,这标志着向上向量的位置。对于 X 和 Y,它按预期工作,围绕 Z 轴旋转轴;当我尝试调整向上向量的 Z 值时,我希望轴围绕 X 轴旋转,但没有任何反应。
http://jsfiddle.net/68p5r/4/ [编辑:我添加了地理来显示向上的目标位置。]
我有一个 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));
});
当我更新向上向量时,我指示axisHelper 通过沿Z 轴重做它的lookAt() 来更新它在屏幕上的方向。更改 X 和 Y 可以正常工作,为什么不更改 Z?
(如果我使用 geo 而不是axisHelper,也是这种情况:http://jsfiddle.net/68p5r/5/)
【问题讨论】:
-
1. three.js 中的轴应始终具有单位长度;请务必致电
axis.normalize()。 2. 为什么要更改up向量?这通常不是必需的。请修改您的帖子并解释。 3. 你想达到什么目的?请在您的帖子中解释。 -
我只是想了解 up 向量和 lookAt() 是如何一起工作的。我会澄清这个问题。
标签: vector three.js linear-algebra