GameProgrammar's Night

ゲームプログラム系の覚え書き

UMG用にテクスチャアトラスマテリアルを作る

※ UE4.13から、Paper2DスプライトがUMGで使えるようになりましたので、このマテリアルは必要なくなりました

katze.hatenablog.jp

 上の記事の続きです。
 
 前回は急ぎであまり検討できなかったので固定サイズからの切り出しまででしたが、ようやく任意サイズの切り出しができるようになりました。
 以下の画像の通りです。なお、TextureSourceは指定しているテクスチャの全体像です。

f:id:katze_7514:20160412221932j:plain

 切り出したい範囲(画像上部:SpriteRect)とテクスチャサイズ(画像下部:TextureWidth/TextureHeight)を指定すれば、その範囲が表示されます。UV値ではなくピクセルサイズで指定します。
 SpriteRectはVector4Parameterにしています。RGにRectの左上位置、BAにRectのサイズ(幅・高さ)を入れます。

 行っている計算は、描画したいサイズがUVとして(0.0,0.0)~(1.0,1.0)になるように拡大してから、描画原点をズラします。最後にUV値になるようにテクスチャサイズで割っています。

 プレビューは正方形ポリゴンなので縦横比が崩れていますが問題ありません。
 マテリアルをUMGのImageWidgetに設定して、ImageWidgetのサイズを設定し「SizeToContent」にチェックを入れれば、ドットバイドットで表示されます。

f:id:katze_7514:20160412224804j:plain

 あとは、マテリアルインスタンスにして、UMGで使う画像の数だけインスタンスを用意して使います。

f:id:katze_7514:20160426145821j:plain