三维物体与二维图形的最显著区别就是,三维物体具有深度,也就是Z轴。因此,你会遇到一些之前不曾考虑过的问题。事实上,我们最后还是得把三维场景绘制到二维的屏幕上,即绘制观察者看到的世界,面观察者可以处在任意位置观察。为了定义一个 观察者,你需要考虑以下两点:
视点Í(eye point)
,从视点出发沿着观察方向的射线称作视线(viewing direction)
。 本节将研究如何通过视点和视线来描述观察者。为了确定观察者的状态,你需要获取两项信息:视点
,即观察者的位置。观察目标点(look-at point)
,即被观察目标所在的点,它可以用来确定视线。此外,因为我们最后要把观察到的景象绘制到屏幕上,还需要知道上方向(up direction)
。
(eyeX, eyeY, eyeZ)
表示。(atX, atY, atZ)
表示。(upX, upY, upZ)
表示。 const viewMatrix = new Matrix4();
viewMatrix.setLookAt(
0.20, 0.25, 0.25,
0, 0, 0,
0, 1, 0
);
const u_ViewMatrix = gl.getUniformLocation(gl.program, 'u_ViewMatrix');
gl.uniformMatrix4fv(u_ViewMatrix, false, viewMatrix.elements);