作者colinslik (紳士-M)
站內C_and_CPP
標題[問題] 光照下的物體顏色
時間Mon Jun 4 10:27:44 2012
開發平台(Platform): VC++
額外使用到的函數庫(Library Used): 無
問題(Question):
這問題不知道在這問合不合適...,小弟最近要用C++自己寫的Lighting的函式(不能用
Open GL),光的4種效果(Ambient、Diffuse、Specular、Emission)都已經算好了,也
知道最後的Light Intensity等於這4種光的結果相加,但是我手邊拿到的模型,除了
Ambient、Diffuse、Specular這三種效果需要的光跟材質參數外,還給了Vertex Color
。
我上網找了一下,好像都沒有提到關於3D物件本身的顏色跟光要怎麼運算才能得到最
後的結果。我上網找到的OpenGLSL的Per Pixel Lighting Code中,在Fragment Shader裡
面也沒看到Vertex Color的參數,所以想上來請教一下:
1. 3D物件的Vertex Color應該要填到Emission的位置,然後再把最後的Light Intensity
乘上255來轉換成一般的顏色。
2.直接把Light Intensity當成一個比例參數,用Light Intensity * Vertex Color的方式
來表示該頂點的顏色。
以上哪個方式才是正確的處理方法?或者其實兩個方法都是錯的,麻煩前輩們幫忙小弟
解答一下疑惑,謝謝各位。
※ 編輯: colinslik 來自: 140.112.253.149 (06/04 10:30)
推 littleshan:如果你說的「正確」是指物理上符合真實世界的結果 06/04 11:42
→ littleshan:那兩種方式當然都不是正確的 06/04 11:42
→ littleshan:回一篇好了 06/04 11:43
→ linotwo:如果 vertex color 是指白光經過物體內部後再反射出來 06/05 03:45
→ linotwo:所呈現的顏色,並且正確結果指的是 Phong reflection 06/05 03:47
→ linotwo:model 在設計時試圖模擬的結果的話, 06/05 03:48
→ linotwo:Ambient、Diffuse 須個別乘上 vertex color 再拿來加總。 06/05 03:50