javascript - Three.js - 查找相机的当前 LookAt?

标签 javascript camera three.js

我需要读取(提取)场景中相机的当前 lookAt。我看过以下帖子,但我无法从相机中获取外观。

three.js set and read camera look vector

感谢您的帮助。

最佳答案

威尔特的这个回答很有见地,但并不完全正确。该代码返回一个向量,该向量指向与相机指向相同的方向。这是一个很好的开始!

但除非相机位于原点 (0, 0, 0)(或恰好位于连接原点和旋转矢量点的线段上且不超过该点,因此该点位于相机后面)相机不会看那个点。显然——只是常识——相机的位置也会影响正在观察的点。考虑一下。相机方法 lookAt() 查看 3D 空间中的一个点,而不管相机在哪里。因此,要获得相机正在注视的点,您需要通过调用调整相机位置:

vec.add( camera.position );

还值得一提的是,相机不是在看一个点,而是在看一条由无数点组成的线,每个点与相机的距离不同。 Wilt 的上述代码返回一个长度恰好为一个单位的向量,因为将四元数应用于规范化 z 轴向量 (0, 0, -1) 会返回另一个规范化向量(在不同的方向)。要计算距相机任意距离 x 的观察点,请使用:

(new THREE.Vector3( 0, 0, -x )).applyQuaternion( camera.quaternion ).add( camera.position );

这会沿 z 轴取一个距离原点 x 的点,将其旋转到相机的方向,然后通过添加相机的位置创建一个“世界点”。我们需要一个“世界点”(而不是“相对于相机点”),因为 camera.lookAt() 也需要一个“世界点”作为参数。

关于javascript - Three.js - 查找相机的当前 LookAt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957645/

相关文章:

Javascript - 移动设备滑动滚动

javascript - JavaScript 中的按位异或运算符

java - 连接相机时出错 : 0

java - Android:我需要一个圆形相机预览。如何实现?

javascript - 自适应边距,充分利用全宽 - iTunes 专辑网格样式

javascript - 如何在ckeditor中实现保存按钮插件的ajax调用

Android 模拟器相机显示 block

javascript - 用 Three.js 画一个基本的三 Angular 形

javascript - Physij 更新物体质量

javascript - Three.js r91 - 如何使用新的线宽属性来加宽/加宽线条?