From b89a3732f420b54a0f454e5219cbd6682fb519ae Mon Sep 17 00:00:00 2001 From: Meow J Date: Thu, 18 Feb 2016 18:03:04 +0800 Subject: [PATCH] Update 09 Camera.md --- 01 Getting started/09 Camera.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/01 Getting started/09 Camera.md b/01 Getting started/09 Camera.md index 7433ccf..4e75bdf 100644 --- a/01 Getting started/09 Camera.md +++ b/01 Getting started/09 Camera.md @@ -16,7 +16,7 @@ ![](http://learnopengl.com/img/getting-started/camera_axes.png) -#### 1.摄像机位置 +#### 1. 摄像机位置 获取摄像机位置很简单。摄像机位置简单来说就是世界空间中代表摄像机位置的向量。我们把摄像机位置设置为前面教程中的那个相同的位置: @@ -28,7 +28,7 @@ glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f); 不要忘记正z轴是从屏幕指向你的,如果我们希望摄像机向后移动,我们就往z轴正方向移动。 -#### 2.摄像机方向 +#### 2. 摄像机方向 下一个需要的向量是摄像机的方向,比如它指向哪个方向。现在我们让摄像机指向场景原点:(0, 0, 0)。用摄像机位置向量减去场景原点向量的结果就是摄像机指向向量。由于我们知道摄像机指向z轴负方向,我们希望方向向量指向摄像机的z轴正方向。如果我们改变相减的顺序,我们就会获得一个指向摄像机正z轴方向的向量(译注:注意看前面的那个图,所说的「方向向量/Direction Vector」是指向z的正方向的,而不是摄像机所注视的那个方向): @@ -41,7 +41,7 @@ glm::vec3 cameraDirection = glm::normalize(cameraPos - cameraTarget); 方向向量(Direction Vector)并不是最好的名字,因为它正好指向从它到目标向量的相反方向。 -#### 3.右轴(Right axis) +#### 3. 右轴(Right axis) 我们需要的另一个向量是一个**右向量(Right Vector)**,它代表摄像机空间的x轴的正方向。为获取右向量我们需要先使用一个小技巧:定义一个**上向量(Up Vector)**。我们把上向量和第二步得到的摄像机方向向量进行叉乘。两个向量叉乘的结果就是同时垂直于两向量的向量,因此我们会得到指向x轴正方向的那个向量(如果我们交换两个向量的顺序就会得到相反的指向x轴负方向的向量): @@ -50,7 +50,7 @@ glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f); glm::vec3 cameraRight = glm::normalize(glm::cross(up, cameraDirection)); ``` -#### 4.上轴(Up axis) +#### 4. 上轴(Up axis) 现在我们已经有了x轴向量和z轴向量,获取摄像机的正y轴相对简单;我们把右向量和方向向量(Direction Vector)进行叉乘: @@ -482,4 +482,4 @@ glfwSetScrollCallback(window, scroll_callback); - 看看你是否能够变换摄像机类从而使得其能够变- 成一个**真正的**FPS摄像机(也就是说不能够随意飞行);你只能够呆在xz平面上: [参考解答](http://www.learnopengl.com/code_viewer.php?code=getting-started/camera-exercise1) -- 试着创建你自己的LookAt函数,使你能够手动创建一个我们在一开始讨论的观察矩阵。用你的函数实现来替换glm的LookAt函数,看看它是否还能一样的工作:[参考解答](http://www.learnopengl.com/code_viewer.php?code=getting-started/camera-exercise2) \ No newline at end of file +- 试着创建你自己的LookAt函数,使你能够手动创建一个我们在一开始讨论的观察矩阵。用你的函数实现来替换glm的LookAt函数,看看它是否还能一样的工作:[参考解答](http://www.learnopengl.com/code_viewer.php?code=getting-started/camera-exercise2)