看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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