在推断出函数指定的模型视图矩阵时,我对u-v-n摄像机坐标系感到困惑:
void gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
如果我们调用这个函数,那么我们得到一个u-v-n坐标系,其中 n =中心眼。 它看起来像这样:
这个u-v-n是左手柄坐标系。
部分让我困惑:
这个u-v-n坐标可以说是许多书中所说的相机坐标吗?
我经常从一些教程或教科书中读到,说摄像机坐标系是右手,为什么我们构造一个左手uvn坐标来推导出由gluLookAt指定的模型 - 视图矩阵,只是为了方便?
更新
在阅读完答案和调查后,我就这样理解了:
1)u-v-n坐标系是左手,相机坐标是右手,这就是事实。
2)在计算矩阵时,OpenGL会将n轴翻转为-n,从而使其仍然是右手系统,详见gluLookAt API和GluLookAt code implementation。
答案 0 :(得分:2)
从相机坐标转换为uvn
为目标定义点 T ,为摄像机定义 C ,向上向上向上转换方向。请按照以下步骤操作:
norm()
函数将向量规范化为magnitude()=1