(57)【要約】【課題】  描画対象物の回転演算処理における三角関数の処理時間を極めて小さくすることで、ＣＰＵの負担を軽減することができる画像描画方法ならびに装置を提供する。【解決手段】  ステップＳＢ１、ステップＳＢ２、ステップＳＢ３およびステップＳＢ４において、描画対象物の回転が必要か、これから回転を開始するのか、回転の継続か、の回転状態の判定を行う。ステップＳＢ５、ステップＳＢ６およびステップＳＢ７において、描画対象物の回転角とこれに対応する三角関数の演算結果である回転結果テーブルを選択し、ステップＳＢ８で描画対象物のピクセルの回転後の表示位置の座標を求め、ステップＳＢ９でピクセルをメモリに描画する。【選択図】  図６
2005099313.tif 000002
【特許請求の範囲】
【請求項１】
表示対象物を回転させたときの各ピクセルの表示位置の座標を、属性データに基づいて求め、求めた座標にしたがって回転後のピクセルをメモリに描画する画像描画方法において、
予め設定した回転角θについてｓｉｎ ｎθ（ｎは正の整数）およびｃｏｓ ｎθの値を回転角テーブルとしてメモリに記憶させておき、
回転開始時点の回転角を０とし、以後、表示フレーム毎に回転角をθ、２θ、３θ、・・・として前記ピクセルを回転させた場合の回転後のピクセルの座標を、前記属性データに含まれる回転中心座標および前記メモリ内のデータを使用して演算し、
該演算結果に基づいてピクセルをメモリに描画することを特徴とする画像描画方法。
【請求項２】
予め前記回転角テーブルを複数種類設け、前記属性データにテーブル種類を指示するテーブル種類データを設定し、前記テーブル種類データが指示する回転角テーブルを使用して回転後のピクセルの座標を演算することを特徴とする請求項１に記載の画像描画方法。
【請求項３】
前記属性データに切替周期を設定し、前記表示フレームが前記切替周期の数だけ表示される毎に回転後のピクセルの座標を求める演算を実行し、演算結果に基づいて回転後のピクセルをメモリに描画することを特徴とする請求項１または請求項２に記載の画像描画方法。
【請求項４】
表示対象物を回転させたときの各ピクセルの表示位置の座標を、属性データに基づいて求め、求めた座標にしたがって回転後のピクセルをメモリに描画する画像描画装置において、
予め設定された回転角θについてｓｉｎ ｎθ（ｎは正の整数）およびｃｏｓ ｎθの値を記憶する回転角テーブルと、
回転開始時点の回転角を０とし、以後、表示フレーム毎に回転角をθ、２θ、３θ、・・・として前記ピクセルを回転させた場合の回転後のピクセルの座標を、前記属性データに含まれる回転中心座標および前記回転角テーブル内のデータを使用して演算する演算手段と、
前記演算手段の演算結果に基づいてピクセルをメモリに描画する書込手段と、
を具備することを特徴とする画像描画装置。
【請求項５】
前記回転角テーブルを複数種類具備し、前記演算手段は、前記属性データに含まれるテーブル種類を示すテーブル種類データが指示する回転角テーブルを使用して回転後のピクセルの座標を演算することを特徴とする請求項４に記載の画像描画装置。
【請求項６】
前記属性データが切替周期を含み、前記演算手段は、前記表示フレームが前記切替周期の数だけ表示される毎に回転後のピクセルの座標を求める演算を実行することを特徴とする請求項４または請求項５に記載の画像描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はゲーム機などに用いる画像描画方法および装置に関する。
【背景技術】
【０００２】
従来の画像描画装置では、描画対象物を回転させる場合にはωを回転の角速度、tをフレームの表示時間間隔として角度をθ＝ω×tと表し、回転前のピクセルの座標を(X，Y)、回転後のピクセルを(X'，Y')、回転の中心座標を(Rx，Ry)として[数１]の数式を使い、演算を行っていた。ここで、従来技術では［数１］中の三角関数の演算を毎フレーム繰り返していた。
【０００３】
【数１】
2005099313.tif 000003
【０００４】
さらに、フレーム内に回転を行う描画対象物が複数あるケースでは三角関数の演算回数はこれらの積に相当するため、ＣＰＵ(中央処理装置)に負担をかける問題点がある。
なお、従来の図形を回転させる技術として、特許文献１に記載されるものが知られている。
【特許文献１】特開平１０−１４９４４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は上記の事情を考慮してなされたもので、その目的は描画対象物の回転演算処理における三角関数の処理時間を極めて小さくすることができ、これにより、ＣＰＵの負担を軽減することができる画像描画方法および装置を提供することにある。
【課題を解決するための手段】
【０００６】
この発明は前述の課題を解決するためになされたもので、請求項１の発明は、表示対象物を回転させたときの各ピクセルの表示位置の座標を、属性データに基づいて求め、求めた座標にしたがって回転後のピクセルをメモリに描画する画像描画方法において、予め設定した回転角θについてｓｉｎ ｎθ（ｎは正の整数）およびｃｏｓ ｎθの値を回転角テーブルとしてメモリに記憶させておき、回転開始時点の回転角を０とし、以後、表示フレーム毎に回転角をθ、２θ、３θ、・・・として前記ピクセルを回転させた場合の回転後のピクセルの座標を、前記属性データに含まれる回転中心座標および前記メモリ内のデータを使用して演算し、該演算結果に基づいてピクセルをメモリに描画することを特徴とする画像描画方法である。
【０００７】
請求項２に記載の発明は請求項１に記載の画像描画方法において、予め前記回転角テーブルを複数種類設け、前記属性データにテーブル種類を指示するテーブル種類データを設定し、前記テーブル種類データが指示する回転角テーブルを使用して回転後のピクセルの座標を演算することを特徴とするものである。
【０００８】
請求項３に記載の発明は請求項１または請求項２に記載の画像描画方法で、前記属性データに切替周期を設定し、前記表示フレームが前記切替周期の数だけ表示される毎に回転後のピクセルの座標を求める演算を実行し、演算結果に基づいて回転後のピクセルをメモリに描画することを特徴とするものである。
【０００９】
請求項４に記載の発明は画像描画装置であって、表示対象物を回転させたときの各ピクセルの表示位置の座標を、属性データに基づいて求め、求めた座標にしたがって回転後のピクセルをメモリに描画する画像描画装置において、予め設定された回転角θについてｓｉｎ ｎθ（ｎは正の整数）およびｃｏｓ ｎθの値を記憶する回転角テーブルと、回転開始時点の回転角を０とし、以後、表示フレーム毎に回転角をθ、２θ、３θ、・・・として前記ピクセルを回転させた場合の回転後のピクセルの座標を、前記属性データに含まれる回転中心座標および前記回転角テーブル内のデータを使用して演算する演算手段と、前記演算手段の演算結果に基づいてピクセルをメモリに描画する書込手段と、を具備することを特徴とするものである。
【００１０】
請求項５に記載の発明は請求項４に記載の画像描画装置において、前記回転角テーブルを複数種類具備し、前記演算手段は、前記属性データに含まれるテーブル種類を示すテーブル種類データが指示する回転角テーブルを使用して回転後のピクセルの座標を演算することを特徴とするものである。
【００１１】
請求項６に記載の発明は請求項４または請求項５に記載の画像描画装置において、前記属性データが切替周期を含み、前記演算手段は、前記表示フレームが前記切替周期の数だけ表示される毎に回転後のピクセルの座標を求める演算を実行することを特徴とするものである。
【発明の効果】
【００１２】
この発明によれば、三角関数の演算結果をあらかじめ画像描画装置内に用意し、描画データの回転の際にはこれを使うため、ホストＣＰＵの負担を軽減することができる効果がある。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照し、この発明の実施の形態について説明する。図１は本実施形態による画像描画装置の構成を示すブロック図である。図１において、符号１１はスプライトを構成するキャラクタの圧縮画像データがドットマトリクス形式で格納されているキャラクタＲＯＭ(Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ)である。符号１２はキャラクタＲＯＭ１１から読み出されたスプライトの圧縮画像データが一時記憶されるＦＩＦＯ（ファーストイン・ファーストアウト）メモリである。
【００１４】
符号１３は解凍エンジンであり、キャラクタＲＯＭ１１からＦＩＦＯメモリ１２を介して与えられる圧縮画像データを解凍して圧縮前の画像データ（カラーコードまたはＹＵＶ形式の画素値）に戻す。次いで、画像データがカラーコードである場合には、そのカラーコードをカラーパレット１４によってＲＧＢ（レッド・グリーン・ブルー）カラーデータに変換し、フリップフロップ１５を介して２面あるスプライトバッファＡまたはＢに書き込む。また、解凍後の画像データがＹＵＶ（輝度・色差）形式の画素値の場合は、ＹＵＶデコーダ１６によってＲＧＢカラーデータに変換し、フリップフロップ１５を介してスプライトバッファＡまたはＢに書き込む。この場合、スプライトバッファＡ、Ｂのいずれに書き込むかを指示するコントロールデータが解凍エンジン１３から出力される。
【００１５】
１８は描画エンジンであり、コントローラ１７からの指示に従ってスプライトバッファＡまたはＢからスプライトのＲＧＢカラーデータを読み出し、読み出したＲＧＢカラーデータにコントローラ１７から出力される指示データに基づき、回転結果テーブル２０を参照して回転等の変形処理を行い、次いで、コントローラ１７から出力される位置データが示すフレームバッファ１９のアドレスに、変形処理終了後のＲＧＢカラーデータを書き込む。フレームバッファ１９は２個のバンクによって構成され、交互に描画用バッファ、表示用バッファとして使用される。
【００１６】
コントローラ１７は、ホストＣＰＵ(図示略)から出力され、ＣＰＵインターフェイスブロック２１を介して供給される各種の指示（スプライト属性データ）をＳＲＡＭインターフェイスブロック２２を介してスプライト属性テーブル２３に書き込むと共に、その書き込まれたスプライト属性データに基づいて解凍エンジン１３および描画エンジン１８を制御する。また、コントローラ１７は、フレームバッファ１９からＲＧＢカラーデータを読み出し、ディスプレイインターフェイスブロック２４を介してディスプレイ装置（図示略）へ出力する。
【００１７】
次に、上述した実施形態の描画動作を図２に示すフローチャートを参照して説明する。図２のフローチャートでは、Ｎ個のスプライトをフレームバッファ１９に描画する例を示している。また、フローチャートの処理はフレーム周期で行われる。図１のコントローラ１７はステップＳＡ１においてフレームバッファ１９の２つのバンクの一方を描画用、他方を表示用に設定する。すなわち、前フレームで描画用になっていたバンクは表示用に設定され、前フレームで表示用になっていたバンクは描画用に設定される。次にコントローラ１７はステップＳＡ２〜ステップＳＡ６で図４のスプライト属性テーブル中に示されるすべてのスプライトに対して、先頭から順次処理を行う。
【００１８】
すなわち、コントローラ１７は、まず、内部のレジスタＳＰＮＯ（図示略）にデータ「１」を書き込む（ステップＳＡ２）。次に、スプライト属性テーブル２３にアクセスし、レジスタＳＰＮＯ内のデータ（この場合「１」）に対応する属性データ、すなわち、スプライト１の属性データを取り込む（ステップＳＡ３）。次に、その属性データが示すスプライト１のキャラクタのアドレスに基づいてキャラクタＲＯＭ１１にアクセスし、スプライト１のキャラクタを読み出す（ステップＳＡ４）。読み出されたキャラクタはＦＩＦＯ１２に記憶される。
【００１９】
次に、コントローラ１７は、解凍エンジン１３へ解凍指示を出力し、次いで、描画エンジン１８へスプライト１の属性データを出力して描画を指示する（ステップＳＡ５）。描画エンジン１８は、解凍エンジン１３によって解凍され、スプライトバッファＡ，Ｂに書き込まれたＲＧＢカラーデータに対し、属性データが指示する拡大、縮小、回転等のレンダリング処理を行った後、属性データに含まれる表示位置データに基づいてフレームバッファ１９の描画バンクに書き込む。この書込が終了した時点で、コントローラ１７はレジスタＳＰＮＯ内のデータが「Ｎ」であるか否かをチェックし（ステップＳＡ６）、「Ｎ」でなかった場合は、レジスタＳＰＮＯ内のデータに「１」を加算して（ステップＳＡ７）、ステップＳＡ３の処理へ戻る。
【００２０】
以後、上記と同様の過程によってスプライト２〜スプライトＮの描画処理が行われる。なお、上述した描画処理の概要は従来の描画装置と同様である。
次に、この実施形態独特の処理であって、描画エンジン１８において行われるスプライト回転処理について詳述する。
この実施形態においては、スプライトの回転処理において、従来のようにホストＣＰＵ側でｓｉｎ、ｃｏｓの演算を行わず、予め用意した回転結果テーブル２０内のデータを使用して処理する。
【００２１】
すなわち、この実施形態においては、図３に示すように、回転の単位を１回転の８分割または４分割の２種類とする。そして、回転結果テーブル２０内に、予め、８分割テーブルとして、ｓｉｎ４５°、ｓｉｎ９０°、・・・ｓｉｎ３１５°、ｃｏｓ４５°、ｃｏｓ９０°、・・・ｃｏｓ３１５°を計算して記憶させておき、また、４分割テーブルとして、ｓｉｎ９０°、ｓｉｎ１８０°、ｓｉｎ２７０°、ｃｏｓ９０°、ｃｏｓ１８０°、ｃｏｓ２７０°の値を記憶させておく。
一方、スプライト属性テーブルには、図４に示すように、回転制御データとして、
回転フラグ
テーブル種類（８分割／４分割）
切替周期
回転中心
という４データを記憶させておく。
【００２２】
なお、従来は回転制御データとして、ｓｉｎθ、ｃｏｓθ、回転中心がスプライト属性テーブルに記憶され、また、ホストＣＰＵは各スプライト毎にｓｉｎθ、ｃｏｓθを計算して属性テーブルに書き込んでいた。
さて、描画エンジン１８は、回転フラグが”１”であるスプライトについて、上記の回転制御データに基づいて以下に説明する処理によってスプライトを回転させ、フレームバッファ１９に描画する。図５は表示例を示す図であり、Δｔはフレーム間隔を示している。図において（Ａ）は８分割による表示例であり、２フレーム毎に画像を切り換えるようになっている（切替周期＝２）。（Ｂ）も同様に８分割による表示例であり、１フレーム毎に画像を切り換えるようになっている（切替周期＝１）。（Ｃ）は４分割による表示例であり、１フレーム毎に画像を切り換えるようになっている（切替周期＝１）。このような表示においては、（Ａ）のスプライトが最も遅く回転し、（Ｂ）のスプライトが中間の早さで回転し、（Ｃ）のスプライトが最も早く回転する。
【００２３】
次に、図６に示すフローチャートを参照し、描画エンジン１８における上述した回転処理の過程を説明する。
描画エンジン１８は、まず、コントローラ１７から供給されたスプライト属性テーブルの回転フラグをチェックする。そして、そのスプライトの回転フラグが初めて”１”になった場合は回転スタートと判断し（ステップＳＢ１）、内部のレジスタＣＮＴ（図示略）に「０」を書き込む（ステップＳＢ２）。次に、スプライト属性データのテーブル種類をチェックし（ステップＳＢ５）、８分割が指定されていた場合はステップＳＢ６へ、４分割が指定されていた場合はステップＳＢ７へ進む。
ステップＳＢ６では、
ＩＮＴ（ＣＮＴ／切替周期）
但し、ＩＮＴ（  ）：かっこ内の演算結果の小数部をカットした値
ＣＮＴ：レジスタＣＮＴのデータ
切替周期：スプライト属性テーブルに記憶されたデータ
なる演算が行われ、次いで、演算結果に基づいて回転結果テーブル２０の８分割テーブルからｓｉｎθおよびｃｏｓθの値が読み出される。例えば、ＣＮＴ＝３で切替周期＝２の場合、ＩＮＴ＝１となり、ｓｉｎ４５°およびｃｏｓ４５°の値が回転結果テーブル２０から読み出される。同様に、ＩＮＴ＝２の場合はｓｉｎ９０°およびｃｏｓ９０°の値が回転結果テーブル２０から読み出され、ＩＮＴ＝７の場合はｓｉｎ３１５°およびｃｏｓ３１５°の値が回転結果テーブル２０から読み出される。
【００２４】
同様に、ステップＳＢ７においても、上記の演算が行われ、次いで、演算結果に基づいて回転結果テーブル２０の４分割テーブルからｓｉｎθおよびｃｏｓθの値が読み出される。例えば、ＣＮＴ＝３で切替周期＝２の場合、ｓｉｎ９０°およびｃｏｓ９０°の値が回転結果テーブル２０から読み出される。
次に、ステップＳＢ８へ進むと、上述したｓｉｎθおよびｃｏｓθの値およびスプライト属性テーブルから読み出された回転中心の座標（Ｒｘ，Ｒｙ）に基づいて、前述した[数１]の演算が行われて回転後のピクセルの座標（Ｘ’，Ｙ’）が求められ、次に、ステップＳＢ９において、求められた座標（Ｘ’，Ｙ’）に従ってＲＧＢカラーデータがフレームバッファ１９の描画用バンクに書き込まれる。
なお、（Ｘ，Ｙ）については、スプライト属性データとしてのスプライトの表示座標を示すデータ（左上ピクセルの座標）に基づき、求められる。
上述したステップＳＢ８、ＳＢ９の処理はスプライトを構成する全ピクセルについて行われる。
【００２５】
次のフレームの描画処理において、再び、上述したステップＳＢ１へ進み、スプライトが回転スタートでない場合はステップＳＢ３へ進む。ステップＳＢ３では、回転フラグが”１”であるか否かがチェックされ、”０”であった時は回転処理を終了する。一方、”１”であった場合は、レジスタＣＮＴ内のデータに「１」を加える（ステップＳＢ４）。そして、上述したステップＳＢ５以降の処理へ進む。
【００２６】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、本実施の形態では回転結果テーブルは３６０度を４等分および８等分したものを挙げたが、もっと細かく分割してもよい。
【図面の簡単な説明】
【００２７】
【図１】この発明の一実施形態による画像描画装置の構成を示すブロック図であるである。
【図２】同実施形態の概略動作を示すフローチャートである。
【図３】同実施形態における回転処理を説明するための図である。
【図４】同実施形態におけるスプライト属性テーブル２３の構造図である。
【図５】同実施形態における回転処理の一例を示す図である。
【図６】同実施形態における回転処理の流れを示すフローチャートである。
【符号の説明】
【００２８】
１１…キャラクタＲＯＭ、１２…ＦＩＦＯメモリ、１３…解凍エンジン、１４…スプライトカラーパレット、１５…フリップフロップ、１６…スプライトＹＵＶデコーダ、１７…コントローラ、１８…描画エンジン、１９…フレームバッファ、２０…回転結果テーブル、２１…ＣＰＵインタフェースブロック、２２…ＳＲＡＭインタフェースブロック、２３…スプライト属性テーブル、２４…ディスプレイインタフェースブロック
【図１】
2005099313.tif 000004
【図２】
2005099313.tif 000005
【図３】
2005099313.tif 000006
【図４】
2005099313.tif 000007
【図５】
2005099313.tif 000008
【図６】
2005099313.tif 000009