説明

プログラム、情報記憶媒体、及び画像生成システム

【課題】オブジェクトの輪郭部分についてリアルな表現を行うことが可能なプログラム、情報記憶媒体、及び画像生成システムを提供すること。
【解決手段】オブジェクト空間を所与の視点から見た画像を生成するためのプログラムであって、前記オブジェクト空間にオブジェクトを配置するオブジェクト空間設定部と、前記オブジェクトを前記視点を基準として透視変換する透視変換部と、透視変換されたオブジェクトの輪郭に近いほど当該オブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う輝度調整部としてコンピュータを機能させ、前記輝度調整部が、前記オブジェクト空間の所与の軸方向に向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、及び画像生成システムに関する。
【背景技術】
【0002】
従来から、複数のポリゴンが設定されるオブジェクト空間(仮想的な3次元空間)内において、仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、オブジェクトの法線ベクトルと視線ベクトルとに基づいて、オブジェクトの後方にある光源からの光がオブジェクトのシルエット(輪郭)を透過して見えるシルエット色を求めるものが知られている(例えば、特許文献1)。
【特許文献1】特開2007−226576号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の画像生成システムでは、オブジェクトの輪郭の全てが均一な色になってしまい見た目に不自然な表現となってしまうといった問題点があった。
【0005】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、
オブジェクトの輪郭部分についてリアルな表現を行うことが可能なプログラム、情報記憶媒体、及び画像生成システムを提供することにある。
【課題を解決するための手段】
【0006】
本発明は、オブジェクト空間を所与の視点から見た画像を生成するためのプログラムであって、
前記オブジェクト空間にオブジェクトを配置するオブジェクト空間設定部と、
前記オブジェクトを前記視点を基準として透視変換する透視変換部と、
透視変換されたオブジェクトの輪郭に近いほど当該オブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う輝度調整部としてコンピュータを機能させ、
前記輝度調整部が、
前記オブジェクト空間の所与の軸方向に向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させることを特徴とする。
【0007】
また本発明は上記各部を含む画像生成システムに関係する。また本発明はコンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶した情報記憶媒体に関係する。
【0008】
本発明によれば、前記オブジェクト空間の所与の軸方向とに向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させることにより、オブジェクトの輪郭部分についてリアルな表現を行うことができる。
【発明を実施するための最良の形態】
【0009】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0010】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0011】
操作部160は、プレーヤがオブジェクト(プレーヤキャラクタ、移動体)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0012】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部170は、ワーク領域として使用される主記憶部172と、最終的な表示画像等が記憶される描画バッファ174と、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部176と、各オブジェクトに対応付けられたテクスチャが記憶されるテクスチャ記憶部178と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ179とを含む。なお、これらの一部を省略する構成としてもよい。
【0013】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0014】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0015】
通信部196は外部(例えば他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0016】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【0017】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0018】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0019】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0020】
オブジェクト空間設定部110は、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)や光源をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0021】
移動・動作処理部112(移動制御部)は、オブジェクト(キャラクタ、移動体オブジェクト等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0022】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。例えば、仮想カメラ制御部114は、仮想カメラを移動体オブジェクトの移動に追従させる制御を行うようにしてもよい。すなわち、仮想カメラによりオブジェクト(例えばキャラクタ、移動体オブジェクト)を後方から撮影するために、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0023】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0024】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、射影変換(視点を基準とした透視変換、投影変換)、ビューポート変換(スクリーン座標変換)、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。ジオメトリ処理後のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0025】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0026】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0027】
そして描画部120は、オブジェクトを描画する際にテクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0028】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点やピクセルに設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0029】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0030】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0031】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0032】
特に本実施形態の描画部120は、輝度調整部122を含む。輝度調整部122は、透視変換されたオブジェクトの輪郭に近いほど当該オブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う。具体的には、視点の向きと前記プリミティブの向きに応じた法線ベクトルとの内積に応じて前記プリミティブの描画ピクセルの輝度を高める処理を行う。
【0033】
また輝度調整部122は、オブジェクト空間の所与の軸方向に向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させる処理を行う。
【0034】
また輝度調整部122は、前記視点の向きと前記プリミティブの向きに応じて前記オブジェクトに対応づけられたテクスチャのテクスチャ座標を設定し、設定されたテクスチャ座標に基づいて参照されるテクセルの色に従って前記プリミティブの描画ピクセルの輝度を変化させる処理を行うようにしてもよい。
【0035】
また描画部120は、前記オブジェクトを構成するプリミティブの描画ピクセルの色に前記光源の色を反映させる処理を行うようにしてもよい。
【0036】
また描画部120は、前記視点の向きと前記光源の向きとに基づいて、順光状態に対応する第1の光源色と逆光状態に対応する第2の光源色とを合成することによって、前記描画ピクセルの色に反映させる色を求める処理を行うようにしてもよい。
【0037】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0038】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0039】
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0040】
2−1.基準ベクトルによる輝度調整
本実施形態では、透視変換されたオブジェクトの輪郭に近いほどオブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う。
【0041】
具体的には、図2に示すように、仮想カメラVCの視線ベクトルVV(視点の向き)とオブジェクトOBを構成するプリミティブの向きに応じた法線ベクトルNVとの内積(VV・NV)に基づきcosθ(θは、視線ベクトルVVと法線ベクトルNVのなす角度)を求め、求めたcosθに基づき輝度増加パラメータIPを求めて、求めた輝度増加パラメータIPに基づきプリミティブの描画ピクセルの輝度を高める。
【0042】
ここで輝度増加パラメータIPは、次式により求めることができる。
【0043】
IP=1−|cosθ| (1)
従って、仮想カメラから見てオブジェクトOBの輪郭での描画ピクセルについて輝度増加パラメータIPを求めると、視線ベクトルVVと法線ベクトルNVのなす角度θが90度になるため、cosθ=0となり、IP=1(最大値)となる。一方仮想カメラからみてオブジェクトOBの中心部での描画ピクセルについて輝度増加パラメータIPを求めると、θが180度になるため、cosθ=−1となり、IP=0(最小値)となる。なお式(1)において、|cosθ|(cosθの絶対値)に代えて、(cosθ(cosθの累乗)を用いるようにしてもよい。
【0044】
そして、輝度増加パラメータIPに基づきエフェクト色ECを求める。ここでエフェクト色ECは、エフェクト色の基準色をSCとすると、次式により求めることができる。
【0045】
EC=IP×SC (2)
そして、求めたエフェクト色ECとオブジェクトの色とを合成することによって描画ピクセルの色を求める。
【0046】
図3は、輝度増加パラメータIPに基づき描画ピクセルの輝度を高める処理を行った場合の仮想カメラから見える画像の一例である。なお図3は、仮想カメラから見てオブジェクトOBの背後に光源がある場合(仮想カメラから見てオブジェクトOBの手前側に直接光があたっていない場合)の画像の例である。また図3の例では、基準色SCを白色とした場合を示している。
【0047】
図3に示すように、描画ピクセルの色は、オブジェクトOBの輪郭に近いほど輝度が高くなり、オブジェクトOBの輪郭から遠いほど輝度が低くなる。すなわちオブジェクトOBの輪郭ではIP=1となるためEC=SCとなり描画ピクセルの輝度は最大となり、オブジェクトOBの中心部ではIP=0となるためEC=0となり描画ピクセルの輝度は最小となる。
【0048】
ここで、図3に示す例では、オブジェクトOBの輪郭のうち、Y軸下方向に存在する地面GRに近い部分(本来輝度が高くなり得ない部分)まで均一に輝度が高くなっており、見た目に不自然な表現となっている。
【0049】
そこで本実施形態では、図4に示すように、オブジェクト空間の−Y軸(所与の軸方向)に向く基準ベクトルSV((0,−1,0)により表されるベクトル)と、オブジェクトOBを構成するプリミティブの向きに応じた法線ベクトルNVとの内積(SV・NV)に基づきcosθ(θは、基準ベクトルSVと法線ベクトルNVのなす角度)を求めて、求めたcosθに基づき輝度減衰パラメータAPを求めて、求めた輝度減衰パラメータAPに基づきプリミティブの描画ピクセルの輝度を減衰させている。
【0050】
ここで輝度減衰パラメータAPは、次式により求めることができる。
【0051】
AP=(1+cosθ)/2 (3)
従って、仮想カメラからみてオブジェクトOBの上部での描画ピクセルについて輝度減衰パラメータAPを求めると、基準ベクトルSVと法線ベクトルNVのなす角度θが180度になるため、cosθ=−1となり、AP=0(最小値)となる。一方仮想カメラから見てオブジェクトOBの下部での描画ピクセルについて輝度減衰パラメータAPを求めると、θが0度になるため、cosθ=1となり、AP=1(最大値)となる。
【0052】
そして、輝度増加パラメータIPと輝度減衰パラメータAPとに基づきエフェクト色ECを求める。ここでエフェクト色ECは、エフェクト色の基準色をSCとすると、次式により求めることができる。
【0053】
EC=(IP−AP)×SC (4)
そして、求めたエフェクト色ECとオブジェクトの色とを合成することによって描画ピクセルの色を求める。
【0054】
図5は、輝度増加パラメータIPに基づき描画ピクセルの輝度を高め、且つ輝度減衰パラメータAPに基づき描画ピクセルの輝度を減衰させる処理を行った場合の仮想カメラから見える画像の一例である。なお図5は、図3と同様に仮想カメラから見てオブジェクトOBの背後に光源がある場合の画像の例である。
【0055】
図5に示すように、オブジェクトOBの輪郭部分の描画ピクセルの色は、オブジェクトOBの上部(+Y軸方向)に近いほど輝度が高くなり、オブジェクトOBの下部(−Y軸方向)に近いほど輝度が低くなる。すなわちオブジェクトOB上部の輪郭ではIP=1、AP=0となるためEC=SCとなり描画ピクセルの輝度は最大となり、オブジェクトOB下部の輪郭ではIP=1、AP=1となるためEC=0となり描画ピクセルの輝度は最小となる。なおIP−AP<0となる場合には、EC=0とする。
【0056】
図5に示す例では、オブジェクトOBの輪郭のうち、地面GRに近い部分については輝度が低くなっており、見た目に違和感のないリアルな表現となっている。
【0057】
このように本実施形態によれば、オブジェクトの輪郭に近いほど描画ピクセルの輝度を高める処理を行うとともに、Y軸下方向を向く基準ベクトルと法線ベクトルとの内積に基づき描画ピクセルの輝度を減衰させる処理を行うことで、オブジェクトの背後にある光源からの光があたかもオブジェクトの手前側に回り込んでいるかのような表現(或いは光源からの光がオブジェクトの輪郭を通過してみえる色の表現)を違和感なく表現することができる。
【0058】
2−2.光源色の反映
本実施形態では、オブジェクトを構成するプリミティブの描画ピクセルの色に光源の色を反映させる処理を行う。
【0059】
具体的には、図6(A)、図6(B)に示すように、仮想カメラVCの視線ベクトルVV(視点の向き)と光源SLの光源ベクトルLV(光源の向き)との内積(VV・LV)に基づきcosθ(θは、視線ベクトルVVと光源ベクトルLVのなす角度)を求めて、求めたcosθに基づき合成パラメータSPを求め、求めた合成パラメータSPに基づき第1、第2の光源色を合成することによって式(4)におけるエフェクト色の基準色SCを求める。
【0060】
ここで合成パラメータSPは、次式により求めることができる。
【0061】
SP=(1+cosθ)/2 (5)
従って、図6(A)に示すような仮想カメラの背後に光源がある順光状態の場合に、合成パラメータSPを求めると、視線ベクトルVVと光源ベクトルLVのなす角度θが0度になるため、cosθ=1となり、SP=1(最大値)となる。一方図6(B)に示すような仮想カメラから見てオブジェクトOBの背後に光源がある逆光状態の場合に、合成パラメータSPを求めると、θが180度になるため、cosθ=−1となり、SP=0(最小値)となる。
【0062】
そして、当該合成パラメータSPに基づき第1、第2の光源色を合成して基準色SCを求める。ここで基準色SCは、第1の光源色をLC、第2の光源色をLCとすると、次式により求めることができる。
【0063】
SC=SP×LC+(1−SP)×LC (6)
そして、求めた基準色SCを用いて、式(4)によりエフェクト色ECを求める。従って、仮想カメラと光源との位置関係が図6(A)に示すような順光状態に近づくほど第1の光源色(例えば青っぽい白)がオブジェクトOBの輪郭部分の描画ピクセルの色に強く反映され、図6(B)に示すような逆光状態に近づくほど第2の光源色(例えば赤っぽい白)がオブジェクトOBの輪郭部分の描画ピクセルの色に強く反映される。すなわち順光状態ではSP=1となるためSC=LCとなりエフェクト色の基準色SCが第1の光源色となり、逆光状態ではSP=0となるためSC=LCとなりエフェクト色の基準色SCが第2の光源色となる。
【0064】
このように、本実施形態によれば、仮想カメラと光源との位置及び向き関係に応じてオブジェクトの描画ピクセルの色に反映させる光源の色を変化させることができる。
【0065】
2−3.テクスチャによる輝度調整
本実施形態では、視点の向きとオブジェクトを構成するプリミティブの向きに応じて前記オブジェクトに対応づけられたテクスチャのテクスチャ座標を設定し、設定されたテクスチャ座標に基づいて参照されるテクセルの色に従って前記プリミティブの描画ピクセルの輝度を変化させる。
【0066】
具体的には、図7に示すように、仮想カメラVCの視線ベクトルVV(視点の向き)とオブジェクトOBを構成するプリミティブの向きに応じた法線ベクトルNVとの内積(VV・NV)に基づきcosθ(θは、視線ベクトルVVと法線ベクトルNVのなす角度)を求め、求めたcosθに基づきオブジェクトOBに対応付けられたテクスチャTXのテクスチャ座標を設定する。例えば、cosθに基づいてテクスチャ座標(1−|cosθ|,v)(vは0〜1の値)を設定する。
【0067】
従って、仮想カメラVCから見てオブジェクトOBの中心部の描画ピクセルについては、θが180度になるため、cosθ=−1となり、テクスチャ座標(0,v)が設定される。一方仮想カメラVCから見てオブジェクトOBの輪郭の描画ピクセルについては、θが90度になるため、cosθ=0となり、テクスチャ座標(1,v)が設定される。
【0068】
ここで図7に示すように、テクスチャTX(カラーマップ)は、UV座標系のU軸方向に沿ってテクセルの色の輝度が増加し彩度が減少する(テクセルの色がグラデーション変化する)パターンを有している。すなわちテクスチャ座標(0,v)のテクセルの色は最も輝度が低く彩度が高い色(濃い色)であり、テクスチャ座標(1,v)のテクセルの色は最も輝度が高く彩度が低い色(薄い色)である。
【0069】
従って、視線ベクトルVVと法線ベクトルNVとの内積に応じて設定されたテクスチャ座標に基づいて参照されるテクセルの色は、オブジェクトOBの中心部に近いほど濃い色となりオブジェクトの中心部から遠いほど薄い色となる。
【0070】
そして、参照されたテクセルの色とエフェクト色ECとオブジェクトの色とを合成することによって描画ピクセルの色を求める。
【0071】
図8は、本実施形態の手法によって参照されたテクセルの色に従って描画ピクセルの輝度を変化させる処理を行った場合の仮想カメラから見える画像の一例である。なお図8は、図5と同様に仮想カメラから見てオブジェクトOBの背後に光源がある場合の画像の例である。
【0072】
図8に示すように、オブジェクトOBの輪郭部分における描画ピクセルの色は、図5に示す例と同様であるが、オブジェクトOBの輪郭部分以外の部分における描画ピクセルの色は、オブジェクトOBの中心部から輪郭部分に向けてグラデーション変化しており、輪郭部分以外の部分の階調が乏しい図5に示す例と比べて質感の高い表現となっている。
【0073】
このように本実施形態によれば、仮想カメラから見てオブジェクトの背後に光源があるような場合(逆光状態にある場合)であっても、オブジェクトの輪郭部分以外の部分について質感の高いリアルな表現を行うことができる。
【0074】
また本実施形態の手法により、人体のオブジェクトを描画する場合には、人体の輪郭に近いほど描画ピクセルの輝度を高める処理を行うとともに、Y軸下方向を向く基準ベクトルと法線ベクトルとの内積に基づき描画ピクセルの輝度を減衰させる処理を行うことにより、人体の背後にある光源からの光があたかも人体の手前側に回り込んでいるかのような表現を行う際に、人体の輪郭のうち立地平面(地面)側の輪郭の輝度が高くなってしまうことを防止することができ、違和感のない上記表現を行うことができる。
【0075】
また、視点ベクトルと光源ベクトルとの内積に基づき順光状態に対応する第1の光源色と逆光状態に対応する第2の光源色とを合成することによって、描画ピクセルの色に反映させる色を求めることにより、人体が逆光状態にある場合には、主光源(例えば太陽)からの光が人体の手前側に回り込んで(或いは人体の輪郭を通過して)人体の輪郭が赤みを帯び、人体が順光状態にある場合には、環境光(例えば空の色)が人体の手前側に回り込んで人体の輪郭が青みを帯びるといったリアルな表現を行うことができる。
【0076】
また、視線ベクトルと法線ベクトルとの内積に応じて、人体に対応付けられたテクスチャ(例えば皮膚の色がグラデーション変化するテクスチャ)のテクスチャ座標を設定し、設定されたテクスチャ座標に基づいて参照されるテクセルの色に従って描画ピクセルの輝度を変化させることにより、人体の背後に光源があるような場合であっても、人体の輪郭部分以外の部分(人体の皮膚の表面)について質感の高いリアルな表現を行うことができる。
【0077】
3.処理
次に、本実施形態の処理の一例について図9のフローチャートを用いて説明する。
【0078】
まず、描画ピクセルの法線ベクトルNVと視線ベクトルVVとの内積に基づき輝度増加パラメータIPを求める(ステップS10)。ここで各描画ピクセルの法線ベクトルは、頂点シェーダから出力されるオブジェクトの頂点の法線ベクトルを補間することで求めることができる。次に、基準ベクトルSVと描画ピクセルの法線ベクトルNVとの内積に基づき輝度減少パラメータAPを求める(ステップS12)。
【0079】
次に、視線ベクトルVVと光源ベクトルLVとの内積に基づき合成パラメータSPを求め(ステップS14)、求めた合成パラメータSPに基づき第1の光源色と第2の光源色とを合成することによって、エフェクト色の基準色SCを求める(ステップS16)。
【0080】
次に、輝度増加パラメータIPと輝度減少パラメータAPと基準色SCとに基づきエフェクト色ECを求める(ステップS18)。
【0081】
次に、描画ピクセルの法線ベクトルNVと視線ベクトルVVとの内積に基づきテクスチャのテクスチャ座標を設定し(ステップS20)、設定されたテクスチャ座標に基づいてテクセルの色を求める(ステップS22)。
【0082】
次に、元画像の描画ピクセルの色とエフェクト色ECとテクセルの色とを合成して描画ピクセルの最終的な色を求め、描画バッファに出力する(ステップS24)。
【0083】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【図面の簡単な説明】
【0084】
【図1】本実施形態の画像生成システムの機能ブロックの一例を示す図。
【図2】本実施形態の手法について説明するための図。
【図3】本実施形態の手法について説明するための図。
【図4】本実施形態の手法について説明するための図。
【図5】本実施形態の手法について説明するための図。
【図6】本実施形態の手法について説明するための図。
【図7】本実施形態の手法について説明するための図。
【図8】本実施形態の手法について説明するための図。
【図9】本実施形態の処理の一例を示すフローチャート図。
【符号の説明】
【0085】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、114 仮想カメラ制御部、120 描画部、122 輝度調整部、160 操作部、170 記憶部、180 情報記憶媒体、190 表示部、192 音出力部、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間を所与の視点から見た画像を生成するためのプログラムであって、
前記オブジェクト空間にオブジェクトを配置するオブジェクト空間設定部と、
前記オブジェクトを前記視点を基準として透視変換する透視変換部と、
透視変換されたオブジェクトの輪郭に近いほど当該オブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う輝度調整部としてコンピュータを機能させ、
前記輝度調整部が、
前記オブジェクト空間の所与の軸方向に向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させることを特徴とするプログラム。
【請求項2】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項3】
オブジェクト空間を所与の視点から見た画像を生成するための画像生成システムであって、
前記オブジェクト空間にオブジェクトを配置するオブジェクト空間設定部と、
前記オブジェクトを前記視点を基準として透視変換する透視変換部と、
透視変換されたオブジェクトの輪郭に近いほど当該オブジェクトを構成するプリミティブの描画ピクセルの輝度を高める処理を行う輝度調整部とを含み、
前記輝度調整部が、
前記オブジェクト空間の所与の軸方向に向く基準ベクトルと、前記プリミティブの向きに応じた法線ベクトルとの内積に応じて、前記プリミティブの描画ピクセルの輝度を減衰させることを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図4】
image rotate

【図6】
image rotate

【図9】
image rotate

【図3】
image rotate

【図5】
image rotate

【図7】
image rotate

【図8】
image rotate