残像を描画するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:ゲーム作成

残像を描画するには

【解説】

ゲームなどで弾やキャラクターが高速で移動している事を示すため、残像を描きたい場合があります。

残像とは、ざっくり言えば以下のように表示する事です。

残像説明1(画像URL:王国興亡記 様)

残像は半透明で描き、現在位置にある像は普通に描くと、リアリティがでます。例えば、半透明の残像を描く処理は、以下のようになります(クリックすると拡大します)。

残像説明2(画像URL:王国興亡記 様)

  1. 普通にキャラクターを描く
  2. 描いたデータを画像バッファに退避する
  3. 次回描画時に、退避したデータを画面に半透明で描く
  4. その上に普通にキャラクターを描く
  5. 以下、繰り返し・・・

PImage型の画像バッファは createImage() 命令で作成可能です。

画面に表示されている画像データを取得するには、loadPixels() 命令を発行して、PROCESSINGが用意している pixels[]  配列に、実行結果ウィンドウ全体の画像データを取り込みます。

取り込んだpixels[]  配列を画像バッファ( PImage オブジェクト)のpixels[]  配列に複写し、画像バッファ( PImage オブジェクト)が持つ updatePixels() メソッドで 反映します。

その後、画像バッファを tint() 命令で半透明にして、実行結果ウィンドウに描画すればOKです。

 

【構文】

画像領域作成
PImage  img  =  createImage( w,  h,  format ) ;

 

【パラメータ】

createImage()
w            :  int  : 作成領域のピクセル単位の幅
h             :  int  : 作成領域のピクセル単位の高さ
format  :  int  : 作成領域の形式。RGB, ARGB, ALPHA (グレイスケールのアルファチャンネル)のいずれかを指定します

 

【注意】

createImage() を用いることで、PImage型の画像領域を作成する事ができます。作成される領域の画素は初期状態で #00000000 になるようです。

pixels[]  配列の扱いについては「画像をピクセル単位で操作するには」記事を参照してください。

 

【関連記事】


サンプルプログラム

画像領域作成例:

縦横64ピクセルの画像領域を作成し、該当領域の各ピクセルをランダムな色で変更しています。

<出力サンプル>
createImageサンプル

 

残像描画例:

マウスクリックすると、左から右に向かって少年が移動します。少年の移動に伴い、残像が描かれます。

※上記サンプルは  kitao’s blog 様の記事とプログラムを参考に改編させて頂きました。ありがとうございます。

<出力サンプル:画像URL:王国興亡記 様>
残像

下記はサンプルプログラムをP5.jsで書き直したものです。マウスクリックすると動作イメージを確認できます。

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。