GPG雑学:ゲームで使う画像サイズはなぜ2の乗数なのか?(上)
こんにちは。
先日、知り合いの人気ブロガーK先生(仮名)に
このブログを見せました。
K先生(大学教授、人気ブロガー、イケメン?)
K先生は僕のブログをしっかり読んくださり、
こうフィードバックしてくれました。
・・・
確かに、難しい内容が下手な説明で
更に分かりにくいな、と感じられます。
そういうわけで、
今日は少し軽いテーマで話してみたいと思います。
知っておいたら良い、知らなくても良い(どうでも良い)
ゲーム制作の豆知識
今日の話は 画像サイズ です。
ゲーム業界に長く努めたデザイナーさんなら
ゲームで使う画像を作るとき、大体こんなサイズで
納品することが分かります。
「256 x 256」 「512 x 512」 「1024 x 1024」 ...
この数字の共通点は
2の乗数で表現できる定数です。
プログラマーには親密な数字ですが
感覚的に複雑に見えます。
それより 「500 x 500」 や 「1000 x 1000」 の方が
分かりやすくて良さそうです。
Q:こんな複雑な数字で合わせないと
いけないですか?
A:いいえ、実は2の乗数にしなくても
特に問題はありません。
ただし、使っては良くない数字ならあります。
ゲーム会社に働いているプログラマーHさん
ある日、Hさんに2枚の画像ファイルが納品されました。
Hさんは、B.pngの 「520 x 520」 サイズが
どうしても気になってたまりません。
なぜでしょう?
実際に上の2つの画像を、メモリ上にロードすると
こうなります。
B.png が A.png の2倍になっています。
その理由は、コンピュータが画像を
どうやって処理しているのかに関係あります。
メモリは画像を載せる領域を確報するとき
2倍ずつ拡張する傾向があります。
大体こんな感じです。
つまり、メモリサイズは
2 → 4 → 8 → 16 → ... → 512 → 1024 → ...
の値で増えていきます。
A.png 「500 x 500」 は 「512 x 512」 の中に入りますが
B.png 「520 x 520」 は 「512 x 512」 を超えてしまうので
結局 「1024 x 1024」 まで拡張しないといけません。
Hさんが感じている不快感は、少しの差で
大きい無駄な領域ができてしまうことが原因です。
まるで20L袋にギリギリ入らないゴミを捨てるため
40Lの袋を用意する気持ちです。
サイズをどう決めるかによって、無駄な領域が
どのくらい出来てしまうのかが決まります。
サイズ事に発生する残り領域の例
そして、その無駄な領域を0にするサイズが2の乗数です。
そういうわけで、デザイナーさんは
効率良くメモリ容量を使うため
2の乗数の形でサイズを合わせてくれるのです。
※最悪のケースは、上の例みたいに
2の乗数をギリギリ超えるサイズです。
会社に嫌いなプログラマーが居たら
こういうサイズで画像を納品してみましょう
では、なぜコンピューターは2倍拡張する方法で
画像をメモリに載せるのでしょうか?
それは、コンピューターがイメージ処理するとき
効率よく計算するためです。
この話は次の記事で詳しく説明します。
先日、知り合いの人気ブロガーK先生(仮名)に
このブログを見せました。
K先生(大学教授、人気ブロガー、イケメン?)
K先生は僕のブログをしっかり読んくださり、
こうフィードバックしてくれました。
・・・
確かに、難しい内容が下手な説明で
更に分かりにくいな、と感じられます。
そういうわけで、
今日は少し軽いテーマで話してみたいと思います。
知っておいたら良い、知らなくても良い(どうでも良い)
ゲーム制作の豆知識
今日の話は 画像サイズ です。
ゲーム業界に長く努めたデザイナーさんなら
ゲームで使う画像を作るとき、大体こんなサイズで
納品することが分かります。
「256 x 256」 「512 x 512」 「1024 x 1024」 ...
この数字の共通点は
2の乗数で表現できる定数です。
プログラマーには親密な数字ですが
感覚的に複雑に見えます。
それより 「500 x 500」 や 「1000 x 1000」 の方が
分かりやすくて良さそうです。
Q:こんな複雑な数字で合わせないと
いけないですか?
A:いいえ、実は2の乗数にしなくても
特に問題はありません。
ただし、使っては良くない数字ならあります。
● 良くない数字とは? ●
ゲーム会社に働いているプログラマーHさん
ある日、Hさんに2枚の画像ファイルが納品されました。
Hさんは、B.pngの 「520 x 520」 サイズが
どうしても気になってたまりません。
なぜでしょう?
実際に上の2つの画像を、メモリ上にロードすると
こうなります。
B.png が A.png の2倍になっています。
その理由は、コンピュータが画像を
どうやって処理しているのかに関係あります。
● ビデオメモリの働き方 ●
メモリは画像を載せる領域を確報するとき
2倍ずつ拡張する傾向があります。
大体こんな感じです。
つまり、メモリサイズは
2 → 4 → 8 → 16 → ... → 512 → 1024 → ...
の値で増えていきます。
A.png 「500 x 500」 は 「512 x 512」 の中に入りますが
B.png 「520 x 520」 は 「512 x 512」 を超えてしまうので
結局 「1024 x 1024」 まで拡張しないといけません。
Hさんが感じている不快感は、少しの差で
大きい無駄な領域ができてしまうことが原因です。
まるで20L袋にギリギリ入らないゴミを捨てるため
40Lの袋を用意する気持ちです。
サイズをどう決めるかによって、無駄な領域が
どのくらい出来てしまうのかが決まります。
サイズ事に発生する残り領域の例
そして、その無駄な領域を0にするサイズが2の乗数です。
そういうわけで、デザイナーさんは
効率良くメモリ容量を使うため
2の乗数の形でサイズを合わせてくれるのです。
※最悪のケースは、上の例みたいに
2の乗数をギリギリ超えるサイズです。
では、なぜコンピューターは2倍拡張する方法で
画像をメモリに載せるのでしょうか?
それは、コンピューターがイメージ処理するとき
効率よく計算するためです。
この話は次の記事で詳しく説明します。
※ 元ブログから移転された記事です。
コメント
コメントを投稿