スプライトとテクスチャーの違いは何ですか?


27

私は大学に割り当てられる予定があり、私の仕事はビデオゲーム内で使用されるテクスチャとその進化を議論することです。

私の主な質問は、スプライトを使用することと、他のテクスチャーメソッドを使用することの基本的な違いは何ですか?

自分で少し研究した結果、スプライトは画像を単一のファイルに保存し、アニメーションなどに使用でき、一般的にすべてのゲームビジュアルとしてスプライトを使用する古いビデオゲームで一般的に使用されていたようです。現在、現代のゲームでは、テクノロジーが進歩し、バンプマッピングなどの他のテクスチャが利用できるようになったため、スプライトはあまり使用されない傾向にあります。スプライトは、ヘルスバーや長距離テクスチャなどの機能に対応するために今日でも使用されていますが。

しかし、スプライトよりもテクスチャを使用する主な利点は何ですか?



5
1つは飲み物で、もう1つは飲み物ではありません(このジョークはおa

回答:


37

結局のところ、スプライトとテクスチャは単なる画像-ラスターカラーデータのブロックです(ただし、非画像データを入れるために境界を少し押し込むこともあります)。違いは、主にそれらの使用方法にあります。

通常、画像(または多くの個別のピースを含む画像の一部)を、「スプライト」と呼びます。その目的が、遠近感の歪みなしに画面の2Dグリッドにまっすぐに描画される場合です。したがって、実行中のゲームで表示されるのは、基本的に画像ファイル自体で表示されるものです(カラーティント/パレットスワッピング/透明効果を除く)。これは、2Dゲームの背景タイルとキャラクター/インタラクティブオブジェクト、パーティクルなどの「ビルボード」カード、古いスタイルのツリー&低木レンダリング、および3Dゲームのユーザーインターフェイス要素とアイコンにも適用されます。

逆に、画像を使用して、遠近法で描画される3Dオブジェクトのポリゴンの表面の詳細を提供する場合、通常、その画像を「テクスチャ」と呼びます。その名前は、指先で感じることができる意味でテクスチャーではなくても、反射、歪みマップ、オーバーレイ、マスクなどの何かのレンダリングを調整するために、画像データの他の用途に引き継がれています私たちがより具体的に命名する気にならない画像の汎用的な使用は、私たちのゆるい命名法の「テクスチャ」の下に集中する傾向があります。

これにより、2つの境界があいまいになり、特に厳密ではなくなります。爆発効果のためにビルボード化されたパーティクルの描画に使用する一連の火と煙のプルームを含む画像がある場合、それを「スプライトシート」または「フリップブックテクスチャ」と同じように呼ぶことができます。または、2Dゲームのすべての背景タイルを含むタイルセットイメージがある場合、3Dゲーム用に開発されたアトラステクスチャとの類推により、2Dゲームでのデータと使用は区別できませんが、今日では「テクスチャアトラス」と呼ぶかもしれません他の誰かがスプライトシートと呼ぶものから。単一の画像を画面に表示することが目的のジオメトリの長方形がある場合、その使用について強調したいものに応じて、「テクスチャ付きクワッド」または「スプライト」と呼ぶことがあります。

(この最後の例では、「スプライト」はゲームアセットのソースイメージセグメントと、このイメージセグメントを使用するレンダリングされたゲームエンティティのインスタンスの両方を表していることに注意してください。

いくつかのエンジンとライブラリは、この区別をエンコードして意図を独自の命名法にエンコードします。たとえば、Unityでは、イメージアセットを「スプライト」としてインポートすることを選択できます。これにより、スプライトシートのスライシングとパッキングなど、UIイメージまたは2Dゲームアセットで一般的に望まれる追加のオプションセットが有効になります。シーンとオブジェクトのセットアップで、画像の一部を個別のエンティティとして使用します。これらの場合、「スプライト」は多くの場合「画像(テクスチャ)とメタデータ」を意味しますが、それでも通常のテクスチャと同じようにレンダリングされます。追加のパッケージングは​​便利なので、画像を使用するすべての場所でUVオフセットなどを管理する必要はありません。


「テクスチャ」には通常、透明ピクセルが含まれていますか、または許可されていますか?表面がカメラ軸に垂直であるかどうかに関係なく、透明なピクセルを「スプライト」として含むピクセルマップされた平面として動作するオブジェクトを考えます。
-supercat

2
彼らは確かに、彼らの「テクスチャ」タイトルをあきらめることなくできます。アルファテスト/ディザリングまたはアルファブレンドされた透明度でレンダリングされた場合でも、人々は「葉のテクスチャ」または「フェンスのテクスチャ」として、たとえば葉、またはチェーンリンクフェンスをレンダリングするための画像を参照することがよくあります。カメラに面したビルボードとしてレンダリングされる場合、リーフケースを「葉のスプライト」と呼ぶこともありますが、3Dフェンスのような遠近法ジオメトリで使用される場合、スプライト名を適用することはまれです。
DMGregory

テクスチャマッピングされた不透明なオブジェクトをレンダリングする場合、不透明な表面が内部を隠すため、レンダリングエンジンは内部がどのように表示されるかを心配する必要はありません。私は、不透明な部分を実行し、部分的に透明な部分を個別の部分的に透明な表面としてレンダリングすることにより、ツリーまたはチェーンリンクフェンスのようなものが最適にレンダリングされると思います。カメラに向かわない人が「スプライト」と呼ぶものと一致しない場合もありますが、「通常の」オブジェクトとは異なります。
-supercat

それは実際に通常行われている方法です。フェンスの支柱とトランクのジオメトリは不透明なパスでレンダリングされ、その後、フェンスのスパンと葉/小枝のジオメトリは、アルファテストまたはアルファブレンドパスでレンダリングされます。
DMGregory

1
通常、「透明テクスチャ」または「アルファテクスチャ」/「アルファ付きテクスチャ」が聞こえます。ハードエッジ/アルファテスト済みの透明度の場合、「カットアウト」/「カットアウトテクスチャ」となる場合があります。
DMGregory

7

スプライトは、コンピューターゲームの歴史からの遺物です。約8ビットのアタリを考えます。1980年。通常、カバレッジビットマスク(または特別な「透明」色)を使用した小さな画像。画面上に位置があり、特定の方法で画面に結合されます。カバレッジマップのとおり、スプライトに「穴」がある場所の穴。通常は「正常に動作する」方法で、通常は上書きされた元の画面ピクセルを保存および復元することにより、動き回るような錯覚を簡単に可能にします。

以前は、スプライトはコンピューターのハードウェア機能であり、画面の内容が自動的に保存された状態で描画/描画解除でき、非常に限られた数のスプライトしか使用できませんでした(重複しないように!) 、かつてはかなり小さく(16x16など)、制限されていました。

マウスカーソルは、最近ではスプライトに最も近いものです(10〜15年ほど前までは、一部のシステムでは実際のスプライトでした)。

今日、そのようなものは実際には存在しませんが、言葉は残っています。スプライトは、基本的にどこかに描画(合成)する小さな2D画像です。通常、小さなテクスチャ付きクワッドを描画します。

一方、テクスチャは、やや現代的なグラフィックスAPIで使用される読み取り可能なイメージの概念です。または、より正確には、何らかの手段を介してサンプリングできるサイズなどの追加のデータが関連付けられたメモリ領域(最新のAPIの用語では「バッファ」)。通常、グラフィックス処理ユニットで実行されるシェーダーによってではありません。通常、必ずしもそうではありませんが、正規化された座標を使用し、通常はフィルタリング(およびミップマッピング、および特定の境界モード、and、and、and ...)を使用します。

したがって、テクスチャは、スプライトの描画に使用するデータのソースになる場合があります。


3
適切なスプライトはハードウェアでオーバーレイされるため、メモリ内のビデオデータは変更されず、同じモードを使用する必要さえありません(たとえば、C64では、テキストの背景の上にビットマップスプライトを置くことができます)。ビットマップを保存してデータを置き換えることでレンダリングされるオブジェクトは、BOB(Blitter OBject)と呼ばれます。
サイモンリヒター

1
@SimonRichter:私はC64には慣れていませんが、おもちゃとしてのexecptですが、Amigaにもそれらがありました。ハードウェアレベルでどのように機能したかはわかりませんが、直接オーバーレイであった可能性もあります(可能性が高いようです)。STでは、A00D/ AOOCopcodeスプライトは確かにdraw / undrawフレームバッファーを変更する種類のものでした。BOB、はい、それも存在していた、典型的なAmigaのもの。それは現代のテクスチャに最も近いものだったと思います(どんなサイズでも、グラフィックプロセッサに1回アップロードし、何度も描画します)。
デイモン

4

それは一種のリンゴとオレンジの比較です。テクスチャは単なる画像ですが、スプライトは画像その使用方法です。

私たちはまだ2Dゲームにスプライトを使用していますが、3Dゲームではパーティクルエフェクトで表示されます。現在、スプライトは一般に、特定の種類のテクスチャ付きクワッド、または(まれに)単一の三角形を指します。多くの場合、UI要素でさえテクスチャ付きのクワッドです。これをスプライトと呼びます。

以前は、スプライトがメモリにプリロードされ、スタンプのように画面上のポイント(文字通り、画面メモリ)にブリット(バイト単位でメモリコピー)されていました。ある意味では、私たちはまだそうしています。スプライトアニメーションの場合、ソーステクスチャのサンプル座標を変更して、テクスチャからセグメントをコピーして四角形にレンダリングすることがよくあります。バンプマッピングなどのシェーダーエフェクトは、同じ方法でテクスチャからサンプリングされるため、たとえばスプライトのグローエフェクトに引き続き使用できます。

2Dゲームに特化した、スタイルの選択です。たとえば、スプライトを使用して、ゲーム内で手描きまたはペイントされたキャラクターを作成できます。技術的には、サウスパークのゲームがその一例です。

したがって、スプライトの代わりにテクスチャだけを実際に使用することはできません。


3

ここに簡単で短い答えがあります。私は通常、スプライトを、適用される機能やテクスチャと並んでオブジェクト全体と考えています。テクスチャに関しては、何かに適用できる画像にすぎないと考えています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.