イメージのインポート

なぜそれらをインポートするのですか?

Godot 3+ では、イメージファイルはネイティブリソースではなくなり、インポートする必要があります。その背景には、イメージファイルをインポートできる構成パラメータが大量に含まれることが理由です。

この小さなチュートリアルでは、これらのパラメータが何であるか、およびそれらを最大限に活用する方法について説明します。

テクスチャのインポート

Godotのデフォルトのアクションは、イメージをテクスチャとして読み込む方法です。テクスチャはビデオメモリに格納され、直接アクセスすることはできません。それはそれらを効率的に描く為です。

インポートオプションは豊富です:

../../../_images/image_import1.png

3Dの検出(Detect 3d)

このオプションを使用すると、3Dでテクスチャ(これはデフォルトとして2D用にインポートされます)が使用されていることをGodotに認識させることができます。この場合、設定が変更され、テクスチャフラグが3D(ミップマップ、フィルタ、および繰り返しが有効になり、圧縮がVRAMに変更されます)によりわかりやすくなります。テクスチャも自動的に再読み込みされます。

サポートされている画像形式

Godotは、次の画像形式をインポートできます:

  • BMP (.bmp) - No support for 16-bit per pixel images. Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported.
  • DirectDraw Surface (.dds) - ミップマップがテクスチャに存在する場合、それらは直接ロードされます。これは、カスタムミップマップを使用してその効果を実現するために使用できます。
  • OpenEXR (.exr) - HDRをサポートします(パノラマスカイ用に強くお勧めします)。
  • Radiance HDR (.hdr) - HDRをサポートします(パノラマスカイ用に強くお勧めします)。
  • JPEG (.jpg.jpeg) - フォーマットの制限に従って透明度はサポートしていません。
  • PNG (.png) - インポート時のチャンネルごとの精度は8ビットに制限されます(HDR画像なし)。
  • Truevision Targa (.tga)
  • SVG (.svg, .svgz) - SVGは、インポート時に NanoSVG を使用してラスタライズされます。サポート内容は限られています: 複雑なベクトルは正しくレンダリングされない場合があります。複雑なベクトルの場合、Inkscapeを使用してPNGにレンダリングする方が多くの場合、より優れたソリューションです。この作業は、Inkscapeの `コマンドラインインターフェイス https://wiki.inkscape.org/wiki/index.php/Using_the_Command_Line#Export_files>`__ を使って自動化できます。
  • WebP (.webp)

注釈

特定のモジュールを無効にしてソースからGodotエディタをコンパイルした場合、一部の形式が利用できない場合があります。

圧縮

画像は、ゲーム内で最大のアセットの 1つです。それらを効率的に処理するには、圧縮する必要があります。Godot は、ユースケースに応じて、いくつかの圧縮方法を提供します。

圧縮モード(Compress Mode)

  • VRAM Compression: これは3Dアセットの最も一般的な圧縮モードです。ディスク上のサイズが削減され、ビデオメモリの使用量も大幅に削減されます(通常は1/4〜1/6)。このモードは、顕著なアーティファクトを示すため、2Dでは使用しないでください。
  • Lossless(ロスレス) Compression: これは2Dアセットで最も一般的な圧縮です。これは、人為的な影響を受けずにアセットを表示するものであり、ディスク圧縮は適切です。ただし、VRAM圧縮よりもかなり多くのビデオメモリを使用します。
  • Lossy(非可逆圧縮) Compression: これは、大きな2Dアセットに適しています。いくつかのアーティファクトがありますが、VRAMより小さく、ファイルサイズはLosslessまたはUncompressedに比べて数分の1の小ささです。このモードでは、ビデオメモリの使用量は減少しません。 Lossless CompressionまたはUncompressedと同じです。
  • Uncompressed(圧縮なし): 圧縮できないフォーマット(raw floatなど)にのみ役立ちます。

この表では、4つのオプションのそれぞれについて、それぞれの長所と短所と共に説明しています(|良い|=ベスト、|悪い|=最悪):

  圧縮なし ロスレス圧縮(PNG) 非可逆圧縮(WebP) VRAMを圧縮
説明 未加工のピクセルとして保存 PNG形式で保存 WebP形式で保存 プラットフォームに応じてS3TC/BCまたはPVRTC/ETCとして保存
ディスク上のサイズ |悪い|大きい |普通|小さい |良い|非常に小さい |普通|小さい
メモリ使用量 |悪い|大きい |悪い|大きい |悪い|大きい |良い|小さい
パフォーマンス |普通|通常 |普通|通常 |普通|通常 |良い|高速
品質損失 |良い|なし |良い|なし |普通|わずか |悪い|中程度
読み込み時間 |普通|通常 |悪い|遅い |悪い|遅い |良い|高速

HDRモード(HDR Mode)

