Texture コンポーネント
プロシージャルマテリアル

Texture (テクスチャ)

テクスチャは、視覚的なエフェクトを与えるためにゲームオブジェクトを覆ったり包んだりする画像やムービーファイルです。ここでは、テクスチャを管理するのに必要なプロパティーを説明します。

Unity は 3D プロジェクトの Assets フォルダー内の画像やムービーファイルはすべてテクスチャとして認識します。画像が後述のサイズ要件を満たしているなら、インポートや最適化ができます (オブジェクトに使用するシェーダーがすべて、サイズ要件を満たしている必要があります)。複数レイヤーの Photoshop や TIFF ファイルも使用できます。複数レイヤーはインポート時に統合されるので、ゲームの容量に関係ありません。統合化は PSD ファイル自体ではなく Unity 内部で行なわれ、任意なので、レイヤーに影響を与えずに PSD ファイルの保存やインポートを継続することができます。

プロパティー

以下の画像は Texture インスペクターウィンドウです。

インスペクターウィンドウは、Texture Importer と Preview の 2 つのセクションに分割されています。
インスペクターウィンドウは、Texture ImporterPreview の 2 つのセクションに分割されています。

テクスチャインポーター

テクスチャインポーターは、どのようにプロジェクトの Assets フォルダーから Unity に画像をインポートするかの方法を設定します。テクスチャインポーターにアクセスするには、Project ウィンドウで画像ファイルを選択すると、インスペクターウィンドウでテクスチャインポーターが開きます。

テクスチャインポーターの最初のプロパティーは Texture Type です。これで、画像のソースファイルから作成したいテクスチャ形式を選択します。

プロパティー: 説明:
Texture Type このテクスチャが何に使用されるのかを選択します。テクスチャインポーターの他のプロパティーは、この選択によって変化します。
Texture すべてのテクスチャで使用されるもっとも一般的な設定です。テクスチャインポーターのほとんどのプロパティーにアクセスすることができます。
Normal Map カラーチャンネルをリアルタイム法線マッピングに合った形式に変えます。ページ最後の インポートの詳細 セクションを参照してください。
Editor GUI テクスチャを任意の HUD/GUI 制御で使用します。
Sprite (2D and UI) テクスチャを 2D ゲームの スプライト として使用します。
Cubemap テクスチャをキューブマップとして使うために基本パラメーターを設定します。キューブマップは大抵、リフレクションを作成するために使用されます。詳細な情報については キューブマップテクスチャ を参照してください。
Cookie テクスチャをシーンの ライトクッキー として使うために基本パラメーターを設定します。
Advanced テクスチャのすべてのパラメーターにアクセスし、設定をカスタマイズします。

Texture Type: Texture

プロパティー: 説明:
Alpha From Grayscale 有効の場合、透明度用のαチャンネルが、画像に存在する明暗の値から生成されます。
Wrap Mode テクスチャのタイリング方法を選択します。
Repeat テクスチャ自体が繰り返し (タイリング) ます。
Clamp テクスチャの縁部分が伸長します。
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
Point 拡大したテクスチャをブロック状にします。
Bilinear 拡大したテクスチャをぼかします。
Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。
Aniso Level 急な角度から眺めたときのテクスチャ品質を向上させます。床や地面のテクスチャに適しています。ページ最後の Details セクションを参照してください。

Texture Type: Normal map

プロパティー: 説明:
Create from Greyscale 有効の場合、Bumpiness や Filtering オプションが表示されます。
Bumpiness バンプの強度を制御します。
Filtering バンプの強度を計算する方法を設定します。
        Smooth スムーズな法線マップを生成します。
        Sharp ゾーベルフィルターです。これにより標準よりシャープな法線マップを生成します。
Wrap Mode テクスチャのタイリング方法を選択します。
        Repeat テクスチャ自体が繰り返し (タイリング) ます。
        Clamp テクスチャの縁部分が伸長します。
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。
Aniso Level 急な角度から眺めたときのテクスチャ品質を向上させます。床や地面のテクスチャに適しています。ページ最後の Details セクションを参照してください。

Texture Type: Editor GUI

