(57)【特許請求の範囲】
【請求項１】
画像生成を行うゲームシステムであって、
所与のオブジェクトを第１の部分オブジェクト及び第２の部分オブジェクトを含む複数の部分オブジェクトに分割する手段と、
分割された第１の部分オブジェクトの影を分割された第２の部分オブジェクトに付ける処理を行い、所与のオブジェクトに自己陰影を施した画像を生成する手段と、を含むことを特徴とするゲームシステム。
【請求項２】
請求項１において、
第１の部分オブジェクトをレンダリングして第１の影画像を生成し、第１の影画像をテクスチャとして第２の部分オブジェクトにマッピングすることを特徴とするゲームシステム。
【請求項３】
請求項２において、
前記第１の影画像は第１の部分オブジェクトを光線ベクトル方向に投影変換して生成することを特徴とするゲームシステム。
【請求項４】
請求項１乃至３のいずれかにおいて、
第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係に基づき決定することを特徴とするゲームシステム。
【請求項５】
請求項４において、
点光源である場合には、前記第１の部分オブジェクトと第２の部分オブジェクトの光源からの距離に基づき、前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とするゲームシステム。
【請求項６】
請求項４において、
平行光源の場合には、光線ベクトルに直交し当該オブジェクトから離れた位置にある仮想平面から前記第１の部分オブジェクトと第２の部分オブジェクトへの距離に基づき前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とするゲームシステム。
【請求項７】
請求項１乃至６のいずれかにおいて、
分割した各部分オブジェクトに所定のルールに基づき番号付けを行い、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトに付加された番号と第２の部分オブジェクトに付加された番号に基づき決定することを特徴とするゲームシステム。
【請求項８】
請求項１乃至７のいずれかにおいて、
第１の部分オブジェクトの影画像を描画して第１の影テクスチャを生成し、第１の影テクスチャを第２の部分オブジェクトにマッピングし、第２の部分オブジェクトの影画像を第１の部分オブジェクトの影画像の描画領域に重ねて描画し第２の影テクスチャを生成し、第２の影テクスチャを第３の部分オブジェクトにマッピングすることを特徴とするゲームシステム。
【請求項９】
請求項１乃至８のいずれかにおいて、
光源とオブジェクトの位置関係に応じて分割内容を変更することを特徴とするゲームシステム。
【請求項１０】
コンピュータが読み取り可能な情報記憶媒体であって、
所与のオブジェクトを第１の部分オブジェクト及び第２の部分オブジェクトを含む複数の部分オブジェクトに分割する手段と、
分割された第１の部分オブジェクトの影を分割された第２の部分オブジェクトに付ける処理を行い、所与のオブジェクトに自己陰影を施した画像を生成する手段と、してコンピュータを機能させるプログラムが記憶された情報記憶媒体。
【請求項１１】
請求項１０において、
第１の部分オブジェクトをレンダリングして第１の影画像を生成し、第１の影画像をテクスチャとして第２の部分オブジェクトにマッピングすることを特徴とする情報記憶媒体。
【請求項１２】
請求項１１において、
前記第１の影画像は第１の部分オブジェクトを光線ベクトル方向に投影変換して生成することを特徴とする情報記憶媒体。
【請求項１３】
請求項１０乃至１２のいずれかにおいて、
第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係に基づき決定することを特徴とする情報記憶媒体。
【請求項１４】
請求項１３において、
点光源である場合には、前記第１の部分オブジェクトと第２の部分オブジェクトの光源からの距離に基づき、前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とする情報記憶媒体。
【請求項１５】
請求項１３において、
平行光源の場合には、光線ベクトルに直交し当該オブジェクトから離れた位置にある仮想平面から前記第１の部分オブジェクトと第２の部分オブジェクトへの距離に基づき前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とする情報記憶媒体。
【請求項１６】
請求項１０乃至１５のいずれかにおいて、
分割した各部分オブジェクトに所定のルールに基づき番号付けを行い、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトに付加された番号と第２の部分オブジェクトに付加された番号に基づき決定することを特徴とする情報記憶媒体。
【請求項１７】
請求項１０乃至１６のいずれかにおいて、
第１の部分オブジェクトの影画像を描画して第１の影テクスチャを生成し、第１の影テクスチャを第２の部分オブジェクトにマッピングし、第２の部分オブジェクトの影画像を第１の部分オブジェクトの影画像の描画領域に重ねて描画し第２の影テクスチャを生成し、第２の影テクスチャを第３の部分オブジェクトにマッピングすることを特徴とする情報記憶媒体。
【請求項１８】
請求項１０乃至１７のいずれかにおいて、
光源とオブジェクトの位置関係に応じて分割内容を変更することを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲームシステム、プログラム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より影を表現する手法として、影を作り出すオブジェクトを光源方向からみた形状をレンダリングして影テクスチャを生成し、影の影響を受けるオブジェクトに影テクスチャをマッピングするシャドウマップという手法がある。
【０００３】
図９はシャドウマップを行う際に生成する影テクスチャについて説明するための図である。シャドウマップを行う際には、同図に示すように、椅子オブジェクト８１０を光線ベクトル８２０の方向に投影して影テクスチャ領域８４０に椅子オブジェクトの影テクスチャ８３０を生成する。
【０００４】
図１０はシャドウマップの手法により椅子オブジェクトの影を床壁オブジェクトにつける場合について説明するための図である。
【０００５】
８１０は椅子オブジェクトであり、８５０は床壁オブジェクトである。また８３０は椅子オブジェクト８１０を光線ベクトル８２０の方向に投影して生成した影テクスチャである。
【０００６】
同図に示すように影テクスチャ８３０を床壁オブジェクト８５０にマッピングすることにより、椅子オブジェクトの影がマッピングされた床壁オブジェクト８５０’の画像を生成することができる。
【０００７】
このようにあるオブジェクトの影が他のオブジェクトに映っている画像を生成する場合にはシャドウマップは有効な方法であった。
【０００８】
ところがあるオブジェクトの影が自分自身に落ちている場合の画像をシャドウマップの手法を用いて生成しようとすると以下のような不都合が生じてしまう。
【０００９】
図１１はシャドウマップの手法を用いてあるオブジェクトの影を自分自身につける場合の様子を示した図である。８１０’はシャドウマップの手法を用いて生成した椅子オブェクトの影テクスチャ８３０を椅子オブジェクト８１０にマッピングした場合の画像である。
【００１０】
このように従来のシャドウマップの手法では、影を作り出すオブジェクト自身に影の投影を行うと、そのオブジェクト全てに影が落ちてしまうため、従来のシャドウマップの手法では、影を自己投影させた画像をリアルタイムに生成することが困難であった。そのため自分自身によって光がさえぎられて自分自身に影ができるような表現ができず、リアリティを欠いた画像になってしまっていた。
【００１１】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、影が自己投影された画像をリアルタイムに生成可能にすることによりリアルな陰影表現をおこなえるゲームシステム、プログラム及び情報記憶媒体を提供することである。
【００１２】
【課題を解決するための手段】
（１）画像生成を行うゲームシステムであって、所与のオブジェクトを第１の部分オブジェクト及び第２の部分オブジェクトを含む複数の部分オブジェクトに分割し、第１の部分オブジェクトの影を第２の部分オブジェクトに付ける処理を行うことで所与のオブジェクに自己陰影を施す手段を含むことを特徴とする。
【００１３】
また本発明にかかるプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体又は搬送波に具現化されるプログラム）であって、上記手段をコンピュータに実現させることを特徴とする。また本発明にかかる情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体、上記手段をコンピュータに実現させるためのプログラムを含むことを特徴とする。
【００１４】
所与のオブジェクトとは、例えば１つのモデルでもよいし、ゲーム空間内で与えられる位置座標を共有する複数のモデルの集合として構成されたオブジェクトでもよい。例えば後者の例としては最初は別個のモデルとして生成された２つのオブジェクトが関節で接続された場合があげられる。
【００１５】
本発明によれば、所与のオブジェクトを第１の部分オブジェクト及び第２の部分オブジェクトを含む複数の部分オブジェクトに分割し、第１の部分オブジェクトの影を第２の部分オブジェクトに生成することにより当該オブジェクトに当該オブジェクト自身の影が投影された画像をリアルタイムに生成することができる。
【００１６】
（２）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、第１の部分オブジェクトをリアルタイムにレンダリングして第１の影画像を生成し、第１の影画像をテクスチャとして第２の部分オブジェクトにマッピングすることを特徴とする。
【００１７】
本発明によれば第１の部分オブジェクトをリアルタイムにレンダリングして第１の影画像を生成するため、その時点の第１の部分オブジェクトの配置や形状に応じた正確な影画像を生成することできる。このため第２の部分オブジェクトによりリアルな第１の部分オブジェクトの影をつけることができる。
【００１８】
（３）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、前記第１の影画像は第１の部分オブジェクトを光線ベクトル方向に投影変換して生成することを特徴とする。
【００１９】
（４）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係に基づき決定することを特徴とする。
【００２０】
例えば光源からみて近い部分オブジェクトには遠い部分オブジェクトの影を付けないようにすることが好ましい。
【００２１】
このようにすると光源と各部分オブジェクトとの位置関係に応じたリアルな影を付けることができる。
【００２２】
（５）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、点光源である場合には、前記第１の部分オブジェクトと第２の部分オブジェクトの光源からの距離に基づき、前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とする。
【００２３】
（６）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、平行光源の場合には、光線ベクトルに直交し当該オブジェクトから離れた位置にある仮想平面から前記第１の部分オブジェクトと第２の部分オブジェクトへの距離に基づき前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断することを特徴とする。
【００２４】
（７）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、分割した各部分オブジェクトに所定のルールに基づき番号付けを行い、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトに付加された番号と第２の部分オブジェクトに付加された番号に基づき決定することを特徴とする。
【００２５】
ここにおいて所定のルールとは、例えば光源に近い部分オブジェクトから順に若い番号を与えるように番号付けしてもよい。このようにすると所与の部分オブジェクトについて、当該部分オブジェクトより大きな番号が付された部分オブジェクトについては、当該部分オブジェクトについての陰影付けの処理は行わないものとし、当該オブジェクトと同じ又は当該オブジェクトより小さい番号を有する部分オブジェクトのみの影が映る可能性があるとして陰影付け処理を行うことができる。
【００２６】
本発明によれば、各部分オブジェクトに所定のルールに基づき与えた番号に従って陰影付けの処理を行うことで、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを効率よく判断して自己陰影処理を行うことができる。
【００２７】
（８）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、第１の部分オブジェクトの影画像を描画して第１の影テクスチャを生成し、第１の影テクスチャを第２の部分オブジェクトにマッピングし、第２の部分オブジェクトの影画像を第１の部分オブジェクトの影画像の描画領域に重ねて描画し第２の影テクスチャを生成し、第２の影テクスチャを第３の部分オブジェクトにマッピングすることを特徴とする。
【００２８】
例えば光源からの距離が、第１の部分オブジェクト＜第２の部分オブジェクト＜第３の部分オブジェクトである場合に、まず第１の部分オブジェクトの影画像を描画して第１の影テクスチャを生成し、第１の影テクスチャを第２の部分オブジェクトにマッピングし、第２の部分オブジェクトの影画像を第１の部分オブジェクトの影画像の描画領域に重ねて描画し第２の影テクスチャを生成し、第２の影テクスチャを第３の部分オブジェクトにマッピングすることが好ましい。
【００２９】
このようにすると第３の部分オブジェクトにマッピングする影テクスチャと第２の部分オブジェクトにマッピングする影テクスチャを別々に生成してマッピングする場合に比べ、各部分オブジェクトに対するマッピング処理が一回ですみ、効率よく影画像のマッピング処理を行うことができる。
【００３０】
（９）また本発明に係るゲームシステム、プログラム及び情報記憶媒体は、光源とオブジェクトの位置関係に応じて分割内容を変更することを特徴とする。
【００３１】
ここにおいて分割内容とは、例えば分割数や分割後の部分オブジェクトの形状等である。
【００３２】
予め複数の分割パターンを持っていて光源とオブジェクトの位置関係に応じて切り替えるようにしてもよいし、光源とオブジェクトの位置関係に応じてリアルタイムに分割内容を切り替えるようにしてもよい。
【００３３】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて説明する。
【００３４】
１．構成
図１に、本実施形態のブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく、それ以外のブロックについては、任意の構成要素とすることができる。
【００３５】
ここで処理部１００は、システム全体の制御、システム内の各ブロックへの命令の指示、ゲーム処理、画像処理、音処理などの各種の処理を行うものであり、その機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）、或いはＡＳＩＣ（ゲートアレイ等）などのハードウェアや、所与のプログラム（ゲームプログラム）により実現できる。
【００３６】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、筺体などのハードウェアにより実現できる。
【００３７】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、メインメモリ１７２、フレームバッファ１７４（第１のフレームバッファ、第２のフレームバッファ）として機能し、ＲＡＭなどのハードウェアにより実現できる。
【００３８】
情報記憶媒体（コンピュータにより使用可能な記憶媒体）１８０は、プログラムやデータなどの情報を格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納される情報に基づいて本発明（本実施形態）の種々の処理を行う。即ち情報記憶媒体１８０には、本発明（本実施形態）の手段（特に処理部１００に含まれるブロック）を実行するための情報（プログラム或いはデータ）が格納される。
【００３９】
なお、情報記憶媒体１８０に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部１７０に転送されることになる。また情報記憶媒体１８０に記憶される情報は、本発明の処理を行うためのプログラムコード、画像データ、音データ、表示物の形状データ、テーブルデータ、リストデータ、本発明の処理を指示するための情報、その指示に従って処理を行うための情報等の少なくとも１つを含むものである。
【００４０】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００４１】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００４２】
セーブ用情報記憶装置１９４は、プレーヤの個人データ（セーブデータ）などが記憶されるものであり、このセーブ用情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００４３】
通信部１９６は、外部（例えばホスト装置や他のゲームシステム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４４】
なお本発明（本実施形態）の手段を実行するためのプログラム或いはデータは、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４５】
処理部１００は、ゲーム処理部１１０、画像生成部１３０、音生成部１５０を含む。
【００４６】
ここでゲーム処理部１１０は、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト（１又は複数のプリミティブ面）の位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置するための処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などの種々のゲーム処理を、操作部１６０からの操作データや、セーブ用情報記憶装置１９４からの個人データや、ゲームプログラムなどに基づいて行う。
【００４７】
画像生成部１３０は、ゲーム処理部１１０からの指示等にしたがって例えば座標変換、クリッピング処理、透視変換、或いは光源計算などの種々のジオメトリ処理（３次元演算）やジオメトリ処理後のオブジェクト（モデル）を、フレームバッファ１７４に描画するための描画処理等の各種の画像処理を行い、オブジェクト空間内で仮想カメラ（視点）から見える画像を生成して、表示部１９０に出力する。
【００４８】
また、音生成部１５０は、ゲーム処理部１１０からの指示等にしたがって各種の音処理を行い、ＢＧＭ、効果音、音声などの音を生成し、音出力部１９２に出力する。
【００４９】
なお、ゲーム処理部１１０、画像生成部１３０、音生成部１５０の機能は、その全てをハードウェアにより実現してもよいし、その全てをプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【００５０】
画像生成部１３０は、自己陰影処理部１４０を含む。自己陰影処理部１４０は、所与のオブジェクトを第１の部分オブジェクト及び第２の部分オブジェクトを含む複数の部分オブジェクトに分割し、第１の部分オブジェクトの影を第２の部分オブジェクトに付ける処理を行うことで所与のオブジェクに自己陰影を施す処理を行う。
【００５１】
また第１の部分オブジェクトをリアルタイムにレンダリングして第１の影画像を生成し、第１の影画像をテクスチャとして第２の部分オブジェクトにマッピングするようにしてもよい。
【００５２】
また前記第１の影画像は第１の部分オブジェクトを光線ベクトル方向に投影変換して生成するようにしてもよい。
【００５３】
また第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係に基づき決定するようにしてもよい。
【００５４】
また点光源である場合には、前記第１の部分オブジェクトと第２の部分オブジェクトの光源からの距離に基づき、前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断するようにしてもよい。
【００５５】
また平行光源の場合には、光線ベクトルに直交し当該オブジェクトから離れた位置にある仮想平面から前記第１の部分オブジェクトと第２の部分オブジェクトへの距離に基づき前記第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係を判断するようにしてもよい。
【００５６】
また分割した各部分オブジェクトに所定のルールに基づき番号付けを行い、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトに付加された番号と第２の部分オブジェクトに付加された番号に基づき決定するようにしてもよい。
【００５７】
また第１の部分オブジェクトの影画像を描画して第１の影テクスチャを生成し、第１の影テクスチャを第２の部分オブジェクトにマッピングし、第２の部分オブジェクトの影画像を第１の部分オブジェクトの影画像の描画領域に重ねて描画し第２の影テクスチャを生成し、第２の影テクスチャを第３の部分オブジェクトにマッピングするようにしてもよい。
【００５８】
また光源とオブジェクトの位置関係に応じて分割内容を変更するようにしてもよい。
【００５９】
なお、本実施形態のゲームシステムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００６０】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末を用いて生成してもよい。
【００６１】
２．本実施形態の特徴
本実施の形態の特徴を図面を用いて説明する。
【００６２】
図２（Ａ）（Ｂ）は本実施の形態の自己陰影画像について説明するための図である。図２（Ａ）は陰影付けされる前の人体オブジェクトの画像であり、図２（Ｂ）は本実施の形態の自己陰影が施された人体オブジェクトの画像である。
【００６３】
図２（Ｂ）に示すように、本実施の形態では人体オブジェクトの腕部分２１０の影２２０が胴体から足の部分におちている画像を生成することができる。これにより、光源から人体オブジェクトへの光の影響をよりリアルに表現することができる。
【００６４】
以下図３〜図５を用いて本実施の形態における自己陰影の実現手法の一例について説明する。
【００６５】
図３は自己陰影を施すオブジェクトの分割について説明するための図である。本実施の形態では例えば人体オブジェクト２５０に自己陰影を施す場合には、図３に示すように人体オブジェクト２５０を複数の部分オブジェクトＰ１〜Ｐ６に分割する。
【００６６】
ここで分割内容は予め定めておいてもよいし、オブジェクトの形状やアニメーションの状態や表現したい影の効果や光源とオブジェクトの位置関係等に基づきリアルタイムに決定してもよい。
【００６７】
そして第１の部分オブジェクトの影を第２の部分オブジェクトに生成することで、当該オブジェクトに影の自己投影を行う。
【００６８】
なお本実施の形態では第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトと第２の部分オブジェクトと光源との位置関係に基づき決定する。ここにおいて本実施の形態では分割した各部分オブジェクトに所定のルールに基づき番号付けを行い、第１の部分オブジェクトに第２の部分オブジェクトの影をつけるか否かを第１の部分オブジェクトに付加された番号と第２の部分オブジェクトに付加された番号に基づき決定する。
【００６９】
図４は部分オブジェクトへの番号付けについて説明するための図である。
【００７０】
２７０は平行光源の光線ベクトルの向きを表しており、２６０は前記光線ベクトル２７０に直交し人体オブジェクト２５０から離れた位置にある仮想平面である。
【００７１】
Ｐ１、Ｐ２、Ｐ３は人体オブジェクト２５０を分割して生成した部分オブジェクトであり、Ｒ１、Ｒ２、Ｒ３は各部分オブジェクトの前記仮想平面２６０からの距離であるとする。ここでＲ２＜Ｒ１＜Ｒ３であるとすると部分オブジェクトＰ１、Ｐ２、Ｐ３にはそれぞれ２、１、３の番号が付される。
【００７２】
そして所与の部分オブジェクトについて、当該部分オブジェクトより大きな番号が付された部分オブジェクトについては、当該部分オブジェクトについての陰影付けの処理は行わないものとし、当該オブジェクトと同じ又は当該オブジェクトより小さい番号を有する部分オブジェクトのみの影が映る可能性があるとして陰影付け処理を行う。
【００７３】
例えば部分オブジェクトＰ２には部分オブジェクトＰ１及びＰ３の影が映らないように陰影付けの処理を行い、部分オブジェクトＰ１には部分オブジェクトＰ３の影が映らないように陰影付けの処理を行う。
【００７４】
言い換えれば部分オブジェクトＰ３には部分オブジェクトＰ１及びＰ２の影が映る可能性があるものとして陰影付けの処理を行い、部分オブジェクトＰ１には部分オブジェクトＰ２の影が映る可能性があるものとして陰影付けの処理を行う。
【００７５】
なおオブジェクトに付す番号には同じ番号があってもよい。例えば仮想平面からの距離が同じ部分オブジェクトについては同じ番号を付すようにしてもよい。この場合同じ番号についてどのように取り扱うかについては、適宜定めることができる。
【００７６】
図５は部分オブジェクトに付けられた番号に基づく陰影付け処理の一例について説明するための図である。
【００７７】
ここでは３１０に示すような人体オブジェクトを頭、右腕、左腕、胴体及び足の４つの部分オブジェクトに分割した場合の右腕、左腕、胴体及び足の各部分オブジェクトに対する陰影付け処理を例にとり説明する。右腕、左腕、胴体及び足の各部分オブジェクトにはそれぞれ１、２、３の番号が付されているものとする。
【００７８】
まず人体オブジェクト３１０における番号１の部分オブジェクトである右腕の影画像３２２を生成し、影バッファ３００−１に描画する（Ｓ１）。
【００７９】
次に右腕の影画像３２２が描画された影バッファ３００−１をテクスチャとして番号２のオブジェクトである左腕の部分オブジェクト３３０にマッピングを行う（Ｓ２）。この場合番号２の部分オブジェクトである左腕には番号１の部分オブジェクトである右腕の影はかからないので実際に図上の左腕には影がついていない。すなわち影バッファ３００−１の左腕にマッピングされた部分は右腕の影３２２が描画されている部分ではなかったのである。
【００８０】
次に番号２のオブジェクトである左腕の部分オブジェクト３３０の影画像を生成し、右腕の影画像３２２が描画された影バッファ３００−２に重ね書きする（Ｓ３）。ここで影バッファ３００−２には右腕の影画像３２２と左腕の影画像３３２の両方が描画されている。
【００８１】
そして両腕の影画像が描画された影バッファ３００−２をテクスチャとして胴体及び脚の部分オブジェクトに描画する（Ｓ４）。これにより胴体及び脚の一部に両腕の影のかかった画像を生成することができる（３４０参照）。
【００８２】
例えば部分オブジェクトに光源からの距離が近いほうから降順に番号を与えた場合には、このように各部分オブジェクトに与えられた番号に従って陰影付けの処理を行うことで、各部分オブジェクトに自分より光源に近い部分オブジェクトのみの影を投影する処理を効率よく行うことができる。
【００８３】
また各部分オブジェクトの影画像を各部分オブジェクトに与えられた番号に従って重ね書きすることで、各部分オブジェクトに対するマッピング処理が一回ですみ、効率よく影画像をマッピングすることができる。
【００８４】
３．本実施の形態の処理
図６は本実施の形態の自己陰影処理の一例について説明するためのフローチャート図である。
【００８５】
まず自己陰影を行うオブジェクトをＮ個の部分オブジェクトに分割し、全ての部分オブジェクトに番号１〜Ｎのいずれかの番号を付ける（ステップＳ１０）。
【００８６】
次に初期設定として影バッファを透明に塗りつぶす（ステップＳ２０）。ここで影バッファとは図５で説明したようにテクスチャとして部分オブジェクトに対してマッピングするテクスチャ画像を描画する領域である。
【００８７】
また変数ｉに１をセットする（ステップＳ３０）。ここで変数ｉは部分オブジェクトをカウントするための変数である。
【００８８】
次に全ての部分オブジェクトについて処理が終了するまで、ステップＳ４０〜Ｓ７０の処理を繰り返す。
【００８９】
まず番号ｉの部分オブジェクトに対して影バッファのテクスチャ画像をマッピングする（ステップＳ４０）。
【００９０】
次に番号ｉの部分オブジェクトの影画像を影バッファに重ね書きする（ステップＳ５０）。
【００９１】
次に変数ｉをインクリメントする（ステップＳ６０）。
【００９２】
そしてｉ＞Ｎでない場合にはステップＳ３０に戻って処理を繰り返し、ｉ＞Ｎである場合には処理を終了する（ステップＳ７０）。
【００９３】
４．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図７を用いて説明する。
【００９４】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【００９５】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【００９６】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【００９７】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、所与の画像圧縮方式で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【００９８】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【００９９】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０１００】
ゲームコントローラ９４２からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０１０１】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０１０２】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０１０３】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０１０４】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０１０５】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他のゲームシステム、他のゲームシステムとの間でのデータ転送が可能になる。
【０１０６】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実行してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実行してもよい。或いは、ハードウェアとプログラムの両方により実行してもよい。
【０１０７】
そして、本発明の各手段をハードウェアとプログラムの両方により実行する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実行するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各手段を実行することになる。
【０１０８】
図８（Ａ）に、本実施形態を業務用ゲームシステムに適用した場合の例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、レバー１１０２、ボタン１１０４等を操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実行するための情報（プログラム又はデータ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、この情報を格納情報と呼ぶ。
【０１０９】
図８（Ｂ）に、本実施形態を家庭用のゲームシステムに適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、ゲームコントローラ１２０２、１２０４を操作してゲームを楽しむ。この場合、上記格納情報は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９等に格納されている。
【０１１０】
図８（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-1〜１３０４-nとを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納情報は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体１３０６に格納されている。端末１３０４-1〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-1〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-1〜１３０４-nに伝送し端末において出力することになる。
【０１１１】
なお、図８（Ｃ）の構成の場合に、本発明の各手段を、ホスト装置（サーバー）と端末とで分散して実行するようにしてもよい。また、本発明の各手段を実行するための上記格納情報を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０１１２】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能なセーブ用情報記憶装置（メモリカード、携帯型ゲーム装置）を用いることが望ましい。
【０１１３】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１１４】
例えば、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１１５】
また、本発明は種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。
【０１１６】
また本実施の形態では、関節モデルである人体オブジェクトについて自己陰影処理を施す場合を例にとり説明したがこれに限られない。例えば飛行機の機体に羽の影が映っている場合等のように、関節関係を有さないオブジェクトに自己陰影処理を施す場合でもよい。
【０１１７】
また本実施の形態ではテクスチャマッピングの手法を用いて自己陰影処理を施す場合を例にとり説明したがこれに限られない。例えばステンシルバッファを用いて行う場合のように他の手法を用いて自己陰影処理を行う場合でもよい。
【０１１８】
また本実施の形態では、自分より光源に近い部分オブジェクトの影が自分に投影されるように自己陰影処理を行う場合を例にとり説明したがこれに限られない。例えば部分オブジェクトと光源との位置関係に関係なく、表現したい影の状態に応じてどの部分オブジェクトにどの部分オブジェクトの影をつけるかを決定してもよい。
【０１１９】
また本実施の形態では平行光源の場合を例にとり説明したがこれに限られない。例えば点光源の場合でもよい。
【０１２０】
また本実施の形態では、光源がひとつである場合を例にとり説明したがこれに限られない。たとえば複数の光源に対して自己陰影処理を行う場合でもよく、その場合には各光源ごとに自己陰影処理を行うとよい。
【０１２１】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【図面の簡単な説明】
【図１】本実施形態のゲームシステムのブロック図の例である。
【図２】図２（Ａ）（Ｂ）は本実施の形態の自己陰影画像について説明するための図である。
【図３】自己陰影を施すオブジェクトの分割について説明するための図である。
【図４】部分オブジェクトへの番号付けについて説明するための図である。
【図５】部分オブジェクトに付けられた番号に基づく陰影付け処理の一例について説明するための図である。
【図６】本実施の形態の自己陰影処理の一例について説明するためのフローチャート図である。
【図７】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図８】図８（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【図９】シャドウマップを行う際に生成する影テクスチャについて説明するための図である。
【図１０】シャドウマップの手法により椅子オブジェクトの影を床壁オブジェクトにつける場合について説明するための図である。
【図１１】シャドウマップの手法を用いてあるオブジェクトの影を自分自身につける場合の様子を示した図である。
【符号の説明】
１００  処理部
１１０  ゲーム処理部
１３０  画像生成部
１４０  自己陰影処理部
１５０  音生成部
１６０  操作部
１７０  記憶部
１７２  メインメモリ
１７４  フレームバッファ
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  セーブ用情報記憶装置
１９６  通信部
【図１】
0004610729.tif 000002
【図２】
0004610729.tif 000003
【図３】
0004610729.tif 000004
【図４】
0004610729.tif 000005
【図５】
0004610729.tif 000006
【図６】
0004610729.tif 000007
【図７】
0004610729.tif 000008
【図８】
0004610729.tif 000009
【図９】
0004610729.tif 000010
【図１０】
0004610729.tif 000011
【図１１】
0004610729.tif 000012