Руководства / Строительство и ресурсы
Подобрать цвет к блоку в Minecraft сложнее, чем кажется
Два блока могут выглядеть одинаково в RGB и совершенно по-разному на стене, потому что игра затеняет каждую отрисовываемую грань.
Выберите блок, средний цвет которого ближе всего к вашей мишени, и вы, скорее всего, ошибётесь. Minecraft не рисует блок средним цветом его текстуры — он умножает эту текстуру на яркость грани, а затем на уровень света в данной позиции. Цвет, который вы взяли с скриншота, уже является результатом такого затенения, поэтому если подать его напрямую в поиск по ближайшему цвету, то сравнение пойдёт со значением, которое ни один блок на самом деле не отображает.
Почему средний RGB не работает
Средний RGB считает все три канала одинаково важными и как будто бы меняющимися линейно. И то, и другое неверно. Человеческий глаз куда чувствительнее к различиям в зелёном, чем в синем, а разница в цвете одинакового числового размера воспринимается гораздо сильнее в тёмных тонах, чем в светлых. Два блока могут находиться на одинаковом расстоянии по RGB от мишени и выглядеть на стене совершенно по-разному.
CIELAB создан именно для того, чтобы это исправить: равные числовые расстояния в Lab примерно соответствуют равным воспринимаемым различиям. Сопоставление в Lab — вот почему инструмент подбора палитры может предложить блок, который действительно воспринимается как нужный цвет, а не тот, что просто совпадает по hex-коду.
Текстура — это не один цвет
Текстура блока — это квадрат из пикселей, и большинство из них не однотонные. Текстура 16×16 содержит 256 пикселей, а шумный камень или пятнистая листва охватывают широкий диапазон тонов. Сведение её к одному среднему отбрасывает разброс — а именно он решает, будет ли мозаика выглядеть гладкой или рябой. Инструмент подбора палитры измеряет расстояние по реальным файлам текстур, поэтому сообщаемое им расстояние отражает то, что блок на самом деле содержит.
Java и Bedrock расходятся здесь
Обе версии поставляются с неодинаковыми текстурами и затеняют их по-разному. Java применяет направленную яркость граней и биомное тонирование через свой конвейер; Bedrock обрабатывает тонирование и некоторые цвета блоков иначе. Палитра, идеально подходящая в одной версии, может заметно отличаться в другой — особенно для травы, листвы и воды. Собирайте палитру в той версии, в которой вы на самом деле расставляете блоки.
От изображения к мозаике
Мозаика — это сетка, и каждая ячейка становится одним блоком. Отсюда следует две вещи. Во-первых, изображение нужно уменьшить до размера сетки до сопоставления, а не после — сопоставление в полном разрешении с последующим уменьшением даёт палитру, подобранную под детали, которых больше нет. Во-вторых, результат — это .mcfunction, поэтому вся постройка возводится командой, а не вручную. Количество команд растёт с числом ячеек, а не с числом пикселей изображения.
Ловушка прозрачности
У пикселей с частичной альфой нет однозначного блочного эквивалента. Заранее решите, станут ли они воздухом, вариантом стекла или ближайшим непрозрачным совпадением, потому что инструмент не может угадать ваше намерение и иначе сведёт их к ближайшему сплошному цвету.
Превратите изображение в блочную мозаику с готовым .mcfunction или найдите ванильный блок, ближайший к любому цвету, в разделе Pixel Art & Block Palette.