Zh/Bump map: Difference between revisions
< Zh
Jump to navigation
Jump to search
(→凹凸贴图) |
m (Multipage removal) |
||
(15 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{LanguageBar|title = 凹凸贴图}} | |||
# | |||
'''凹凸贴图'''(Bump Maps)、'''法线贴图'''(Normal Maps)是通过变换照明来在'''2D贴图'''上模拟'''3D细节'''的一种材质技术,几乎所有高画质3D游戏都应用了此技术。 | |||
{{note|除非在{{L|Counter-Strike:_Global_Offensive|CS:GO}}中,任何使用凹凸贴图的静态物体都不能使用顶点方法去照亮。}} | |||
{{note|除非在{{L|Counter-Strike:_Global_Offensive|CS:GO}}中,任何凹凸贴图不能用于贴花纹理上。为了使它们正常工作,放置它们的表面还必须具有凹凸贴图。}} | |||
[[File:Brickwall021a normalcompare.jpg|thumb|一个材质的漫反射率示意与其凹凸贴图(右)]] | |||
[[File:Example of bump mapping.jpg|thumb|实际游戏表现]] | |||
== 格式 == | |||
凹凸贴图:1维黑白的图片,图片越白表示纹素高度越高。 | |||
法线贴图:可由凹凸贴图算出,通常为切线法线贴图,将法线信息通过编码方式存储在贴图上。 | |||
凹凸贴图的每个像素都包含定义了 ''标准化向量'' 的(x,y,z)坐标。 | |||
故有凹凸贴图中的每个颜色通道的意义为: | |||
;红 Red | |||
:水平 (X轴) | |||
:*0=左 | |||
:*128=向前或面向玩家 | |||
:*255=右 | |||
;绿 Green | |||
:垂直 (Y轴) | |||
:*0=向上 | |||
:*128=向前或面向玩家 | |||
:*255=向下 | |||
;蓝 Blue | |||
:Z轴 | |||
:*0=面向纹理,远离玩家。这是个瑕疵值,因为低于128说明表面远离玩家,然而这是不可能的。 | |||
:*128=能够接收动态光的最大深度,随意改变这个值可能造成不良后果。 | |||
:*255=面向玩家所对的纹理之外。 | |||
{{note|放置于平面上的凹凸贴图应设为[128,128,255]。提示,dev/flat_normal 是一个平面凹凸贴图的预设,可以用。}} | |||
在三个通道表示每个像素的 ''法向量'',法向量表示像素在3D空间中所面对的方向,这允许引擎可以在2D面上生成阴影和高光,或者给3D模型提供更多细节。 | |||
凹凸贴图对于非常平的表面(比如光滑的混凝土或金属)其实作用不大。但即使是平整的混凝土表面也要有适当的深度感,让凹凸贴图派上用场。 | |||
<gallery mode=packed heights=200px>File:Zh-CN normalmap.png</gallery> | |||
== 创建 == | |||
凹凸贴图应在切线空间中渲染,并使用矢量方向 X+ Y- Z+。 | |||
{{note|法线贴图基本上有两组规则:{{L|DirectX}} 和 {{L|OpenGL}}。他们对绿色通道的解释是相反的。{{L|Source|起源}}使用前者。因此,绿色通道可能需要反转,具体取决于用于创建它的软件。}} | |||
=== 程序 === | |||
[[File:Test_bump.jpg|thumb|600px|由各种程序创建的凹凸贴图。]] | |||
各种程序可以通过图像分析或使用用户提供的 3D 几何图形自动创建凹凸贴图。 | |||
;2D | |||
:{{L|Normal Map Creation in Photoshop or Paint Shop Pro|Photoshop or Paint Shop Pro}} | |||
:[http://www.youtube.com/watch?v=WsFe-E-33IQ Substance Designer] | |||
:{{L|Normal Map Creation in The GIMP|The GIMP}} | |||
:[http://www.youtube.com/watch?v=xDZDWvTUz-c nDo] | |||
:[http://filterforge.com/filters/8774.html Filter Forge] | |||
;3D | |||
:{{L|Normal Map Creation in XSI|XSI}} | |||
:{{L|Normal Map Creation in ZBrush|ZBrush}} | |||
:{{L|Normal Map Creation in Lightwave|Lightwave}} | |||
:{{L|Normal Map Creation in 3ds Max|3ds Max}} | |||
:{{L|Normal Map Creation in Maya|Maya}} | |||
:{{L|Normal Map Creation in Blender|Blender}} | |||
:[http://www.nvidia.com/object/melody_home.html NVIDIA Melody] | |||
:[http://planetpixelemporium.com/tutorialpages/normal2.html Cinema 4D] | |||
:{{L|NormalMapper}} | |||
:[http://xnormal.net/ xNormal] | |||
;其他 | |||
:[https://cpetry.github.io/NormalMap-Online/ NormalMap Online]: 用于在线生成法线贴图的网站。 | |||
:[https://sourceforge.net/projects/ssbumpgenerator/ SSBump Generator 5.3]: 尽管名称如此,但它也可用于生成凹凸贴图,而不仅仅是{{L|$ssbump|自阴影凹凸贴图}}。 | |||
:[http://store.steampowered.com/app/325910/ Substance B2M3]: 以前称为 BitMap2Material。 | |||
:[https://sites.google.com/site/ccdsurgeon/download/ InsaneBump]: 专门用于成为现已取代的软件“CrazyBump”的免费替代品(由于不兼容,可能会使防病毒软件失效) | |||
=== 转换 === | |||
==== 通过 {{L|VTFEdit}} ==== | |||
转换纹理时: | |||
# 选择你图像的格式。BGR888 等未压缩格式比 DXT1 等压缩格式质量更高,但要注意文件大小。 | |||
# 导入完成后,选中纹理标志列表中的“法线贴图”框。它大约是列表的 1/5。 | |||
{{tip|VTFEdit 可以自动生成凹凸贴图。请参阅导入屏幕的右下角。}} | |||
==== 通过 {{L|Vtex (Source 1)|Vtex}} ==== | |||
# 将你的法线贴图保存为 {{L|TGA}} 格式。命名一个以 ''_normal'' 结尾的名称。名称末尾的 ''_normal'' 将影响 {{L|Vtex (Source 1)|Vtex}} 如何转换它。对于砖墙示例,我们将文件命名为 <code style=padding:0>brickwall_normal.tga</code>。 | |||
# 将 <code style=padding:0>nocompress 1</code> 和 <code style=padding:0> normal 1</code> 添加到与纹理相同的文件夹中的 <纹理文件名>.txt,然后编译。 | |||
=== 应用 === | |||
请参阅 {{ent|$bumpmap}}。 | |||
==另见== | |||
*{{ent|$ssbump}}: 创建和使用 Valve 新的自阴影凹凸贴图。 | |||
*[http://planetpixelemporium.com/tutorialpages/normal.html An old article that explains normal mapping quite well] | |||
*[http://wiki.polycount.com/wiki/Normal_map Polycount wiki page about normal maps] | |||
*{{L|Creating a Material}} | |||
{{ACategory|Material System}} | |||
{{ACategory|Glossary}} | |||
{{ACategory|Tutorials}} |
Latest revision as of 05:19, 12 July 2024
凹凸贴图(Bump Maps)、法线贴图(Normal Maps)是通过变换照明来在2D贴图上模拟3D细节的一种材质技术,几乎所有高画质3D游戏都应用了此技术。


格式
凹凸贴图:1维黑白的图片,图片越白表示纹素高度越高。 法线贴图:可由凹凸贴图算出,通常为切线法线贴图,将法线信息通过编码方式存储在贴图上。
凹凸贴图的每个像素都包含定义了 标准化向量 的(x,y,z)坐标。 故有凹凸贴图中的每个颜色通道的意义为:
- 红 Red
- 水平 (X轴)
- 0=左
- 128=向前或面向玩家
- 255=右
- 绿 Green
- 垂直 (Y轴)
- 0=向上
- 128=向前或面向玩家
- 255=向下
- 蓝 Blue
- Z轴
- 0=面向纹理,远离玩家。这是个瑕疵值,因为低于128说明表面远离玩家,然而这是不可能的。
- 128=能够接收动态光的最大深度,随意改变这个值可能造成不良后果。
- 255=面向玩家所对的纹理之外。

在三个通道表示每个像素的 法向量,法向量表示像素在3D空间中所面对的方向,这允许引擎可以在2D面上生成阴影和高光,或者给3D模型提供更多细节。
凹凸贴图对于非常平的表面(比如光滑的混凝土或金属)其实作用不大。但即使是平整的混凝土表面也要有适当的深度感,让凹凸贴图派上用场。
创建
凹凸贴图应在切线空间中渲染,并使用矢量方向 X+ Y- Z+。
程序
各种程序可以通过图像分析或使用用户提供的 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
转换纹理时:
- 选择你图像的格式。BGR888 等未压缩格式比 DXT1 等压缩格式质量更高,但要注意文件大小。
- 导入完成后,选中纹理标志列表中的“法线贴图”框。它大约是列表的 1/5。

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