説明

ゲーム装置、ゲーム装置の制御方法、ならびに、プログラム

【課題】ゲーム世界を表す仮想空間に配置されるオブジェクトの輪郭を描画する。
【解決手段】ゲーム装置201において、生成部202は、ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する。抽出部203は、第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る。描画部204は、第1画像を背景として、第3画像により表される輪郭を描画することにより、第4画像を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム世界を表す仮想空間に配置されるオブジェクトの輪郭を描画するのに好適なゲーム装置、ゲーム装置の制御方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【0002】
従来から、各種のキャラクターや物体等のオブジェクトが登場するゲーム世界を、仮想空間に配置されるポリゴンや、制御点の位置や重みにより形状が定められるサーフェスを組み合わせることによって表現し、仮想空間を見た様子を表す画像を生成する技術が提案されている。
【0003】
これらの技術では、仮想空間内に配置される視点と視線方向に基づいて仮想空間内に投影面が設定される。
【0004】
そして、ポリゴンやサーフェスの各箇所と視点とを結ぶ線分が投影面と交差する交差点に当該箇所を投影する透視投影の技術や、ポリゴンやサーフェスの各箇所から視線方向に平行に視点に近付くように伸ばした半直線が投影面と交差する交差点に当該箇所を投影する平行投影の技術を用いて、仮想空間内の様子を表す画像が生成される。
【0005】
ここで、透視投影や平行投影を用いるだけでは、仮想空間内の様子を表す画像では、オブジェクトの輪郭が線画として描画されることはない。
【0006】
そこで、視点の位置や視線方向が変化した場合であっても、オブジェクトの輪郭を得る技術が提案されている。
【0007】
ここで、特許文献1には、画像の輪郭をエッジ抽出フィルタにより抽出して2値化する際の閾値を動的に定める技術が開示されている。本技術は、輪郭で区切られる2つの領域が異なる色であることを前提としている。
【0008】
特許文献2には、オブジェクトを表す立体モデルと、当該立体モデルを拡大しポリゴンの法線ベクトルを反転させた裏モデルと、を用意して、視点方向から見えるポリゴンのみを描画することにより輪郭を描画する技術が開示されている。本技術は、オブジェクトの周囲の輪郭を描くのに好適である。
【0009】
これらの技術によれば、仮想空間内の様子を表す画像において、オブジェクトと背景を区切る輪郭を描画することができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平5−165963号公報
【特許文献2】特開2005−25785号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、上記の先行技術よりも簡易に輪郭を描画できるような技術が強く求められている。
【0012】
さらに、前景と背景の色が類似している場合であっても、輪郭を描けるようにしたいという要望がある。たとえば、白色のキャラクターを前景とし、白色の仮想世界を背景とする場合や、キャラクターの肌色の顎を前景とし、肌色の首を背景とする場合等である。
【0013】
本発明は、上記のような課題を解決するもので、ゲーム世界を表す仮想空間に配置されるオブジェクトの輪郭を描画するのに好適なゲーム装置、ゲーム装置の制御方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0015】
本発明の第1の観点に係るゲーム装置は、
ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成部、
前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出部、
前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画部
を備えるように構成する。
【0016】
また、本発明のゲーム装置において、
前記生成部は、
前記第2画像の画素値がとりうる最大値を、当該第2画像における各画素位置の画素値の初期値とし、
前記複数のオブジェクトのそれぞれについて、
(a)当該オブジェクトが投影される領域を求め、
(b)前記求められた領域内の画素位置のそれぞれについて、当該画素位置の前記第2画像における画素値が当該オブジェクトの当該画素位置に投影される箇所に対する奥行値よりも小さければ、当該箇所が当該画素位置に投影される画素値を求めて、前記第1画像における当該画素位置の画素値を当該求められた画素値に更新し、前記第2画像における当該画素位置の画素値を当該オブジェクトの奥行値に更新する
処理を繰り返すことにより、前記第1画像と、前記第2画像と、を生成する
ように構成することができる。
【0017】
また、本発明のゲーム装置において、
前記各画素位置に対する奥行値は、前記視点から前記オブジェクトのうち当該画素位置に投影される箇所へのベクトルと、前記視線方向の単位ベクトルと、の内積に、前記第2画像の画素値がとりうる範囲の整数を値域とする単調増加関数を適用することにより得られる
ように構成することができる。
【0018】
また、本発明のゲーム装置において、
前記輪郭抽出フィルタは、
前記第3画像における各画素位置の画素値の初期値を0とし、
前記第2画像における各画素位置を左から右に、隣り合う画素位置を走査して、左の画素位置の画素値が右の画素位置の画素値より大きければ、当該左の画素位置の画素値と当該右の画素位置の画素値との差で、前記第3画像における当該左の画素位置の画素値を更新し、
前記第2画像における各画素位置を右から左に、隣り合う画素位置を走査して、右の画素位置の画素値が左の画素位置の画素値より大きければ、当該右の画素位置の画素値と当該左の画素位置の画素値との差で、前記第3画像における当該右の画素位置の画素値を更新する
ように構成することができる。
【0019】
また、本発明のゲーム装置において、
前記輪郭抽出フィルタは、さらに、
前記第2画像における各画素位置を上から下に、隣り合う画素位置を走査して、上の画素位置の画素値が下の画素位置の画素値より大きければ、当該上の画素位置の画素値と当該下の画素位置の画素値との差で、前記第3画像における当該上の画素位置の画素値を更新し、
前記第2画像における各画素位置を下から上に、隣り合う画素位置を走査して、下の画素位置の画素値が上の画素位置の画素値より大きければ、当該下の画素位置の画素値と当該上の画素位置の画素値との差で、前記第3画像における当該下の画素位置の画素値を更新する
ように構成することができる。
【0020】
また、本発明のゲーム装置において、
前記輪郭抽出フィルタは、前記隣り合う画素位置の画素値の差にかえて、当該差に前記第3画像の画素値がとりうる範囲の整数を値域とする単調増加関数を適用することにより得られる値で、前記第3画像における画素値を更新する
ように構成することができる。
【0021】
また、本発明のゲーム装置において、
前記描画部は、前記第4画像の各画素位置について、
(a)当該画素位置の前記第3画像における画素値が0であれば、当該画素位置の前記第1画像における画素値を、前記第4画像における当該画素位置の画素値とし、
(b)当該画素位置の前記第3画像における画素値が0でなければ、所定の色相ならびに彩度を有し、当該画素位置の前記第3画像における画素値を暗度とする色を表す画素値を、前記第4画像における当該画素位置の画素値とする
ように構成することができる。
【0022】
また、本発明のゲーム装置において、
前記描画部は、前記第4画像の各画素位置について、当該画素位置の前記第1画像における画素値により表される色を、当該画素位置の前記第3画像における画素値により表される強さで暗くした色を表す画素値を、前記第4画像における当該画素位置の画素値とする
ように構成することができる。
【0023】
本発明の第2の観点に係る制御方法は、生成部、抽出部、描画部を有するゲーム装置が実行し、
前記生成部が、ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成工程、
前記抽出部が、前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出工程、
前記描画部が、前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画工程
を備えるように構成する。
【0024】
本発明の第3の観点に係るプログラムは、コンピュータを、
ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成部、
前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出部、
前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画部
として機能させるように構成する。
【0025】
本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【0026】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0027】
本発明によれば、ゲーム世界を表す仮想空間に配置されるオブジェクトの輪郭を描画するのに好適なゲーム装置、ゲーム装置の制御方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【0028】
【図1】典型的な情報処理装置の概要構成を示す模式図である。
【図2】本実施形態に係るゲーム装置の概要構成を示す説明図である。
【図3】仮想空間内に配置されるオブジェクトの例を示す説明図である。
【図4】第1画像の例を示す説明図である。
【図5】第1画像に対して、輪郭抽出フィルタを適用した従来例を示す説明図である。
【図6】第2画像の様子を示す説明図である。
【図7】第2画像に輪郭抽出フィルタを適用して得られる第3画像の様子を表す説明図である。
【図8】第3画像により表された輪郭を、第1画像に上書きして描画することにより得られる第4画像の様子を示す説明図である。
【図9】実施例1に係る処理の制御の流れを示すフローチャートである。
【図10】実施例2に係る第1画像と第2画像との生成処理の制御の流れを示すフローチャートである。
【図11】閾値比較により左右から輪郭を抽出した第3画像を示す説明図である。
【図12】閾値比較により上下から輪郭を抽出した第3画像を示す説明図である。
【図13】閾値比較により上下左右から輪郭を抽出した第3画像を示す説明図である。
【図14】閾値比較により上下左右から抽出した輪郭を用いて得られる第4画像を示す説明図である。
【図15】上下左右から濃さを考慮しつつ抽出した輪郭の様子を示す説明図である。
【図16】濃さのある不透明な輪郭を用いて生成された第4画像の様子を表す説明図である。
【発明を実施するための形態】
【0029】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0030】
(情報処理装置)
図1は、プログラムを実行することにより、本実施形態のゲーム装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0031】
本図に示す情報処理装置100は、いわゆるコンシューマゲーム機に相当するもので、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、インターフェース104、コントローラ105、外部メモリ106、画像処理部107、DVD−ROM(Digital Versatile Disc ROM)ドライブ108、NIC(Network Interface Card)109、音声処理部110、マイク111、ハードディスク(Hard Disk;HD)121、カメラ131を有する。各種の入出力装置は、適宜省略することができる。
【0032】
情報処理装置100を典型的なコンシューマゲーム機として機能させる場合には、まず、ユーザは、ゲーム用プログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着する。ついで、ユーザが電源を投入すると、当該ゲームプログラムが実行され、ユーザはゲームをプレイすることができるようになる。
【0033】
ただし、本実施形態においては、典型的には、DVD−ROMから、アプリケーションがHD 121にインストールされる。なお、DVD−ROMは、DVD−ROMドライブ108に装着される。そして、当該HD 121に記憶されたプログラムを実行することによって、ゲームを含む各種のアプリケーションが実行されることとする。
【0034】
なお、携帯型のゲーム装置においては、携帯可能とするために、HD 121を省略することも可能である。この場合、DVD−ROMドライブ108は利用されない。そして、ユーザは、ROMカセット用スロットにEEPROM(Electrically Erasable Programmable ROM)カセットを装着する。EEPROMカセットには、アプリケーション用プログラムが書き込まれている。そして、当該プログラムが実行されることとなる。このほか、外部メモリ106にアプリケーション用プログラムをインストールすることも可能である。
【0035】
さて、CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域を備える。CPU 101は、レジスタに対してALU(Arithmetic Logic Unit)(図示せず)を用いて、各種演算を行うことができる。行われる演算は、例えば、加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などである。さらに、CPU 101は、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように構成されていてもよい。また、CPU 101は、コプロセッサを備えることにより、このような高速演算を実現してもよい。
【0036】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録されている。IPLが実行されることにより、DVD−ROMに記録されたプログラムは、RAM 103に読み出される。ついで、CPU 101による当該プログラムの実行が開始される。また、ROM 102には、オペレーティングシステムのプログラムや各種のデータが記録されている。オペレーティングシステムは、情報処理装置100全体の動作を制御するために必要とされる。
【0037】
RAM 103は、データやプログラムを一時的に記憶する。RAM 103には、HD 121やDVD−ROM等から読み出されたプログラムやデータ、その他通信対戦ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設ける。CPU 101は、当該変数に格納された値に対して直接ALUを作用させて演算してもよい。また、CPU 101は、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻してもよい。
【0038】
コントローラ105は、インターフェース104を介して接続される。コントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【0039】
なお、コントローラ105は、必ずしも情報処理装置100に対して外付けにされている必要はなく、一体に形成されていても良い。携帯可能な画像処理装置のコントローラ105は、各種のボタンやスイッチから構成される。コントローラ105は、当該ボタンやスイッチに対する押圧操作を操作入力として扱う。このほか、タッチスクリーンを利用した情報処理装置100では、ユーザがペンや指を利用してタッチスクリーンをなぞった軌跡を操作入力として扱う。
【0040】
外部メモリ106は、インターフェース104を介して着脱自在に接続される。外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが記憶される。外部メモリ106は書き換え可能である。ユーザがコントローラ105を介して必要な指示入力を行うと、これらのデータは適宜外部メモリ106に記録される。
【0041】
上述の通り、アプリケーションプログラムを外部メモリ106にインストールして実行するような形態を採用することもできる。これは、外部メモリ106が大容量である場合に好適である。
【0042】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出す。読み出されたプログラムやデータは、RAM 103等に一時的に記憶される。
【0043】
画像処理部107は、まず、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理する。ついで、画像処理部107は、加工処理により得た画像情報を、フレームメモリ(図示せず)に記録する。フレームメモリは、画像処理部107に搭載されている。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され、画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0044】
携帯可能な画像処理装置のモニタとしては、小型の液晶ディスプレイを利用するのが典型的である。コントローラ105としてタッチスクリーンが利用される場合には、当該タッチスクリーンの表示パネルがモニタとして機能する。自宅で遊ぶためのゲーム装置のモニタとしては、CRT(Cathode Ray Tube)やプラズマディスプレイなどの表示装置を利用することも可能である。
【0045】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0046】
また、レンダリング画像を得る演算を高速実行することも可能である。レンダリング画像は、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰した画像である。レンダリング画像は、当該3次元空間内に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法などによりレンダリングすることにより得られる。
【0047】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、フォント情報にしたがって、文字列を2次元画像として描画することが可能である。なお、フォント情報は、文字の形状を定義する。文字列を表す画像は、フレームメモリや各ポリゴン表面へ描画される。
【0048】
NIC 109は、インターネット接続機器(図示せず)と、CPU 101との仲立ちを行うインターフェースである。NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続する際に用いられる。インターネット接続機器は、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等であっても良い。
【0049】
また、NIC 109経由でコンピュータ通信網から入手した情報を元に、HD 121等にアプリケーションプログラムをインストールすることも可能である。
【0050】
音声処理部110は、HD 121やDVD−ROMから読み出した音声データをアナログ音声信号に変換し、接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、音声処理部110は、ゲームの進行の中で発生させるべき効果音や楽曲データを生成する。そして、音声処理部110は、生成した効果音や楽曲データに対応した音声をスピーカや、ヘッドホン(図示せず)、イヤフォン(図示せず)から出力させる。
【0051】
音声処理部110は、HD 121やDVD−ROMに記録された音声データがMIDIデータである場合には、音源データを参照して、MIDIデータをPCMデータに変換する。なお、音声処理部110は、MIDI音源データを有する。また、当該音声データがADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、音声処理部110は、これを展開してPCMデータに変換する。PCMデータを、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換し、スピーカに出力することにより、音声出力が可能となる。
【0052】
さらに、情報処理装置100には、インターフェース104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、情報処理装置100は、適当なサンプリング周波数でA/D変換を行う。すなわち、マイク111からの音声信号は、PCM形式のディジタル信号に変換される。したがって、音声処理部110でミキシング等の処理を行うことが可能となる。
【0053】
本実施形態で利用する情報処理装置100は、上述のように、HD 121等の大容量外部記憶装置を用いるのが典型的である。HD 121は、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすこともできる。
【0054】
さらに、本実施形態で利用する情報処理装置100には、カメラ131が接続されている。このカメラ131は、現実世界の様子を動画ならびに静止画で撮影する。カメラ131によりユーザの顔の表情や体の姿勢を撮影し、CPU 101や専用ハードウェア(図示せず)を利用して画像認識を行うことにより、ユーザの顔の位置や表情、体の各部位の位置を取得することができる。コントローラ105に対する指示操作にかえて、画像認識により得られた各種の情報を利用することも可能である。
【0055】
このほか、キーボードや、マウスなどを接続する形態も採用することができる。キーボードは、ユーザからの文字列の編集入力を受け付ける。そして、マウスは、各種の位置の指定および選択入力を受け付ける。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータやサーバ用コンピュータ等を利用することもできる。
【0056】
以上で説明した情報処理装置100は、コンシューマ向けゲーム装置に相当するものである。しかしながら、各種の入出力処理が可能な電子機器であれば、本発明のゲーム装置を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明のゲーム装置を実現することが可能である。
【0057】
たとえば、ビジネス用コンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NIC、HDを構成要素として有する。また、ビジネス用コンピュータは、情報処理装置100よりも簡易な機能を備えた画像処理部を備える。そして、ビジネス用コンピュータにおいては、外部記憶装置としてフレキシブルディスク、光磁気ディスク、磁気テープ等が利用できる。ビジネス用コンピュータにおいては、コントローラ105ではなく、キーボードやマウスなどが入力装置として利用されるのが典型的である。
【0058】
本発明に係るゲーム装置は、情報処理装置100において、DVD−ROMやハードディスク121に記録されたゲーム用のプログラムを、CPU 101が実行し、情報処理装置100の各部を制御することによって実現することが可能である。
【0059】
また、専用の電子回路、あるいは、FPGA(Field Programmable Gate Array)等のような再構成可能な電子回路により、本発明に係るゲーム装置の各部を実現することも可能である。
【0060】
以下、本発明に係る各種の態様について説明する。以下では、理解を容易にするため、情報処理装置100にてゲーム用のプログラムを実現する場合を例として取り上げる。
【実施例1】
【0061】
図2は、本実施形態に係るゲーム装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【0062】
本実施形態に係るゲーム装置201は、生成部202、抽出部203、描画部204を備え、以下のように構成する。
【0063】
本実施形態に係るゲーム装置201は、ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す画像を画面に表示する際に、当該画像において、当該複数のオブジェクトに適切な輪郭線を描くものである。
【0064】
以下、理解を容易にするため、仮想空間内のオブジェクトや処理の対象となる画像を例示しながら説明するが、本発明の原理は、これらのオブジェクトや画像に限定されるものではなく、適宜変更が可能である。
【0065】
図3は、仮想空間内に配置されるオブジェクトの例を示す説明図である。以下、本図を参照して説明する。なお、本図は、製図における通常の規則を適用して描いているため、輪郭線が描かれているが、実際には、仮想空間内に輪郭線そのものは存在しない。
【0066】
本図に示す例では、仮想空間301内に、キャラクターの頭部を表す球オブジェクト302と、キャラクターの頸部を表す円柱オブジェクト303と、キャラクターの背景に配置される板オブジェクト304と、が配置されている。
【0067】
本例では、円柱オブジェクト303は、球オブジェクト302と交差しており、球オブジェクト302の中心305からずれた箇所を円柱オブジェクト303の中心軸306が通過している。
【0068】
円柱オブジェクト303と、球オブジェクト302と、は、いずれも白色であるが、板オブジェクト304は、これらとは異なる色彩である。そこで、板オブジェクト304の色彩は、ハッチングにより描かれている。
【0069】
これらのオブジェクト302、303、304を、仮想空間301内に設定された視点307から視線308の方向へ、見た様子を、透視投影もしくは平行投影によって描画することにより、仮想空間内の様子を表す画像を得ることができる。
【0070】
なお、本例では、理解を容易にするため、あらゆる方向から光が当たる環境光源を想定しているが、1つもしくは複数の点光源や平行光源を仮想空間301内に配置したり、これら各種の光源を組み合わせて利用することも可能である。
【0071】
また、本例では、オブジェクトとして球や円柱、板を採用しているが、オブジェクトとして、多角形(ポリゴン)を採用したり、曲面を表すサーフェスを採用することも可能である。
【0072】
オブジェクト302、303、304の位置や向き、色彩や、視点307の位置や、視線308の向き等の情報は、RAM 103内に記憶される。
【0073】
すなわち、生成部202は、ゲーム世界を表す仮想空間301内に配置される複数のオブジェクトを当該仮想空間301内に設定される視点から当該仮想空間301内に設定される視線方向に見た様子を表す第1画像を生成する。
【0074】
図4は、第1画像の例を示す説明図である。以下、本図を参照して説明する。
【0075】
第1画像401は、縦横に桝目状に画素が並んだビットマップ形式の画像である。本図では、理解を容易にするため、画素数を極めて少なく設定しているが、画素数は任意に変更が可能である。また、本図では、理解を容易にするため、第1画像401の外周に枠線を描いているが、画素同士の境界線は描いていない(以下同様)。
【0076】
第1画像401の中央には、球オブジェクト302と円柱オブジェクト303とが白色で描画されている。上記のように、環境光源を想定しているため、両者の境界線は、描画されていない。このため、キャラクターの顎の輪郭がわかりにくくなっている。
【0077】
また、第1画像401の周縁には、板オブジェクト304が見えている。すなわち、視点306から視線307の方向に仮想空間301を見たときに、その視界は板オブジェクト304で覆われている。
【0078】
また、球オブジェクト302ならびに円柱オブジェクト303と、板オブジェクト304と、は、白色か、ハッチングがなされているか、の差があるため、その境界はわかるが、やはり輪郭線は描かれていない。
【0079】
従来、第1画像401に対して輪郭線を施す際には、第1画像401に対して、輪郭抽出フィルタを適用していた。この輪郭抽出フィルタとは、ハイパスフィルタに相当するものである。
【0080】
最も単純な輪郭抽出フィルタは、ある画素と、当該画素に隣接する画素と、の画素値の差が、閾値を超えた場合に、当該ある画素を輪郭であるとみなすものである。
【0081】
輪郭抽出フィルタには、どの画素同士を比較するか、閾値をどのように設定するか、によって、各種のバリエーションが提案されている。また、輪郭抽出フィルタには、画素値の差を輪郭の色の濃さとして採用する手法もある。
【0082】
図5は、第1画像401に対して、輪郭抽出フィルタを適用した従来例を示す説明図である。以下、本図を参照して説明する。
【0083】
本例の輪郭抽出フィルタは、ある画素と、当該ある画素の右側もしくは下側の画素と、の画素値の差があらかじめ定めた閾値を超えた場合に、当該ある画素を輪郭とするものである。
【0084】
本図には、示す第1画像401に単純に輪郭抽出フィルタを適用して得られる従来例の画像451を示す。従来例の画像451では、球オブジェクト302と板オブジェクト304との境界、ならびに、円柱オブジェクト303と板オブジェクト304との境界を表す輪郭452が描かれている。上記の境界においては、第1画像401で描画される色彩が異なるからである。
【0085】
なお、輪郭452が左右非対称となっているのは、本例で適用した輪郭抽出フィルタが左右非対称であるからである。
【0086】
一方、球オブジェクト302と円柱オブジェクト303とは、第1画像401で同じ色彩で描かれているため、その境界は、輪郭抽出フィルタを単純に適用するだけでは得られない。
【0087】
そこで、本実施形態では、以下のような技術を採用する。すなわち、生成部202は、複数のオブジェクトのうち当該第1画像401における各画素位置に描画されている箇所の視点307に対する奥行を表す奥行値を各画素位置における画素値とする第2画像を生成する。
【0088】
図6は、第2画像の様子を示す説明図である。以下、本図を参照して説明する。
【0089】
本図に示すように、第2画像501は第1画像401と幅、高さとも同じサイズの画像である。第1画像401は、カラー画像とすることも、グレイスケール画像とすることも可能であるが、第2画像501は、グレイスケール画像とするのが典型的である。
【0090】
本図においては、理解を容易にするため、グレイスケール画像における白、灰色、黒を、各画素のハッチングの濃さによって表現している。
【0091】
第2画像501における各画素は、画素値として、その画素に描かれているオブジェクトの部分の、視点307に対する奥行が採用されている。視点307に対する奥行としては、以下のようなものを採用することができる。
(a)視点307を原点、視線方向に伸びる座標軸をZ軸としたときの、その画素に描かれているオブジェクトの部分の、Z軸における座標値。いわゆるZ値である。
(b)視点307と、その画素に描かれているオブジェクトの部分と、の距離。
(c)上記(a)(b)において、その画素に描かれているオブジェクトの部分ではなく、オブジェクトの代表点(中心点や重心等、仮想空間301内におけるオブジェクトの位置を定める点。)を採用する態様。すなわち、その画素に描かれているオブジェクトの代表点のZ値や、当該オブジェクトの代表点と視点307との距離。
【0092】
すなわち、奥行としては、視点307に対して、各オブジェクトがどの程度離れているか、あるいは、どの程度近いか、を表す数値パラメータであれば、任意のものを採用することができる。
【0093】
各画素値は、8ビットで明暗を表現するグレイスケール画像では、0〜255の何れかの整数値をとり、16ビットで明暗を表現するグレイスケール画像では、0〜65535の何れかの整数値をとる。他のビット数により第2画像501を表現する場合にも、各画素値は、0〜上限値の間のいずれかの値をとるのが一般的である。
【0094】
そこで、視点307から視線308の方向に見えるオブジェクトの奥行を、上記の0〜上限値の間に適切にマッピングする。
【0095】
最も単純には、視点307から視線308の方向に見えるオブジェクトの各部のうち、視点に最も近い最近点から、視点から最も遠い最遠点までの奥行を、上記の0〜上限値の間に均等に割り振るという手法が考えられる。
【0096】
また、3次元グラフィックスの技術を利用して第1画像401を生成する際には、仮想空間内に配置されるオブジェクトのうち、描画対象となるオブジェクトを、奥行の範囲で選択することがある。この場合に、当該奥行の範囲の下限から上限までを、画素値の0から上限値までに均等に割り振ることとしても良い。
【0097】
本図では、上記(a)を採用した例を表示している。したがって、板オブジェクト304は、視点307から遠いから、白色に近い、薄いハッチングで描かれており、球オブジェクト302や円柱オブジェクト303は、視点307に近いから、板オブジェクト304に比べて黒色に近い、濃いハッチングで描かれている。
【0098】
また、球オブジェクト302は、円柱オブジェクト303よりも視点307に近いから、両者の間にもハッチングの濃さに差がある。
【0099】
そこで、本実施形態は、この奥行の差を用いて、輪郭を得るのである。
【0100】
すなわち、本実施形態では、抽出部203が、第2画像501に輪郭抽出フィルタを適用することにより、第3画像を得る。
【0101】
図7は、第2画像501に輪郭抽出フィルタを適用して得られる第3画像の様子を表す説明図である。以下、本図を参照して説明する。
【0102】
上記のように、輪郭抽出フィルタは、画素値に大きな差があるところを輪郭とみなすフィルタである。したがって、図4の従来例で利用した輪郭抽出フィルタを第2画像501に適用すると、視点307に対する奥行が異なる箇所が、輪郭として抽出されることになる。
【0103】
本図に示すように、第3画像601で抽出されている輪郭602は、球オブジェクト302、円柱オブジェクト303、板オブジェクト304の三者の間のすべての境界を描くものである。
【0104】
すなわち、本図の第3画像601では、輪郭602として、キャラクターの頭部の輪郭602a、キャラクターの頸部の輪郭602bのほか、キャラクターの顎部の輪郭602cが描かれている。
【0105】
このように、従来例では不可能であって輪郭抽出が、本実施形態では簡単な画像処理を行うことで可能となるのである。
【0106】
最後に、描画部204は、第1画像401を背景として、第3画像601により表される輪郭602を描画することにより、第4画像を得る。
【0107】
図8は、第3画像601により表された輪郭602を、第1画像401に上書きして描画することにより得られる第4画像の様子を示す説明図である。以下、本図を参照して説明する。
【0108】
本図に示すように、第4画像701では、第1画像401に描かれていた球オブジェクト302、円柱オブジェクト303、板オブジェクト304の境界に、輪郭602が描画されている。
【0109】
本図では、輪郭602として、黒色を採用して描画しているが、本例のように、画素が輪郭602に相当するか否かのみを判定する手法では、第1画像401に対して輪郭602を描画する際の色は、任意の色とすることができる。
【0110】
このほか、輪郭602の濃さを設定する態様では、輪郭602の濃さに応じて第1画像401の画素値の明度を暗くする、という手法により、輪郭を描くこともできる。すなわち、遠近の差が大きいところは暗くなり、遠近の差が小さいところは色にほとんど変化がない、という態様である。
【0111】
さらに、輪郭602の濃さを設定する態様では、第4画像701において輪郭602を描く際に、あらかじめ、輪郭602の色を定めておき、輪郭602の濃さを「不透明度」として採用して、第1画像401とαブレンディングすることにより、輪郭を描くこととしても良い。
【0112】
なお、上記の、輪郭の濃さに応じて画素の明度を暗くする、という手法は、輪郭602の色を黒と定めて、第1画像401とαブレンディングする手法に相当する。
【0113】
図9は、本実施形態に係る処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0114】
本処理は、情報処理装置が本実施形態に係るゲーム装置201を実現するためのプログラムを実行することによって開始される。
【0115】
本処理が開始されると、ゲーム装置201の生成部202は、RAM 103等に記憶された仮想空間内の種々の情報から、第1画像401と、第2画像501と、を生成する(ステップS801)。
【0116】
生成部202は、まず第1画像401を生成し、次に第2画像501を生成することとしても良いが、第1画像401と第2画像501を並行して生成するのが典型的である。
【0117】
本実施形態では、生成部202は、CPU 101の制御の下、画像処理部107が動作することによって実現され、RAM 103に、第1画像401と、第2画像501と、が出力される。
【0118】
なお、情報処理装置100の構成によっては、第1画像401や第2画像501等、画像処理部107により出力される画像の出力先は、RAM 103のうち、画像処理部107との連携が密に構成されている画像処理専用のビデオRAM領域やフレームバッファ領域とすることで、処理の高速化を図ることができる。
【0119】
ついで、ゲーム装置201の抽出部203は、第2画像501に対して輪郭抽出フィルタを適用して、第3画像601を得る(ステップS802)。
【0120】
ここで、抽出部203は、CPU 101の制御の下、RAM 103内に記憶された第2画像501に対して、画像処理部107が動作することにより実現され、輪郭抽出フィルタの適用結果である第3画像601は、RAM 103に出力される。
【0121】
最後に、ゲーム装置201の描画部204は、第1画像401に対して、第3画像601により表される輪郭602を描画することにより、第4画像701を得る(ステップS803)。
【0122】
本実施形態では、描画部204は、CPU 101の制御の下、RAM 103内に記憶された第1画像401と第3画像601を参照して、画像処理部107が第1画像401に輪郭602を描画することにより実現され、描画の結果得られる第4画像701は、RAM 103に出力される。
【0123】
本実施形態によれば、簡易な画像処理によって、従来は抽出することができなかった輪郭を、適切に抽出することができるようになる。
【実施例2】
【0124】
本実施例は、上記の実施例において、第1画像401と第2画像501とを並行して生成する好適実施形態である。
【0125】
図10は、本実施例に係る第1画像401と第2画像501との生成処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0126】
本図に示す生成処理は、図9に示すフローチャートのステップS801に相当するものである。
【0127】
本処理が開始されると、CPU 101は、RAM 103内に、第1画像401用の第1画像バッファと、第2画像501用の第2画像バッファと、を確保する(ステップS811)。
【0128】
たとえば、第1画像401を24ビットカラー、第2画像501を8ビットグレイスケールとし、大きさを横wドット、縦hドットとした場合には、第1画像401用に3×w×hバイト、第2画像501用にw×hバイトのメモリ領域が必要となる。
【0129】
ついで、CPU 101は、第1画像バッファと第2画像バッファをクリアする(ステップS812)。
【0130】
第1画像バッファは、所定の背景色、たとえば、無限遠方を表す色等を表す画素値で初期化される。第2画像バッファは、最も遠い奥行を表す値、すなわち、第2画像501の画素値の最大値で初期化される。たとえば、第2画像501を8ビットグレイスケールで描く場合、第2画像501の画素値の最大値は255である。
【0131】
そして、RAM 103内に記憶されている情報に基づいて、仮想空間301内に配置されている描画対象となるオブジェクトのそれぞれにつき、次の処理を繰り返す(ステップS813)。
【0132】
まず、視点306の位置、視線307の方向に基づいて、当該オブジェクトが第1画像401内に投影される領域を計算する(ステップS814)。
【0133】
次に当該領域内の画素の画素位置のそれぞれについて、次の処理を繰り返す(ステップS815)。
【0134】
まず、当該オブジェクトのうち、繰り返しにおいて現在注目している画素の画素位置に投影されている部分の奥行を取得する(ステップS816)。
【0135】
上記のように、当該オブジェクトの投影部分の奥行としては、投影部分のZ値、投影部分と視点306との距離、当該オブジェクトの代表点のZ値、あるいは、当該オブジェクトの代表点と視点306との距離などを採用することができる。
【0136】
そして、得られた奥行を、0から、第2画像501における画素値の最大値までの、整数値にマッピングして、奥行値を得る(ステップS817)。
【0137】
ついで、第2画像バッファにおける当該画素位置の画素値を取得する(ステップS818)。
【0138】
そして、マッピングの結果得られた奥行値が、取得された第2画像バッファ内の画素値より、小さいかを判定する(ステップS819)。
【0139】
マッピング値の方が小さければ(ステップS819;Yes)、当該オブジェクトは、今までに描画されたオブジェクトよりも視点に近いことになる。そこで、第1画像バッファ内の当該画素位置に、当該オブジェクトの色の画素値を書き込み(ステップS820)、第2画像バッファ内の当該画素位置に、奥行値を書き込み(ステップS821)、ステップS822に進む。
【0140】
一方、マッピングの結果得られた値が、取得された第2画像バッファ内の画素値以上である場合(ステップS819;No)、当該オブジェクトは、今までに描画されたオブジェクトよりも視点に近いとはいえない。そこで、そのままステップS822に進む。
【0141】
この処理を、当該領域内の全画素の画素位置について繰り返す(ステップS822)。
【0142】
ステップS815〜ステップS822の繰り返し処理が終わると、当該オブジェクトの描画が完了したこととなる。
【0143】
そこで、ここまでの処理を、描画対象となるオブジェクトのすべてについて繰り返す(ステップS823)。
【0144】
ステップS813〜ステップS823の繰り返し処理が終わると、全オブジェクトの描画が完了したこととなり、第1画像バッファには第1画像401が、第2画像バッファには第2画像501が、それぞれ生成されている。
【0145】
3次元グラフィックスでは、奥行値に相当する情報を用いてあらかじめオブジェクトをZ軸方向にソートし、遠い順に描画する、という手法を用いることもあるが、本実施形態は、この態様と組み合わせることも可能である。また、オブジェクトをZ軸方向の遠近に基づいてソートしない場合であっても、どのオブジェクトがどのオブジェクトを隠すか、を適切に判定することが可能である。
【0146】
本態様によれば、画素に投影されるオブジェクトの部分ごとに遠近を判定した場合は特に、オブジェクトを適切に第1画像401に描画することができる。
【0147】
また、第1画像401の描画の際の遠近判定に用いる情報を、そのまま第2画像501として利用することができるため、メモリならびに計算時間の節約が可能となる。
【実施例3】
【0148】
本実施形態は、上記実施例における奥行値の計算の好適実施形態の一つに相当するものである。
【0149】
すなわち、本実施例では、各画素位置に対する奥行値として、視点307からオブジェクトのうち当該画素位置に投影される箇所へのベクトルと、視線方向の単位ベクトルと、の内積に、第2画像501の画素値がとりうる範囲の整数を値域とする単調増加関数を適用することにより得られる。
【0150】
ここで、視点307からオブジェクトの投影部分へ向かうベクトルと、視線308の方向の単位ベクトルと、の内積は、いわゆるZ値に相当するものである。
【0151】
また、Z値を、0〜255の整数値や、0〜65535の整数値にマッピングする手法としては、一般的な3次元グラフィックスの手法では、視点に近い側は細かく、視点に遠い側は荒く割り振るのが一般的である。
【0152】
一方で、オブジェクトの色彩が近似し、近い位置に配置されている場合には、Z値も近い値になる。そこで、このような場合には、描画対象となるオブジェクトの奥行範囲を設定し、最も近い奥行から最も遠い奥行までを均等に割り振ることもできる。
【0153】
このほか、特定のキャラクターを綺麗に描画したい場合等には、当該キャラクターを構成するオブジェクトと、それ以外のオブジェクトを分類して、キャラクターを構成するオブジェクトが含まれる奥行範囲を求める。たとえば、キャラクターの代表点のZ値から前後の所定範囲を、当該奥行範囲とする。
【0154】
そして、当該奥行範囲内については、細かく割り振り、それ以外の範囲については荒く割り振る、等の手法を採用しても良い。
【0155】
いずれの手法においても、奥行値は、視点307から遠ければ遠いほど、すなわち、Z値が大きければ大きいほど、大きくなるような値である。したがって、Z値から奥行値への変換は、単調増加関数(単調な非減少関数)を適用することによって得られる。
【0156】
さて、上記のように、奥行値は、3次元グラフィックスによりオブジェクトを描画する際に使用するものである。このため、画像処理部107が専用ハードウェアで実現されている場合には、オブジェクトや視点306、視線307の情報、マッピングの割り振りの情報を与えると、第1画像401がRAM 103内に生成され、その副作用として、第2画像501が生成されることがある。
【0157】
このような態様では特に、高速に、第1画像401と第2画像501とを生成することができる。
【実施例4】
【0158】
上記実施例の説明では、輪郭抽出フィルタとして、第2画像501におけるある画素と、当該ある画素の右側もしくは下側の画素と、の画素値の差があらかじめ定めた閾値を超えた場合に、当該ある画素を輪郭とするものを採用していた。
【0159】
以下、理解を容易にするため、第1画像401、第2画像501第3画像601、第4画像701の大きさが、いずれも、幅w、高さhであるとし、横方向の座標値x (0≦x<w)、縦方向の座標値y (0≦y<h)の位置(x,y)における画素値を、それぞれ、s[x,y]、d[x,y]、r[x,y]、g[x,y]とし、x軸は左から右へ、y軸は上から下へ、それぞれ伸びるものとする。
【0160】
ただし、態様によっては、軸の方向は逆向きにしても良い。
【0161】
第1画像401と第4画像701がカラー画像の場合には、s[x,y]およびg[x,y]は、RGB表現による3要素のベクトル値とするのが典型的である。
【0162】
また、第2画像501は、グレイスケール画像であるから、d[x,y]は、スカラー値とするのが典型的である。
【0163】
また、第3画像601の画素値s[x,y]も、スカラー値とするのが典型的である。
【0164】
また、グレイスケール画像における画素値の最大値をMとする。8ビットグレイスケールでは、M=255であり、16ビットグレイスケールでは、M=65535である。
【0165】
グレイスケール画像のある画素の画素値がvである場合、ネガポジ変換をした画素値はM-vであるから、第3画像601として、輪郭の画素をネガ表現(画素値が大きい、暗い画素)とするか、ポジ表現(画素値が小さい、明るい画素)とするか、は任意に選択が可能である。なお、図7においては、ネガ表現を採用し、黒(暗い画素)で輪郭602が描かれている。
【0166】
以下では、理解を容易にするため、ネガ表現で説明を行うが、上記の変換式により、ポジ表現で実施をすることも容易である。
【0167】
さて、上記実施例で採用されている輪郭抽出フィルタは、第2画像501の画素値d[-,-]から、第3画像601の画素値r[-,-]を、以下のように求めるものである。
【0168】
すなわち、0≦x<w-1かつ0≦y<h-1について、
r[x,y] = M (|d[x,y]-d[x+1,y]|>T あるいは |d[x,y]-d[x,y+1]|>T)
= 0 (上記以外)
0≦y<hについて、
r[w-1,y] = 0,
0≦x<wかつy=h-1について、
r[x,h-1] = 0,
ただし、Tは、所定の閾値である。
【0169】
これは、まず最初に、0≦x<wかつ0≦y<hのすべてについて、
r[x,y] ← 0
と初期化してから、次に、0≦x<w-1かつ0≦y<h-1のそれぞれについて、「|d[x,y]-d[x+1,y]|>T あるいは |d[x,y]-d[x,y+1]|>T」が成立した場合に
r[x,y] ← M
のように代入したものと同じである。
【0170】
この輪郭抽出フィルタでは、あるオブジェクトの描画結果に対する輪郭の大きさは、当該オブジェクトの描画結果の大きさとほぼ同じであるが、輪郭は、図7、図8に示すように、当該オブジェクトの描画結果から、すこしだけ左上にずれた状態で抽出される。
【0171】
このほか、輪郭をオブジェクトの描画結果の外側に描く手法もある。第1の手法は、オブジェクトの左右の輪郭を抽出するものである。すなわち、0≦x<wかつ0≦y<hのすべてについて、
r[x,y] ← 0
と初期化してから、0≦x<w-1かつ0≦y<hのそれぞれについて、d[x,y]>d[x+1,y]+Tが成立した場合に
r[x,y] ← M
のように代入し、d[x,y]+T<d[x+1,y]が成立した場合に
r[x+1,y] ← M
のように代入したものである。
【0172】
この手法は、左右方向の操作のみを行うものであり、オブジェクトの描画領域の左右外側に、そのオブジェクトの輪郭が抽出される。
【0173】
図11は、閾値比較により左右から輪郭を抽出した第3画像601を示す説明図である。以下、本図を参照して説明する。
【0174】
本図のように、第3画像601では、水平方向に輪郭602が抽出されており、キャラクターの頭頂部や顎底部などの上下で、輪郭602が途切れている。
【0175】
第2の手法は、オブジェクトの上下の輪郭を抽出するものである。すなわち、0≦x<wかつ0≦y<hのすべてについて、
r[x,y] ← 0
と初期化してから、0≦x<wかつ0≦y<h-1のそれぞれについて、d[x,y]>d[x,y+1]+Tが成立した場合に
r[x,y] ← M
のように代入し、d[x,y]+T<d[x,y+1]が成立した場合に
r[x,y+1] ← M
のように代入したものである。
【0176】
この手法は、上下方向の操作のみを行うものであり、オブジェクトの描画領域の上下外側に、そのオブジェクトの輪郭が抽出される。
【0177】
図12は、閾値比較により上下から輪郭を抽出した第3画像601を示す説明図である。以下、本図を参照して説明する。
【0178】
本図のように、第3画像601では、垂直方向に輪郭602が抽出されており、キャラクターの左右で、輪郭602が途切れている。
【0179】
第3の手法は、上記の第1の手法と第2の手法を両方とも適用するものである。
【0180】
図13は、閾値比較により上下左右から輪郭を抽出した第3画像601を示す説明図であり、図14は、上下左右から抽出された輪郭を用いて得られる第4画像701を示す説明図である。以下、本図を参照して説明する。
【0181】
本図のように、第3画像601では、水平、垂直の両方向で輪郭602が抽出されており、輪郭602の途切れはない。
【0182】
また、第4画像701においては、輪郭602は、左右対象に、球オブジェクト302や円柱オブジェクト303の外側に付されることになっている。
【0183】
なお、上記の手法では、左右外側、上下外側に輪郭が抽出されるようにするため、大小関係の比較の結果に基づいて、輪郭を表す画素値の代入先を、r[x,y]とr[x+1,y]の間で、あるいは、r[x,y]とr[x,y+1]の間で、それぞれ切り替えることとしているが、画像処理部107の構成によっては、代入先をすべてr[x,y]とすることによって、高速な計算が可能となる場合もある。代入先は、以下の各態様においても、同様に選択が可能である。
【0184】
これらの手法は、隣接する画素の奥行の差が閾値Tよりも大きい場合に、視点307から遠い側の画素に、最大値Mを与えることにより、輪郭を抽出する。
【0185】
これらの輪郭を第4画像701において描く色をc(RGBのベクトル値)とする。すると、0≦x<wかつ0≦y<hのすべてについて、
g[x,y] = s[x,y] (r[x,y] = 0);
= c (r[x,y] > 0)
を実行することによって、第4画像701を生成することができる。
【0186】
また、第1画像401が記憶されている第1画像バッファに対して(r[x,y] = M)の場合に画素位置(x,y)に色cを上書きすることによって、第4画像701を生成することとしても良い。
【0187】
このほか、0≦x<wかつ0≦y<hのすべてについて、
g[x,y] = (M-r[x,y])/M×s[x,y] + r[x,y]/M×c
のように、透明度を表すパラメータとして(M-r[x,y])/Mやr[x,y]/Mを利用することによって、第4画像701を生成しても良い。
【0188】
上記第1の手法から第3の手法までは、用途や計算量、オブジェクトが移動する方向やオブジェクトにより構成されるキャラクターの形状などに応じて、適宜選択することが可能である。
【実施例5】
【0189】
上記実施例では、画素値の差と閾値とを比較して輪郭を抽出していたが、輪郭に濃さを想定することも可能である。
【0190】
すなわち、まず、実施例4と同様に、第3画像601における各画素位置の画素値の初期値を0とする。
【0191】
この後に、実施例4の第1の手法に類似する手法として、
第2画像501における各画素位置を左から右に、隣り合う画素位置を走査して、左の画素位置の画素値が右の画素位置の画素値より大きければ、当該左の画素位置の画素値と当該右の画素位置の画素値との差で、第3画像601における当該左の画素位置の画素値を更新し、
第2画像501における各画素位置を右から左に、隣り合う画素位置を走査して、右の画素位置の画素値が左の画素位置の画素値より大きければ、当該右の画素位置の画素値と当該左の画素位置の画素値との差で、第3画像601における当該右の画素位置の画素値を更新する
手法がある。
【0192】
この手法では、0≦x<w-1かつ0≦y<hのそれぞれについて、d[x,y]>d[x+1,y]が成立した場合に
r[x,y] ← d[x,y]-d[x+1,y]
のように代入し、d[x,y]<d[x+1,y]が成立した場合に
r[x+1,y] ← d[x+1,y]-d[x,y]
のように代入する。
【0193】
また、実施例4の第2の手法に類似する手法として、
第2画像501における各画素位置を上から下に、隣り合う画素位置を走査して、上の画素位置の画素値が下の画素位置の画素値より大きければ、当該上の画素位置の画素値と当該下の画素位置の画素値との差で、第3画像601における当該上の画素位置の画素値を更新し、
第2画像501における各画素位置を下から上に、隣り合う画素位置を走査して、下の画素位置の画素値が上の画素位置の画素値より大きければ、当該下の画素位置の画素値と当該上の画素位置の画素値との差で、第3画像601における当該下の画素位置の画素値を更新する
手法もある。
【0194】
この手法では、0≦x<wかつ0≦y<h-1のそれぞれについて、d[x,y]>d[x,y+1]が成立した場合に
r[x,y] ← d[x,y]-d[x,y+1]
のように代入し、d[x,y]<d[x,y+1]が成立した場合に
r[x,y+1] ← d[y+1]-d[x,y]
のように代入する。
【0195】
さらに、実施例4の第3の手法と同様に、これらを組み合わせることもできる。
【0196】
これらの手法では、輪郭の濃さが、0〜Mまでの多段階で表現される。
【0197】
このほか、隣接する画素の差が所定の閾値よりも小さい場合には、差の代入を実行しない、という手法を採用しても良い。
【0198】
このような閾値としては、たとえば、第2画像501内で最も大きい奥行値と最も小さい奥行値との差を、所定の定数(たとえば、2、3、4、5等)で割った結果等を採用することができる。
【0199】
なお、差に対して閾値を採用しない場合には、第3画像301は、オブジェクトの凹凸に基づいた濃淡のある影に類似することとなり、差に対して閾値を採用する場合には、第3画像301は、ある程度濃い部分のみ、影として描いたものに類似することになる。
【0200】
図15は、上下左右から濃さを考慮しつつ抽出した輪郭の様子を示す説明図である。以下、本図を参照して説明する。なお、本図では、色の濃さ(暗さ)を、ハッチングの濃さで表現している。
【0201】
本図に示すように、球オブジェクト302と板オブジェクト304の間は大きく離れ、円柱オブジェクト303と板オブジェクト304の間は大きく離れているから、輪郭602のうち、球オブジェクト302と板オブジェクト304の境界ならびに円柱オブジェクト303と板オブジェクト304の境界は、濃くて暗くなっている。
【0202】
また、輪郭602のうち、球オブジェクト302と円柱オブジェクト303の間の顎は、薄くて明るくなっている。
【0203】
さらに、本例では、差に閾値を設けており、球オブジェクト302内や円柱オブジェクト303内では、奥行値の差が閾値よりも小さいため、輪郭としては認識されず、白色で描かれている。
【0204】
このように、濃さが得られた輪郭602を利用する場合、輪郭602の基本色をc(RGBのベクトル値)としたときに、0≦x<wかつ0≦y<hのすべてについて、
g[x,y] = (M-r[x,y])×s[x,y] + r[x,y]×c
を実行することによって、半透明な輪郭を描いた第4画像701を生成することができる。
【0205】
ここで、c=(0,0,0)、すなわち、輪郭602の基本色を黒とした場合には、第4画像701の各画素位置(x,y)について、当該画素位置(x,y)の第1画像401における画素値s[x,y]により表される色を、当該画素位置の第3画像601における画素値r[x,y]により表される強さで暗くした色を表す画素値(M-r[x,y])×s[x,y]を、第4画像における当該画素位置の画素値としたことになる。
【0206】
このほか、
g[x,y] = s[x,y] (r[x,y] = 0);
= (M-r[x,y])×c (r[x,y] > 0)
として、不透明な輪郭を描いた第4画像701を生成しても良い。
【0207】
これは、第4画像701の各画素位置について、
(a)当該画素位置(x,y)の第3画像601における画素値r[x,y]が0であれば、当該画素位置(x,y)の第1画像401における画素値s[x,y]を、第4画像701における当該画素位置の画素値s[x,y]とし、
(b)当該画素位置(x,y)の第3画像601における画素値r[x,y]が0でなければ、所定の色相ならびに彩度を有し、当該画素位置の第3画像601における画素値r[x,y]を暗度とする色を表す画素値(M-r[x,y])×cを、第4画像701における当該画素位置の画素値g[x,y]とする
ことに相当する。
【0208】
図16は、濃さのある不透明な輪郭を用いて生成された第4画像701の様子を表す説明図である。以下、本図を参照して説明する。
【0209】
本図に示す第4画像701の輪郭602は、図13のうち、白色の部分(r[x,y] = 0に相当)は、第1画像401上に描画せず、有色の部分(r[x,y] > 0に相当)は、第1画像401上にそのまま描画したものであり、輪郭602に濃淡が付されている。
【0210】
本手法によると、輪郭の濃淡を簡易な計算に自然に表現することができるようになる。
【0211】
なお、本実施例においては、隣り合う画素の画素値の差を、そのまま第3画像601における輪郭602の濃さとして採用したが、当該差に0からMまでの整数を値域とする単調増加関数(単調非増加関数)を適用することにより得られる値を、第3画像601における輪郭602の濃さとして採用しても良い。
【0212】
このほか、画像処理部107が用意している画像処理演算機能を利用する場合等には、以下のように輪郭を描く手法を採用しても良い。すなわち、
clamp01(x) = 0 (x≦0);
= x (0<x<1);
= 1 (1≦x)
なる関数clamp01(x)、パラメータK、閾値threshold、パラメータc_scaleに基づいて、
opacity = clamp01(clamp01(K×(|d[x,y]-d[x+1,y]| +
|d[x,y]-d[x,y+1]|) -
threshold)×c_scale
により、パラメータopacityを計算する。
【0213】
ここで、パラメータKは、画素値の差をどれだけ強調するかを調整するものであり、閾値thresholdは輪郭を描くか否かを決める値であり、パラメータc_scaleは、0以上1以下の範囲で輪郭の濃さを調整するものである。
【0214】
そして、計算されたopacityを用いて、
g[x,y] = (1-opacity)×s[x,y] + opacity×c
とする。
【0215】
このように、画素値の差に応じて輪郭に濃さを設ける際には、差が大きくなるほど輪郭が濃くなるような種々の濃さの設定手法を採用することができる。
【産業上の利用可能性】
【0216】
以上説明したように、本発明によれば、ゲーム世界を表す仮想空間に配置されるオブジェクトの輪郭を描画するのに好適なゲーム装置、ゲーム装置の制御方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【符号の説明】
【0217】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
121 HD
131 カメラ
201 ゲーム装置
202 生成部
203 抽出部
204 描画部
301 仮想空間
302 球オブジェクト
303 円柱オブジェクト
304 板オブジェクト
305 球オブジェクトの中心
306 円柱オブジェクトの中心軸
307 視点
308 視線
401 第1画像
451 従来例の画像
452 従来例の輪郭
501 第2画像
601 第3画像
602 輪郭
701 第4画像

【特許請求の範囲】
【請求項1】
ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成部、
前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出部、
前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画部
を備えることを特徴とするゲーム装置。
【請求項2】
請求項1に記載のゲーム装置であって、
前記生成部は、
前記第2画像の画素値がとりうる最大値を、当該第2画像における各画素位置の画素値の初期値とし、
前記複数のオブジェクトのそれぞれについて、
(a)当該オブジェクトが投影される領域を求め、
(b)前記求められた領域内の画素位置のそれぞれについて、当該画素位置の前記第2画像における画素値が当該オブジェクトの当該画素位置に投影される箇所に対する奥行値よりも小さければ、当該箇所が当該画素位置に投影される画素値を求めて、前記第1画像における当該画素位置の画素値を当該求められた画素値に更新し、前記第2画像における当該画素位置の画素値を当該オブジェクトの奥行値に更新する
処理を繰り返すことにより、前記第1画像と、前記第2画像と、を生成する
ことを特徴とするゲーム装置。
【請求項3】
請求項2に記載のゲーム装置であって、
前記各画素位置に対する奥行値は、前記視点から前記オブジェクトのうち当該画素位置に投影される箇所へのベクトルと、前記視線方向の単位ベクトルと、の内積に、前記第2画像の画素値がとりうる範囲の整数を値域とする単調増加関数を適用することにより得られる
ことを特徴とするゲーム装置。
【請求項4】
請求項3に記載のゲーム装置であって、
前記輪郭抽出フィルタは、
前記第3画像における各画素位置の画素値の初期値を0とし、
前記第2画像における各画素位置を左から右に、隣り合う画素位置を走査して、左の画素位置の画素値が右の画素位置の画素値より大きければ、当該左の画素位置の画素値と当該右の画素位置の画素値との差で、前記第3画像における当該左の画素位置の画素値を更新し、
前記第2画像における各画素位置を右から左に、隣り合う画素位置を走査して、右の画素位置の画素値が左の画素位置の画素値より大きければ、当該右の画素位置の画素値と当該左の画素位置の画素値との差で、前記第3画像における当該右の画素位置の画素値を更新する
ことを特徴とするゲーム装置。
【請求項5】
請求項4に記載のゲーム装置であって、
前記輪郭抽出フィルタは、さらに、
前記第2画像における各画素位置を上から下に、隣り合う画素位置を走査して、上の画素位置の画素値が下の画素位置の画素値より大きければ、当該上の画素位置の画素値と当該下の画素位置の画素値との差で、前記第3画像における当該上の画素位置の画素値を更新し、
前記第2画像における各画素位置を下から上に、隣り合う画素位置を走査して、下の画素位置の画素値が上の画素位置の画素値より大きければ、当該下の画素位置の画素値と当該上の画素位置の画素値との差で、前記第3画像における当該下の画素位置の画素値を更新する
ことを特徴とするゲーム装置。
【請求項6】
請求項4または5に記載のゲーム装置であって、
前記輪郭抽出フィルタは、前記隣り合う画素位置の画素値の差にかえて、当該差に前記第3画像の画素値がとりうる範囲の整数を値域とする単調増加関数を適用することにより得られる値で、前記第3画像における画素値を更新する
ことを特徴とするゲーム装置。
【請求項7】
請求項4から6のいずれか1項に記載のゲーム装置であって、
前記描画部は、前記第4画像の各画素位置について、
(a)当該画素位置の前記第3画像における画素値が0であれば、当該画素位置の前記第1画像における画素値を、前記第4画像における当該画素位置の画素値とし、
(b)当該画素位置の前記第3画像における画素値が0でなければ、所定の色相ならびに彩度を有し、当該画素位置の前記第3画像における画素値を暗度とする色を表す画素値を、前記第4画像における当該画素位置の画素値とする
ことを特徴とするゲーム装置。
【請求項8】
請求項4から6のいずれか1項に記載のゲーム装置であって、
前記描画部は、前記第4画像の各画素位置について、当該画素位置の前記第1画像における画素値により表される色を、当該画素位置の前記第3画像における画素値により表される強さで暗くした色を表す画素値を、前記第4画像における当該画素位置の画素値とする
ことを特徴とするゲーム装置。
【請求項9】
生成部、抽出部、描画部を有するゲーム装置が実行する制御方法であって、
前記生成部が、ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成工程、
前記抽出部が、前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出工程、
前記描画部が、前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画工程
を備えることを特徴とする制御方法。
【請求項10】
コンピュータを、
ゲーム世界を表す仮想空間内に配置される複数のオブジェクトを当該仮想空間内に設定される視点から当該仮想空間内に設定される視線方向に見た様子を表す第1画像と、前記複数のオブジェクトのうち当該第1画像における各画素位置に描画されている箇所の前記視点に対する奥行を表す奥行値を各画素位置における画素値とする第2画像と、を生成する生成部、
前記第2画像に輪郭抽出フィルタを適用することにより、第3画像を得る抽出部、
前記第1画像を背景として、前記第3画像により表される輪郭を描画することにより、第4画像を得る描画部
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−50895(P2013−50895A)
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2011−189348(P2011−189348)
【出願日】平成23年8月31日(2011.8.31)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】