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