「スプライト」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
2行目: 2行目:
  
 
主に[[ゲーム]]で使われる技術であり、キャラクターを表示する際に背景をくり抜いて表示することをいう。その他にも動画の字幕などにも使われている。大雑把にいえば[[Photoshop]]などの[[ペイントソフト]]によくある「[[レイヤー]]」とほぼ同じ概念である。
 
主に[[ゲーム]]で使われる技術であり、キャラクターを表示する際に背景をくり抜いて表示することをいう。その他にも動画の字幕などにも使われている。大雑把にいえば[[Photoshop]]などの[[ペイントソフト]]によくある「[[レイヤー]]」とほぼ同じ概念である。
 
「透明色付き画像の表示」とでも覚えておけばいい。
 
 
 
==専用ハードウェアでの実装==
 
==専用ハードウェアでの実装==
 
初期の[[コンピューター]]では[[ハードウェア]]の機能としてスプライトが用意されており非常に高速に処理することができた。拡大縮小や回転などをサポートするハードウェアも多く、それらも含めスプライトと呼ばれた。
 
初期の[[コンピューター]]では[[ハードウェア]]の機能としてスプライトが用意されており非常に高速に処理することができた。拡大縮小や回転などをサポートするハードウェアも多く、それらも含めスプライトと呼ばれた。
  
 
専用ハードウェアによるスプライトは[[ファミコン]]や[[スーパーファミコン]]、[[PCエンジン]]、[[メガドライブ]]などの世代までの[[家庭用ゲーム機]]でよく使われた。
 
専用ハードウェアによるスプライトは[[ファミコン]]や[[スーパーファミコン]]、[[PCエンジン]]、[[メガドライブ]]などの世代までの[[家庭用ゲーム機]]でよく使われた。
 
 
==GPUでの実装==
 
==GPUでの実装==
近年の[[コンピューター]]ではスプライトが[[ハードウェア]]で実装されていることはほぼない。
+
近年の[[コンピューター]]ではスプライトが[[ハードウェア]]で実装されていることがほぼない。代替手段として[[GPU]]による高速化を期待して以下のような手法が使われる。
 
 
その代替手段として[[GPU]]による高速化を期待し以下のような手法が使われる。
 
* [[平行投影]]かつ真上見下ろしの3Dのシーンを用意する
 
* そこにスプライトに相当する[[テクスチャ]]を貼り付けた四角形の[[ポリゴン]]を表示する
 
  
この手法は初代[[プレイステーション]]でよく使われた。ハードウェアスプライトのない[[プレイステーション]]の初期の[[ゲーム]]は後述のソフトウェア実装が使われており、2Dゲームに限れば[[セガサターン]]より劣化していることが多かった。後にこの手法が考案されてからは一気に逆転することとなった。
+
*[[平行投影]]かつ真上見下ろしの3Dのシーンを用意する
 +
*そこにスプライトに相当する[[テクスチャ]]を貼り付けた四角形の[[ポリゴン]]を表示する
  
 +
この手法は初代[[プレイステーション]]でよく使われた。初期の[[プレイステーション]]の[[ゲーム]]はハードウェアスプライトがないため2Dゲームは[[セガサターン]]より劣化していることが多かったが、この手法が考案されてからはその差はなくなった。
 
==ソフトウェアでの実装==
 
==ソフトウェアでの実装==
 
専用ハードウェアも[[GPU]]もない[[コンピューター]]では以下のような手順で[[ソフトウェア]]的に合成する。[[PC-9801]]や[[PC/AT]]、[[DirectX]]登場以前の[[フレームワーク]]の弱かった時代の[[Windows]]などでよく使われた。
 
専用ハードウェアも[[GPU]]もない[[コンピューター]]では以下のような手順で[[ソフトウェア]]的に合成する。[[PC-9801]]や[[PC/AT]]、[[DirectX]]登場以前の[[フレームワーク]]の弱かった時代の[[Windows]]などでよく使われた。
  
 
;準備するもの
 
;準備するもの
*背景画像
+
 
*表示画像 = 透明部分を「0」で埋めた画像
+
#背景画像
*マスク画像= 透明部分を「1」、非透明部分を「0」で埋めた1ビットの画像
+
#表示画像 = 透明部分を「0」で埋めた画像
 +
#マスク画像= 透明部分を「1」、非透明部分を「0」で埋めた1ビットの画像
  
 
;手順
 
;手順
#背景画像とマスク画像を[[ビット]]単位で[[AND演算]]する
+
 
#:透明部分は背景がそのまま残り、画像を描画したい部分だけが0でクリアされる。
+
*背景画像とマスク画像を[[ビット]]単位で[[AND演算]]する
#表示画像と背景画像を[[ビット]]単位で[[OR演算]]する
+
*:透明部分は背景がそのまま残り、画像を描画したい部分だけが0でクリアされる。
#:画像のピクセル列は前の操作で背景が消された領域にぴったりとはまる。
+
*表示画像と背景画像を[[ビット]]単位で[[OR演算]]する
 +
*:画像のピクセル列は前の操作で背景が消された領域にぴったりとはまる。
  
 
最近の[[フレームワーク]]では表示画像の特定色を透明色として設定しておけば、マスク画像を用意しなくても自動的に合成してくれるものばかりなので、上記のような手順で合成することは少ないと思われる。
 
最近の[[フレームワーク]]では表示画像の特定色を透明色として設定しておけば、マスク画像を用意しなくても自動的に合成してくれるものばかりなので、上記のような手順で合成することは少ないと思われる。
 
== 関連項目 ==
 
* [[MonoGameで直線を描画する]]
 
* [[R-TYPE I (PCエンジン)]]
 
* [[ボンバーマンクラブ]]
 
* [[NetGore]]
 
* [[Live2D]]
 
 
[[カテゴリ:画像処理]]
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)