ディザリング、アンチエイリアス、色
ディザリング
ディザリングは、2色のピクセルパターンを混ぜて第3の色やグラデーションを偽装する手法です。
使用すべき場合:
- 大きな平坦な領域(48px以上):空、大きな影、背景など。
- 4~16色の限られたパレットで、より多くのトーンが必要な場合。
- テクスチャ: 石、砂、布。
使用すべきでない場合:
- 32px未満のスプライト。 ノイズとして認識されます。
- キャラクターの顔、または動くもの。 フレーム間でちらつきが生じます。
- 第3のパレット色で十分に代用できる場所。 ディザリングよりもランプステップを優先してください。
ツール:
| 目的 | ツール |
|---|---|
| 2色間のグラデーション | apply_dither_gradient(..., color_start, color_end, horizontal)。これは順序Bayer 4×4です。 |
| 均一なテクスチャまたは混合 | apply_dither_pattern(..., color_a, color_b, density)。density 0.5はチェッカーボード、0.25と0.75は疎なドットです。 |
| 手動配置パターン | draw_rows でパターンを明示的に指定。patterns.md のパターンリファレンスを参照。 |
ルール:
- 隣接するランプ色間でのみディザリングを行う。 離れた2色はブレンドではなくグリッドのように見えます。
- トランジション帯は狭く(2~6px)保つ。 塗りつぶし領域が形状を担います。
- 輪郭線やシルエットのエッジを横切ってディザリングしない。
アンチエイリアス(AA)
AAは、曲線や斜め線の段差部分に中間色を配置し、ジャギーを和らげます。
- 内部の線と大きな曲線にのみ、32px以上で使用する。 透過背景に対する外側のシルエットは硬いままにしておきます。AAを施したエッジは、他の背景でハローを生じます。
- 各段差の内側の角に1pxのAAピクセルを配置し、線と塗りの間の色にします。長い段差には2px(明るい方と暗い方)を使用します。
view_sprite(領域ズーム)で結果を確認する。 AAによって線が太く見える場合は間違いなので削除します。
色を用いたシェーディング
- すべてのマテリアルのランプを
generate_color_ramp(base, steps=3-5, hue_shift_degrees=15-30)で構築する。 影は青または紫に、ハイライトは黄または橙に傾けます。 - マテリアル間のコントラストは色相だけでなく明度で強調する。 簡易チェックとして、コピーに対して
adjust_hsl(saturation_shift=-1)を実行すると、アートがグレースケールでどう読めるかが分かります。 - ムードの変化(夜、毒、被弾フラッシュ)には、 レイヤーに対して
adjust_hslを使用するか、フレームをまたいでreplace_color/remap_colors_in_cel_rangeを使用します。 - レトロパレットへの適合:
apply_palette_presetで適用し、次にquantize_to_paletteを実行します。濁った部分は同じランプの色を使用して手動で修正します。
マテリアル
| マテリアル | 見え方 |
|---|---|
| 金属 | 高いコントラスト。深い影の隣に硬く鋭いハイライト。影のエッジに反射光。 |
| 石 | 低いコントラスト。密集したテクスチャ、疎なディザまたは2~3pxの塊、欠けたエッジ。 |
| 木材 | 板目に沿った木目線(濃い色のステップ)。節は小さな楕円形。 |
| 布 | 柔らかいグラデーション、曲線状の暗い帯としてのひだ、織り目を示す縦線テクスチャ。 |
| ガラス / 水 | 大半は背景が透けて見える。明るいスペキュラーのドット、エッジのハイライト、わずかな色合い。 |
| 肌 | 3~4段階の暖色ランプで、影は赤みがかる。ディザリングなし。 |
仕上げパスの後は、get_color_stats を呼び出してパレットをタイトに保ち、lint_sprite で浮きピクセルを検出します。