作者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
1F:推 NDark:反过来 , 光源 - 3D物件的座标 , 这样可以work吗? 07/07 20:40
2F:→ NDark:记得向量要normalize...超过1.0里面计算会overflow 07/07 20:41
3F:推 darkflier:你应该要了解的是什麽是normal map 为什麽要用他 07/07 21:11
4F:→ darkflier:而不是专注在这些看不懂的方程式 07/07 21:11
5F:→ darkflier:等你了解什麽是normal map之後你自然知道要怎样使用 07/07 21:12
6F:→ darkflier:你还提到了复数光的问题...那代表你现在需要的是 07/07 21:15
7F:→ darkflier:知道什麽叫做打光 打光的用意在哪 07/07 21:15
8F:推 scottnien:RGB只能存0~1.0f的值, 一般是把vector normalize後.. 07/08 00:33
9F:→ scottnien:把x,y,z (介於-1~1之间) 分别 *0.5+0.5 07/08 00:35
10F:推 scottnien:恩没看清楚 原po的问题应该是没把vector转成tangent 07/08 00:49
11F:→ scottnien:space吧?.如果normal map也是tangent space.. 07/08 00:50