プロパティー: 説明:
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。

Texture Type: Sprite (2D と UI)

プロパティー: 説明:
Sprite mode スプライトグラフィックスがどのように画像から抽出されるかを選択します。
        Single 独立してスプライトイメージが使用されます。
        Multiple 複数の関連したスプライト(例えば、アニメーションフレーム)は同じパターンを使用します。スプライトエディターを起動するボタンも表示します。
Packing Tag このテクスチャがパックされるべき対象のスプライトアトラス名(必須ではない)です。
Pixels To Units ワールド座標における 1 距離単位に相当するスプライト画像イメージの幅/高さのピクセル数です。
Pivot スプライトのローカル座標における画像イメージの配置位置です(center, top-left, etc)。
Filter Mode 変形によって引き伸ばされる際に、テクスチャをどのようにフィルタリングするかを設定します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。

Texture Type: Cursor

プロパティー: 説明:
Wrap Mode テクスチャのタイリング方法を選択します。
        Repeat テクスチャ自体が繰り返し (タイリング) ます。
        Clamp テクスチャの縁部分が伸長します。
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。

Texture Type: Cubemap

キューブマップのインポート設定については キューブマップ を参照してください。

Texture Type: Cookie

シーンの視覚的なディテールを増加させる少し変わった方法が Cookie の利用です。これはゲーム内のライティングをより詳細に制御するためのグレースケールテクスチャで、雲の移動や生い茂った枝葉を作成するのに適しています。詳細はすべて Light ページで説明していますが、まず必要なのは Texture Type を Cookie に設定することです。これによりテクスチャを Cookie として使うことができるようになります。

プロパティー: 説明:
Light Type テクスチャに適用されるライティングの形式( Spotlight, Point, Directional Lights のいずれか)を設定します。Directional Lights の場合、テクスチャはタイリングされるので、テクスチャインスペクターで Edge Mode を Repeat に設定する必要があります。Spotlight では、cookie テクスチャの端を真っ黒にすると正しい効果が得られます。この場合、テクスチャインスペクターでは Edge Mode を Clamp に設定します。
Mapping (Point Light のみ) テクスチャに対して Point Light の球状に投影するようにマッピングします。
        Sphere Mapped テクスチャを “球状の” キューブマップにマッピングします。
        Cylindrical テクスチャをシリンダーにマッピングします。オブジェクトの鏡面をシリンダー状としたい場合に使用します。
        Simple Sphere テクスチャを球にマッピングします。回転する際に鏡面を変形します。
        Nice Sphere テクスチャを球にマッピングします。回転する際に鏡面を変形しますが、テクスチャのタイリングを見ることができます。
        6 Frames Layout テクスチャは 6 つの画像を交互や連続で並べる (+x -x +y -y +z -z)、標準的なキューブマップのレイアウトとして格納します。また、画像イメージの向きは、水平や垂直に変えることができます。
Fixup edge seams (Point Light のみ) マップイメージのつなぎ目を削除します。
Alpha from Greyscale 有効の場合、アルファ透明度チャンネルは、画像イメージの現在の明るさ/暗さの値にもとづいて生成されます。

Texture Type: Lightmap

プロパティー: 説明:
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。
Aniso Level 急な角度から眺めたときのテクスチャ品質を向上させます。床や地面のテクスチャに適しています。ページ最後の Details セクションを参照してください。

Texture Type: Advanced

プロパティー: 説明:
Non Power of 2 テクスチャサイズが 2 のべき乗以外のサイズの場合、インポート時のスケール動作を定義します。詳細についてはページの最後の Details セクションを参照してください。
        None テクスチャサイズは保持されます。
        To nearest テクスチャはインポート時にもっとも近い 2 のべき乗サイズにスケールされます。例えば 257x511 のテクスチャは 256x512 となります。PVRTC 形式では正方形である(幅と高さが同じ)必要があるため、最終的なサイズは 512x512 となります。
        To larger テクスチャはインポート時に、次に大きい 2 のべき乗サイズにスケールされます。例えば 257x511 のテクスチャは 512x512 となります。
        To smaller テクスチャはインポート時に、次に小さい 2 のべき乗サイズにスケールされます。例えば 257x511 のテクスチャは 256x256 となります。
