three.js - three.js - 如何围绕lookAt(object)和相机位置之间的线旋转相机
问题描述
我目前正在尝试通过查看对象来围绕目标对象和相机之间存在的线旋转相机。
我以为我可以绕Z轴旋转,但我错了。我猜是因为所有轴都旋转了,所以 lookAt(object) 工作。
抱歉,如果这里已经有解决方案但我找不到它..
感谢您的帮助!
draw3d(renderer) {
let targetPlayer = this.players[this.followPlayer];
let mesh = targetPlayer.three.mesh;
let d = 4;
let relativeCameraOffset = new THREE.Vector3(0, d / 1.2, 2 * d);
let cameraOffset = relativeCameraOffset.applyMatrix4(mesh.matrixWorld);
this.three.camera.position.x = cameraOffset.x;
this.three.camera.position.z = cameraOffset.z;
this.three.camera.position.y = cameraOffset.y;
this.three.camera.lookAt(mesh.position);
// ROTATE CAMERA LOOKAT BY PLAYERS STEERING
// camera.rotation.z = targetPlayer.steering;
renderer.render(this.three.scene, this.three.camera);
}
解决方案
我认为您正在寻找的而不是rotation.z
在camera.rotateZ(degs)
计算结束时。正如您在 docs中看到的,rotateZ()
采用其当前旋转,并执行局部空间 Z 旋转。
推荐阅读
- php - 在登录页面上验证用户名和密码的问题
- angular - RxJS forkJoin 的 http 请求被 chrome 取消
- java - spring boot 立即返回结果无法执行函数
- python - 删除现有的类变量 yield AttributeError
- r - 如果条件匹配则粘贴字符串
- python - 从训练/测试/验证中移动图像的问题拆分到正确的目录中
- python-3.x - 以最少的时间和代码复杂度在 python 列表中查找项目属性的正确方法
- java - 在 java 多线程环境中记录准确的时间戳
- c - 保护 C 中静态库的内容
- android - Firebase 对象检测器是否有任何背景信息?