精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《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
dp2:唉,我也想學OpenGL,可惜沒時間…… 12/18 00:42
VictorTom:如果有目標有壓力, 就會擠壓出時間來學啦XDDD 12/18 00:45
carlcarl:想學的東西太多了ˊˋ 12/18 00:49
yoco315:推薦這篇文章 12/18 01:00
saxontai:看不懂還是要推,V 大也是很佛心的! 12/18 01:11
VictorTom:沒有啦, 騙甲騙甲(台)啦....Orz 12/18 01:37
VictorTom:原文推文又提了一個可能性, Shade Model沒設成Smooth XD 12/18 01:39
Bencrie:根據當助教的經驗 ... 會不會是 ambient設太高 XDD 12/19 17:17