凹凸贴图

✍ dations ◷ 2025-04-29 23:55:24 #三维计算机图形学,演示效果,纹理贴图

凹凸贴图(bump mapping),又称为凸凹纹理映射、皱面贴图,是一项计算机图形学技术,在这项技术中每个待渲染的像素在计算照明之前都要加上一个从高度图中找到的扰动。这样得到的结果表面表现更加丰富、细致,更加接近物体在自然界本身的模样。法线贴图是一项常用的凹凸贴图技术,另外还有许多其它的实现技术,如视差映射等等。

BMEM技术通过一张叫做高度图(Height map)的灰度图来储存每一点的高度信息然后直接由API处理。

但事实上游戏编程员却通常并不喜欢使用BMEM技术,因为他执行速度慢,因此他们通常使用DP3技术:直接把高度图(Height map)转换成一张法线图(Normal Map),其图的RGB分别是原高度图该点的法线指向:Nx、Ny、Nz,这张图可由Direct3D的专门函数帮助我们计算。最后在渲染的时候直接将该高度图的每个像素与光源的向量点乘,即可得到表示每一点的明暗系数的图:根据高度图,越突出的地方,法线与光源夹角越小,该点的数值越大。接着将这张图乘到渲染线中即可,这样就使模型在背光的凹处有阴影而在面向光源处更亮的效果,这样的3D模型看起来就像真的凹凸不平一样!这些都可以直接在渲染流水线中由机器完成。

具体可以使用以下简单的语句来实现:

//将光源位置转换成ARGBDWORD Vector2ARGB(D3DXVECTOR3 *v,float height){DWORD r=(DWORD)(127.0f*v->x+128.0f);DWORD g=(DWORD)(127.0f*v->y+128.0f);DWORD b=(DWORD)(127.0f*v->z+128.0f);DWORD a=(DWORD)(255.0f*height);return((a<<24L)+(r<<16L)+(g<<8L)+b);}//生成法线图D3DXComputeNormalMap(pNormalMap,pHeightMap,NULL,0,D3D_CHANNEL_RED,1.0f);//pHeightMap为原高度图的指针,pNormalMap为一张空纹理,用于存放法线图//在渲染程序段中可以这样写:DWORD F=Vector2ARGB(&light,0.0f); //light是单位化的光源向量pD->SetRenderState(D3DRS_TEXTUREFACTOR,F);//pD是D3D的设备指针,这句将光源法线参数输入pD->SetTexture(1,TEXTURE);//设置原纹理,如上面的球,如有需要可以贴上纹理样式pD->SetTexture(0,normalmap);//使用上面生成好的法线图pD->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);//设置“来源1”为法线图pD->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_DOTPRODUCT3);//将“来源1”(法线图)与“来源2”(光源法线)进行点乘pD->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_TFACTOR);//设置“来源2”为光线的光源法线参数pD->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);//这步和下面几步将图片的原纹理加上pD->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);pD->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);

假凹凸贴图

三维计算机图形程序员有时使用计算量较小的假凹凸贴图模拟凹凸贴图效果。其中一个方法是使用纹素索引变化取代曲面法线变化,这种方法经常用于二维凹凸贴图。在GeForce 2类型的图形加速硬件中就使用了这项技术。

全屏的二维假凹凸贴图,可以很容易地用简单快速的渲染循环实现,在二十世纪九十年代的示范影像是一个非常普通的视觉效果。

位移映射与凹凸贴图之间区别在例图中已经很明显地显现出来了:在凹凸贴图中,只有法线进行了扰动,而几何体本身没有扰动,这样的结果就是人为改变只出现在物体的轮廓上,而球体本身仍然是原来的圆形。即凹凸贴图只是视觉上的改变,就像一个画得很透视的图片;而位移映射却真的将3D物体变得“凹凸不平”。

相关

  • 拉尔夫·阿尔菲拉尔夫·艾舍尔·阿尔菲(英语:Ralph Asher Alpher,1921年2月3日-2007年8月12日),美国犹太裔物理学家、天文学家。阿尔菲在少年时期就表现出了极高的天分。阿尔菲在乔治·华盛顿大
  • SAR 11远洋杆菌属(Pelagibacter),目前仅包括遍在远洋杆菌(P. ubique)一个种,可能是地球上数量最多的细菌(估算数量级有1028)。早在1990年,就已在马尾藻海中得到属于α-变形菌的rRNA序列,此后
  • 阿丽亚娜·阿斯卡里德阿丽亚娜·阿斯卡里德(法语:Ariane Ascaride)是法国演员,她因演出《爱情不罢工(法语:Marius et Jeannette)》(1997)而获得凯萨奖最佳女主角奖。2019年,她以《世界的胜利》于第76
  • 正宫昌德宫昌德宫(韩语:창덕궁)位于韩国首尔市钟路区,由朝鲜王朝(1392年–1897年)一众国王所建,是“朝鲜五大宫殿”之一。1997年被联合国教科文组织登入为世界文化遗产。 位处景福宫东面,作为
  • 圣贝纳迪诺市圣贝纳迪诺 (英语:San Bernardino),又译为圣博那蒂诺或圣博纳迪诺是美国加利福尼亚州圣贝纳迪诺县的县治,位于该县西南部。面积202.4平方公里,2006年人口198,985人。2010年人口209
  • 世界报 (德国)《世界报》(德语:)是德国的一份跨地区发行的日报,由阿克塞尔施普林格股份公司发行,报社总部位于汉堡和柏林。《世界报》是由第二次世界大战的战胜国于1946年4月2日在属于当时英国
  • 性变异性变异可以说是一些雌性腹足类软体动物的生殖系统出现雄性特征的异常现象。雌性动物会长出阴茎和输精管,严重时甚至堵塞生殖孔,导致不育及胚胎夭折的情况。据广泛报导,性变异一
  • 张维藩张维藩(1892年-1963年),字介人,中国河北省丰润县人。张因家庭清寒进入保定等军校,后投入冯玉祥部队任军职。1935年长城抗战中,协助宋哲元指挥、制定作战计划,获颁青天白日勋章。1937
  • 宗室英蕴宗室英蕴(1810年-1881年)、英蕴,爱新觉罗氏,清朝宗室、政治人物。道光十七年,任三等侍卫,道光二十年,委侍卫班领。道光二十七年,任二等侍卫。道光三十年,任头等侍卫。咸丰四年,任岫岩城
  • 林柏叡林柏叡(1991年6月6日-),台湾男演员。2014年12月5日~2015年1月9日于《中国好男儿》 获得全国12强第十名、2017年演出网络剧《深蓝与月光》。2018年演出电影“斗鱼”。