这是任务:
我们有一个Mesh
,位置POS
,轮换ROT
我们还有一个相机哪个位置和旋转相对于Mesh
例如相机点是CPOS
,相机旋转是CROT
。
如何计算相机的最终角度?我假设它像:
camera.rotation.x = mesh.rotation.x + viewport.rotation.x
camera.rotation.y = mesh.rotation.y + viewport.rotation.y
camera.rotation.z = mesh.rotation.z + viewport.rotation.z
这有点奇怪和错误。
然后我决定在文档上阅读它并完全失望。
有几种旋转结构(Euler,Quaternion)。但是,想要的是不同的东西。
想象一下,就像你在宇宙飞船上一样。它在太空中移动。你坐在右舷炮塔上,看着物体。他们似乎路过...... 然后你想要转过头 - 你的头脑天使是你知道的(在原始的opengl中,我只是在船的旋转矩阵上乘以头部旋转矩阵并获得我的投影矩阵)。
换句话说,我只希望x
和y
轴用于相机旋转,并以矩阵形式组合。然后我想将它与一个对象的位置旋转矩阵相乘。而这个最终矩阵将是我的投影矩阵。
我怎样才能在THREE.js中做同样的事情?
- - - - - - - - EDIT 谢谢你的回答。
我应该给相机哪些电源线?它应该是局部的,网格相对坐标,还是绝对的东西?
我理解,这个问题很明显,但是在THREE.JS文档中没有任何关于相对对象的描述(除了api描述)。答案可能不明确。
答案 0 :(得分:0)
将相机添加为网格的子项,如下所示:
mesh.add( camera );
当相机是物体的孩子时,相机的位置和方向是相对于父物体指定的。
您可以通过设置相机的quaternion
或Euler rotation
- 您的选择来设置相机的方向。
请注意,渲染器会为您更新对象的matrix
和matrixWorld
。您无需手动执行此操作。
three.js r.63