本文说明如何让billboard始终面向摄像机,延伸话题是让一个物体面向一个坐标点的方法。
首先约定我们使用左手迪卡尔坐标系,那么我们用4个顶点来构造一个平面,这个平面平行于X-Y轴,绘制的时候按照顺时针方向画两个三角扇。其次,我们用旋转矩阵*平移矩阵来描述Billboard的空间状态。我们的目标是让Billboard始终面向摄像机,即控制旋转矩阵在最终世界矩阵中的作用区域。这块区域是世界矩阵左上角3x3的子阵。
做法如下:
1)查询观察矩阵。这个矩阵是由摄像机提供的,由摄像机位置、观察目标以及上方向所组成。
2)将观察矩阵左上角3x3的区域保存下来,然后将这块3x3矩阵取反
3)新建一个4x4矩阵,左上角3x3区域填入上面的结果,第四行分别填入x位置、y位置、z位置和1。
ok,完成了。最后得到的这个4x4矩阵就是最终的世界矩阵,这个矩阵可以让Billboard始终正对摄像机。
那么,我有一个猜测。如果这样能够让一个Billboard正对摄像机的话,那么是否意味着可以这样来计算物体正对空间任何一点的旋转矩阵:以空间任何一点为摄像机位置、物体本身为观察目标,再取与摄像机相同的上方向来构造一个观察矩阵,将这个矩阵的左上角3x3取反然后其余位置补0,右下角补1。以这个矩阵为旋转矩阵并且放在乘式的最左边,也许可以让物体始终面向一个指定的点。
转载于:https://www.cnblogs.com/CloudAge/archive/2006/05/09/395274.html