(57)【特許請求の範囲】
【請求項１】
所定のサイズのタイル画像の列を記憶するタイル画像記憶部、
画面に表示すべき画像における位置と、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、表示すべき個数と、の三つ組が指定されると、当該画像において、当該指定された識別番号により表される順序の位置から始まる当該指定された個数の長さのタイル画像の列を、当該指定された位置に描画する描画部、
仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、当該区画の位置と、を、当該区画に対応付けて記憶する順序記憶部、
当該区画のうち、いずれかの区画が指定されると、当該指定された区画について、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の識別番号が、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と一致する最大長を取得する最大長取得部、
当該区画のうち、当該画像内に描画すべき区画のすべてについて、当該区画が当該画像においてまだ描画されていなければ、
（ａ）当該区画に対応付けられる位置と、
（ｂ）当該区画に対応付けて記憶される識別番号と、
（ｃ）当該区画を前記最大長取得部に指定して得られる最大長と、
の三つ組を、前記描画部に指定する制御部
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
当該区画のそれぞれについて、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の識別番号が、当該記憶される列内における順序を表す識別番号と一致する最大長を、当該区画に対応付けて記憶する最大長記憶部
をさらに備え、
前記最大長取得部は、当該与えられた区画について前記最大長記憶部に記憶される最大長を、当該取得の結果とする
ことを特徴とする画像処理装置。
【請求項３】
請求項１に記載の画像処理装置であって、
前記最大長取得部は、当該区画が与えられると、前記順序記憶部と、前記タイル画像記憶部と、を走査して、当該最大長を取得する
ことを特徴とする画像処理装置。
【請求項４】
請求項１から３のいずれか１項に記載の画像処理装置であって、
当該区画のうち、描画すべき区画は、当該仮想空間の一部の領域であり、
前記制御部は、当該（ａ）（ｂ）（ｃ）の三つ組にかえて、
（ａ'）当該区画に対応付けて記憶される位置と当該領域の当該仮想空間における位置から定められる当該区画の当該領域における相対的な位置と、
（ｂ'）当該区画に対応付けて記憶される識別番号と、
（ｃ'）当該区画から始まり当該区画に対して前記取得された最大長の長さのタイル画像の列のうち当該領域に含まれるタイル画像の個数と、
の三つ組を、前記描画部に指定する
ことを特徴とする画像処理装置。
【請求項５】
請求項４に記載の画像処理装置であって、
当該領域に含まれる区画のすべてについての描画がされると、当該画像を画面に表示する表示部
をさらに備えることを特徴とする画像処理装置。
【請求項６】
請求項５に記載の画像処理装置であって、
ユーザの指示入力により、当該領域を当該仮想空間の中で移動させる領域移動部
をさらに備えることを特徴とする画像処理装置。
【請求項７】
タイル画像記憶部、描画部、順序記憶部、最大長取得部、制御部を有する画像処理装置が実行する画像処理方法であって、
前記タイル画像記憶部には、所定のサイズのタイル画像の列が記憶され、
前記順序記憶部には、仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、当該区画の位置と、が、当該区画に対応付けて記憶され、
前記描画部が、画面に表示すべき画像における位置と、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、表示すべき個数と、の三つ組が指定されると、当該画像において、当該指定された識別番号により表される順序の位置から始まる当該指定された個数の長さのタイル画像の列を、当該指定された位置に描画する描画工程、
前記最大長取得部が、当該区画のうち、いずれかの区画が指定されると、当該指定された区画について、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の識別番号が、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と一致する最大長を取得する最大長取得工程、
前記制御部が、当該区画のうち、当該画像内に描画すべき区画のすべてについて、当該区画が当該画像においてまだ描画されていなければ、
（ａ）当該区画に対応付けられる位置と、
（ｂ）当該区画に対応付けて記憶される識別番号と、
（ｃ）当該区画を前記最大長取得工程に指定して得られる最大長と、
の三つ組を、前記描画部に指定する制御工程
を備えることを特徴とする画像処理方法。
【請求項８】
コンピュータを、
所定のサイズのタイル画像の列を記憶するタイル画像記憶部、
画面に表示すべき画像における位置と、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、表示すべき個数と、の三つ組が指定されると、当該画像において、当該指定された識別番号により表される順序の位置から始まる当該指定された個数の長さのタイル画像の列を、当該指定された位置に描画する描画部、
仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の前記タイル画像記憶部に記憶される列内における順序を表す識別番号と、当該区画の位置と、を、当該区画に対応付けて記憶する順序記憶部、
当該区画のうち、いずれかの区画が指定されると、当該指定された区画について、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の識別番号が、前記タイル画像記憶部に記憶される列内における順序を表す識別番号と一致する最大長を取得する最大長取得部、
当該区画のうち、当該画像内に描画すべき区画のすべてについて、当該区画が当該画像においてまだ描画されていなければ、
（ａ）当該区画に対応付けられる位置と、
（ｂ）当該区画に対応付けて記憶される識別番号と、
（ｃ）当該区画を前記最大長取得部に指定して得られる最大長と、
の三つ組を、前記描画部に指定する制御部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイル状の画像を並べて描画するハードウェアやシステムコール、ライブラリを用いて、高速に画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにより実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、一定のサイズ（以下の幅をw、高さをhとする。）のタイル状の画像（以下「タイル画像」という。）をあらかじめ用意する一方で、画面に表示すべき画像を記憶する画像バッファを用意しておき、このタイル状の画像のいずれを画像バッファのどの位置に描画するか、をハードウェアやシステムコール、ＢＩＯＳ（Basic Input Output System）等のライブラリに指定することで、画像を生成する画像処理装置が提案されている。
【０００３】
たとえば、ＲＰＧ（Roll Playing Game）などにおけるマップ表示においては、草地を表すタイル画像を１枚、砂地を表すタイル画像を１枚、道路を表すタイル画像を１枚用意しておき、これらのタイル画像を適宜並べることで、「草地と砂地の中を道路が配置された地図」の画像を生成することができる。
【０００４】
このような画像の生成技術については、たとえば以下の文献に開示されている。
【特許文献１】特許第３２７０９２８号公報
【０００５】
ここで、[特許文献１]においては、マップをブロックに区切り、ブロックに割り当てられるタイル画像を変形して、タイル画像の境界線をより自然で複雑なものとする技術が開示されている。
【０００６】
たとえばゲーム装置用のコンピュータ等では、以下の３つの情報をハードウェア、システムコール、または、ライブラリ等の描画部に指定することでタイル画像を画像バッファ内に描画することができるものが多い。
（ａ）タイル画像の識別番号id。一般にタイル画像は所定のタイル画像記憶領域に記憶されるので、idと、そのidを有するタイル画像が記憶されるアドレスとは１対１に対応付けることができる。
（ｂ）タイル画像を画像バッファ内で描画する位置(x,y)。タイル画像を１つ描画すると、画像バッファ内の領域(x,y)〜(x+w-1,y+h-1)の画素が変化する。
（ｃ）描画するタイル画像の個数n。識別番号id，id+1，id+2，…，id+n-1を有するn個のタイル画像が、描画の対象となる。
【０００７】
したがって、このような３つ組が指定されると、画像バッファ内の領域(x,y)〜(x+n×w-1,y+h-1)に、識別番号id〜id+n-1のタイル画像が順に並べられて描画される。すなわち、
（１）識別番号idのタイル画像が領域(x,y)〜(x+w-1,y+h-1)に描画され、
（２）識別番号id+1のタイル画像が領域(x+w,y)〜(x+2×w-1,y+h-1)に描画され、
（３）識別番号id+2のタイル画像が領域(x+2×w,y)〜(x+3×w-1,y+h-1)に描画され、
…
（ｎ）識別番号id+n-1のタイル画像が領域(x+(n-1)×w,y)〜(x+n×w-1,y+h-1)に描画される
こととなる。
【０００８】
従来、このようなタイル画像の描画機能を用いてＲＰＧ用のマップなどを表示する場合には、マップ全体（一般には、表示画面より広い領域）を２次元の配列で表現し、配列の各要素にはタイル画像の識別番号を記憶することとし、マップ配列のうちの現在の画面に表示可能な領域（一般に、プレイヤーキャラクターを中心とする領域で、マップの中を当該領域が移動すると、表示の際にはプレイヤーにはスクロールして見える。）の要素のそれぞれを順次読み出して、当該識別番号と、画像バッファ内での位置と、個数１と、を、描画部に指定して表示画像を生成するのが一般的であった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、描画部に３つ組を与えて呼び出す際には、呼び出しのオーバヘッドが存在するのが一般的である。したがって、呼び出し回数をできるだけ抑制して、高速に描画ができるようにしたい、との要望がある。
【００１０】
本発明は、上記のような課題を解決するもので、タイル状の画像を並べて描画するハードウェアやシステムコール、ライブラリを用いて、高速に画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１２】
本発明の第１の観点に係る画像処理装置は、タイル画像記憶部、描画部、順序記憶部、最大長取得部、制御部を備え、以下のように構成する。
【００１３】
すなわち、タイル画像記憶部には、所定のサイズのタイル画像の列が記憶される。
【００１４】
上記のように、タイル画像に互いに重複しない識別番号が付されている場合には、当該番号順に列が構成されていると考えることができる。
【００１５】
一方、描画部は、画面に表示すべき画像における位置と、記憶される列における順序と、表示すべき個数と、の三つ組が指定されると、当該画像において、当該指定された順序から始まる当該指定された個数の長さのタイル画像の列を、当該指定された位置に描画する。
【００１６】
上記のように、描画部は、一般には、ハードウェア、システムコール、ＢＩＯＳ等のライブラリ等が呼び出されると、上記の描画部の処理が実行される。その際に、位置、順序（これは、タイル画像の識別番号を意味する。）、個数の三つ組がパラメータとして指定される。
【００１７】
さらに、順序記憶部は、仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の記憶される列における順序と、当該区画の位置と、を、当該区画に対応付けて記憶する。
【００１８】
たとえば、仮想空間のマップの画像を本願発明により描画する場合には、順序記憶部を２次元の配列とし、その各要素には、タイル画像の順序、すなわち、タイル画像の識別番号が記憶されることになる。各区画は、１枚のタイル画像が貼り付けられる領域を意味する。
【００１９】
さらに、最大長取得部は、当該区画のうち、いずれかの区画が指定されると、当該指定された区画について、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の順序が、当該記憶される列の順序と一致する最大長を取得する。
【００２０】
当該最大長を取得する具体的な手法は種々考えられ、たとえば以下の好適実施形態によって、実現される。
【００２１】
さらに、制御部は、当該区画のうち、当該画像内に描画すべき区画のすべてについて、当該区画が当該画像においてまだ描画されていなければ、
（ａ）当該区画に対応付けられる位置と、
（ｂ）当該区画に対応付けて記憶される順序と、
（ｃ）当該区画を最大長取得部に指定して得られる最大長と、
の三つ組を、描画部に指定する。
【００２２】
たとえばＲＰＧのマップ表示の場合、仮想空間全体のマップのうちの、一部のみが画面に表示されることになる。したがって、マップを表す２次元配列の一部に相当する区画だけが描画ならびに表示の対象となる。この対象となる区画のそれぞれが、「画像内に描画すべき区画」である。典型的には、ＲＡＭ（Random Access Memory）等に確保された画像バッファ内に、表示すべき画像が生成されるので、各区画は、当該画像バッファ内に描画される。
【００２３】
最大長取得部は、描画部の１回の処理でまとめて描画できるタイル画像の個数を取得しているので、制御部により１回描画がされると、１個以上の区画に対する描画が行われる。このため、描画すべき区画のすべてについて上記の処理を行おうとすると、当該区画が以前に描画済であることが生じうる。この場合には、その区画については、あえて描画を行う必要はない。
【００２４】
このように、本発明によれば、描画すべきタイル画像が連続しているものである場合には、１回の処理でまとめて描画することにより、描画部の呼び出し回数を抑制することで、１回に１個のタイル画像を描画するよりも、高速な画像の生成ができるようになる。
【００２５】
また、本発明の画像処理装置は、最大長記憶部をさらに備え、以下のように構成することができる。
【００２６】
すなわち、最大長記憶部は、当該区画のそれぞれについて、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の順序が、当該記憶される列の順序と一致する最大長を、当該区画に対応付けて記憶し、最大長取得部は、当該与えられた区画について最大長記憶部に記憶される最大長を、当該取得の結果とする。
【００２７】
上記のように、マップが２次元配列で構成され、タイル画像の順序（識別番号）が要素として記憶されている状況を想定すると、最大長記憶部も、マップと同じ要素数の２次元配列として構成するのが典型的である。
【００２８】
この場合、当該最大長記憶部の各要素に対応するマップの要素から順にマップ内の要素を走査していき、識別番号が連続して１ずつ増加しているのは、要素何個分か、を、あらかじめ調べて、その個数を、最大長記憶部の当該要素に記憶するのである。
【００２９】
本発明は、上記発明の好適実施形態に係るもので、描画部に指定する個数のパラメータをあらかじめ調べて記憶することにより、高速な描画を行うことができるようになる。
【００３０】
また、本発明の画像処理装置において、最大長取得部は、当該区画が与えられると、順序記憶部と、タイル画像記憶部と、を走査して、当該最大長を取得するように構成することができる。
【００３１】
上記発明では、あらかじめ識別番号の連続数（最大長）を調べて最大長記憶部に記憶することとしていたが、本発明においては、描画を行おうとするごとに、マップの配列（順序記憶部）を走査して、識別番号の連続数（最大長）を取得することとしている。
【００３２】
本発明は、上記発明の好適実施形態に係るもので、最大長記憶部を省略することにより、メモリ使用量を抑制することができるようになる。
【００３３】
また、本発明の画像処理装置において、当該区画のうち、描画すべき区画は、当該仮想空間の一部の領域であり、制御部は、当該（ａ）（ｂ）（ｃ）の三つ組にかえて、
【００３４】
（ａ'）当該区画に対応付けて記憶される位置と当該領域の当該仮想空間における位置から定められる当該区画の当該領域における相対的な位置と、
【００３５】
（ｂ'）当該区画に対応付けて記憶される順序と、
【００３６】
（ｃ'）当該区画から始まり当該区画に対して取得された最大長の長さのタイル画像の列のうち当該領域に含まれるタイル画像の個数と、
の三つ組を、描画部に指定するように構成することができる。
【００３７】
本発明は、２次元マップの一部のみを描画する場合を特に考慮したものである。すなわち、描画部に指定する「個数」のパラメータは、取得された最大長をそのまま指定するのではなく、描画の対象となる領域に対する相対的な位置によって、適宜小さくする調整を行うのである。
【００３８】
本発明によれば、仮想空間の一部の領域に対する画像を生成する際に、画像の描画を高速に行うことができるようになる。
【００３９】
また、本発明の画像処理装置は、表示部をさらに備え、表示部は、当該領域に含まれる区画のすべてについての描画がされると、当該画像を画面に表示するように構成することができる。
【００４０】
本発明は、上記発明の好適実施形態に係るもので、画像全体が生成されるごとに、画面に生成された画像が表示され、ユーザに必要な情報を提供することができるようになる。
【００４１】
また、本発明の画像処理装置は、領域移動部を備え、領域移動部は、ユーザの指示入力により、当該領域を当該仮想空間の中で移動させるように構成することができる。
【００４２】
本発明は、上記発明の好適実施形態に係るものであり、たとえばＲＰＧなどのゲームにおいては、ユーザの指示によってプレイヤーキャラクターが仮想空間の区画の中を移動し、プレイヤーキャラクターが配置される区画が画面に現在表示されている領域の縁の区画である場合に、プレイヤーキャラクターが画面中央になるように表示領域を移動するスクロール処理が行われることがある。
【００４３】
本発明によれば、このようなスクロール処理が行われる表示装置において、高速に画像の生成を行うことが可能となる。
【００４４】
本発明のその他の観点に係る画像処理方法は、タイル画像記憶部、描画部、順序記憶部、最大長取得部、制御部を有する画像処理装置が実行し、以下のように構成する。
【００４５】
すなわちタイル画像記憶部には、所定のサイズのタイル画像の列が記憶される。
【００４６】
一方、順序記憶部には、仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の記憶される列における順序と、当該区画の位置と、が、当該区画に対応付けて記憶される。
【００４７】
さらに、描画工程では、描画部が、画面に表示すべき画像における位置と、記憶される列における順序と、表示すべき個数と、の三つ組が指定されると、当該画像において、当該指定された順序から始まる当該指定された個数の長さのタイル画像の列を、当該指定された位置に描画する。
【００４８】
そして、最大長取得工程では、最大長取得部が、当該区画のうち、いずれかの区画が指定されると、当該指定された区画について、当該区画から所定の方向に並ぶ区画の列に描画すべきタイル画像の順序が、当該記憶される列の順序と一致する最大長を取得する。
【００４９】
一方、制御工程では、制御部が、当該区画のうち、当該画像内に描画すべき区画のすべてについて、当該区画が当該画像においてまだ描画されていなければ、
（ａ）当該区画に対応付けられる位置と、
（ｂ）当該区画に対応付けて記憶される順序と、
（ｃ）当該区画を最大長取得工程に指定して得られる最大長と、
の三つ組を、描画部に指定する。
【００５０】
本発明のその他の観点に係るプログラムは、コンピュータを、上記の画像処理装置の各部として機能させ、コンピュータに、上記の画像処理方法の各工程を実行させるように構成する。
【００５１】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００５２】
上記プログラムは、当該プログラムを実行するコンピュータや、当該プログラムによって再構成されて電子回路を構成するＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Ditigal Signal Processor）などの電子装置とは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５３】
本発明によれば、タイル状の画像を並べて描画するハードウェアやシステムコール、ライブラリを用いて、高速に画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５４】
以下に本発明の実施形態を説明する。
【実施例１】
【００５５】
図１は、本実施形態に係る画像処理装置が実現される典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００５６】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、マイク１１１と、を備える。
【００５７】
プログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の画像処理装置が実現される。
【００５８】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００５９】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００６０】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００６１】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う各種の操作入力、たとえば、画面に表示すべき領域を仮想空間内で移動させるための操作入力を受け付ける。
【００６２】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００６３】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００６４】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００６５】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００６６】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００６７】
このほか、上記のようなハードウェア、システムコール、ＢＩＯＳなどのライブラリ呼び出しにより、タイル画像を用いた画像生成を行うこともできる。
【００６８】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００６９】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００７０】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００７１】
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００７２】
さらに、情報処理装置１００には、インターフェイス１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【００７３】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００７４】
以上で説明した情報処理装置１００は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【００７５】
たとえば、一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用する。
【００７６】
図２は、本実施形態に係る画像処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００７７】
本実施形態に係る画像処理装置２０１は、タイル画像記憶部２０２、描画部２０３、順序記憶部２０４、最大長取得部２０５、制御部２０６を備える。また、実施形態によっては、最大長記憶部２０７、表示部２０８、領域移動部２０９を備えるように構成しても良い。
【００７８】
図３は、本実施形態に係る画像処理装置２０１にて実行される画像処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００７９】
本処理が開始されると、ＣＰＵ  １０１は、ＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤやＲＯＭカセット、外部メモリ１０６等から、ＲＡＭ  １０３に確保されたタイル画像記憶部２０２に、所定のサイズ（以下、横wドット、縦hドットとする。）のタイル画像の列を読み出し、順序記憶部２０４に、仮想空間を当該所定のサイズに区切る区画のそれぞれについて、当該区画に描画すべきタイル画像の記憶される列における順序と、当該区画の位置と、を、当該区画に対応付けて読み出して、初期化を行う（ステップＳ３０１）。
【００８０】
タイル画像記憶部２０２に読み出された「タイル画像の列」は、複数のタイル画像が連続したアドレスに順に記憶されるのが典型的であるが、後述するように、１つのタイル画像の画素の情報が一定の規則をもって飛び飛びのアドレスに記憶されるような態様も含まれる。したがって、「タイル画像の列」とは、「○○番目のタイル画像」のように、含まれるタイル画像が数字で順序付けできるような態様すべてを含む。
【００８１】
図４は、タイル画像記憶部２０２に読み出される複数のタイル画像の列の様子を示す説明図である。図５は、枠線と番号を明示したタイル画像の様子を示す説明図である。以下、これらの図を参照して説明する。
【００８２】
これら図に示す例では、タイル画像４０１の列は、桝目状に配置されており、その１枚１枚は、それぞれ、横w = 8ドット、縦h = 8ドットの正方形の形状をしている。本図では白黒で表示しているが、各ドットは、２５６色のパレットからいずれかの色を選択した画素値を有している。したがって、タイル画像の１枚は、６４バイトで表現されることになる。
【００８３】
図４は、タイル画像を並べて全体として１枚の画像となるように表示した図であるが、図５では、理解を容易にするために、図４に示す例に対してタイル画像の枠線を明示するとともに、その順序を表す番号を一部に示している。
【００８４】
本図に示すように、タイル画像４０１は横A = 25枚、縦B = 16枚並んでおり、全体では０番から３９９番までの４００個が用意されている。
【００８５】
したがって、タイル画像４０１を並べた画像全体は、横２００ドット、縦１２８ドットの画像と考えることができ、全体としては、Aw×Bh = ２００×１２８バイトの配列で表現される。
【００８６】
左から右へx座標、上から下へy座標を考えたときには、座標(x,y)に対する画素値は、当該配列における(A×w×y + x)番目の要素で表現される。
【００８７】
一方、aをbで割った商をa div b、aをbで割った余りをa mod bと表記すると、n番目のタイル画像４０１は、
x座標  …  (a mod b)×w〜(a mod b)×w + w - 1；
y座標  …  (a div b)×h〜(a div b)×h + h - 1
の範囲を持つから、これらの座標値から、画像配列において画素値が記憶される場所を一意に定めることができる。
【００８８】
なお、タイル画像４０１を並べて全体として１枚の画像となるように配置するほか、w×hバイトのタイル画像４０１の配列を考えて、n番目のタイル画像の画素をw×h×nバイト目〜w×h×(n+1) - 1バイト目に配置するような態様を想定しても良い。
【００８９】
このように、タイル画像記憶部２０２には、タイル画像４０１がその順序に一意に対応付けられて記憶される。
【００９０】
図６は、タイル画像４０１を並べてできたマップ画像の表示例を示す説明図である。図７は、タイル画像４０１の枠線を付したマップ画像の例を示す説明図である。以下、これらの図を参照して説明する。
【００９１】
マップ画像７０１は、モニタや液晶ディスプレイ等の表示装置に表示される画像であって、ユーザが実際に見ることができる画像であり、本実施形態では、横J = 24列、縦K = 16行の、合計３８４枚の桝目状の区画に、あらかじめ用意されたタイル画像４０１のいずれかを嵌め込むことによって構成される。このとき、同じタイル画像が、複数の場所に嵌め込まれることがありうる。
【００９２】
マップ画像７０１は、より広大なマップ配列である順序記憶部２０４の一部を表現したものである。順序記憶部２０４の配列は、横P個、縦Q個の２次元配列Sで、その要素には、０〜A×B - 1までのいずれかの数値、すなわち、タイル画像４０１の順序が記憶されている。
【００９３】
マップ画像７０１は、P×Q配列から、その一部であるJ×K配列を抽出して、各要素に記憶されている順序のタイル画像４０１を、その位置に嵌め込むことによって構成された画像である。
【００９４】
また、図７では、一部のタイル画像４０１を白い枠で囲んでいる。以下では、これらの領域を取り出して説明する。
【００９５】
図８は、マップ画像７０１の一部（白い枠で囲まれたタイル画像４０１）を拡大して枠線を付した説明図であり、図９は、当該拡大された領域に嵌め込まれたタイル画像４０１の枠線および番号を明示した説明図である。以下、本図を参照して説明する。
【００９６】
本図に示すように、拡大された領域には、１０個のタイル画像４０１（本図では、符号を図示せず。）が配置されており、そのタイル画像の順序の数値は、順に、
37，42，50，51，52，53，54，55，39，43
となっている。
【００９７】
このように、マップ画像７０１においては、５０〜５５のようにタイル画像４０１の順序が連続する部分が生じることがある。タイル画像４０１をデザインする際に、大きな構造物の絵を描いてから、これを桝目状の区画に切り分けることが多いからである。
【００９８】
本実施形態では、このように、タイル画像４０１の順序が連続する部分について特別な処理を行うことで、描画処理の高速化を図るものとしている。
【００９９】
ついで、ＣＰＵ  １０１は、順序記憶部２０４のP×Q配列のうち、画面に表示するマップ画像を表すJ×K配列の位置(X,Y)を取得する（ステップＳ３０２）。
【０１００】
この座標(X,Y)は、ステップＳ３０１の初期化とともに初期化され、ユーザによる指示操作をコントローラ１０５等の領域移動部２０９が受け付けて、当該指示操作にしたがって、適宜値が変更されるように構成するのが一般的である。
【０１０１】
さらに、ＣＰＵ  １０１は、ＲＡＭ  １０３内に用意された変数yを0で初期化して（ステップＳ３０３）、y < Kである間（ステップＳ３０４；Ｙｅｓ）、ステップＳ３１４までの処理を繰り返す。
【０１０２】
すなわち、ＣＰＵ  １０１は、ＲＡＭ  １０３内に用意された変数xを0で初期化して（ステップＳ３０５）、x < Jである間（ステップＳ３０６；Ｙｅｓ）、ステップＳ３１３までの処理を繰り返す。
【０１０３】
まず、ＣＰＵ  １０１は、現在注目している場所(X+x,Y+y)のタイル画像４０１の順序番号S[X+x,Y+y]を、ＲＡＭ  １０３内に用意された変数pに代入する（ステップＳ３０７）。
【０１０４】
次に、ＲＡＭ  １０３内に用意されたカウンタ変数cを0で初期化し（ステップＳ３０８）、x+c+1<Jであれば（ステップＳ３０９；Ｙｅｓ）、タイル画像４０１の順序番号S[X+x+c+1,Y+y]が、p+1に等しいか否かを調べる（ステップＳ３１０）。
【０１０５】
等しければ（ステップＳ３１０；Ｙｅｓ）、pにS[X+x+c+1,Y+y]を代入し（ステップＳ３１１）、cの値を１増やして（ステップＳ３１２）、ステップＳ３０９に戻る。
【０１０６】
一方、等しくなければ（ステップＳ３１０；Ｎｏ）、cの値を１増やして（ステップＳ３１３）、ステップＳ３１４に進む。
【０１０７】
一方、x+c+1<Jでなければ（ステップＳ３０９；Ｎｏ）、ステップＳ３１４に進む。
【０１０８】
この計算処理によって、図９において、(x,y)が、
（１）順序「３７」の区画を指している場合には、c = 1となり、
（２）順序「４２」の区画を指している場合には、c = 1となり、
（３）順序「５０」の区画を指している場合には、c = 6となり、
（４）順序「５１」の区画を指している場合には、c = 5となり、
（５）順序「５２」の区画を指している場合には、c = 4となり、
（６）順序「５３」の区画を指している場合には、c = 3となり、
（７）順序「５４」の区画を指している場合には、c = 2となり、
（８）順序「５５」の区画を指している場合には、c = 1となり、
（９）順序「３９」の区画を指している場合には、c = 1となり、
（１０）順序「４３」の区画を指している場合には、c = 1となる。
【０１０９】
すなわち、cは、現在注目している区画から何個だけ、タイル画像４０１の順序番号が連続しているか、を算出した値であり、いずれか与えられた区画（位置(x,y)に配置された区画）について、当該区画から所定の方向（横方向）に並ぶ区画の列に描画すべきタイル画像４０１の順序が、当該記憶される列の順序と一致する最大長に相当する。
【０１１０】
したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共同して、最大長取得部２０５として機能する。
【０１１１】
ついで、ＣＰＵ  １０１は、ハードウェア、システムコール、ＢＩＯＳ等のライブラリ等を用いて画像処理部１０７に、以下の３つ組
（ａ）現在注目している区画(x,y)に対応付けられる座標値(x×w，y×h)；
（ｂ）現在注目している区画に対応付けて記憶される順序S[X+x+c,Y+y]；
（ｃ）得られた最大長c
を指定して、ＲＡＭ  １０３内に用意された画像バッファ内に、c個分のタイル画像４０１の列を描画させる（ステップＳ３１４）。
【０１１２】
したがって、画像処理部１０７は、描画部２０３として機能する。
【０１１３】
ついで、xの値をcだけ増やして（ステップＳ３１５）、ステップＳ３０６に戻る。
【０１１４】
単純なループを用いて実行した場合（従来の手法）は、常にc = 1とした場合に相当するが、一般に、描画部２０３の呼び出しは、ハードウェア、システムコール、ＢＩＯＳ等のライブラリ等を用いるため、その前処理や後処理に計算時間を要することがある。
【０１１５】
本実施形態では、タイル画像４０１が連続して配置されている場合には、描画可能な最大長の値cを使用して描画部２０３を呼び出すので、一般に、描画部２０３の呼び出し回数が減少することになる。したがって、本実施形態によれば、最大長cを求める処理が追加されたとしても、高速な描画が可能となるのである。
【０１１６】
ステップＳ３０６において、x≧Jとなった場合（ステップＳ３０６；Ｎｏ）、一行分の描画が終わったこととなるので、yの値を１だけ増やして（ステップＳ３１６）、ステップＳ３０４に戻る。
【０１１７】
ステップＳ３０４において、y≧Kとなった場合（ステップＳ３０４；Ｎｏ）、一画面分の描画が終わったこととなる。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３等と共同して、制御部２０６として機能する。
【０１１８】
さて、一画面分の描画が終わると、ＣＰＵ  １０１は、垂直同期割込を待ち（ステップＳ３１７）、割込が発生したら、画像処理部１０７に、ＲＡＭ  １０３内の画像バッファに記憶された画像をモニタや液晶ディスプレイ等に表示するよう指示を出して（ステップＳ３１８）、ステップＳ３０４に戻る。
【０１１９】
したがって、ＣＰＵ  １０１の制御の下、モニタや液晶ディスプレイ等は、画像処理部１０７と共同して、表示部２０８として機能する。
【０１２０】
なお、ステップＳ３１５の待機中や、ステップＳ３１６からステップＳ３０４に戻る前などに、適宜他の処理を実行することも可能である。
【０１２１】
これまでの説明では、毎回描画の際に最大長取得部２０５が順序記憶部２０４を走査して、最大長cを計算していたが、以下では、この処理をさらに高速に行うことを考える。
【０１２２】
すなわち、ＲＡＭ  １０３内にあらかじめP×Q次元の配列Rを用意して、これを最大長記憶部２０７として機能させる。
【０１２３】
そして、この配列Rの各要素は、以下のように初期化する。
【０１２４】
図１０は、最大長記憶部２０７の初期化処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１２５】
すなわち、ＣＰＵ  １０１は、ＲＡＭ  １０３内に用意された変数yを0で初期化して（ステップＳ９０１）、y < Qである間（ステップＳ９０２；Ｙｅｓ）、ステップＳ９１９までの処理を繰り返す。
【０１２６】
ここで、ＣＰＵ  １０１は、ＲＡＭ  １０３内に用意された変数xを0で初期化して（ステップＳ９０３）、x < Pである間（ステップＳ９０４；Ｙｅｓ）、ステップＳ９１３までの処理を繰り返す。
【０１２７】
すなわち、ＣＰＵ  １０１は、現在注目している場所(x,y)のタイル画像４０１の順序番号S[x,y]を、ＲＡＭ  １０３内に用意された変数pに代入する（ステップＳ９０５）。
【０１２８】
次に、ＲＡＭ  １０３内に用意されたカウンタ変数cを0で初期化し（ステップＳ９０６）、x+c+1<Pであれば（ステップＳ９０７；Ｙｅｓ）、タイル画像４０１の順序番号S[x+c+1,y]が、p+1に等しいか否かを調べる（ステップＳ９０８）。
【０１２９】
等しければ（ステップＳ９０８；Ｙｅｓ）、pにS[x+c+1,y]を代入し（ステップＳ９０９）、cの値を１増やして（ステップＳ９１０）、ステップＳ９０７に戻る。
【０１３０】
一方、等しくなければ（ステップＳ９０８；Ｎｏ）、cの値を１増やして（ステップＳ９１１）、R[x,y]にcの値を代入して（ステップＳ９１２）、xの値を１増やして（ステップＳ９１３）、ステップＳ９０４に戻る。
【０１３１】
一方、x+c+1<Pでなければ（ステップＳ９０７；Ｎｏ）、ステップＳ９１２に進む。
【０１３２】
ステップＳ９０４において、x≧Pである場合（ステップＳ９０４；Ｎｏ）、yの値を１増やして（ステップＳ９１９）、ステップＳ９０２に戻る。
【０１３３】
一方、ステップＳ９０２において、y≧Qである場合（ステップＳ９０２；Ｎｏ）、本処理を終了する。
【０１３４】
配列Rからなる初期化処理は、事前に行っておいて、ＤＶＤ−ＲＯＭやＲＯＭカセット等には、生成された配列Rの値そのものを記憶し、ステップＳ３０１においてロードすることとしても良い。
【０１３５】
このようにして配列Rに記憶される値は、上記のように、画面に表示される領域が変化することを考慮すると、最大長cの候補としての役割を果たす。
【０１３６】
そして、図３におけるフローチャートのステップＳ３０７〜ステップＳ３１３にかえて、以下の処理を行う。図１１は、当該差し替えられた画像処理の制御の流れを示すフローチャートの一部抽出図である。以下、本図を参照して説明する。
【０１３７】
すなわち、ステップＳ３０６においてx < Jであると判断された後（ステップＳ３０６；Ｙｅｓ）、ステップＳ３０７に進むのにかえて、ＣＰＵ  １０１は、最大長記憶部２０７をなす配列Rの、注目位置の要素R[X+x,Y+y]を変数cに取得する（ステップＳ９５１）。
【０１３８】
そして、c<J-xであるか否かを調べ（ステップＳ９５２）、そうであれば（ステップＳ９５２；Ｙｅｓ）、ステップＳ３１４に進む。
【０１３９】
そうでなければ（ステップＳ９５２；Ｎｏ）、cにJ-xを代入して（ステップＳ９５３）、ステップＳ３１４に進む。
【０１４０】
J-xは、未描画のタイル画像４０１を横方向に数えた個数であり、これ以上横方向に描画することはありえない。そこで、上記のような判断を行って、最大長記憶部２０７に記憶される値を調整するのである。
【０１４１】
本実施形態によれば、あらかじめ最大長を計算しておくことで、一層高速な描画処理が可能となる。
【産業上の利用可能性】
【０１４２】
以上説明したように、本発明によれば、タイル状の画像を並べて描画するハードウェアやシステムコール、ライブラリを用いて、高速に画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【０１４３】
【図１】本実施形態に係る画像処理装置が実現される典型的な情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係る画像処理装置の概要構成を示す模式図である。
【図３】本実施形態に係る画像処理装置にて実行される画像処理の制御の流れを示すフローチャートである。
【図４】タイル画像記憶部に読み出される複数のタイル画像の列の様子を示す説明図である。
【図５】枠線と番号を明示したタイル画像の様子を示す説明図である。
【図６】タイル画像を並べてできたマップ画像の表示例を示す説明図である。
【図７】タイル画像の枠線を付したマップ画像の例を示す説明図である。
【図８】マップ画像の一部タイル画像を拡大して枠線を付した説明図である。
【図９】拡大された領域に嵌め込まれたタイル画像の枠線および番号を明示した説明図である。
【図１０】最大長記憶部の初期化処理の制御の流れを示すフローチャートである。
【図１１】当該差し替えられた画像処理の制御の流れを示すフローチャートの一部抽出図である。
【符号の説明】
【０１４４】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  画像処理装置
２０２  タイル画像記憶部
２０３  描画部
２０４  順序記憶部
２０５  最大長取得部
２０６  制御部
２０７  最大長記憶部
２０８  表示部
２０９  領域移動部
４０１  タイル画像
７０１  マップ画像
【図１】
0004637199.tif 000002
【図２】
0004637199.tif 000003
【図３】
0004637199.tif 000004
【図４】
0004637199.tif 000005
【図５】
0004637199.tif 000006
【図６】
0004637199.tif 000007
【図７】
0004637199.tif 000008
【図８】
0004637199.tif 000009
【図９】
0004637199.tif 000010
【図１０】
0004637199.tif 000011
【図１１】
0004637199.tif 000012