【Unity】Sprite用のテクスチャを作る(2019.3)

f:id:Effect-Lab:20191116025200p:plain

 

こんにちは。

 

UnityのSprite機能を使う必要が出てきたので、Sprite用のテクスチャについて調べた事を書きたいと思います。

 

 

Sprite用テクスチャをつくる方法

Spriteを使う場合は、テクスチャのTexture Typeを「Sprite(2D and UI)」に変更します。

f:id:Effect-Lab:20191114010710p:plain

 

これでApplyボタンを押せばテクスチャがSprite用になります。
Projectタブで下図のような表示になっていればOKです。

f:id:Effect-Lab:20191114022408p:plain

f:id:Effect-Lab:20191114022410p:plain

  

必要な設定はこれだけですが、もし下図のようにアルファで抜かれたテクスチャであれば、Alpha Sourceが「Input Texture Alpha」に、Alpha is Transparencyが「有効」になっている事を確認します。

f:id:Effect-Lab:20191114015923p:plain

f:id:Effect-Lab:20191114015755p:plain

 

アルファ情報を保持したpngやtgaを使う場合は忘れずに確認しておきましょう。
もしアルファを使わない場合はAlpha Sourceを「None」にしておくとファイルサイズが減るので、必要に応じて切り替えるのがいいと思います。


補足ですが、Spriteは0か1かの2値化したテクスチャだけでなく、ボカしたテクスチャも使用する事ができます。

 

 

 

Spriteはメッシュになる

Spriteは普通のテクスチャと違い、アルファ値0の部分を削った状態のメッシュに変換されます。

 

下図は同じSpriteをワイヤーフレーム表示した状態です。

f:id:Effect-Lab:20191115002000p:plain

f:id:Effect-Lab:20191115002005p:plain

 

エフェクトでは通常、描画面積を減らすためにメッシュを自作してそれにテクスチャを貼りますが、自動でメッシュ化してくれるのはありがたいですね!

 

 

Spriteのメッシュ分割数を減らす方法はある?

ワイヤーフレームの画像を見て思った方もいるかもしれませんが、自動生成されたメッシュは細かく分割されているため、たいぶ頂点数が多いですね。

 

頂点数を減らす方法は2つあります。
1つはSprite用テクスチャの解像度を減らす方法、もう1つは手動で頂点数を減らす方法です。

 

1つ目の「テクスチャの解像度を減らす方法」を見ていきましょう。
同じテクスチャでも、単純に解像度を減らすだけで下図のように大きく頂点数が削減されます。

f:id:Effect-Lab:20191115010020p:plain

 

でも、頂点数のために解像度を犠牲にしなければならないのはちょっと残念ですね。そういう時には2つめの「手動で頂点数を減らす方法」も試してみましょう。

 

手動で減らすには、SpriteのInspectorから「Sprite Editor」をクリックします。

f:id:Effect-Lab:20191227033059p:plain

 

すると専用のタブが開くので、左上の項目から「Custom Outline」を選びます。

f:id:Effect-Lab:20191227033117p:plain

 

するとメニューが切り替わるので、「Generate」を押します。

f:id:Effect-Lab:20191227033130p:plain

 

Genarateを押すと、下図のように自動で単純なポリゴンに割ってくれます。

f:id:Effect-Lab:20191227033152p:plain

 

ここでの主要な操作は以下になります。

  • 頂点の追加:メッシュのアウトラインにマウスカーソルを合わせて左クリック
  • 表示の拡大縮小:マウス中ホイールスクロール
  • 表示箇所の移動:中クリック + 移動 

 

頂点をポチポチ追加したり移動したりして調整したのがこちらになります。

f:id:Effect-Lab:20191227033205p:plain


調整できたらメニューの「Apply」ボタンを押して変更を保存します。

f:id:Effect-Lab:20191227033216p:plain


これでSceneビューを見てみると、先程は頂点数が多かった1024x1024のスプライトも、下図のように256x256とほぼ変わらない数まで減らす事ができました!

f:id:Effect-Lab:20191227033226p:plain


「これいいじゃん!」と思いたいところですが、この手法には1つ欠点があります。それは、「Spriteの絵柄を変えてもメッシュの形状が変わらない」です。

 

当たり前っちゃ~当たり前ですよね。
せっかく手動で調整したものが、テクスチャを調整する度に勝手にリセットされてしまったら困りますもんね。

 

ただ、テクスチャを調整する度に毎回手動でポリゴン調整するのは大変なので、もしこの機能を使う場合は制作の最終段階、「もうテクスチャは触らないし少しでも処理負荷を減らしたい」って時に行うのがいいように思います。

 

 

おわりに

今回はSpriteテクスチャの基本で大事そうな部分について書いてみました。
自動で無駄な描画を省いてくれたり、手動でもコントロールできたりと便利な機能ですね。 

次回は今回作ったSpriteを実際にシーンに置いて、ソート順のコントールとマスク処理について書いてみたいと思います。