在ThreeJS中如何实现相机的横向侧移操作
ThreeJS 相机横向侧移方向向量计算方法
横向移动的方向向量和相机朝向、相机上方向两两垂直,可以通过两个向量的叉乘直接计算得到,实现代码如下:
// 获取相机世界朝向(和你实现前进功能的代码一致) const facingDir = this.camera.getWorldDirection(new THREE.Vector3()) // 计算相机向右的方向向量:朝向叉乘相机上方向,结果归一化保证移动速度恒定 const rightDir = new THREE.Vector3().crossVectors(facingDir, this.camera.up).normalize() // 向右移动1单位 this.camera.position.addScaledVector(rightDir, 1) // 向左移动1单位 this.camera.position.addScaledVector(rightDir, -1)
注意事项
- 叉乘顺序不要颠倒,如果顺序反过来得到的就是向左的方向向量,调整后续缩放系数的正负也可以正常使用
- 计算得到的方向向量一定要做归一化处理,避免相机旋转后方向向量长度变化,导致移动速度忽快忽慢
- 代码直接复用相机自身的
up属性,不需要硬编码Y轴为向上方向,适配修改过上方向的自定义相机配置
内容的提问来源于stack exchange,提问作者pgalle
相关产品推荐
相关产品推荐

