用矩阵旋转相机
modelMatOfCamera=inverse(veiwMat)
newModelMatOfCamera=modelMatOfCamera*rotMat,这里注意rotMat要右乘modelMatOfCamera,因为我们想在相机的局部空间里旋转相机(即原地扭头),而不是想在世界空间旋转相机(让相机绕着世界原点转)。
则可得新的视图矩阵为:
newViewMat=inverse(newModelMatOfCamera)
或者也可以计算新的up,eye和center:
newUp=secondColOf(newModelMatOfCamera)
newRight=firstColOf(newModelMatOfCamera)
newDir=-thirdColOf(newModelMatOfCamera)
newEyePos=oldEyePos,即eyePos保持不变
newCenter=newEyePos+newDir
这样就得到了newUp,newEyePos和newCenter
----
注意,相机的viewMat即相机modelMat的逆矩阵。
由相机的modelMat各列可直接提取出相机空间轴向量和相机位置坐标。
由相机的viewMat各行可以提取出相机的空间轴向量(第四个元素要强制变为0),但是不能直接提取出相机的位置坐标。
参考:http://user.qzone.qq.com/350479720/blog/1310061051