INDIE INDEX

レベル:実践

ドット絵がぼやける|UnityとGodotのフィルター設定と拡大

公開 2026-10-24更新 2026-10-24

Unity のスプライトの Filter Mode は、テクスチャが 3D の変形で引き伸ばされるときのフィルターの指定で、Bilinear だと近くで見たときにぼやけ、Point (no filter) だとブロック状に見えます。Godot の CanvasItem のテクスチャフィルターは、Nearest だと近くで見たときにピクセル状に、Linear だと近くで見たときに滑らかに見えます。

このページの目次
  1. ドット絵がぼやけるときに、エンジンが見る設定
  2. Unity の Filter Mode と、2D Pixel Perfect の準備と設定
  3. Godot のテクスチャフィルター
  4. Godot の Stretch Mode と Stretch Scale Mode
  5. ぼやけを直す前に確かめる手順
  6. 失敗を避ける注意
  7. 次に読む
  8. 情報源

ドット絵がぼやけるときに、エンジンが見る設定

Unity のスプライトの Filter Mode は、テクスチャが 3D の変形で引き伸ばされるときのフィルターの指定で、Bilinear だと近くで見たときにぼやけ、Point (no filter) だとブロック状に見えます。Godot の CanvasItem のテクスチャフィルターは、Nearest だと近くで見たときにピクセル状に、Linear だと近くで見たときに滑らかに見えます。

Unity には、2D Pixel Perfect パッケージの Pixel Perfect Camera を使う前のスプライトの準備として、すべてのスプライトを同じ Pixels Per Unit にし、Filter Mode を「Point」に、Compression を「None」にする手順があります。Godot には、ドット絵の画面の拡大を決める Stretch Mode と Stretch Scale Mode の設定があります。

エンジンそのものの紹介は、Unity と Godot Engine にあります。Unity の Sprite の項目は Unity 6.0 の版、Pixel Perfect Camera の項目は 2D Pixel Perfect パッケージ 5.0.3 の版のものです。Godot の項目は stable の版のものです。

ドット絵が拡大されるときに、見え方を決める設定

ドット絵が拡大されるときに、見え方を決める設定1フィルターUnity は Filter Mode、Godot はテクスチャフィルターです。Point (no filter) と Nearest は、近くで見るとブロック状・ピクセル状に見えます。Bilinear は近くで見るとぼやけ、Linear は近くで見ると滑らかに見えます2拡大の倍率Godot の Stretch Scale Mode は、既定の fractional では 2.5 のような小数の倍率も使い、integer では 2.5 を 2.0 に切り下げます。Unity の Pixel Perfect Camera は、解像度の変化に合わせてビューポートを拡縮するために Unity が要る計算を、すべて行います3画面に出るドット絵640×360 のビューポートを 1366×768 の窓に出すと、fractional では約 2.133 倍になり、拡大が不均一になります。integer では 1280×720(倍率 2 倍)で表示され、残りの空間は黒帯になります
図1

Unity の Filter Mode と、2D Pixel Perfect の準備と設定

Filter Mode は、スプライトのテクスチャの Import Settings にある項目です。テクスチャが 3D の変形で引き伸ばされるときに、Unity がテクスチャをどうフィルターするかを指定します。項目の値は、次のとおりです。

Unity の Filter Mode の値と見え方

値見え方
Point (no filter)近くで見ると、テクスチャがブロック状に見えます
Bilinear近くで見ると、テクスチャがぼやけて見えます
TrilinearBilinear と同じで、さらに、ミップマップの段階のあいだでもテクスチャがぼやけます
表1

Filter Mode のほかに、スプライトの Import Settings には Pixels Per Unit があります。スプライト画像の幅・高さのピクセル数のうち、ワールド空間の 1 距離単位に対応する数です。

Pixel Perfect Camera は、シーンのメインの Camera GameObject に付けるコンポーネントです。使う前の準備として、スプライトを取り込んだあとに、すべてのスプライトを同じ Pixels Per Unit の値にし、Inspector で Filter Mode を「Point」に、Compression を「None」にします。

2D Pixel Perfect の準備と設定

