(57)【特許請求の範囲】
【請求項１】
コンピュータを利用して仮想３次元空間にシーンを構築し、そのシーンを仮想カメラで撮影した画像を描画する方法であって、
前記仮想３次元空間に配置されるオブジェクトから影を生成する対象となる影生成オブジェクトを特定し、コンピュータに設けられたメモリ上に影テクスチャレンダリング用フレームバッファと影テクスチャレンダリング用Ｚバッファとを確保し、前記仮想カメラを光源から前記影生成オブジェクトに向けられたものに設定し、前記影生成オブジェクトの周囲の所定範囲に配置される被投影候補のオブジェクトを前記影テクスチャレンダリング用フレームバッファに対して仮想的にレンダリングして各被投影候補のオブジェクトの前記視点からの奥行き情報を前記影テクスチャレンダリング用Ｚバッファに書き込むことにより、前記被投影候補のオブジェクトに関する前記仮想カメラの視点からの奥行き情報を取得し、その取得された奥行き情報を参照して、前記影生成オブジェクトを前記影テクスチャレンダリング用フレームバッファに描画することにより、前記被投影候補のオブジェクトと前記影生成オブジェトとの前後関係からみて前記所定範囲に出現させるべき影のテクスチャを生成し、その生成された影のテクスチャを前記所定範囲に前記影生成オブジェクトと対応付けてマッピングすることを特徴とする画像の描画方法。
【請求項２】
前記影生成オブジェクトよりも手前のオブジェクトによって影の生成が妨げられる部分を含まないように前記影のテクスチャを生成することを特徴とする請求項１に記載の画像の描画方法。
【請求項３】
仮想３次元空間にシーンを構築し、そのシーンを仮想カメラで撮影した画像を描画する処理をコンピュータに実行させるためのプログラムであって、
前記仮想３次元空間に配置されるオブジェクトから影を生成する対象となる影生成オブジェクトを特定する手順と、
コンピュータに設けられたメモリ上に影テクスチャレンダリング用フレームバッファと影テクスチャレンダリング用Ｚバッファとを確保する手順と、
前記仮想カメラを光源から前記影生成オブジェクトに向けられたものに設定する手順と、
前記影生成オブジェクトの周囲の所定範囲に配置される被投影候補のオブジェクトを前記影テクスチャレンダリング用フレームバッファに対して仮想的にレンダリングして各被投影候補のオブジェクトの前記視点からの奥行き情報を前記影テクスチャレンダリング用Ｚバッファに書き込むことにより、前記被投影候補のオブジェクトに関する前記仮想カメラの視点からの奥行き情報を取得する手順と、
その取得された奥行き情報を参照して、前記影生成オブジェクトを前記影テクスチャレンダリング用フレームバッファに描画することにより、前記被投影候補のオブジェクトと前記影生成オブジェトとの前後関係からみて前記所定範囲に出現させるべき影のテクスチャを生成する手順と、
その生成された影のテクスチャを前記所定範囲に前記影生成オブジェクトと対応付けてマッピングする手順と、
をコンピュータに実行させるように構成されたことを特徴とする画像描画用のプログラム。
【請求項４】
前記影生成オブジェクトよりも手前のオブジェクトによって影の生成が妨げられる部分を含まないように前記影のテクスチャを生成するように構成されたことを特徴とする請求項３に記載の画像描画用プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックス技術を利用してオブジェクトの影を正確に描くことが可能な画像の描画方法に関する。
【０００２】
【従来の技術】
コンピュータグラフィックス技術を利用してオブジェクトの影を表現する方法として、従来より、シャドーマッピングやシャドーボリュームと呼ばれる描画方法が用いられている。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のシャドーマッピングでは、影を生成するオブジェクトと、影が投影されるオブジェクトとの位置関係を考慮していないため、影を生成するオブジェクトよりも手前のオブジェクトにも影が投影されて不自然な画像が生成されることがあった。
【０００４】
そこで、本発明はオブジェクトの前後関係を考慮した正確な影を描くことが可能な画像の描画方法及びその方法の実現に使用するコンピュータプログラムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
以下、本発明について説明する。なお、本発明の理解を容易にするために添付図面の参照符号を括弧書きにて付記するが、それにより本発明が図示の形態に限定されるものではない。
【０００６】
本発明の画像の描画方法は、コンピュータを利用して仮想３次元空間（１）にシーンを構築し、そのシーンを仮想カメラで撮影した画像を描画する方法であって、前記仮想３次元空間に配置されるオブジェクト（２，３，４）から影を生成する対象となる影生成オブジェクト（２）を特定し、コンピュータに設けられたメモリ（１５）上に影テクスチャレンダリング用フレームバッファと影テクスチャレンダリング用Ｚバッファとを確保し、前記仮想カメラを光源から前記影生成オブジェクトに向けられたものに設定し、前記影生成オブジェクトの周囲の所定範囲に配置される被投影候補のオブジェクト（３，４）を前記影テクスチャレンダリング用フレームバッファに対して仮想的にレンダリングして各被投影候補のオブジェクトの前記視点からの奥行き情報を前記影テクスチャレンダリング用Ｚバッファに書き込むことにより、前記被投影候補のオブジェクトに関する前記仮想カメラの視点からの奥行き情報を取得し、その取得された奥行き情報を参照して、、前記影生成オブジェクトを前記影テクスチャレンダリング用フレームバッファに描画することにより、前記被投影候補のオブジェクトと前記影生成オブジェトとの前後関係からみて前記所定範囲に出現させるべき影のテクスチャ（５ａ）を生成し、その生成された影のテクスチャを前記所定範囲に前記影生成オブジェクト（２）と対応付けてマッピングするものである。
【０００７】
本発明の描画方法によれば、影生成オブジェクトの周囲に配置されるオブジェクトの奥行き情報を参照して影のテクスチャを描いているから、影生成用オブジェクトと他のオブジェクトとの前後関係を考慮した正確な影の描画を行うことができる。例えば光源と影生成オブジェクトの間に配置されて遮蔽物として作用するオブジェクトによって隠される部分は影テクスチャとして描かないようにすれば、その遮蔽物上に背後の影が投影されるような不自然な描画が行われるおそれがなくなる。
【０００８】
また、本発明の描画方法によれば、３次元画像を生成する際のＺバッファ法を利用して被投影候補のオブジェクトの奥行き情報を簡単に取得することができる。また、Ｚバッファに記憶された奥行き情報から、被投影候補のオブジェクトと影生成用オブジェクトとの前後関係を判別して影生成用オブジェクトが隠される部分に関する影のテクスチャの描画を省略でき、影の描画処理の負荷を軽減できる。なお、上記から明らかなように、本発明の描画方法の好適な形態では、前記影生成オブジェクトよりも手前のオブジェクトによって影の生成が妨げられる部分を含まないように前記影のテクスチャを生成する。
【０００９】
また、本発明のプログラムは、仮想３次元空間（１）にシーンを構築し、そのシーンを仮想カメラで撮影した画像を描画する処理をコンピュータに実行させるためのプログラムであって、前記仮想３次元空間に配置されるオブジェクト（２，３，４）から影を生成する対象となる影生成オブジェクト（２）を特定する手順と、コンピュータに設けられたメモリ（１５）上に影テクスチャレンダリング用フレームバッファと影テクスチャレンダリング用Ｚバッファとを確保する手順と、前記仮想カメラを光源から前記影生成オブジェクトに向けられたものに設定する手順と、前記影生成オブジェクトの周囲の所定範囲に配置される被投影候補のオブジェクト（３，４）を前記影テクスチャレンダリング用フレームバッファに対して仮想的にレンダリングして各被投影候補のオブジェクトの前記視点からの奥行き情報を前記影テクスチャレンダリング用Ｚバッファに書き込むことにより、、前記被投影候補のオブジェクトに関する前記仮想カメラの視点からの奥行き情報を取得する手順と、その取得された奥行き情報を参照して、前記影生成オブジェクトを前記影テクスチャレンダリング用フレームバッファに描画することにより、前記被投影候補のオブジェクトと前記影生成オブジェトとの前後関係からみて前記所定範囲に出現させるべき影のテクスチャ（５ａ）を生成する手順と、その生成された影のテクスチャを前記所定範囲に前記影生成オブジェクトと対応付けてマッピングする手順と、をコンピュータに実行させるように構成されたものである。
【００１０】
このプログラムをコンピュータで読み取って実行することにより、本発明の画像の描画方法を実施することができる。
【００１１】
なお、本発明のプログラムは、上述した描画方法の好ましい態様を備えることができる。すなわち、本発明のプログラムは、前記影生成オブジェクトよりも手前のオブジェクトによって影の生成が妨げられる部分を含まないように前記影のテクスチャを生成するように構成されてもよい。
【００１２】
さらに、本発明のプログラムは記憶媒体に記録されて使用者に提供されてもよいし、有線又は無線の伝送媒体に乗せて使用者に提供されてもよい。
【００１３】
【発明の実施の形態】
まず、図１により本発明による描画処理の概念を説明する。図１（ａ）は仮想３次元空間１に構築されたシーンの一例を簡略化して示している。仮想３次元空間１にはＸ，Ｙ，Ｚの三軸直交座標系であるワールド座標系が設定され、そこには様々なオブジェクト２，３，４…が配置される。なお、オブジェクト４は床面を想定したものである。さらに、仮想３次元空間１には光源やカメラが設定されるが、それらの図示は省略した。こうしたシーンの構築が終わると、各オブジェクトを構成するポリゴンの頂点座標について、ワールド座標系から視点座標系への座標変換が行われ、その視点座標系に基づいて仮想スクリーン（不図示）への投影が行われてポリゴンの頂点がスクリーン座標系の２次元座標に変換される。この後、テクスチャマッピング等のレンダリング処理が行われて３次元画像が生成される。
【００１４】
以上のような画像処理において、例えばオブジェクト２の影５を表現する手法としてシャドーマッピング法が使用されている。シャドーマッピング法は、オブジェクト２に生じるべき影をオフスクリーン、つまりシーンをレンダリングするバッファとは別に用意されたバッファ上にてレンダリングして影のテクスチャを生成し、そのテクスチャを仮想スクリーンにレンダリングされた２次元画像上にオブジェクト２と対応付けてマッピングして影５を生成するというものである。
【００１５】
しかし、従来のシャドーマッピング法では、オブジェクト２と、その近傍に位置する他のオブジェクト３との前後関係を考慮せず、オブジェクト２の全体形状に対応する影をテクスチャとして描いている。そのため、図１に示したように、影５のテクスチャには、視点６からみてオブジェクト３から外れた位置に投影されるべき部分５ａのみならず、オブジェクト３に隠されて本来であれば現れるべきではない部分５ｂまでが含まれる。こうした影テクスチャ５を単純にマッピングすれば、オブジェクト３上にも影５が出現するという不自然な画像が描画される。こうした不自然な描画を避けるため、本実施形態では以下に述べる方法で影を伴った画像を描画することとした。
【００１６】
図２は本実施形態に従って描画された画像の一例を示している。この画像には柱を挟んで前後に２体のキャラクタが描かれる。柱やキャラクタ、床面等はすべて仮想３次元空間に配置されたオブジェクトであり、光源は画像の手前に設定されている。こうしたシーンでは、柱の背後のキャラクタのほぼ右半分が柱に隠れて視点から見えないが、そのキャラクタの全身を対象として影のテクスチャを生成してそのままマッピングすると、柱の側面にその影が出現する。そこで、本実施形態では各キャラクタを影生成用オブジェクトとして特定し、それと柱や床との前後関係を調べて柱に隠れる部分は影のテクスチャそのものを描画しないこととした。こうして描かれた影のテクスチャを図３に示す。この図から明らかなように、柱の手前のキャラクタについては全身の影がテクスチャ５として生成されているのに対して、柱の背後のキャラクタについては柱に隠れていない部分の影のみがテクスチャ５ａとして生成されている。
【００１７】
次に、以上のような描画方法を実現する具体的な手順を図４及び図５を参照して説明する。本発明の画像の描画方法は様々な分野の３次元画像処理において利用できるものであるが、以下では一例としてコンピュータを利用したゲーム機にて本発明の描画方法を実施する例を説明する。
【００１８】
図４はコンピュータを利用したゲーム機の典型的な制御系のブロック図である。周知のように、コンピュータとしてのゲーム機１０は、記憶媒体（例えばＤＶＤ−ＲＯＭ）２５に記録されたゲーム用プログラムに従って所定のゲームを実行するものであり、マイクロプロセッサを主体として構成されたＣＰＵ１１と、そのＣＰＵ１１に対する主記憶装置としてのＲＯＭ１２及びＲＡＭ１３と、ＣＰＵ１１からの指示に基づいて画像処理及び音声処理に適した処理を行なう画像処理装置１４及びサウンド処理装置１６と、記憶媒体からデータ等を読み取るための記憶媒体読取装置１８とを有している。ＲＯＭ１２には、ゲーム機１０の全体の動作制御に必要なプログラムとしてのオペレーティングシステムが書き込まれる。ＲＡＭ１３には記憶媒体としてのＤＶＤ−ＲＯＭ２５から読み取ったゲーム用のプログラムやデータが必要に応じて書き込まれる。
【００１９】
画像処理装置１４はＣＰＵ１１からの指示に従ってバッファメモリ１５上に所定の画像をレンダリングしたり、そのレンダリングされた画像データを所定のビデオ再生信号に変換して所定のタイミングでモニタ１９に出力する。ゲーム機によっては、画像処理装置１４に高度な３次元演算を実行するグラフィックスアクセラレータ機能が搭載されることもあり、ＣＰＵ１１及び画像処理装置１４によってそれぞれどのような処理を負担するかはハードウエアの構成に依存して大きく相違する。そこで、本実施形態では、ＣＰＵ１１及び画像処理装置１４を一体のコンピュータとみなして説明を続ける。バッファメモリ１５は画像処理装置１４に描画専用のメモリとして設けられた例を示しているが、メインメモリとしてのＲＡＭ１３上にバッファメモリが確保されてもよい。
【００２０】
サウンド処理装置１６は、ＤＶＤ−ＲＯＭ２５から読み出された音声、楽音等のデータや音源データ等を再生してスピーカ２０から出力させる。読取装置１８は、ＣＰＵ１１からの指示に従ってＤＶＤ−ＲＯＭ２５上に記録されたプログラムやデータを読み取り、その読み取った内容に対応した信号を出力する。ＤＶＤ−ＲＯＭ２５には、本発明に係る画像の表現方法の実施に必要なプログラムやデータが記録されている。モニタ１９には家庭用のテレビ受像機が、スピーカ２０にはそのテレビ受像機の内蔵スピーカが一般に使用される。さらに、ＣＰＵ１１にはバス２４を介して入力装置２２及び外部記憶装置２３がそれぞれ接続される。外部記憶装置２３は例えば不揮発性の半導体メモリ、ハードディスク、光磁気ディスク等の書換えが可能な記憶装置である。このような構成はあくまで一例であり、本発明の画像の生成方法が適用されるコンピュータの構成は適宜変更されてよい。
【００２１】
記憶媒体としてのＤＶＤ−ＲＯＭ２５に記録されるプログラムには、上述した方法により影を含んだシーンを構築してその画像を生成するために必要な手順を記述したモジュールが含まれる。また、ＤＶＤ−ＲＯＭ２５に記録されるデータには、上述した方法を実現するために必要なデータとして、各種のオブジェクトを構成するポリゴンモデルのデータや各種のテクスチャのデータが含まれる。
【００２２】
影を含んだ画像を生成するためのプログラムモジュールは、各フレームの画像データを生成する処理において、本発明に従って影を表現する必要がある場合に呼び出されてＣＰＵ１１により実行される。なお、影テクスチャの生成に拘わる部分以外の処理には公知の技術をそのまま利用することができ、本明細書ではそれらの説明を省略する。
【００２３】
図５は影を含んだ画像を描画するためにゲーム機のコンピュータが実行する処理の手順を示すフローチャートである。影のテクスチャを利用した画像を描画する場合には、まず次のフレームで描画すべきシーンに含まれる各種のオブジェクトから、影生成用のオブジェクトを特定する（ステップＳ１）。次に、バッファメモリ１５上に設定されたフレームバッファ及びＺバッファをそれぞれ影テクスチャのレンダリング用のバッファとして設定する（ステップＳ２）。その後、仮想３次元空間に配置されるカメラを光源から影生成用オブジェクトに向けられたものに設定する（ステップＳ３）。これは、光源からの影生成用オブジェクトとその他のオブジェクトとの前後関係を正しく判断するためである。このときの仮想カメラの位置を表現するマトリクスは、後に影テクスチャをマッピングする際のＵＶ変換において参照される。
【００２４】
カメラの設定後は、影テクスチャレンダリング用のフレームバッファ及びＺバッファをそれぞれ初期化する（ステップＳ４）。続いて、影テクスチャが投影される候補のオブジェクトをテクスチャバッファに仮想的にレンダリングし、それぞれのオブジェクトの仮想カメラからの奥行き（距離）に従ってＺバッファを更新する（ステップＳ５）。仮想的としたのは、バッファ上に実際にオブジェクトを描画するのではなく、レンダリング処理を利用してＺバッファのみを更新するためである。影テクスチャが投影される候補（被投影候補）のオブジェクトは、影生成用オブジェクトの周辺の所定範囲に含まれる全てのオブジェクトとしてよい。所定範囲は、例えば仮想３次元空間における仮想カメラの撮影範囲に限定してもよいし、影生成用オブジェクトの周囲の撮影範囲よりもさらに絞られた範囲に限定してもよい。
【００２５】
以上の処理により、影が投影される候補としてのオブジェクトの奥行き情報がＺバッファに記憶される。このＺバッファが記憶する奥行き情報を参照して影生成用オブジェクトを影テクスチャレンダリング用バッファにレンダリングする（ステップＳ６）。このとき、影生成用オブジェクトと光源との間に被投影候補のオブジェクトが存在している部分についてはＺバッファにより奥行きの浅い方が優先されるので、影生成用オブジェクトは描画されない。しかも、被投影候補のオブジェクトは先に述べたようにバッファにはレンダリングされない。このような処理により、図３に示したように部分的な影テクスチャを生成することができる。生成された影テクスチャは例えばバッファメモリ１５のオフスクリーン領域に一時的に記憶される。
【００２６】
この後、フレームバッファ及びＺバッファをそれぞれ通常の描画用に設定し（ステップＳ７）、カメラを通常のカメラに戻す（ステップＳ８）。つまり、カメラの視点及び撮影方向を次フレームに対応したものに戻す。この後、戻されたカメラの視点及び撮影方向に基づいて、次フレームのシーンをフレームバッファ上に描画する（ステップＳ９）。この場合において、影生成用オブジェクトに関しては、先に生成された影テクスチャをカメラの視点及び撮影方向に対応したＵＶ変換を行いながらマッピングする。これにより、正しく影が表現された画像が生成される。
【００２７】
その後、未処理の影生成用オブジェクトが存在するか否か判別し（ステップＳ１０）、あればステップＳ１へ処理を戻す。ステップＳ１０にて未処理の影生成用オブジェクトが存在しないと判断された場合に図５の処理を終える。
【００２８】
以上の実施形態はあくまで本発明の一例であり、本発明は種々の形態で実施してよい。例えば、被投影候補のオブジェクトの奥行き情報は他の方法で取得してもよい。
【００２９】
【発明の効果】
以上に説明したように、本発明の画像の描画方法によれば、影生成オブジェクトの周囲に配置されるオブジェクトの奥行き情報を参照して影のテクスチャを描いているから、影生成用オブジェクトと他のオブジェクトとの前後関係を考慮した正確な影の描画を行うことができる。例えば光源と影生成オブジェクトの間に配置されて遮蔽物として作用するオブジェクトによって隠される部分は影テクスチャとして描かないようにすれば、その遮蔽物上に背後の影が投影されるような不自然な描画が行われるおそれがなくなる。
【図面の簡単な説明】
【図１】本発明の一実施形態において仮想３次元空間に構築されたシーンの一例を示す図。
【図２】本発明に従って描画される画像の具体例を示す図。
【図３】図２の画像に対応して生成される影のテクスチャの例を示す図。
【図４】本発明を実施するためのコンピュータの一例であるゲーム機のブロック図。
【図５】図４のゲーム機により実行される影を含んだ画像の描画処理の手順を示す図。
【符号の説明】
１  仮想３次元空間
２  影生成用オブジェクト
３，４  被投影候補のオブジェクト
５  影テクスチャ
６  視点
【図１】
0003635037.tif 000002
【図２】
0003635037.tif 000003
【図３】
0003635037.tif 000004
【図４】
0003635037.tif 000005
【図５】
0003635037.tif 000006