JP4193979B2 - シャドウボリューム生成プログラム及びゲーム装置 - Google Patents

シャドウボリューム生成プログラム及びゲーム装置 Download PDF

Info

Publication number
JP4193979B2
JP4193979B2 JP2003072552A JP2003072552A JP4193979B2 JP 4193979 B2 JP4193979 B2 JP 4193979B2 JP 2003072552 A JP2003072552 A JP 2003072552A JP 2003072552 A JP2003072552 A JP 2003072552A JP 4193979 B2 JP4193979 B2 JP 4193979B2
Authority
JP
Japan
Prior art keywords
shadow
shadow volume
value
buffer
light source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003072552A
Other languages
English (en)
Other versions
JP2004280596A (ja
Inventor
敬三 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2003072552A priority Critical patent/JP4193979B2/ja
Priority to US10/635,652 priority patent/US20040186631A1/en
Publication of JP2004280596A publication Critical patent/JP2004280596A/ja
Application granted granted Critical
Publication of JP4193979B2 publication Critical patent/JP4193979B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Description

【0001】
【発明の属する技術分野】
本発明はシャドウボリューム生成プログラムに関し、より特定的には、シャドウボリューム技法において利用されるシャドウボリュームを生成するためのシャドウボリューム生成プログラムに関する。
【0002】
【従来の技術】
シャドウボリューム技法とは、主に影の表現に使われる技法のことであって、影を落とすモデルによって光が遮られる空間(一般にシャドウボリュームと呼ばれる。)に対応した空間モデル(この空間モデル自体がシャドウボリュームと呼ばれることもある。)を用意し、この空間モデルを特殊な方法でレンダリングすることによって(この空間モデル自身は描かれない)、影が落ちるモデルの、空間モデルの内部に位置する部分の色だけを暗くする方法である(例えば、特許文献1参照。)。例えば影を落とす物体が球体であれば、その物体によって光が遮られる空間は円柱状となる。
【0003】
以下の説明では、影を落とすモデルを「影オブジェクト」と呼び、影の形を決定する空間モデルを「シャドウボリューム」と呼ぶことにする。
【0004】
このシャドウボリューム技法で問題となるのが、シャドウボリュームの形をどのように決めるかである。シャドウボリュームの形は、影オブジェクトの形状アニメーションや、光源方向の変化によって様々に変化する。
【0005】
シャドウボリュームの形を決定する従来の方法の一例として、影オブジェクトを光源方向から見たときに表を向いているポリゴンと裏を向いているポリゴンに共有されているエッジを輪郭線としてシャドウボリュームの形を決定するものがある。
【0006】
例えば、図15(a)に示すように斜めに傾いた直方体(影オブジェクト)に光源からの光が当たっている場合、影オブジェクトを光源から見ると図15(b)のようになっている。従来の方法では、この影オブジェクトにおいて、光源に対して表向きのポリゴン(図15(c))と、光源に対して裏向きのポリゴン(図15(d))をそれぞれ検出し、光源に対して表向きのポリゴンと、光源に対して裏向きのポリゴンによって共有されるエッジを抽出する(図15(e)の実線)。このエッジがシャドウボリュームの断面の輪郭線となる。つまり、図15(e)の実線で示した形を断面に持つ筒状のモデルがシャドウボリュームとして使用される。
【0007】
【特許文献1】
特開2002−24854号公報
【0008】
【発明が解決しようとする課題】
上記のような従来の方法では、まず、各エッジを共有する面を示すデータと、全ての面の法線情報が必要となる。これらは通常のグラフィックデータには含まれず、特別なデータコンバータを作成した上で、メモリ上に置いておくことになる。
【0009】
そして、実際の処理では様々な例外処理を必要とするので、専用のプロセッサを実現できず、CPUによる時間をかけた処理が必要となる。
【0010】
具体的には、全てのエッジについて、そのエッジに接している面の法線とライト方向との内積を計算し、ライト方向に対して表を向いた面と裏を向きた面に共有されるエッジが選び出される。そして、選び出されたエッジのうち、同一の頂点でつながっているものが順次選出され、最終的に輪となる1つながりの線状のデータが作成される。これがシャドウボリュームの断面のデータとなる。そして、この断面をライト方向に伸ばして筒状にしたものがシャドウボリュームの形状データとなる。
【0011】
しかしながら、このようにしてシャドウボリュームが難なく作成されるのはまれである。例えば、図16(a)に示すように、直方体に真上から光が当たる場合のように影オブジェクトが光源方向に対して平行な面を有する場合には、図16(b)に示すように、輪郭線として複数のエッジが選択可能となり、エッジの選択が困難となる。また、図16(c)に示すように、雪ダルマのような凹みのある物体に斜めから光が当たる場合には、図16(d)に示すように、輪郭線が途切れてしまうため、特別な処理が必要となる。また、図16(e)に示すように、雪ダルマのような凹みのある物体に真上から光が当たる場合には、複数の輪郭線が検出され、その結果、シャドウボリュームが複数発生して処理の手続きが倍になる。
【0012】
一般に、上記のような異常な状態は頻繁に発生し、これに対処するためにはたくさんの例外処理プログラムを用意したり、元々のデータに様々な細工をしたりする必要がある。しかしながら、このような作業はとても困難であり、処理負担も大きい。特にゲーム機においてゲーム画像を生成する場合には、1フレーム(1/30秒または1/60秒)内にゲーム画像を生成する必要があり、このように負担の大きい処理を採用することはできない。そこで普通は、そのような異常な状態が絶対に起こり得ないような単純な形状データをシャドウボリューム作成用に用意し、これを利用してシャドウボリュームが作成される。しかしながらこのような方法で影を描画した場合、本来の影とは異なり、かなり省略された影しか表現できない。
【0013】
それゆえに本発明は、例外的な処理を必要とせず、常に一定の簡単な処理でシャドウボリュームを作成することができるシャドウボリューム生成プログラムを提供することを目的とする。
【0014】
【課題を解決するための手段】
上記の課題を解決するために本発明は以下の構成を採用した。ただし、括弧内の参照符号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0015】
本発明のシャドウボリューム生成プログラムは、3次元の仮想空間に配置されたオブジェクト(2)が落とす影を描画するために利用されるシャドウボリューム(4)をコンピュータ(10、11)に生成させるためのプログラムである。このプログラムは、コンピュータ(10、11)に、まず、仮想空間に設置された光源を視点として、少なくとも影を落とすオブジェクト(2)を含む所定領域内の各ピクセルに対応するZ値をZバッファ(15)に書き込むステップ(S201)を実行させ、続いて、シャドウボリュームの元となる平面状オブジェクト(3)を構成する複数のポリゴンの各頂点の厚み方向(Y軸方向)に関する位置(py)を、Zバッファ(15)に書き込まれた各ピクセルのZ値(Zvalue)に応じて決定する(S206)ことによって、この平面状オブジェクト(3)からシャドウボリューム(4)を生成するステップを実行させる。
【0016】
本発明のゲーム装置は、3次元の仮想空間に配置されたオブジェクト(2)が落とす影を描画するために利用されるシャドウボリューム(4)を生成するものであって、Zバッファ(15)と、Z値書込手段(ステップS201を実行するCPU10ないしGPU11)と、シャドウボリューム生成手段(ステップS204を実行するCPU10ないしGPU11)とを備える。Z値書込手段は、仮想空間に設置された光源を視点として、少なくとも影を落とすオブジェクト(2)を含む所定領域内の各ピクセルのZ値をZバッファ(15)に書き込む。シャドウボリューム生成手段は、シャドウボリュームの元となる平面状オブジェクト(3)を構成する複数のポリゴンの各頂点の厚み方向(Y軸方向)に関する位置(py)を、Z値書込手段によってZバッファ(15)に書き込まれた各ピクセルのZ値(Zvalue)に応じて決定することによって、この平面状オブジェクト(3)からシャドウボリューム(4)を生成する。
【0017】
【発明の実施の形態】
以下、本発明の一実施形態について説明する。ただし、実施形態について詳細に説明する前に、まず、本発明の原理について簡単に説明する。
【0018】
本発明は、あたかも非常に柔らかい1枚の布を影オブジェクトに対して光源方向から被せたときの布の形状を、シャドウボリュームの形状として利用するという発想に基づいている。
【0019】
例えば、図1(a)に示すように、ひょうたん形の影オブジェクトに対して上方から光が当たっているときに、この影オブジェクトに対して光源の方向から柔らかな布を被せると(図1(b)、図1(c))、最終的に図1(d)の状態になる。図1(d)において布によって囲まれた空間は、ひょうたん形の影オブジェクトのシャドウボリュームと一致するため、この布の形状をシャドウボリュームの形状として利用することによって、正確な形状のシャドウボリュームが得られることになる。他の例として、ドーナツ型の影オブジェクトに対して光が当たっているときの様子を図1(e)〜図1(h)に示す。このようにして生成されたシャドウボリュームを用いてシャドウボリューム技法による影の描画を行うと、図2(a)および図2(b)に実線で示すような影を表示することができる。
【0020】
以下、本実施形態の一実施形態に係るゲームシステムについて説明する。
図3は、ゲームシステムの構成を示す外観図であり、図4はそのブロック図である。図3、図4に示すように、ゲームシステムは、ゲーム機本体100、DVD−ROM300、外部メモリカード400、コントローラ200、スピーカ600およびTVモニタ500を備える。DVD−ROM300および外部メモリカード400は、ゲーム機本体100に着脱自在に装着される。コントローラ200は、通信ケーブルを介して、ゲーム機本体100に設けられた複数(図3では4つ)のコントローラポート用コネクタのいずれかに接続される。TVモニタ500およびスピーカ600は、AVケーブル等によって接続される。なお、ゲーム機本体100とコントローラ200との通信は無線通信であってもよい。以下、図4を参照しながら、ゲームシステムの各部についてより詳細に説明する。
【0021】
DVD−ROM300は、ゲームプログラムや後述するシャドウボリューム生成プログラムやオブジェクトデータ等を固定的に記憶している。プレイヤがゲームをプレイするとき、DVD−ROM300はゲーム機本体100に装着される。なお、プログラム等を記憶する手段として、DVD−ROM300の代わりに例えばCD−ROM、MO、メモリカード、ROMカートリッジ等の外部記憶媒体を用いてもよい。
【0022】
外部メモリカード400は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームのセーブデータ等のデータを記録する。
【0023】
ゲーム機本体100は、DVD−ROM300に記録されているプログラムを読み出し、読み出したプログラムに応じた処理を行う。
【0024】
コントローラ200は、プレイヤがゲーム操作に関する入力を行うための入力装置であり、複数の操作スイッチを有する。コントローラ200は、プレイヤによる操作スイッチの押圧等に応じて操作データをゲーム機本体100に出力する。
【0025】
TVモニタ500は、ゲーム機本体100から出力された画像データを画面に表示する。なお、スピーカ600は、典型的にはTVモニタ500に内蔵されており、ゲーム機本体100から出力されたゲーム中の音声を出力する。
【0026】
次に、ゲーム機本体100の構成について説明する。図4において、ゲーム機本体100には、CPU10およびそれに接続されるメモリコントローラ20が設けられる。さらにゲーム機本体100において、メモリコントローラ20は、GPU(グラフィックスプロセッシングユニット)11と、メインメモリ17と、DSP18と、各種インターフェース(I/F)21〜24,26とに接続される。メモリコントローラ20は、これら各構成要素間のデータ転送を制御する。
【0027】
ゲーム開始の際、まず、DVDドライブ25は、ゲーム機本体100に装着されたDVD−ROM300を駆動する。DVD−ROM300に記憶されているゲームプログラムは、DVDディスクI/F26およびメモリコントローラ20を介して、メインメモリ17に読み込まれる。このメインメモリ17上のプログラムをCPU10が実行することによってゲームが開始される。ゲーム開始後、プレイヤは、操作スイッチを用いてコントローラ200に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ200は、操作データをゲーム機本体100に出力する。コントローラ200から出力される操作データは、コントローラI/F21およびメモリコントローラ20を介してCPU10に入力される。CPU10は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、GPU11やDSP18が用いられる。また、サブメモリ19は、DSP18が所定の処理を行う際に用いられる。
【0028】
GPU11は、ジオメトリユニット12およびレンダリングユニット13を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ14やZバッファ15やステンシルバッファ16として利用される。ジオメトリユニット12は、仮想三次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル(例えばポリゴンで構成されるオブジェクト)の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット13は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについて各ピクセルごとのカラーデータ(RGBデータ)をカラーバッファ14に書き込むことによって、ゲーム画像を生成するためのものである。また、カラーバッファ14は、レンダリングユニット13によって生成されたゲーム画像データ(RGBデータ)を保持するために確保されたメモリ領域である。Zバッファ15は、3次元の視点座標から2次元のスクリーン座標に変換する際に失われる視点からの奥行情報を保持するために確保されたメモリ領域である。ステンシルバッファ16は、シャドウボリューム技法によって影領域を判定するときに利用されるメモリ領域である。GPU11は、これらバッファを用いてTVモニタ500に表示すべき画像データを生成し、メモリコントローラ20およびビデオI/F22を介して画像データをTVモニタ500に適宜出力する。なお、ゲームプログラム実行時にCPU10において生成される音声データは、メモリコントローラ20からオーディオI/F24を介してスピーカ600に出力される。なお本実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ17の一部を画像処理用のメモリとして利用する方式(UMA:Unified Memory Architecture)を使うようにしてもよい。
【0029】
図5に、DVD−ROM300のメモリマップを示す。DVD−ROM300には、ゲームプログラムや、シャドウボリューム生成プログラムや、オブジェクトデータなどが格納されている。なお、シャドウボリューム生成プログラムは、ゲームプログラムに含まれていても構わない。オブジェクトデータには、影を落とすオブジェクトやその他のオブジェクトのデータが含まれる。
【0030】
以下、図6および図7のフローチャートを参照して本ゲームシステムの影描画に関する動作について説明する。
【0031】
図6において、影描画処理が開始すると、CPU10は、まずカラーバッファ14およびZバッファ15をクリアする(S10)。そして前述のシャドウボリューム生成プログラムに基づいて、シャドウボリューム生成処理を実行する(S20)。以下、このシャドウボリューム生成処理の詳細について図7を参照して説明する。
【0032】
図7において、シャドウボリューム生成処理が開始すると、GPU11は、仮想空間に配置された光源を視点として、影を落とすオブジェクトだけをレンダリングする(S201)。つまり、図8(a)に示すように、板1の上に浮かんでいる影を落とすオブジェクト2に対して真上から光があたっている場合、この影を落とすオブジェクト2を真上から見たときのシーンをレンダリングする。その結果、カラーバッファ14には図8(b)に示すような2次元の画像データが書き込まれ、一方、Zバッファ15には、その2次元の画像データの各ピクセルに対応したZ値(視点からオブジェクトまでの距離に応じた値)が書き込まれる。なお、ここでは説明を容易にするためにカラーバッファ14に2次元の画像データが書き込まれるとしたが、実際にはZバッファ15にZ値が書き込まれさえすればよく、カラーバッファ14に画像データを書き込む必要はない。
【0033】
ステップS201のレンダリングが完了すると、CPU10は、つづくステップS202〜S214の処理によって、図8(c)に示す平面状オブジェクト3(図1(b)に示した柔らかな布に相当)から図8(d)に示すメッシュモデル4を生成する処理を実行する。本実施形態ではこのメッシュモデル4がシャドウボリュームとして用いられる。
【0034】
平面状オブジェクト3は複数のポリゴンによって構成され、これらのポリゴンの頂点でもある複数の頂点を有している。そして各頂点の位置は、X座標とZ座標の組み合わせにより規定されている。本実施形態では、平面状オブジェクト3の各頂点の座標がそれぞれ下記のように規定されているものとする。
(0,0) 、(1,0) 、(2,0) 、・・・、(xm,0)
(0,1) 、(1,1) 、(2,1) 、・・・、(xm,1)
(0,2) 、(1,2) 、(2,2) 、・・・、(xm,2)
(0,3) 、(1,3) 、(2,3) 、・・・、(xm,3)
・ ・ ・ ・
・ ・ ・ ・
(0,zm)、(1,zm)、(2,zm)、・・・、(xm,zm)
なお以下の説明では、メッシュモデル4のある頂点Pについて、その元となった平面状オブジェクト3の頂点の座標(x,z)を、メッシュモデル4の頂点Pの基本座標と称する。そして、特に基本座標のうちのX座標およびZ座標を、それぞれ基本X座標および基本Z座標と称する。
【0035】
以下、ステップS202以降の処理について具体的に説明する。
なお、図7に示すフローチャートにおいて、
・xおよびzは、それぞれ基本X座標および基本Z座標を示す変数であり、
・xmおよびzmは、それぞれ基本X座標の上限値および基本Z座標の上限値を示す変数であり、
・Zadrsは、Zバッファ15のアドレスを示す変数であり、
・Zvalueは、Zバッファ15の値を示す変数であり、
・Padrsは、メッシュモデル4の頂点座標を格納するメインメモリ17のアドレスを示す変数であり、
・px、pyおよびpzは、メッシュモデル4のX座標、Y座標およびZ座標をそれぞれ示す変数である。
【0036】
また、図7に示すフローチャートにおいて、
・cal_Zadrs()は、基本座標から、対応するZバッファ15のアドレスを求める関数であり、
・cal_Padrs()は、基本座標から、対応するメッシュモデル4の頂点データ格納アドレスを求める関数であり、
・read_Zbuf()は、Zバッファアドレスから、そこのZ値を読み込む関数であり、
・cal_height()は、Z値から適切な高さの値を計算する関数であり、
・scale_mesh()は、メッシュモデル4の各頂点がZ値に応じて(つまりZ値に対して比例的に変化するように、またはZ値に応じてべき乗的に変化するように、または予め用意された変換テーブルに基づいてZ値に応じて所定の増加率で変化するように)放射状に移動するように(つまり光源から遠い頂点ほど大きく移動するように)、基本X座標または基本Z座標を修正する関数であり、
・store_pos()は、X座標、Y座標およびZ座標をメッシュモデル4の頂点データ格納領域に格納する関数である。
【0037】
ステップS202において、CPU10は、基本Z座標を初期化し、続くステップS203においてさらに基本X座標を初期化する。つまり、メッシュモデル4の形状を規定する複数の頂点のうち、基本座標が(0,0)である頂点が最初の処理対象頂点として選ばれることになる。
【0038】
ステップS204で、CPU10は、処理対象頂点の基本座標(x,y)から、この基本座標に対応するZバッファ15のアドレスおよび頂点データの格納アドレスを求める。そして、このZバッファ15のアドレスのZ値を読み込む(S205)。つまり、カラーバッファ14に格納されている図8(b)に示す2次元画像を構成するピクセルのうち、処理対象頂点に対応するピクセルのZ値が、Zバッファ15より読み出されることになる。CPU10は、こうして読み出したZ値から、処理対象頂点のY座標(つまり平面状オブジェクト3の厚み方向に関する位置)を決定する(S206)。Z値から処理対象頂点のY座標(py)を求めるには、例えば図9に示すように、視点(光源)から遠い側のクリッピングプレーンに位置するZ値(例えば図9では1)と、レンダリングされたZ値(Zvalue)の差を求め、それをY座標軸の単位系にスケーリングすればよい。
【0039】
ステップS206で処理対象頂点のY座標が決定されると、次にCPU10は、光源が平行光源であるか点光源であるかを判断する(S207)。そして、光源が平行光源であった場合にはステップS208に進み、光源が点光源であった場合にはステップS209に進む。なお、光源として平行光源のみもしくは点光源のみしか用意されていないシステムにおいては、ステップS207が不要であることは言うまでもない。
【0040】
光源が平行光源だった場合には、図8(d)に示すように、処理対象頂点のX座標(px)およびZ座標(pz)として、それぞれ基本X座標(x)および基本Z座標(z)をそのまま利用する(S208)。一方、光源が点光源だった場合には、ステップS205において読み出されたZ値(Zvalue)に応じて基本Z座標(x)および基本Z座標(z)を修正したものを、処理対象頂点のX座標(px)およびZ座標(pz)として設定する(S209)。このように光源の種類によって処理が変わる理由について図10を参照して説明する。
【0041】
図10(a)に示すように、影を落とすオブジェクトが平行光源によって照らされている場合には、ステップS201のレンダリング処理において、奥行きが変わっても見える大きさが同じである正射影によって影を落とすオブジェクトが描画され、図10(e)に示すように、点光源によって照らされている場合には、ステップS201のレンダリング処理において、奥に位置するほど小さく見える透視射影によって影を落とすオブジェクトが描画される。その結果、平行光源の場合と点光源の場合とで、カラーバッファ14に格納される2次元画像データの内容が、それぞれ図10(b)および図10(f)に示すように異なることになる。これは、Zバッファ15に格納されるZ値の内容についても同様である。そして、そのようなZ値に基づいてステップS206が実行された結果、平面状オブジェクトの厚み方向に関する位置が、平行光源の場合には図10(c)に示すように決定され、点光源の場合には図10(g)に示すように決定される。ここで、平行光源の場合には、図10(c)のメッシュモデルをそのまま図10(d)に示すようにシャドウボリュームとして利用することが可能であるが、点光源の場合には、図10(g)のメッシュモデルをそのままシャドウボリュームとして利用することができない。つまり点光源の場合には、図10(h)に示すように、メッシュモデルの各頂点が、平面状オブジェクト3の面方向に関してZ値に応じて放射状に移動するように(つまり光源から遠い頂点ほど大きく移動するように)、基本X座標または基本Z座標を修正する。なお、放射状に移動するときの中心軸は、ステップS201において光源を視点として影を落とすオブジェクトをレンダリングしたときに生成された2次元画像の中心点に対応する。このようにして生成されたメッシュモデルは、図10(i)に示すようにシャドウボリュームとして利用可能となる。
【0042】
ステップS208またはステップS209において処理対象頂点のX座標およびZ座標が決定されると、CPU10は、処理対象頂点の座標をステップS204で求められたアドレスに格納する(S210)。その後、基本X座標(x)をインクリメントし(S211)、基本X座標が最大値(xm)を超えるまで処理対象頂点を順次変更しながらステップS204〜S212の処理を繰り返す(ステップS212でNo)。そして、基本X座標が最大値を超えた場合には(ステップS212でYes)、基本Z座標(z)をインクリメントし(S213)、続いて基本Z座標が最大値(zm)を超えたかどうかを判断する(S214)。判断の結果、Z座標値が最大値を超えていなかった場合には(ステップS214でNo)ステップS203に戻り、Z座標値が最大値を超えていた場合には(これはメッシュモデル4の全頂点の頂点データがメインメモリ17に格納されたことを意味する)、シャドウボリューム生成処理を終了し、図6のフローチャートに処理が戻る。
【0043】
図6において、シャドウボリューム生成処理が完了すると、GPU11は、Zバッファ15と、必要に応じてカラーバッファ14をクリアしてから(S30)、シーンをレンダリングする(S40)。ここでは通常のレンダリング処理が行われ、例えば図8(a)に示す板1および影を落とすオブジェクト2がレンダリングされる。
【0044】
シーンのレンダリングが完了後、GPU11は、ステップS20で生成したメッシュモデル4をシャドウボリュームとして利用して、シャドウボリューム技法による影描画処理を実行する。具体的には、図11(a)に示す仮想空間において、図11(b)に示すメッシュモデル4が図11(c)のように仮想的に配置され、ステンシルバッファ16を用いたシャドウボリューム技法によって図11(d)に示す影の領域が抽出される。
【0045】
なお、本実施形態では、影を落とすオブジェクト2が上方から光に照らされている場合について説明したが、影を落とすオブジェクト2が斜め上方から光に照らされている場合についても同様に本発明を適用することができる。例えば、図12(a)のように、球状の影を落とすオブジェクト2に対して斜め上方から光があたっている場合、この影を落とすオブジェクト2を光源を視点としてレンダリングして得られる2次元画像は図12(b)のようになる。そして、レンダリングの結果としてZバッファ15に書き込まれているZ値に基づいて、平面状オブジェクト3の各頂点の厚み方向に関する位置が決定され、最終的に図12(c)に示すメッシュモデル4が得られる。このメッシュモデル4をシャドウボリュームとして利用して影描画を行うときには、まず図13(a)に示す仮想空間において、図13(b)に示すメッシュモデル4が図13(c)のように仮想的に配置される。つまり、光線方向と、メッシュモデル4の厚み方向(つまりY軸方向)とが平行になるようにメッシュモデル4を配置する。その後、ステンシルバッファ16を用いたシャドウボリューム技法によって図13(d)に示す影の領域が抽出される。
【0046】
また、本実施形態では、平面状オブジェクト3に基づいてシャドウボリュームを生成するとしたが、この平面状オブジェクト3が、例えば図14(a)に示すように立体オブジェクト5の一面を構成するものであっても構わない。この場合にも、本実施形態と同様に、Zバッファ15に書き込まれているZ値に基づいて平面状オブジェクト3の各頂点の厚み方向に関する位置を決定することによって、図14(b)に示すようなシャドウボリュームが得られ、このシャドウボリュームを利用して影描画を行うことができる。
【0047】
以上のように、本実施形態によれば、影を落とすオブジェクトの形状の複雑さに関係なく、常に同じ処理によってどんな形状のオブジェクトのシャドウボリュームも生成することができる。したがって、例外処理が発生せず、プログラムが少量化されると同時に安定した処理が可能となる。さらに、本実施形態で行われる処理は、グラフィックプロセッサの機能を利用して実行することが可能であるため、グラフィックプロセッサに処理を任せることによって処理速度が大幅に向上する。
【0048】
なお本実施形態ではゲームプログラムはDVD−ROM300を介してゲーム機本体100に供給されるとしたが、これに限らず、DVD−ROM300以外の他のコンピュータ読み取り可能な記録媒体(例えばCD−ROM、MO、メモリカード、ROMカートリッジ等)に格納されてゲーム機本体100に供給されても構わない。また、予めゲーム機本体100に組み込まれていても構わない。また、インターネットなどの通信回線を通じてゲーム機本体100に供給されても構わない。
【0049】
【発明の効果】
以上のように、本発明によれば、例外的な処理を必要とせず、常に一定の簡単な処理でシャドウボリュームを作成することができる。
【図面の簡単な説明】
【図1】本発明の原理を説明するための図である。
【図2】シャドウボリュームと影の関係を示す図である。
【図3】本発明の一実施形態に係るゲームシステムの外観図である。
【図4】ゲーム機本体100の構成を示すブロック図である。
【図5】DVD−ROM300のメモリマップである。
【図6】影描画処理の流れを示すフローチャートである。
【図7】シャドウボリューム生成処理の流れを示すフローチャートである。
【図8】シャドウボリューム生成処理の具体例を示す図である。
【図9】Z値からメッシュモデルの各頂点のY座標を決定する具体例を示す図である。
【図10】光源が平行光源である場合と点光源である場合との処理の相違点を説明するための図である。
【図11】シャドウボリュームを用いた影描画処理の具体例を示す図である。
【図12】影を落とすオブジェクトの斜め上方から光があたっている場合のシャドウボリューム生成処理の具体例を示す図である。
【図13】影を落とすオブジェクトの斜め上方から光があたっている場合のシャドウボリュームの配置方法を説明するための図である。
【図14】平面状オブジェクトが立体オブジェクトの一部である場合のシャドウボリューム生成処理の具体例を示す図である。
【図15】従来のシャドウボリューム技法における輪郭線の抽出処理を示す図である。
【図16】従来のシャドウボリューム技法において抽出される輪郭線の形を示す図である。
【符号の説明】
1 板
2 影を落とすオブジェクト
3 平面状オブジェクト
4 メッシュモデル
5 立体オブジェクト
10 CPU
11 GPU
12 ジオメトリユニット
13 レンダリングユニット
14 カラーバッファ
15 Zバッファ
16 ステンシルバッファ
17 メインメモリ
18 DSP
19 サブメモリ
20 メモリコントローラ
21 コントローラI/F
22 ビデオI/F
23 外部メモリI/F
24 オーディオI/F
25 DVDドライブ
26 DVDディスクI/F
100 ゲーム機本体
200 コントローラ
300 DVD−ROM
400 外部メモリカード
500 TVモニタ
600 スピーカ

Claims (6)

  1. 3次元の仮想空間に配置されたオブジェクトが落とす影を描画するために利用されるシャドウボリュームをコンピュータに生成させるためのシャドウボリューム生成プログラムであって、前記コンピュータに、
    仮想空間に設置された光源を視点として、少なくとも前記影を落とすオブジェクトを含む所定領域内の各ピクセルに対応するZ値をZバッファに書き込むステップと、
    前記シャドウボリュームの元となる平面状オブジェクトを構成する複数のポリゴンの各頂点の厚み方向に関する位置を、前記Zバッファに書き込まれた各ピクセルのZ値に応じて決定することによって、該平面状オブジェクトから前記シャドウボリュームを生成するステップとを実行させる、シャドウボリューム生成プログラム。
  2. 前記平面状オブジェクトの形状は、X座標およびZ座標の組み合わせが異なる複数の頂点によって規定されており、
    前記シャドウボリューム生成ステップでは、前記平面状オブジェクトの各頂点のY座標が、前記Zバッファに書き込まれた各ピクセルのZ値に応じて決定されることを特徴とする、請求項1に記載のシャドウボリューム生成プログラム。
  3. 前記光源が点光源であり、
    前記シャドウボリューム生成ステップは、前記平面状オブジェクトの各頂点の面方向に関する位置を、前記Zバッファに書き込まれた各ピクセルのZ値に応じて決定するステップを含むことを特徴とする、請求項1に記載のシャドウボリューム生成プログラム。
  4. 前記平面状オブジェクトの形状は、X座標およびZ座標の組み合わせが異なる複数の頂点によって規定されており、
    前記シャドウボリューム生成ステップでは、前記平面状オブジェクトの各頂点のX座標およびZ座標が、前記Zバッファに書き込まれた各ピクセルのZ値に応じて決定されることを特徴とする、請求項3に記載のシャドウボリューム生成プログラム。
  5. 前記シャドウボリューム生成ステップで生成されたシャドウボリュームを、該シャドウボリュームの厚み方向が前記光源の光線方向と一致するように前記仮想空間に仮想的に配置するステップと、
    仮想的に配置したシャドウボリュームを用いて前記影を落とすオブジェクトの影を描画するステップとをさらに前記コンピュータに実行させることを特徴とする、請求項1に記載のシャドウボリューム生成プログラム。
  6. 3次元の仮想空間に配置されたオブジェクトが落とす影を描画するために利用されるシャドウボリュームを生成するゲーム装置であって、
    Zバッファと、
    仮想空間に設置された光源を視点として、少なくとも前記影を落とすオブジェクトを含む所定領域内の各ピクセルのZ値を前記Zバッファに書き込むZ値書込手段と、
    前記シャドウボリュームの元となる複数のポリゴンからなる平面状オブジェクトの各頂点の厚み方向に関する位置を、前記Z値書込手段によって前記Zバッファに書き込まれた各ピクセルのZ値に応じて決定することによって、該平面状オブジェクトから前記シャドウボリュームを生成するシャドウボリューム生成手段とを備えるゲーム装置。
JP2003072552A 2003-03-17 2003-03-17 シャドウボリューム生成プログラム及びゲーム装置 Expired - Lifetime JP4193979B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003072552A JP4193979B2 (ja) 2003-03-17 2003-03-17 シャドウボリューム生成プログラム及びゲーム装置
US10/635,652 US20040186631A1 (en) 2003-03-17 2003-08-07 Storage medium storing a shadow volume generation program, game device, and shadow volume generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003072552A JP4193979B2 (ja) 2003-03-17 2003-03-17 シャドウボリューム生成プログラム及びゲーム装置

Publications (2)

Publication Number Publication Date
JP2004280596A JP2004280596A (ja) 2004-10-07
JP4193979B2 true JP4193979B2 (ja) 2008-12-10

Family

ID=32984710

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003072552A Expired - Lifetime JP4193979B2 (ja) 2003-03-17 2003-03-17 シャドウボリューム生成プログラム及びゲーム装置

Country Status (2)

Country Link
US (1) US20040186631A1 (ja)
JP (1) JP4193979B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100632535B1 (ko) * 2004-12-29 2006-10-11 엘지전자 주식회사 이동통신단말기용 삼차원 그래픽 엔진 및 그래픽 제공 방법
JP3926828B1 (ja) * 2006-01-26 2007-06-06 株式会社コナミデジタルエンタテインメント ゲーム装置、ゲーム装置の制御方法及びプログラム
JP2008090673A (ja) * 2006-10-03 2008-04-17 Mitsubishi Electric Corp キャッシュメモリ制御装置
US8115767B2 (en) * 2006-12-08 2012-02-14 Mental Images Gmbh Computer graphics shadow volumes using hierarchical occlusion culling
US8125498B2 (en) * 2007-01-03 2012-02-28 Siemens Medical Solutions Usa, Inc. Generating a 3D volumetric mask from a closed surface mesh
KR100865583B1 (ko) 2007-02-21 2008-10-28 충북대학교 산학협력단 컴퓨터 그래픽 시스템에서의 동영상의 반사 효과 처리 방법
JP4852555B2 (ja) * 2008-01-11 2012-01-11 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理方法、ならびに、プログラム
KR20120062170A (ko) * 2010-12-06 2012-06-14 삼성전자주식회사 가상 모니터 제어장치 및 그 제어방법
WO2013006351A2 (en) * 2011-07-01 2013-01-10 3G Studios, Inc. Techniques for controlling game event influence and/or outcome in multi-player gaming environments
KR101265101B1 (ko) 2011-11-28 2013-05-20 주식회사 넥슨코리아 3d물체의 그림자 맞추기 게임 방법 및 그 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
US9600930B2 (en) * 2013-12-11 2017-03-21 Qualcomm Incorporated Method and apparatus for optimized presentation of complex maps
US10679404B2 (en) 2017-10-04 2020-06-09 Google Llc Shadows for inserted content
CN109949401A (zh) * 2019-03-14 2019-06-28 成都风际网络科技股份有限公司 一种移动平台的非静态物体非实时阴影渲染的方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4275413A (en) * 1978-03-30 1981-06-23 Takashi Sakamoto Linear interpolator for color correction
US4586038A (en) * 1983-12-12 1986-04-29 General Electric Company True-perspective texture/shading processor
US4625289A (en) * 1985-01-09 1986-11-25 Evans & Sutherland Computer Corp. Computer graphics system of general surface rendering by exhaustive sampling
US5361386A (en) * 1987-12-04 1994-11-01 Evans & Sutherland Computer Corp. System for polygon interpolation using instantaneous values in a variable
JPH0693181B2 (ja) * 1988-03-18 1994-11-16 株式会社日立製作所 表示装置
US5097427A (en) * 1988-07-06 1992-03-17 Hewlett-Packard Company Texture mapping for computer graphics display controller system
JPH0727581B2 (ja) * 1988-09-09 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 図形処理装置
US5016183A (en) * 1988-09-13 1991-05-14 Computer Design, Inc. Textile design system and method
US5255353A (en) * 1989-02-28 1993-10-19 Ricoh Company, Ltd. Three-dimensional shadow processor for an image forming apparatus
EP0423653B1 (en) * 1989-10-13 1997-08-06 Matsushita Electric Industrial Co., Ltd. Method and apparatus for compensating for color in color images
JPH0776991B2 (ja) * 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Nurbsデータ変換方法及び装置
GB2240015A (en) * 1990-01-15 1991-07-17 Philips Electronic Associated Texture memory addressing
US5377313A (en) * 1992-01-29 1994-12-27 International Business Machines Corporation Computer graphics display method and system with shadow generation
US5473736A (en) * 1992-06-08 1995-12-05 Chroma Graphics Method and apparatus for ordering and remapping colors in images of real two- and three-dimensional objects
JPH0778267A (ja) * 1993-07-09 1995-03-20 Silicon Graphics Inc 陰影を表示する方法及びコンピュータ制御表示システム
US5729672A (en) * 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
JP3052681B2 (ja) * 1993-08-06 2000-06-19 松下電器産業株式会社 3次元動画像生成装置
JPH07146952A (ja) * 1993-11-22 1995-06-06 Konami Kk 3次元画像処理装置
US5592597A (en) * 1994-02-14 1997-01-07 Parametric Technology Corporation Real-time image generation system for simulating physical paint, drawing media, and feature modeling with 3-D graphics
US5557712A (en) * 1994-02-16 1996-09-17 Apple Computer, Inc. Color map tables smoothing in a color computer graphics system avoiding objectionable color shifts
US5678037A (en) * 1994-09-16 1997-10-14 Vlsi Technology, Inc. Hardware graphics accelerator system and method therefor
US5561752A (en) * 1994-12-22 1996-10-01 Apple Computer, Inc. Multipass graphics rendering method and apparatus with re-traverse flag
US5649082A (en) * 1995-03-20 1997-07-15 Silicon Graphics, Inc. Efficient method and apparatus for determining texture coordinates for lines and polygons
US5704024A (en) * 1995-07-20 1997-12-30 Silicon Graphics, Inc. Method and an apparatus for generating reflection vectors which can be unnormalized and for using these reflection vectors to index locations on an environment map
US5870097A (en) * 1995-08-04 1999-02-09 Microsoft Corporation Method and system for improving shadowing in a graphics rendering system
US5867166A (en) * 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US5949428A (en) * 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5999189A (en) * 1995-08-04 1999-12-07 Microsoft Corporation Image compression to reduce pixel and texture memory requirements in a real-time image generator
US5740343A (en) * 1995-11-03 1998-04-14 3Dfx Interactive, Incorporated Texture compositing apparatus and method
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US5943058A (en) * 1996-01-25 1999-08-24 Silicon Graphics, Inc. Texture mapping circuit for performing data interpolations
US5739819A (en) * 1996-02-05 1998-04-14 Scitex Corporation Ltd. Method and apparatus for generating an artificial shadow in a two dimensional color image
US5966134A (en) * 1996-06-28 1999-10-12 Softimage Simulating cel animation and shading
US6018350A (en) * 1996-10-29 2000-01-25 Real 3D, Inc. Illumination and shadow simulation in a computer graphics/imaging system
US5870098A (en) * 1997-02-26 1999-02-09 Evans & Sutherland Computer Corporation Method for rendering shadows on a graphical display
JP2845857B2 (ja) * 1997-04-01 1999-01-13 コナミ株式会社 画像の半透明表示装置,半透明表示方法,及びコンピュータプログラムを記録した機械読取り可能な記録媒体
US5956042A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. Graphics accelerator with improved lighting processor
US6043821A (en) * 1997-06-30 2000-03-28 Ati Technologies, Inc. Method and apparatus for rendering pixel information from blended texture maps
US6016151A (en) * 1997-09-12 2000-01-18 Neomagic Corp. 3D triangle rendering by texture hardware and color software using simultaneous triangle-walking and interpolation for parallel operation
US6232981B1 (en) * 1998-03-26 2001-05-15 Silicon Graphics, Inc. Method for improving texture locality for pixel quads by diagonal level-of-detail calculation
US6236413B1 (en) * 1998-08-14 2001-05-22 Silicon Graphics, Inc. Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation
US6417858B1 (en) * 1998-12-23 2002-07-09 Microsoft Corporation Processor for geometry transformations and lighting calculations
US6437782B1 (en) * 1999-01-06 2002-08-20 Microsoft Corporation Method for rendering shadows with blended transparency without producing visual artifacts in real time applications
US6384822B1 (en) * 1999-05-14 2002-05-07 Creative Technology Ltd. Method for rendering shadows using a shadow volume and a stencil buffer
JP3625184B2 (ja) * 2000-09-25 2005-03-02 コナミ株式会社 ゲーム用3次元画像処理方法、装置、ゲーム用3次元画像処理プログラムを記録した可読記録媒体及びビデオゲーム装置
US6924798B2 (en) * 2001-05-22 2005-08-02 Intel Corporation Real-time multi-resolution shadows
JP4079410B2 (ja) * 2002-02-15 2008-04-23 株式会社バンダイナムコゲームス 画像生成システム、プログラム及び情報記憶媒体
US6876362B1 (en) * 2002-07-10 2005-04-05 Nvidia Corporation Omnidirectional shadow texture mapping

Also Published As

Publication number Publication date
US20040186631A1 (en) 2004-09-23
JP2004280596A (ja) 2004-10-07

Similar Documents

Publication Publication Date Title
US7104891B2 (en) Game machine and game program for displaying a first object casting a shadow formed by light from a light source on a second object on a virtual game space
JP3853329B2 (ja) ゲームプログラム及びゲーム装置
JP4193979B2 (ja) シャドウボリューム生成プログラム及びゲーム装置
JP2006068138A (ja) ゲーム装置および画像処理プログラム
JP3625184B2 (ja) ゲーム用3次元画像処理方法、装置、ゲーム用3次元画像処理プログラムを記録した可読記録媒体及びビデオゲーム装置
JP2006346507A (ja) ゲーム装置および画像処理プログラム
JP2006195882A (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4082937B2 (ja) ゲームシステム及びゲームプログラム
JP2005182207A (ja) 画像描画装置及び方法、プログラム並びに記録媒体
US6390918B1 (en) Video game apparatus, model display method for video games, and readable recording medium for storing model display program for video games
JP3961525B2 (ja) 画像処理装置、画像処理方法、ならびに、プログラム
EP1288866B1 (en) Image generation method
JP2002304640A (ja) 3次元画像処理方法、装置、3次元画像処理プログラム及びビデオゲーム装置
KR100843027B1 (ko) 영상 처리 방법 및 장치, 그리고 영상 처리 방법을 수행하는 프로그램이 수록된 기록매체
JP2004317878A (ja) グラフィックスプロセッサ、グラフィックスカード及びグラフィックス処理システム
JP3617960B2 (ja) 3次元ゲーム画像処理プログラム、3次元ゲーム画像処理方法及びビデオゲーム装置
JP2000279642A (ja) ゲーム装置、ゲーム方法、コンピュータ読取可能な記録媒体
JP2000218036A (ja) ゲーム装置、ゲーム制御方法およびその記録媒体
JP4584665B2 (ja) 3次元ゲーム画像処理プログラム、3次元ゲーム画像処理方法及びビデオゲーム装置
JP4233598B1 (ja) 画像処理プログラム、画像処理装置、および画像処理方法
JP4233859B2 (ja) ゲーム装置及びゲームプログラム
JP3708904B2 (ja) 画像処理プログラム
JP3586679B2 (ja) 3次元ゲーム画像処理プログラム、3次元ゲーム画像処理方法及びビデオゲーム装置
JP3545935B2 (ja) 画像の生成・表示方法及びこの方法を記録した記録媒体
JP6559434B2 (ja) ゲームプログラムおよびゲーム装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080917

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080917

R150 Certificate of patent or registration of utility model

Ref document number: 4193979

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121003

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121003

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121003

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131003

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term