作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 光照下的物體顏色
時間Mon Jun 4 12:04:03 2012
※ 引述《colinslik (紳士-M)》之銘言:
: 1. 3D物件的Vertex Color應該要填到Emission的位置,然後再把最後的Light Intensity
: 乘上255來轉換成一般的顏色。
: 2.直接把Light Intensity當成一個比例參數,用Light Intensity * Vertex Color的方式
: 來表示該頂點的顏色。
: 以上哪個方式才是正確的處理方法?或者其實兩個方法都是錯的,麻煩前輩們幫忙小弟
: 解答一下疑惑,謝謝各位。
首先要有一個觀念
「顏色」只能拿來形容光,不能拿來形容物體
物體受到光的照射,反射出的光進入人的眼中,才形成它在人眼中的顏色
而這個照射到反射的過程實際上非常複雜
比如說金屬有金屬的反射特性
塑膠有塑膠的特性
紅色的金屬與紅色的塑膠你不會認為它們是同一種東西
因此我們用「材質」(material),而非「顏色」(color) 來形容物體
說到這邊你就會想到,金屬可能是 specular 比較高的材質,
但所謂 specular/diffuse 只是描述材質的「一種近似方法」
這個描術方法稱之為 phong reflection model
其它還有各式各樣計算反射光的方法比如說什麼 Oren-Nayer 或 Cook-Torrance
phong model 並不算是物理上的正確,但計算起來很簡單
所以成為繪圖API的基本演算法
講到這裡你應該能明白
不管你選擇 emission 或是當作比例,在物理上並沒有誰對誰不對的分別
倒不如說,你應該直接問做這個模形的人
看他的 vertex color 應該要代入 phong reflection model 中的哪一項
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.3.139
推 Bencrie:其實原 po 可能只是想問 color material 怎麼代參數給 06/04 12:37
→ Bencrie:phong illumination model 06/04 12:38
推 colinslik:感謝您的熱心解釋,的確讓我釐清不少概念,不過其實樓上 06/04 13:56
→ colinslik:描述的比較接近我想問的問題,可能我剛學沒多久,專業術 06/04 13:59
→ colinslik:語不太了解,所以描述的比較不清楚 06/04 14:01
→ littleshan:其實我想說的是參數怎麼代都可以 不過又覺得需要解釋 06/04 14:35
推 VictorTom:push~~:) 06/04 23:27
推 yoco315:專業好文 qq 06/05 21:34