通过


基于物理的渲染简介

基于物理的渲染 (PBR) 模拟材料对真实光线行为的反应。 某些金属特性会产生反射,光线通过不同类型的玻璃时会偏向,发生折射。

本指南介绍在《我的世界》基岩版中设计 PBR 材质时的一些基本工作流程。 您将创建一系列材质来展示每种新的材质贴图类型。

在本指南结束时,您将了解以下内容:

  • 《我的世界》中有哪些新材质贴图可用作材质。
  • 如何使用粗糙度和金属贴图来创建镜面材质集。

要求

您需要完成以下教程:

  • 资源包简介
  • 具有 textures/blocks 文件夹结构设置的资源包。

尽管会提供材质,您还是需要支持图层的数字绘制软件才能创建材质。

什么是 PBR 材质?

材质使用一种称为材质映射的常用渲染方法。 使用材质贴图,创作者可以将多个图像分层以创建高度详细的 3D 对象。 原版《我的世界》材质使用称为颜色的单个贴图。 颜色贴图由四个颜色通道组成:红色、蓝色、绿色和 Alpha(统称为 RGBA)。 前三个通道控制材质的渲染方式,而 Alpha 控制材质的透明度。

《我的世界》引入 PBR 后,材质现在可以使用五个额外的贴图来帮助创作者创建逼真的材料。

每个贴图都将成为方块材质集的组成部分,每个贴图都在另一个之上分层,从而在材质中设置不同的值。 在这个过程中,创作者对方块放置在世界中时的渲染方式有很强的控制权。

重要

并非所有 PBR 材质集都需要所有贴图。 留空贴图将导致材质集使用默认值。

金属贴图

金属贴图是一种灰度材质,可确定材质贴图中的哪些区域看起来像金属。

  • 设置为黑色的像素的值为 0,该像素是非金属的。 草、泥土或树皮是非金属对象的例子。
  • 设置为白色的像素的值为 1,该像素被视为 100% 的金属。 铁、金或铜是金属对象的例子。

带有金属边缘和哑光中心的混凝土白方块

上图使用以下 mer:

混凝土白方块金属 mer 材质

自发光贴图

自发光贴图是一种灰度材质,用于确定材质贴图的哪些区域会发光。

  • 设置为黑色的像素的值为 0,不会发光。
  • 设置为白色的像素被认为值为 1,并且以最亮的方式发光。
  • 贴图是灰度的,您可以设置 01 之间的值。

带有垂直发光条纹的混凝土白方块

上图使用以下 mer:

混凝土白方块自发光 mer 材质

粗糙度贴图

粗糙度贴图是一种灰度材质,用于确定材质贴图中的哪些区域会发光。

  • 设置为黑色的像素的值为 0,该像素非常平滑。 光滑的大理石、玻璃或光滑的塑料等对象非常平滑。
  • 设置为白色的像素的值为 1,该像素非常粗糙。 砖块、树皮或石头非常粗糙。
  • 贴图是灰度的,您可以设置 01 之间的值。

带有水平粗糙和光滑条纹的混凝土白方块

上图使用以下 mer:

混凝土白方块粗糙度 mer 材质

法线贴图

法线贴图是一种 RGB 材质,用于控制深度以及光线照射到材质时光线的行为方式。

  • 法线贴图使用 RGB,因此,您可以创建表面细节,使材质具有雕刻 3D 对象的外观。
  • 如果 RGB 值分别设置为 128128255,像素的外观将显得平坦。

注意

除非以前有创建法线贴图的经验,否则不建议手动创建法线贴图。 可以使用第三方软件来帮助创建法线贴图。

高度贴图

高度贴图是控制材质深度的灰度材质。 高度贴图可作为法线贴图的替代方法,但效率不高且不能表示尽可能多的材质。

  • 设置为黑色的像素的值为 0,该像素向内回缩。
  • 设置为白色的像素的值为 1,该像素向外突出。
  • 设置为 0.5 的像素是默认高度,既不内缩也不外突。

具有方形脊的混凝土白方块

上图使用以下高度贴图:

混凝土白方块高度 mer 材质

制作镜面

我们创建材质集 JSON 文件并使用提供的材质文件为现有的原版玻璃方块创建镜面材质。

制作材质集 JSON

要使材质集正常工作,您需要定义一个 JSON 文件来加载材质。 本镜面示例教程使用 iron_block 方块。

提示

要了解有关材质集的更多信息,请访问材质集文档 - 材质集简介

  1. 在行为包中,导航到 textures/blocks 文件夹。
  2. 创建一个新的 .JSON 文件,将其命名为 iron_block.texture_set.json
  3. 双击 iron_block.texture_set.json 以编辑内容。
  4. 复制以下示例。

iron_block.texture_set.json

{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "iron_block",
    "metalness_emissive_roughness": "iron_block_mer",
}
  1. 保存并关闭文件。

设置好 JSON 文件后,现在可以配置材质的 color 值和 metalness_emissive_roughness 值。

添加光线追踪功能

包的 manifest.json 文件要求将值 "raytraced" 添加到现有 headermodules 下的 capabilities 部分。

{
    "format_version": 1,
    "header": {
        "name": "RTX Sample Resources",
        "description": "",
        "uuid": "58d4560c-106d-4b0c-9847-eee47417fb05",
        "min_engine_version": [1, 12, 0],
        "version": [1, 0, 0]
    },
    "modules": [
        {
            "description": "",
            "type": "resources",
            "uuid": "2d3df25b-856a-406d-9a57-c87b9a4d7af8",
            "version": [0, 0, 1]
        }
    ],
    "capabilities" : [
        "raytraced"
    ]
}

添加材质

要在 PBR 工作流程中创建镜面,需要粗糙度贴图和金属度贴图。

值为 0.0(即纯黑色)的粗糙度贴图将创建一个光滑的表面,以便光线反射。

金属度贴图设置为值 1.0(即纯白色),将方块渲染为反射金属。

设置镜面后,Render Dragon 引擎能够以更少的时间处理这些对象的计算。

主要颜色材质:iron_block.png 铁块默认《我的世界》材质

PBR 材质:iron_block_mer.png 用于镜面效果的铁块 mer 材质

  1. 保存 iron_block.png 文件和 iron_block_mer.png 文件。
  2. 将两个 .png 文件都复制并粘贴到 textures/blocks 文件夹中。

运行材质包

正确设置 JSON 文件并准备好两个材质后,现在可以加载材质包,在《我的世界》中进行测试。

从环境中反射花朵的铁块

下一步内容?

基于物理的渲染教程

您创建了一个包含粗糙度和金属度贴图的镜面。 现在,您可以查看本指南的下一部分,了解如何创建自定义材质来创建自己的材质集。

资源中的迷雾

除了光线追踪,《我的世界》中的迷雾已更新为使用类似的 JSON 结构,可用于创建和控制其在游戏中的外观。