2022年3月29日 星期二

ʕ •ᴥ•ʔ week06

week06-20220329
小葉老師上課要點:
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
   *黃色畫線的為新加和修改的程式碼


4.再加入上週沒有完成的keyboard函式,讓鍵盤也發揮功用
   *開啟 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

以老師畫的圖為範例,直接由正上方照射下來會特別亮,被照到的平面面積特別集中、小。如果是從側邊一點照,照射下來的光就會散開,被照到的平面面積特別散開、大。
因為用面來計算角度很麻煩,所以光線的照射角度用法向量來決定。夾角越接近法向量就會越亮越不接近越不亮

期中考題


沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...