为OrbitControls()设置初始旋转

3

我有一个相机的初始横滚,俯仰和偏航角度,因此我使用相应的值更新相机的旋转,看起来是正确的。

但是,当我创建和更新OrbitControls()时,这些值丢失了,我无法在OrbitControls()构造函数或方法中设置初始方向。

我尝试在更新相机后创建控件,但没有帮助。

这个可能吗?

// Molly


OrbitControls的.saveState().reset()方法不是你要找的吗? - prisoner849
我不这么认为 - 那会怎样有帮助呢? - Molly Birk
1个回答

1
你可以使用球面/笛卡尔转换计算出初始的lookAt / target向量。然后将其设置为轨道控制器的目标并保存状态。从现在开始,它将使用此目标作为参考。
// Your initial target
let sphericalTarget = new THREE.Spherical(1, Math.PI / 2 - pitch, yaw)
let target = new THREE.Vector3().setFromSpherical(sphericalTarget) 

controls = new THREE.OrbitControls()
controls.target = target
controls.saveState()

谢谢 - 非常有帮助,我认为这很接近我想要的。但是,使用该代码时,相机似乎围绕目标旋转而不是原点。我可以通过将网格偏移目标的大小来修复它,但我想知道是否有更优雅的方法。 - Molly Birk
如果有帮助那就太好了!如果答案符合您的需求,您可以接受它。 - YGilk1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接