Обычная текстура хранит только цвет. Набор текстур добавляет дополнительные слои, которые говорят 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, и использует его везде, где появляется эта текстура.
Файл набора текстур
{
"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:
{
"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" для трассировки лучей.