Mapping このテクスチャからキューブマップを生成すべきかどうか。詳細は キューブマップ を参照してください。
Read/Write Enabled テクスチャデータをスクリプトからアクセスできるようにします(GetPixels、SetPixels、その他の Texture2D 関数)。注意することとして、作成されたテクスチャデータは、テクスチャアセットとして必要なメモリ量は倍となります。必ず、必要な場合のみ使用してください。これは非圧縮や DXT 圧縮のテクスチャでのみ有効であり、その他の圧縮テクスチャの種類では読みこむことができません。デフォルトでは無効となっています。
Import Type 画像イメージデータの扱いを設定します。
        Default 標準テクスチャです。
        Normal Map テクスチャを法線マップに設定します(他のオプションは無効化)。
        Lightmap テクスチャをライトマップに設定します(他のオプションは無効化)。
Alpha from grayscale (Default のみ)画像イメージの明るさ情報からアルファチャネルを生成します。
Create from grayscale (Normal Mapのみ) 画像イメージの明るさ情報からマップを作成します。
Bypass sRGB sampling (Default のみ) ガンマを考慮するのでなく、画像イメージどおりのカラーの値を使用します(テクスチャが GUI や非画像イメージデータをエンコードする方法として使用する場合に役に立ちます)。
Generate Mip Maps 有効の場合、ミップマップの生成が有効になります。ミップマップは、非常に小さいテクスチャです。詳細については、ページの最後の Details セクションを参照してください。
In Linear Space ミップマップをリニアカラー空間で生成します。
Border Mip Maps 有効の場合、色が下位のミップレベルの端ににじみ出ることがなくなります。ライト cookieに使用します (下記参照) 。
Mip Map Filtering イメージ品質を最適にするために、ミップマップフィルタリングには 2 種類の方法を用意しています。
        Box ミップマップをフェードアウトする最も簡単な方法です。ミップレベルは、サイズが小さくなるに連れ、より滑らかになります。
        Kaiser カイザーアルゴリズムによる鮮明化は、ミップマップ用の縮小画像を生成するときに実行されます。遠くのテクスチャがぼやけすぎている場合、このオプションを試してください。
Fade Out Mipmaps ミップレベルが上がるにつれて、ミップマップをグレーにフェードしたい場合は、これを有効にしてください。この設定は、セカンダリマップ(詳細マップ)で使います。スクロールの一番左は、フェードアウトを始める最初のミップレベルです。スクロールの一番右は、テクスチャが完全にグレーアウトするミップレベルを定義します。
Wrap Mode テクスチャのタイリング方法を選択します。
        Repeat テクスチャ自体が繰り返し (タイリング) ます。
        Clamp テクスチャの縁部分が伸長します。
Filter Mode 3D 変形で伸長される際に、テクスチャをどのようにフィルタリングするかを選択します。
        Point 拡大したテクスチャをブロック状にします。
        Bilinear 拡大したテクスチャをぼかします。
        Trilinear Bilinear に似ていますが、テクスチャを異なるミップレベル間でもぼかします。
Aniso Level 急な角度から眺めたときのテクスチャ品質を向上させます。床や地面のテクスチャに適しています。ページ最後の Details セクションを参照してください。

プラットフォームごとのオーバーライド

Texture Inspector ウィンドウには Platform-Specific Settings パネルがあります。

さまざまなプラットフォーム向けにビルドするとき、ターゲットプラットフォームにおけるテクスチャの解像度、サイズや品質を考慮する必要があります。Platform-Specific Settings パネルを使ってデフォルトとなるオプションを設定し (Default を使用)、それから、パネルの上部にあるボタンで特定のプラットフォーム用にオーバーライドします。

