Minecraftのブロックに色を合わせるのは見た目より難しい
2つのブロックはRGBでは同じに見えても、壁に置くと全く違って見えることがあります。それはゲームがレンダリングするすべての面にシェーディングを施しているからです。CIELAB色空間で比較すると、この知覚差を正しく扱えます。
平均色がターゲットに最も近いブロックを選んでも、たいていは間違った選択になります。Minecraftはブロックをテクスチャの平均色として描画しているのではなく、テクスチャに面ごとの明るさを掛け、さらにその位置のライトレベルを掛けています。スクリーンショットから抽出した色はすでにそのシェーディングの結果であるため、それをそのまま最近色検索に投入すると、どのブロックも実際には表示しない値と照合することになります。
なぜ平均RGBは失敗するのか
平均RGBは3つのチャンネルを等しく重要視し、線形に変化するものとして扱います。どちらも正しくありません。人間の視覚は青よりも緑の差にはるかに敏感であり、同じ数値の色差でも暗い色調では明るい色調よりもはるかに大きく感じられます。2つのブロックがターゲットから同じRGB距離にあっても、壁に置くと全く似て見えないことがあります。
CIELABはまさにその問題を解決するために作られました。Lab空間での等しい数値距離は、おおよそ等しい知覚差に対応します。Labでマッチングすることが、パレットツールが単に16進コードを共有するだけのブロックではなく、本当に正しい色として認識されるブロックを提案できる理由です。
テクスチャは1つの色ではない
ブロックのテクスチャはピクセルの正方形であり、そのほとんどは平坦ではありません。16×16のテクスチャには256ピクセルが含まれ、ざらついた石やまだらのある葉のテクスチャは広い範囲の色調に広がっています。それを単一の平均に還元すると分散が失われます。そしてその分散こそが、モザイクが滑らかに見えるか斑点状に見えるかを決める要素です。パレットマッチャーは各ブロックの平均色を実際のテクスチャファイルから測定し、CIELABで比較します。これでRGBの問題は解決しますが、この問題は解決しません。そのため、広い面積をざらついたブロックに決める前に、目で確認してください。
JavaとBedrockはここで異なる
2つのエディションは同一のテクスチャを搭載しておらず、同じシェーディングもしません。Javaは独自のパイプラインを通じて方向性のある面の明るさとバイオームの色合いを適用します。Bedrockは色合いと一部のブロックの色を異なる方法で処理します。一方のエディションで完璧にマッチするパレットが、もう一方では明らかにずれて見えることがあり、特に草、葉、水で顕著です。実際にブロックを設置するエディションでパレットを構築してください。
画像からモザイクへ
モザイクはグリッドであり、各セルが1つのブロックになります。そこから2つのことが導かれます。第一に、画像はマッチングの前にグリッドサイズにダウンサンプリングする必要があり、後ではいけません。フル解像度でマッチングしてから縮小すると、もはや存在しないディテールのために選ばれたパレットが生成されます。第二に、出力は.mcfunctionであるため、建築全体は手作業ではなくコマンドで設置されます。コマンド数は画像のピクセル数ではなく、セル数に比例して増加します。
透明度の罠
部分的にアルファを持つピクセルには、対応する単一のブロックがありません。マッチャーはアルファの半分でそれらを分割します。それ未満ではピクセルはスキップされるか(空気のまま)、「塗りつぶし」を選んだ場合はパレットの最も暗いブロックになります。それ以上ではピクセルは不透明であるかのようにマッチングされます。ガラスは提供されないため、エクスポートする前にどちらが必要かを決めてください。
画像をブロックモザイクに変えるには、すぐに使える.mcfunctionを使うか、任意の色に最も近いバニラブロックをピクセルアート&ブロックパレットで見つけてください。