wat*_*HUN 3 opengl 3d graphics geometry projection-matrix
我正在从这个scratchpixel学习openGL ,这里是透视项目矩阵章节的引用:
摄像机沿世界坐标系负z轴指向,这样当一个点从世界空间转换到摄像机空间(然后从摄像机空间转换到屏幕空间)时,如果该点位于世界坐标系的左侧y轴,它也会映射到摄像机坐标系y轴的左侧.换句话说,当世界坐标系x轴也指向右边时,我们需要摄像机坐标系的x轴指向右边; 并且唯一可以获得该配置的方法是让相机向下看负z轴.
我认为这与镜像有关?但是这个解释让我很困惑...为什么默认情况下相机的坐标与世界坐标不一致(就像我们在openGL中创建的每个其他3D对象一样)?我的意思是,我们需要使用变换矩阵来转换相机坐标(无论我们想要什么,负z设置,我们都可以模拟它)...为什么要这么麻烦?
选择z方向是完全随意的.
但你的选择有很大的影响.
坚持GL-z方式的一个原因是面部的剔除将匹配GL常量名称,如GL_FRONT.我建议只使用教程.
仅在一个轴上翻转符号也会翻转"奇偶校验".所以正面变成了背面.znear深度测试变为zfar.因此,选择一个并坚持下去是明智的.
默认情况下,是的,它是“右手”系统(例如在物理学中使用)。你的拇指是 X 轴,食指是 Y 轴,当你使它们指向正确的方向时,Z 轴(中指)指向你。为什么选择Z轴指向屏幕内/外?因为 X 轴和 Y 轴会出现在屏幕上,就像在 2D 图形中一样。
但实际上,OpenGL 没有首选坐标系。您可以根据需要调整它。例如,如果您正在制作迷宫游戏,您可能希望 Y 移出/移入屏幕(Z 向上),以便您可以在 XY 平面上很好地移动。你修改你的视图/透视矩阵,然后你就明白了。