プロパティー: 説明:
Max Texture Size インポートされたテクスチャの最大サイズ。アーティストは、大きなテクスチャを扱いたい場合が多くあります。Max Texture Size で、テクスチャを適切なサイズに縮小します。
Texture Format テクスチャの内部表示を設定します。サイズを上げると画質が下がるというように、サイズと画質のトレードオフとなります。
        Compressed 圧縮された RGB テクスチャです。これは、デフューズテクスチャの最も一般的な形式になります。ピクセルあたり 4 ビット (256x256 テクスチャの場合は、32 KB)。
        16 bit 低画質 True Colorです。16 段階の赤、緑、青、アルファがあります。
        Truecolor これが一番画質のよい形式です。 256x256 サイズのテクスチャで 256KBになります。
        Crunched Crunch は DXT テクスチャ圧縮のうえ、不可逆圧縮形式です。実行時、テクスチャは CPU で DXT 形式に変換され、ランタイムに GPU にアップロードされます。 Crunch 圧縮は、ディスク上やダウンロード時に使用するスペース量をできるだけ少なくしたいときに役立ちます。Crunch テクスチャは、圧縮するのにかなり時間がかかりますが、ランタイムでの解凍はとても早いです。
Compression Quality Crunch テクスチャ圧縮では、スライダーを使って品質を調整することができます。高品質な圧縮には、より大きなテクスチャと、より長い圧縮時間が必要です。

Texture TypeAdvanced に設定している場合、 Texture Format は異なる値になります。

プロパティー: 説明:
Texture Format テクスチャに対して使用される内部表示です。サイズと画質間でのトレードオフとなります。下記の例では、256 x 256 ピクセルのゲーム内テクスチャの最終サイズを示しています。
        RGB Compressed DXT1 圧縮された RGB テクスチャ。これは、デフューズテクスチャの最も一般的な形式になります。ピクセルあたり 4 ビット (256x256 テクスチャの場合は、32 KB)。
        RGBA Compressed DXT5 圧縮された RGBA テクスチャです。これは拡散や鏡面反射のテクスチャを制御するのに使用される一般的な形式です。ピクセルあたり 1 バイト(256x256 に対しては 64 KB)。
        RGB 16 bit アルファなしの 65000 色です。圧縮された DXT 形式はメモリを削減し、通常は見た目もよいです。256x256 テクスチャに対して 128 KB 要します。
        RGB 24 bit トゥルーカラーですが、アルファは付きません。256x256 テクスチャに対して 192 KB を要します。
        Alpha 8 bit 高いクオリティのアルファチャンネルですが、色は付きません。256x256 テクスチャに対して 64 KB 要します。
        RGBA 16 bit 低品質のトゥルーカラーです。赤、緑、青、そしてアルファを 16 段階で持ちます。Compressed DXT5 形式はメモリを削減し、通常は見た目もよいです。256x256 のテクスチャで 128 KB 要します。
        RGBA 32 bit アルファのあるトゥルーカラーです。この形式が最高品質です。256x256 テクスチャに 256KB 必要なので、かなり高級です。ほとんどの場合、 DXT5 のほうが、はるかに小さいサイズで十分な画質を提供できますが、DXT 圧縮は目に見える画質損失が生じるため、この形式の主な用途は、法線マップです。
        RGB Crunched DXT1 ディスク上でサイズを小さくするためにクランチ後に圧縮する DXT1 圧縮です。
        RGB Crunched DXT5 ディスク上でサイズを小さくするためにクランチ後に圧縮する DXT5 圧縮です。

インポートの詳細

サポートされる形式

Unity は次のファイル形式を読み込みできます。 PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT, EXR, HDR です。Unity により複数レイヤーの PSD や TIFF ファイルも問題なくインポートできます。これらはインポート時に自動的に統合化されますが、レイヤーはアセット自体に保持されるため、これらのファイル形式をネイティブで使用するときにデータを失うことはありません。Photoshop、3D モデリングアプリケーション、Unity で使用するテクスチャがひとつだけで済ませることができます。

テクスチャサイズ

テクスチャサイズは幅と高さともに 2 のべき乗であることが理想です。相当するサイズは: 2,4,8,16,32,64,128,256,512,1024,2048 等のピクセルです。テクスチャは正方形である必要はありません、すなわち幅と高さが異なっても問題ありません。各プラットフォームにより最大テクスチャサイズによる制約があるかもしれないことに注意してください。詳細は Android の 2D テクスチャ オーバーライドiOS 2D テクスチャ オーバーライド のページを参照してください。DirectX では、機能レベルごとにサイズが異なります。

