[ 前へ | 目次 | 次へ ]

スプライト描画

レンダラーが描画を行う方法には、これまでに扱ってきた直接描画の他に、 スプライト描画という方法が存在します。ここでは、このスプライト描画について説明します。


スプライト描画

スプライト描画とは、本来ゲームなどでの2DCG 全盛期に、ハードウェアで実装されていたスプライト描画という機能を、 ソフトウェア的に実装したものです。 スプライト描画の概念は、アニメ映像の制作過程における、 セル画の概念と非常によく似ています。 具体的には、まず描画する図形や画像の数だけ、 スプライト(またはスプライト)と呼ばれる「層」をレンダラーに登録しておきます。 そして、描画時にそれらのスプライトをレンダラーで重ねて合成し、1 枚の絵を生成します。

スプライト描画が特に威力を発揮するのは、 アニメーション処理などを行う時です。 例えば、アニメーションの中に、動く図形(や画像)と動かない図形があったとしましょう。 この場合、1 回の画面に表示する絵を直接描画で用意すると、まず背景をクリアし、 そして全ての図形をdraw系関数で描画しなければなりません。そこでスプライト描画を使用すると、 最初に全ての図形をスプライトとして登録しておき、あとは毎回の描画時に、 動かしたいスプライトだけを動かせば済むので、プログラムの記述が簡単になりますし、 処理速度の面でも有利となります。

スプライト描画と直接描画は、組み合わせて使用する事も可能です。 それにはレンダラーを複数用意し、あるレンダラーの描画したグラフィックスデータを、 別のレンダラーにスプライトとして登録する、またはdrawGraphics で描き込むなどの方法を使用します。 適材適所でそれぞれの描画方法を組み合わせる事で、効率的なプログラミングが可能となります。

スプライトの基本操作

直接描画と異なり、スプライトはプログラム実行中に動かしたり、 色を変えたりなど、動的に活用します。 そこで、具体的なスプライトの生成を扱う前に、 スプライトを動的に活用するための基本操作について述べておきます。

スプライトの生成

実際のスプライトには様々な種類のものがありますが、それらは全てnew〜Sprite 関数で生成し ます。〜の部分にはスプライトの種類に固有の名称が入ります。具体的な生成は次章で扱います。

- 関数仕様 -
void new〜Sprite ( 〜 )

この関数は、スプライトを生成し、そのスプライトに固有の識別番号を返します。

スプライトの登録

生成したスプライトは、レンダラーに登録しなければ描画されません。 レンダラーにスプライトを登録するには、mountSprite 関数を使用します。

- 関数仕様 -
void mountSprite ( int SpriteID, int rendererID )

最初の引数SpriteID には、登録するスプライトのスプライトID を指定します。 スプライトID とは、スプライトに割り振られる識別番号で、 後に述べるスプライト生成関数が戻り値として返します。 続く引数rendererID には、登録先レンダラーのID を指定します。

スプライトの描画

レンダラーにすべてのスプライトを登録したら、 それらのスプライトを重ね合わせて合成し、1 枚のグラフィックスに描画する必要があります。 これには paintGraphics2D 関数を使用します。

- 関数仕様 -
void paintGraphics2D ( int rendererID )

引数のrendererIDには、レンダラーのIDを指定します。 この関数をコールするまで、スプライトの合成は行われないのでご注意ください。


この階層の目次
お知らせ

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
開発元Twitterアカウント