画像処理用プログラム、当該プログラムを記録したコンピュータ読み取り可能な記録媒体、画像処理装置、画像処理方法
【課題】手書き風の画像あるいはこれに類した画像に適した陰影表現の表現力をより高めることが可能な画像処理技術を提供すること。
【解決手段】演算手段が、(1)オブジェクトが配置された仮想三次元空間を前記視点に対応して設定される透視投影面上に透視投影して基礎画像データを生成し(S11)、(2)オブジェクトを構成する各ポリゴンの法線ベクトルと、光源のライトベクトルとの内積値を算出し(S13)、(3)この内積値をデータ変換処理し、所定の上限しきい値と下限しきい値との間で変化する濃度値に変換し(S14)、(4)当該濃度値に基づいて、テクスチャを、基礎画像データにマッピングすることにより二次元画像データを生成する(S16)、画像処理装置である。
【解決手段】演算手段が、(1)オブジェクトが配置された仮想三次元空間を前記視点に対応して設定される透視投影面上に透視投影して基礎画像データを生成し(S11)、(2)オブジェクトを構成する各ポリゴンの法線ベクトルと、光源のライトベクトルとの内積値を算出し(S13)、(3)この内積値をデータ変換処理し、所定の上限しきい値と下限しきい値との間で変化する濃度値に変換し(S14)、(4)当該濃度値に基づいて、テクスチャを、基礎画像データにマッピングすることにより二次元画像データを生成する(S16)、画像処理装置である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想三次元空間に設定される事象を透視投影変換して二次元画像を生成する技術に関する。
【背景技術】
【0002】
近年のコンピュータ技術の発展に伴い、ビデオゲーム装置、シミュレータ(擬似体験装置)などに関する画像処理技術が広く一般に普及するようになっている。このようなシステムにおいては、表示される画像をより表現力豊かにすることが商品価値を高めるうえで重要となっている。このような背景の中、現実に近い表現(写実的な表現)とは一線を画し、水彩画風あるいはデッサン調などの手書き風の画像表現が検討されている(例えば、特許文献1参照)。しかし、この特許文献1に開示される従来技術では、陰影付けをしたい領域に線状の模様を含んだテクスチャを単にマッピングするだけであるので、平面的な陰影線となってしまい、表現力の向上という点で更に改良の余地があった。
【0003】
【特許文献1】特開2001−319244号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
そこで、本発明は、手書き風の画像あるいはこれに類した画像に適した陰影表現の表現力をより高めることが可能な画像処理技術を提供することを1つの目的とする。
【課題を解決するための手段】
【0005】
本発明に係るプログラムは、記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成するプログラムであって、前記演算手段に、(a)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブジェクトを配置するステップと、(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行させるプログラムである。
【0006】
上記の本発明に係るプログラムを実行することにより、オブジェクトを形作る各ポリゴンの法線ベクトルと光源のライトベクトルとの内積値を利用し、これに上記した所定のデータ変換を施すことにより、オブジェクト表面の陰影を施すべき領域を的確に定め、ここに線状模様を含むテクスチャをマッピングすることができる。このとき、陰影を施すべき領域の大小は、上限しきい値、下限しきい値の各設定に応じて自在に変化させることができる。また、内積値を利用して演算される第1の濃度値(換言すれば輝度値)は、なめらかに階調変化するので、この第1の濃度値を用いてテクスチャをマッピングすることにより、陰の強さ(明暗の度合い)に応じてテクスチャの見え方を連続的に変化させることができる。したがって、本発明によれば、手書き風の画像等に適した陰影表現の表現力をより高めることが可能となる。
【0007】
好ましくは、上記のプログラムは、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、を更に含み、前記(f)は、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0008】
シャドウマップによって得られる濃度値(第2の濃度値)と上記の第1の濃度値とを併用し、いずれか大きい方を選択することにより、更に表現力を高めることが可能となる。詳細には、例えばオブジェクトに対して当該オブジェクト自身による影または他のオブジェクトの影がかかる場合などにおいて、より自然な陰影表現が可能となる。
【0009】
好ましくは、上記プログラムは、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換するステップと、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出するステップと、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングするステップと、を更に含む。
【0010】
これにより、オブジェクト表面の陰影を施すべき領域を複数定め、それぞれに線状模様を含むテクスチャをマッピングすることができる。特に、第3の濃度値は、陰が強い領域(より暗い領域)ほどその値が高くなり、かつ視点(仮想カメラ)からの距離が近いほどその値が高くなるので、陰の部分を強調した画像を得られる。マッピングに用いるテクスチャを異ならせることにより、一層高い効果が得られる。
【0011】
本発明に係るコンピュータ読み取り可能な記録媒体は、上記の本発明に係るプログラムを記録した記録媒体である。また、本発明は、以下のように、画像処理装置、画像処理方法のそれぞれとしても表現することができる。その場合の作用効果については上述と同様である。
【0012】
本発明に係る画像処理装置は、記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、前記演算手段が、(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置する手段、(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定する手段、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納する手段、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出する手段、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換する手段、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成する手段、の各々として機能することを特徴とする画像処理装置である。
【0013】
好ましくは、上記画像処理装置は、前記演算手段が更に、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出する手段、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択する手段、として機能し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0014】
好ましくは、上記画像処理装置は、前記演算手段が更に、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出する手段、(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換する手段、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出する手段、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする手段、の各々として機能する。
【0015】
本発明に係る画像処理方法は、記憶手段と演算手段を備えた画像処理装置において、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理方法であって、前記演算手段が、(a)前記オブジェクトを前記記憶手段から読み出して前記仮想三次元空間内に配置するステップと、(b)前記記憶手段に格納されたデータに基づいて前記仮想三次元空間内に光源および視点を設定するステップと、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行することを特徴とする画像処理方法である。
【0016】
好ましくは、上記画像処理方法は、前記演算手段が、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、を更に実行し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0017】
好ましくは、上記画像処理手段は、前記演算手段が、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換するステップと、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出するステップと、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、を更に実行する。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について説明する。以下では、画像処理装置の一例としてゲーム装置を採り上げる。
【0019】
図1は、一実施形態のゲーム装置の構成を示すブロック図である。図1に示す本実施形態のゲーム装置1は、CPU(Central Processing Unit)10、システムメモリ11、記憶媒体12、ブートロム(BOOT ROM)13、バスアービタ14、GPU(Graphics Processing Unit)16、グラフィックメモリ17、オーディオプロセッサ18、オーディオメモリ19、通信インタフェース(I/F)20、ペリフェラルインターフェース21、を含んで構成されている。すなわち、本実施形態のゲーム装置1は、演算手段(演算部)としてのCPU10及びGPU16、記憶手段(記憶部)としてのシステムメモリ11、記憶媒体12、グラフィックメモリ17及びオーディオメモリ19等を含んで構成される。すなわち、このゲーム装置1は、CPU10を中心として構成されたコンピュータ(コンピュータシステム)を備え、当該コンピュータに所定のプログラムを実行させることによってゲーム装置として機能するものである。具体的には、ゲーム装置1は、ゲーム演出を行うために、仮想三次元空間(ゲーム空間)内を所与の視点(仮想カメラ)から見た二次元画像(静止画または動画)を順次生成するとともに、効果音などの音声を生成する。
【0020】
CPU(Central Processing Unit)10は、所定のプログラムを実行することによりゲーム装置1全体を制御する。
【0021】
システムメモリ11は、CPU10が使用するプログラムやデータを格納する。このシステムメモリ11は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。
【0022】
記憶媒体12は、ゲームプログラムや出力する画像や音声などのデータが記録されている。このプログラムデータ用ROMとしての記憶媒体12は、マスクロムやフラッシュロムなどの電気的にデータを読み出せるICメモリや、CD−ROM、DVD−ROMなどの光学的にデータを読み出せる装置と光ディスクまたは磁気ディスク等であっても良い。
【0023】
ブートロム13は、ゲーム装置1を起動させた際に各ブロックを初期化するためのプログラムを格納する。
【0024】
バスアービタ14は、各ブロック間でプログラムやデータのやり取りを行うバスを制御する。
【0025】
GPU16は、ディスプレイに表示するオブジェクトの仮想三次元空間(ゲーム空間)での位置座標や向きの演算(ジオメトリ演算)と、このオブジェクトの向きや位置座標等に基づいてディスプレイに出力する画像を生成する処理(レンダリング処理)を行う。
【0026】
グラフィックメモリ17は、GPU16に接続されており、画像を生成するためのデータやコマンドなど格納する。このグラフィックメモリ17は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。グラフィックメモリ17は、フレームバッファ、テクスチャバッファ等、画像生成時に使用される各種バッファとしての機能を果たす。
【0027】
オーディオプロセッサ18は、スピーカから音声出力を行うためのデータを生成する。このオーディオプロセッサ18によって生成された音声データが図示しないデジタル/アナログ変換器によってアナログ信号に変換され、スピーカに入力されることにより、スピーカから音声出力がなされる。
【0028】
オーディオメモリ19は、オーディオプロセッサ18に構成されており、音声を生成するためのデータやコマンドなど格納する。このオーディオメモリ19は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。
【0029】
通信インタフェース(I/F)20は、ゲーム装置1が他のゲーム装置やサーバ装置等との間でデータ通信の必要がある場合における通信処理を行う。
【0030】
ペリフェラルインターフェース(I/F)21は、外部からのデータ入出力を行うインターフェースが組み込まれており、ここに周辺装置としてのペリフェラルが接続される。ここで、ペリフェラルには、マウス(ポインティングデバイス)やキーボード、ゲーム用コントローラ等のキー操作のためのスイッチ、及びタッチペンの他、プログラムの途中経過や生成したデータを保存するバックアップメモリ、表示装置、撮影装置等、画像処理装置本体あるいは他のペリフェラルに接続可能なものが含まれる。
【0031】
なお、システムメモリ11、グラフィックメモリ17、サウンドメモリ19は、1つの
メモリをバスアービタ14に接続して各機能で共通に使用するようにしてもよい。また各
機能ブロックも機能として存在すればよく、機能ブロック同士が統合されていても、また、機能ブロック内部の各構成要素が他のブロックとして分離されていても良い。
【0032】
本実施形態に係るゲーム装置は以上のような構成を備えており、次に本実施形態の画像生成処理の内容について説明する。
【0033】
図2は、仮想三次元空間に配置されたオブジェクト(仮想物体)、光源、視点のそれぞれについて示した概念図である。オブジェクト300は、1または複数のポリゴンを組み合わせて形作られた仮想的な物体である。このオブジェクト300は、例えば人間や動物などの生物、あるいは建物、車、その他の無生物など、仮想三次元空間に配置可能なあらゆる仮想的な物をいう。仮想三次元空間は、相互に直交する3つの軸(XYZ)で規定されたワールド座標系によって表現される。また、オブジェクト300は、例えばワールド座標系とは別個のオブジェクト座標系によって表現される。光源302は、仮想三次元空間内の任意位置に配置される。この光源302は、例えば無限遠光源である。光源302の位置、方向、強さはライトベクトルLで表現される。本実施形態では、ライトベクトルLの長さ(換言すれば光強度)は1に正規化されている。視点304は、視点の位置(ワールド座標系における座標)と視線方向で定義される。例えば、図示の矢印Cの方向が視線方向である。この視点304は、カメラ、仮想カメラ等と呼ばれる場合もある。
【0034】
図3は、オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。図3では、オブジェクト300を形作る複数のポリゴンを代表し、1つのポリゴン306が示されている。このポリゴン306は、図示のように3つの頂点を有する三角形状の小片である。なお、ポリゴンは他の多角形(例えば四角形)であってもよい。ポリゴン306の各頂点には、法線ベクトルNが設定されている。これらの法線ベクトルNは、長さが1に正規化されている。なお、これらの法線ベクトルNは、ポリゴンの頂点以外の箇所、例えば、各頂点によって画定される平面上の任意点に設定されてもよい。本実施形態では、各法線ベクトルNとライトベクトルLとの内積値をパラメータとして用いる。この内積値は、法線ベクトルN、ライトベクトルLがともに1に正規化されているため、両者のなす角度θの余弦であるcosθとなり、その値は−1〜+1の範囲に収まる。
【0035】
図4は、第1の態様の画像処理によって生成される二次元画像を概略的に示した図である。本実施形態の画像処理の全体の流れとしては、オブジェクト300、視点304、光源302を配置したうえで(図2参照)、レンダリング処理(座標変換、クリッピング、透視投影変換、陰面消去、シェーディング、シャドウイング、テクスチャマッピング等)が行われる。これにより、図4に示すように、オブジェクト300の画像310と、オブジェクト300自体に生じる陰(shade)を表すシェイド画像312と、オブジェクト300によって生じる影(shadow)を表すシャドウ画像314と、を含む二次元画像が得られる。以下、このような二次元画像を生成する処理について、主にテクスチャマッピングに着目して以下に説明する。
【0036】
図5は、本実施形態のゲーム装置(画像処理装置)によって実行される第1の態様の画像処理の流れを示すフローチャートである。なお、以下に説明する処理は、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。
【0037】
CPU10は、システムメモリ11から読み出したデータに基づいて、複数のポリゴンを組み合わせて構成されるオブジェクト(ポリゴンモデル)を仮想三次元空間内に配置する(ステップS10)。
【0038】
また、CPU10により光源の設定、視点が設定され、これに対応してGPU16により基礎画像データが生成される(ステップS11)。視点の位置は、例えばプレイヤが操作するオブジェクトの後方、一定距離の位置に設定される。光源の位置は、例えば所定位置に固定されていたり、あるいは時間経過と共に移動したりする。GPU16は、光源、視点の各設定に対応し、座標変換、クリッピング、透視投影変換、陰面消去等の各処理(レンダリング処理)を行う。これにより、オブジェクトが配置された仮想三次元空間を透視投影面上に透視投影した画像が得られる。本実施形態では、この画像のデータを「基礎画像データ」と呼ぶ。この基礎画像データは、グラフィックメモリ17内に設定されるフレームバッファに格納される。
【0039】
次に、GPU16は、オブジェクト300の各ポリゴン306の法線ベクトルNとライトベクトルLとの内積値を算出する(ステップS12)。この演算処理の内容は上記図3に示した通りである。ここで求めた内積値は、シェイド画像312の濃度(輝度)を決定するためのパラメータとなる。例えば本実施形態では、内積値は、−1.0〜+1.0の範囲の値となる。本実施形態では、後の処理の便宜上、この内積値にバイアスをかけ、0.0〜+1.0の範囲の値に変換する。具体的には、「内積値×0.5+0.5」の演算を行うことにより、−1.0〜+1.0の範囲をとっていた内積値が0.0〜+1.0の範囲に変換される。このデータ変換処理はGPU16によって実行される。バイアスをかけた内積値はグラフィックメモリ17に格納される。
【0040】
次に、GPU16は、上記のデータ変換処理後の内積値に対し、更に所定のデータ変換処理を行い、第1の濃度値を算出する(ステップS13)。ここでのデータ変換処理とは、所定の下限しきい値以下は+1.0、所定の上限しきい値より大きければ0.0、下限しきい値と上限しきい値との間は補間(例えば、線形補間)する処理をいう。その一例を図6のグラフにより説明する。図6の横軸はバイアスをかけた内積値(上記ステップS13参照)、縦軸は本ステップにおけるデータ変換処理により得られた第1の濃度値である。この例では、下限しきい値が「+0.45」、上限しきい値が「+0.55」に設定され、補完形式は「線形補間」に設定されている。この結果、バイアスをかけた内積値が0.0以上で+0.45未満である場合には第1の濃度値が+1.0となり、当該内積値が+0.45以上で+0.55未満である間は第1の濃度値が線形に減少し、当該内積値が+0.55以上である場合には第1の濃度値が0.0となる。なお、下限しきい値、上限しきい値、補完形式は任意であり、図6に示したものは例示にすぎない。第1の濃度値は、グラフィックメモリ17に格納される。
【0041】
次に、GPU16は、シャドウマップを用いて陰影領域を検出する(ステップS14)。周知のように「シャドウマップ」とは、視点を光源の位置へ一時的に移してZバッファレンダリングを行い、その内容、すなわち光源から見えているオブジェクト表面までの距離がZ値として保存されたものである。このシャドウマップを可視化すれば光源に近い部分は暗く、光源から遠い部分は明るいグレースケールの2次元画像となる。また、「陰影」とは、オブジェクトの光が当たるとき、そのオブジェクト自体に生じる暗い部分(陰)と、光がそのオブジェクトに遮られてできる暗い部分(影)とを含む。本実施形態では、少なくとも「陰(shade)」を検出し(シェーディング)、更に好ましくは「影(shadow)」を検出する(シャドウイング)。ここでは、GPU16は、シャドウマップを生成し、更にこのシャドウマップを、1番影色が強くなる部分が1.0、光の部分を0.0となるようデータ変換を行う。後の説明の便宜上、このデータ変換によって得られた輝度データを「第2の濃度値」と称する。第2の濃度値は、グラフィックメモリ17に格納される。
【0042】
図7は、ステップS14の処理内容を説明するための図である。より具体的には、図7には、陰影領域(影部分となる領域)を描き出した結果を二次元画像で可視化した様子が示されている。シャドウマップを用いてGPU16により上記の演算を行うことにより、図6に示すように陰影領域が検出される。陰影領域には、オブジェクト300自体に生じる陰(shade)に対応するシェイド領域322と、オブジェクト300に起因して生じる影(shadow)に対応するシャドウ領域324と、が含まれる。なお、シェイド領域322とシャドウ領域324との区別を明りょうにするために、シャドウ領域324の周縁が点線で囲んで示されている。
【0043】
次に、GPU16は、ステップS13で求めた第1の濃度値とステップS14で求めた第2の濃度値とを比較し、大きい方を選択する(ステップS15)。この選択された濃度値を「ベース濃度値」と呼ぶ。ベース濃度値はグラフィックメモリ17に格納される。
【0044】
次に、GPU16は、ステップS15で求めたベース濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データのシェイド領域322にマッピングする処理を行う(ステップS16)。詳細には、ベース濃度値は0.0から1.0の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。すなわち、テクスチャの輝度値とベース濃度値によって表される輝度値とが混合される。また、GPU16は、他のテクスチャをマッピングする処理も適宜行う。これにより、上記図5に対応する二次元画像データが生成される。
【0045】
ここで使用されるテクスチャの一例を図8に示す。これらの線状模様を含むテクスチャを「ハッチングテクスチャ」と称することもできる。図8(A)は右上がりに傾いた複数の斜線を含んだテクスチャを表す図である。図8(B)も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図8(A)に示すテクスチャよりも斜線の相互間隔が広くなっている。図8(C)も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図8(A)に示すテクスチャよりも斜線の傾き角度がより大きくなっている。図8(D)も左上がりに傾いた複数の斜線を含んだテクスチャを表す図である。なお、各図のテクスチャは斜線を含んでいるが、斜線に変えて、水平な線や垂直な線としてもよいし、斜線、水平線、垂直線を適宜組み合わせて網目状にしてもよい。本実施形態では、このようなテクスチャを用いる。生成したい画像の内容(雰囲気、場面等)に応じて、いずれかのテクスチャを選択して用いることもできる。また、図示の例では、直線上の模様が示されているが、線状模様は、波線状であってもよく、フリーハンド書きのようなものであってもよい。すなわち、線状模様は、非直線状の模様であってもよく、直線状に限定されない。
【0046】
シェイド領域322にテクスチャをマッピングした様子を図9に示す。ここでは、シェイド領域322を点線で示している。一例として、図8(C)に示したテクスチャを用いてマッピングがなされている。この図9の一部(図中に一点鎖線の四角で囲んだ部分)を拡大した様子を図10に示す。図10では、作図の都合上、三段階に太さの異なる線を用いて、ベース濃度値が高いほどテクスチャが明りょうに現れ、ベース濃度値が低いほどテクスチャが薄く表示される様子が模式的に示されている。実際には、このベース濃度値によるテクスチャの濃淡は連続的である。このようにして、上記した図5に示したように、水彩画あるいはスケッチ風の雰囲気を有するシェイド画像312が生成される。
【0047】
なお、上記の説明では、第1の濃度値と第2の濃度値を求め、これらの大小関係を比較して大きい方をベース濃度値と定めていたが、第1の濃度値と第2の濃度値のいずれか一方のみを算出し、その値をベース濃度値として用いてもよい。
【0048】
次に、画像処理の他の実施態様について説明する。上述した第1の態様の画像処理を応用して、複数のテクスチャを重ねてマッピングすることにより、画像の表現力を更に高めることができる。
【0049】
図11は、本実施形態のゲーム装置(画像処理装置)によって実行される第2の態様の画像処理の流れを示すフローチャートである。以下に説明する処理においても、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。なお、第1の態様の画像処理と重複する内容については適宜説明を省略する。
【0050】
まず、上記第1の態様の画像処理におけるステップS10〜S16と同様の処理が実行される(ステップS20〜26)。それにより、上記と同様にシェイド領域322にテクスチャがマッピングされる。このあと、シェイド領域322に更に別のテクスチャがマッピングされる。その処理を以下に説明する。
【0051】
GPU16は、ライトベクトルLに所定の定数Wを乗算した値(L×W)と法線ベクトルNとの和(N+L×W)と、ライトベクトルLとの内積値を算出する(ステップS27)。ここで求めた内積値は、後述するシェイド画像352(シェイド画像312に重ねて表示されるもの)の濃度を決定するためのパラメータとなる。ライトベクトルLと定数Wとの積(L×W)を法線ベクトルに加えることにより、上記ステップ23において得られるパラメータとは異なる内容のパラメータが得られる。ここで求めた内積値はグラフィックメモリ17に格納される。
【0052】
次にGPU16は、視点の位置(カメラ位置)が0.0、最遠景が1.0となるように現在位置を変換する処理を行う(ステップS28)。ここで「現在位置」とは、オブジェクト300が配置された位置のことをいう。より具体的には、GPU16は、視点から現在位置までの距離lを視点と最遠景との間の距離Lで除算する(l÷Lを演算する)。
【0053】
次にGPU16は、ステップS27で求めた内積値とステップS28で求めた値との合計値を0.0〜1.0でクランプすることにより、第3の濃度値を求める(ステップS29)。ここで、本実施形態において「クランプする」とは、合計値が0.0以下であった場合には0.0とし、0.0〜1.0であった場合にはそのままの値とし、1.0以上であった場合には1.0とするデータ変換処理をいう。また、ここでは合計値を1.0から減算することも望ましい。それにより、内積値に関しては陰になる部分ほど第3の濃度値が高くなり、視点(カメラ)からの距離に関しては視点から近いほど第3の濃度値が高くなるようにすることができる。この第3の濃度値によって画定される領域がシェイド領域342である(後述の図12参照)。
【0054】
次に、GPU16は、ステップS29で求めた第3の濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データにマッピングする処理を行う(ステップS30)。詳細には、第3の濃度値は0.0から1.0の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。ここでは、ステップS26において用いられるものとは異なるテクスチャが用いられる。例えば、ステップS26においては上記図8(C)のテクスチャが用いられたとすると、本ステップでは上記図8(A)のテクスチャが用いられる。このテクスチャをマッピングした様子を図12に示す。図12では、第3の濃度値によって規定されるシェイド領域342と、このシェイド領域342にテクスチャをマッピングして得られるシェイド画像352が示されている。また、2つのテクスチャが重ねてマッピングされた様子を図13に示す。ここでは、各シェイド領域を点線で示している。また、これらのハッチングテクスチャを含む二次元画像の例を図14に示す。線状画像を用いた陰の画像がより繊細に表現されていることが分かる。
【0055】
なお、上記のステップS27における定数Wの値や、ステップS28における現在位置の変換率を適宜変更することにより、3重、4重とテクスチャを合成することも可能である。それにより、更に細やかな画像表現が可能となる。
【0056】
図15は、上記した第1の態様又は第2の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。画像中には2人の人物(オブジェクトに相当する)が描かれており、矢印で示した箇所にハッチングテクスチャ400〜403が表示されている。なお、他にもハッチングテクスチャが施されている箇所があるが、代表的な箇所だけを例示した。このように、本実施形態によれば、水彩画風、あるいはデッサン風の暖かみのある二次元画像に適した陰影の画像表現が可能となる。
【0057】
なお、本発明は上述した各実施形態の内容に限定されるものではなく、本発明の要旨の範囲内において種々の変形実施が可能である。例えば、上述した実施形態では、CPU等のハードウェアを含むコンピュータに所定のプログラムを実行させることによってゲーム装置が実現されていたが、ゲーム装置に備わっていた各機能ブロックはそれぞれ専用のハードウェア等を用いて実現されていてもよい。また、各濃度値や現在位置、内積値などの各パラメータとして上記した具体的数値は一例に過ぎないものであり、上記のものに限定されない。
【0058】
また、上記では、一例としてゲーム装置を採り上げて、本発明に係る画像処理装置、画像処理方法および画像処理プログラムの実施の形態を説明していたが、本発明の適用範囲はこれに限定されない。例えば、現実世界の各種体験(例えば、運転操作等)を擬似的に再現するシミュレータ装置等に対しても本発明を適用することが可能である。
【図面の簡単な説明】
【0059】
【図1】一実施形態のゲーム装置の構成を示すブロック図である。
【図2】仮想三次元空間に配置されたオブジェクト(仮想物体)、光源、視点のそれぞれについて示した概念図である。
【図3】オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。
【図4】第1の態様の画像処理によって生成される二次元画像を概略的に示した図である。
【図5】本実施形態のゲーム装置(画像処理装置)によって実行される第1の態様の画像処理の流れを示すフローチャートである。
【図6】第2の濃度値を算出するためのデータ変換処理について説明するグラフである。
【図7】陰影領域(影部分となる領域)を描き出した結果を二次元画像で可視化した様子を示す図である。
【図8】線状模様を含むテクスチャ(ハッチングテクスチャ)の一例を示す図である。
【図9】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図10】図9の一部(図中に一点鎖線の四角で囲んだ部分)を拡大した様子を示す図である。
【図11】本実施形態のゲーム装置(画像処理装置)によって実行される第2の態様の画像処理の流れを示すフローチャートである。
【図12】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図13】2つのテクスチャが重ねてマッピングされた様子を示す図である。
【図14】2つのテクスチャを含む二次元画像の例を示す図である。
【図15】第1の態様又は第2の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。
【符号の説明】
【0060】
10…CPU
11…システムメモリ
12…記憶媒体
13…ブートロム
14…バスアービタ
15…ジオメトリプロセッサ
16…レンダリングプロセッサ
17…グラフィックメモリ
18…オーディオプロセッサ
19…オーディオメモリ
20…通信インタフェース(I/F)
21…ペリフェラルインターフェース
【技術分野】
【0001】
本発明は、仮想三次元空間に設定される事象を透視投影変換して二次元画像を生成する技術に関する。
【背景技術】
【0002】
近年のコンピュータ技術の発展に伴い、ビデオゲーム装置、シミュレータ(擬似体験装置)などに関する画像処理技術が広く一般に普及するようになっている。このようなシステムにおいては、表示される画像をより表現力豊かにすることが商品価値を高めるうえで重要となっている。このような背景の中、現実に近い表現(写実的な表現)とは一線を画し、水彩画風あるいはデッサン調などの手書き風の画像表現が検討されている(例えば、特許文献1参照)。しかし、この特許文献1に開示される従来技術では、陰影付けをしたい領域に線状の模様を含んだテクスチャを単にマッピングするだけであるので、平面的な陰影線となってしまい、表現力の向上という点で更に改良の余地があった。
【0003】
【特許文献1】特開2001−319244号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
そこで、本発明は、手書き風の画像あるいはこれに類した画像に適した陰影表現の表現力をより高めることが可能な画像処理技術を提供することを1つの目的とする。
【課題を解決するための手段】
【0005】
本発明に係るプログラムは、記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成するプログラムであって、前記演算手段に、(a)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブジェクトを配置するステップと、(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行させるプログラムである。
【0006】
上記の本発明に係るプログラムを実行することにより、オブジェクトを形作る各ポリゴンの法線ベクトルと光源のライトベクトルとの内積値を利用し、これに上記した所定のデータ変換を施すことにより、オブジェクト表面の陰影を施すべき領域を的確に定め、ここに線状模様を含むテクスチャをマッピングすることができる。このとき、陰影を施すべき領域の大小は、上限しきい値、下限しきい値の各設定に応じて自在に変化させることができる。また、内積値を利用して演算される第1の濃度値(換言すれば輝度値)は、なめらかに階調変化するので、この第1の濃度値を用いてテクスチャをマッピングすることにより、陰の強さ(明暗の度合い)に応じてテクスチャの見え方を連続的に変化させることができる。したがって、本発明によれば、手書き風の画像等に適した陰影表現の表現力をより高めることが可能となる。
【0007】
好ましくは、上記のプログラムは、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、を更に含み、前記(f)は、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0008】
シャドウマップによって得られる濃度値(第2の濃度値)と上記の第1の濃度値とを併用し、いずれか大きい方を選択することにより、更に表現力を高めることが可能となる。詳細には、例えばオブジェクトに対して当該オブジェクト自身による影または他のオブジェクトの影がかかる場合などにおいて、より自然な陰影表現が可能となる。
【0009】
好ましくは、上記プログラムは、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換するステップと、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出するステップと、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングするステップと、を更に含む。
【0010】
これにより、オブジェクト表面の陰影を施すべき領域を複数定め、それぞれに線状模様を含むテクスチャをマッピングすることができる。特に、第3の濃度値は、陰が強い領域(より暗い領域)ほどその値が高くなり、かつ視点(仮想カメラ)からの距離が近いほどその値が高くなるので、陰の部分を強調した画像を得られる。マッピングに用いるテクスチャを異ならせることにより、一層高い効果が得られる。
【0011】
本発明に係るコンピュータ読み取り可能な記録媒体は、上記の本発明に係るプログラムを記録した記録媒体である。また、本発明は、以下のように、画像処理装置、画像処理方法のそれぞれとしても表現することができる。その場合の作用効果については上述と同様である。
【0012】
本発明に係る画像処理装置は、記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、前記演算手段が、(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置する手段、(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定する手段、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納する手段、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出する手段、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換する手段、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成する手段、の各々として機能することを特徴とする画像処理装置である。
【0013】
好ましくは、上記画像処理装置は、前記演算手段が更に、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出する手段、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択する手段、として機能し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0014】
好ましくは、上記画像処理装置は、前記演算手段が更に、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出する手段、(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換する手段、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出する手段、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする手段、の各々として機能する。
【0015】
本発明に係る画像処理方法は、記憶手段と演算手段を備えた画像処理装置において、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理方法であって、前記演算手段が、(a)前記オブジェクトを前記記憶手段から読み出して前記仮想三次元空間内に配置するステップと、(b)前記記憶手段に格納されたデータに基づいて前記仮想三次元空間内に光源および視点を設定するステップと、(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行することを特徴とする画像処理方法である。
【0016】
好ましくは、上記画像処理方法は、前記演算手段が、(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、を更に実行し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【0017】
好ましくは、上記画像処理手段は、前記演算手段が、(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、(j)前記仮想空間内における前記視点の位置が第1の値(例えば0.0)、最遠景が第1の値より大きい第2の値(例えば1.0)となるように現在の位置を変換するステップと、(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が第1の値以下であった場合には第1の値とし、第1の値から第2の値の間であった場合にはそのままの値とし、第2の値以上であった場合には第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値(例えば1.0)から減算することによって第3の濃度値を算出するステップと、(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、を更に実行する。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について説明する。以下では、画像処理装置の一例としてゲーム装置を採り上げる。
【0019】
図1は、一実施形態のゲーム装置の構成を示すブロック図である。図1に示す本実施形態のゲーム装置1は、CPU(Central Processing Unit)10、システムメモリ11、記憶媒体12、ブートロム(BOOT ROM)13、バスアービタ14、GPU(Graphics Processing Unit)16、グラフィックメモリ17、オーディオプロセッサ18、オーディオメモリ19、通信インタフェース(I/F)20、ペリフェラルインターフェース21、を含んで構成されている。すなわち、本実施形態のゲーム装置1は、演算手段(演算部)としてのCPU10及びGPU16、記憶手段(記憶部)としてのシステムメモリ11、記憶媒体12、グラフィックメモリ17及びオーディオメモリ19等を含んで構成される。すなわち、このゲーム装置1は、CPU10を中心として構成されたコンピュータ(コンピュータシステム)を備え、当該コンピュータに所定のプログラムを実行させることによってゲーム装置として機能するものである。具体的には、ゲーム装置1は、ゲーム演出を行うために、仮想三次元空間(ゲーム空間)内を所与の視点(仮想カメラ)から見た二次元画像(静止画または動画)を順次生成するとともに、効果音などの音声を生成する。
【0020】
CPU(Central Processing Unit)10は、所定のプログラムを実行することによりゲーム装置1全体を制御する。
【0021】
システムメモリ11は、CPU10が使用するプログラムやデータを格納する。このシステムメモリ11は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。
【0022】
記憶媒体12は、ゲームプログラムや出力する画像や音声などのデータが記録されている。このプログラムデータ用ROMとしての記憶媒体12は、マスクロムやフラッシュロムなどの電気的にデータを読み出せるICメモリや、CD−ROM、DVD−ROMなどの光学的にデータを読み出せる装置と光ディスクまたは磁気ディスク等であっても良い。
【0023】
ブートロム13は、ゲーム装置1を起動させた際に各ブロックを初期化するためのプログラムを格納する。
【0024】
バスアービタ14は、各ブロック間でプログラムやデータのやり取りを行うバスを制御する。
【0025】
GPU16は、ディスプレイに表示するオブジェクトの仮想三次元空間(ゲーム空間)での位置座標や向きの演算(ジオメトリ演算)と、このオブジェクトの向きや位置座標等に基づいてディスプレイに出力する画像を生成する処理(レンダリング処理)を行う。
【0026】
グラフィックメモリ17は、GPU16に接続されており、画像を生成するためのデータやコマンドなど格納する。このグラフィックメモリ17は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。グラフィックメモリ17は、フレームバッファ、テクスチャバッファ等、画像生成時に使用される各種バッファとしての機能を果たす。
【0027】
オーディオプロセッサ18は、スピーカから音声出力を行うためのデータを生成する。このオーディオプロセッサ18によって生成された音声データが図示しないデジタル/アナログ変換器によってアナログ信号に変換され、スピーカに入力されることにより、スピーカから音声出力がなされる。
【0028】
オーディオメモリ19は、オーディオプロセッサ18に構成されており、音声を生成するためのデータやコマンドなど格納する。このオーディオメモリ19は、例えばDRAM(dynamic random access memory)、SRAM(static random access memory)等の半導体メモリを用いて構成される。
【0029】
通信インタフェース(I/F)20は、ゲーム装置1が他のゲーム装置やサーバ装置等との間でデータ通信の必要がある場合における通信処理を行う。
【0030】
ペリフェラルインターフェース(I/F)21は、外部からのデータ入出力を行うインターフェースが組み込まれており、ここに周辺装置としてのペリフェラルが接続される。ここで、ペリフェラルには、マウス(ポインティングデバイス)やキーボード、ゲーム用コントローラ等のキー操作のためのスイッチ、及びタッチペンの他、プログラムの途中経過や生成したデータを保存するバックアップメモリ、表示装置、撮影装置等、画像処理装置本体あるいは他のペリフェラルに接続可能なものが含まれる。
【0031】
なお、システムメモリ11、グラフィックメモリ17、サウンドメモリ19は、1つの
メモリをバスアービタ14に接続して各機能で共通に使用するようにしてもよい。また各
機能ブロックも機能として存在すればよく、機能ブロック同士が統合されていても、また、機能ブロック内部の各構成要素が他のブロックとして分離されていても良い。
【0032】
本実施形態に係るゲーム装置は以上のような構成を備えており、次に本実施形態の画像生成処理の内容について説明する。
【0033】
図2は、仮想三次元空間に配置されたオブジェクト(仮想物体)、光源、視点のそれぞれについて示した概念図である。オブジェクト300は、1または複数のポリゴンを組み合わせて形作られた仮想的な物体である。このオブジェクト300は、例えば人間や動物などの生物、あるいは建物、車、その他の無生物など、仮想三次元空間に配置可能なあらゆる仮想的な物をいう。仮想三次元空間は、相互に直交する3つの軸(XYZ)で規定されたワールド座標系によって表現される。また、オブジェクト300は、例えばワールド座標系とは別個のオブジェクト座標系によって表現される。光源302は、仮想三次元空間内の任意位置に配置される。この光源302は、例えば無限遠光源である。光源302の位置、方向、強さはライトベクトルLで表現される。本実施形態では、ライトベクトルLの長さ(換言すれば光強度)は1に正規化されている。視点304は、視点の位置(ワールド座標系における座標)と視線方向で定義される。例えば、図示の矢印Cの方向が視線方向である。この視点304は、カメラ、仮想カメラ等と呼ばれる場合もある。
【0034】
図3は、オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。図3では、オブジェクト300を形作る複数のポリゴンを代表し、1つのポリゴン306が示されている。このポリゴン306は、図示のように3つの頂点を有する三角形状の小片である。なお、ポリゴンは他の多角形(例えば四角形)であってもよい。ポリゴン306の各頂点には、法線ベクトルNが設定されている。これらの法線ベクトルNは、長さが1に正規化されている。なお、これらの法線ベクトルNは、ポリゴンの頂点以外の箇所、例えば、各頂点によって画定される平面上の任意点に設定されてもよい。本実施形態では、各法線ベクトルNとライトベクトルLとの内積値をパラメータとして用いる。この内積値は、法線ベクトルN、ライトベクトルLがともに1に正規化されているため、両者のなす角度θの余弦であるcosθとなり、その値は−1〜+1の範囲に収まる。
【0035】
図4は、第1の態様の画像処理によって生成される二次元画像を概略的に示した図である。本実施形態の画像処理の全体の流れとしては、オブジェクト300、視点304、光源302を配置したうえで(図2参照)、レンダリング処理(座標変換、クリッピング、透視投影変換、陰面消去、シェーディング、シャドウイング、テクスチャマッピング等)が行われる。これにより、図4に示すように、オブジェクト300の画像310と、オブジェクト300自体に生じる陰(shade)を表すシェイド画像312と、オブジェクト300によって生じる影(shadow)を表すシャドウ画像314と、を含む二次元画像が得られる。以下、このような二次元画像を生成する処理について、主にテクスチャマッピングに着目して以下に説明する。
【0036】
図5は、本実施形態のゲーム装置(画像処理装置)によって実行される第1の態様の画像処理の流れを示すフローチャートである。なお、以下に説明する処理は、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。
【0037】
CPU10は、システムメモリ11から読み出したデータに基づいて、複数のポリゴンを組み合わせて構成されるオブジェクト(ポリゴンモデル)を仮想三次元空間内に配置する(ステップS10)。
【0038】
また、CPU10により光源の設定、視点が設定され、これに対応してGPU16により基礎画像データが生成される(ステップS11)。視点の位置は、例えばプレイヤが操作するオブジェクトの後方、一定距離の位置に設定される。光源の位置は、例えば所定位置に固定されていたり、あるいは時間経過と共に移動したりする。GPU16は、光源、視点の各設定に対応し、座標変換、クリッピング、透視投影変換、陰面消去等の各処理(レンダリング処理)を行う。これにより、オブジェクトが配置された仮想三次元空間を透視投影面上に透視投影した画像が得られる。本実施形態では、この画像のデータを「基礎画像データ」と呼ぶ。この基礎画像データは、グラフィックメモリ17内に設定されるフレームバッファに格納される。
【0039】
次に、GPU16は、オブジェクト300の各ポリゴン306の法線ベクトルNとライトベクトルLとの内積値を算出する(ステップS12)。この演算処理の内容は上記図3に示した通りである。ここで求めた内積値は、シェイド画像312の濃度(輝度)を決定するためのパラメータとなる。例えば本実施形態では、内積値は、−1.0〜+1.0の範囲の値となる。本実施形態では、後の処理の便宜上、この内積値にバイアスをかけ、0.0〜+1.0の範囲の値に変換する。具体的には、「内積値×0.5+0.5」の演算を行うことにより、−1.0〜+1.0の範囲をとっていた内積値が0.0〜+1.0の範囲に変換される。このデータ変換処理はGPU16によって実行される。バイアスをかけた内積値はグラフィックメモリ17に格納される。
【0040】
次に、GPU16は、上記のデータ変換処理後の内積値に対し、更に所定のデータ変換処理を行い、第1の濃度値を算出する(ステップS13)。ここでのデータ変換処理とは、所定の下限しきい値以下は+1.0、所定の上限しきい値より大きければ0.0、下限しきい値と上限しきい値との間は補間(例えば、線形補間)する処理をいう。その一例を図6のグラフにより説明する。図6の横軸はバイアスをかけた内積値(上記ステップS13参照)、縦軸は本ステップにおけるデータ変換処理により得られた第1の濃度値である。この例では、下限しきい値が「+0.45」、上限しきい値が「+0.55」に設定され、補完形式は「線形補間」に設定されている。この結果、バイアスをかけた内積値が0.0以上で+0.45未満である場合には第1の濃度値が+1.0となり、当該内積値が+0.45以上で+0.55未満である間は第1の濃度値が線形に減少し、当該内積値が+0.55以上である場合には第1の濃度値が0.0となる。なお、下限しきい値、上限しきい値、補完形式は任意であり、図6に示したものは例示にすぎない。第1の濃度値は、グラフィックメモリ17に格納される。
【0041】
次に、GPU16は、シャドウマップを用いて陰影領域を検出する(ステップS14)。周知のように「シャドウマップ」とは、視点を光源の位置へ一時的に移してZバッファレンダリングを行い、その内容、すなわち光源から見えているオブジェクト表面までの距離がZ値として保存されたものである。このシャドウマップを可視化すれば光源に近い部分は暗く、光源から遠い部分は明るいグレースケールの2次元画像となる。また、「陰影」とは、オブジェクトの光が当たるとき、そのオブジェクト自体に生じる暗い部分(陰)と、光がそのオブジェクトに遮られてできる暗い部分(影)とを含む。本実施形態では、少なくとも「陰(shade)」を検出し(シェーディング)、更に好ましくは「影(shadow)」を検出する(シャドウイング)。ここでは、GPU16は、シャドウマップを生成し、更にこのシャドウマップを、1番影色が強くなる部分が1.0、光の部分を0.0となるようデータ変換を行う。後の説明の便宜上、このデータ変換によって得られた輝度データを「第2の濃度値」と称する。第2の濃度値は、グラフィックメモリ17に格納される。
【0042】
図7は、ステップS14の処理内容を説明するための図である。より具体的には、図7には、陰影領域(影部分となる領域)を描き出した結果を二次元画像で可視化した様子が示されている。シャドウマップを用いてGPU16により上記の演算を行うことにより、図6に示すように陰影領域が検出される。陰影領域には、オブジェクト300自体に生じる陰(shade)に対応するシェイド領域322と、オブジェクト300に起因して生じる影(shadow)に対応するシャドウ領域324と、が含まれる。なお、シェイド領域322とシャドウ領域324との区別を明りょうにするために、シャドウ領域324の周縁が点線で囲んで示されている。
【0043】
次に、GPU16は、ステップS13で求めた第1の濃度値とステップS14で求めた第2の濃度値とを比較し、大きい方を選択する(ステップS15)。この選択された濃度値を「ベース濃度値」と呼ぶ。ベース濃度値はグラフィックメモリ17に格納される。
【0044】
次に、GPU16は、ステップS15で求めたベース濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データのシェイド領域322にマッピングする処理を行う(ステップS16)。詳細には、ベース濃度値は0.0から1.0の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。すなわち、テクスチャの輝度値とベース濃度値によって表される輝度値とが混合される。また、GPU16は、他のテクスチャをマッピングする処理も適宜行う。これにより、上記図5に対応する二次元画像データが生成される。
【0045】
ここで使用されるテクスチャの一例を図8に示す。これらの線状模様を含むテクスチャを「ハッチングテクスチャ」と称することもできる。図8(A)は右上がりに傾いた複数の斜線を含んだテクスチャを表す図である。図8(B)も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図8(A)に示すテクスチャよりも斜線の相互間隔が広くなっている。図8(C)も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図8(A)に示すテクスチャよりも斜線の傾き角度がより大きくなっている。図8(D)も左上がりに傾いた複数の斜線を含んだテクスチャを表す図である。なお、各図のテクスチャは斜線を含んでいるが、斜線に変えて、水平な線や垂直な線としてもよいし、斜線、水平線、垂直線を適宜組み合わせて網目状にしてもよい。本実施形態では、このようなテクスチャを用いる。生成したい画像の内容(雰囲気、場面等)に応じて、いずれかのテクスチャを選択して用いることもできる。また、図示の例では、直線上の模様が示されているが、線状模様は、波線状であってもよく、フリーハンド書きのようなものであってもよい。すなわち、線状模様は、非直線状の模様であってもよく、直線状に限定されない。
【0046】
シェイド領域322にテクスチャをマッピングした様子を図9に示す。ここでは、シェイド領域322を点線で示している。一例として、図8(C)に示したテクスチャを用いてマッピングがなされている。この図9の一部(図中に一点鎖線の四角で囲んだ部分)を拡大した様子を図10に示す。図10では、作図の都合上、三段階に太さの異なる線を用いて、ベース濃度値が高いほどテクスチャが明りょうに現れ、ベース濃度値が低いほどテクスチャが薄く表示される様子が模式的に示されている。実際には、このベース濃度値によるテクスチャの濃淡は連続的である。このようにして、上記した図5に示したように、水彩画あるいはスケッチ風の雰囲気を有するシェイド画像312が生成される。
【0047】
なお、上記の説明では、第1の濃度値と第2の濃度値を求め、これらの大小関係を比較して大きい方をベース濃度値と定めていたが、第1の濃度値と第2の濃度値のいずれか一方のみを算出し、その値をベース濃度値として用いてもよい。
【0048】
次に、画像処理の他の実施態様について説明する。上述した第1の態様の画像処理を応用して、複数のテクスチャを重ねてマッピングすることにより、画像の表現力を更に高めることができる。
【0049】
図11は、本実施形態のゲーム装置(画像処理装置)によって実行される第2の態様の画像処理の流れを示すフローチャートである。以下に説明する処理においても、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。なお、第1の態様の画像処理と重複する内容については適宜説明を省略する。
【0050】
まず、上記第1の態様の画像処理におけるステップS10〜S16と同様の処理が実行される(ステップS20〜26)。それにより、上記と同様にシェイド領域322にテクスチャがマッピングされる。このあと、シェイド領域322に更に別のテクスチャがマッピングされる。その処理を以下に説明する。
【0051】
GPU16は、ライトベクトルLに所定の定数Wを乗算した値(L×W)と法線ベクトルNとの和(N+L×W)と、ライトベクトルLとの内積値を算出する(ステップS27)。ここで求めた内積値は、後述するシェイド画像352(シェイド画像312に重ねて表示されるもの)の濃度を決定するためのパラメータとなる。ライトベクトルLと定数Wとの積(L×W)を法線ベクトルに加えることにより、上記ステップ23において得られるパラメータとは異なる内容のパラメータが得られる。ここで求めた内積値はグラフィックメモリ17に格納される。
【0052】
次にGPU16は、視点の位置(カメラ位置)が0.0、最遠景が1.0となるように現在位置を変換する処理を行う(ステップS28)。ここで「現在位置」とは、オブジェクト300が配置された位置のことをいう。より具体的には、GPU16は、視点から現在位置までの距離lを視点と最遠景との間の距離Lで除算する(l÷Lを演算する)。
【0053】
次にGPU16は、ステップS27で求めた内積値とステップS28で求めた値との合計値を0.0〜1.0でクランプすることにより、第3の濃度値を求める(ステップS29)。ここで、本実施形態において「クランプする」とは、合計値が0.0以下であった場合には0.0とし、0.0〜1.0であった場合にはそのままの値とし、1.0以上であった場合には1.0とするデータ変換処理をいう。また、ここでは合計値を1.0から減算することも望ましい。それにより、内積値に関しては陰になる部分ほど第3の濃度値が高くなり、視点(カメラ)からの距離に関しては視点から近いほど第3の濃度値が高くなるようにすることができる。この第3の濃度値によって画定される領域がシェイド領域342である(後述の図12参照)。
【0054】
次に、GPU16は、ステップS29で求めた第3の濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データにマッピングする処理を行う(ステップS30)。詳細には、第3の濃度値は0.0から1.0の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。ここでは、ステップS26において用いられるものとは異なるテクスチャが用いられる。例えば、ステップS26においては上記図8(C)のテクスチャが用いられたとすると、本ステップでは上記図8(A)のテクスチャが用いられる。このテクスチャをマッピングした様子を図12に示す。図12では、第3の濃度値によって規定されるシェイド領域342と、このシェイド領域342にテクスチャをマッピングして得られるシェイド画像352が示されている。また、2つのテクスチャが重ねてマッピングされた様子を図13に示す。ここでは、各シェイド領域を点線で示している。また、これらのハッチングテクスチャを含む二次元画像の例を図14に示す。線状画像を用いた陰の画像がより繊細に表現されていることが分かる。
【0055】
なお、上記のステップS27における定数Wの値や、ステップS28における現在位置の変換率を適宜変更することにより、3重、4重とテクスチャを合成することも可能である。それにより、更に細やかな画像表現が可能となる。
【0056】
図15は、上記した第1の態様又は第2の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。画像中には2人の人物(オブジェクトに相当する)が描かれており、矢印で示した箇所にハッチングテクスチャ400〜403が表示されている。なお、他にもハッチングテクスチャが施されている箇所があるが、代表的な箇所だけを例示した。このように、本実施形態によれば、水彩画風、あるいはデッサン風の暖かみのある二次元画像に適した陰影の画像表現が可能となる。
【0057】
なお、本発明は上述した各実施形態の内容に限定されるものではなく、本発明の要旨の範囲内において種々の変形実施が可能である。例えば、上述した実施形態では、CPU等のハードウェアを含むコンピュータに所定のプログラムを実行させることによってゲーム装置が実現されていたが、ゲーム装置に備わっていた各機能ブロックはそれぞれ専用のハードウェア等を用いて実現されていてもよい。また、各濃度値や現在位置、内積値などの各パラメータとして上記した具体的数値は一例に過ぎないものであり、上記のものに限定されない。
【0058】
また、上記では、一例としてゲーム装置を採り上げて、本発明に係る画像処理装置、画像処理方法および画像処理プログラムの実施の形態を説明していたが、本発明の適用範囲はこれに限定されない。例えば、現実世界の各種体験(例えば、運転操作等)を擬似的に再現するシミュレータ装置等に対しても本発明を適用することが可能である。
【図面の簡単な説明】
【0059】
【図1】一実施形態のゲーム装置の構成を示すブロック図である。
【図2】仮想三次元空間に配置されたオブジェクト(仮想物体)、光源、視点のそれぞれについて示した概念図である。
【図3】オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。
【図4】第1の態様の画像処理によって生成される二次元画像を概略的に示した図である。
【図5】本実施形態のゲーム装置(画像処理装置)によって実行される第1の態様の画像処理の流れを示すフローチャートである。
【図6】第2の濃度値を算出するためのデータ変換処理について説明するグラフである。
【図7】陰影領域(影部分となる領域)を描き出した結果を二次元画像で可視化した様子を示す図である。
【図8】線状模様を含むテクスチャ(ハッチングテクスチャ)の一例を示す図である。
【図9】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図10】図9の一部(図中に一点鎖線の四角で囲んだ部分)を拡大した様子を示す図である。
【図11】本実施形態のゲーム装置(画像処理装置)によって実行される第2の態様の画像処理の流れを示すフローチャートである。
【図12】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図13】2つのテクスチャが重ねてマッピングされた様子を示す図である。
【図14】2つのテクスチャを含む二次元画像の例を示す図である。
【図15】第1の態様又は第2の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。
【符号の説明】
【0060】
10…CPU
11…システムメモリ
12…記憶媒体
13…ブートロム
14…バスアービタ
15…ジオメトリプロセッサ
16…レンダリングプロセッサ
17…グラフィックメモリ
18…オーディオプロセッサ
19…オーディオメモリ
20…通信インタフェース(I/F)
21…ペリフェラルインターフェース
【特許請求の範囲】
【請求項1】
記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成するプログラムであって、
前記演算手段に、
(a)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブジェクトを配置するステップと、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、
(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、
を実行させる、プログラム。
【請求項2】
(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、
(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、
を更に含み、
前記(f)は、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項1に記載のプログラム。
【請求項3】
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が第1の値より大きい第2の値となるように現在位置を変換するステップと、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出するステップと、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、
を更に含む、請求項1又は2に記載のプログラム。
【請求項4】
請求項1乃至3のいずれかに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項5】
記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、
前記演算手段が、
(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置する手段、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定する手段、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納する手段、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出する手段と、
(e)前記内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換する手段、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成する手段、
の各々として機能する、画像処理装置。
【請求項6】
更に、前記演算手段が、
(g)シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出する手段、
(h)前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択する手段、
として機能し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項5に記載の画像処理装置。
【請求項7】
更に、前記演算手段が、
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出する手段、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が当該第1の値より大きい第2の値となるように現在の位置を変換する手段、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出する手段、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする手段、
の各々として機能する、請求項5又は6に記載の画像処理装置。
【請求項8】
記憶手段と演算手段を備えた画像処理装置において、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理方法であって、
前記演算手段が、
(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置するステップと、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、
(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、
を実行する、画像処理方法。
【請求項9】
前記演算手段が、
(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、
(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、
を更に実行し、
かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項8に記載の画像処理方法。
【請求項10】
前記演算手段が、
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が当該第1の値より大きい第2の値となるように現在の位置を変換するステップと、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出するステップと、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、
を更に実行する、請求項8又は9に記載の画像処理方法。
【請求項1】
記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成するプログラムであって、
前記演算手段に、
(a)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブジェクトを配置するステップと、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、
(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、
を実行させる、プログラム。
【請求項2】
(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、
(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、
を更に含み、
前記(f)は、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項1に記載のプログラム。
【請求項3】
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が第1の値より大きい第2の値となるように現在位置を変換するステップと、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出するステップと、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、
を更に含む、請求項1又は2に記載のプログラム。
【請求項4】
請求項1乃至3のいずれかに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項5】
記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、
前記演算手段が、
(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置する手段、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定する手段、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納する手段、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出する手段と、
(e)前記内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換する手段、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成する手段、
の各々として機能する、画像処理装置。
【請求項6】
更に、前記演算手段が、
(g)シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出する手段、
(h)前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択する手段、
として機能し、かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項5に記載の画像処理装置。
【請求項7】
更に、前記演算手段が、
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出する手段、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が当該第1の値より大きい第2の値となるように現在の位置を変換する手段、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出する手段、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする手段、
の各々として機能する、請求項5又は6に記載の画像処理装置。
【請求項8】
記憶手段と演算手段を備えた画像処理装置において、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理方法であって、
前記演算手段が、
(a)前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置するステップと、
(b)前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、
(c)前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、
(d)前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、
(e)前記(d)で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第1の濃度値に変換するステップと、
(f)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第1の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、
を実行する、画像処理方法。
【請求項9】
前記演算手段が、
(g)前記(f)より先に、シャドウマップを用いて陰影領域を検出し、第2の濃度値を算出するステップと、
(h)前記(g)の後であって前記(f)より先に、前記第1の濃度値と前記第2の濃度値とを比較していずれか大きい方を選択するステップと、
を更に実行し、
かつ、前記(f)においては、前記第1の濃度値と前記第2の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする、
請求項8に記載の画像処理方法。
【請求項10】
前記演算手段が、
(i)前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
(j)前記仮想空間内における前記視点の位置が第1の値、最遠景が当該第1の値より大きい第2の値となるように現在の位置を変換するステップと、
(k)前記(i)で算出された内積値と前記(j)における変換後の現在の位置との合計を、当該合計値が前記第1の値以下であった場合には当該第1の値とし、前記第1の値から前記第2の値の間であった場合にはそのままの値とし、前記第2の値以上であった場合には当該第2の値とするデータ変換処理を行い、当該データ変換処理後の値を第3の値から減算することによって第3の濃度値を算出するステップと、
(l)線状模様を含むテクスチャを前記記憶手段から読み出し、前記第3の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、
を更に実行する、請求項8又は9に記載の画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2009−64085(P2009−64085A)
【公開日】平成21年3月26日(2009.3.26)
【国際特許分類】
【出願番号】特願2007−229144(P2007−229144)
【出願日】平成19年9月4日(2007.9.4)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
【公開日】平成21年3月26日(2009.3.26)
【国際特許分類】
【出願日】平成19年9月4日(2007.9.4)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
[ Back to top ]