=========================================================================
FIFTEENTH
(老師的網址:https://jsyeh.org/3dcg10/)
一、攝影機
1.先將data、windows檔案下載下來,並將data資料放到windows資料夾中
2.開啟windows資料夾中的Projection.exe,並試著觀察這9個參數改變之後會發生甚麼
視角改變 eye 向量
中心改變 center 向量
橫拍直拍 up 向量
3.觀察Perspective的四個參數分別做甚麼事
fovy: field of view (y方向) 視野的角度
aspect: aspect ratio 長寬比
zNear: 改變藍色矩形的遠近,會切割到圖形造成破圖
zFar: 改變灰色矩形的遠近,會切割到圖形造成破圖
二、角度、比例、近、遠
1.開一個GLUT專案並命名為week15-1_glutPerspective
2.Frustum(梯形)、Ortho(矩形)看到的遠近、大小不同
3.將Frustum改成Ortho
4.將Ortho改成gluPerspective並執行,在拉視窗的時候圖形的比例、大小等都會一起移動
5.開一個GLUT專案並命名為week15-_gluLookAt
並將原程式碼替換為以下程式碼
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
float ar = w / (float) h;
gluPerspective(60, ar, 0.01, 1000);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week15");
glutDisplayFunc(display);
glutMainLoop();
}
6.將reshape的程式碼加上去,記得要在main函式中呼叫reshape
7.將motion函式加上去,記得要在main函式中呼叫motion
8.執行完之後使用滑鼠移動視角,就可以從不同角度看茶壺
三、Final_Project
1.先開啟Final_Project,並將以上紅框部分的程式碼修改或加上
2.執行後可以使用按鍵2、3切換想要做旋轉移動的部位(會各別分開,所以才需要做切換)
3.將紅框部分的程式碼修改或加上,上面的紅框則是將原來在下面宣告的變數移到最上面去
4.按鍵S可以儲存動作,按鍵R可以執行剛剛儲存的動作(在Final_Project資料夾中會有motion.txt文字檔)
沒有留言:
張貼留言