テクスチャ設定の編集

Tutorial

intermediate

+0XP

15 mins

Unity Technologies

テクスチャ設定の編集

このチュートリアルでは、3D モバイルアプリケーションにテクスチャをインポートする際に使用できる設定を確認します。

1. 概要

Unity ではテクスチャ設定を非常に簡単に編集できます。テクスチャ設定を編集するには、Project ビューで編集するテクスチャを選択します。「Inspector」ウィンドウに利用可能なすべての設定が表示されて構成できます。

テクスチャ設定を編集する場合のテクニックをご紹介します。

  • Texture Type」では、エンジン内でテクスチャをさまざまな方法で使用できるよう、テクスチャのタイプをコントロールできます。
  • Texture Shape」では、一部のテクスチャタイプに対して 2D ではなくキューブマップを選択できます。
  • テクスチャタイプによっては、2 つの追加設定が表示されます。
    • Texture Settings」には、必要に応じてテクスチャの機能を活用するための追加のコントロールが表示されます。
    • Advanced Settings」には、「sRGB」、「Alpha Source」、「Alpha Is Transparent」、「Read/Write Enabled」、「Generate Mip Maps」が表示されます。
  • Wrap Mode」は、テクスチャによる UV のラッピング方法を制御します。使用可能なオプションは次のとおりです。
    • Repeat」はテクスチャを並べて表示し、パターンを繰り返すために使用されます。
    • Clamp」は、テクスチャをエッジの最後のピクセルに固定します。
    • Mirror」は「Repeat」と似ていますが、テクスチャの繰り返しを 1 回おきにミラーリングします。
    • Mirror Once」は、テクスチャをエッジ ピクセルに固定する前に、テクスチャを 1 回ミラーリングします。
  • Filter Mode」は、テクスチャで使用されるフィルターを制御します。
  • テクスチャ圧縮ボックスでは、「Max Size」、「Resize Algorithm」、「Format」、「Compression」、「Use Crunch Compression」を制御できます。

2. ASTC 圧縮設定

ASTC テクスチャ圧縮は、OpenGL と OpenGL ES グラフィックス API の公式拡張機能です。ASTC を使用すると、アプリケーションで必要なメモリと、GPU で必要なメモリ帯域幅を削減できます。

ASTC は高品質で低ビットレートのテクスチャ圧縮が可能で、多くの制御オプションが用意されています。利用できる機能は次のとおりです。

  • ビットレートの範囲は 8bpp(bits per pixel)~ 1bpp 未満です。これにより、ファイルサイズと品質のトレードオフを微調整できます。
  • 1 ~ 4 つの色チャンネルをサポートしています。
  • ローダイナミックレンジ(LDR)とハイダイナミックレンジ(HDR)の両方の画像をサポートしています。
  • 2D 画像と 3D 画像をサポートしています。
  • さまざまな機能の組み合わせの選択をサポートしています。

次の図に、ASTC 設定ウィンドウを示します。

ASTC 設定ウィンドウには、多数のブロックサイズのオプションがあります。これらのオプションから、アセットに最適なブロックサイズを選択できます。大きいブロックほど、圧縮率が高くなります。カメラから遠い場所にあるオブジェクトなど、詳細なディテールが見えないテクスチャには、大きなブロックサイズを選択するのがベストです。カメラに近い場所にあるオブジェクトなど、詳細なディテールが見えるテクスチャには、小さなブロックサイズが最適です。

次の図には、さまざまなテクスチャ圧縮形式で使用できるブロックサイズを示しています。

注:お使いのデバイスが ASTC をサポートしている場合、3D コンテンツのテクスチャの圧縮には ASTC を使用してください。デバイスが ASTC をサポートしていない場合は、ETC2 を使用してください。また、3D コンテンツで使用するテクスチャと GUI 要素で使用するテクスチャは区別する必要があります。場合によっては、不要なアーティファクトを回避するために GUI テクスチャを圧縮しない方がよい可能性があります)

3. ASTC テクスチャに適した形式の選択

ASTC テクスチャを圧縮する際には、選択できるオプションがいくつかあります。

テクスチャ圧縮アルゴリズムには、通常は RGB や RGBA など、さまざまなチャンネル形式があります。ASTC は他にもいくつかの形式をサポートしていますが、それらの形式は Unity 内で公開されません。テクスチャの用途は一般的に、標準のテクスチャ、法線マッピング、スペキュラー、HDR、アルファ、ルックアップテクスチャなど、それぞれに異なります。可能な限りで最高の結果を達成するためには、このようなテクスチャタイプすべてに対して異なる圧縮形式が必要になるのです。

次の図に、テクスチャタイプのインポート設定の例を示します。

「Build Settings」では、テクスチャすべてを 1 つの形式で圧縮しないことを推奨します。お勧めの方法は、「Texture Compression」の値を「Don't Override」にすることです。

Unity では通常、テクスチャを「Texture」タイプとしてインポートします。このタイプで使用できる圧縮オプションは限られています。表示されるオプションを増やすには、タイプを「Advanced」に設定します。

次の画像に、ある程度の透明度が設定された GUI テクスチャの設定を示します。このテクスチャは GUI に使用するため、sRGB とミップマップは無効になっています。透明度を含めてアルファチャンネルにアクセスするために、「Alpha Is Transparency」と「Override for Android」ボックスを選択できます。

4. ブロックサイズ

形式とブロックサイズを選択するためのオプションがあります。RGBA には、アルファチャンネルが含まれています。4x4 が選択できる最小のブロックサイズです。

すべてのテクスチャに対して個別に具体的な設定をほどこすことで、プロジェクトのビジュアルクオリティーを改善できるだけでなく、圧縮時に不要なテクスチャデータの発生をも回避することができます。

次の表に、RGBA(8 ビットパーチャンネル)形式を使用している 4MB の 1024x1024 テクスチャに対して Unity で使用できる ASTC ブロックサイズの圧縮率を示します。

5. まとめ

モバイルデバイスで最適なパフォーマンスを実現するために微調整できるテクスチャの設定は多数あります。ブロックサイズ、形式、および圧縮設定の構成作業は最初は途方もないものに思えるかもしれませんが、粘り強く地道に取り組めば、これらのツールを使ってさまざまなシナリオやプラットフォームに合わせてアプリケーションを最適化できるようになります。次のチュートリアルでは、デモプロジェクトを見て、テクスチャアトラスがパフォーマンスに与える影響を確認します。

Complete this Tutorial