(57)【特許請求の範囲】
【請求項１】
記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置され
た仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成
するプログラムであって、
前記演算手段に、
（ａ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブ
ジェクトを配置するステップと、
（ｂ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源およ
び視点を設定するステップと、
（ｃ）前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定され
る前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記
記憶手段に格納するステップと、
（ｄ）前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベク
トルとの内積値を算出するステップと、
（ｅ）前記（ｄ）で算出された内積値に対して所定のデータ変換処理を行うことにより、
当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第１の濃度値に変換
するステップと、
（ｆ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第１の濃度値に基づ
いて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする
ことにより前記二次元画像データを生成するステップとを実行させ、
（ｇ）前記（ｆ）より先に、シャドウマップを用いて陰影領域を検出し、第２の濃度値を
算出するステップと、
（ｈ）前記（ｇ）の後であって前記（ｆ）より先に、前記第１の濃度値と前記第２の濃度
値とを比較していずれか大きい方を選択するステップと、
を更に含み、
前記（ｆ）は、前記第１の濃度値と前記第２の濃度値のいずれか大きい方に基づいて前
記テクスチャをマッピングする、プログラム。
【請求項２】
（ｉ）前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ラ
イトベクトルとの内積値を算出するステップと、
（ｊ）前記仮想空間内における前記視点の位置が第１の値、最遠景が第１の値より大きい
第２の値となるように現在位置を変換するステップと、
（ｋ）前記（ｉ）で算出された内積値と前記（ｊ）における変換後の現在の位置との合計
を、当該合計値が前記第１の値以下であった場合には当該第１の値とし、前記第１の値か
ら前記第２の値の間であった場合にはそのままの値とし、前記第２の値以上であった場合
には当該第２の値とするデータ変換処理を行い、当該データ変換処理後の値を第３の値か
ら減算することによって第３の濃度値を算出するステップと、
（ｌ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第３の濃度値に基づ
いて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするス
テップと、
を更に含む、請求項１に記載のプログラム。
【請求項３】
記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投
影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、
前記演算手段が、
（ａ）前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次
元空間内に配置する手段、
（ｂ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源およ
び視点を設定する手段、
（ｃ）前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定され
る前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記
記憶手段に格納する手段、
（ｄ）前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベク
トルとの内積値を算出する手段と、
（ｅ）前記内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定
の上限しきい値と下限しきい値との間で変化する第１の濃度値に変換する手段、
（ｆ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第１の濃度値に基づ
いて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする
ことにより前記二次元画像データを生成する手段、
の各々として機能し、
更に、前記演算手段が、
（ｇ）シャドウマップを用いて陰影領域を検出し、第２の濃度値を算出する手段、
（ｈ）前記第１の濃度値と前記第２の濃度値とを比較していずれか大きい方を選択する手
段、
として機能し、かつ、前記（ｆ）においては、前記第１の濃度値と前記第２の濃度値の
いずれか大きい方に基づいて前記テクスチャをマッピングする、画像処理装置。
【請求項４】
更に、前記演算手段が、
（ｉ）前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ラ
イトベクトルとの内積値を算出する手段、
（ｊ）前記仮想空間内における前記視点の位置が第１の値、最遠景が当該第１の値より大
きい第２の値となるように現在の位置を変換する手段、
（ｋ）前記（ｉ）で算出された内積値と前記（ｊ）における変換後の現在の位置との合計
を、当該合計値が前記第１の値以下であった場合には当該第１の値とし、前記第１の値か
ら前記第２の値の間であった場合にはそのままの値とし、前記第２の値以上であった場合
には当該第２の値とするデータ変換処理を行い、当該データ変換処理後の値を第３の値か
ら減算することによって第３の濃度値を算出する手段、
（ｌ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第３の濃度値に基づ
いて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする
手段、
の各々として機能する、請求項３に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想三次元空間に設定される事象を透視投影変換して二次元画像を生成する技術に関する。
【背景技術】
【０００２】
近年のコンピュータ技術の発展に伴い、ビデオゲーム装置、シミュレータ（擬似体験装置）などに関する画像処理技術が広く一般に普及するようになっている。このようなシステムにおいては、表示される画像をより表現力豊かにすることが商品価値を高めるうえで重要となっている。このような背景の中、現実に近い表現（写実的な表現）とは一線を画し、水彩画風あるいはデッサン調などの手書き風の画像表現が検討されている（例えば、特許文献１参照）。しかし、この特許文献１に開示される従来技術では、陰影付けをしたい領域に線状の模様を含んだテクスチャを単にマッピングするだけであるので、平面的な陰影線となってしまい、表現力の向上という点で更に改良の余地があった。
【０００３】
【特許文献１】特開２００１−３１９２４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
そこで、本発明は、手書き風の画像あるいはこれに類した画像に適した陰影表現の表現力をより高めることが可能な画像処理技術を提供することを１つの目的とする。
【課題を解決するための手段】
【０００５】
本発明に係るプログラムは、記憶手段と演算手段を備えた画像処理装置によって実行され、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成するプログラムであって、前記演算手段に、（ａ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に前記オブジェクトを配置するステップと、（ｂ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定するステップと、（ｃ）前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、（ｄ）前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、（ｅ）前記（ｄ）で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第１の濃度値に変換するステップと、（ｆ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第１の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行させるプログラムである。
【０００６】
上記の本発明に係るプログラムを実行することにより、オブジェクトを形作る各ポリゴンの法線ベクトルと光源のライトベクトルとの内積値を利用し、これに上記した所定のデータ変換を施すことにより、オブジェクト表面の陰影を施すべき領域を的確に定め、ここに線状模様を含むテクスチャをマッピングすることができる。このとき、陰影を施すべき領域の大小は、上限しきい値、下限しきい値の各設定に応じて自在に変化させることができる。また、内積値を利用して演算される第１の濃度値（換言すれば輝度値）は、なめらかに階調変化するので、この第１の濃度値を用いてテクスチャをマッピングすることにより、陰の強さ（明暗の度合い）に応じてテクスチャの見え方を連続的に変化させることができる。したがって、本発明によれば、手書き風の画像等に適した陰影表現の表現力をより高めることが可能となる。
【０００７】
好ましくは、上記のプログラムは、（ｇ）前記（ｆ）より先に、シャドウマップを用いて陰影領域を検出し、第２の濃度値を算出するステップと、（ｈ）前記（ｇ）の後であって前記（ｆ）より先に、前記第１の濃度値と前記第２の濃度値とを比較していずれか大きい方を選択するステップと、を更に含み、前記（ｆ）は、前記第１の濃度値と前記第２の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【０００８】
シャドウマップによって得られる濃度値（第２の濃度値）と上記の第１の濃度値とを併用し、いずれか大きい方を選択することにより、更に表現力を高めることが可能となる。詳細には、例えばオブジェクトに対して当該オブジェクト自身による影または他のオブジェクトの影がかかる場合などにおいて、より自然な陰影表現が可能となる。
【０００９】
好ましくは、上記プログラムは、（ｉ）前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、
（ｊ）前記仮想空間内における前記視点の位置が第１の値（例えば０．０）、最遠景が第１の値より大きい第２の値（例えば１．０）となるように現在の位置を変換するステップと、（ｋ）前記（ｉ）で算出された内積値と前記（ｊ）における変換後の現在の位置との合計を、当該合計値が第１の値以下であった場合には第１の値とし、第１の値から第２の値の間であった場合にはそのままの値とし、第２の値以上であった場合には第２の値とするデータ変換処理を行い、当該データ変換処理後の値を第３の値（例えば１．０）から減算することによって第３の濃度値を算出するステップと、（ｌ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第３の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングするステップと、を更に含む。
【００１０】
これにより、オブジェクト表面の陰影を施すべき領域を複数定め、それぞれに線状模様を含むテクスチャをマッピングすることができる。特に、第３の濃度値は、陰が強い領域（より暗い領域）ほどその値が高くなり、かつ視点（仮想カメラ）からの距離が近いほどその値が高くなるので、陰の部分を強調した画像を得られる。マッピングに用いるテクスチャを異ならせることにより、一層高い効果が得られる。
【００１１】
本発明に係るコンピュータ読み取り可能な記録媒体は、上記の本発明に係るプログラムを記録した記録媒体である。また、本発明は、以下のように、画像処理装置、画像処理方法のそれぞれとしても表現することができる。その場合の作用効果については上述と同様である。
【００１２】
本発明に係る画像処理装置は、記憶手段と演算手段を備え、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理装置であって、前記演算手段が、（ａ）前記記憶手段から読み出したデータに基づいて、前記オブジェクトを前記仮想三次元空間内に配置する手段、（ｂ）前記記憶手段から読み出したデータに基づいて、前記仮想三次元空間内に光源および視点を設定する手段、（ｃ）前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納する手段、（ｄ）前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出する手段、（ｅ）前記（ｄ）で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第１の濃度値に変換する手段、（ｆ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第１の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成する手段、の各々として機能することを特徴とする画像処理装置である。
【００１３】
好ましくは、上記画像処理装置は、前記演算手段が更に、（ｇ）前記（ｆ）より先に、シャドウマップを用いて陰影領域を検出し、第２の濃度値を算出する手段、（ｈ）前記（ｇ）の後であって前記（ｆ）より先に、前記第１の濃度値と前記第２の濃度値とを比較していずれか大きい方を選択する手段、として機能し、かつ、前記（ｆ）においては、前記第１の濃度値と前記第２の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【００１４】
好ましくは、上記画像処理装置は、前記演算手段が更に、（ｉ）前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出する手段、（ｊ）前記仮想空間内における前記視点の位置が第１の値（例えば０．０）、最遠景が第１の値より大きい第２の値（例えば１．０）となるように現在の位置を変換する手段、（ｋ）前記（ｉ）で算出された内積値と前記（ｊ）における変換後の現在の位置との合計を、当該合計値が第１の値以下であった場合には第１の値とし、第１の値から第２の値の間であった場合にはそのままの値とし、第２の値以上であった場合には第２の値とするデータ変換処理を行い、当該データ変換処理後の値を第３の値（例えば１．０）から減算することによって第３の濃度値を算出する手段、（ｌ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第３の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングする手段、の各々として機能する。
【００１５】
本発明に係る画像処理方法は、記憶手段と演算手段を備えた画像処理装置において、オブジェクトが配置された仮想三次元空間を所定の透視投影面上に透視投影して得られる二次元画像データを生成する画像処理方法であって、前記演算手段が、（ａ）前記オブジェクトを前記記憶手段から読み出して前記仮想三次元空間内に配置するステップと、（ｂ）前記記憶手段に格納されたデータに基づいて前記仮想三次元空間内に光源および視点を設定するステップと、（ｃ）前記オブジェクトが配置された前記仮想三次元空間を前記視点に対応して設定される前記透視投影面上に透視投影して基礎画像データを生成し、当該基礎画像データを前記記憶手段に格納するステップと、（ｄ）前記オブジェクトを構成する各ポリゴンの法線ベクトルと、前記光源のライトベクトルとの内積値を算出するステップと、（ｅ）前記（ｄ）で算出された内積値に対して所定のデータ変換処理を行うことにより、当該内積値を、所定の上限しきい値と下限しきい値との間で変化する第１の濃度値に変換するステップと、（ｆ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第１の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記基礎画像データにマッピングすることにより前記二次元画像データを生成するステップと、を実行することを特徴とする画像処理方法である。
【００１６】
好ましくは、上記画像処理方法は、前記演算手段が、（ｇ）前記（ｆ）より先に、シャドウマップを用いて陰影領域を検出し、第２の濃度値を算出するステップと、（ｈ）前記（ｇ）の後であって前記（ｆ）より先に、前記第１の濃度値と前記第２の濃度値とを比較していずれか大きい方を選択するステップと、を更に実行し、かつ、前記（ｆ）においては、前記第１の濃度値と前記第２の濃度値のいずれか大きい方に基づいて前記テクスチャをマッピングする。
【００１７】
好ましくは、上記画像処理手段は、前記演算手段が、（ｉ）前記ライトベクトルに所定の定数を乗算した値と前記法線ベクトルの和と、前記ライトベクトルとの内積値を算出するステップと、（ｊ）前記仮想空間内における前記視点の位置が第１の値（例えば０．０）、最遠景が第１の値より大きい第２の値（例えば１．０）となるように現在の位置を変換するステップと、（ｋ）前記（ｉ）で算出された内積値と前記（ｊ）における変換後の現在の位置との合計を、当該合計値が第１の値以下であった場合には第１の値とし、第１の値から第２の値の間であった場合にはそのままの値とし、第２の値以上であった場合には第２の値とするデータ変換処理を行い、当該データ変換処理後の値を第３の値（例えば１．０）から減算することによって第３の濃度値を算出するステップと、（ｌ）線状模様を含むテクスチャを前記記憶手段から読み出し、前記第３の濃度値に基づいて当該テクスチャを、前記記憶手段に格納された前記透視投影画像にマッピングするステップと、を更に実行する。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態について説明する。以下では、画像処理装置の一例としてゲーム装置を採り上げる。
【００１９】
図１は、一実施形態のゲーム装置の構成を示すブロック図である。図１に示す本実施形態のゲーム装置１は、ＣＰＵ（Central Processing Unit）１０、システムメモリ１１、記憶媒体１２、ブートロム（BOOT ROM）１３、バスアービタ１４、ＧＰＵ（Graphics Processing Unit）１６、グラフィックメモリ１７、オーディオプロセッサ１８、オーディオメモリ１９、通信インタフェース（Ｉ／Ｆ）２０、ペリフェラルインターフェース２１、を含んで構成されている。すなわち、本実施形態のゲーム装置１は、演算手段（演算部）としてのＣＰＵ１０及びＧＰＵ１６、記憶手段（記憶部）としてのシステムメモリ１１、記憶媒体１２、グラフィックメモリ１７及びオーディオメモリ１９等を含んで構成される。すなわち、このゲーム装置１は、ＣＰＵ１０を中心として構成されたコンピュータ（コンピュータシステム）を備え、当該コンピュータに所定のプログラムを実行させることによってゲーム装置として機能するものである。具体的には、ゲーム装置１は、ゲーム演出を行うために、仮想三次元空間（ゲーム空間）内を所与の視点（仮想カメラ）から見た二次元画像（静止画または動画）を順次生成するとともに、効果音などの音声を生成する。
【００２０】
ＣＰＵ（Central Processing Unit）１０は、所定のプログラムを実行することによりゲーム装置１全体を制御する。
【００２１】
システムメモリ１１は、ＣＰＵ１０が使用するプログラムやデータを格納する。このシステムメモリ１１は、例えばＤＲＡＭ（dynamic random access memory）、ＳＲＡＭ（static random access memory）等の半導体メモリを用いて構成される。
【００２２】
記憶媒体１２は、ゲームプログラムや出力する画像や音声などのデータが記録されている。このプログラムデータ用ＲＯＭとしての記憶媒体１２は、マスクロムやフラッシュロムなどの電気的にデータを読み出せるＩＣメモリや、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの光学的にデータを読み出せる装置と光ディスクまたは磁気ディスク等であっても良い。
【００２３】
ブートロム１３は、ゲーム装置１を起動させた際に各ブロックを初期化するためのプログラムを格納する。
【００２４】
バスアービタ１４は、各ブロック間でプログラムやデータのやり取りを行うバスを制御する。
【００２５】
ＧＰＵ１６は、ディスプレイに表示するオブジェクトの仮想三次元空間（ゲーム空間）での位置座標や向きの演算（ジオメトリ演算）と、このオブジェクトの向きや位置座標等に基づいてディスプレイに出力する画像を生成する処理（レンダリング処理）を行う。
【００２６】
グラフィックメモリ１７は、ＧＰＵ１６に接続されており、画像を生成するためのデータやコマンドなど格納する。このグラフィックメモリ１７は、例えばＤＲＡＭ（dynamic random access memory）、ＳＲＡＭ（static random access memory）等の半導体メモリを用いて構成される。グラフィックメモリ１７は、フレームバッファ、テクスチャバッファ等、画像生成時に使用される各種バッファとしての機能を果たす。
【００２７】
オーディオプロセッサ１８は、スピーカから音声出力を行うためのデータを生成する。このオーディオプロセッサ１８によって生成された音声データが図示しないデジタル／アナログ変換器によってアナログ信号に変換され、スピーカに入力されることにより、スピーカから音声出力がなされる。
【００２８】
オーディオメモリ１９は、オーディオプロセッサ１８に構成されており、音声を生成するためのデータやコマンドなど格納する。このオーディオメモリ１９は、例えばＤＲＡＭ（dynamic random access memory）、ＳＲＡＭ（static random access memory）等の半導体メモリを用いて構成される。
【００２９】
通信インタフェース（Ｉ／Ｆ）２０は、ゲーム装置１が他のゲーム装置やサーバ装置等との間でデータ通信の必要がある場合における通信処理を行う。
【００３０】
ペリフェラルインターフェース（Ｉ／Ｆ）２１は、外部からのデータ入出力を行うインターフェースが組み込まれており、ここに周辺装置としてのペリフェラルが接続される。ここで、ペリフェラルには、マウス（ポインティングデバイス）やキーボード、ゲーム用コントローラ等のキー操作のためのスイッチ、及びタッチペンの他、プログラムの途中経過や生成したデータを保存するバックアップメモリ、表示装置、撮影装置等、画像処理装置本体あるいは他のペリフェラルに接続可能なものが含まれる。
【００３１】
なお、システムメモリ１１、グラフィックメモリ１７、サウンドメモリ１９は、１つの
メモリをバスアービタ１４に接続して各機能で共通に使用するようにしてもよい。また各
機能ブロックも機能として存在すればよく、機能ブロック同士が統合されていても、また、機能ブロック内部の各構成要素が他のブロックとして分離されていても良い。
【００３２】
本実施形態に係るゲーム装置は以上のような構成を備えており、次に本実施形態の画像生成処理の内容について説明する。
【００３３】
図２は、仮想三次元空間に配置されたオブジェクト（仮想物体）、光源、視点のそれぞれについて示した概念図である。オブジェクト３００は、１または複数のポリゴンを組み合わせて形作られた仮想的な物体である。このオブジェクト３００は、例えば人間や動物などの生物、あるいは建物、車、その他の無生物など、仮想三次元空間に配置可能なあらゆる仮想的な物をいう。仮想三次元空間は、相互に直交する３つの軸（ＸＹＺ）で規定されたワールド座標系によって表現される。また、オブジェクト３００は、例えばワールド座標系とは別個のオブジェクト座標系によって表現される。光源３０２は、仮想三次元空間内の任意位置に配置される。この光源３０２は、例えば無限遠光源である。光源３０２の位置、方向、強さはライトベクトルＬで表現される。本実施形態では、ライトベクトルＬの長さ（換言すれば光強度）は１に正規化されている。視点３０４は、視点の位置（ワールド座標系における座標）と視線方向で定義される。例えば、図示の矢印Ｃの方向が視線方向である。この視点３０４は、カメラ、仮想カメラ等と呼ばれる場合もある。
【００３４】
図３は、オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。図３では、オブジェクト３００を形作る複数のポリゴンを代表し、１つのポリゴン３０６が示されている。このポリゴン３０６は、図示のように３つの頂点を有する三角形状の小片である。なお、ポリゴンは他の多角形（例えば四角形）であってもよい。ポリゴン３０６の各頂点には、法線ベクトルＮが設定されている。これらの法線ベクトルＮは、長さが１に正規化されている。なお、これらの法線ベクトルＮは、ポリゴンの頂点以外の箇所、例えば、各頂点によって画定される平面上の任意点に設定されてもよい。本実施形態では、各法線ベクトルＮとライトベクトルＬとの内積値をパラメータとして用いる。この内積値は、法線ベクトルＮ、ライトベクトルＬがともに１に正規化されているため、両者のなす角度θの余弦であるｃｏｓθとなり、その値は−１〜＋１の範囲に収まる。
【００３５】
図４は、第１の態様の画像処理によって生成される二次元画像を概略的に示した図である。本実施形態の画像処理の全体の流れとしては、オブジェクト３００、視点３０４、光源３０２を配置したうえで（図２参照）、レンダリング処理（座標変換、クリッピング、透視投影変換、陰面消去、シェーディング、シャドウイング、テクスチャマッピング等）が行われる。これにより、図４に示すように、オブジェクト３００の画像３１０と、オブジェクト３００自体に生じる陰（shade）を表すシェイド画像３１２と、オブジェクト３００によって生じる影（shadow）を表すシャドウ画像３１４と、を含む二次元画像が得られる。以下、このような二次元画像を生成する処理について、主にテクスチャマッピングに着目して以下に説明する。
【００３６】
図５は、本実施形態のゲーム装置（画像処理装置）によって実行される第１の態様の画像処理の流れを示すフローチャートである。なお、以下に説明する処理は、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。
【００３７】
ＣＰＵ１０は、システムメモリ１１から読み出したデータに基づいて、複数のポリゴンを組み合わせて構成されるオブジェクト（ポリゴンモデル）を仮想三次元空間内に配置する（ステップＳ１０）。
【００３８】
また、ＣＰＵ１０により光源の設定、視点が設定され、これに対応してＧＰＵ１６により基礎画像データが生成される（ステップＳ１１）。視点の位置は、例えばプレイヤが操作するオブジェクトの後方、一定距離の位置に設定される。光源の位置は、例えば所定位置に固定されていたり、あるいは時間経過と共に移動したりする。ＧＰＵ１６は、光源、視点の各設定に対応し、座標変換、クリッピング、透視投影変換、陰面消去等の各処理（レンダリング処理）を行う。これにより、オブジェクトが配置された仮想三次元空間を透視投影面上に透視投影した画像が得られる。本実施形態では、この画像のデータを「基礎画像データ」と呼ぶ。この基礎画像データは、グラフィックメモリ１７内に設定されるフレームバッファに格納される。
【００３９】
次に、ＧＰＵ１６は、オブジェクト３００の各ポリゴン３０６の法線ベクトルＮとライトベクトルＬとの内積値を算出する（ステップＳ１２）。この演算処理の内容は上記図３に示した通りである。ここで求めた内積値は、シェイド画像３１２の濃度（輝度）を決定するためのパラメータとなる。例えば本実施形態では、内積値は、−１．０〜＋１．０の範囲の値となる。本実施形態では、後の処理の便宜上、この内積値にバイアスをかけ、０．０〜＋１．０の範囲の値に変換する。具体的には、「内積値×０．５＋０．５」の演算を行うことにより、−１．０〜＋１．０の範囲をとっていた内積値が０．０〜＋１．０の範囲に変換される。このデータ変換処理はＧＰＵ１６によって実行される。バイアスをかけた内積値はグラフィックメモリ１７に格納される。
【００４０】
次に、ＧＰＵ１６は、上記のデータ変換処理後の内積値に対し、更に所定のデータ変換処理を行い、第１の濃度値を算出する（ステップＳ１３）。ここでのデータ変換処理とは、所定の下限しきい値以下は＋１．０、所定の上限しきい値より大きければ０．０、下限しきい値と上限しきい値との間は補間（例えば、線形補間）する処理をいう。その一例を図６のグラフにより説明する。図６の横軸はバイアスをかけた内積値（上記ステップＳ１３参照）、縦軸は本ステップにおけるデータ変換処理により得られた第１の濃度値である。この例では、下限しきい値が「＋０．４５」、上限しきい値が「＋０．５５」に設定され、補完形式は「線形補間」に設定されている。この結果、バイアスをかけた内積値が０．０以上で＋０．４５未満である場合には第１の濃度値が＋１．０となり、当該内積値が＋０．４５以上で＋０．５５未満である間は第１の濃度値が線形に減少し、当該内積値が＋０．５５以上である場合には第１の濃度値が０．０となる。なお、下限しきい値、上限しきい値、補完形式は任意であり、図６に示したものは例示にすぎない。第１の濃度値は、グラフィックメモリ１７に格納される。
【００４１】
次に、ＧＰＵ１６は、シャドウマップを用いて陰影領域を検出する（ステップＳ１４）。周知のように「シャドウマップ」とは、視点を光源の位置へ一時的に移してＺバッファレンダリングを行い、その内容、すなわち光源から見えているオブジェクト表面までの距離がＺ値として保存されたものである。このシャドウマップを可視化すれば光源に近い部分は暗く、光源から遠い部分は明るいグレースケールの２次元画像となる。また、「陰影」とは、オブジェクトの光が当たるとき、そのオブジェクト自体に生じる暗い部分（陰）と、光がそのオブジェクトに遮られてできる暗い部分（影）とを含む。本実施形態では、少なくとも「陰（shade）」を検出し（シェーディング）、更に好ましくは「影（shadow）」を検出する（シャドウイング）。ここでは、ＧＰＵ１６は、シャドウマップを生成し、更にこのシャドウマップを、１番影色が強くなる部分が１．０、光の部分を０．０となるようデータ変換を行う。後の説明の便宜上、このデータ変換によって得られた輝度データを「第２の濃度値」と称する。第２の濃度値は、グラフィックメモリ１７に格納される。
【００４２】
図７は、ステップＳ１４の処理内容を説明するための図である。より具体的には、図７には、陰影領域（影部分となる領域）を描き出した結果を二次元画像で可視化した様子が示されている。シャドウマップを用いてＧＰＵ１６により上記の演算を行うことにより、図６に示すように陰影領域が検出される。陰影領域には、オブジェクト３００自体に生じる陰（shade）に対応するシェイド領域３２２と、オブジェクト３００に起因して生じる影（shadow）に対応するシャドウ領域３２４と、が含まれる。なお、シェイド領域３２２とシャドウ領域３２４との区別を明りょうにするために、シャドウ領域３２４の周縁が点線で囲んで示されている。
【００４３】
次に、ＧＰＵ１６は、ステップＳ１３で求めた第１の濃度値とステップＳ１４で求めた第２の濃度値とを比較し、大きい方を選択する（ステップＳ１５）。この選択された濃度値を「ベース濃度値」と呼ぶ。ベース濃度値はグラフィックメモリ１７に格納される。
【００４４】
次に、ＧＰＵ１６は、ステップＳ１５で求めたベース濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データのシェイド領域３２２にマッピングする処理を行う（ステップＳ１６）。詳細には、ベース濃度値は０．０から１．０の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。すなわち、テクスチャの輝度値とベース濃度値によって表される輝度値とが混合される。また、ＧＰＵ１６は、他のテクスチャをマッピングする処理も適宜行う。これにより、上記図５に対応する二次元画像データが生成される。
【００４５】
ここで使用されるテクスチャの一例を図８に示す。これらの線状模様を含むテクスチャを「ハッチングテクスチャ」と称することもできる。図８（Ａ）は右上がりに傾いた複数の斜線を含んだテクスチャを表す図である。図８（Ｂ）も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図８（Ａ）に示すテクスチャよりも斜線の相互間隔が広くなっている。図８（Ｃ）も右上がりに傾いた複数の斜線を含んだテクスチャを表す図であり、図８（Ａ）に示すテクスチャよりも斜線の傾き角度がより大きくなっている。図８（Ｄ）も左上がりに傾いた複数の斜線を含んだテクスチャを表す図である。なお、各図のテクスチャは斜線を含んでいるが、斜線に変えて、水平な線や垂直な線としてもよいし、斜線、水平線、垂直線を適宜組み合わせて網目状にしてもよい。本実施形態では、このようなテクスチャを用いる。生成したい画像の内容（雰囲気、場面等）に応じて、いずれかのテクスチャを選択して用いることもできる。また、図示の例では、直線上の模様が示されているが、線状模様は、波線状であってもよく、フリーハンド書きのようなものであってもよい。すなわち、線状模様は、非直線状の模様であってもよく、直線状に限定されない。
【００４６】
シェイド領域３２２にテクスチャをマッピングした様子を図９に示す。ここでは、シェイド領域３２２を点線で示している。一例として、図８（Ｃ）に示したテクスチャを用いてマッピングがなされている。この図９の一部（図中に一点鎖線の四角で囲んだ部分）を拡大した様子を図１０に示す。図１０では、作図の都合上、三段階に太さの異なる線を用いて、ベース濃度値が高いほどテクスチャが明りょうに現れ、ベース濃度値が低いほどテクスチャが薄く表示される様子が模式的に示されている。実際には、このベース濃度値によるテクスチャの濃淡は連続的である。このようにして、上記した図５に示したように、水彩画あるいはスケッチ風の雰囲気を有するシェイド画像３１２が生成される。
【００４７】
なお、上記の説明では、第１の濃度値と第２の濃度値を求め、これらの大小関係を比較して大きい方をベース濃度値と定めていたが、第１の濃度値と第２の濃度値のいずれか一方のみを算出し、その値をベース濃度値として用いてもよい。
【００４８】
次に、画像処理の他の実施態様について説明する。上述した第１の態様の画像処理を応用して、複数のテクスチャを重ねてマッピングすることにより、画像の表現力を更に高めることができる。
【００４９】
図１１は、本実施形態のゲーム装置（画像処理装置）によって実行される第２の態様の画像処理の流れを示すフローチャートである。以下に説明する処理においても、その結果に矛盾を生じない限りにおいて、処理順序を入れ替えることや、各処理を並行して行うことが可能である。なお、第１の態様の画像処理と重複する内容については適宜説明を省略する。
【００５０】
まず、上記第１の態様の画像処理におけるステップＳ１０〜Ｓ１６と同様の処理が実行される（ステップＳ２０〜２６）。それにより、上記と同様にシェイド領域３２２にテクスチャがマッピングされる。このあと、シェイド領域３２２に更に別のテクスチャがマッピングされる。その処理を以下に説明する。
【００５１】
ＧＰＵ１６は、ライトベクトルＬに所定の定数Ｗを乗算した値（Ｌ×Ｗ）と法線ベクトルＮとの和（Ｎ＋Ｌ×Ｗ）と、ライトベクトルＬとの内積値を算出する（ステップＳ２７）。ここで求めた内積値は、後述するシェイド画像３５２（シェイド画像３１２に重ねて表示されるもの）の濃度を決定するためのパラメータとなる。ライトベクトルＬと定数Ｗとの積（Ｌ×Ｗ）を法線ベクトルに加えることにより、上記ステップ２３において得られるパラメータとは異なる内容のパラメータが得られる。ここで求めた内積値はグラフィックメモリ１７に格納される。
【００５２】
次にＧＰＵ１６は、視点の位置（カメラ位置）が０．０、最遠景が１．０となるように現在位置を変換する処理を行う（ステップＳ２８）。ここで「現在位置」とは、オブジェクト３００が配置された位置のことをいう。より具体的には、ＧＰＵ１６は、視点から現在位置までの距離ｌを視点と最遠景との間の距離Ｌで除算する（ｌ÷Ｌを演算する）。
【００５３】
次にＧＰＵ１６は、ステップＳ２７で求めた内積値とステップＳ２８で求めた値との合計値を０．０〜１．０でクランプすることにより、第３の濃度値を求める（ステップＳ２９）。ここで、本実施形態において「クランプする」とは、合計値が０．０以下であった場合には０．０とし、０．０〜１．０であった場合にはそのままの値とし、１．０以上であった場合には１．０とするデータ変換処理をいう。また、ここでは合計値を１．０から減算することも望ましい。それにより、内積値に関しては陰になる部分ほど第３の濃度値が高くなり、視点（カメラ）からの距離に関しては視点から近いほど第３の濃度値が高くなるようにすることができる。この第３の濃度値によって画定される領域がシェイド領域３４２である（後述の図１２参照）。
【００５４】
次に、ＧＰＵ１６は、ステップＳ２９で求めた第３の濃度値に基づいて、線状模様を含むテクスチャを上述した基礎画像データにマッピングする処理を行う（ステップＳ３０）。詳細には、第３の濃度値は０．０から１．０の範囲で変化するので、この値に応じてベース濃度値が高いほどテクスチャが明りょうに現れるようにマッピングが行われる。ここでは、ステップＳ２６において用いられるものとは異なるテクスチャが用いられる。例えば、ステップＳ２６においては上記図８（Ｃ）のテクスチャが用いられたとすると、本ステップでは上記図８（Ａ）のテクスチャが用いられる。このテクスチャをマッピングした様子を図１２に示す。図１２では、第３の濃度値によって規定されるシェイド領域３４２と、このシェイド領域３４２にテクスチャをマッピングして得られるシェイド画像３５２が示されている。また、２つのテクスチャが重ねてマッピングされた様子を図１３に示す。ここでは、各シェイド領域を点線で示している。また、これらのハッチングテクスチャを含む二次元画像の例を図１４に示す。線状画像を用いた陰の画像がより繊細に表現されていることが分かる。
【００５５】
なお、上記のステップＳ２７における定数Ｗの値や、ステップＳ２８における現在位置の変換率を適宜変更することにより、３重、４重とテクスチャを合成することも可能である。それにより、更に細やかな画像表現が可能となる。
【００５６】
図１５は、上記した第１の態様又は第２の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。画像中には２人の人物（オブジェクトに相当する）が描かれており、矢印で示した箇所にハッチングテクスチャ４００〜４０３が表示されている。なお、他にもハッチングテクスチャが施されている箇所があるが、代表的な箇所だけを例示した。このように、本実施形態によれば、水彩画風、あるいはデッサン風の暖かみのある二次元画像に適した陰影の画像表現が可能となる。
【００５７】
なお、本発明は上述した各実施形態の内容に限定されるものではなく、本発明の要旨の範囲内において種々の変形実施が可能である。例えば、上述した実施形態では、ＣＰＵ等のハードウェアを含むコンピュータに所定のプログラムを実行させることによってゲーム装置が実現されていたが、ゲーム装置に備わっていた各機能ブロックはそれぞれ専用のハードウェア等を用いて実現されていてもよい。また、各濃度値や現在位置、内積値などの各パラメータとして上記した具体的数値は一例に過ぎないものであり、上記のものに限定されない。
【００５８】
また、上記では、一例としてゲーム装置を採り上げて、本発明に係る画像処理装置、画像処理方法および画像処理プログラムの実施の形態を説明していたが、本発明の適用範囲はこれに限定されない。例えば、現実世界の各種体験（例えば、運転操作等）を擬似的に再現するシミュレータ装置等に対しても本発明を適用することが可能である。
【図面の簡単な説明】
【００５９】
【図１】一実施形態のゲーム装置の構成を示すブロック図である。
【図２】仮想三次元空間に配置されたオブジェクト（仮想物体）、光源、視点のそれぞれについて示した概念図である。
【図３】オブジェクトを形作るポリゴンとライトベクトルとの関係を示した概念図である。
【図４】第１の態様の画像処理によって生成される二次元画像を概略的に示した図である。
【図５】本実施形態のゲーム装置（画像処理装置）によって実行される第１の態様の画像処理の流れを示すフローチャートである。
【図６】第２の濃度値を算出するためのデータ変換処理について説明するグラフである。
【図７】陰影領域（影部分となる領域）を描き出した結果を二次元画像で可視化した様子を示す図である。
【図８】線状模様を含むテクスチャ（ハッチングテクスチャ）の一例を示す図である。
【図９】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図１０】図９の一部（図中に一点鎖線の四角で囲んだ部分）を拡大した様子を示す図である。
【図１１】本実施形態のゲーム装置（画像処理装置）によって実行される第２の態様の画像処理の流れを示すフローチャートである。
【図１２】シェイド領域にテクスチャをマッピングした様子を示す図である。
【図１３】２つのテクスチャが重ねてマッピングされた様子を示す図である。
【図１４】２つのテクスチャを含む二次元画像の例を示す図である。
【図１５】第１の態様又は第２の態様の画像処理によって生成される二次元画像のより具体的な表示例を示す図である。
【符号の説明】
【００６０】
１０…ＣＰＵ
１１…システムメモリ
１２…記憶媒体
１３…ブートロム
１４…バスアービタ
１５…ジオメトリプロセッサ
１６…レンダリングプロセッサ
１７…グラフィックメモリ
１８…オーディオプロセッサ
１９…オーディオメモリ
２０…通信インタフェース（Ｉ／Ｆ）
２１…ペリフェラルインターフェース
【図１】
0005007633.tif 000002
【図２】
0005007633.tif 000003
【図３】
0005007633.tif 000004
【図４】
0005007633.tif 000005
【図５】
0005007633.tif 000006
【図６】
0005007633.tif 000007
【図７】
0005007633.tif 000008
【図８】
0005007633.tif 000009
【図９】
0005007633.tif 000010
【図１０】
0005007633.tif 000011
【図１１】
0005007633.tif 000012
【図１２】
0005007633.tif 000013
【図１３】
0005007633.tif 000014
【図１４】
0005007633.tif 000015
【図１５】
0005007633.tif 000016