我想在相机的右下角像Maya一样显示箭头,表示世界坐标的方向(x、y、z),这样当围绕物体旋转相机或穿过场景移动时,仍然可以识别世界坐标的方向。
我已经尝试了两种不同的方法,但都没有成功。
我有一个对象,它有三个箭头作为子元素,使用THREE.ArrowHelper
类创建,我们将其称为XYZ
。第一种方法是将XYZ
设为场景的子元素,并为其提供一个位置,该位置从相机的当前位置加上一个偏移量,指向相机指向的方向并进行调整,使其出现在我想要的屏幕角落而不是屏幕中央。我几乎完成了这项工作,箭头保持正确的旋转,但位置有些奇怪,我停止了这条路,因为在移动相机时它非常“抖动”。我不确定是否是性能问题还是其他问题。
第二种方法是将XYZ
设为相机的子元素,并进行局部位置偏移,然后反转相机的旋转并将反转的旋转应用于XYZ
,以使其与世界坐标匹配。使用这种方法时,我似乎接近成功,但我无法同时得到正确的位置和旋转。
我目前正在使用代码XYZ.matrix.extractRotation(camera.matrixWorldInverse);
来为我提供XYZ
的正确方向,但其位置不正确。如果我使用XYZ.matrixWorld.extractRotation(camera.matrixWorldInverse);
,则位置保持良好(附加到相机),但方向不会改变。
如果有人有一个快速的方法让这个工作起来,那将不胜感激。如果你有比我追求的更好的方法,那也会很有帮助。
camera2.position.sub( controls.target );
这行代码,因为OribtControls.js并没有维护目标位置,但是除此之外解决方案基本上是一样的。 - wackozackocontrols.center
。 - WestLangley