Godotは、高ダイナミックレンジテクスチャ(.HDRまたは.EXR)をサポートしています。これらは、Godot 2.xのキューブマップに代わる、高ダイナミックレンジの正距円筒(equirectangular)のパノラマスカイ(インターネットを検索すればたくさんあります)として非常に便利です。最近のPCはBC6H VRAM形式をサポートしていますが、まだサポートしていないものがたくさんあります。

テクスチャの種類に関してGodotに完全な互換性を確保する場合は、[RGBEを強制する]オプションを有効にします。

ノーマルマップ(Normal Map)

テクスチャをノーマル(法線)マップとして使用する場合は、赤と緑のチャンネルのみが必要です。通常のテクスチャ圧縮アルゴリズムのノーマルマップではある程度の見栄えの悪いアーティファクトが生成されるため、RGTC圧縮形式がこのデータに最適です。このオプションを「有効」に強制すると、GodotはRGTC圧縮として画像をインポートします。デフォルトでは、「検出」に設定されています。つまり、テクスチャがノーマルマップとして使用されると、「有効」に変更され、自動的に再インポートされます。

RGTC圧縮は、結果として得られるノーマルマップイメージに影響することに注意してください。これを考慮するには、ノーマルマップを使用するカスタム シェーダを調整する必要があります。

注釈

Godot requires the normal map to use the X+, Y- and Z+ coordinates. In other words, if you've imported a material made to be used with another engine, you may have to convert the normal map so its Y axis is flipped. Otherwise, the normal map direction may appear to be inverted on the Y axis.

More information about normal maps (including a coordinate order table for popular engines) can be found here.

フラグ(Flags)

使用状況に応じて、イメージをテクスチャとして読み込むときに切り替えることができる設定が多数あります。

リピート(Repeat)

この設定は3Dで最も一般的に使用されるため、通常2Dでは無効になっています。 0,0~1,1の範囲を超えて「ループ」するUV座標を設定します。

リピートは、必要に応じてミラー (mirrored)モードに設定できます。

フィルタ(Filter)

テクスチャのピクセルが画面のピクセルより大きくなると、このオプションは線形補間を有効にします。その結果、より滑らかな(ブロックの少ない)テクスチャが得られます。この設定は2Dおよび3Dで一般的に使用できますが、ピクセルパーフェクト(テクスチャの画素と画面の画素が1対1)なゲームを作成する場合は通常無効になっています。

ミップマップ(Mipmaps)

ピクセルが画面よりも小さくなると、ミップマップが始まります。これにより、テクスチャを縮小する際の粒状効果を低減するのに役立ちます。古いハードウェア (GLES2、主にモバイル) では、ミップマップを使用する要件がいくつかあります:

  • テクスチャの幅と高さは 2 のべき乗でなければなりません(16、32、64、256など)
  • リピートを有効にする必要があります

携帯電話向けにゲームやアプリケーションを作成する際には、上記の注意を要し、完全な互換性を目指し、ミップマップが必要です。

3Dを実行する場合は、パフォーマンスも向上するので、ミップマップをオンにする必要があります(テクスチャの小さいバージョンは、遠くのオブジェクトに使用されます)。

異方性(Anisotropic)

テクスチャがビューとほぼ平行(床など)の場合、このオプションを使用すると、不鮮明さが軽減され、テクスチャがより詳細になります。

SRGB

Godotは、3Dレンダリング時に線形色空間を使用します。アルベドまたは詳細チャネルにマップされたテクスチャは、色が正しく表示されるために、このオプションをオンにする必要があります。 "Detect" モードに設定すると、アルベド チャネルで使用するとテクスチャがSRGBとしてマークされます。

プロセス(Process)

テクスチャとしてインポートする場合、いくつかの特別なプロセスを画像に適用できます。

アルファ境界線を修正する(Fix Alpha Border)

これにより、同じ周囲の色のピクセルが透明から非透明に移行します。 Photoshopなどから画像をエクスポートするときに、アウトライン効果を軽減するのに役立ちます。

../../../_images/fixedborder.png

特定の値が必要ない限り、既定のままにしておくことをお勧めします。

乗算済みアルファ(Premultiplied Alpha)

暗くなった境界線を修正する別の方法は、乗算済みアルファを使用することです。 このオプションを有効にすると、テクスチャはこのフォーマットに変換されます。 必要なキャンバスアイテムにPREMULT ALPHAブレンドモードを使用するマテリアルを作成する必要があることに注意してください。

HDR as sRGB

いくつかのHDRファイルには壊れたsRGBカラーデータが含まれています。そのようなファイルを使用しないことをお勧めしますが、最悪の場合、このオプションをオンに切り替えると正しく表示されるようになります。

色の反転

画像の色を反転します。これは、たとえば、外部プログラムによって生成された高さマップを Spatial(空間)マテリアル で使用する深度マップに変換する場合に便利です。