設定する場所項目値・内容
スプライトの InspectorPixels Per Unitすべてのスプライトを同じ値にします
スプライトの InspectorFilter Mode「Point」にします
スプライトの InspectorCompression「None」にします
Sprite EditorPivot「Custom」にし、Pivot Unit Mode を「Pixels」にします。ピクセルで座標を指定でき、Sprite Editor 上でドラッグするとピクセルの角に自動でスナップします。Sprite Mode が「Multiple」で複数のスプライト要素があるときは、要素ごとに pivot を設定します
Edit > Snap SettingsMove X/Y/ZPixel Perfect Camera の Asset Pixels Per Unit の値で 1 を割った値にします。たとえば Asset PPU が 100 なら、0.01(1 ÷ 100)です
Pixel Perfect CameraAsset Pixels Per Unitシーンの 1 単位を作るピクセル数です。シーンのすべてのスプライトの Pixels Per Unit と同じ値にします
Pixel Perfect CameraReference Resolutionアセットが設計された元の解像度です
表2

Pixel Perfect Camera と Cinemachine は、どちらも Camera の orthographic size を変えるので、1 つのシーンで一緒に使うと、カメラの制御を取り合い、おそらく望ましくない結果になります。この組み合わせには、仮想カメラに Cinemachine Pixel Perfect extension を足します。

Godot のテクスチャフィルター

Godot の CanvasItem には、テクスチャを描くときのフィルターを決める texture_filter プロパティがあります。ほかのノードの設定を引き継ぐ値も含めて、値は 0 から 6 までです。texture_filter の既定値は 0 です。表の定数名の TEXTURE_FILTER_ を外した部分を、本文では Nearest・Linear のように短く書きます。

Godot の CanvasItem のテクスチャフィルターの値

値定数名内容
0TEXTURE_FILTER_PARENT_NODECanvasItem が、親からフィルターを引き継ぎます
1TEXTURE_FILTER_NEAREST最も近いピクセルだけを読みます。近くで見るとピクセル状に、遠くで見ると(ミップマップを読まないため)ざらざらして見えます
2TEXTURE_FILTER_LINEAR最も近い 4 ピクセルをブレンドします。近くで見ると滑らかに、遠くで見ると(ミップマップを読まないため)ざらざらして見えます
3TEXTURE_FILTER_NEAREST_WITH_MIPMAPS最も近いピクセルを読み、最も近い 2 つのミップマップのあいだをブレンドします。近くで見るとピクセル状に、遠くで見ると滑らかに見えます
4TEXTURE_FILTER_LINEAR_WITH_MIPMAPS最も近い 4 ピクセルをブレンドし、最も近い 2 つのミップマップのあいだでもブレンドします。近くで見ても遠くで見ても滑らかに見えます
5・6「TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC」(5)・「TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC」(6)どちらも、面とカメラの向きの角度に基づいて、2 つのミップマップのあいだをブレンドします。5 は最も近いピクセルを読み、近くで見るとピクセル状に、遠くで見ると滑らかに見えます。6 は最も近い 4 ピクセルをブレンドし、近くで見ても遠くで見ても滑らかに見えます。どちらも、2D のプロジェクトでは、めったに役に立ちません
表3

ミップマップを使う値(3〜6)は、ProjectSettings の use_nearest_mipmap_filter が true のときは、2 つのミップマップのあいだをブレンドせず、最も近いミップマップを使います。ミップマップは、画面のピクセルより小さくなったピクセルを滑らかにします。

プロジェクト全体の設定には、たとえば次のものがあります。「rendering/textures/canvas_textures/default_texture_filter」は、CanvasItem の built-in texture の既定のフィルターです。下の snap の設定も、ドット絵の見た目に関わります。

snap_2d_transforms_to_pixel(既定値は false)は、true にすると、CanvasItem ノードが内部で整数のピクセルにスナップします。位置は小数のままでも、小数部分は効かず、丸められます。snap_2d_vertices_to_pixel(既定値は false)は、true にすると、CanvasItem ノードの頂点が整数のピクセルにスナップします。最終的な頂点の位置にだけ働き、transform には働きません。どちらも、見た目がくっきりする代わりに、動きが滑らかでなくなることがあり、Camera2D の smoothing を有効にしているとき、特にそうなります。どちらも、プロジェクトの開始時にだけ読まれます。

snap_2d_vertices_to_pixel と snap_2d_transforms_to_pixel を一緒に有効にすると、動きがいっそう滑らかでなくなることがあります。Control ノードは、既定で最も近いピクセルにスナップされ、gui/common/snap_controls_to_pixels で制御されます。

Godot の Stretch Mode と Stretch Scale Mode

Stretch の設定は Project Settings にあります。Stretch Mode は、基準のサイズを、窓や画面の解像度に合わせてどう拡大するかを決めます。Stretch Scale Mode は、自動で決まる倍率(手で指定した Stretch Scale の設定も)を整数に限るかどうかを決めます。

