🐵

Unityのテクスチャインポート設定を理解しよう!(共通設定編)

2024/07/05に公開

🐧テクスチャのインポート設定の何が大事なのか?

テクスチャのインポート設定はテクスチャの用途によって適切に設定することで色々なメリットがあります。

  • パフォーマンスの最適化
    • テクスチャタイプを正しく設定することで、GPUやメモリの使用効率が向上し、ゲーム全体のパフォーマンスが向上します。
  • メモリ使用量の削減
    • 各テクスチャタイプには最適な圧縮方法が適用されるため、適切なタイプを選ぶことでメモリ使用量を最小限に抑えることができます。
    • 特に、モバイルデバイスなどリソースが限られている環境では重要です。
  • バグの防止
    • テクスチャタイプを正しく設定することで、誤ったフィルタリングやラップモードの設定によるアーティファクトを防止できます。
  • エディタおよびランタイムの効率化
    • エディタ内での作業効率が向上し、ゲームのランタイムパフォーマンスも最適化されます。
    • 特定のテクスチャタイプを使用することで、Unityが自動的に適切な最適化を行います。

設定を適切に行うだけで上記のようなメリットが得られます。
テクスチャのインポート設定を理解して、Unityプロジェクトでお役立てください。
この記事はUnity開発する人が最低限持っていてほしい知識というレベルの内容になります。
詳しいテクスチャの設定について知りたい方は下記URLの公式ドキュメントをご参照ください。
https://docs.unity3d.com/ja/2021.3/Manual/class-TextureImporter.html

🐧テクスチャ共通の設定項目を知ろう!

  • Unityプロジェクトに入っている画像(.png, .bmp, .jpgなど)を選択するとテクスチャのインポート設定画面が出てきます。
  • この画面の設定についてを見ていくことになります。

Texture Type

テクスチャの種類を設定します。
TextureTypeを適切に設定することで、プロパティを自動で設定してくれたり使用しないプロパティを隠したりしてくれるため、設定の誤りを防ぐことができます。
※各TextureType毎の設定は今回割愛します。

  • Default
    • 3Dオブジェクトの表面に貼り付ける標準的なテクスチャです。
    • ほとんどのプロパティを設定できます。
  • Normal Map
    • 表面の細かい凹凸をシュミレートするための特殊なテクスチャです。
    • 光の当たり方によって詳細な陰影を再現するために使用します。
  • EditorGUI and LegacyGUI
    • Unityエディター内で使用されるGUI要素用のテクスチャです。
  • Sprite(2D and UI)
    • 2DゲームのスプライトやUIで使用するテクスチャです。
  • Cursor
    • マウスカーソルに使用されるテクスチャです。
  • Cookie
    • Unityのライトの形状やパターンを制御する特殊なテクスチャです。
    • 特定の形状や模様をライトに投影でき、シーン内で独特な照明効果を実現するために使用します。
    • (木漏れ日、窓の格子模様など)
  • Light Map
    • ライティング情報を事前計算して格納するためのテクスチャです。
    • リアルタイムレンダリングの負荷を軽減するために使用します。
  • Single Channel
    • 特定の用途に対して1つのチャンネルのみを使用するテクスチャです。
    • メタリック、ラフネス、オクルージョンなど特定のシェーダーパラメータを格納して使用します。

Texture Shape (テクスチャ形状)

  • テクスチャの形状や構造について設定します。
  • 標準的な2Dテクスチャ、キューブマップなどの用途別に設定します。
  • 2D
    • 最も一般的なテクスチャ形状で2D画像として扱われます。
    • 2DゲームやUI、3Dモデルにマッピングするために使用します。
  • Cube
    • 環境マッピングや反射効果に使用されます。
    • 6つの面(上、下、左、右、前、後)で構成されています。
    • 使用例
      • リアルな反射効果をシュミレートするための環境反射マップ。
      • 全方向の風景を描写するスカイボックス
  • 3D
    • 3次元空間内の各ボクセルにデータを格納するテクスチャです。
    • 2Dテクスチャと違い、奥行き情報を持つためボリュームレンダリングに適しています。
    • 深度情報を持つため、視点によって異なる見え方ができます。
    • 使用例
      • 空に浮かぶリアルな雲のシミュレート。
      • 燃焼や爆発のシーンでリアルな煙の表現。
      • 水などの流体の動きのリアルな表現。
  • 2DArray
    • 同じサイズのの複数の2Dテクスチャを配列として扱う形状です。
    • シェーダー内で複数のテクスチャを効率的に参照でき、ドローコールの削減などに役立ちます。
    • 使用例
      • タイルマップ:複数のタイルテクスチャを一括で管理。
      • パーティクルエフェクト:複数のエフェクトテクスチャを効率的に使用。

Wrap Mode(ラップモード)

  • テクスチャの境界をどのように処理するかの設定です。
  • テクスチャのUV座標が0〜1の範囲外に出た場合の制御方法を設定します。
  • Repeat
    • テクスチャを繰り返し表示する設定です。
    • タイル状のパターンを作成するのに用います。
  • Clamp
    • テクスチャの端の色が引き伸ばされてる設定です。
  • Mirror
    • テクスチャが反転して繰り返し表示する設定です。
  • Mirror Once
    • 一度だけ反転して繰り返す設定です。

