此文原文链接: https://www.nvidia/en-us/geforce/guides/minecraft-rtx-texturing-guide/
此文已发布到个人博客:https://www.xiaoblogs/?p=588
基岩版Minecraft(我的世界,下述所说的我的世界均为基岩版),即将加入光线追踪(简称:光追)的支持。届时玩家和建筑师们能见识到无与伦比的景观和类现实环境。充分利用光线追踪的特性需要先知道物理材质,是一种有额外的材质纹理细节、能发出光线等特性的材质。
在这个教程中,我们将一步一步的来创建自己的光追纹理包。或者更新自己的纹理和纹理包。因此,你的我的世界光追版本将充分利用我的世界基岩版的光追特性
另外,我们将会演示如何创建一个高分辨率材质用于一个由高清晰度的方块组成的栩栩如生的世界,并且,此教程会有一个可选的、简单、容易的工作流workflow教你使用优秀的绘图软件(Photoshop等)
这个教程使用的是基岩版存档,需要转换存档点这里。而且还要知道基本的游戏玩法和存档使用的方法等,同样还要最新的支持Minecraft光追的显卡驱动(目前Minecraft基岩版不支持光追)
这里放几张Minecraft开启光追和使用了相应材质的图片,帮助没见过的人有相应的了解。
Minecraft 纹理概述
在Minecraft的Vanilla纹理包(这里翻译成纹理更正确,也就是平时说的材质包)中有许多的文件用两种法线:基础颜色和模糊(不透明度)。基础颜色法线在纹理的RGB通道中,这个纹理法线也就是我们许多人认为的Minecraft纹理(材质包)
许多纹理也有另外的模糊法线都在α通道中(.TGA纹理文件)或隐藏(.PNG纹理文件)。在Minecraft光追中使用的.TAG纹理将在稍后提到
左为基础颜色法线,右为模糊法线
新的PBR系统用到了这两种法线以及另外四种法线用来描绘真实世界材质的纹理
- 金属材质法线
- 发光材质法线
- 粗糙材质法线
- 常规(普通)/高度法线
纹理转换成游戏中对象材质的过程
各种各样的PBR纹理法线通过以下简单过程对应游戏中对象的材质
6PBR纹理法线 -> 打包 -> 变为3个纹理文件.PNG格式 -> 前面几步简而言之 -> 纹理设置 -> 每一个游戏中方块都重复前面步骤 -> 对应到Block/Item/Object
目前,每6个PBR法线打包进3个纹理文件的通道中供游戏使用。打包法线可减少总体纹理包大小和新纹理集中的纹理的数量
eg.一个PBR下的金矿石方块
纹理文件1 = gold_ore.png文件
- 红、绿、蓝通道 = 基础颜色法线
- α通道[A通道] = 没有,不用于特殊纹理集(金矿石完全不透明,不透光)
- NOTE:纹理集要用模糊法线在α通道中,见模糊法线部分
纹理文件2 = gold_ore_mer.PNG
- 红通道 = 金属材质法线(灰度图像)
- 绿通道 = 发光材质法线(灰度图像)
- 蓝通道 = 粗糙材质法线(灰度图像)
- α通道[A通道] = 没有。这个时候还不用
- NOTE: _mer后缀仅提示三种材质法线用在RGB通道中的顺序
纹理文件3 = gold_ore_normal.PNG
- RGB通道 = 常规法线
- NOTE:或者,纹理法线能用高度法线代替常规法线,见高度法线部分
- α通道[A通道] = 没有,这时候不用
NOTE:在最终的版本里,通道打包系统将升级为“纹理集”系统,有更灵活的文件命名方式和纹理法线/通道管理方式。同样,仍然可以使用原有的通道打包系统不需要重新处理你的原来的纹理文件,对于RTX我的世界Minecraft版本请使用上文提到的通道打包列表
所需工具
可以用下列工具创建纹理集
- Adobe Photoshop
- GIMP
- Paint
- Pixlr
- GraphicsGale, etc.
此教程的绘图工具软件是PS,但是聪明的你学习了PS其他的软件也是同样的道理
模糊法线
模糊法线在RTX游戏下能很好的使用,并且在Minecraft中适合用于玻璃、树叶这类材料。需要在纹理文件1的α通道中绘制并且保存文件格式为32位/像素的.TGA文件替换.PNG文件。否则,模糊法线将不能正常工作
NOTE:在Minecraft RTX版本中,在RTX开启和关闭的状态下都是用同一个纹理包。当RTX关闭时调整的模糊度太低导致当RTX启用时太透明(opacity value的值太低)。RTX启用的时候,Minecraft仅会让阿尔法通道值在0.5-1的范围内来避免上述的情况,且在游戏里对应全部的模糊范围,不会有功能上的损失。RTX关闭时也对应的全部模糊的范围
例如:
- 纹理的A值为0[黑]
RTX开启,纹理模糊度=0[完全透明]
RTX关闭,纹理模糊度=0[完全透明] - 纹理的A值为0.5[灰]
RTX开启,纹理模糊度=0[完全透明]
RTX关闭,纹理模糊度=0.5[50%不透明] - 纹理的A值为0.75[浅灰]
RTX开启,纹理模糊度=0.5[50%不透明]
RTX关闭,纹理模糊度=0.75[75%不透明] - 纹理的A值为1[白]
RTX开启,纹理模糊度=1[不透明]
RTX关闭,纹理模糊度=1[不透明]
新PBR纹理法线
PBR系统中你处理纹理时不用使用全部PBR法线,根据下面的说明可以做出很好的纹理包
金属材质法线 – 一个像素怎么能表示方块有多像金属?
- 模糊值为0:不是金属[木方块,草方块,羊毛,沙子等]
- 模糊值为1:是金属块[金块,铁块等]
- 灰度0-1之间也能用
我的世界Minecraft中的大多数方块的表面都是凹凸不平的,但可以用金属材质法线控制像素为金属[上图的白色像素]和非金属材质[上图的黑色像素]。金属像素更像金块,而非金属像素更像黄色的塑料
发光材质法线 – 有多少像素是发光的?
- 模糊值为0[黑色]代表不发光
- 模糊值为1[白色]代表发强光
- 同样可以让灰度值在0-1之间
- 发光的颜色是由基础颜色法线中的像素决定的
粗糙材质法线 – 怎么用像素表示粗糙的感觉?
- 模糊值为0[黑色]:光滑[玻璃,磨制的石头等]
- 模糊值为1[白色]:很粗糙[土方块,羊毛等]
- 同样可以让灰度值在0-1之间
上面的青金石矿的表面有金属的质感,白色的像素控制方块的粗糙程度,黑色像素控制光滑程度。剩下的像素[灰色]控制方块的质感在粗糙和光滑之间。
常规法线 – 怎么用像素表示凹凸不平?
- 常规法线通过3色通道RGB来表示光打到物体表面的行为。可以制造出一种看起来凹凸不平的表面细节
- RGB的值[128, 128, 255]的像素在被光照亮时不会有被粘滞和减退的现象,这种现象会出现在3Dmesh的表面的高上。如果拿不定是否会出现这种现象,就在常规法线中用上面这个颜色或者别用常规法线还能节省空间
- RGB颜色除了默认的颜色外不建议绘制其他颜色,除非你知道自己在做什么。常规法线通常都是在用特殊的绘制纹理软件时自动生成,下面将会详细说明
高度法线 – 其实,常规纹理文件也作为高度法线
高度法线有很多的限制,仅用于像素纹理材质比如16×16的vanilla香草材质。如果是非像素化的纹理,请用常规法线代替高度法线
当通道以特定方式设置时将常规纹理文件当成高度法线
R通道[red channel] = 高度法线[灰度]
- 值为1表示像素是凸出来的
- 值为0表示像素是凹进去的
- 值为0.5表示没有变化(像素不凸不凹)
G通道和B通道的值都应该为0,否则,游戏将把高度法线当作常规法线
此教程为翻译原文,有出入请移步评论区。