1. Вики
  2. /Графика и освещение
  3. /Наборы текстур (PBR)

Наборы текстур (PBR)

Делайте блестящие, светящиеся и рельефные блоки Minecraft Bedrock для Vibrant Visuals и трассировки лучей с помощью файлов texture_set.json: слои цвета, MER/MERS, нормалей и карты высот.

Обычная текстура хранит только цвет. Набор текстур добавляет дополнительные слои, которые говорят Vibrant Visuals и трассировке лучей, как поверхность ведёт себя на свету: металл ли это, светится ли она, шершавая она или отполированная, есть ли на ней неровности? Это называется 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 (максимум)
КрасныйМеталличностьНе металл, как камень или деревоЧистый металл, как золото
ЗелёныйСвечениеНе светитсяЯрко светится
СинийШероховатостьГладкий, как зеркалоСовсем шершавый и матовый
Альфа (только 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. Можно использовать и hex: "#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, чтобы альфа-канал хранил подповерхностное рассеивание. Скопируйте один из bedrock samples, чтобы посмотреть рабочий пример.

В игре ничего не изменилось?

Наборы текстур видны только с включёнными Vibrant Visuals или трассировкой лучей. Если всё равно выглядит плоско, добавьте нужную возможность в manifest.json пакета ресурсов: "capabilities": ["pbr"] для Vibrant Visuals или "raytraced" для трассировки лучей.

Графика и освещение: Справочник

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