DirectX 機能レベル 最大テクスチャサイズ
9.1 2048
9.2 2048
9.3 4096
10.0 8192
10.1 8192
11.0 16384

注意: 現在、テクスチャ インポーターは 8k までのサイズを設定することができます。

Unity で他のテクスチャサイズ( 2 のべき乗でない - “NPOT”)を使用することも可能です。2 のべき乗でないテクスチャサイズは一般的により多くのメモリを使用し、GPU による読み込みが遅くなるため、パフォーマンス観点ではできるかぎり 2 のべき乗サイズを使用すべきです。もしプラットフォームの GPU が NPOT テクスチャサイズをサポートしない場合、Unity はテクスチャに対してスケールやパディングをして次に近い 2 のべき乗サイズに変更し、これによりさらにメモリが使用され読み込みが遅くなります(実際には古い Android デバイスで発生します)。一般的には 2 のべき乗以外のサイズは GUI 用にのみ使われます。

2 のべき乗でないサイズのテクスチャアセットは、Import Settings の Advanced Texture Type にて Non Power of 2 オプションを使用して、インポート時に拡大できます。

UV マッピング

3D モデルに 2D テクスチャをマッピングするとき、UV マッピングと呼ばれる一種のラッピングが行なわれます。これは 3D モデリングアプリケーションで行なわれます。Unity の中で マテリアル を使用してテクスチャのスケールや移動ができます。法線マップやセカンダリマップ(詳細マップ)のスケールは特に役に立ちます。

ミップマップ

ミップマップはかなり小さくした画像イメージを複数集めた一覧であり、これによりリアルタイム 3D エンジンでのパフォーマンスを最適化します。カメラから遠く離れたオブジェクトはテクスチャの小さいものを使用します。ミップマップを使用すると 33% 多くメモリを使用しますが、使用しないとパフォーマンスのロスが顕著になります。ゲーム内で使用するテクスチャでは常にミップマップを使用すべきで、唯一の例外は小さくすることのないテクスチャです (例えば GUI テクスチャ、スカイボックス、Cursor、Cookie)。ミップマップは、テクスチャのエイリアシングやちらつきを避けるためにも重要です。

Normal map

法線マップは、ローポリゴンのモデルがよりディテールがあるように見せるために法線マップシェーダーによって使用されます。Unity は RGB 画像としてエンコードされた法線マップを使用します。グレースケールの高低マップの画像から法線マップを生成する方法もあります。

セカンダリマップ(詳細マップ)

Terrainを作成するとき、一般的にはメインテクスチャを使用して草、岩、砂などのTerrainを表示します。もしTerrainが大きいと、非常にぼやけて見える場合があります。ディテールテクスチャはメインテクスチャがすぐ近くになるとこれを隠すように小さなディテールをフェードインして表示します。 ディテールテクスチャを描画するとき、中間のグレーが透明であり、白の場合はメインテクスチャを倍の明るさとし、黒の場合はメインテクスチャを完全な黒にします。 詳細は セカンダリマップ(詳細マップ)& 詳細マスク ページを参照してください。

リフレクション (キューブマップ)

反射マップにテクスチャを使用したい場合 (例えば リフレクションプローブ やキューブマップにした スカイボックス)、 Cubemap Texture Type を選んでください。詳細は キューブマップ を参照してください。

異方性フィルタリング

異方性フィルタリングは、グレージング角から表示されたときに、画質を向上させます。このレンダリングはグラフィックスカードのリソースに負荷をかけます。異方性のレベルを上げるのは、地面と床のテクスチャの画質を向上させるにはよい方法です。画質設定 では、異方性フィルタリングは、すべてのテクスチャに強制的に実行するか、完全に無効に設定できます。

地面テクスチャに使用される非異方性 (左)/最大異方性(右)フィルタリング
地面テクスチャに使用される非異方性 (左)/最大異方性(右)フィルタリング
Texture コンポーネント
プロシージャルマテリアル