Re: [問題] OPENGL 光源問題

看板C_and_CPP作者 (鬼翼&娃娃魚)時間14年前 (2009/12/18 00:40), 編輯推噓4(404)
留言8則, 6人參與, 最新討論串2/2 (看更多)
※ 引述《yising770128 (電通人)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 我使用OPENGL : 一個畫面有兩個3D正方體的圖形 : 顏色分別為全紅和全綠 : 因為正方體六面的顏色都一樣所以沒什麼立體感 : 我設置了環境光 漫射光 鏡面光 建議使用原文, ambient, diffuse, specular : 但是兩正方體顏色卻變為單色(依環境光參數改變而變) : 希望得到的正確結果: : 希望兩個正方體在加入光源之後 : 看的出立體感 : 但兩個圖形不會只有一個顏色 OpenGL裡的Lighting的效果, 主要需要四個Lighting相關的屬性.... 1. Light 本身的 ambient, diffuse, specular 用來代表/模擬真實世界光源對三種特性光提供的能量強度 2. Material 的 ambient, diffuse, specular, 及emission 用來代表被照體(polygon)對於三種特性光能量的反射比例 emission是用來模擬物體本身也會發光時的效果 3. Normal, 代表被照體的polygon的法向量 主要在diffuse與specular的光入射/反射計算中使用 4. Light 照射的方向/所在的位置/光源類型等 其中, 1.與2.都以類似Color的下法傳入RGBA的值來做設定.... 3.則是以(X, Y, Z)的向量型式來做設定, 與4.習習相關.... 當然還有其他的屬性, 例如光源類型, 光照角度, 衰減率等等等.... 這些相關的設定請進一步直接去OpenGL的man網頁查詢.... http://www.opengl.org/sdk/docs/man/ 上面的設定裡, Light或Material的ambient, diffuse, specular等漏設或設錯了.... 或者是Normal或Light的方向設錯了等, 都會使得Lighting的效果出不來或不明顯.... : 程式跑出來的錯誤結果: : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : DEV-C : 有問題的code: (請善用置底文標色功能) : 補充說明: 目前的確如原文推文所說, 看起來是Normal沒有設好的關係.... 但是也有可能是光源沒有設好, 或者兩個都沒有設好等造成.... 請您再檢查看看, 或者拿範例等再研究一下; 不然就貼code吧:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.174.98

12/18 00:42, , 1F
唉,我也想學OpenGL,可惜沒時間……
12/18 00:42, 1F

12/18 00:45, , 2F
如果有目標有壓力, 就會擠壓出時間來學啦XDDD
12/18 00:45, 2F

12/18 00:49, , 3F
想學的東西太多了ˊˋ
12/18 00:49, 3F

12/18 01:00, , 4F
推薦這篇文章
12/18 01:00, 4F

12/18 01:11, , 5F
看不懂還是要推,V 大也是很佛心的!
12/18 01:11, 5F

12/18 01:37, , 6F
沒有啦, 騙甲騙甲(台)啦....Orz
12/18 01:37, 6F

12/18 01:39, , 7F
原文推文又提了一個可能性, Shade Model沒設成Smooth XD
12/18 01:39, 7F

12/19 17:17, , 8F
根據當助教的經驗 ... 會不會是 ambient設太高 XDD
12/19 17:17, 8F
文章代碼(AID): #1BAby89G (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BAby89G (C_and_CPP)