凹凸贴图

✍ dations ◷ 2025-07-04 10:34:58 #三维计算机图形学,演示效果,纹理贴图

凹凸贴图(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物体变得“凹凸不平”。

相关

  • 花椰菜病毒科杆状去氧核糖核酸病毒属 花椰菜镶嵌(花叶)病毒属 水稻衰退(东格鲁)杆状样病毒属 大豆萎黄(退绿)斑驳样病毒属 木薯叶脉镶嵌样病毒属 牵牛花叶脉透明样病毒属花椰菜病毒科(Cau
  • 恋童癖恋童是一种精神障碍,16岁以上的青少年或者成年人患者会认为青春期前的儿童拥有主要的性吸引力,或只有儿童才有性吸引力。虽然在10-12岁(女孩:10-11岁;男孩:11岁-12岁)之间儿童会开
  • 尼龙尼龙(英语:Nylon),又译为奈纶、耐纶、尼纶、锦纶,是一种人造聚合物、纤维、塑料,发明于1935年2月28日,发明者为美国威尔明顿杜邦公司的华莱士·卡罗瑟斯。1938年尼龙正式上市,最早的
  • 胀子在粒子物理学中,胀子(英语:Dilaton)是额外维度理论中当允许紧致化的维度的体积变化时出现的一种假想粒子。它所出现的形式,例如作为卡鲁扎-克莱因理论中紧致化的维度中的引力标量
  • 宿雾宿务岛是菲律宾的岛屿,距离首都马尼拉587公里,由宿务省负责管辖,属于维萨亚斯群岛的一部分,长250公里、宽45公里,面积4,468平方公里,最高点海拔高度约1,000米,2007年人口3,850,989
  • 分娩并发症分娩(childbirth)也称为生产,是指妇女怀孕之后,一个或多个胎儿离开母亲子宫,开始在子宫外生活的过程,可能是经由阴道的阴道分娩,也可能是剖宫产。全世界在2015年时有1.35亿人出生,其
  • 细小病毒科细小病毒科(英语:Parvoviridae),又称“小DNA病毒科”,是最小且最简单的DNA病毒,少部分此科的病毒有环境耐受性。在1960年代被发现会感染哺乳动物,可分成两类,一类可自己进行复制,另一
  • 路易-马修·莫莱莫莱伯爵路易·马修(Louis Mathieu, comte Molé,1781年1月24日-1855年11月23日),法国保皇党政治家,曾在拿破仑一世、路易十八和路易-腓力治下任职。莫莱出生在巴黎,他的父亲是这个
  • 大众硬件《大众硬件》,是由大众软件杂志社主办,于2003年1月创刊的一本以电脑硬件为主要内容的杂志,为月刊。主要栏目为:“热点述评”、“综合评测”、“试用手记”、“技术前沿”、“入
  • 黑虎神与白虎神黑虎神(又称乌虎神)与白虎神,是台湾民间传说中会伤害孕妇的两种虎妖。白虎神和黑虎神伤害孕妇的方式有所不同:据说年龄的数字里有个九的妇女最容易被虎神缠上。为了避免家里的人