问题描述
我正在尝试学习如何在 opengl 2.0 中进行照明。 我有一个位于 (0,0) 上的立方体,而相机位于 (0,20) 上。 在顶点我手动添加了所有必要的信息 当我到达法线时,我只是从相机中分别看着立方体, 建议正面法线为 (0,-1),背面法线为 (0,1)。 另外,右面是 (1,0),左面 - (-1,0),顶部 - (0,1,0),底部 - (0,-1,0);
现在,问题是,如果我切换前后法线,它会起作用。 但我就是不明白……我用于所有其他法线的逻辑相同(按原样工作) 意味着前面应该是 (0,-1).. 但显然我错了.. 我只是不明白..
解决方法
你说:
[...] 一个立方体位于 (0,0) [...] 相机位于 (0,20) [...]
正面的法向量必须从立方体指向相机。从立方体到相机的向量是 (0,20)。因此正面的法向量一定是(0,1)。
一般来说,在OpenGL视图空间坐标系中,Z轴指向视图外。视空间坐标系为Right-handed系,其中X轴指向右侧,Y轴指向上方。 Z 轴指向视图外,因为 Z 轴由 X 轴和 Y 轴的叉积给出。