作者pleaselouis (LOUISN)
看板GameDesign
標題[請益] 請教 Normal Map 的相關問題
時間Tue Jul 7 20:25:59 2009
目前小弟正在研究 Normal Map 中...
主要是參考下面兩個網頁的教學
1.中文WIKI教學
http://zh.wikipedia.org/w/index.php?title=%E6%B3%95%E5%90%91%E6%98%A0%E5%B0%84&variant=zh-tw
2.一個外國的DirectX範例程式教學 左選單的 Downloads 便可以下載範例
http://www.two-kings.de/tutorials/dxgraphics/dxgraphics14.html
這兩個教學網頁 都是以幾乎一樣的方式呈現Normal Map這個技術
但是關於其中幾點 不是很了解 故來此請教各位前輩
以第一個WIKI網頁中的程式碼舉例 其中有一個function:
"DWORD Vector2ARGB(D3DXVECTOR3 *v,float height)"
其參數 D3DXVECTOR3 *v 我參考第二個網頁內的範例程式
我原本認為這個參數 應該是指 光線的"向量座標" 於是我以下列的方式求值
光線的"向量座標" = 3D物件的座標 - 光線的座標
然後將其填入 Vector2ARGB 中...但是結果完全錯誤...
而我將其參數定為 (-0.7f,0.0f,0.5f) 時 結果看起來好像還算不錯...
因此我想我對於其參數的認知是錯誤的 希望可以有前輩給我一些指導來了解
另外 根據WIKI網頁中提到 其原理為"光源的單位向量與表面法線單位向量做點積"
但若是場景內有複數以上的燈光 那麼應該要如何呢??
麻煩版上的前輩 給小弟一些指導與建議 謝謝大家 <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.76.190.21
推 NDark:反過來 , 光源 - 3D物件的座標 , 這樣可以work嗎? 07/07 20:40
→ NDark:記得向量要normalize...超過1.0裡面計算會overflow 07/07 20:41
推 darkflier:你應該要了解的是什麼是normal map 為什麼要用他 07/07 21:11
→ darkflier:而不是專注在這些看不懂的方程式 07/07 21:11
→ darkflier:等你了解什麼是normal map之後你自然知道要怎樣使用 07/07 21:12
→ darkflier:你還提到了複數光的問題...那代表你現在需要的是 07/07 21:15
→ darkflier:知道什麼叫做打光 打光的用意在哪 07/07 21:15
推 scottnien:RGB只能存0~1.0f的值, 一般是把vector normalize後.. 07/08 00:33
→ scottnien:把x,y,z (介於-1~1之間) 分別 *0.5+0.5 07/08 00:35
推 scottnien:恩沒看清楚 原po的問題應該是沒把vector轉成tangent 07/08 00:49
→ scottnien:space吧?.如果normal map也是tangent space.. 07/08 00:50