ほとんどの主要なゲームエンジンがアニメーションテクスチャにgifを使用しないのはなぜですか?


28

アニメーションシートまたはGifを使用する方が良いですか?アニメーションシートに対するGifsの利点の1つは、コードと適切なティックの更新のために、フレームが速すぎたり遅すぎたりすることを考える必要がないことです。

Gifを使用する場合の短所と、Gifsを超えるアニメーションシートの利点は何ですか?


7
次に、「ほとんどの主要なゲームエンジンがアニメーションテクスチャにgifを使用しないのはなぜか」などの質問に言い換える必要があります。少なくとも私が知っている限り、彼らは一般的ではないので、正当な理由があります。それはなぜ使用されないのか、それよりも良い質問であり、SEサイトには適切ではないという技術的なポイントを与えると思います。
コバーン

39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slowどうして?あなたはその仮定を何に頼っていますか?図書館?ファイル形式の仕様は?gifファイルはまだデータであり、それを解釈するためのコードが必要です(正しい速度でレンダリングする)
hoffmale

13
hoffmaleが言ったこと。GIFは魔法ではありません。それらのアニメーションは、タイミングを含むいくつかのソフトウェアで制御および実行する必要があります。この場合、そのソフトウェアはユーザーが作成します。正直なところ、アニメーションシートの処理コードがGIFの処理コードと大幅に異なるとは思わないでしょう。
モニカと軽さレース

12
スプライトシートとGIFコードの唯一の違いは、GIFコードがGIFをスプライトシートに変換してからスプライトシートコードを呼び出すことです;)
MickLH

6
gifには利点はありません。フレーム間圧縮が必要な場合、gifは適切なビデオコーデックよりも約30倍効率が悪くなりますが、品質が低下します(フォトリアリスティックな場合)。
セージボルシュ

回答:


91

GIFの欠点:

  • 非常に限られたカラーパレット、通常は256いディザリングを伴う256色(はい、アニメーションGIFには256色を超えることができますが、これは一般的ではありません)
  • GPUはハードウェアでのGIF圧縮をサポートしていません(とにかくCPUで展開する必要があることを意味します)
  • 透明性のために1色のみを選択できます(カスタム処理を実装していない場合)
  • ランダムアクセスなし。フレームにアクセスするには、先行するすべてのGIFフレームを読み取って解凍する必要があります。
  • 圧縮されています。コードには専用の解凍機能が必要です。別の(より良い)圧縮アルゴリズムを選択することはできません。(はい、非圧縮GIFも存在しますが、これはまれです)

カスタム形式では、これらすべてのアイテムが非常に迅速に解決されます。画像フォーマット、品質、透明度、ランダムアクセス、および圧縮(GPUでサポートされているDXT同様のフォーマットを含む)をさらに制御できます。さらに良いことに、必要な機能に優先順位を付けることができます。

アニメーションシートに対するGifsの利点の1つは、コードと適切なティックの更新のために、フレームが速すぎたり遅すぎたりすることを考える必要がないことです。

上記の記述は誤解を招くものです。GIF fpsと実際のゲームfpsの同期は、カスタムスプライトアニメーションの同期とほとんど変わりません。どちらの場合も、フレームのリスト、目的のフレームレート、レンダリングイベントなど、まったく同じセットアップがあります。GIFには魔法の粉はありません。とにかくGIFをスプライトシートに解凍する必要がありますが、これは目的に反します。

もちろん、一部のゲームエンジンはGIFの問題の一部をカーテンの後ろに隠している場合がありますが、スプライトシートでも同じように改善できます。

GIFファイルでしいくつかのいくつかの例がある、と述べた種類の仕事のが。たとえば、HTML / CSS GUIがありますが、これらは非常にまれであり、それ自体でリソースを消費します。


「透明性のための1色」がわかりません。透明性のために複数の色を持っているとはどういう意味ですか?テクスチャ全体に透明度のグラデーションを適用するなど、アルファ値を変えることについて話していますか?
エリック

3
@Erikまさにそれ。一般的なGIFは最大256色をサポートしますが、そのうち1つだけを透明としてマークできます。通常、透明度の範囲がはるかに広い他の形式とは異なります。
Kromsterは、サポートモニカ

@Kromster実際、リソースに精通したサイトbackground-imageは、アニメーションが1つの大きな画像に合わせられ、オフセットによって移動されるCSS 位置アニメーションなど、アニメーション画像にカスタムアニメーションメカニズムを使用します。
トマーシュザト-復帰モニカ

@TomášZato本当。申し訳ありませんが、私はそうではないと述べましたか?
Kromsterは、サポートモニカ

2
@ luk32は、古いGIF圧縮よりもはるかに優れた圧縮方法があるため、欠点です。したがって、次善のGIF圧縮を使用するか、2回の(圧縮解除)圧縮を行います(通常、すでに圧縮されたデータを圧縮すると、サイズも大きくなります)。
Kromsterは、サポートモニカ

32

画像ファイルをゲームのテクスチャとして使用するには、GPUでテクスチャを作成し、画像ファイルのピクセルデータをそのテクスチャにロードする必要があります。

GPU 、CPU上のイメージファイルがサポートする多くの機能をサポートしていません。それらはJPG圧縮をサポートせず、PNG圧縮をサポートしません。また、GIFを特に参照して、自動アニメーションをサポートしません

そのため、GIFファイルを使用した場合でも、とにかく独自のアニメーションとタイミングコードを記述する必要があります。GIFは何も提供しません。


30
「CPU」はこれらのことをサポートしていないことに注意してください、ウェブブラウザとオペレーティングシステムはサポートしています。
user253751

7
何、まだGPGPU Webブラウザを書いた人はいませんか?
カミーユグードセヌ

7
@CamilleGoudeseuneあなたは笑います。私は泣く。
3Dave

13

GIFのカラーパレットには制限があります。(255)GIFの解析とアニメーション化も実装する必要があります。そのため、時間や形式の技術的側面に進歩はありません。


4
透明性が不要な場合は256、それ以外の場合は255。
CVn

@MichaelKjörling透明度はまだ256です-色の1つだけが「透明」と指定されています。情報はヘッダーに保存されていると思います。
-3Dave

@DavidLivelyしたがって、「効果的」です。色はまだありますが、不透明色として使用することはできません。
CVn

@Kromsterええ。削除しました。良い数学ができます。
3Dave
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.