概要
ドット絵をにじませずに整数倍で拡大・縮小するノードです。ゲームエンジン向けの 2×/3×書き出しやプレビュー用の拡大が主用途で、Scale2x / Eagle によるレトロゲーム風の 輪郭スムージング拡大も選べます。
使い方のポイント
- 通常の拡大は既定の
Nearest(そのまま拡大)。ドットの形が完全に保たれる Scale2x/Eagleは「低解像度ドットを滑らかに見せる」レトロエミュレータ由来の方式。 素材の雰囲気を変える演出として使う(かける倍率は2・3・4倍あたりが素直)- 書き出しサイズだけ大きくしたい場合は、このノードをグラフ末尾(書き出し直前)に置く。 途中に置くと後段の処理コストが倍率の2乗で増える
- 非整数倍・自由なサイズ変更をしたい場合はこのノードではなく
content_resize/canvas_resizeを使う(ドット絵で非整数倍はにじみの元なので基本は避ける)
よくある失敗
- 縮小したらドットが欠けた:
ReduceはNピクセルおきの単純サンプリング。 1pxの線や点は消えることがある。細部を保った縮小は原理的に無理なので、 縮小後サイズで作り直すか要素を整理する - スムージングが効かない: ベタ塗り部分はどの方式でも変化しない(効くのは輪郭の 階段部分だけ)。また5倍・7倍など2・3で割り切れない倍率分はNearestで補われる
- ぼやけた拡大になった: このノードはぼやけない(整数倍+最近傍)。ぼやけて見えるなら 表示側(ブラウザやエンジンのフィルタ設定)を確認する
拡大方式
| 方式 | 説明 |
|---|---|
| Nearest(そのまま拡大) | 各ピクセルをそのまま複製。ドットの形を完全に保つ(従来の挙動) |
| Scale2x(輪郭スムージング) | AdvMAME2x/3x。階段状の輪郭の角を埋めて滑らかにする。2・3・4・6倍などに対応 |
| Eagle(輪郭スムージング強) | Scale2xより角を強めに丸める。2・4・8倍などに対応 |
- スムージング方式は倍率を2倍・3倍の段に分解して適用します(例: 6倍 = Scale3x + Scale2x)
- 2・3で割り切れない倍率分(5倍・7倍など)は、そのまま拡大(Nearest)で補います
- ベタ塗り部分はどの方式でも変化しません。効くのは輪郭の階段部分だけです
技術詳細
- 補間方式: ニアレストネイバー(最近傍補間)、または Scale2x / Eagle
- 拡大 (Enlarge): 出力サイズ =
input_width × scale×input_height × scale - 縮小 (Reduce): 出力サイズ =
input_width ÷ scale×input_height ÷ scale(Nピクセルおきにサンプリング) - scale=1: 入力画像をそのままパススルー(コピーなし、高速)
- 縮小時に1未満になる場合は最小1pxに制限
使用例
ゲームエンジン用2×拡大
32×32のドット絵を mode: Enlarge, scale: 2 → 64×64のピクセルパーフェクトな画像。
サムネイル用縮小
64×64の画像を mode: Reduce, scale: 2 → 32×32にダウンサンプリング。
プレビュー用3×拡大
16×16のアイコンを mode: Enlarge, scale: 3 → 48×48の鮮明なプレビュー画像。
Transform ノードとの違い
| 項目 | PixelScale | Transform |
|---|---|---|
| 目的 | スケーリング専用(拡大・縮小) | 移動・スケール・回転・反転の汎用変換 |
| パラメータ | mode + scale のみ |
offset_x/y, scale, rotation, flip_h/v |
| 適用場面 | エクスポート・プレビュー・サムネイル | グラフ内での画像変換 |
関連ノード
content_resize/canvas_resize— 整数倍以外のサイズ変更・キャンバス拡張transform— 移動・回転・反転を含む汎用変換pixel_rotate— ドット絵向けの回転surface_export— 書き出し時の整数倍拡大はこちらにも内蔵されている