小葉老師上課要點:
1. 主題: 打光 Light
2. 主題: 法向量 Normal
glNormal3f(nx,ny,nz)
3. 複習: 上週移動、旋轉、縮放、矩陣
4. 期中考題
1. 主題: 打光 Light
2. 主題: 法向量 Normal
glNormal3f(nx,ny,nz)
3. 複習: 上週移動、旋轉、縮放、矩陣
4. 期中考題
實作 GLUT 程式: 打光 Light
1. 進入小葉老師的網址 https://jsyeh.org/3dcg10
下載三個檔案 data. zip , windows zip ,glut32.d11
2. windows.zip 解壓縮 > 下載 \ windows \ Shapes .exe
data.zip 解壓縮>下載 \ windows \ data \ 模型
glut32.d11 解壓縮 > 下載 \ windows \ glut32.d11
3.執行 > 下載 \ window \ Light & Material.exe 看範例
左上角按右鍵可以換模型
左下角右鍵可以換 Material (材質)
藍色箭頭指向的參數 glLightfv(...) 的 fv 是 float vector (陣列)
GLfloat light_pos[] = { -2.0 , 2.0 , 2.0 , 1.0 };
glLightfv( GL_LIGHT0 , GL_POSITION , 陣列 )
第幾個燈 設定位置
4.裝好 freeglut 資料夾到桌面,改lib\libglut32.a
並開啟 codeblocks 建立新的 GLUT 專案: week06_light
5.開始偷程式碼!! Ctrl + F 搜尋: light
6.把這些複製起來
7.結合之前的黃色小茶壺加上偷來的程式碼,幫黃色小茶壺打光
*要改一下z的打光位置,茶壺會比較亮
實作 GLUT 程式: Light + mouse + motion + rotate (複習上週)
1.開啟 codeblocks 建立新的 GLUT 專案: week06_light_mouse_motion_rotate
2.結合打光的程式碼和上週寫的 mouse函式 + motion函式
*紅色框是上週的,黃色框是加進去的打光程式碼
3.加上旋轉 rotate
*黃色畫線的為新加和修改的程式碼
*開啟 codeblocks 建立新的 GLUT 專案: week06_light_mouse_motion_rotate
*黃色畫線的為新加和修改的程式碼,淺藍色是記得檢查要加上的函式
光線的法向量 Normal
如果這是一個完美的鏡子,入射角會等於反射角。但世界上得物體通常都不會是完美的鏡子。
https://blog.csdn.net/p942005405/article/details/103900321
N是法向量,橘色是理想的反射角度,但眼睛實際看到可能是偏掉的灰色角度。
越平滑就會特別光亮。
https://learnopengl-cn.readthedocs.io/zh/latest/02%20Lighting/02%20Basic%20Lighting/
https://www.chai3d.org/download/doc/html/chapter16-lighting.html
因為用面來計算角度很麻煩,所以光線的照射角度用法向量來決定。夾角越接近法向量就會越亮,越不接近就越不亮。













沒有留言:
張貼留言