Godot の Stretch Mode と Stretch Scale Mode

設定値内容
Stretch ModeDisabled(既定)拡大しません。シーンの 1 単位が、画面の 1 ピクセルに対応します
Stretch ModeCanvas Itemsproject settings の幅と高さで指定した基準のサイズを、Stretch Aspect の設定を考慮して、画面全体に合わせて拡大します。すべてが、目標の解像度で直接描かれます。2D では、スプライトのピクセルと画面のピクセルの 1 対 1 の対応がなくなり、拡大のアーティファクトが出ることがあります
Stretch ModeViewportルートの Viewport の大きさを、Project Settings の Display の節の基準のサイズにちょうど合わせます。シーンをこのビューポートに先に描き、そのビューポートを、Stretch Aspect の設定を考慮して、画面に合わせて拡大します
Stretch Scale Modefractional(既定)2.5 のような小数の値を含め、どんな倍率も使います
Stretch Scale Modeinteger倍率を、最も近い整数に切り下げます。たとえば、2.5 の倍率は 2.0 になります
表4

Stretch Scale Mode は、Godot 4.2 からある設定です。基準のビューポートが 640×360 で窓が 1366×768 のとき、fractional ではビューポートが 1366×768 で表示され、窓の空間をすべて使います。倍率は約 2.133 倍で、ビューポートの 1 ピクセルが表示領域の 2.133×2.133 ピクセルに対応します。ディスプレイは整数のピクセルしか表示できないため、拡大が不均一になり、ドット絵の見え方が正しくなくなります。integer では 1280×720(倍率 2 倍)で表示され、ビューポートの 1 ピクセルが表示領域の 2×2 ピクセルに対応します。残りの空間は、4 辺すべてに黒帯として入ります。

ビューポートが 640×360 のときは、integer のスケーリングで、1280×720・1920×1080・2560×1440・3840×2160 に、黒帯なしで拡大できます。integer は、どの Stretch Mode でも効きます。ただし、Stretch Mode が Disabled のときは、Stretch Scale の設定を最も近い整数に切り下げるだけです。

ぼやけを直す前に確かめる手順

  1. Unity:ぼやけているテクスチャが、Texture Type を Sprite (2D and UI) にして取り込んだスプライトかを確かめます。Filter Mode と Pixels Per Unit は、その Texture Type の Import Settings の項目です。
  2. Unity:スプライトの Inspector で、Filter Mode が「Point」か(Bilinear だと近くで見たときにぼやけます)、Compression が「None」かを確かめます。
  3. Unity:すべてのスプライトの Pixels Per Unit が同じ値かを確かめ、Pixel Perfect Camera の Asset Pixels Per Unit にも同じ値を入れます。
  4. Unity:Pixel Perfect Camera をメインの Camera GameObject に付け、Reference Resolution に、アセットが設計された元の解像度を入れます。Run In Edit Mode を有効にすると、変更を Game ビューでプレビューできます。
  5. Godot:ぼやけているノードの texture_filter が Nearest(値は 1)かを確かめます。値が Parent Node(0)のときは、親から引き継ぎます。
  6. Godot:Project Settings の「rendering/textures/canvas_textures/default_texture_filter」の値を確かめます。「rendering/2d/snap/snap_2d_transforms_to_pixel」と「rendering/2d/snap/snap_2d_vertices_to_pixel」も、ドット絵の見た目に関わります。
  7. Godot:Stretch Mode が Viewport で、Stretch Scale Mode が integer のとき、倍率は最も近い整数に切り下げられます。fractional のときの見え方と見比べます。

失敗を避ける注意

Unity の Snap Settings は、後から適用されません。シーンにすでにある GameObject は、1 つずつ選んで Snap All Axes を押すと、Snap Settings が適用されます。

Nearest(1)は、ミップマップを読まないので、遠くで見ると、ざらざらして見えます。

Stretch Scale Mode を integer にすると、基準が 640×360 で窓が 1366×768 の例のように、残りの空間が黒帯になります。

Pixel Perfect Camera の Pixel Snapping(描くときに、Sprite Renderer をワールド空間の格子にスナップする項目)は、Upscale Render Texture(シーンを Reference Resolution か、それに近い大きさの一時的なテクスチャに描いてから拡大する項目)が無効のときだけ使えます。

素材そのものの用意は、素材の用意を条件から選ぶにあります。

次に読む

素材の用意を条件から選ぶ

情報源

このページに出た言葉

このページの内容の誤りは、問い合わせの窓口で受け付けています。