1. Wiki
  2. /画面与光照
  3. /纹理集(PBR)

纹理集(PBR)

用 texture_set.json 文件为活力视效和光线追踪制作有光泽、会发光、有凹凸感的 Minecraft Bedrock 方块:颜色、MER/MERS、法线和高度图层。

普通纹理只有颜色。纹理集会增加额外的图层,告诉活力视效和光线追踪这个表面在光照下如何表现:它是金属吗?会发光吗?是粗糙还是光滑?有没有凹凸?这就叫作 PBR(基于物理的渲染)。

在本页中,你将让红宝石方块像抛光的宝石一样闪亮,并带有柔和的内部光芒。

文件一览

纹理集就放在它所升级的纹理旁边,名称相同:

资源包
RP/
  textures/
    blocks/
      ruby_block.png
      ruby_block.texture_set.json
      ruby_block_mer.png
      ruby_block_normal.png

和本节的其他页面不同,这里不需要做任何“应用”的步骤。游戏能找到 ruby_block.texture_set.json,是因为它就在 ruby_block.png 旁边,并且会在该纹理出现的所有地方使用它。

纹理集文件

RP/textures/blocks/ruby_block.texture_set.json
{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "ruby_block",
    "metalness_emissive_roughness": "ruby_block_mer",
    "normal": "ruby_block_normal"
  }
}

每个图层都是同一文件夹中一张图片的名称,不带文件扩展名。

图层

图层必需内容
color是普通纹理:RGB,或带透明度的 RGBA。经典画面只使用这一层。
metalness_emissive_roughness否MER 贴图。三个通道,见下文。
metalness_emissive_roughness_subsurface否MERS 贴图:MER 加上用于次表面的第四个通道。用来代替 MER。
normal否法线贴图:用 RGB 颜色模拟细小的凸起和凹痕。
heightmap否表示凹凸的灰度图:白色是高处,黑色是低处。比法线贴图简单。

normal 和 heightmap 只能二选一,不能同时使用。

MER 贴图

一张图片,每个颜色通道代表不同的含义:

通道含义0(黑)255(满)
红金属度非金属,像石头或木头裸露的金属,像金子
绿自发光不发光明亮地发光
蓝粗糙度像镜子一样光滑完全粗糙暗淡
Alpha(仅 MERS)次表面光停留在表面光会透过一点,像树叶或皮肤

对于红宝石:红色接近 0(宝石不是金属),绿色约 40 产生微弱的光芒,蓝色约 30 产生抛光的光泽。

在同样的网格上绘制

MER、法线和高度图与颜色纹理是逐像素对应的。用相同的尺寸绘制它们(方块是 16x16),这样有光泽和会发光的部分才能和颜色对齐。

整张纹理用同一个值

如果整个方块都是同一种材质,就可以省掉额外的图片,直接在 JSON 中写值:

RP/textures/blocks/ruby_block.texture_set.json
{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "ruby_block",
    "metalness_emissive_roughness": [0, 40, 30]
  }
}

数字范围是 0 到 255。你也可以用十六进制:"#00281E" 表示同样的 MER。统一的 color 需要四个值(红、绿、蓝、透明度),统一的 heightmap 只需要一个。

会让纹理集失效的规则

只要满足以下任意一条,游戏就会跳过这个纹理集,并在内容日志中写入错误:

  • 没有 color 图层。
  • 同时设置了 normal 和 heightmap。
  • 某个图层指向的图片不在同一个资源包中。
  • 某张图片的通道数不对。color、MER 和 normal 需要 3 或 4 个通道,heightmap 需要 1 个。

如果同名图片存在多种文件类型,游戏会优先选 .tga,然后是 .png,再是 .jpg,最后是 .jpeg。

来自两个包的纹理集永远不会合并。列表中排在更上面的包会替换整个纹理集。

原版使用 MERS

原版方块使用 metalness_emissive_roughness_subsurface,format_version 为 1.21.30,并使用 .tga 图片,让 alpha 通道存放次表面数据。从 bedrock samples 中复制一个,就能看到可用的示例。

游戏中没有变化?

纹理集只在开启活力视效或光线追踪时才会显示。如果看起来仍然是平的,请在资源包的 manifest.json 中添加相应的能力:活力视效用 "capabilities": ["pbr"],光线追踪用 "raytraced"。

画面与光照: 参考资料

雾 ·大气效果 ·光照 ·调色 ·水体 ·纹理集(PBR)

We use cookies to improve your experience and analyse site traffic. Learn more