1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【pygame】smoothscaleを使わない理由 is 何?

Posted at

image.png

はじめに

 先日ゲーム制作中に、smoothscaleというものを使ったのですが、何気にこれってめちゃくちゃ大事じゃね?と気づきました。そこで、初心者や、pygameを普段使わない人向けに、簡単な紹介をしようと思います。

smoothscaleとは

 smoothscaleは通常のscaleと同様に、画像を拡大、縮小するためのメソッドです。以下のように使うことができます。Surfaceが画像のことです。

scaled_surface = pygame.transform.smoothscale(Surface, (width, height))

これを見て気づいた方も多いと思いますが、pygame.transform.scaleとは、使い方も手間も一緒です。つまり、普段使っているscaleの前にsmoothという6文字を入れるだけで、拡大、縮小後の画像が、ワンランク上の仕上がりになります。

記事の冒頭にも載せてありますが、実際に画像を拡大し比較したものです。

image.png

 scaleを使った画像の方は、なんだか画質が悪いような感じがしませんか?あるいは、それに見慣れている人は、smoothscaleを使った画像の画質が特別良いと感じるでしょうか。いずれにせよ、smoothscaleを使った方が、きれいな仕上がりになっているということが、お分かりいただけると思います。

 付け焼き刃の知識ですが、一応説明っぽいものを置いておきます。scaleを使って普通に拡大、縮小を行うと、ジャギーというギザギザが生じてしまうので、仕上がりが少し残念になります。一方、smoothscaleを使うと、拡大縮小だけでなく、名前の通り滑らかにしてくれます。これにより、ジャギーが気にならない、きれいな仕上がりになるというわけです。この点から、smoothscaleの方は計算コストが高いという点をデメリットとして挙げられます。しかし、個人でゲームを作っている分には全く気にならない程度なので、基本的にはsmoothscaleを使う方針で問題ないと考えています。

あまりに大量の画像を読み込む場合や、ゲームループ内で繰り返し画像を読み込む場合には、パフォーマンスに影響することがあるかもしれません。もしパフォーマンスに影響が生じたときは、優先度の低い画像からscaleに置き換えていくのが良いでしょう。

使い方の補足

 他にはdest_surfaceという引数があります。これを指定することで、新しく生成するのではなく、指定したSurfaceに上書きする形で生成できます。しかし、指定する先のSurfaceのサイズと形式を合わせる必要があるので、以下のように手順が多くなります。

width = 128
height = 128
source_surface = pygame.image.load('test.png')
scaled_surface = pygame.Surface((width, height)).convert(source_surface)
pygame.transform.smoothscale(Surface, (width, height), dest_surface = scaled_surface)

サイズを合わせないといけないので、元の画像を破壊的に変更するような使い方はできなそうです。

画像の拡大縮小を多用するときは、こちらの方法を使った方が、効率が良いと説明が載っていたので、場合によっては使ってみるといいかもしれません。

まとめ

 特に理由がなければ、scaleよりもsmoothscaleを使ったほうがゲームの見た目が良くなる!今すぐ置き換えよう!

最後に

 ここまで読んで下さりありがとうございました。smoothscaleはだいぶ前から使ったことがあったのですが、そこまで大きく拡大や縮小をしていなかったので、今まで真価に気づいていませんでした。ゲームって見栄えで印象が全然変わってくると思うので、pygameでゲームを作る際には、必須の知識だと思います。ぜひ皆さんもお試しください。

 また、他にも拡大縮小のメソッド自体がいくつかあるので、場面ごとに最善を求める方は、参考に貼ってあるページを覗いてみると良いかもしれません。(そのようなレベルの方は既に見ているでしょうし、筆者より知識もあると思いますが)

参考

日本語訳

原文

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?