凹凸贴图

From Valve Developer Community
< Zh
Revision as of 19:58, 11 March 2023 by 1416006136 (talk | contribs) (标准化,完成翻译)
Jump to navigation Jump to search
English (en)Español (es)Français (fr)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

凹凸贴图(Bump Maps)、法线贴图(Normal Maps)是通过变换照明来在2D贴图上模拟3D细节的一种材质技术,几乎所有高画质3D游戏都应用了此技术。

Template:Note:zh-cn Template:Note:zh-cn

一个材质的漫反射率示意与其凹凸贴图(右)
实际游戏表现

格式

凹凸贴图:1维黑白的图片,图片越白表示纹素高度越高。 法线贴图:可由凹凸贴图算出,通常为切线法线贴图,将法线信息通过编码方式存储在贴图上。

凹凸贴图的每个像素都包含定义了 标准化向量 的(x,y,z)坐标。 故有凹凸贴图中的每个颜色通道的意义为:

红 Red
水平 (X轴)
  • 0=左
  • 128=向前或面向玩家
  • 255=右
绿 Green
垂直 (Y轴)
  • 0=向上
  • 128=向前或面向玩家
  • 255=向下
蓝 Blue
Z轴
  • 0=面向纹理,远离玩家。这是个瑕疵值,因为低于128说明表面远离玩家,然而这是不可能的。
  • 128=能够接收动态光的最大深度,随意改变这个值可能造成不良后果。
  • 255=面向玩家所对的纹理之外。

Template:Note:zh-cn 在三个通道表示每个像素的 法向量,法向量表示像素在3D空间中所面对的方向,这允许引擎可以在2D面上生成阴影和高光,或者给3D模型提供更多细节。

凹凸贴图对于非常平的表面(比如光滑的混凝土或金属)其实作用不大。但即使是平整的混凝土表面也要有适当的深度感,让凹凸贴图派上用场。

创建

凹凸贴图应在切线空间中渲染,并使用矢量方向 X+ Y- Z+。

Template:Note:zh-cn

程序

由各种程序创建的凹凸贴图。

各种程序可以通过图像分析或使用用户提供的 3D 几何图形自动创建凹凸贴图。

2D
Photoshop or Paint Shop Pro
Substance Designer
The GIMP
nDo
Filter Forge
3D
XSI
ZBrush
Lightwave
3ds Max
Maya
Blender
NVIDIA Melody
Cinema 4D
NormalMapper
xNormal
其他
NormalMap Online: 用于在线生成法线贴图的网站。
SSBump Generator 5.3: 尽管名称如此,但它也可用于生成凹凸贴图,而不仅仅是自阴影凹凸贴图
Substance B2M3: 以前称为 BitMap2Material。
InsaneBump: 专门用于成为现已取代的软件“CrazyBump”的免费替代品(由于不兼容,可能会使防病毒软件失效)

转换

通过 VTFEdit

转换纹理时:

  1. 选择你图像的格式。BGR888 等未压缩格式比 DXT1 等压缩格式质量更高,但要注意文件大小。
  2. 导入完成后,选中纹理标志列表中的“法线贴图”框。它大约是列表的 1/5。

Template:Tip:zh-cn

通过 Vtex

  1. 将你的法线贴图保存为 TGA 格式。命名一个以 _normal 结尾的名称。名称末尾的 _normal 将影响 Vtex 如何转换它。对于砖墙示例,我们将文件命名为 brickwall_normal.tga
  2. nocompress 1 normal 1 添加到与纹理相同的文件夹中的 <纹理文件名>.txt,然后编译。

应用

请参阅 $bumpmap

另见