Filter Mode(フィルターモード)

  • テクスチャを拡大縮小した際に、どのようにピクセルをフィルタリングして表示するかの設定です。
  • 適切なフィルターモードを選択することで、テクスチャが鮮明で滑らかに表示されます。
  • Point
    • 最も基本的なフィルターモードで、拡大縮小した際に最も近いピクセルの色をそのまま使用します。
    • メリット
      • ピクセルの色を合成したりしないので処理が高速でパフォーマンスに優れます。
      • ドット絵を用いるゲームに最適です。
    • デメリット
      • ブロックノイズが目立ち、ギザギザした表示になります。
  • Bilinear(バイリニアフィルタリング)
    • 拡大縮小時に周囲の4つのピクセルの色を線形補完してして滑らかに表示されます。
    • メリット
      • ブロックノイズを抑え、処理も比較的軽いのでパフォーマンスも良いです。
    • デメリット
      • ミップマップレベル間の補間がないため、ミップマップ切り替えのギリギリの部分の表示に違和感が出る可能性があります。
  • Trilinear
    • バイリニアフィルタリングに加え、ミップマップレベル間の補間も行うことで更に滑らかに表示されます。
    • メリット
      • バイリニアフィルタリングより高品質になります。
    • デメリット
      • バイリニアフィルタリングより負荷が大きくなります。

Aniso Level(異方性フィルタリング)

  • テクスチャが鋭角で表示される際の品質を向上させる設定です。
  • 値を上げると品質が向上し、パフォーマンスに影響が大きくなります。

🐧各プラットフォームによる設定項目を知ろう!

Max Size(最大サイズ)

  • インポートするテクスチャの最大サイズです。

Resize Algorithm

  • テクスチャがMax Sizeにリサイズされる際に使用するアルゴリズムを設定します。
  • Mitchell
    • 滑らかなリサイズが行えます。品質寄り
  • Bilinear
    • よりシンプルで高速なリサイズが行えます。パフォーマンス寄り

Format

  • テクスチャがどのように圧縮され、ストレージに保存されるかを指定します。

  • 圧縮フォーマット

    • メモリ使用量を削減し、読み込み速度を向上させるために使用されます。
    • モバイルデバイスなどのプラットフォームで有効です。
  • 非圧縮フォーマット

    • 高品質なテクスチャ表示が必要な場合や、圧縮時のアーティファクトを避けたい場合に使用されます。
    • 圧縮しない分メモリ使用量は多くなりますが、最高品質のテクスチャを提供します。

代表的な圧縮フォーマット

圧縮フォーマット アルファチャンネル モバイル 特徴 主な用途
DXT1 × 高圧縮率 不透明テクスチャ
DXT5 ⚪︎ 高圧縮率、アルファサポート 半透明テクスチャ
ETC1 × ⚪︎ 高圧縮率、モバイル向け 不透明テクスチャ(モバイル)
ETC2 ⚪︎ ⚪︎ 高圧縮率、アルファサポート、モバイル向け 半透明テクスチャ(モバイル)
PVRTC 2bpp ⚪︎ ⚪︎ 超高圧縮率、低品質 モバイル向け低メモリ使用量
PVRTC 4bpp ⚪︎ ⚪︎ 高圧縮率、中品質 モバイル向け一般的な用途
ASTC ⚪︎ ⚪︎ 柔軟な圧縮率、高品質 高品質テクスチャ(モバイル・PC)
BC7 ⚪︎ × 高品質圧縮 高品質テクスチャ(PC)
BC5 × × 法線マップに最適 法線マップ
BC6H × × HDRイメージング HDRテクスチャ

代表的な非圧縮フォーマット

非圧縮フォーマット アルファチャンネル 特徴 主な用途
RGBA 32-bit ⚪︎ 高品質、高メモリ使用量 高品質なスプライトやUI要素
RGB 24-bit × 高品質、高メモリ使用量 不透明なテクスチャ
Alpha 8 ⚪︎ グレースケールのマスクや透明度に使用 マスクや透明度の表現
R 8 × 8ビットの赤チャンネルのみ 単色マスク、シンプルなデータストレージ

Compression(圧縮)

  • 圧縮の品質を設定します。
設定項目 品質 メモリ 特徴
None 最高 圧縮なし
Low Quality 最低品質、最低メモリ使用量、視覚的な劣化が目立つ
Normal Quality バランスの取れた品質とメモリ使用量、一般的な用途に最適
High Quality 高品質、圧縮によるアーティファクトが少ない、メモリ使用量多

Use Crunch Compression

  • ゲームのビルドサイズを小さくするための高圧縮率フォーマットです。
  • 大規模なテクスチャが多数含まれるプロジェクトで効果的です。

以上が共通のテクスチャインポート設定で使われる設定項目です。
各TextureTypeによる詳細な設定項目についは省略しています。
設定項目の内容を覚えておくことで適切なテクスチャの設定が行えますのでご参考ください。

Discussion