プログラム、情報記憶媒体及び画像生成システム
【課題】リムライトを実現できるプログラム、情報記憶媒体、画像生成システム等を提供すること。
【解決手段】画像生成システムは、オブジェクト空間設定部と、テクスチャを記憶するテクスチャ記憶部と、テクスチャがマッピングされるオブジェクトを描画して、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部を含む。テクスチャ記憶部は、元絵テクスチャとリムライト用テクスチャを記憶する。画像生成部は、元絵テクスチャとリムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する。
【解決手段】画像生成システムは、オブジェクト空間設定部と、テクスチャを記憶するテクスチャ記憶部と、テクスチャがマッピングされるオブジェクトを描画して、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部を含む。テクスチャ記憶部は、元絵テクスチャとリムライト用テクスチャを記憶する。画像生成部は、元絵テクスチャとリムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
従来より、キャラクタ等のオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、オブジェクトの輪郭(リム)に光りが回り込んだ様子を表現するリムライトと呼ばれる手法を採用する場合がある。このようなリムライトを実現する従来例として特許文献1に開示される技術がある。この従来技術では、ぼかし処理等のポストフィルタ処理を行うことでリムライト(グレア)表現を実現している。
【0004】
一方、高機能な画像生成システムでは、いわゆるピクセルシェーダとしてリムライトのシェーダが用意されている場合がある。しかしながら、このようなリムライトのピクセルシェーダを備えない画像生成システムでは、このようなリムライト表現を実現することが難しかった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−4363号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の幾つかの態様によれば、リムライト表現を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0007】
本発明の一態様は、オブジェクト空間の設定処理を行うオブジェクト空間設定部と、テクスチャを記憶するテクスチャ記憶部と、前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、前記テクスチャ記憶部は、元絵テクスチャとリムライト用テクスチャを記憶し、前記画像生成部は、前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する画像生成システムに関係する。また本発明の一態様は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0008】
本発明の一態様によれば、オブジェクトにマッピングされるテクスチャとして元絵テクスチャとリムライト用テクスチャが用意される。そして、これらの元絵テクスチャとリムライト用テクスチャをオブジェクトにマッピングすることで、オブジェクトの輪郭にリムライト効果が付与された画像が生成される。従って、元絵テクスチャとリムライト用テクスチャを用いた簡素な処理でリムライトを実現できるようになる。
【0009】
また本発明の一態様では、前記画像生成部は、前記元絵テクスチャがマッピングされるオブジェクトを描画し、次に前記リムライト用テクスチャがマッピングされるオブジェクトを描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成してもよい。
【0010】
このようにすれば、元絵テクスチャがマッピングされるオブジェクトの描画後に、例えば同一形状のオブジェクトにリムライト用テクスチャをマッピングして描画するという処理を行うことで、元絵テクスチャとリムライト用テクスチャのマルチテクスチャマッピングを実現できる。
【0011】
また本発明の一態様では、テクスチャ座標を演算するテクスチャ座標演算部を含み(テクスチャ座標演算部としてコンピュータを更に機能させ)、前記テクスチャ座標演算部は、オブジェクトの頂点に設定された法線ベクトルに基づいて、前記リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求め、前記画像生成部は、求められた前記リムライト用テクスチャ座標に基づいて、オブジェクトに対して前記リムライト用テクスチャをマッピングしてもよい。
【0012】
このようにすれば、オブジェクトの頂点に設定された法線ベクトルによりリムライト用テクスチャ座標を求め、このリムライト用テクスチャ座標を用いてリムライト用テクスチャをオブジェクトにマッピングできるようになる。
【0013】
また本発明の一態様では、前記テクスチャ記憶部は、低い輝度のテクセル値が設定される第1のテクスチャ領域と、前記第1のテクスチャ領域の周囲に設けられ前記第1のテクスチャ領域よりも高い輝度のテクセル値が設定される第2のテクスチャ領域とを有する前記リムライト用テクスチャを記憶し、前記テクスチャ座標演算部は、前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記法線ベクトルの方向が前記第3の座標軸に沿った方向である場合には、前記第1のテクスチャ領域のテクセル値が読み出され、前記法線ベクトルの方向が前記第3の座標軸に直交する方向である場合には、前記第2のテクスチャ領域のテクセル値が読み出されるように、前記リムライト用テクスチャ座標を求めてもよい。
【0014】
このようにすれば、仮想カメラの視線方向と法線ベクトルの方向関係に応じて動的に変化するリムライト用テクスチャ座標を用いて、オブジェクトにリムライト用テクスチャをマッピングできる。このとき、リムライト用テクスチャの第1のテクスチャ領域のテクセル値は低い輝度に設定され、第2のテクスチャ領域のテクセル値は高い輝度に設定される。そして法線ベクトルの方向が、仮想カメラの視線方向に対応する第3の座標軸に沿った方向である場合には、第1のテクスチャ領域の低い輝度のテクセル値が読み出され、第3の座標軸に直交する方向である場合には、第2のテクスチャ領域の高い輝度のテクセル値が読み出されるようになる。従って、法線ベクトルの方向が仮想カメラの視線方向と直交するオブジェクトの輪郭領域には、高い輝度が設定されるようになり、オブジェクトの輪郭にリムライト効果が付与された画像を生成できる。
【0015】
また本発明の一態様では、前記テクスチャ座標演算部は、前記法線ベクトルを(Nx、Ny、Nz)とし、前記リムライト用テクスチャ座標を(U、V)とし、前記第1のテクスチャ領域の中心部の座標を(a、b)とした場合に、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求めてもよい。
【0016】
このようにすれば、例えば法線ベクトルの方向が、仮想カメラの視線方向となる第3の座標軸に沿った方向である場合には、例えばNx=0、Ny=0になることで、U=a、V=bになり、第1のテクスチャ領域の中心部に設定された低い輝度のテクセル値が読み出されるようになる。一方、法線ベクトルの方向が第3の座標軸に直交する方向である場合には、例えばNx=1.0、Ny=0になったり、Nx=0、Ny=1.0になることで、第2のテクスチャ領域に設定された高い輝度のテクセル値が読み出されるようになり、オブジェクトの輪郭のリムライト表現を実現できる。
【0017】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1のテクスチャ領域ではその中心部から所定距離内の範囲に対して、前記第2のテクスチャ領域よりも低い輝度のテクセル値が設定された前記リムライト用テクスチャを記憶してもよい。
【0018】
このようにすれば、オブジェクトの輪郭領域を除く領域に対しては、リムライト用テクスチャのテクセル値が低い輝度に設定されることで、元絵テクスチャの画像が表示され、オブジェクトの輪郭領域では、リムライト用テクスチャが強く反映された画像が表示されるようになる。
【0019】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1、第2のテクスチャ領域の境界の領域では、前記境界に近づくにつれて輝度が高くなるように前記第1のテクスチャ領域のテクセル値が設定された前記リムライト用テクスチャを記憶してもよい。
【0020】
このようにすれば、オブジェクトの輪郭領域において輝度が急激に変化することによる画質の劣化を効果的に防止できる。
【0021】
また本発明の一態様では、前記画像生成部は、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行ってもよい。
【0022】
このようにすれば、第2のテクスチャ領域への色情報の設定により、オブジェクトの輪郭に付与されるリムライト効果の色を変更できるようになり、多様な画像表現を実現できる。
【0023】
また本発明の一態様では、前記色情報変更部は、ゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つであるゲーム状況に応じて、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行ってもよい。
【0024】
このようにすれば、ゲーム状況に応じて、オブジェクトの輪郭に付与されるリムライト効果の色を変更できるようになり、ゲーム表現のバラエティ度を増すことができる。
【0025】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1、第2のテクスチャ領域の境界がギザギザ状に設定された前記リムライト用テクスチャを記憶してもよい。
【0026】
このようにすれば、オブジェクトの輪郭における光の回り込み具合が、輪郭の各場所において異なって見える画像を生成できるようになる。
【0027】
また本発明の一態様では、前記画像生成部は、前記オブジェクト空間に設定された光源の方向と前記仮想カメラの視線方向との間の方向関係に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成してもよい。
【0028】
このようにすれば、仮想カメラの見る角度や、光源との位置関係に応じて、オブジェクトの輪郭に付与されるリムライトの輝度が動的に変化するようになり、よりリアルな画像を生成できる。
【0029】
また本発明の一態様では、前記画像生成部は、前記方向関係に応じて設定されたα値を用いたαブレンディングにより、前記元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、前記リムライト用テクスチャがマッピングされたオブジェクトを描画することで、前記方向関係に応じてリムライト効果の輝度が変更される画像を生成してもよい。
【0030】
このようにすれば、光源の方向と仮想カメラの視線方向との間の方向関係に応じて変化するα値を利用して、この方向関係に応じてリムライト効果の輝度が変更される画像を生成できるようになる。
【0031】
また本発明の一態様では、前記画像生成部は、前記オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成してもよい。
【0032】
このようにすれば、オブジェクトの輪郭に付与されるリムライト効果の色を、光源の色に対応する色に設定できるようになり、光源の色がオブジェクトの輪郭に回り込んだ様子をリアルに表現できる。
【0033】
また本発明の一態様では、前記画像生成部は、複数のリムライト用テクスチャの中から、前記光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0034】
このようにすれば、光源の色に対応した複数のリムライト用テクスチャの差し替え処理により、リムライト効果の色が変更された画像を生成できるようになる。
【0035】
また本発明の一態様では、前記画像生成部は、複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、前記光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0036】
このようにすれば、光源の色に対応した複数のルックアップテーブルの差し替え処理により、リムライト効果の色が変更された画像を生成できるようになる。
【図面の簡単な説明】
【0037】
【図1】本実施形態の画像生成システムの構成例。
【図2】図2(A)〜図2(C)は元絵テクスチャを用いたオブジェクトの描画処理の説明図。
【図3】図3(A)、図3(B)はリムライト用テクスチャを用いたオブジェクトの描画処理の説明図。
【図4】図4(A)、図4(B)はリムライトを実現する本実施形態の手法の説明図。
【図5】図5(A)、図5(B)はリムライト用テクスチャのテクスチャ座標の演算手法の説明図。
【図6】図6(A)、図6(B)はリムライト用テクスチャ及びリムライト効果が付与されたオブジェクトの画像の例。
【図7】リムライト用テクスチャの第2のテクスチャ領域の色情報を変更してリムライト効果の色を変更する手法の説明図。
【図8】リムライト用テクスチャの第1、第2のテクスチャ領域の境界をギザギザ形状にする手法の説明図。
【図9】図9(A)、図9(B)は、仮想カメラの視線方向と光源の方向の方向関係に基づいてリムライト用テクスチャの輝度を変更する手法の説明図。
【図10】図10(A)、図10(B)は、仮想カメラの視線方向と光源の方向の方向関係に基づいてリムライト用テクスチャの輝度を変更する手法の説明図。
【図11】図11(A)〜図11(C)は、仮想カメラの視線方向と光源の方向の方向関係により求められたα値を用いてαブレンディング処理を行う手法の説明図。
【図12】リムライト用テクスチャの差し替えによりリムライト効果の色を変更する手法の説明図。
【図13】図13(A)、図13(B)はインデックスカラー・テクスチャマッピングのルックアップテーブルの差し替えによりリムライト効果の色を変更する手法の説明図。
【図14】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【0038】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0039】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0040】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0041】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0042】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0043】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0044】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0045】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0046】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0047】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0048】
処理部100は、ゲーム演算部102、オブジェクト空間設定部104、移動体演算部106、テクスチャ座標演算部108、画像生成部120、音生成部130を含む。なおこれらの一部の構成要素を省略したり、他の構成要素(例えば仮想カメラ制御部等)を追加するなどの種々の変形実施が可能である。
【0049】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。ゲーム状況は、このゲーム演算処理によるゲームの進行により変化する状況である。
【0050】
オブジェクト空間設定部104は、モデルオブジェクト(人、ロボット、車、戦闘機、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0051】
移動体演算部106は、キャラクタ等の移動体を移動させるための演算を行う。また移動体(移動体オブジェクト)を動作させるための演算も行う。即ち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(オブジェクト、モデルオブジェクト)をオブジェクト空間内で移動させたり、移動体を動作(モーション、アニメーション)させる処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0052】
テクスチャ座標演算部108は、テクスチャマッピングを行うためのテクスチャ座標を求める演算処理を行う。
【0053】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0054】
具体的には、画像生成部120は、テクスチャ記憶部174から読み出されたテクスチャがマッピングされるオブジェクトを描画バッファ176に描画して、オブジェクト空間において仮想カメラから見える画像を生成する。ここでテクスチャマッピングは、テクスチャマッピング部122が行う処理であり、テクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクト(ポリゴン)にマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点やピクセルに設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(テクセル補間)などを行う。
【0055】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0056】
そして本実施形態ではテクスチャ記憶部174は、オブジェクトにマッピングするテクスチャ(テクスチャデータ)として、元絵テクスチャとリムライト用テクスチャを記憶する。そして画像生成部120は、元絵テクスチャとリムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭(リム)にリムライトの効果が付与された画像を生成する。即ちオブジェクトの背後にある光源(リムライト)の光がオブジェクトの輪郭に回り込んで、輪郭領域が光って見える表現を実現する。
【0057】
具体的には本実施形態では、画像生成部120は、まず、元絵テクスチャがマッピングされるオブジェクト(元絵用オブジェクト)を描画する。次に、リムライト用テクスチャがマッピングされるオブジェクト(リムライト用オブジェクト)を描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する。ここで元絵テクスチャがマッピングされるオブジェクトと、リムライト用テクスチャがマッピングされるオブジェクトは例えば同一形状のオブジェクト(同一のオブジェクト形状データで表されるオブジェクト)である。なおオブジェクトの各頂点に、元絵テクスチャ(第1のテクスチャ)を指定する元絵テクスチャ用のテクスチャ座標と、リムライト用テクスチャ(第2のテクスチャ)を指定するリムライト用のテクスチャ座標の両方を持たせて、マルチテクスチャマッピングを実現してもよい。
【0058】
また本実施形態では、テクスチャ座標演算部108は、オブジェクトの頂点(プリミティブ面の頂点)に設定された法線ベクトル(法線ベクトルの座標情報)に基づいて、リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求める。
【0059】
そして画像生成部120は、テクスチャ座標演算部108により求められたリムライト用テクスチャ座標に基づいて、オブジェクトに対してリムライト用テクスチャをマッピングする。例えば、オブジェクトの各頂点の各法線ベクトルから求められた各リムライト用テクスチャ座標を、オブジェクトの各頂点に設定する。そしてリムライト用テクスチャ座標を用いたテクスチャマッピングを行いながら、オブジェクトを描画バッファ176に描画する。
【0060】
またテクスチャ記憶部174は、第1のテクスチャ領域と第2のテクスチャ領域を有するリムライト用テクスチャを記憶する。ここで第1のテクスチャ領域には、第2のテクスチャ領域に比べて、低い輝度のテクセル値が設定される。一方、第2のテクスチャ領域は第1のテクスチャ領域の周囲に設けられた領域(第1のテクスチャ領域を囲むように設けられた領域)であり、第1のテクスチャ領域に比べて、高い輝度のテクセル値が設定される領域である。
【0061】
具体的にはテクスチャ記憶部174は、第1のテクスチャ領域ではその中心部から所定距離内の範囲(例えば円形の範囲)に対して、第2のテクスチャ領域よりも低い輝度のテクセル値が設定されたリムライト用テクスチャを記憶する。例えばリムライト用テクスチャの全体のテクスチャ領域が正方形(四角形)である場合に、第1のテクスチャ領域は、その中心が、リムライト用テクスチャ正方形の中心に一致する円形領域であり、第2のテクスチャ領域は、第1のテクスチャ領域を除いた残りの領域である。
【0062】
なお、第1、第2のテクスチャ領域の境界の領域(境界の内側領域)において、境界に近づくにつれて輝度が高くなるように第1のテクスチャ領域のテクセル値が設定されたリムライト用テクスチャを、テクスチャ記憶部174が記憶してもよい。即ち、境界に向かってグラディエーション処理が行われた輝度のテクセル値を記憶する。
【0063】
そして仮想カメラのカメラ座標系において、仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、第3の座標軸に直交する座標軸を第1、第2の座標軸としたとする。この場合に、テクスチャ座標演算部108は、法線ベクトルの方向が第3の座標軸に沿った方向である場合(法線ベクトルの方向が第3の座標軸に平行な場合)には、第1のテクスチャ領域のテクセル値が読み出され、法線ベクトルの方向が第3の座標軸に直交する方向である場合には、第2のテクスチャ領域のテクセル値が読み出されるように、リムライト用テクスチャ座標を求める。
【0064】
更に具体的には、例えば法線ベクトルを(Nx、Ny、Nz)とし、リムライト用テクスチャ座標を(U、V)とし、リムライト用テクスチャの第1のテクスチャ領域の中心部の座標を(a、b)としたとする。この場合にテクスチャ座標演算部108は、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求める。
【0065】
また画像生成部120は、第2のテクスチャ領域のテクセル値として設定される色情報を、ゲーム状況に応じて変更する処理を行ってもよい。例えば第1のゲーム状況では、第2のテクスチャ領域のテクセル値を第1の色情報に設定し、第2のゲーム状況では、第2のテクスチャ領域のテクセル値を第1の色情報とは異なる第2の色情報に設定する。
【0066】
ここでゲーム状況は、例えばゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つである。
【0067】
例えば画像生成部120は、ゲームに登場するオブジェクトの種類に応じて、第2のテクスチャ領域の色情報を変更する。例えば第1のオブジェクトでは、マッピングされるリムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のオブジェクトでは、第2のテクスチャ領域を第2の色情報に設定する。或いは、オブジェクト(キャラクタ等)が登場するゲームステージが第1のゲームステージ(例えば朝の設定のゲームステージ)である場合には、リムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のゲームステージ(例えば昼間の設定のゲームステージ)である場合には、リムライト用テクスチャの第2のテクスチャ領域を第2の色情報に設定する。また、オブジェクトに対して第1のゲームイベント(例えば攻撃イベント)が発生した場合には、リムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のゲームイベント(例えば爆発イベント)が発生した場合には、リムライト用テクスチャの第2のテクスチャ領域を第2の色情報に設定する。
【0068】
またテクスチャ記憶部174は、第1、第2のテクスチャ領域の境界がギザギザ状に設定されたリムライト用テクスチャを記憶してもよい。例えば第1のテクスチャ領域から境界までの距離がランダムに変化する(1テクセルよりも大きく変化する)ようなリムライト用テクスチャを記憶する。このようにすれば、リムライト効果が施されるリムライト領域の形状もジグザグ状にすることが可能になる。
【0069】
また画像生成部120は、オブジェクト空間に設定された光源の方向と仮想カメラの視線方向との間の方向関係(角度、内積)に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成してもよい。例えば光源の方向と仮想カメラの視線方向のなす角度が180度に近いほどリムライト効果の輝度を高くし、180度よりも小さくなるにつれて、リムライト効果の輝度を低くする。
【0070】
また画像生成部120は、光源の方向と仮想カメラの視線方向との間の方向関係(角度、内積)に応じて設定されたα値を用いたαブレンディング(α合成)により、元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、リムライト用テクスチャがマッピングされたオブジェクトを描画してもよい。即ち元絵テクスチャがマッピングされたオブジェクトと、リムライト用テクスチャがマッピングされたオブジェクトを、方向関係に応じたα値を用いてαブレンディングして、画像を生成する。これにより、光源の方向と仮想カメラの視線方向の方向関係に応じてリムライト効果の輝度が変更される画像を生成できるようになる。
【0071】
また画像生成部120は、オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成してもよい。例えば光源の色が第1の色である場合には、リムライト効果の色を、第1の色や、第1の色と同色系の色や、第1の色と所定色を合成した色に設定する。また光源の色が第2の色である場合には、リムライト効果の色を、第2の色や、第2の色と同色系の色や、第2の色と所定色を合成した色に設定する
この場合に画像生成部120は、複数のリムライト用テクスチャの中から、光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成してもよい。例えば第1〜第Mの光源の色に対応した第1〜第Mのリムライト用テクスチャを予め用意してテクスチャ記憶部174に記憶しておく。例えば第1の光源の色に対応して第1のリムライト用テクスチャを用意し、第2の光源の色に対応して第2のリムライト用テクスチャを用意する。そして、これらの第1〜第Mのリムライト用テクスチャの中から、現在のゲームステージ等の光源の色に対応するリムライト用テクスチャを選択し、オブジェクトにマッピングする。即ち第2のテクスチャ領域のテクセル値が、光源の色に対応した色情報に設定されたリムライト用テクスチャをマッピングする。これによりオブジェクトの輪郭に対して、光源の色に対応した色のリムライト効果を付与できるようになる。
【0072】
或いは画像生成部120は、複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0073】
例えば第1〜第Mの光源の色に対応した第1〜第Mのインデックスカラー・テクスチャマッピング用ルックアップテーブルを予め用意して、記憶部170に記憶しておく。例えば第1の光源の色に対応してインデックスカラー・テクスチャマッピング用の第1のルックアップテーブルを用意し、第2の光源の色に対応して第2のルックアップテーブルを用意する。そして、選択されたルックアップテーブルを用いて、インデックスカラー・テクスチャマッピングモードで、リムライト用テクスチャをオブジェクトにマッピングする。即ち、第2のテクスチャ領域のテクセル値が、光源の色に対応した色情報になるように設定されたルックアップテーブルを用いてリムライト用テクスチャをマッピングする。このようにしても、オブジェクトの輪郭に対して、光源の色に対応した色のリムライト効果を付与できるようになる。
【0074】
2.本実施形態の手法
2.1 マルチテクスチャマッピングによるリムライト表現
3次元CGの表現手法として、オブジェクト(物体)の輪郭に光を回り込ませるリムライトがある。例えば高機能なピクセルシェーダを有する高性能なゲーム装置等では、このようなリムライトはピクセルシェーダにより実現できる。しかしながら、例えば高機能なピクセルシェーダを持たない携帯型ゲーム装置等では、ピクセルシェーダによりリムライトを実現することができない。
【0075】
そこで本実施形態では、オブジェクトデータに工夫を施すことで、高機能なピクセルシェーダを有しない携帯型ゲーム装置等でリムライトを実現できる手法を提供する。
【0076】
例えば図2(A)はトーラス形状のオブジェクトOBの例である。このオブジェクトOBに対して図2(B)に示すような元絵テクスチャTEXAをマッピングする。この元絵テクスチャTEXAはオブジェクトOBの本来の模様を表すテクスチャである。図2(B)では元絵テクスチャTEXAとして木目のテクスチャの例が示されている。
【0077】
この図2(B)の元絵テクスチャTEXAを図2(A)のオブジェクトOBにマッピングすることで、図2(C)に示すような画像が得られる。図2(C)は、元絵テクスチャTEXAをオブジェクトOBにマッピングして描画した場合の描画バッファ176(フレームバッファ)のイメージを表す。
【0078】
次に図3(A)に示すようなリムライト用テクスチャTEXLを用意する。このリムライト用テクスチャTEXLは、オブジェクトの輪郭に付与されるリムライトを表現するために用いられるテクスチャである。例えばオブジェクトの法線ベクトルに基づき求められたテクスチャ座標を用いて、図3(A)のリムライト用テクスチャTEXLをオブジェクトOBにマッピングして描画すると、図3(B)に示すような画像が得られる。図3(B)では、オブジェクトOBの輪郭領域に対して、輝度の高いリムライト効果が付与されている。
【0079】
図4(A)は、図2(B)に示す元絵テクスチャTEXAと図3(A)に示すリムライト用テクスチャを、オブジェクトOBに対してマルチテクスチャマッピングした様子を示すものである。即ちオブジェクトOBに対してテクスチャTEXAとリムライト用テクスチャTEXLを同時にマッピングする(貼り付ける)。これにより図4(B)に示すように、オブジェクトOBに対して元絵テクスチャがマッピングされると共に、その輪郭にリムライト効果が付与された画像が生成されるようになる。
【0080】
このように本実施形態によれば、例えば高機能なピクセルシェーダを用いなくても、図2(B)のような元絵テクスチャTEXAと図3(A)のようなリムライト用テクスチャTEXLを用意して、オブジェクトOBにマルチテクスチャマッピングするだけで、リムライト効果を実現できる。従って、高機能なピクセルシェーダを持たない携帯型ゲーム装置等においてもリムライト効果を実現できるようになる。また、後述するように、リムライトの見た目の調整を、リムライト用テクスチャの修正だけで実現できるという利点もある。
【0081】
2.2 リムライト処理の詳細
次に本実施形態のリムライト処理の詳細について説明する。ここでは、同一形状のオブジェクトを2度描画してリムライト処理のマルチテクスチャマッピングを実現する例について説明する。但し、オブジェクトの頂点に対して、元絵テクスチャのテクスチャ座標とリムライト用テクスチャのテクスチャ座標の両方を持たせて、リムライト処理のマルチテクスチャマッピングを実現してもよい。
【0082】
リムライト表現のためのマルチテクスチャは、モデルそのものの模様部分である元絵テクスチャ(デカール)と、リムライト効果用の部分であるリムライト用テクスチャに分かれる。本実施形態では、まず元絵テクスチャの部分を描画し、次にリムライト用テクスチャの部分を加算で描画する。具体的には、まず、元絵テクスチャがマッピングされるオブジェクトを描画し、次にリムライト用テクスチャがマッピングされるオブジェクトを加算で描画する。ここで、元絵テクスチャについての描画は従来と同様であるため、詳細な説明は省略し、リムライト用テクスチャの描画について主に説明する。
【0083】
本実施形態では、リムライト用テクスチャをオブジェクトにマッピングする際に、リムライト用のテクスチャ座標については、オブジェクト(モデル)に元々埋め込まれているテクスチャ座標を使用せずに、仮想カメラとオブジェクトの位置関係に応じて動的に変化するテクスチャ座標を計算して使用する。具体的には仮想カメラから見た法線ベクトルのX、Y座標をリムライト用テクスチャ座標として用いる。
【0084】
例えば図5(A)にオブジェクトOBと仮想カメラVCの位置関係の例を示す。本実施形態の画像生成システムでは、図5(A)の仮想カメラVCから見える画像が生成される。そしてオブジェクトOBの各頂点には、オブジェクトOBを構成する各ポリゴン(各プリミティブ面)の向きを表すための法線ベクトルNが設定されている。本実施形態では、このようにオブジェクトOBの頂点に設定された法線ベクトルNに基づいて、リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を算出する。そして求められたリムライト用テクスチャ座標を用いて、オブジェクトに対してリムライト用テクスチャをマッピングする。
【0085】
具体的には図5(B)のカメラ座標系(視点座標系)では、仮想カメラVCの視線方向VDに沿った座標軸がZ軸(広義には第3の座標軸)となり、Z軸に直交する座標軸がX軸、Y軸(広義には第1、第2の座標軸)になっている。本実施形態では、このカメラ座標系での法線ベクトルNのX座標Nx、Y座標Nyを求めて、テクスチャ座標U、Vを算出する。
【0086】
例えば図6(A)にリムライト用テクスチャTEXLの例を示す。このリムライト用テクスチャTEXLは、第1のテクスチャ領域R1と第2のテクスチャ領域R2を有する。第1のテクスチャ領域R1は低い輝度(例えば0)のテクセル値が設定される領域である。図6(A)では、第1のテクスチャ領域R1には、その中心部CP(中心座標)から所定距離内(所定半径内)の範囲(円形範囲)に対して、低い輝度(=0)のテクセル値が設定されている。
【0087】
一方、第2のテクスチャ領域R2は、第1のテクスチャ領域R1よりも高い輝度(例えば255)のテクセル値が設定される領域である。図6(A)ではリムライト用テクスチャTEXLの全体は正方形の領域であり、第1のテクスチャ領域R1は円形の領域であり、第2のテクスチャ領域R2は、TEXLの正方形の領域から円形の領域R1を除いた領域になっている。
【0088】
この場合に本実施形態では、図5(B)の法線ベクトルNの方向が、カメラ座標系のZ軸(第3の座標軸)に沿った方向である場合には、第1のテクスチャ領域R1のテクセル値が読み出されるように、リムライト用のテクスチャ座標U、Vが求められる。具体的には、第1のテクスチャ領域R1の中心部CPのテクセル値が読み出されるようにする。
【0089】
一方、法線ベクトルNの方向が、カメラ座標系のZ軸に直交する方向である場合(例えばカメラ座標系のX軸やY軸に沿った方向である場合)には、第2のテクスチャ領域R2のテクセル値が読み出されるように、リムライト用のテクスチャ座標U、Vが求められる。具体的には第2のテクスチャ領域R2の最外周(U=1.0、V=1.0、U=0、又はV=0)のテクセル値が読み出されるようにする。
【0090】
例えば図6(A)において、テクスチャ座標U、Vの変域を0〜1.0とし、第1のテクスチャ領域R1の中心部CPの座標(0.5、0.5)すると、下式のような演算式によりテクスチャ座標U、Vを求める。
【0091】
U=(Nx+1)/2 (1)
V=(Ny+1)/2 (2)
即ちその法線ベクトルN(Nx、Ny、Nz)が設定される頂点に対して、U=(Nx+1)/2、V=(Ny+1)/2のテクスチャ座標を設定する。なおNx、Nyの変域は−1.0〜1.0である。
【0092】
このようにすれば、法線ベクトルNの方向がカメラ座標系のZ軸に沿った方向であり、Nx=0、Ny=0である場合には、テクスチャ座標はU=0.5、V=0.5になる。従って、その法線ベクトルN(Nx、Ny、Nz)が設定される頂点では、図6(A)の第1のテクスチャ領域R1の中心部CP(0.5、0.5)のテクセル値が読み出され、最も低い輝度(=0)に設定される。
【0093】
一方、法線ベクトルNの方向がZ軸に直交する方向であり、例えばNx=1.0、Ny=0である場合には、テクスチャ座標はU=1.0、V=0.5になる。或いはNx=0、Ny=1.0である場合には、テクスチャ座標はU=0.5、V=1.0になる。従って、これらの法線ベクトルN(Nx、Ny、Nz)が設定される頂点では、図6(A)の第2のテクスチャ領域R2の最外周のテクセル値が読み出されて、最も高い輝度(=255)に設定される。
【0094】
従って例えば図5(A)において、法線ベクトルNの方向が、仮想カメラVCの視線方向VDに沿った方向(VDとのなす角度が180度。VDと反対方向)である頂点では、リムライト用テクスチャのテクセル値は例えば最小輝度になる。従って、元絵テクスチャとリムライト用テクスチャをマルチテクスチャマッピングした場合に、その頂点の色は元絵テクスチャの色だけで決まるようになり、輝度を高くするリムライト効果は付与されないようになる。
【0095】
一方、図5(A)において、法線ベクトルNの方向が、仮想カメラVCの視線方向VDと直交する方向(VDとのなす角度が90度)である頂点では、リムライト用テクスチャのテクセル値は例えば最大輝度になる。従って、元絵テクスチャとリムライト用テクスチャをマルチテクスチャマッピングした場合には、その頂点の色は、元絵テクスチャの色に対してリムライト用テクスチャの最大輝度値を加算した色になる。そして法線ベクトルNの方向が視線方向VDと直交する頂点は、仮想カメラVCから見てオブジェクトOBの輪郭付近に位置する頂点である。従って、この輪郭付近の頂点の元絵の色に対して、リムライト用テクスチャの最大輝度値を加算されるようになり、図6(B)に示すようにオブジェクトOBの輪郭にリムライト効果が付与された画像を生成できる。
【0096】
以上の本実施形態の手法によれば、仮想カメラとオブジェクトの位置関係が変化した場合に、リムライト用のテクスチャ座標が動的に変化して計算されるため、常にオブジェクトの輪郭付近に対してリムライト効果が付加された画像を生成できる。また、この際のリムライト用のテクスチャ座標は、オブジェクトの各頂点の法線ベクトルを利用して、簡素な演算式で求めることができる。従って、例えばピクセルシェーダ機能を有しないような画像生成システムにおいても、リアルなリムライト表現を実現することが可能になる。
【0097】
なお本実施形態の比較例の手法として、マルチテクスチャマッピングにより環境マッピングやハイライト表示を実現する手法も考えられる。しかしながら、環境マッピングは、オブジェクトに対して、周囲の環境を映り込ませる手法であり、オブジェクトの輪郭にリムライト効果を付与する手法ではない。またハイライト表示は、仮想カメラの注視点にハイライト効果を付与する手法であり、このハイライト表示もオブジェクトの輪郭にリムライト効果を付与する手法ではない。本実施形態では図6(A)に示すようなリムライト用テクスチャを用いることで、これらの環境マッピングやハイライト表示では実現できなかったリムライト効果を、マルチテクスチャマッピングを利用した簡素な処理で実現することに成功している。
【0098】
なお図6(A)では、第1、第2のテクスチャ領域R1、R2の境界BDの領域において、境界BDに近づくにつれて輝度が高くなるように、リムライト用テクスチャTEXLの第1のテクスチャ領域R1のテクセル値を設定している。即ち、領域R1とR2の境界BDにおいて、最小輝度(=0)から最大輝度(=255)にテクセル値が急激に変化しないように、グラディエーションをかけて輝度値を徐々に変化させる。このようにすれば、オブジェクトOBの輪郭付近において輝度が急激に変化することで画質が劣化してしまう事態を効果的に防止できる。
【0099】
2.3 リムライト用テクスチャの変形例
本実施形態で使用されるリムライト用テクスチャTEXLは図6(A)で説明したテクスチャに限定されず、種々の変形実施が可能である。例えばリムライト用テクスチャTEXLの第2のテクスチャ領域R2のテクセル値として設定される色情報を変更するようにしてもよい。
【0100】
例えば図6(A)では、第2のテクスチャ領域R2のテクセル値は、R、G、Bの全ての成分が例えば最大輝度値(R=G=B=255)に設定されている。この場合には、オブジェクトOBの輪郭のリムライトは白になる。
【0101】
これに対して図7では、第2のテクスチャ領域R2のテクセル値は高い輝度の黄色に設定されている。このようにすれば、オブジェクトOBのリムライトの色を白から黄色に変更できる。従って、例えばオブジェクトの種類毎にリムライトの色を変えたり、オブジェクトが登場するゲームステージ毎にリムライトの色を変えることなどが可能になり、多様なリムライト表現を実現できる。しかも、リムライト色の変更は、リムライト用テクスチャの第2のテクスチャ領域R2の色の変更だけで済むため、簡素な処理で多様なリムライト表現を実現できる。
【0102】
また図8では、第1、第2のテクスチャ領域R1、R2の境界BDをギザギザ状に設定している。即ちリムライト用テクスチャTEXLの円形の境界BDにムラを与えている。
【0103】
このようにすれば、図8に示すように、オブジェクトOBの輪郭のリムライト領域の形状にもムラが付与されて、多様な画像表現を実現できる。またオブジェクトOBの輪郭における光の回り込み具合が、輪郭の各場所において異なって見えるようになり、よりリアルなリムライト表現を実現できる。
【0104】
このように本実施形態では、リムライト用テクスチャの色や境界の形状を変更するだけで、多様な表現を実現できるという利点がある。即ち、リムライトの見た目の調整を、リムライト用テクスチャの修正だけで実現できるという利点がある。
【0105】
例えばピクセルシェーダを用いたリムライト処理では、リムライト色の変更やリムライト領域のムラ表現を実現するためには、別のシェーダプログラム等を用意する必要があったり、処理が繁雑化するなどの課題がある。
【0106】
これに対して本実施形態の手法では、図7、図8に示すようにリムライト用テクスチャに修正を加えるだけで、リムライト色の変更やリムライト領域のムラ表現を実現できる。例えば、ゲームに登場するオブジェクトの種類や、オブジェクトが登場するゲームステージや、オブジェクトについて発生するゲームイベントなどのゲーム状況に応じて、リムライト色を変更したり、リムライト領域のムラ具合を変更することが可能になる。従って、ピクセルシェーダ等を用いる手法に比べて、多様なリムライト表現を簡素な処理で実現できるという利点がある。
【0107】
2.4 光源との方向関係や光源色を反映させたリムライト
本実施形態によれば、光源との方向関係や光源色を反映させたリムライト表現を実現できる。
【0108】
例えば図9(A)では、オブジェクト空間内(ワールド空間内)に対して光源LSが配置設定されている。この光源LSは、例えばゲームのキャラクタ等を照明するために用意された光源であってもよいし、リムライト専用に用意された光源であってもよい。
【0109】
そして本実施形態では、仮想カメラVCの視線方向VDと光源LSの光源方向LDとのなす角度(広義には方向関係、狭義には内積)に基づいて、リムライトの輝度(強さ)を変更する。
【0110】
例えば図9(A)では視線方向VDと光源方向LDのなす角度は180度前後になっており、この場合にはリムライトの輝度(強さ)を強くする。これにより図9(B)に示すように、オブジェクトOBの輪郭に対して強い輝度のリムライトが付与された画像を生成できる。即ち、リムライトとなる光源LSの光がオブジェクトOBの輪郭に強く回り込んだ様子を表現できる。
【0111】
一方、図10(A)では視線方向VDと光源方向LDのなす角度は180よりも小さくなっており、この場合にはリムライトの輝度を図9(A)に比べて弱くする。これにより図10(B)に示すように、オブジェクトOBの輪郭に対して弱い輝度のリムライトが付与された画像を生成できる。即ち、リムライトとなる光源LSの光が弱く回り込んだ様子を表現できる。
【0112】
このように視線方向VDと光源方向LDの方向関係に応じてリムライト効果の輝度を変更すれば、仮想カメラVCの見る角度や、光源LSとの位置関係に応じて、オブジェクトOBの輪郭に付与されるリムライトの輝度(強さ)が動的に変化するようになり、よりリアルで仮想現実感のある表現を実現できる。
【0113】
次に、このようなリムライト効果の輝度の変更処理の具体例について図11(A)〜図11(C)を用いて説明する。
【0114】
例えば図11(A)では、仮想カメラVCの視線方向VDと、光源LSの光源方向LDとのなす角度θに対応する内積cosθが求められる(VD、LDは単位ベクトルとする)。そしてこの内積cosθに基づいてα値であるα=F(cosθ)を求める。
【0115】
ここでF(cosθ)はcosθを引数とする関数である。例えばθ=180度で、cosθ=−1の場合に、α=F(cosθ)は最大値(例えば1.0)になり、θが180度よりも小さくなるにつれて、α=F(cosθ)は最大値よりも小さくなる。
【0116】
そして、まず図11(B)に示すように、元絵テクスチャTEXAがマッピングされるオブジェクトOBを描画バッファ176の描画領域に描画する。
【0117】
次に、VDとLDの方向関係により求められたα=F(cosθ)を用いたαブレンディングにより、元絵テクスチャTEXAがマッピングされるオブジェクトOBの描画領域に対して、図11(C)に示すようなリムライト用テクスチャがマッピングされるオブジェクトOBを描画する。これにより、オブジェクトOBの輪郭領域において、元絵テクスチャTEXAの色(テクセル値)とリムライト用テクスチャの色(テクセル値)が、α=F(cosθ)でαブレンディングされて、図9(B)や図10(B)に示すような画像が生成されるようになる。
【0118】
例えば元絵テクスチャの色(ディスティネーション色)をCdstとし、リムライト用テクスチャの色(ソース色)をCsrcとし、αブレンディング後の最終的な色をCrとすると、例えば下式に示すようなαブレンディングを行う。
【0119】
Cr=Cdst+α×Csrc (3)
このようにすれば、仮想カメラVCの視線方向VDと光源方向LDが図9(A)のような関係である場合には、α=F(cosθ)が最大値に設定されるため、リムライト用テクスチャの色Csrcのブレンディングの割合が強くなる。従って、図9(B)に示すように、オブジェクトOBの輪郭に対して強い輝度のリムライト効果が付与された画像が生成されるようになる。
【0120】
一方、仮想カメラVCの視線方向VDと光源方向LDが図10(A)のような関係である場合には、α=F(cosθ)が最大値よりも小さくなるため、リムライト用テクスチャの色Csrcのブレンディングの割合が弱くなる。従って、図10(B)に示すように、オブジェクトOBの輪郭に対して弱い輝度のリムライト効果が付与された画像が生成されるようになる。
【0121】
更に本実施形態では、このような光源方向LDのみならず、光源色も反映させたリムライト処理を実現してもよい。例えばオブジェクト空間に設定された光源LSの色に応じて、オブジェクトOBの輪郭に付与されるリムライト効果の色を変更する。具体的には、元絵テクスチャの色をCdstとし、リムライト用テクスチャの色をCsrcとし、光源の色をClsとした場合に、例えば下式に示すようなαブレンディングを行う。
【0122】
Cr=Cdst+α×Cls×Csrc (4)
このようにすれば、αブレンディング後の色Crには光源色Clsも反映されるようになるため、光源色Clsに応じて、オブジェクトOBの輪郭に付与されるリムライトの色も変化する。従って、光源LSの色の光がオブジェクトOBの輪郭に回り込む様子をリアルに表現でき、プレーヤの仮想現実感を更に向上できる。
【0123】
なお、光源色を反映させたリムライト処理は、αブレンディングを利用する処理には限定されない。例えば図12では、複数のリムライト用テクスチャの中から、光源色に対応するテクスチャを選択することで、光源色を反映させたリムライト処理を実現して、リムライト効果の色が変更された画像を生成している。
【0124】
具体的には図12では、朝のゲームステージ、昼間のゲームステージ、夕方のゲームステージのリムライト用テクスチャとして、各々、テクスチャTEXL1、TEXL2、TEXL3を用意する。即ちこれらの複数のリムライト用テクスチャTEXL1、TEXL2、TEXL3をテクスチャ記憶部174に記憶しておく。
【0125】
そして、リムライト用テクスチャTEXL1では、第2のテクスチャ領域のテクセル値として、例えば朝の光源(太陽)の色に対応する青の色情報が設定されている。このようにすれば、例えば朝のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、朝の青い光が回り込んだように見えるリムライト効果を実現できる。
【0126】
またリムライト用テクスチャTEXL2では、第2のテクスチャ領域のテクセル値として、例えば昼間の光源の色に対応する白の色情報が設定されている。このようにすれば、例えば昼間のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、昼間の太陽の強い輝度の白い光が回り込んだように見えるリムライト効果を実現できる。
【0127】
またリムライト用テクスチャTEXL3では、第2のテクスチャ領域のテクセル値として、例えば夕方の光源の色に対応する赤の色情報が設定されている。このようにすれば、例えば夕方のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、夕方の夕日の赤い光が回り込んだように見えるリムライト効果を実現できる。
【0128】
このように図12の手法によれば、光源の色に対応した複数のリムライト用テクスチャとして、第2のテクスチャ領域の色情報が異なる複数のテクスチャを用意する。そしてこれらのリムライト用テクスチャの中から、ゲームステージ等のゲーム状況に応じたテクスチャを選択して、オブジェクトにマッピングする。こうすることで、ゲームステージ等のゲーム状況に応じた色のリムライト効果を、オブジェクトの輪郭に施すことが可能になる。なお図12のようなテクスチャの差し替えではなく、リムライト用テクスチャの第2のテクスチャ領域の色情報を、ゲームステージ等のゲーム状況に応じてリアルタイムに書き換える手法を採用することも可能である。
【0129】
図13(A)では、オブジェクトへのリムライト用テクスチャ(及び元絵テクスチャ)のマッピングを、インデックスカラー・テクスチャマッピング方式で行う。
【0130】
このインデックスカラー・テクスチャマッピングでは、テクスチャ記憶部174の使用記憶容量を節約するために、リムライト用テクスチャTEXLの各テクセルには、RGBの色情報(輝度情報)ではなく、インデックス番号が記憶される。そしてインデックスカラー・テクスチャマッピング用のルックアップテーブルLUTには、リムライト用テクスチャTEXLの各テクセルのインデックス番号(INDEX)により指定される色情報(ROUT、GOUT、BOUT)が記憶される。
【0131】
そしてオブジェクトOBに対してテクスチャマッピングを行う際には、リムライト用テクスチャTEXLの各テクセルのインデックス番号(INDEX)に基づいてルックアップテーブルLUTを参照し、インデックス番号に関連づけられた色情報(ROUT、GOUT、BOUT)を読み出す。そして、読み出された色情報を描画バッファ176(描画領域)に描画する。
【0132】
このインデックスカラー・テクスチャマッピングでは、ルックアップテーブルLUTを用いない通常のテクスチャマッピングに比べて、使用できる色数は少なくなる。しかしながら、リムライト用テクスチャTEXLとして、実際の色情報を記憶する必要がないため、テクスチャ記憶部174の使用記憶容量を減らすことが可能になる。
【0133】
そして図13(B)では、インデックスカラー・テクスチャマッピング用のルックアップテーブルとして複数のルックアップテーブルLUTB、LUTW、LUTRを用意する。そしてこれらの複数のルックアップテーブルLUTB、LUTW、LUTRの中から、光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成する。
【0134】
具体的にはリムライト用テクスチャTELXとしては、例えば第1のテクスチャ領域のテクセルに対して第1のインデック番号INDEX1が設定され、第2のテクスチャ領域のテクセルに対して第2のインデックス番号INDEX2が設定されるテクスチャを用意する。なお第1、第2のテクスチャ領域の境界領域では、輝度のグラディエーションを実現するために、第1、第2のインデックス番号INDEX1、INDEX2とは異なるインデックス番号(例えばINDEX1とINDEX2の間の番号)を設定する。
【0135】
そして図13(B)に示すように、インデックスカラー・テクスチャマッピング用のルックアップテーブルとして、朝のゲームステージ用のルックアップテーブルLUTB、昼間のゲームステージ用のルックアップテーブルLUTW、夕方のゲームステージ用のルックアップテーブルLUTRを用意する。即ちこれらのルックアップテーブルLUTB、LUTW、LUTRを記憶部170に記憶しておく。
【0136】
例えば朝のゲームステージ用のルックアップテーブルLUTBでは、リムライト用テクスチャTEXLの第2のテクスチャ領域のテクセルに設定されるインデックス番号(INDEX2)が、朝の光源の色である青を指定する番号に設定されている。従って、ルックアップテーブルLUTBを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に青のリムライト効果が付与された画像が生成されるようになる。
【0137】
また昼間のゲームステージ用のルックアップテーブルLUTWでは、第2のテクスチャ領域のインデックス番号が、昼間の光源の色である白を指定する番号に設定されている。従って、ルックアップテーブルLUTWを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に白のリムライト効果が付与された画像が生成されるようになる。
【0138】
また夕方のゲームステージ用のルックアップテーブルLUTRでは、第2のテクスチャ領域のインデックス番号が、夕方の光源の色である赤を指定する番号に設定されている。従って、ルックアップテーブルLUTRを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に赤のリムライト効果が付与された画像が生成されるようになる。
【0139】
以上の図13(A)、図13(B)の手法では、ルックアップテーブルLUTB、LUTW、LUTRを用いたインデックスカラー・テクスチャマッピングを行うことで、図12のようなテクスチャ差し替え手法と同様に、光源の色に対応する色のリムライト効果をオブジェクトOBの輪郭に施すことが可能になる。
【0140】
そして、図13(A)、図13(B)のようにインデックスカラー・テクスチャマッピングを利用した手法では、図12のような複数のリムライト用テクスチャをテクスチャ記憶部174に記憶しなくても済む。そしてルックアップテーブルの使用記憶容量はリムライト用テクスチャに比べて少ないため、使用記憶容量の節約を図れる。
【0141】
また、リムライト効果の色を変更する処理は、第2のテクスチャ領域のインデックス番号(INDEX2)と色情報との対応付けが異なる複数のルックアップテーブルを用意するだけで済むため、リムライト処理やリムライト効果のデザイン作業を簡素化できるという利点もある。
【0142】
なお、以上では、リムライト効果の色を変更するゲーム状況の例として、オブジェクトが登場するゲームステージについて主に説明したが、本実施形態はこれに限定されない。例えばゲームに複数種類のオブジェクトが登場する場合に、そのオブジェクトの種類に応じて、図12(A)〜図13(B)等の手法を用いてリムライト効果の色を変更してもよい。例えば第1のオブジェクトではリムライト効果の色を第1の色に設定し、第2のオブジェクトではリムライト効果の色を第2の色に設定する。この場合に、第1、第2のオブジェクトのリムライト効果の色を、これらの第1、第2のオブジェクトが登場するゲームステージに応じて更に変更してもよい。
【0143】
ここでゲームステージは、ゲームのクリア条件の達成により次の一連のゲーム場面(ゲーム画面)が現れる形式のゲームにおけるクリアの都度に現れる新しい一連のゲーム場面(ゲーム画面)である。そしてゲームステージに応じてリムライト効果の色を変更する場合には、ゲームステージに配置設定される光源の色や、ゲームステージに設定される時間帯(朝のゲームステージ、昼間のゲームステージ等)や、ゲームステージが設定される場所の情報に基づいて、オブジェクトのリムライト効果の色を変更すればよい。
【0144】
またオブジェクトが登場するゲームで発生するゲームイベントに応じて、オブジェクトのリムライト効果の色を変更してもよい。ここでゲームイベントとしては、ヒットイベント、発射イベント、消滅イベント、衝突イベント、墜落イベント、爆発イベント、燃焼イベント、光照射イベント、敵ボスの登場イベント、オブジェクト生成イベント、オブジェクト変形イベント、アイテム取得イベント、ゲームスコア更新イベント、ゲームパラメータ更新イベント、或いは仮想カメラ変更イベント等の種々のイベントを想定できる。なお、イベントは、プログラミングにおいて一般に用いられる事象の意味である。
【0145】
また例えばオブジェクトがゲームに登場するキャラクタである場合には、ゲーム状況としてキャラクタのステータスパラメータに応じて、リムライト効果の色や境界の形状等を変更してもよい。ここでキャラクタのステータスパラメータは、キャラクタの状態(体力、耐久度、抵抗力、守備力、戦力パラメータ、武器量、攻撃力、ヒットポイント、マジックポイント、アイテム量等のステータス)を量的、質的に表す変数(パラメータ)であり、ゲーム処理における各種の判断(ゲーム進行の判断、ゲーム結果の判断等)の材料に使用されるものである。
【0146】
3.詳細な処理
次に本実施形態の詳細な処理例について図14のフローチャートを用いて説明する。
【0147】
まずゲームステージの光源情報を取得する(例えばステップS1)。例えばそのゲームステージに配置設定される光源の光源方向や光源色を取得する。この光源はそのゲームステージの主光源(平行光源)であってもよいし、リムライト専用の光源であってもよい。
【0148】
次に、元絵テクスチャと、ステップS1で取得された光源の色に対応するリムライト用テクスチャを用意する(ステップS2)。例えば図12で説明したように複数のリムライト用テクスチャの中から、そのゲームステージの光源色に対応するテクスチャを選択する。なお図13(A)のようにインデックスカラー・テクスチャマッピングを行う場合には、図13(B)に示すような複数のリムライト用ルックアップテーブルの中から、そのゲームステージの光源色に対応するルックアップテーブルを選択すればよい。
【0149】
次に、オブジェクトのジオメトリ処理を行う(ステップS3)。具体的には、オブジェクトの座標変換処理、クリッピング処理、透視変換処理などを行う。そしてジオメトリ処理後(透視変換処理後)のオブジェクトデータは、記憶部170に保存される。
【0150】
次に、ステップS3で得られたジオメトリ処理後のオブジェクトデータと、ステップS2で用意された元絵テクスチャとに基づいて、図2(A)、図2(B)に示すように描画バッファ176にオブジェクトを描画する(ステップS4)。即ち元絵テクスチャがマッピングされたオブジェクトを描画する。
【0151】
次に、保存されているジオメトリ処理後のオブジェクトデータの各頂点の法線ベクトルの情報に基づいて、図5(A)、図5(B)で説明したようにリムライト用のテクスチャ座標を求め、求められたテクスチャ座標をオブジェクトの各頂点に設定する(ステップS5)。例えば、記憶部170に保存されているジオメトリ処理後のオブジェクトデータの頂点に設定される元絵用のテクスチャ座標に対して、リムライト用のテクスチャ座標を上書きする。
【0152】
次に図11(A)で説明したように、仮想カメラの視線方向と光源の方向に基づいてα値を求める(ステップS6)。そして、図11(B)、図11(C)で説明したいように、求められたα値と、ジオメトリ処理後のオブジェクトデータと、リムライト用テクスチャに基づいて、描画バッファにオブジェクトを描画する(ステップS7)。即ち、リムライト用テクスチャがマッピングされたオブジェクトをαブレンディングで描画する。これにより図9(B)、図10(B)に示すようなオブジェクトの輪郭にリムライト効果が付与された画像が生成される。
【0153】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(方向関係、第1、第2、第3の座標軸等)と共に記載された用語(角度、X軸、Y軸、Z軸等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、画像生成処理、テクスチャマッピング処理、テクスチャ座標演算処理、色情報変更処理、αブレンド処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0154】
100 処理部、102 ゲーム演算部、104 オブジェクト空間設定部、
106 移動体演算部、108 テクスチャ座標演算部、120 画像生成部、
122 テクスチャマッピング部、130 音生成部、160 操作部、
170 記憶部、172 オブジェクトデータ記憶部、174 テクスチャ記憶部、
176 描画バッファ、180 情報記憶媒体、190 表示部、192 音出力部、
194 補助記憶装置、196 通信部
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
従来より、キャラクタ等のオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、オブジェクトの輪郭(リム)に光りが回り込んだ様子を表現するリムライトと呼ばれる手法を採用する場合がある。このようなリムライトを実現する従来例として特許文献1に開示される技術がある。この従来技術では、ぼかし処理等のポストフィルタ処理を行うことでリムライト(グレア)表現を実現している。
【0004】
一方、高機能な画像生成システムでは、いわゆるピクセルシェーダとしてリムライトのシェーダが用意されている場合がある。しかしながら、このようなリムライトのピクセルシェーダを備えない画像生成システムでは、このようなリムライト表現を実現することが難しかった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−4363号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の幾つかの態様によれば、リムライト表現を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0007】
本発明の一態様は、オブジェクト空間の設定処理を行うオブジェクト空間設定部と、テクスチャを記憶するテクスチャ記憶部と、前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、前記テクスチャ記憶部は、元絵テクスチャとリムライト用テクスチャを記憶し、前記画像生成部は、前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する画像生成システムに関係する。また本発明の一態様は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0008】
本発明の一態様によれば、オブジェクトにマッピングされるテクスチャとして元絵テクスチャとリムライト用テクスチャが用意される。そして、これらの元絵テクスチャとリムライト用テクスチャをオブジェクトにマッピングすることで、オブジェクトの輪郭にリムライト効果が付与された画像が生成される。従って、元絵テクスチャとリムライト用テクスチャを用いた簡素な処理でリムライトを実現できるようになる。
【0009】
また本発明の一態様では、前記画像生成部は、前記元絵テクスチャがマッピングされるオブジェクトを描画し、次に前記リムライト用テクスチャがマッピングされるオブジェクトを描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成してもよい。
【0010】
このようにすれば、元絵テクスチャがマッピングされるオブジェクトの描画後に、例えば同一形状のオブジェクトにリムライト用テクスチャをマッピングして描画するという処理を行うことで、元絵テクスチャとリムライト用テクスチャのマルチテクスチャマッピングを実現できる。
【0011】
また本発明の一態様では、テクスチャ座標を演算するテクスチャ座標演算部を含み(テクスチャ座標演算部としてコンピュータを更に機能させ)、前記テクスチャ座標演算部は、オブジェクトの頂点に設定された法線ベクトルに基づいて、前記リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求め、前記画像生成部は、求められた前記リムライト用テクスチャ座標に基づいて、オブジェクトに対して前記リムライト用テクスチャをマッピングしてもよい。
【0012】
このようにすれば、オブジェクトの頂点に設定された法線ベクトルによりリムライト用テクスチャ座標を求め、このリムライト用テクスチャ座標を用いてリムライト用テクスチャをオブジェクトにマッピングできるようになる。
【0013】
また本発明の一態様では、前記テクスチャ記憶部は、低い輝度のテクセル値が設定される第1のテクスチャ領域と、前記第1のテクスチャ領域の周囲に設けられ前記第1のテクスチャ領域よりも高い輝度のテクセル値が設定される第2のテクスチャ領域とを有する前記リムライト用テクスチャを記憶し、前記テクスチャ座標演算部は、前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記法線ベクトルの方向が前記第3の座標軸に沿った方向である場合には、前記第1のテクスチャ領域のテクセル値が読み出され、前記法線ベクトルの方向が前記第3の座標軸に直交する方向である場合には、前記第2のテクスチャ領域のテクセル値が読み出されるように、前記リムライト用テクスチャ座標を求めてもよい。
【0014】
このようにすれば、仮想カメラの視線方向と法線ベクトルの方向関係に応じて動的に変化するリムライト用テクスチャ座標を用いて、オブジェクトにリムライト用テクスチャをマッピングできる。このとき、リムライト用テクスチャの第1のテクスチャ領域のテクセル値は低い輝度に設定され、第2のテクスチャ領域のテクセル値は高い輝度に設定される。そして法線ベクトルの方向が、仮想カメラの視線方向に対応する第3の座標軸に沿った方向である場合には、第1のテクスチャ領域の低い輝度のテクセル値が読み出され、第3の座標軸に直交する方向である場合には、第2のテクスチャ領域の高い輝度のテクセル値が読み出されるようになる。従って、法線ベクトルの方向が仮想カメラの視線方向と直交するオブジェクトの輪郭領域には、高い輝度が設定されるようになり、オブジェクトの輪郭にリムライト効果が付与された画像を生成できる。
【0015】
また本発明の一態様では、前記テクスチャ座標演算部は、前記法線ベクトルを(Nx、Ny、Nz)とし、前記リムライト用テクスチャ座標を(U、V)とし、前記第1のテクスチャ領域の中心部の座標を(a、b)とした場合に、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求めてもよい。
【0016】
このようにすれば、例えば法線ベクトルの方向が、仮想カメラの視線方向となる第3の座標軸に沿った方向である場合には、例えばNx=0、Ny=0になることで、U=a、V=bになり、第1のテクスチャ領域の中心部に設定された低い輝度のテクセル値が読み出されるようになる。一方、法線ベクトルの方向が第3の座標軸に直交する方向である場合には、例えばNx=1.0、Ny=0になったり、Nx=0、Ny=1.0になることで、第2のテクスチャ領域に設定された高い輝度のテクセル値が読み出されるようになり、オブジェクトの輪郭のリムライト表現を実現できる。
【0017】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1のテクスチャ領域ではその中心部から所定距離内の範囲に対して、前記第2のテクスチャ領域よりも低い輝度のテクセル値が設定された前記リムライト用テクスチャを記憶してもよい。
【0018】
このようにすれば、オブジェクトの輪郭領域を除く領域に対しては、リムライト用テクスチャのテクセル値が低い輝度に設定されることで、元絵テクスチャの画像が表示され、オブジェクトの輪郭領域では、リムライト用テクスチャが強く反映された画像が表示されるようになる。
【0019】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1、第2のテクスチャ領域の境界の領域では、前記境界に近づくにつれて輝度が高くなるように前記第1のテクスチャ領域のテクセル値が設定された前記リムライト用テクスチャを記憶してもよい。
【0020】
このようにすれば、オブジェクトの輪郭領域において輝度が急激に変化することによる画質の劣化を効果的に防止できる。
【0021】
また本発明の一態様では、前記画像生成部は、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行ってもよい。
【0022】
このようにすれば、第2のテクスチャ領域への色情報の設定により、オブジェクトの輪郭に付与されるリムライト効果の色を変更できるようになり、多様な画像表現を実現できる。
【0023】
また本発明の一態様では、前記色情報変更部は、ゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つであるゲーム状況に応じて、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行ってもよい。
【0024】
このようにすれば、ゲーム状況に応じて、オブジェクトの輪郭に付与されるリムライト効果の色を変更できるようになり、ゲーム表現のバラエティ度を増すことができる。
【0025】
また本発明の一態様では、前記テクスチャ記憶部は、前記第1、第2のテクスチャ領域の境界がギザギザ状に設定された前記リムライト用テクスチャを記憶してもよい。
【0026】
このようにすれば、オブジェクトの輪郭における光の回り込み具合が、輪郭の各場所において異なって見える画像を生成できるようになる。
【0027】
また本発明の一態様では、前記画像生成部は、前記オブジェクト空間に設定された光源の方向と前記仮想カメラの視線方向との間の方向関係に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成してもよい。
【0028】
このようにすれば、仮想カメラの見る角度や、光源との位置関係に応じて、オブジェクトの輪郭に付与されるリムライトの輝度が動的に変化するようになり、よりリアルな画像を生成できる。
【0029】
また本発明の一態様では、前記画像生成部は、前記方向関係に応じて設定されたα値を用いたαブレンディングにより、前記元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、前記リムライト用テクスチャがマッピングされたオブジェクトを描画することで、前記方向関係に応じてリムライト効果の輝度が変更される画像を生成してもよい。
【0030】
このようにすれば、光源の方向と仮想カメラの視線方向との間の方向関係に応じて変化するα値を利用して、この方向関係に応じてリムライト効果の輝度が変更される画像を生成できるようになる。
【0031】
また本発明の一態様では、前記画像生成部は、前記オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成してもよい。
【0032】
このようにすれば、オブジェクトの輪郭に付与されるリムライト効果の色を、光源の色に対応する色に設定できるようになり、光源の色がオブジェクトの輪郭に回り込んだ様子をリアルに表現できる。
【0033】
また本発明の一態様では、前記画像生成部は、複数のリムライト用テクスチャの中から、前記光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0034】
このようにすれば、光源の色に対応した複数のリムライト用テクスチャの差し替え処理により、リムライト効果の色が変更された画像を生成できるようになる。
【0035】
また本発明の一態様では、前記画像生成部は、複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、前記光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0036】
このようにすれば、光源の色に対応した複数のルックアップテーブルの差し替え処理により、リムライト効果の色が変更された画像を生成できるようになる。
【図面の簡単な説明】
【0037】
【図1】本実施形態の画像生成システムの構成例。
【図2】図2(A)〜図2(C)は元絵テクスチャを用いたオブジェクトの描画処理の説明図。
【図3】図3(A)、図3(B)はリムライト用テクスチャを用いたオブジェクトの描画処理の説明図。
【図4】図4(A)、図4(B)はリムライトを実現する本実施形態の手法の説明図。
【図5】図5(A)、図5(B)はリムライト用テクスチャのテクスチャ座標の演算手法の説明図。
【図6】図6(A)、図6(B)はリムライト用テクスチャ及びリムライト効果が付与されたオブジェクトの画像の例。
【図7】リムライト用テクスチャの第2のテクスチャ領域の色情報を変更してリムライト効果の色を変更する手法の説明図。
【図8】リムライト用テクスチャの第1、第2のテクスチャ領域の境界をギザギザ形状にする手法の説明図。
【図9】図9(A)、図9(B)は、仮想カメラの視線方向と光源の方向の方向関係に基づいてリムライト用テクスチャの輝度を変更する手法の説明図。
【図10】図10(A)、図10(B)は、仮想カメラの視線方向と光源の方向の方向関係に基づいてリムライト用テクスチャの輝度を変更する手法の説明図。
【図11】図11(A)〜図11(C)は、仮想カメラの視線方向と光源の方向の方向関係により求められたα値を用いてαブレンディング処理を行う手法の説明図。
【図12】リムライト用テクスチャの差し替えによりリムライト効果の色を変更する手法の説明図。
【図13】図13(A)、図13(B)はインデックスカラー・テクスチャマッピングのルックアップテーブルの差し替えによりリムライト効果の色を変更する手法の説明図。
【図14】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【0038】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0039】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0040】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0041】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0042】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0043】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0044】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0045】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0046】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0047】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0048】
処理部100は、ゲーム演算部102、オブジェクト空間設定部104、移動体演算部106、テクスチャ座標演算部108、画像生成部120、音生成部130を含む。なおこれらの一部の構成要素を省略したり、他の構成要素(例えば仮想カメラ制御部等)を追加するなどの種々の変形実施が可能である。
【0049】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。ゲーム状況は、このゲーム演算処理によるゲームの進行により変化する状況である。
【0050】
オブジェクト空間設定部104は、モデルオブジェクト(人、ロボット、車、戦闘機、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0051】
移動体演算部106は、キャラクタ等の移動体を移動させるための演算を行う。また移動体(移動体オブジェクト)を動作させるための演算も行う。即ち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(オブジェクト、モデルオブジェクト)をオブジェクト空間内で移動させたり、移動体を動作(モーション、アニメーション)させる処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0052】
テクスチャ座標演算部108は、テクスチャマッピングを行うためのテクスチャ座標を求める演算処理を行う。
【0053】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0054】
具体的には、画像生成部120は、テクスチャ記憶部174から読み出されたテクスチャがマッピングされるオブジェクトを描画バッファ176に描画して、オブジェクト空間において仮想カメラから見える画像を生成する。ここでテクスチャマッピングは、テクスチャマッピング部122が行う処理であり、テクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクト(ポリゴン)にマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点やピクセルに設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(テクセル補間)などを行う。
【0055】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0056】
そして本実施形態ではテクスチャ記憶部174は、オブジェクトにマッピングするテクスチャ(テクスチャデータ)として、元絵テクスチャとリムライト用テクスチャを記憶する。そして画像生成部120は、元絵テクスチャとリムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭(リム)にリムライトの効果が付与された画像を生成する。即ちオブジェクトの背後にある光源(リムライト)の光がオブジェクトの輪郭に回り込んで、輪郭領域が光って見える表現を実現する。
【0057】
具体的には本実施形態では、画像生成部120は、まず、元絵テクスチャがマッピングされるオブジェクト(元絵用オブジェクト)を描画する。次に、リムライト用テクスチャがマッピングされるオブジェクト(リムライト用オブジェクト)を描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成する。ここで元絵テクスチャがマッピングされるオブジェクトと、リムライト用テクスチャがマッピングされるオブジェクトは例えば同一形状のオブジェクト(同一のオブジェクト形状データで表されるオブジェクト)である。なおオブジェクトの各頂点に、元絵テクスチャ(第1のテクスチャ)を指定する元絵テクスチャ用のテクスチャ座標と、リムライト用テクスチャ(第2のテクスチャ)を指定するリムライト用のテクスチャ座標の両方を持たせて、マルチテクスチャマッピングを実現してもよい。
【0058】
また本実施形態では、テクスチャ座標演算部108は、オブジェクトの頂点(プリミティブ面の頂点)に設定された法線ベクトル(法線ベクトルの座標情報)に基づいて、リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求める。
【0059】
そして画像生成部120は、テクスチャ座標演算部108により求められたリムライト用テクスチャ座標に基づいて、オブジェクトに対してリムライト用テクスチャをマッピングする。例えば、オブジェクトの各頂点の各法線ベクトルから求められた各リムライト用テクスチャ座標を、オブジェクトの各頂点に設定する。そしてリムライト用テクスチャ座標を用いたテクスチャマッピングを行いながら、オブジェクトを描画バッファ176に描画する。
【0060】
またテクスチャ記憶部174は、第1のテクスチャ領域と第2のテクスチャ領域を有するリムライト用テクスチャを記憶する。ここで第1のテクスチャ領域には、第2のテクスチャ領域に比べて、低い輝度のテクセル値が設定される。一方、第2のテクスチャ領域は第1のテクスチャ領域の周囲に設けられた領域(第1のテクスチャ領域を囲むように設けられた領域)であり、第1のテクスチャ領域に比べて、高い輝度のテクセル値が設定される領域である。
【0061】
具体的にはテクスチャ記憶部174は、第1のテクスチャ領域ではその中心部から所定距離内の範囲(例えば円形の範囲)に対して、第2のテクスチャ領域よりも低い輝度のテクセル値が設定されたリムライト用テクスチャを記憶する。例えばリムライト用テクスチャの全体のテクスチャ領域が正方形(四角形)である場合に、第1のテクスチャ領域は、その中心が、リムライト用テクスチャ正方形の中心に一致する円形領域であり、第2のテクスチャ領域は、第1のテクスチャ領域を除いた残りの領域である。
【0062】
なお、第1、第2のテクスチャ領域の境界の領域(境界の内側領域)において、境界に近づくにつれて輝度が高くなるように第1のテクスチャ領域のテクセル値が設定されたリムライト用テクスチャを、テクスチャ記憶部174が記憶してもよい。即ち、境界に向かってグラディエーション処理が行われた輝度のテクセル値を記憶する。
【0063】
そして仮想カメラのカメラ座標系において、仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、第3の座標軸に直交する座標軸を第1、第2の座標軸としたとする。この場合に、テクスチャ座標演算部108は、法線ベクトルの方向が第3の座標軸に沿った方向である場合(法線ベクトルの方向が第3の座標軸に平行な場合)には、第1のテクスチャ領域のテクセル値が読み出され、法線ベクトルの方向が第3の座標軸に直交する方向である場合には、第2のテクスチャ領域のテクセル値が読み出されるように、リムライト用テクスチャ座標を求める。
【0064】
更に具体的には、例えば法線ベクトルを(Nx、Ny、Nz)とし、リムライト用テクスチャ座標を(U、V)とし、リムライト用テクスチャの第1のテクスチャ領域の中心部の座標を(a、b)としたとする。この場合にテクスチャ座標演算部108は、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求める。
【0065】
また画像生成部120は、第2のテクスチャ領域のテクセル値として設定される色情報を、ゲーム状況に応じて変更する処理を行ってもよい。例えば第1のゲーム状況では、第2のテクスチャ領域のテクセル値を第1の色情報に設定し、第2のゲーム状況では、第2のテクスチャ領域のテクセル値を第1の色情報とは異なる第2の色情報に設定する。
【0066】
ここでゲーム状況は、例えばゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つである。
【0067】
例えば画像生成部120は、ゲームに登場するオブジェクトの種類に応じて、第2のテクスチャ領域の色情報を変更する。例えば第1のオブジェクトでは、マッピングされるリムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のオブジェクトでは、第2のテクスチャ領域を第2の色情報に設定する。或いは、オブジェクト(キャラクタ等)が登場するゲームステージが第1のゲームステージ(例えば朝の設定のゲームステージ)である場合には、リムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のゲームステージ(例えば昼間の設定のゲームステージ)である場合には、リムライト用テクスチャの第2のテクスチャ領域を第2の色情報に設定する。また、オブジェクトに対して第1のゲームイベント(例えば攻撃イベント)が発生した場合には、リムライト用テクスチャの第2のテクスチャ領域を第1の色情報に設定し、第2のゲームイベント(例えば爆発イベント)が発生した場合には、リムライト用テクスチャの第2のテクスチャ領域を第2の色情報に設定する。
【0068】
またテクスチャ記憶部174は、第1、第2のテクスチャ領域の境界がギザギザ状に設定されたリムライト用テクスチャを記憶してもよい。例えば第1のテクスチャ領域から境界までの距離がランダムに変化する(1テクセルよりも大きく変化する)ようなリムライト用テクスチャを記憶する。このようにすれば、リムライト効果が施されるリムライト領域の形状もジグザグ状にすることが可能になる。
【0069】
また画像生成部120は、オブジェクト空間に設定された光源の方向と仮想カメラの視線方向との間の方向関係(角度、内積)に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成してもよい。例えば光源の方向と仮想カメラの視線方向のなす角度が180度に近いほどリムライト効果の輝度を高くし、180度よりも小さくなるにつれて、リムライト効果の輝度を低くする。
【0070】
また画像生成部120は、光源の方向と仮想カメラの視線方向との間の方向関係(角度、内積)に応じて設定されたα値を用いたαブレンディング(α合成)により、元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、リムライト用テクスチャがマッピングされたオブジェクトを描画してもよい。即ち元絵テクスチャがマッピングされたオブジェクトと、リムライト用テクスチャがマッピングされたオブジェクトを、方向関係に応じたα値を用いてαブレンディングして、画像を生成する。これにより、光源の方向と仮想カメラの視線方向の方向関係に応じてリムライト効果の輝度が変更される画像を生成できるようになる。
【0071】
また画像生成部120は、オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成してもよい。例えば光源の色が第1の色である場合には、リムライト効果の色を、第1の色や、第1の色と同色系の色や、第1の色と所定色を合成した色に設定する。また光源の色が第2の色である場合には、リムライト効果の色を、第2の色や、第2の色と同色系の色や、第2の色と所定色を合成した色に設定する
この場合に画像生成部120は、複数のリムライト用テクスチャの中から、光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成してもよい。例えば第1〜第Mの光源の色に対応した第1〜第Mのリムライト用テクスチャを予め用意してテクスチャ記憶部174に記憶しておく。例えば第1の光源の色に対応して第1のリムライト用テクスチャを用意し、第2の光源の色に対応して第2のリムライト用テクスチャを用意する。そして、これらの第1〜第Mのリムライト用テクスチャの中から、現在のゲームステージ等の光源の色に対応するリムライト用テクスチャを選択し、オブジェクトにマッピングする。即ち第2のテクスチャ領域のテクセル値が、光源の色に対応した色情報に設定されたリムライト用テクスチャをマッピングする。これによりオブジェクトの輪郭に対して、光源の色に対応した色のリムライト効果を付与できるようになる。
【0072】
或いは画像生成部120は、複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成してもよい。
【0073】
例えば第1〜第Mの光源の色に対応した第1〜第Mのインデックスカラー・テクスチャマッピング用ルックアップテーブルを予め用意して、記憶部170に記憶しておく。例えば第1の光源の色に対応してインデックスカラー・テクスチャマッピング用の第1のルックアップテーブルを用意し、第2の光源の色に対応して第2のルックアップテーブルを用意する。そして、選択されたルックアップテーブルを用いて、インデックスカラー・テクスチャマッピングモードで、リムライト用テクスチャをオブジェクトにマッピングする。即ち、第2のテクスチャ領域のテクセル値が、光源の色に対応した色情報になるように設定されたルックアップテーブルを用いてリムライト用テクスチャをマッピングする。このようにしても、オブジェクトの輪郭に対して、光源の色に対応した色のリムライト効果を付与できるようになる。
【0074】
2.本実施形態の手法
2.1 マルチテクスチャマッピングによるリムライト表現
3次元CGの表現手法として、オブジェクト(物体)の輪郭に光を回り込ませるリムライトがある。例えば高機能なピクセルシェーダを有する高性能なゲーム装置等では、このようなリムライトはピクセルシェーダにより実現できる。しかしながら、例えば高機能なピクセルシェーダを持たない携帯型ゲーム装置等では、ピクセルシェーダによりリムライトを実現することができない。
【0075】
そこで本実施形態では、オブジェクトデータに工夫を施すことで、高機能なピクセルシェーダを有しない携帯型ゲーム装置等でリムライトを実現できる手法を提供する。
【0076】
例えば図2(A)はトーラス形状のオブジェクトOBの例である。このオブジェクトOBに対して図2(B)に示すような元絵テクスチャTEXAをマッピングする。この元絵テクスチャTEXAはオブジェクトOBの本来の模様を表すテクスチャである。図2(B)では元絵テクスチャTEXAとして木目のテクスチャの例が示されている。
【0077】
この図2(B)の元絵テクスチャTEXAを図2(A)のオブジェクトOBにマッピングすることで、図2(C)に示すような画像が得られる。図2(C)は、元絵テクスチャTEXAをオブジェクトOBにマッピングして描画した場合の描画バッファ176(フレームバッファ)のイメージを表す。
【0078】
次に図3(A)に示すようなリムライト用テクスチャTEXLを用意する。このリムライト用テクスチャTEXLは、オブジェクトの輪郭に付与されるリムライトを表現するために用いられるテクスチャである。例えばオブジェクトの法線ベクトルに基づき求められたテクスチャ座標を用いて、図3(A)のリムライト用テクスチャTEXLをオブジェクトOBにマッピングして描画すると、図3(B)に示すような画像が得られる。図3(B)では、オブジェクトOBの輪郭領域に対して、輝度の高いリムライト効果が付与されている。
【0079】
図4(A)は、図2(B)に示す元絵テクスチャTEXAと図3(A)に示すリムライト用テクスチャを、オブジェクトOBに対してマルチテクスチャマッピングした様子を示すものである。即ちオブジェクトOBに対してテクスチャTEXAとリムライト用テクスチャTEXLを同時にマッピングする(貼り付ける)。これにより図4(B)に示すように、オブジェクトOBに対して元絵テクスチャがマッピングされると共に、その輪郭にリムライト効果が付与された画像が生成されるようになる。
【0080】
このように本実施形態によれば、例えば高機能なピクセルシェーダを用いなくても、図2(B)のような元絵テクスチャTEXAと図3(A)のようなリムライト用テクスチャTEXLを用意して、オブジェクトOBにマルチテクスチャマッピングするだけで、リムライト効果を実現できる。従って、高機能なピクセルシェーダを持たない携帯型ゲーム装置等においてもリムライト効果を実現できるようになる。また、後述するように、リムライトの見た目の調整を、リムライト用テクスチャの修正だけで実現できるという利点もある。
【0081】
2.2 リムライト処理の詳細
次に本実施形態のリムライト処理の詳細について説明する。ここでは、同一形状のオブジェクトを2度描画してリムライト処理のマルチテクスチャマッピングを実現する例について説明する。但し、オブジェクトの頂点に対して、元絵テクスチャのテクスチャ座標とリムライト用テクスチャのテクスチャ座標の両方を持たせて、リムライト処理のマルチテクスチャマッピングを実現してもよい。
【0082】
リムライト表現のためのマルチテクスチャは、モデルそのものの模様部分である元絵テクスチャ(デカール)と、リムライト効果用の部分であるリムライト用テクスチャに分かれる。本実施形態では、まず元絵テクスチャの部分を描画し、次にリムライト用テクスチャの部分を加算で描画する。具体的には、まず、元絵テクスチャがマッピングされるオブジェクトを描画し、次にリムライト用テクスチャがマッピングされるオブジェクトを加算で描画する。ここで、元絵テクスチャについての描画は従来と同様であるため、詳細な説明は省略し、リムライト用テクスチャの描画について主に説明する。
【0083】
本実施形態では、リムライト用テクスチャをオブジェクトにマッピングする際に、リムライト用のテクスチャ座標については、オブジェクト(モデル)に元々埋め込まれているテクスチャ座標を使用せずに、仮想カメラとオブジェクトの位置関係に応じて動的に変化するテクスチャ座標を計算して使用する。具体的には仮想カメラから見た法線ベクトルのX、Y座標をリムライト用テクスチャ座標として用いる。
【0084】
例えば図5(A)にオブジェクトOBと仮想カメラVCの位置関係の例を示す。本実施形態の画像生成システムでは、図5(A)の仮想カメラVCから見える画像が生成される。そしてオブジェクトOBの各頂点には、オブジェクトOBを構成する各ポリゴン(各プリミティブ面)の向きを表すための法線ベクトルNが設定されている。本実施形態では、このようにオブジェクトOBの頂点に設定された法線ベクトルNに基づいて、リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を算出する。そして求められたリムライト用テクスチャ座標を用いて、オブジェクトに対してリムライト用テクスチャをマッピングする。
【0085】
具体的には図5(B)のカメラ座標系(視点座標系)では、仮想カメラVCの視線方向VDに沿った座標軸がZ軸(広義には第3の座標軸)となり、Z軸に直交する座標軸がX軸、Y軸(広義には第1、第2の座標軸)になっている。本実施形態では、このカメラ座標系での法線ベクトルNのX座標Nx、Y座標Nyを求めて、テクスチャ座標U、Vを算出する。
【0086】
例えば図6(A)にリムライト用テクスチャTEXLの例を示す。このリムライト用テクスチャTEXLは、第1のテクスチャ領域R1と第2のテクスチャ領域R2を有する。第1のテクスチャ領域R1は低い輝度(例えば0)のテクセル値が設定される領域である。図6(A)では、第1のテクスチャ領域R1には、その中心部CP(中心座標)から所定距離内(所定半径内)の範囲(円形範囲)に対して、低い輝度(=0)のテクセル値が設定されている。
【0087】
一方、第2のテクスチャ領域R2は、第1のテクスチャ領域R1よりも高い輝度(例えば255)のテクセル値が設定される領域である。図6(A)ではリムライト用テクスチャTEXLの全体は正方形の領域であり、第1のテクスチャ領域R1は円形の領域であり、第2のテクスチャ領域R2は、TEXLの正方形の領域から円形の領域R1を除いた領域になっている。
【0088】
この場合に本実施形態では、図5(B)の法線ベクトルNの方向が、カメラ座標系のZ軸(第3の座標軸)に沿った方向である場合には、第1のテクスチャ領域R1のテクセル値が読み出されるように、リムライト用のテクスチャ座標U、Vが求められる。具体的には、第1のテクスチャ領域R1の中心部CPのテクセル値が読み出されるようにする。
【0089】
一方、法線ベクトルNの方向が、カメラ座標系のZ軸に直交する方向である場合(例えばカメラ座標系のX軸やY軸に沿った方向である場合)には、第2のテクスチャ領域R2のテクセル値が読み出されるように、リムライト用のテクスチャ座標U、Vが求められる。具体的には第2のテクスチャ領域R2の最外周(U=1.0、V=1.0、U=0、又はV=0)のテクセル値が読み出されるようにする。
【0090】
例えば図6(A)において、テクスチャ座標U、Vの変域を0〜1.0とし、第1のテクスチャ領域R1の中心部CPの座標(0.5、0.5)すると、下式のような演算式によりテクスチャ座標U、Vを求める。
【0091】
U=(Nx+1)/2 (1)
V=(Ny+1)/2 (2)
即ちその法線ベクトルN(Nx、Ny、Nz)が設定される頂点に対して、U=(Nx+1)/2、V=(Ny+1)/2のテクスチャ座標を設定する。なおNx、Nyの変域は−1.0〜1.0である。
【0092】
このようにすれば、法線ベクトルNの方向がカメラ座標系のZ軸に沿った方向であり、Nx=0、Ny=0である場合には、テクスチャ座標はU=0.5、V=0.5になる。従って、その法線ベクトルN(Nx、Ny、Nz)が設定される頂点では、図6(A)の第1のテクスチャ領域R1の中心部CP(0.5、0.5)のテクセル値が読み出され、最も低い輝度(=0)に設定される。
【0093】
一方、法線ベクトルNの方向がZ軸に直交する方向であり、例えばNx=1.0、Ny=0である場合には、テクスチャ座標はU=1.0、V=0.5になる。或いはNx=0、Ny=1.0である場合には、テクスチャ座標はU=0.5、V=1.0になる。従って、これらの法線ベクトルN(Nx、Ny、Nz)が設定される頂点では、図6(A)の第2のテクスチャ領域R2の最外周のテクセル値が読み出されて、最も高い輝度(=255)に設定される。
【0094】
従って例えば図5(A)において、法線ベクトルNの方向が、仮想カメラVCの視線方向VDに沿った方向(VDとのなす角度が180度。VDと反対方向)である頂点では、リムライト用テクスチャのテクセル値は例えば最小輝度になる。従って、元絵テクスチャとリムライト用テクスチャをマルチテクスチャマッピングした場合に、その頂点の色は元絵テクスチャの色だけで決まるようになり、輝度を高くするリムライト効果は付与されないようになる。
【0095】
一方、図5(A)において、法線ベクトルNの方向が、仮想カメラVCの視線方向VDと直交する方向(VDとのなす角度が90度)である頂点では、リムライト用テクスチャのテクセル値は例えば最大輝度になる。従って、元絵テクスチャとリムライト用テクスチャをマルチテクスチャマッピングした場合には、その頂点の色は、元絵テクスチャの色に対してリムライト用テクスチャの最大輝度値を加算した色になる。そして法線ベクトルNの方向が視線方向VDと直交する頂点は、仮想カメラVCから見てオブジェクトOBの輪郭付近に位置する頂点である。従って、この輪郭付近の頂点の元絵の色に対して、リムライト用テクスチャの最大輝度値を加算されるようになり、図6(B)に示すようにオブジェクトOBの輪郭にリムライト効果が付与された画像を生成できる。
【0096】
以上の本実施形態の手法によれば、仮想カメラとオブジェクトの位置関係が変化した場合に、リムライト用のテクスチャ座標が動的に変化して計算されるため、常にオブジェクトの輪郭付近に対してリムライト効果が付加された画像を生成できる。また、この際のリムライト用のテクスチャ座標は、オブジェクトの各頂点の法線ベクトルを利用して、簡素な演算式で求めることができる。従って、例えばピクセルシェーダ機能を有しないような画像生成システムにおいても、リアルなリムライト表現を実現することが可能になる。
【0097】
なお本実施形態の比較例の手法として、マルチテクスチャマッピングにより環境マッピングやハイライト表示を実現する手法も考えられる。しかしながら、環境マッピングは、オブジェクトに対して、周囲の環境を映り込ませる手法であり、オブジェクトの輪郭にリムライト効果を付与する手法ではない。またハイライト表示は、仮想カメラの注視点にハイライト効果を付与する手法であり、このハイライト表示もオブジェクトの輪郭にリムライト効果を付与する手法ではない。本実施形態では図6(A)に示すようなリムライト用テクスチャを用いることで、これらの環境マッピングやハイライト表示では実現できなかったリムライト効果を、マルチテクスチャマッピングを利用した簡素な処理で実現することに成功している。
【0098】
なお図6(A)では、第1、第2のテクスチャ領域R1、R2の境界BDの領域において、境界BDに近づくにつれて輝度が高くなるように、リムライト用テクスチャTEXLの第1のテクスチャ領域R1のテクセル値を設定している。即ち、領域R1とR2の境界BDにおいて、最小輝度(=0)から最大輝度(=255)にテクセル値が急激に変化しないように、グラディエーションをかけて輝度値を徐々に変化させる。このようにすれば、オブジェクトOBの輪郭付近において輝度が急激に変化することで画質が劣化してしまう事態を効果的に防止できる。
【0099】
2.3 リムライト用テクスチャの変形例
本実施形態で使用されるリムライト用テクスチャTEXLは図6(A)で説明したテクスチャに限定されず、種々の変形実施が可能である。例えばリムライト用テクスチャTEXLの第2のテクスチャ領域R2のテクセル値として設定される色情報を変更するようにしてもよい。
【0100】
例えば図6(A)では、第2のテクスチャ領域R2のテクセル値は、R、G、Bの全ての成分が例えば最大輝度値(R=G=B=255)に設定されている。この場合には、オブジェクトOBの輪郭のリムライトは白になる。
【0101】
これに対して図7では、第2のテクスチャ領域R2のテクセル値は高い輝度の黄色に設定されている。このようにすれば、オブジェクトOBのリムライトの色を白から黄色に変更できる。従って、例えばオブジェクトの種類毎にリムライトの色を変えたり、オブジェクトが登場するゲームステージ毎にリムライトの色を変えることなどが可能になり、多様なリムライト表現を実現できる。しかも、リムライト色の変更は、リムライト用テクスチャの第2のテクスチャ領域R2の色の変更だけで済むため、簡素な処理で多様なリムライト表現を実現できる。
【0102】
また図8では、第1、第2のテクスチャ領域R1、R2の境界BDをギザギザ状に設定している。即ちリムライト用テクスチャTEXLの円形の境界BDにムラを与えている。
【0103】
このようにすれば、図8に示すように、オブジェクトOBの輪郭のリムライト領域の形状にもムラが付与されて、多様な画像表現を実現できる。またオブジェクトOBの輪郭における光の回り込み具合が、輪郭の各場所において異なって見えるようになり、よりリアルなリムライト表現を実現できる。
【0104】
このように本実施形態では、リムライト用テクスチャの色や境界の形状を変更するだけで、多様な表現を実現できるという利点がある。即ち、リムライトの見た目の調整を、リムライト用テクスチャの修正だけで実現できるという利点がある。
【0105】
例えばピクセルシェーダを用いたリムライト処理では、リムライト色の変更やリムライト領域のムラ表現を実現するためには、別のシェーダプログラム等を用意する必要があったり、処理が繁雑化するなどの課題がある。
【0106】
これに対して本実施形態の手法では、図7、図8に示すようにリムライト用テクスチャに修正を加えるだけで、リムライト色の変更やリムライト領域のムラ表現を実現できる。例えば、ゲームに登場するオブジェクトの種類や、オブジェクトが登場するゲームステージや、オブジェクトについて発生するゲームイベントなどのゲーム状況に応じて、リムライト色を変更したり、リムライト領域のムラ具合を変更することが可能になる。従って、ピクセルシェーダ等を用いる手法に比べて、多様なリムライト表現を簡素な処理で実現できるという利点がある。
【0107】
2.4 光源との方向関係や光源色を反映させたリムライト
本実施形態によれば、光源との方向関係や光源色を反映させたリムライト表現を実現できる。
【0108】
例えば図9(A)では、オブジェクト空間内(ワールド空間内)に対して光源LSが配置設定されている。この光源LSは、例えばゲームのキャラクタ等を照明するために用意された光源であってもよいし、リムライト専用に用意された光源であってもよい。
【0109】
そして本実施形態では、仮想カメラVCの視線方向VDと光源LSの光源方向LDとのなす角度(広義には方向関係、狭義には内積)に基づいて、リムライトの輝度(強さ)を変更する。
【0110】
例えば図9(A)では視線方向VDと光源方向LDのなす角度は180度前後になっており、この場合にはリムライトの輝度(強さ)を強くする。これにより図9(B)に示すように、オブジェクトOBの輪郭に対して強い輝度のリムライトが付与された画像を生成できる。即ち、リムライトとなる光源LSの光がオブジェクトOBの輪郭に強く回り込んだ様子を表現できる。
【0111】
一方、図10(A)では視線方向VDと光源方向LDのなす角度は180よりも小さくなっており、この場合にはリムライトの輝度を図9(A)に比べて弱くする。これにより図10(B)に示すように、オブジェクトOBの輪郭に対して弱い輝度のリムライトが付与された画像を生成できる。即ち、リムライトとなる光源LSの光が弱く回り込んだ様子を表現できる。
【0112】
このように視線方向VDと光源方向LDの方向関係に応じてリムライト効果の輝度を変更すれば、仮想カメラVCの見る角度や、光源LSとの位置関係に応じて、オブジェクトOBの輪郭に付与されるリムライトの輝度(強さ)が動的に変化するようになり、よりリアルで仮想現実感のある表現を実現できる。
【0113】
次に、このようなリムライト効果の輝度の変更処理の具体例について図11(A)〜図11(C)を用いて説明する。
【0114】
例えば図11(A)では、仮想カメラVCの視線方向VDと、光源LSの光源方向LDとのなす角度θに対応する内積cosθが求められる(VD、LDは単位ベクトルとする)。そしてこの内積cosθに基づいてα値であるα=F(cosθ)を求める。
【0115】
ここでF(cosθ)はcosθを引数とする関数である。例えばθ=180度で、cosθ=−1の場合に、α=F(cosθ)は最大値(例えば1.0)になり、θが180度よりも小さくなるにつれて、α=F(cosθ)は最大値よりも小さくなる。
【0116】
そして、まず図11(B)に示すように、元絵テクスチャTEXAがマッピングされるオブジェクトOBを描画バッファ176の描画領域に描画する。
【0117】
次に、VDとLDの方向関係により求められたα=F(cosθ)を用いたαブレンディングにより、元絵テクスチャTEXAがマッピングされるオブジェクトOBの描画領域に対して、図11(C)に示すようなリムライト用テクスチャがマッピングされるオブジェクトOBを描画する。これにより、オブジェクトOBの輪郭領域において、元絵テクスチャTEXAの色(テクセル値)とリムライト用テクスチャの色(テクセル値)が、α=F(cosθ)でαブレンディングされて、図9(B)や図10(B)に示すような画像が生成されるようになる。
【0118】
例えば元絵テクスチャの色(ディスティネーション色)をCdstとし、リムライト用テクスチャの色(ソース色)をCsrcとし、αブレンディング後の最終的な色をCrとすると、例えば下式に示すようなαブレンディングを行う。
【0119】
Cr=Cdst+α×Csrc (3)
このようにすれば、仮想カメラVCの視線方向VDと光源方向LDが図9(A)のような関係である場合には、α=F(cosθ)が最大値に設定されるため、リムライト用テクスチャの色Csrcのブレンディングの割合が強くなる。従って、図9(B)に示すように、オブジェクトOBの輪郭に対して強い輝度のリムライト効果が付与された画像が生成されるようになる。
【0120】
一方、仮想カメラVCの視線方向VDと光源方向LDが図10(A)のような関係である場合には、α=F(cosθ)が最大値よりも小さくなるため、リムライト用テクスチャの色Csrcのブレンディングの割合が弱くなる。従って、図10(B)に示すように、オブジェクトOBの輪郭に対して弱い輝度のリムライト効果が付与された画像が生成されるようになる。
【0121】
更に本実施形態では、このような光源方向LDのみならず、光源色も反映させたリムライト処理を実現してもよい。例えばオブジェクト空間に設定された光源LSの色に応じて、オブジェクトOBの輪郭に付与されるリムライト効果の色を変更する。具体的には、元絵テクスチャの色をCdstとし、リムライト用テクスチャの色をCsrcとし、光源の色をClsとした場合に、例えば下式に示すようなαブレンディングを行う。
【0122】
Cr=Cdst+α×Cls×Csrc (4)
このようにすれば、αブレンディング後の色Crには光源色Clsも反映されるようになるため、光源色Clsに応じて、オブジェクトOBの輪郭に付与されるリムライトの色も変化する。従って、光源LSの色の光がオブジェクトOBの輪郭に回り込む様子をリアルに表現でき、プレーヤの仮想現実感を更に向上できる。
【0123】
なお、光源色を反映させたリムライト処理は、αブレンディングを利用する処理には限定されない。例えば図12では、複数のリムライト用テクスチャの中から、光源色に対応するテクスチャを選択することで、光源色を反映させたリムライト処理を実現して、リムライト効果の色が変更された画像を生成している。
【0124】
具体的には図12では、朝のゲームステージ、昼間のゲームステージ、夕方のゲームステージのリムライト用テクスチャとして、各々、テクスチャTEXL1、TEXL2、TEXL3を用意する。即ちこれらの複数のリムライト用テクスチャTEXL1、TEXL2、TEXL3をテクスチャ記憶部174に記憶しておく。
【0125】
そして、リムライト用テクスチャTEXL1では、第2のテクスチャ領域のテクセル値として、例えば朝の光源(太陽)の色に対応する青の色情報が設定されている。このようにすれば、例えば朝のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、朝の青い光が回り込んだように見えるリムライト効果を実現できる。
【0126】
またリムライト用テクスチャTEXL2では、第2のテクスチャ領域のテクセル値として、例えば昼間の光源の色に対応する白の色情報が設定されている。このようにすれば、例えば昼間のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、昼間の太陽の強い輝度の白い光が回り込んだように見えるリムライト効果を実現できる。
【0127】
またリムライト用テクスチャTEXL3では、第2のテクスチャ領域のテクセル値として、例えば夕方の光源の色に対応する赤の色情報が設定されている。このようにすれば、例えば夕方のゲームステージでは、キャラクタ等のオブジェクトの輪郭に対して、夕方の夕日の赤い光が回り込んだように見えるリムライト効果を実現できる。
【0128】
このように図12の手法によれば、光源の色に対応した複数のリムライト用テクスチャとして、第2のテクスチャ領域の色情報が異なる複数のテクスチャを用意する。そしてこれらのリムライト用テクスチャの中から、ゲームステージ等のゲーム状況に応じたテクスチャを選択して、オブジェクトにマッピングする。こうすることで、ゲームステージ等のゲーム状況に応じた色のリムライト効果を、オブジェクトの輪郭に施すことが可能になる。なお図12のようなテクスチャの差し替えではなく、リムライト用テクスチャの第2のテクスチャ領域の色情報を、ゲームステージ等のゲーム状況に応じてリアルタイムに書き換える手法を採用することも可能である。
【0129】
図13(A)では、オブジェクトへのリムライト用テクスチャ(及び元絵テクスチャ)のマッピングを、インデックスカラー・テクスチャマッピング方式で行う。
【0130】
このインデックスカラー・テクスチャマッピングでは、テクスチャ記憶部174の使用記憶容量を節約するために、リムライト用テクスチャTEXLの各テクセルには、RGBの色情報(輝度情報)ではなく、インデックス番号が記憶される。そしてインデックスカラー・テクスチャマッピング用のルックアップテーブルLUTには、リムライト用テクスチャTEXLの各テクセルのインデックス番号(INDEX)により指定される色情報(ROUT、GOUT、BOUT)が記憶される。
【0131】
そしてオブジェクトOBに対してテクスチャマッピングを行う際には、リムライト用テクスチャTEXLの各テクセルのインデックス番号(INDEX)に基づいてルックアップテーブルLUTを参照し、インデックス番号に関連づけられた色情報(ROUT、GOUT、BOUT)を読み出す。そして、読み出された色情報を描画バッファ176(描画領域)に描画する。
【0132】
このインデックスカラー・テクスチャマッピングでは、ルックアップテーブルLUTを用いない通常のテクスチャマッピングに比べて、使用できる色数は少なくなる。しかしながら、リムライト用テクスチャTEXLとして、実際の色情報を記憶する必要がないため、テクスチャ記憶部174の使用記憶容量を減らすことが可能になる。
【0133】
そして図13(B)では、インデックスカラー・テクスチャマッピング用のルックアップテーブルとして複数のルックアップテーブルLUTB、LUTW、LUTRを用意する。そしてこれらの複数のルックアップテーブルLUTB、LUTW、LUTRの中から、光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成する。
【0134】
具体的にはリムライト用テクスチャTELXとしては、例えば第1のテクスチャ領域のテクセルに対して第1のインデック番号INDEX1が設定され、第2のテクスチャ領域のテクセルに対して第2のインデックス番号INDEX2が設定されるテクスチャを用意する。なお第1、第2のテクスチャ領域の境界領域では、輝度のグラディエーションを実現するために、第1、第2のインデックス番号INDEX1、INDEX2とは異なるインデックス番号(例えばINDEX1とINDEX2の間の番号)を設定する。
【0135】
そして図13(B)に示すように、インデックスカラー・テクスチャマッピング用のルックアップテーブルとして、朝のゲームステージ用のルックアップテーブルLUTB、昼間のゲームステージ用のルックアップテーブルLUTW、夕方のゲームステージ用のルックアップテーブルLUTRを用意する。即ちこれらのルックアップテーブルLUTB、LUTW、LUTRを記憶部170に記憶しておく。
【0136】
例えば朝のゲームステージ用のルックアップテーブルLUTBでは、リムライト用テクスチャTEXLの第2のテクスチャ領域のテクセルに設定されるインデックス番号(INDEX2)が、朝の光源の色である青を指定する番号に設定されている。従って、ルックアップテーブルLUTBを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に青のリムライト効果が付与された画像が生成されるようになる。
【0137】
また昼間のゲームステージ用のルックアップテーブルLUTWでは、第2のテクスチャ領域のインデックス番号が、昼間の光源の色である白を指定する番号に設定されている。従って、ルックアップテーブルLUTWを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に白のリムライト効果が付与された画像が生成されるようになる。
【0138】
また夕方のゲームステージ用のルックアップテーブルLUTRでは、第2のテクスチャ領域のインデックス番号が、夕方の光源の色である赤を指定する番号に設定されている。従って、ルックアップテーブルLUTRを用いたインデックスカラー・テクスチャマッピングをオブジェクトOBに対して行うことで、オブジェクトOBの輪郭に赤のリムライト効果が付与された画像が生成されるようになる。
【0139】
以上の図13(A)、図13(B)の手法では、ルックアップテーブルLUTB、LUTW、LUTRを用いたインデックスカラー・テクスチャマッピングを行うことで、図12のようなテクスチャ差し替え手法と同様に、光源の色に対応する色のリムライト効果をオブジェクトOBの輪郭に施すことが可能になる。
【0140】
そして、図13(A)、図13(B)のようにインデックスカラー・テクスチャマッピングを利用した手法では、図12のような複数のリムライト用テクスチャをテクスチャ記憶部174に記憶しなくても済む。そしてルックアップテーブルの使用記憶容量はリムライト用テクスチャに比べて少ないため、使用記憶容量の節約を図れる。
【0141】
また、リムライト効果の色を変更する処理は、第2のテクスチャ領域のインデックス番号(INDEX2)と色情報との対応付けが異なる複数のルックアップテーブルを用意するだけで済むため、リムライト処理やリムライト効果のデザイン作業を簡素化できるという利点もある。
【0142】
なお、以上では、リムライト効果の色を変更するゲーム状況の例として、オブジェクトが登場するゲームステージについて主に説明したが、本実施形態はこれに限定されない。例えばゲームに複数種類のオブジェクトが登場する場合に、そのオブジェクトの種類に応じて、図12(A)〜図13(B)等の手法を用いてリムライト効果の色を変更してもよい。例えば第1のオブジェクトではリムライト効果の色を第1の色に設定し、第2のオブジェクトではリムライト効果の色を第2の色に設定する。この場合に、第1、第2のオブジェクトのリムライト効果の色を、これらの第1、第2のオブジェクトが登場するゲームステージに応じて更に変更してもよい。
【0143】
ここでゲームステージは、ゲームのクリア条件の達成により次の一連のゲーム場面(ゲーム画面)が現れる形式のゲームにおけるクリアの都度に現れる新しい一連のゲーム場面(ゲーム画面)である。そしてゲームステージに応じてリムライト効果の色を変更する場合には、ゲームステージに配置設定される光源の色や、ゲームステージに設定される時間帯(朝のゲームステージ、昼間のゲームステージ等)や、ゲームステージが設定される場所の情報に基づいて、オブジェクトのリムライト効果の色を変更すればよい。
【0144】
またオブジェクトが登場するゲームで発生するゲームイベントに応じて、オブジェクトのリムライト効果の色を変更してもよい。ここでゲームイベントとしては、ヒットイベント、発射イベント、消滅イベント、衝突イベント、墜落イベント、爆発イベント、燃焼イベント、光照射イベント、敵ボスの登場イベント、オブジェクト生成イベント、オブジェクト変形イベント、アイテム取得イベント、ゲームスコア更新イベント、ゲームパラメータ更新イベント、或いは仮想カメラ変更イベント等の種々のイベントを想定できる。なお、イベントは、プログラミングにおいて一般に用いられる事象の意味である。
【0145】
また例えばオブジェクトがゲームに登場するキャラクタである場合には、ゲーム状況としてキャラクタのステータスパラメータに応じて、リムライト効果の色や境界の形状等を変更してもよい。ここでキャラクタのステータスパラメータは、キャラクタの状態(体力、耐久度、抵抗力、守備力、戦力パラメータ、武器量、攻撃力、ヒットポイント、マジックポイント、アイテム量等のステータス)を量的、質的に表す変数(パラメータ)であり、ゲーム処理における各種の判断(ゲーム進行の判断、ゲーム結果の判断等)の材料に使用されるものである。
【0146】
3.詳細な処理
次に本実施形態の詳細な処理例について図14のフローチャートを用いて説明する。
【0147】
まずゲームステージの光源情報を取得する(例えばステップS1)。例えばそのゲームステージに配置設定される光源の光源方向や光源色を取得する。この光源はそのゲームステージの主光源(平行光源)であってもよいし、リムライト専用の光源であってもよい。
【0148】
次に、元絵テクスチャと、ステップS1で取得された光源の色に対応するリムライト用テクスチャを用意する(ステップS2)。例えば図12で説明したように複数のリムライト用テクスチャの中から、そのゲームステージの光源色に対応するテクスチャを選択する。なお図13(A)のようにインデックスカラー・テクスチャマッピングを行う場合には、図13(B)に示すような複数のリムライト用ルックアップテーブルの中から、そのゲームステージの光源色に対応するルックアップテーブルを選択すればよい。
【0149】
次に、オブジェクトのジオメトリ処理を行う(ステップS3)。具体的には、オブジェクトの座標変換処理、クリッピング処理、透視変換処理などを行う。そしてジオメトリ処理後(透視変換処理後)のオブジェクトデータは、記憶部170に保存される。
【0150】
次に、ステップS3で得られたジオメトリ処理後のオブジェクトデータと、ステップS2で用意された元絵テクスチャとに基づいて、図2(A)、図2(B)に示すように描画バッファ176にオブジェクトを描画する(ステップS4)。即ち元絵テクスチャがマッピングされたオブジェクトを描画する。
【0151】
次に、保存されているジオメトリ処理後のオブジェクトデータの各頂点の法線ベクトルの情報に基づいて、図5(A)、図5(B)で説明したようにリムライト用のテクスチャ座標を求め、求められたテクスチャ座標をオブジェクトの各頂点に設定する(ステップS5)。例えば、記憶部170に保存されているジオメトリ処理後のオブジェクトデータの頂点に設定される元絵用のテクスチャ座標に対して、リムライト用のテクスチャ座標を上書きする。
【0152】
次に図11(A)で説明したように、仮想カメラの視線方向と光源の方向に基づいてα値を求める(ステップS6)。そして、図11(B)、図11(C)で説明したいように、求められたα値と、ジオメトリ処理後のオブジェクトデータと、リムライト用テクスチャに基づいて、描画バッファにオブジェクトを描画する(ステップS7)。即ち、リムライト用テクスチャがマッピングされたオブジェクトをαブレンディングで描画する。これにより図9(B)、図10(B)に示すようなオブジェクトの輪郭にリムライト効果が付与された画像が生成される。
【0153】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(方向関係、第1、第2、第3の座標軸等)と共に記載された用語(角度、X軸、Y軸、Z軸等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、画像生成処理、テクスチャマッピング処理、テクスチャ座標演算処理、色情報変更処理、αブレンド処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0154】
100 処理部、102 ゲーム演算部、104 オブジェクト空間設定部、
106 移動体演算部、108 テクスチャ座標演算部、120 画像生成部、
122 テクスチャマッピング部、130 音生成部、160 操作部、
170 記憶部、172 オブジェクトデータ記憶部、174 テクスチャ記憶部、
176 描画バッファ、180 情報記憶媒体、190 表示部、192 音出力部、
194 補助記憶装置、196 通信部
【特許請求の範囲】
【請求項1】
オブジェクト空間の設定処理を行うオブジェクト空間設定部と、
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部として、
コンピュータを機能させ、
前記テクスチャ記憶部は、
元絵テクスチャとリムライト用テクスチャを記憶し、
前記画像生成部は、
前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とするプログラム。
【請求項2】
請求項1において、
前記画像生成部は、
前記元絵テクスチャがマッピングされるオブジェクトを描画し、次に前記リムライト用テクスチャがマッピングされるオブジェクトを描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
テクスチャ座標を演算するテクスチャ座標演算部として、
コンピュータを更に機能させ、
前記テクスチャ座標演算部は、
オブジェクトの頂点に設定された法線ベクトルに基づいて、前記リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求め、
前記画像生成部は、
求められた前記リムライト用テクスチャ座標に基づいて、オブジェクトに対して前記リムライト用テクスチャをマッピングすることを特徴とするプログラム。
【請求項4】
請求項3において、
前記テクスチャ記憶部は、
低い輝度のテクセル値が設定される第1のテクスチャ領域と、前記第1のテクスチャ領域の周囲に設けられ前記第1のテクスチャ領域よりも高い輝度のテクセル値が設定される第2のテクスチャ領域とを有する前記リムライト用テクスチャを記憶し、
前記テクスチャ座標演算部は、
前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記法線ベクトルの方向が前記第3の座標軸に沿った方向である場合には、前記第1のテクスチャ領域のテクセル値が読み出され、前記法線ベクトルの方向が前記第3の座標軸に直交する方向である場合には、前記第2のテクスチャ領域のテクセル値が読み出されるように、前記リムライト用テクスチャ座標を求めることを特徴とするプログラム。
【請求項5】
請求項4において、
前記テクスチャ座標演算部は、
前記法線ベクトルを(Nx、Ny、Nz)とし、前記リムライト用テクスチャ座標を(U、V)とし、前記第1のテクスチャ領域の中心部の座標を(a、b)とした場合に、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求めることを特徴とするプログラム。
【請求項6】
請求項3乃至5のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1のテクスチャ領域ではその中心部から所定距離内の範囲に対して、前記第2のテクスチャ領域よりも低い輝度のテクセル値が設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項7】
請求項3乃至6のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1、第2のテクスチャ領域の境界の領域では、前記境界に近づくにつれて輝度が高くなるように前記第1のテクスチャ領域のテクセル値が設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項8】
請求項3乃至7のいずれかにおいて、
前記画像生成部は、
前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行うことを特徴とするプログラム。
【請求項9】
請求項8において、
前記色情報変更部は、
ゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つであるゲーム状況に応じて、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行うことを特徴とするプログラム。
【請求項10】
請求項3乃至9のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1、第2のテクスチャ領域の境界がギザギザ状に設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記画像生成部は、
前記オブジェクト空間に設定された光源の方向と前記仮想カメラの視線方向との間の方向関係に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成することを特徴とするプログラム。
【請求項12】
請求項11において、
前記画像生成部は、
前記方向関係に応じて設定されたα値を用いたαブレンディングにより、前記元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、前記リムライト用テクスチャがマッピングされたオブジェクトを描画することで、前記方向関係に応じてリムライト効果の輝度が変更される画像を生成することを特徴とするプログラム。
【請求項13】
請求項1乃至12のいずれかにおいて、
前記画像生成部は、
前記オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成することを特徴とするプログラム。
【請求項14】
請求項13において、
前記画像生成部は、
複数のリムライト用テクスチャの中から、前記光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成することを特徴とするプログラム。
【請求項15】
請求項13において、
前記画像生成部は、
複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、前記光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成することを特徴とするプログラム。
【請求項16】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至15のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項17】
オブジェクト空間の設定処理を行うオブジェクト空間設定部と、
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、
前記テクスチャ記憶部は、
元絵テクスチャとリムライト用テクスチャを記憶し、
前記画像生成部は、
前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とする画像生成システム。
【請求項1】
オブジェクト空間の設定処理を行うオブジェクト空間設定部と、
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部として、
コンピュータを機能させ、
前記テクスチャ記憶部は、
元絵テクスチャとリムライト用テクスチャを記憶し、
前記画像生成部は、
前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とするプログラム。
【請求項2】
請求項1において、
前記画像生成部は、
前記元絵テクスチャがマッピングされるオブジェクトを描画し、次に前記リムライト用テクスチャがマッピングされるオブジェクトを描画して、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
テクスチャ座標を演算するテクスチャ座標演算部として、
コンピュータを更に機能させ、
前記テクスチャ座標演算部は、
オブジェクトの頂点に設定された法線ベクトルに基づいて、前記リムライト用テクスチャをマッピングするためのリムライト用テクスチャ座標を求め、
前記画像生成部は、
求められた前記リムライト用テクスチャ座標に基づいて、オブジェクトに対して前記リムライト用テクスチャをマッピングすることを特徴とするプログラム。
【請求項4】
請求項3において、
前記テクスチャ記憶部は、
低い輝度のテクセル値が設定される第1のテクスチャ領域と、前記第1のテクスチャ領域の周囲に設けられ前記第1のテクスチャ領域よりも高い輝度のテクセル値が設定される第2のテクスチャ領域とを有する前記リムライト用テクスチャを記憶し、
前記テクスチャ座標演算部は、
前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記法線ベクトルの方向が前記第3の座標軸に沿った方向である場合には、前記第1のテクスチャ領域のテクセル値が読み出され、前記法線ベクトルの方向が前記第3の座標軸に直交する方向である場合には、前記第2のテクスチャ領域のテクセル値が読み出されるように、前記リムライト用テクスチャ座標を求めることを特徴とするプログラム。
【請求項5】
請求項4において、
前記テクスチャ座標演算部は、
前記法線ベクトルを(Nx、Ny、Nz)とし、前記リムライト用テクスチャ座標を(U、V)とし、前記第1のテクスチャ領域の中心部の座標を(a、b)とした場合に、U=(Nx+2a)/2、V=(Ny+2b)/2の演算式によりリムライト用テクスチャ座標を求めることを特徴とするプログラム。
【請求項6】
請求項3乃至5のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1のテクスチャ領域ではその中心部から所定距離内の範囲に対して、前記第2のテクスチャ領域よりも低い輝度のテクセル値が設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項7】
請求項3乃至6のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1、第2のテクスチャ領域の境界の領域では、前記境界に近づくにつれて輝度が高くなるように前記第1のテクスチャ領域のテクセル値が設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項8】
請求項3乃至7のいずれかにおいて、
前記画像生成部は、
前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行うことを特徴とするプログラム。
【請求項9】
請求項8において、
前記色情報変更部は、
ゲームに登場するオブジェクトの種類、オブジェクトが登場するゲームステージ、及びオブジェクトについて発生するゲームイベントの少なくとも1つであるゲーム状況に応じて、前記第2のテクスチャ領域のテクセル値として設定される色情報を変更する処理を行うことを特徴とするプログラム。
【請求項10】
請求項3乃至9のいずれかにおいて、
前記テクスチャ記憶部は、
前記第1、第2のテクスチャ領域の境界がギザギザ状に設定された前記リムライト用テクスチャを記憶することを特徴とするプログラム。
【請求項11】
請求項1乃至10のいずれかにおいて、
前記画像生成部は、
前記オブジェクト空間に設定された光源の方向と前記仮想カメラの視線方向との間の方向関係に応じて、オブジェクトの輪郭に付与されるリムライト効果の輝度が変更される画像を生成することを特徴とするプログラム。
【請求項12】
請求項11において、
前記画像生成部は、
前記方向関係に応じて設定されたα値を用いたαブレンディングにより、前記元絵テクスチャがマッピングされたオブジェクトが描画される領域に対して、前記リムライト用テクスチャがマッピングされたオブジェクトを描画することで、前記方向関係に応じてリムライト効果の輝度が変更される画像を生成することを特徴とするプログラム。
【請求項13】
請求項1乃至12のいずれかにおいて、
前記画像生成部は、
前記オブジェクト空間に設定された光源の色に応じて、オブジェクトの輪郭に付与されるリムライト効果の色が変更される画像を生成することを特徴とするプログラム。
【請求項14】
請求項13において、
前記画像生成部は、
複数のリムライト用テクスチャの中から、前記光源の色に対応するテクスチャを選択することで、リムライト効果の色が変更された画像を生成することを特徴とするプログラム。
【請求項15】
請求項13において、
前記画像生成部は、
複数のインデックスカラー・テクスチャマッピング用のルックアップテーブルの中から、前記光源の色に対応するルックアップテーブルを選択することで、リムライト効果の色が変更された画像を生成することを特徴とするプログラム。
【請求項16】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至15のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項17】
オブジェクト空間の設定処理を行うオブジェクト空間設定部と、
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャ記憶部から読み出されたテクスチャがマッピングされるオブジェクトを描画して、前記オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、
前記テクスチャ記憶部は、
元絵テクスチャとリムライト用テクスチャを記憶し、
前記画像生成部は、
前記元絵テクスチャと前記リムライト用テクスチャをオブジェクトにマルチテクスチャマッピングすることで、オブジェクトの輪郭にリムライトの効果が付与された画像を生成することを特徴とする画像生成システム。
【図1】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2010−277407(P2010−277407A)
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2009−130504(P2009−130504)
【出願日】平成21年5月29日(2009.5.29)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願日】平成21年5月29日(2009.5.29)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]