[問題] 光照下的物體顏色

看板C_and_CPP作者 (紳士-M)時間12年前 (2012/06/04 10:27), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/2 (看更多)
開發平台(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)

06/04 11:42, , 1F
如果你說的「正確」是指物理上符合真實世界的結果
06/04 11:42, 1F

06/04 11:42, , 2F
那兩種方式當然都不是正確的
06/04 11:42, 2F

06/04 11:43, , 3F
回一篇好了
06/04 11:43, 3F

06/05 03:45, , 4F
如果 vertex color 是指白光經過物體內部後再反射出來
06/05 03:45, 4F

06/05 03:47, , 5F
所呈現的顏色,並且正確結果指的是 Phong reflection
06/05 03:47, 5F

06/05 03:48, , 6F
model 在設計時試圖模擬的結果的話,
06/05 03:48, 6F

06/05 03:50, , 7F
Ambient、Diffuse 須個別乘上 vertex color 再拿來加總。
06/05 03:50, 7F
文章代碼(AID): #1Fp1qYNm (C_and_CPP)
文章代碼(AID): #1Fp1qYNm (C_and_CPP)