JP2004334662A - Image generative system, program, and information storage medium - Google Patents
Image generative system, program, and information storage medium Download PDFInfo
- Publication number
- JP2004334662A JP2004334662A JP2003131576A JP2003131576A JP2004334662A JP 2004334662 A JP2004334662 A JP 2004334662A JP 2003131576 A JP2003131576 A JP 2003131576A JP 2003131576 A JP2003131576 A JP 2003131576A JP 2004334662 A JP2004334662 A JP 2004334662A
- Authority
- JP
- Japan
- Prior art keywords
- data
- display
- nth
- skinning
- image
- 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.)
- Granted
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【0002】
【従来の技術】
従来より、仮想的な3次元空間であるオブジェクト空間内において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。そしてこのような画像生成システムでは、キャラクタ(広義には表示物)についてもリアルに表現できることが望まれる。
【0003】
キャラクタをリアルに表現する手法として、例えば特許文献1に記載されているようなスケルトンアニメーションの技術を用いることが考えられる。スケルトンアニメーションは、各部が骨により構成されるスケルトンモデルの骨にスキンと呼ばれる表面を付けることで実現される。スケルトンアニメーションでは、骨の動きに追従してスキンの表面が表現される。そして、スキンの表面の動きの表現にスキニングと呼ばれる技術を用いることで、より一層リアルな表現が可能となる。
【0004】
【特許文献1】
特開2002−63595号公報
【0005】
【発明が解決しようとする課題】
しかしながら、上述のようなスキニングを実現する処理では、モデルオブジェクトの動きを指定するためのモーションデータからマトリクス群を作り、該モデルオブジェクトの各頂点に割り当てられた影響度情報を加味しながら頂点ごとに上記マトリクス群によるマトリクス変換によって、モーション後の頂点の位置情報等を得る。
【0006】
特に、このスキニング処理をリアルタイムで処理する場合、上述の演算処理をフレームごとに行うため、処理負荷が重いという問題があった。また複数のスケルトンモデルのオブジェクト画像をリアルタイムに表示させるためには、上述の演算処理に加え、モデル数分の座標変換処理も必要となり、更に処理負荷が重くなる。
【0007】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、少ない処理負荷でスキニング技術を用いて表示物をリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【0008】
【課題を解決するための手段】
本発明は、画像生成を行う画像生成システムであって、モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、前記記憶部に記憶された前記頂点データに基づいて、互いに異なる第1〜第N(Nは2以上の整数)のジオメトリ処理を行い、第1〜第Nの表示物描画データを求めるジオメトリ処理部と、前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0009】
本発明においては、スキニング処理部が、モデルオブジェクトのオブジェクトデータに対してスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを求める。また記憶部が、スキニング処理後のモデルオブジェクトの頂点データを保持する。そしてジオメトリ処理部が、該頂点データに対して、互いに異なる第1〜第Nのジオメトリ処理を行い、第1〜第Nの表示物描画データを求め、画像生成部が、描画処理を行って第1〜第Nの表示物が表示された画像を生成する。これにより、処理負荷の重いスキニング処理を1回行うだけで、第1〜第Nの表示物が表示された画像を生成することができる。そして、少ない処理負荷でスキニング技術を用いて表示物をリアルに表現することができる。また、スキニング処理の処理負荷を大幅に軽減して、リアルタイム処理への適用を容易にする。
【0010】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ジオメトリ処理部が、前記頂点データに基づいて第1〜第Nのスクリーンへの透視変換を行って、前記第1〜第Nの表示物描画データを求め、前記画像生成部が、前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面が分割された第1〜第Nの分割表示画面に前記第1〜第Nの表示物が表示された画像を生成するようにしてもよい。
【0011】
本発明によれば、表示画面が分割された第1〜第Nの分割表示画面に、1つのモデルオブジェクトのオブジェクトデータを用いてスキニング処理された頂点データに基づく表示物を表示させることができる。したがって、第1〜第Nの表示物を表示させるためにN回のスキニング処理を行うことなく1回のスキニング処理で済み、処理負荷を軽減することができる。
【0012】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ジオメトリ処理部が、前記頂点データに基づいて第1〜第Nのワールド座標変換を行って、前記第1〜第Nの表示物描画データを求め、前記画像生成部が、前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面に前記第1〜第Nの表示物が表示された画像を生成してもよい。
【0013】
本発明においては、表示画面に表示される第1〜第Nの表示物を、1つのモデルオブジェクトのオブジェクトデータを用いてスキニング処理された頂点データに基づいて表示させるようにしている。これにより、スキニング処理の処理負荷を例えば1/N倍に軽減して、例えば群集等のシーンを、少ない処理負荷でよりリアルに表現することができるようになる。
【0014】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ジオメトリ処理部が、過去のフレームで前記記憶部に記憶された前記頂点データに基づいて前記第1〜第Nのジオメトリ処理を行って前記第1〜第Nの表示物描画データを求め、前記画像生成部が、前記第1〜第Nの表示物描画データに基づいて前記第1〜第Nの表示物の描画処理を行い、当該フレームでの前記第1〜第Nの表示物が表示された画像を生成してもよい。
【0015】
本発明においては、過去のフレームで生成されたスキニング処理後のモデルオブジェクトの頂点データを用いて、当該フレームの表示物が表示された画像を生成するようにしている。これにより、フレームごとにスキニング処理を行うことなく、スケルトンモデルによるリアルな表現が可能な表示物を表示させることができる。また同時に、スキニング処理の処理負荷を軽減することができる。
【0016】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記スキニング処理部が、第1のフレームでは、第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づく第1のスキニング処理を行ってスキニング処理後の第1の頂点データを求めると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略し、第2のフレームでは、前記第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略すると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づく第2のスキニング処理を行ってスキニング処理後の第2の頂点データを求め、前記ジオメトリ処理部が、前記第1のフレームで求められた前記第1の頂点データに基づいて第1〜第Nのジオメトリ処理を行い第1〜第Nの表示物描画データを求めると共に、前記第2のフレームで求められた前記第2の頂点データに基づいて第(N+1)〜第L(Lは(N+1)以上の整数)のジオメトリ処理を行い第(N+1)〜第Lの表示物描画データを求め、前記画像生成部が、前記第1〜第Lの表示物描画データに基づいて第1〜第Lの表示物の描画処理を行い、前記第1〜第Lの表示物が表示された画像を生成してもよい。
【0017】
例えば、各グループが1又は複数のモデルオブジェクトを含む複数のグループにグループ化し、グループごとに、第1のフレームでスキニング処理を行い第2のフレームでスキニング処理を省略したり、或いは第1のフレームでスキニング処理を省略し第2のフレームでスキニング処理を行ったりすることも本発明に含まれる。
【0018】
本発明においては、第1及び第2のモデルオブジェクトのスキニング処理が同一フレームで行われることなく、かつ各フレームにおいて、過去のフレーム又は当該フレームで求められたスキニング処理後の第1及び第2のモデルオブジェクトの頂点データに基づいて第1〜第Lの表示物を表示させる。このように、毎フレーム、スキニング処理を行うことなくスキニング処理を適宜省略して、モデルオブジェクトに応じてスキニング処理を行うフレームを分散化する。これにより、スキニング処理の処理負荷を更に軽減し、かつスキニング技術によるリアルに表現される表示物を多く表示させることができる。
【0019】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部を含み(これらの各部としてコンピュータを機能させる、或いはこれらの各部としてコンピュータを機能させるプログラムを記憶し)、前記ジオメトリ処理部が、前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、前記画像生成部が、前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成してもよい。
【0020】
本発明によれば、スキニング処理後のモデルオブジェクトの頂点データを用いて、表示物の影が表示された画像を生成するようにしたので、スキニング技術を用いつつ、少ない処理負荷で表示物と、該表示物の影とが表示される画像を生成することができる。
【0021】
また本発明は、画像生成を行う画像生成システムであって、モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求めるジオメトリ処理部と、前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成する画像生成部とを含み、第K(Kは自然数)のフレームにおいて、前記スキニング処理部が、前記スキニング処理後のモデルオブジェクトの頂点データを生成し、前記記憶部が、前記スキニング処理後のオブジェクトの頂点データを記憶し、前記ジオメトリ処理部が、前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、前記画像生成部が、前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成し、前記第Kのフレーム以降のフレームにおいて、前記ジオメトリ処理部が、前記第Kのフレームにおいて前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、前記画像生成部が、当該フレームにおいて求められた前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0022】
本発明においては、過去のフレームで生成されたスキニング処理後のモデルオブジェクトの頂点データを用いて、当該フレームの表示物が表示された画像を生成するようにしている。即ち、第Kのフレームでは、スキニング処理を行って頂点データを求めると共に、該頂点データに対応した表示物が表示された画像を生成する。そして、第Kのフレーム以降のフレームでは、スキニング処理は行わずに、第Kのフレームにおいて生成された記憶部に記憶された頂点データを用いて、該頂点データに対応した表示物が表示された画像を生成する。これにより、フレームごとにスキニング処理を行うことなく、スケルトンモデルによるリアルな表現が可能な表示物を表示させることができる。また同時に、スキニング処理の処理負荷を軽減することができる。
【0023】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ジオメトリ処理部が、前記記憶部に記憶された前記頂点データに基づいて、ジオメトリ処理を行い、第1〜第N(Nは2以上の自然数)の表示物描画データを求め、前記画像生成部が、前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成してもよい。
【0024】
本発明によれば、処理負荷の重いスキニング処理を1回行うだけで、第1〜第Nの表示物が表示された画像を生成することができる。そして、少ない処理負荷でスキニング技術を用いて表示物をリアルに表現することができる。また、スキニング処理の処理負荷を大幅に軽減して、リアルタイム処理への適用を容易にする。
【0025】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部を含み、前記ジオメトリ処理部が、前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、前記画像生成部が、前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成してもよい。
【0026】
本発明によれば、スキニング処理後のモデルオブジェクトの頂点データを用いて、表示物の影が表示された画像を生成するようにしたので、スキニング技術を用いつつ、少ない処理負荷で表示物と、該表示物の影とが表示される画像を生成することができる。
【0027】
【発明の実施の形態】
以下、本実施形態について説明する。
【0028】
なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【0029】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図1の構成要素(各部)を全て含む必要はなく、その一部(例えば操作部160、携帯型情報記憶装置194又は通信部196等)を省略した構成としてもよい。
【0030】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサ、タッチパネル型ディスプレイ、或いは筺体などのハードウェアにより実現できる。
【0031】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどのハードウェアにより実現できる。
【0032】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。処理部100は、この情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶(記録、格納)される。
【0033】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
【0034】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
【0035】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。
【0036】
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0037】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0038】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。ここで処理部100が行うゲーム処理としては、ゲーム開始条件(コースやマップやキャラクタや参加プレーヤ人数の選択等)が満たされた場合にゲームを開始させる処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了させる処理などがある。また処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、DSP等)やASIC(ゲートアレイ等)などのハードウェアや、プログラム(ゲームプログラム)により実現できる。
【0039】
処理部100は、オブジェクト空間処理部110、スキニング処理部114、ジオメトリ処理部116、影処理部118、画像生成部120、音生成部130を含む。なおこれらの一部を省略してもよい。
【0040】
オブジェクト空間処理部110(シミュレーション演算部、移動・動作演算部)は、オブジェクト(移動オブジェクト、モデルオブジェクト)を制御する処理を行う。例えばオブジェクト空間処理部110は、オブジェクトの移動情報(位置情報、方向情報、速度情報或いは加速度情報)を求める処理を行う。オブジェクト空間処理部110は、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトをオブジェクト空間内で移動させる処理を行う。
【0041】
より具体的には、オブジェクト空間処理部110は、オブジェクトの位置や回転角度(方向)を例えば1フレーム(1/60秒等)毎に変化させる。例えば(k−1)フレームでのオブジェクトの位置(X、Y又はZ座標)、回転角度(X、Y又はX軸回りの回転角度)をPk−1、θk−1とし、オブジェクトの1フレームでの位置変化量(速度)、回転変化量(回転角度)をΔP、Δθとする。すると、kフレームでのオブジェクトの位置Pk、回転角度θkは例えば下式(1)、(2)のように求められる。
【0042】
Pk=Pk−1+ΔP (1)
θk=θk−1+Δθ (2)
なおオブジェクト空間処理部110で行われる処理は、上式(1)、(2)の処理に限定されず、(1)、(2)式と均等な処理でもよい。
【0043】
オブジェクト空間処理部110は、モデルオブジェクト制御部111、仮想カメラ設定部112を含む。
【0044】
モデルオブジェクト制御部111は、モデルオブジェクトの動作情報(モデルオブジェクトの各パーツの位置情報、方向情報)を求める処理を行う。即ち、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、モデルオブジェクトを動作(モーション、アニメーション)させる処理を行う。
【0045】
より具体的には、モデルオブジェクト制御部111は、モデルオブジェクトのモーションを、該モデルオブエジェクとのモーションデータに基づいて再生する処理等を行う。即ち、モデルオブジェクト(オブジェクト、スケルトン、キャラクタ)を構成する各骨(パーツオブジェクト)の位置又は回転角度(方向)等を含むモーションデータを記憶部170から読み出す。そして、モデルオブジェクトの各骨を動かすことで(スケルトン形状を変形させることで)、モデルオブジェクトのモーションを再生する。
【0046】
そして、モデルオブジェクト制御部111は、上述のように制御されたモデルオブジェクトのオブジェクトデータを生成する。このオブジェクトデータは、そのままスキニング処理部114に出力され、或いは一旦主記憶部172(記憶部170)に格納された後にスキニング処理部114に出力される。
【0047】
仮想カメラ設定部112は、オブジェクト空間内の所与(任意)の視点での画像を生成するための仮想カメラを制御する処理を行う。即ち、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
【0048】
例えば、モデルオブジェクトに基づいて表示される表示物を背後から撮影した画像を生成する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、オブジェクト空間処理部110(移動・動作演算部)において得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた回転角度で回転させるようにしてもよい。なお、仮想カメラの位置(移動経路)や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0049】
仮想カメラ設定部112は、オブジェクト空間内で複数の仮想カメラを独立して制御する処理を行うことも可能である。この場合、各仮想カメラについて上述した制御を行う。
【0050】
スキニング処理部114は、モデルオブジェクトのオブジェクトデータと該オブジェクトモデルのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを求める。
【0051】
ここでモデルオブジェクトのモーションデータは、モデルオブジェクトのスケルトンモデルを構成する複数の骨(アーク)に基づく位置データ、回転角度(向き)データを含ませることができる。またモデルオブジェクトのオブジェクトデータは、基準頂点データ(モデルオブジェクトが基準姿勢であるときの頂点の位置データ等を含むデータ)と、モデルオブジェクト(スケルトンモデル)のモーション変化時の各骨に対する頂点の追従度合いを表す重み付けデータ(影響度情報)を含ませることができる。スキニング処理は、モーション変化時に、モデルオブジェクトの頂点を、重み付けデータ(影響度情報)に応じて各骨に追従させることで実現される。更に具体的には、スキニング処理は、モデルオブジェクトのスケルトンモデルを構成する各骨の位置と回転角度が特定されるモーションデータと、各骨に対するモデルオブジェクトの各頂点の追従度を表わす影響度情報とによって、モデルオブジェクトの新たな頂点データを求める処理をいう。
【0052】
なおオブジェクトデータは、モデルオブジェクト制御部111により生成されたり、画像生成システムへの電源投入時等に例えば情報記憶媒体180から読み出されて主記憶部172にロードされる。或いは通信部196、インターネット(広義にはネットワーク)を介してホスト装置から主記憶部172にダウンロードされる。またモーションデータは、処理部100によりリアルタイムで生成されたり、画像生成システムへの電源投入時等に例えば情報記憶媒体180から読み出されて主記憶部172にロードされる。或いは通信部196、インターネット(広義にはネットワーク)を介してホスト装置から主記憶部172にダウンロードされる。
【0053】
スキニング処理部114によって求められたスキニング処理後のモデルオブジェクトの頂点データは、主記憶部172に記憶される。
【0054】
ジオメトリ処理部116は、主記憶部172(記憶部)に記憶されたスキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、1又は互いに異なる複数種類のジオメトリ処理を行い、複数の表示物描画データを求める。より具体的には、スキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、互いに異なる第1〜第N(Nは2以上の整数)のジオメトリ処理を行い、第1〜第Nの表示物描画データを求める。ここで、第1〜第Nのジオメトリ処理のそれぞれは、ワールド座標変換、カメラ座標変換、クリッピング処理、透視変換、及び光源処理の少なくとも1つを含む。例えばオブジェクトデータがワールド座標変換されている場合には、第1〜第Nのジオメトリ処理のそれぞれは、カメラ座標変換、クリッピング処理、透視変換、及び光源処理の少なくとも1つを含む。また例えばオブジェクトデータがモデルオブジェクトを基準としたローカル座標系のデータである場合には、第1〜第Nのジオメトリ処理のそれぞれは、ワールド座標変換、カメラ座標変換、クリッピング処理、透視変換、及び光源処理の少なくとも1つを含む。
【0055】
なお第1〜第Nのジオメトリ処理は、仮想カメラ設定部112によって設定される第1〜第Nの仮想カメラの位置又は回転角度(仮想カメラの向き)に基づいて行われる。
【0056】
ジオメトリ処理部116は、主記憶部172(記憶部)に記憶されたスキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、第1〜第Nのスクリーンへの透視変換を行って、第1〜第Nの表示物描画データを求めることもできる。第1〜第Nのスクリーンは、仮想カメラ設定部112によって設定される第1〜第Nの仮想カメラの位置又は回転角度(仮想カメラの向き)に基づいて定められる。第1〜第Nのスクリーンは、例えば表示画面を分割した第1〜第Nの分割表示画面に対応させることも可能である。
【0057】
またジオメトリ処理部116は、主記憶部172(記憶部)に記憶されたスキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、第1〜第Nのワールド座標変換を行って、第1〜第Nの表示物描画データを求めることもできる。第1〜第Nのワールド座標変換のそれぞれは、並進移動(トランスレーション)、回転移動(ローテーション)及びスケーリングの少なくとも1つの変換を含む。
【0058】
影処理部118は、スキニング処理後のモデルオブジェクトの頂点データを用いて、第1〜第Nの表示物の少なくとも1つの影表示データを生成する。より具体的には、影処理部118は、主記憶部172(記憶部)に記憶されたスキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、例えば平面投影法、シャドウボリューム(Shadow Volume)、或いはシャドウマッピング(Shadow Mapping)により影表示データを生成する。この場合、ジオメトリ処理部116が、影処理部118によって生成された影表示データに対してジオメトリ処理を行い、影描画データを求める。
【0059】
影表示データがワールド座標変換されている場合には、ジオメトリ処理は、カメラ座標変換、クリッピング処理、透視変換、及び光源処理の少なくとも1つを含む。また例えば影表示データがローカル座標系のデータである場合には、ジオメトリ処理は、ワールド座標変換、カメラ座標変換、クリッピング処理、透視変換、及び光源処理の少なくとも1つを含む。
【0060】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。即ち、ジオメトリ処理部116の処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、表示物の描画処理を行う。この描画データを描画バッファ174(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画することにより、オブジェクト空間内において仮想カメラ(所与の視点、第1〜第Nの仮想カメラ)から見える表示物の画像が生成される。
【0061】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0062】
なお本実施形態における画像生成システムでは、表示画面を分割した複数の分割表示画面に、オブジェクト空間内でそれぞれ設定される仮想カメラから見える表示物が表示された画像を生成することができる。この場合、仮想カメラ設定部112が各分割表示画面用に仮想カメラを制御する処理を行い、画像生成部120がジオメトリ処理後の描画データを、各分割表示画面用に割り当てられた描画バッファ174の描画領域に書き込んで、複数の分割表示画面にそれぞれ表示物が表示された画像を生成する。
【0063】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【0064】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて生成してもよい。
【0065】
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0066】
2.1 処理の概要
図2に、本実施形態の処理の概要を説明するための模式図を示す。本実施形態では、ジオメトリ処理部116が、スキニング処理後の1つのモデルオブジェクトの頂点データであるテンポラリデータTMPに対して、異なる第1〜第Nのジオメトリ処理GP−1〜GP−Nを行って第1〜第Nの表示物描画データを生成する。スキニング処理部114は、図2に示すようにモデルオブジェクトのオブジェクトデータOBJと該モデルオブジェクトのモーションデータMDATとに基づくスキニング処理SPにより、テンポラリデータTMPを求める。そして、画像生成部120が、第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行って第1〜第Nの表示物が表示された画像を生成する。
【0067】
本実施形態では、スケルトンモデルにより表現されるキャラクタ(表示物)の画像を生成する。これにより、よりリアルな表示物の画像を生成する。
【0068】
2.2 スキニング処理
まずスキニング処理について説明する。
【0069】
スキニング処理は、スケルトンモデルによりモデル化されたモデルオブジェクトの頂点データを求める処理である。より具体的には、スキニング処理は、モデルオブジェクトのスケルトンモデルを構成する各骨の位置と回転角度が特定されるモーションデータと、各骨に対するモデルオブジェクトの各頂点の追従度を表わす影響度情報とにより、モデルオブジェクトの新たな頂点データを求める。
【0070】
図3に、スケルトンモデルによりモデル化されたモデルオブジェクトの構成例を示す。スケルトンモデルでは、モーションデータにより位置や回転角度が特定される骨BM1〜BM20が設定される。したがって、モーションデータに基づいて骨BM1〜BM20を動かすことで、モデルオブジェクトを変形し、モデルオブジェクトのモーションを表現することができる。
【0071】
モーションデータは、例えばモーションキャプチャを用いて作成される。モーションデータは、図4(A)に示すように、例えば親の骨BMPに対する子の骨BMCのX軸、Y軸、Z軸回りの相対的な回転角度rx、ry、rzにより表わされる。
【0072】
例えば、右手を上げるというモデルオブジェクトの動きを表現する場合には、演技する人に右手を上げてもらい、その人の肩に取り付けたセンサ或いは肘に取り付けたセンサを用いてモーションキャプチャにより上腕の回転角度を取得する。そして、取得した回転角度を、モーションデータとして記憶しておく。こうすることで、図3に示す親の骨BM11に対する子の骨BM12の回転角度がモーションデータとして記憶される。このようにして記憶されたモーションデータに基づいて骨BM1〜BM20をリアルタイムに動かし、これらの骨の動きに追従するようにモデルオブジェクトを変形することで、右手を上げるというモデルオブジェクトの動きを表現する。
【0073】
図4(B)には、本実施形態におけるモーションデータの構成例である。ここでは、スケルトンモデルの骨の構成によって定まる関節の数がK(Kは自然数)であるものとする。
【0074】
モーションデータは、フレーム0〜フレームFmax−1(Fmaxは正の整数)の各フレームごとに、各関節の位置データ(X軸、Y軸、Z軸の座標(x,y,z))と、当該関節における親の骨に対する子の骨の回転角度データ(X軸、Y軸、Z軸回りの回転角度(rx,ry,rz))を含む。例えば図4(C)では、フレーム0において、関節0が座標(0.0,1.0,0.0)の位置で、予め決められた関節0における親の骨に対し、子の骨が(0,0,30)の回転角度を有していることを示す。
【0075】
図4(B)、(C)では、関節の位置データと、当該関節における子の骨の回転角度とによりモーションデータを構成したが、これに限定されるものではなく、モデルオブジェクトのスケルトンモデルを構成する複数の骨の位置データ、回転角度(向き)データによりモーションデータを構成してもよい。
【0076】
図5(A)、(B)に、本実施形態におけるモデルオブジェクトのオブジェクトデータの構成例を示す。ここでは、モデルオブジェクトのモーション変化時の各頂点を、スキニング処理により追従させる骨の数をB(Bは自然数)とする。またモデルオブジェクトの頂点数をVmax(Vmaxは自然数)とする。
【0077】
モデルオブジェクトを構成する各頂点には、位置データ(X軸、Y軸、Z軸の座標(x,y,z))と、モデルオブジェクトのモーション変化時に用いられる各骨のマトリクス番号と、各骨の追従度合いを表す重み付けデータとが付与されている。
【0078】
位置データは、基準頂点データとして、モデルオブジェクトが基準姿勢であるときの頂点の位置データということができる。この位置データは、モデルオブジェクト制御部111において、例えば操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、モデルオブジェクトをオブジェクト空間内で移動させる処理の結果として生成される。
【0079】
マトリクス番号は、行列演算に用いられるマトリクスを特定するための番号である。このマトリクスは、図4(B)に示すモーションデータに基づいて生成される。骨BM0〜BM(B−1)の各骨の重み付けの総和が1になるように、各重み付けが割り当てられる。
【0080】
例えば頂点0の座標をBX、骨BM0〜骨BM(B−1)のマトリクス番号によって特定されるマトリクスをM0〜M(B−1)とすると、スキニング処理後の頂点の座標SXは、次の式により表わされる。
【0081】
したがって、図5(B)では、頂点0の座標が(0.3,0.0,−0.4)で、モーション変化時に骨BM0のマトリクス番号が0で、その重み付けw0が1.0であることを示し、骨BM1〜BM3に追従しないことを示す。
【0082】
このようにしてスキニング処理されて求められた頂点データ(図2に示すテンポラリデータTMP)は、主記憶部172に保存される。ジオメトリ処理部116は、主記憶部172に保存された頂点データに基づいて異なる複数のジオメトリ処理を行って表示物描画データを求める。
【0083】
図6(A)、(B)に本実施形態における表示物描画データの構成例を示す。ここでは、モデルオブジェクトのポリゴン数がP(Pは正の整数)であるものとする。表示物描画データは、ポリゴンごとに、当該ポリゴンを構成する頂点を特定するデータである。即ち、表示物描画データは、ポリゴンごとに、頂点数と、該頂点数分の頂点番号とを含んで構成される。頂点番号は、図5(A)に示す頂点データごとに、スキニング処理後の頂点データを特定する番号である。
【0084】
例えば図6(B)に示すように、ポリゴン0は、頂点数が3で、頂点番号0、1、2の3頂点により構成される。例えば頂点番号0の位置は、図5(A)に示す頂点0に対して(3)式で示すスキニング処理後の頂点データの位置である。
【0085】
本実施形態では、主記憶部172に保存された頂点データに基づいて、異なる複数のジオメトリ処理を行うことで、スキニング処理の処理負荷を軽減することができる。
【0086】
図7に、ゲーム画像の一例を示す。図7では、表示画面が第1〜第4の分割表示画面DISP1〜DISP4に分割されている例を示している。ここでは、1つの3次元のゲーム空間(ゲーム処理において設定される領域)内を、4人のプレーヤが操作する4つのキャラクタ(表示物)C1〜C4が銃を持って動き回り、他のプレーヤ又はコンピュータが操作するキャラクタ、若しくは共通の敵キャラクタを倒すゲームの画像を示す。各分割表示画面には、各プレーヤが操作するキャラクタを背後から見た画像が表示される。
【0087】
図7では、各キャラクタが操作するキャラクタを背後から見た範囲に、他のキャラクタが現れていない。そのため、第1〜第4の分割表示画面DISP1〜DISP4には、それぞれ自キャラクタの画像C1〜C4のみが表示される。したがって、各キャラクタをそれぞれ別個のスケルトンモデルを用いて表現する場合、1フレームで4キャラクタ分のスキニング処理が必要となる。
【0088】
図8に、ゲーム画像の他の例を示す。図8では、各分割表示画面に自キャラクタ以外に他のプレーヤが操作するキャラクタの画像が表示される。即ち、オブジェクト空間内で設定される第1〜第4の仮想カメラの位置及び回転角度によって定まる第1〜第4のスクリーンへの透視変換を行って、第1〜第4の分割表示画面DISP1〜DISP4に、第1〜第4の表示物が表示された画像が生成されている。
【0089】
第1の分割表示画面DISP1に、自キャラクタの画像C1の他に、他のキャラクタが操作するキャラクタの画像C2−1〜C4−1が表示される。同様に、第2の分割表示画面DISP2に、自キャラクタの画像C2の他に、他のキャラクタが操作するキャラクタの画像C1−2、C3−2、C4−2が表示される。第3の分割表示画面DISP3に、自キャラクタの画像C3の他に、他のキャラクタが操作するキャラクタの画像C1−3、C2−3、C4−3が表示される。第4の分割表示画面DISP4に、自キャラクタの画像C4の他に、他のキャラクタが操作するキャラクタの画像C1−4〜C3−4が表示される。
【0090】
各キャラクタをそれぞれ別個のスケルトンモデルを用いて表現する場合、上述したような処理負荷の重いスキニング処理が1フレームで16キャラクタ分必要となってしまい、リアルタイム性が必要とされるゲーム処理において実現できる処理が制限される。
【0091】
ところが図2に示すように、本実施形態においては、1つのモデルオブジェクトに対して行ったスキニング処理後のデータを用いて、異なるジオメトリ処理を行って求めた表示物描画データに基づいて描画処理を行う。
【0092】
したがって、本実施形態によれば、第1の分割表示画面DISP1に表示されるキャラクタの画像C2−1は、第2の分割表示画面DISP2に表示される自キャラクタC2のスキニング処理後のデータに基づいて描画処理された結果生成された画像として生成される。同様に、第1の分割表示画面DISP1に表示されるキャラクタの画像C3−1は、第3の分割表示画面DISP3に表示される自キャラクタC3のスキニング処理後のデータに基づいて描画処理された結果生成された画像として生成される。第1の分割表示画面DISP1に表示されるキャラクタの画像C4−1は、第4の分割表示画面DISP4に表示される自キャラクタC4のスキニング処理後のデータに基づいて描画処理された結果生成された画像として生成される。第2〜第4の分割表示画面DISP2〜DISP4についても同様である。
【0093】
以上のように、本実施形態によれば、図8に示す場合でも、4キャラクタ分のスキニング処理で済み、リアルタイム性が必要とされるゲーム演算の処理負荷を大幅に軽減することができるようになる。
【0094】
2.3 群衆等の表現
また本実施形態では、ジオメトリ処理部116が、スキニング処理後の頂点データに基づいて第1〜第Nのワールド座標変換を行って第1〜第Nの表示物描画データを求めるようにしてもよい。この場合、画像生成部120が、第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面に第1〜第Nの表示物が表示された画像を生成する。
【0095】
より具体的には、スキニング処理前のモデルオブジェクトのオブジェクトデータを、ローカル座標系のデータとして持っておく。そして、スキニング処理部114が、ローカル座標系のモデルオブジェクトのオブジェクトデータを用いて、上述のようなスキニング処理を行う。こうして得られたスキニング処理後の頂点データを用いて、ジオメトリ処理部116が、第1〜第Nの表示物を表示させたいワールド座標に、それぞれ異なる第1〜第Nのワールド座標変換を行って第1〜第Nの表示物描画データを求める。
【0096】
こうすることで、図9に示すように、1つの表示画面DISP(或いは第1〜第4の分割表示画面DISP1〜DISP4のいずれか)に、1つのモデルオブジェクトに基づいて生成された第1〜第Nの表示物DOB1〜DOBNが表示された画像を、より少ない処理負荷で生成することができる。N個の表示物の画像生成に対し、スキニング処理が当該モデルオブジェクトに対して1回のみ行われるからである。
【0097】
こうすることで、例えば群集や観客、サッカーゲーム等のチームのメンバなどを、少ない処理負荷でスケルトンモデルによりリアルに表現することができる。
【0098】
2.4 スキニング処理負荷の軽減
2.4.1 スキニング処理の省略
また本実施形態では、当該フレームでスキニング処理された頂点データを用いることなく、過去のフレームで求められたスキニング処理後の頂点データに基づいてジオメトリ処理を行って、第1〜第Nの表示物が表示された画像を生成するようにしてもよい。
【0099】
図10(A)に、本実施形態の各処理をフレームごとに行った場合の処理の概要を模式的に示す。ここでは、フレーム1に後続する次のフレームがフレーム2、フレーム2に後続する次のフレームがフレーム3であるものとする。
【0100】
図10(A)では、フレーム1において、モデルオブジェクトのオブジェクトデータ生成処理OBM1、スキニング処理SP1、ジオメトリ処理GP1及び画像生成処理DP1が行われる。オブジェクトデータ生成処理OBM1は、モデルオブジェクト制御部111によって行われる。スキニング処理SP1は、スキニング処理部114によって行われる。ジオメトリ処理GP1は、ジオメトリ処理部116によって行われる。画像生成処理DP1は、画像生成部120によって行われる。
【0101】
またフレーム2においても、モデルオブジェクト制御部111によるモデルオブジェクトのオブジェクトデータ生成処理OBM2、スキニング処理部114によるスキニング処理SP2、ジオメトリ処理部116によるジオメトリ処理GP2及び画像生成部120による画像生成処理DP2が行われることを示している。
したがって、フレームごとに、上述したように処理負荷の重いスキニング処理SPを実行しなければならず、1フレームという制限された時間内に実行すべき他の処理を省略する必要が生ずる場合がある。
【0102】
図10(B)に、本実施形態のスキニング処理を省略する場合の処理の概要を模式的に示す。図10(B)において、フレーム1では、図10(A)に示すように、モデルオブジェクトのオブジェクトデータ生成処理OBM1、スキニング処理SP1、ジオメトリ処理GP1及び画像生成処理DP1が行われる。
【0103】
これに対して、フレーム2では、フレーム1で行われたスキニング処理SP1によって求められたスキニング処理後の頂点データを用いて、ジオメトリ処理部116によるジオメトリ処理GP2及び画像生成部120による画像生成処理DP2が行われる。したがって、フレーム2では、処理負荷の重いスキニング処理を省略している。
【0104】
そして、フレーム3では、再び、モデルオブジェクト制御部111によるモデルオブジェクトのオブジェクトデータ生成処理OBM1、スキニング処理部114によるスキニング処理SP1、ジオメトリ処理部116によるジオメトリ処理GP1及び画像生成部120による画像生成処理DP1が行われる。
【0105】
以上のように、ジオメトリ処理部116が、過去のフレームで記憶部170に記憶された頂点データに基づいて第1〜第Nのジオメトリ処理を行って第1〜第Nの表示物描画データを求めている。そして、画像生成部120が、第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、当該フレームでの前記第1〜第Nの表示物が表示された画像を生成する。これにより、スキニング処理が省略され、処理負荷を軽減することが可能である。
【0106】
なお図10(B)においては、スキニング処理SP2が省略されるフレーム2において、モデルオブジェクト制御部111によるオブジェクトデータ生成処理OBM2を行っているが、これに限定されるものではなく、フレーム2においてオブジェクトデータ生成処理OBM2を省略するようにしてもよい。しかし、モデルオブジェクトにより表示物をよりリアルに表現する場合には、フレーム2においてもオブジェクトデータ生成処理OBM2を省略しないことが望ましい。
【0107】
また図10(B)では、フレーム2において、フレーム1で生成されたスキニング処理後の頂点データを用いるものとしているが、2フレーム以上過去のフレームで生成されたスキニング処理後の頂点データを用いるようにしてもよい。
【0108】
また、過去のフレームでスキニング処理により生成された頂点データを用いて当該フレームで第1〜第Nの表示物が表示される画像を生成しているが、過去のフレームでスキニング処理により生成された頂点データを用いて当該フレームで1つの表示物が表示される画像を生成してもよい。
【0109】
この場合、画像生成システムは、モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部114と、スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部170と、記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求めるジオメトリ処理部116と、表示物描画データに基づいて表示物の描画処理を行い、表示物が表示された画像を生成する画像生成部120とを含む。
【0110】
そして、第K(Kは自然数)のフレームにおいて、スキニング処理部114が、スキニング処理後のモデルオブジェクトの頂点データを生成し、記憶部170が、第Kのフレームで行われたスキニング処理後のオブジェクトの頂点データを記憶する。更にジオメトリ処理部116が、記憶部170に記憶された頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、画像生成部120が、表示物描画データに基づいて表示物の描画処理を行い、表示物が表示された画像を生成する。
【0111】
更にまた、第Kのフレーム以降のフレームにおいて、ジオメトリ処理部116が、第Kのフレームにおいて記憶部170に記憶された頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、画像生成部120が、当該フレームにおいて求められた表示物描画データに基づいて表示物の描画処理を行い、表示物が表示された画像を生成する。
【0112】
また、ジオメトリ処理部116は、第1〜第Nの表示物描画データを求める際に、1つの頂点データに対して互いに異なる第1〜第Nのジオメトリ処理を行ってもよいが、同一のジオメトリ処理であってもよい。
【0113】
2.4.2 モデルオブジェクトに応じたスキニング処理
また本実施形態では、モデルオブジェクトに応じてスキニング処理を行うフレームを変更するようにしてもよい。こうすることで、複数のモデルオブエジェクトを用いて複数の表示物を表示させる場合、スキニング処理が行われるフレームを適宜割り当てて、同一フレームで行われるスキニング処理の負荷を分散させることができるようになる。
【0114】
図11(A)、(B)に、モデルオブジェクトOBJ1〜OBJ4についてのスキニング処理の分散例を模式的に示す。図11(A)は、スキニング処理SPにおいて行われる処理の概要を示す。即ちスキニング処理SPは、モデルオブジェクトのオブジェクトデータと、該モデルオブジェクトのモーションデータとを用いてスキニング処理を行い、該モデルオブジェクトのスキニング処理後の頂点データを求める。
【0115】
そして、図11(B)に示すように、奇数フレーム(第1のフレーム)では、モデルオブジェクトOBJ1(第1のモデルオブジェクト)のオブジェクトデータと該モデルオブジェクトのモーションデータとに基づくスキニング処理(第1のスキニング処理)を行ってスキニング処理後のモデルオブジェクトOBJ1の頂点データ(第1の頂点データ)を求める。またモデルオブジェクトOBJ2(第2のモデルオブジェクト)のオブジェクトデータと該モデルオブジェクトのモーションデータとに基づくスキニング処理を省略する。
【0116】
そして、偶数フレーム(第2のフレーム)では、モデルオブジェクトOBJ2(第2のモデルオブジェクト)のオブジェクトデータと該モデルオブジェクトのモーションデータとに基づくスキニング処理(第2のスキニング処理)を行ってスキニング処理後のモデルオブジェクトOBJ2の頂点データ(第2の頂点データ)を求める。またモデルオブジェクトOBJ1(第1のモデルオブジェクト)のオブジェクトデータと該モデルオブジェクトのモーションデータとに基づくスキニング処理を省略する。
【0117】
なお図11(B)では、奇数フレームでにおいて、モデルオブジェクトOBJ1、OBJ3についてのスキニング処理を行い、偶数フレームではモデルオブジェクトOBJ2、OBJ4についてのスキニング処理を行っている。
【0118】
以上のようにすることで、同一フレームで行われるスキニング処理の負荷を分散させることができる。
【0119】
図12(A)に、フレームごとに、モデルオブジェクトOBJ1、OBJ2についてスキニング処理を行う場合の処理の概要を示す。図12(B)に、スキニング処理を省略する場合の処理の概要を示す。各処理には、図10(A)、(B)と同様の符号を付している。
【0120】
図12(B)では、フレーム1、フレーム3を奇数フレーム、フレーム2を偶数フレームとして示している。
【0121】
ジオメトリ処理部116は、奇数フレーム(第1のフレーム)で求められたモデルオブジェクトOBJ1の頂点データ(第1の頂点データ)に基づいて第1〜第Nのジオメトリ処理を行い第1〜第Nの表示物描画データを求める。そして、ジオメトリ処理部116は、偶数フレーム(第2のフレーム)で求められたモデルオブジェクトOBJ3(第2の頂点データ)に基づいて第(N+1)〜第L(Lは(N+1)以上の整数)のジオメトリ処理を行い第(N+1)〜第Lの表示物描画データを求める。そして、画像生成部120が、第1〜第Lの表示物描画データに基づいて第1〜第Lの表示物の描画処理を行い、第1〜第Lの表示物が表示された画像を生成する。
【0122】
以上のように、図12(A)に示すようにフレームごとにスキニング処理を行う場合に比べて、図12(B)では、フレーム1〜フレーム3でスキニング処理の負荷を分散させることができる。
【0123】
なお、図12(B)ではモデルオブジェクトOBJ1についてのスキニング処理と、モデルオブジェクトOBJ2についてのスキニング処理とが、異なるフレームで行われ、かつ同じ周期(2フレーム周期)で行われているが、これに限定されるものではない。例えば、モデルオブジェクトOBJ1についてのスキニング処理と、モデルオブジェクトOBJ2についてのスキニング処理とが、異なる周期で行われ、周期的に同一フレームでモデルオブジェクトOBJ1についてのスキニング処理と、モデルオブジェクトOBJ2についてのスキニング処理とが行われてもよい。少なくとも異なるフレームで、モデルオブジェクトOBJ1についてのスキニング処理と、モデルオブジェクトOBJ2についてのスキニング処理とが行われ、スキニング処理が分散されていればよい。
【0124】
2.5 影の表現
また本実施形態では、スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影が表示される画像を生成するようにしてもよい。
【0125】
即ち影処理部118が、スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する。そしてジオメトリ処理部116が、該影表示データに基づいてジオメトリ処理を行い、影描画データを求める。更に画像生成部120が、該影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成する。
【0126】
図13(A)、図13(B)、図13(C)に、平面投影法により影表示データを生成する場合の説明図を示す。
【0127】
平面投影法では、モデルオブジェクトのオブジェクトデータに基づいて、図13(A)に示すようにXZ平面への投影面が該モデルオブジェクトに基づく表示物の影表示データとして生成される。
【0128】
この場合、図13(A)に示すように光源の光線方向とZ軸とのなす角度をθ、図13(B)に示すように光源の光線方向とXZ平面とのなす角度をΦとすると、図13(C)に示すように影行列Sが規定される。
【0129】
モデルオブジェクトに基づく表示物の影の座標(x1,y1,z1)は、モデルオブジェクトのスキニング処理後の頂点座標(x,y,z)と、影行列Sとにより、次式にしたがって求められる。
【0130】
(x1,y1,z1)=(x,y,z)・S (5)
以上のように、スキニング処理後の頂点データを流用することで、よりリアルな画像の影を容易に表現することができる。
【0131】
なお図13(A)〜(C)では、平面投影法により影を表現する場合について説明したが、これに限定されるものではなく、スキニング処理後の頂点データを流用して例えばシャドウマッピングやシャドウボリュームにより影を表現するようにしてもよい。
【0132】
3.本実施形態の処理
次に、本実施形態の詳細な処理例について図14〜図21のフローチャートを用いて説明する。
【0133】
図14に、スキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、N個のスクリーン(分割表示画面)に第1〜第Nの表示物が表示される画像を生成する場合の処理フローの一例を示す。
【0134】
図14において、fはモーションデータのフレームをカウントするための変数であり、Fmaxはモーションデータが記憶されているフレームの最大値、jはスクリーン(分割表示画面)を特定するための変数、Nはスクリーン数(分割表示画面数)である。
【0135】
まず変数fを0に初期化する(ステップS10)。次に、モデルオブジェクトにより規定されたキャラクタの位置回転行列を作成する(ステップS11)。モデルオブジェクト制御部111は、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、該モデルオブジェクトの位置や向きを決定し、その決定後の該モデルオブジェクトの位置や向きに基づいて上述の位置回転行列を作成する。
【0136】
そして、スキニング処理部114は、モーションデータのfフレーム目からマトリクス(関節行列データ)を作成する(ステップS12)。またスキニング処理部114は、オブジェクトデータ(基本頂点データ)と、マトリクスとを用いて、(3)式で示したように重み付けをして、スキニング処理後の頂点データ(キャラクタデータ)を求める(ステップS13)。
【0137】
その後、求めたスキニング処理後の頂点データに対して、ステップS11で求めた位置回転行列によりワールド座標変換を行う(ステップS14)。例えばジオメトリ処理部116が、このワールド座標変換を行う。
【0138】
続いて、ワールド座標変換後の頂点データを主記憶部172に保存する(ステップS15)。このように、ワールド座標変換された頂点データを保存しておくことで、N個の分割表示画面の各分割表示画面に表示される画像を生成するたびにワールド座標変換を行う必要がなくなる。
【0139】
次に、変数fをインクリメントする(ステップS16)。変数fがFmax以上のとき(ステップS17:N)、変数fを0に初期化して(ステップS18)、ステップS19に進む。またステップS17において、変数fがFmaxより小さいとき(ステップS17:Y)、ステップS19に進む。
【0140】
ステップS19では、変数jを0に初期化する(ステップS19)。そして、j番目のスクリーンの初期化を行い(ステップS20)、j番目のスクリーン用の仮想カメラ(第jの仮想カメラ)の位置・回転及び画角を設定する(ステップS21)。例えば、j番目の仮想カメラが飛行機、車などのモデルオブジェクトに追従する場合には、モデルオブジェクトの位置や回転角度により、仮想カメラの位置や回転角度を設定できる。またj番目の仮想カメラが所定の軌道上を移動する場合には、仮想カメラデータに基づいて仮想カメラの位置や回転角度を設定できる。
【0141】
次に、ジオメトリ処理部116では、ステップS15で保存されたスキニング処理後のモデルオブジェクトの頂点データを、j番目のカメラの設定位置や角度等によって定まるj番目のカメラ座標変換及び透視変換を行って第jの表示物描画データを求める。そして、該第jの表示物描画データに基づいて第jの表示物の描画処理を行い、第jの表示物が表示された画像を生成し、j番目のスクリーンに表示する(ステップS22)。
【0142】
続いて、変数jをインクリメントする(ステップS23)。変数jがNより小さいとき(ステップS24:Y)、ステップS20に戻る。したがって、1番目のスクリーンからN番目のスクリーン(第1〜第Nの分割表示画面)に、ステップS15で保存されたスキニング処理後のモデルオブジェクトの頂点データに基づく第1〜第Nの表示物が表示された画像を生成することができる。
【0143】
ステップS24において、変数jがN以上のとき(ステップS24:N)、ゲームオーバ等の所定の終了条件を満たしているか否かを判別し、終了のとき(ステップS25:Y)、一連の処理を終了する。終了ではないとき(ステップS25:N)、ステップS11に戻る。
【0144】
これにより、図8に示すように、第1〜第4の分割表示画面にスキニング処理後の1つのモデルオブジェクトのオブジェクトデータの頂点データに基づく第1〜第4の表示物が表示された画像を生成することができる。
【0145】
図15及び図16に、N個のスクリーン(分割表示画面)に、M(Mは自然数)個のモデルオブジェクトのスキニング処理後の頂点データに基づいて各分割表示画面に複数の表示物が表示される場合の処理フローの一例を示す。この場合、1つの表示画面に同時M×N個の表示物が表示される画像が生成される。
【0146】
図15及び図16において、f[i](0≦i≦M−1、iは整数)はi番目のモデルオブジェクトのモーションデータのフレームをカウントするための変数であり、Fmax[i]はi番目のモデルオブジェクトのモーションデータが記憶されているフレームの最大値、jはスクリーンを特定するための変数、Nはスクリーン数、Mは表示物の数である。
【0147】
まず変数f[0]〜f[M−1]を0に初期化する(ステップS30)。また変数iを0に初期化する(ステップS31)。
【0148】
次にi番目のモデルオブジェクトにより規定されたキャラクタの位置回転行列を作成する(ステップS32)。
【0149】
そして、スキニング処理部114は、モーションデータのf[i]フレーム目からマトリクス(関節行列データ)を作成する(ステップS33)。またスキニング処理部114は、オブジェクトデータ(基本頂点データ)と、マトリクスとを用いて、(3)式で示したように重み付けをして、スキニング処理後の頂点データ(キャラクタデータ)を求める(ステップS34)。
【0150】
その後、求めたスキニング処理後の頂点データに対して、ステップS32で求めた位置回転行列によりワールド座標変換を行う(ステップS35)。
【0151】
続いて、ワールド座標変換後の頂点データを主記憶部172に保存する(ステップS36)。
【0152】
次に、変数f[i]をインクリメントする(ステップS37)。変数f[i]がFmax[i]以上のとき(ステップS38:N)、変数f[i]を0に初期化して(ステップS39)、ステップS40に進む。またステップS38において、変数f[i]がFmax[i]より小さいとき(ステップS38:Y)、ステップS40に進む。
【0153】
ステップS40では、変数iをインクリメントして(ステップS40)、変数iがMより小さいか否かを判別する(ステップS41)。変数iがMより小さいとき(ステップS41:Y)、ステップS32に戻る。変数iがM以上のとき(ステップS41:N)、ステップS42に進む。これにより、M個の表示物の画像を生成するための、スキニング処理後の頂点データを求めることができる。
【0154】
図16に示すステップS42では、変数jを0に初期化する(ステップS42)。そして、j番目のスクリーンの初期化を行い(ステップS43)、j番目のスクリーン用の仮想カメラ(第jの仮想カメラ)の位置・回転及び画角を設定する(ステップS44)。
【0155】
次に、再び変数iを0に初期化して(ステップS45)、ジオメトリ処理部116では、ステップS36で保存されたi番目のモデルオブジェクトのスキニング処理後の頂点データを、j番目のカメラの設定位置や角度等によって定まるj番目のカメラ座標変換及び透視変換を行って表示物描画データを求め、該表示物描画データに基づいて表示物の描画処理を行い、該表示物が表示された画像を生成し、j番目のスクリーンに表示する(ステップS46)。
【0156】
そして、変数iをインクリメントする(ステップS47)。変数iがMより小さいか否かを判別し、変数iがMより小さいとき(ステップS48:Y)、ステップS46に戻る。これにより、j番目のスクリーン(第jの分割表示画面)に、ステップS36で保存されたM個のモデルオブジェクトのスキニング処理後の頂点データに基づき、M個の表示物が表示される画像を生成することができる。
【0157】
一方、ステップS48において変数iがM以上のとき(ステップS48:N)、変数jをインクリメントする(ステップS49)。変数jがNより小さいとき(ステップS50:Y)、ステップS43に戻る。したがって、1番目からN番目のスクリーン(第1〜第Nの分割表示画面)に、ステップS36で保存されたスキニング処理後のモデルオブジェクトの頂点データに基づくM×N個の表示物が表示された画像を生成することができる。
【0158】
ステップS50において、変数jがN以上のとき(ステップS50:N)、ゲームオーバ等の所定の終了条件を満たしているか否かを判別し、終了のとき(ステップS51:Y)、一連の処理を終了する。終了ではないとき(ステップS51:N)、ステップS31に戻る。
【0159】
これにより、図8に示すように、第1〜第4の分割表示画面に4つのモデルオブジェクトのオブジェクトデータのスキニング処理後の頂点データに基づく16個の表示物が表示された画像をより少ない処理負荷で生成することができる。
【0160】
図17に、スキニング処理後の1つのモデルオブジェクトの頂点データに基づいて、1個のスクリーンに第1〜第Mの表示物が表示される画像を生成する場合の処理フローの一例を示す。これにより、例えば群集シーンを、より少ない処理負荷で、よりリアルに表現することができる。
【0161】
図17において、fはモーションデータのフレームをカウントするための変数であり、Fmaxはモーションデータが記憶されているフレームの最大値、iは表示物を特定するための変数、Mは1つのスクリーンに表示させる表示物の数である。
【0162】
まず変数fを0に初期化する(ステップS60)。次に、スキニング処理部114は、モーションデータのfフレーム目からマトリクス(関節行列データ)を作成する(ステップS61)。またスキニング処理部114は、オブジェクトデータ(基本頂点データ)と、マトリクスとを用いて、(3)式で示したように重み付けをして、スキニング処理後の頂点データ(キャラクタデータ)を求める(ステップS62)。
【0163】
その後、求めたスキニング処理後の頂点データを主記憶部172に保存する(ステップS63)。このように、ローカル座標系の頂点データを保存しておくことで、1つの表示画面にワールド座標が異なるM個の表示物を表示させる。
【0164】
次に、変数fをインクリメントする(ステップS64)。変数fがFmax以上のとき(ステップS65:N)、変数fを0に初期化して(ステップS66)、ステップS67に進む。またステップS65において、変数fがFmaxより小さいとき(ステップS65:Y)、ステップS67に進む。
【0165】
ステップS67では、スクリーンの初期化を行い(ステップS67)、仮想カメラの位置・回転及び画角を設定する(ステップS68)。
【0166】
その後、変数iを0に初期化する(ステップS69)。次に、モデルオブジェクトにより規定されたキャラクタの位置回転行列を作成する(ステップS70)。そして、ステップS63で保存されたスキニング処理後の頂点データに対して、ステップS70で求めた位置回転行列によりワールド座標変換し、仮想カメラのカメラ座標変換及び透視変換をしてスクリーンに表示する(ステップS71)。
【0167】
続いて、変数iをインクリメントする(ステップS72)。変数iがMより小さいとき(ステップS73:Y)、ステップS70に戻る。したがって、1つのスクリーンに、ステップS63で保存されたスキニング処理後のモデルオブジェクトの頂点データに基づく複数の表示物が表示された画像を生成することができる。
【0168】
ステップS73において、変数iがM以上のとき(ステップS73:N)、ゲームオーバ等の所定の終了条件を満たしているか否かを判別し、終了のとき(ステップS74:Y)、一連の処理を終了する。終了ではないとき(ステップS74:N)、ステップS61に戻る。
【0169】
これにより、図9に示すように、1つの表示画面に、スキニング処理後の1つのモデルオブジェクトのオブジェクトデータの頂点データに基づく複数の表示物が表示された画像を生成することができる。
【0170】
図18及び図19に、モデルオブジェクトに応じてスキニング処理が行われるフレームを変更する場合の処理フローの一例を示す。ここでは、N個のスクリーン(分割表示画面)に、M(Mは自然数)個のモデルオブジェクトのスキニング処理後の頂点データに基づいて各分割表示画面に複数の表示物が表示される画像を生成する。そして、各モデルオブジェクトのスキニング処理は、交番でG(Gは2以上の整数)回に1回行うものとする。したがって、Gが2の場合、1フレームとばしでスキニング処理を行う。
【0171】
図18及び図19において、f[i](0≦i≦M−1、iは整数)はi番目のモデルオブジェクトのモーションデータのフレームをカウントするための変数、e[i]はi番目のモデルオブジェクトのスキニング処理の終了フラグ、Fmax[i]はi番目のモデルオブジェクトのモーションデータが記憶されているフレームの最大値、Gは交番描画グループ数、jはスクリーンを特定するための変数、Nはスクリーン数、Mは表示物の数、cntは描画フレームカウンタの変数である。
【0172】
まず変数cntを0に初期化する(ステップS80)。また変数f[0]〜f[M−1]、e[0]〜e[M−1]を0に初期化する(ステップS81)。なお変数e[0]〜e[M−1]を0に初期化することによって、M個のモデルオブジェクトすべてについてスキニング処理後の頂点データが求められていないことを示す。
【0173】
続いて、変数iを0に初期化する(ステップS82)。次に、描画フレームカウンタ変数cntについて(cnt mod G)を求める。(cnt modG)は、cntをGで割った余りを意味する。そして、(i mod G)と、(cnt mod G)とが一致するか否かを判別する(ステップS83)。
【0174】
(i mod G)と(cnt mod G)とが一致するi番目のモデルオブジェクトに対しては、当該フレームでスキニング処理を行う。即ち、(i mod G)と(cnt mod G)とが一致したと判別したとき(ステップS83:Y)、i番目のモデルオブジェクトにより規定されたキャラクタの位置回転行列を作成する(ステップS84)。
【0175】
そして、スキニング処理部114は、モーションデータのf[i]フレーム目からマトリクス(関節行列データ)を作成する(ステップS85)。またスキニング処理部114は、オブジェクトデータ(基本頂点データ)と、マトリクスとを用いて、(3)式で示したように重み付けをして、スキニング処理後の頂点データ(キャラクタデータ)を求める(ステップS86)。
【0176】
その後、求めたスキニング処理後の頂点データに対して、ステップS84で求めた位置回転行列によりワールド座標変換を行う(ステップS87)。
【0177】
続いて、ワールド座標変換後の頂点データを主記憶部172に保存する(ステップS88)。そして、i番目のモデルオブジェクトに対するスキニング処理が終了したことを示すために変数e[i]を1に設定する(ステップS89)。これにより、i番目のモデルオブジェクトについては、当該フレーム以降のフレームでも、当該フレームで求められたスキニング処理後の頂点データを用いて表示物が表示された画像の生成が可能となる。
【0178】
ステップS89において変数e[1]を1に設定した後、ステップS90に進む。また、ステップS83において(i mod G)と(cnt mod G)とが一致しないと判別したとき(ステップS83:N)、ステップS90に進む。ステップS90では、変数f[i]をインクリメントする(ステップS90)。変数f[i]がFmax[i]以上のとき(ステップS91:N)、変数f[i]を0に初期化して(ステップS92)、ステップS92に進む。またステップS91において、変数f[i]がFmax[i]より小さいとき(ステップS91:Y)、ステップS93に進む。
【0179】
ステップS93では、変数iをインクリメントして(ステップS92)、変数iがMより小さいか否かを判別する(ステップS94)。変数iがMより小さいとき(ステップS94:Y)、ステップS83に戻る。変数iがM以上のとき(ステップS94:N)、ステップS95に進む。これにより、M個のモデルオブジェクトを交番でG回に1回の割合でスキンニング処理を行うようになり、同一フレームで多くのモデルオブジェクトについてスキニング処理を行うことがなくなる。
【0180】
図19に示すステップS95では、変数jを0に初期化する(ステップS95)。そして、j番目のスクリーンの初期化を行い(ステップS96)、j番目のスクリーン用の仮想カメラ(第jの仮想カメラ)の位置・回転及び画角を設定する(ステップS97)。
【0181】
次に、再び変数iを0に初期化して(ステップS98)、変数e[i]が1に設定されているか否かを判別する(ステップS99)。変数e[i]が1に設定されていると判別したとき(ステップS99:Y)、ジオメトリ処理部116では、ステップS36で保存されたi番目のモデルオブジェクトのスキニング処理後の頂点データを、j番目のカメラの設定位置や角度等によって定まるj番目のカメラ座標変換及び透視変換を行って表示物描画データを求め、該表示物描画データに基づいて表示物の描画処理を行い、該表示物が表示された画像を生成し、j番目のスクリーンに表示する(ステップS100)。
【0182】
そして、変数iをインクリメントする(ステップS101)。
【0183】
一方、ステップS99において、変数e[i]が1に設定されていないと判別したとき(ステップS99:N)、ステップS100を省略してステップS101に進む。i番目のモデルオブジェクトについてのスキニング処理後の頂点データが求められていないと判断したため、描画処理を行うのは不都合となるからである。
【0184】
ステップS102では、変数iがMより小さいか否かを判別し、変数iがMより小さいとき(ステップS102:Y)、ステップS99に戻る。これにより、j番目のスクリーン(第jの分割表示画面)に、ステップS88で保存されたM個のモデルオブジェクトのスキニング処理後の頂点データに基づき、M個の表示物が表示される画像を生成することができる。
【0185】
一方、ステップS102において変数iがM以上のとき(ステップS102:N)、変数jをインクリメントする(ステップS103)。変数jがNより小さいとき(ステップS104:Y)、ステップS96に戻る。したがって、1番目からN番目のスクリーン(第1〜第Nの分割表示画面)に、ステップS88で保存されたスキニング処理後のモデルオブジェクトの頂点データに基づくM×N個の表示物が表示された画像を生成することができる。
【0186】
ステップS104において、変数jがN以上のとき(ステップS104:N)、変数cntをインクリメントする(ステップS105)。
【0187】
続いて、ゲームオーバ等の所定の終了条件を満たしているか否かを判別し、終了のとき(ステップS106:Y)、一連の処理を終了する。終了ではないとき(ステップS106:N)、ステップS82に戻る。
【0188】
なお図18及び図19においてGが2のとき、図11(B)に示すように、モデルオブジェクトに応じて、奇数フレームと偶数フレームとでスキニング処理の負荷を分散させることができる。
【0189】
図20及び図21に、N個のスクリーン(分割表示画面)に、M(Mは自然数)個のモデルオブジェクトのスキニング処理後の頂点データに基づいて各分割表示画面に複数の表示物と、該複数の表示物の影画像が表示される場合の処理フローの一例を示す。ただし、図15及び図16に示す処理フローと共通する変数は、その説明を省略する。
【0190】
まず変数f[0]〜f[M−1]を0に初期化する(ステップS120)。また変数iを0に初期化する(ステップS121)。
【0191】
次にi番目のモデルオブジェクトにより規定されたキャラクタの位置回転行列を作成する(ステップS122)。
【0192】
そして、スキニング処理部114は、モーションデータのf[i]フレーム目からマトリクス(関節行列データ)を作成する(ステップS123)。またスキニング処理部114は、オブジェクトデータ(基本頂点データ)と、マトリクスとを用いて、(3)式で示したように重み付けをして、スキニング処理後の頂点データ(ローカル座標系のキャラクタデータであるローカルデータ)を求める(ステップS124)。
【0193】
そして、ローカル座標系のキャラクタデータであるローカルデータとしてのスキニング処理後の頂点データに対して、図13(C)に示す影行列と、ワールド座標系に変換するためのワールド座標系変換行列とを用いて、i番目の影表示データを生成する(ステップS125)。
【0194】
更に、求めたスキニング処理後の頂点データに対して、ステップS122で求めた位置回転行列によりワールド座標変換を行って(ステップS126)、ワールド座標系のスキニング処理後の頂点データ(キャラクタデータ)を求める。
【0195】
続いて、ワールド座標変換後の影表示データとスキニング処理後の頂点データとを主記憶部172に保存する(ステップS127)。
【0196】
次に、変数f[i]をインクリメントする(ステップS128)。変数f[i]がFmax[i]以上のとき(ステップS129:N)、変数f[i]を0に初期化して(ステップS130)、ステップS131に進む。またステップS129において、変数f[i]がFmax[i]より小さいとき(ステップS129:Y)、ステップS131に進む。
【0197】
ステップS131では、変数iをインクリメントして(ステップS131)、変数iがMより小さいか否かを判別する(ステップS132)。変数iがMより小さいとき(ステップS132:Y)、ステップS122に戻る。変数iがM以上のとき(ステップS132:N)、ステップS133に進む。これにより、M個の表示物の画像を生成するための、スキニング処理後の頂点データと、これら表示物の影画像を生成するための頂点データとを求めることができる。
【0198】
図21に示すステップS133では、変数jを0に初期化する(ステップS133)。そして、j番目のスクリーンの初期化を行い(ステップS134)、j番目のスクリーン用の仮想カメラ(第jの仮想カメラ)の位置・回転及び画角を設定する(ステップS135)。
【0199】
次に、再び変数iを0に初期化して(ステップS136)、ジオメトリ処理部116では、ステップS127で保存されたi番目のモデルオブジェクトのスキニング処理後の頂点データを、j番目のカメラの設定位置や角度等によって定まるj番目のカメラ座標変換及び透視変換を行って表示物描画データを求め、該表示物描画データに基づいて表示物の描画処理を行い、該表示物が表示された画像を生成し、j番目のスクリーンに表示する(ステップS137)。
【0200】
またジオメトリ処理部116では、ステップS127で保存されたi番目の影表示データを、j番目のカメラ座標変換及び透視変換を行って影描画データを求め、該影描画データに基づいて表示物の影の描画処理を行い、該表示物の影が表示された画像を生成し、j番目のスクリーンに表示する(ステップS138)。
【0201】
そして、変数iをインクリメントする(ステップS139)。変数iがMより小さいか否かを判別し、変数iがMより小さいとき(ステップS140:Y)、ステップS137に戻る。これにより、j番目のスクリーン(第jの分割表示画面)に、ステップS127で保存されたM個のモデルオブジェクトのスキニング処理後の頂点データに基づき、M個の表示物とこれら表示物の影とが表示される画像を生成することができる。
【0202】
一方、ステップS140において変数iがM以上のとき(ステップS140:N)、変数jをインクリメントする(ステップS141)。変数jがNより小さいとき(ステップS142:Y)、ステップS134に戻る。したがって、1番目からN番目のスクリーン(第1〜第Nの分割表示画面)に、ステップS127で保存されたスキニング処理後のモデルオブジェクトの頂点データに基づくM×N個の表示物とこれらの影が表示された画像を生成することができる。
【0203】
ステップS142において、変数jがN以上のとき(ステップS142:N)、ゲームオーバ等の所定の終了条件を満たしているか否かを判別し、終了のとき(ステップS143:Y)、一連の処理を終了する。終了ではないとき(ステップS143:N)、ステップS121に戻る。
【0204】
これにより、図8に示すように、第1〜第4の分割表示画面に4つのモデルオブジェクトのオブジェクトデータのスキニング処理後の頂点データに基づく16個の表示物とこれらの影が表示された画像をより少ない処理負荷で生成することができる。
【0205】
4.ハードウェア構成
図22に本実施形態を実現できるハードウェア構成の例を示す。
【0206】
メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介して転送されたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。
【0207】
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0208】
ジオメトリプロセッサ904は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ900で動作するプログラムが、その処理をジオメトリプロセッサ904に指示する。
【0209】
データ伸張プロセッサ906は、圧縮された画像データや音データのデコード(伸長)処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、MPEG方式等で圧縮された動画像を表示できる。
【0210】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を高速に実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。そして1フレーム分の画像がフレームバッファ922に書き込まれると、その画像はディスプレイ912に表示される。
【0211】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942からの操作データや、メモリカード944からのセーブデータ、個人データは、シリアルインターフェース940を介して入力される。
【0212】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されることになる。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ(RAM、VRAM、ROM等)間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982にアクセスする処理を行う。
【0213】
通信インターフェース990は、ネットワークを介して外部との間でデータ転送を行う。通信インターフェース990に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどがある。
【0214】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0215】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930等は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0216】
図23(A)に業務用ゲームシステムへの本実施形態の適用例を示す。プレーヤは、ディスプレイ1100上に映し出されたゲーム画像を見ながら、操作部1102を操作してゲームを楽しむ。内蔵されるシステムボード1106にはプロセッサ、メモリなどが実装される。本実施形態の各部の処理を実現するためのプログラム(データ)は、システムボード1106上の情報記憶媒体であるメモリ1108に格納される。以下、このプログラムを格納プログラムと呼ぶ。
【0217】
図23(B)に家庭用ゲームシステムへの本実施形態の適用例を示す。この場合、上記格納プログラム(格納情報)は、本体システムに着脱自在な情報記憶媒体であるCD1206、或いはメモリカード1208、1209に格納される。
【0218】
図23(C)に、ホスト装置1300と、このホスト装置1300とネットワーク1302を介して接続される端末1304−1〜1304−n(ゲーム機、携帯電話)とを含むシステムへの本実施形態の適用例を示す。この場合、上記格納プログラムは、ホスト装置1300の情報記憶媒体1306(ハードディスク、磁気テープ装置等)に格納される。また本実施形態の各部の処理をホスト装置と端末の分散処理で実現してもよい。
【0219】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0220】
例えば、明細書又は図面中の記載において広義な用語として引用された用語は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【0221】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0222】
また、本発明は種々のゲーム(格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等)に適用できる。
【0223】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム(ゲームシステム)に適用できる。
【図面の簡単な説明】
【図1】本実施形態の画像生成システムの機能ブロック図の例。
【図2】本実施形態の処理の概要を説明するための模式図。
【図3】スケルトンモデルによりモデル化されたモデルオブジェクトの構成例を示す図。
【図4】図4(A)〜(C)はモーションデータの説明図。
【図5】図5(A)、(B)はオブジェクトデータの説明図。
【図6】図6(A)、(B)は表示物描画データの説明図。
【図7】ゲーム画像の一例を示す図。
【図8】ゲーム画像の他の例を示す図。
【図9】1つの表示画面に、1つのモデルオブジェクトに基づいて生成された複数の表示物が表示された画像の例の概要を示す図。
【図10】図10(A)、(B)は本実施形態におけるスキニング処理の省略化による負荷の軽減を説明する図。
【図11】図11(A)、(B)はモデルオブジェクトに応じたスキニング処理の分散化の手法の説明図。
【図12】図12(A)、(B)は本実施形態におけるモデルオブジェクトに応じたスキニング処理の分散化による負荷の軽減を説明する図。
【図13】図13(A)、(B)、(C)は本実施形態における影の生成の説明図。
【図14】1つのモデルオブジェクトのオブジェクトデータを用いて、複数のスクリーンに複数の表示物が表示される画像を生成する処理の一例を示すフロー図。
【図15】複数のモデルオブジェクトのオブジェクトデータを用いて、複数のスクリーンに複数の表示物が表示される画像を生成する処理の一例の前半を示すフロー図。
【図16】図15のフローの後半を示す図。
【図17】1つのモデルオブジェクトのスキニング処理後の頂点データに基づいて、1個のスクリーンに複数の表示物が表示される画像を生成する処理の一例を示すフロー図。
【図18】モデルオブジェクトに応じてスキニング処理が行われるフレームを変更する場合の処理の一例の前半のフロー図。
【図19】図18のフローの後半を示す図。
【図20】複数のスクリーンに、複数のモデルオブジェクトのスキニング処理後の頂点データに基づいて複数の表示物と、該複数の表示物の影画像が表示される場合の処理の一例をフロー図。
【図21】図20のフローの後半を示す図。
【図22】ハードウェア構成例を示す図。
【図23】図23(A)、(B)、(C)は種々の形態のシステム例を示す図。
【符号の説明】
100 処理部、110 オブジェクト空間処理部、
111 モデルオブジェクト制御部、112 仮想カメラ設定部、
114 スキニング処理部、116 ジオメトリ処理部、118 影処理部、
120 画像生成部、130 音生成部、160 操作部、170 記憶部、
172 主記憶部、174 描画バッファ、180 情報記憶媒体、
190 表示部、192 音出力部、194 携帯型情報記憶装置、
196 通信部、GP−1〜GP−N 第1〜第Nのジオメトリ処理、
MDAT モーションデータ、OBJD オブジェクトデータ
SP スキニング処理、TMP テンポラリデータ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an image generation system, a program, and an information storage medium.
[0002]
[Prior art]
Conventionally, an image generation system (game system) that generates an image that can be seen from a virtual camera (a given viewpoint) in an object space that is a virtual three-dimensional space is known. Popular. In such an image generation system, it is desired that characters (display objects in a broad sense) can be expressed realistically.
[0003]
As a technique for expressing a character realistically, for example, it is conceivable to use a skeleton animation technique described in
[0004]
[Patent Document 1]
JP 2002-63595 A
[0005]
[Problems to be solved by the invention]
However, in the process for realizing the skinning as described above, a matrix group is created from the motion data for specifying the movement of the model object, and for each vertex, taking into account the influence information assigned to each vertex of the model object. The position information of the vertex after the motion is obtained by matrix conversion using the matrix group.
[0006]
In particular, when this skinning process is performed in real time, there is a problem that the processing load is heavy because the above-described calculation process is performed for each frame. In addition, in order to display object images of a plurality of skeleton models in real time, coordinate conversion processing for the number of models is required in addition to the above-described calculation processing, which further increases the processing load.
[0007]
The present invention has been made in view of the above problems, and an object of the present invention is to provide an image generation system, a program, and an information storage medium that can realistically display a display object using a skinning technique with a small processing load. Is to provide.
[0008]
[Means for Solving the Problems]
The present invention is an image generation system for generating an image, and performs a skinning process based on object data of a model object and motion data of the model object, and generates a vertex data of the model object after the skinning process A storage unit that stores vertex data of the model object after the skinning process, and first to Nth (N is an integer of 2 or more) different geometries based on the vertex data stored in the storage unit A geometry processing unit that obtains first to Nth display object drawing data, and a first to Nth display object drawing process based on the first to Nth display object drawing data, The present invention relates to an image generation system including an image generation unit that generates an image on which first to Nth display objects are displayed. The present invention also relates to a program that causes a computer to function as each of the above-described units. The present invention also relates to a computer-readable information storage medium that stores (records) a program that causes a computer to function as each unit.
[0009]
In the present invention, the skinning processing unit performs the skinning process on the object data of the model object, and obtains the vertex data of the model object after the skinning process. Further, the storage unit holds the vertex data of the model object after the skinning process. Then, the geometry processing unit performs first to Nth geometric processing different from each other on the vertex data to obtain first to Nth display object drawing data, and the image generation unit performs the drawing processing to perform the first processing. An image in which the 1st to Nth display objects are displayed is generated. As a result, an image on which the first to Nth display objects are displayed can be generated by performing the skinning process with a heavy processing load only once. In addition, the display object can be realistically expressed using a skinning technique with a small processing load. In addition, the processing load of the skinning process is greatly reduced, and application to real-time processing is facilitated.
[0010]
In the image generation system, the program, and the information storage medium according to the present invention, the geometry processing unit performs perspective conversion to the first to Nth screens based on the vertex data, and the first to Nth screens. Display object drawing data is obtained, and the image generating unit performs first to Nth display object drawing processing based on the first to Nth display object drawing data, and the display screen is divided into first to first. An image in which the first to Nth display objects are displayed on the Nth divided display screen may be generated.
[0011]
ADVANTAGE OF THE INVENTION According to this invention, the display thing based on the vertex data skinned using the object data of one model object can be displayed on the 1st-Nth division | segmentation display screen into which the display screen was divided | segmented. Therefore, only one skinning process can be performed without performing N skinning processes to display the first to Nth display objects, and the processing load can be reduced.
[0012]
In the image generation system, the program, and the information storage medium according to the present invention, the geometry processing unit performs first to Nth world coordinate transformations based on the vertex data, and the first to Nth display objects. Drawing data is obtained, the image generation unit performs drawing processing of the first to Nth display objects based on the first to Nth display object drawing data, and the first to Nth displays on a display screen. An image on which an object is displayed may be generated.
[0013]
In the present invention, the first to Nth display objects displayed on the display screen are displayed based on the vertex data skinned using the object data of one model object. Thereby, the processing load of the skinning process can be reduced, for example, by 1 / N times, and a scene such as a crowd can be expressed more realistically with a small processing load.
[0014]
In the image generation system, the program, and the information storage medium according to the present invention, the geometry processing unit performs the first to Nth geometry processing based on the vertex data stored in the storage unit in a past frame. The first to Nth display object drawing data is obtained, and the image generation unit performs the first to Nth display object drawing processing based on the first to Nth display object drawing data, An image in which the first to Nth display objects in the frame are displayed may be generated.
[0015]
In the present invention, an image on which the display object of the frame is displayed is generated using the vertex data of the model object after the skinning process generated in the past frame. Accordingly, it is possible to display a display object that can be realistically expressed by the skeleton model without performing a skinning process for each frame. At the same time, the processing load of the skinning process can be reduced.
[0016]
In the image generation system, the program, and the information storage medium according to the present invention, the skinning processing unit includes a first frame based on object data of the first model object and motion data of the first model object in the first frame. The first vertex data after the skinning process is obtained by performing the first skinning process, and the skinning process based on the object data of the second model object and the motion data of the second model object is omitted. In the frame, the skinning process based on the object data of the first model object and the motion data of the first model object is omitted, and the object data of the second model object and the motion data of the second model object are omitted. Based on A second skinning process is performed to obtain second vertex data after the skinning process, and the geometry processing unit is configured to perform first to Nth based on the first vertex data obtained in the first frame. Geometry processing is performed to obtain first to Nth display object drawing data, and (N + 1) to Lth (L is (N + 1) or more) based on the second vertex data obtained in the second frame. (N + 1) to (L + 1) th to Lth display object drawing data are obtained, and the image generation unit performs the first to Lth display based on the first to Lth display object drawing data. An object rendering process may be performed to generate an image on which the first to Lth display objects are displayed.
[0017]
For example, each group is grouped into a plurality of groups including one or more model objects, and for each group, the skinning process is performed in the first frame and the skinning process is omitted in the second frame, or the first frame In the present invention, the skinning process is omitted and the skinning process is performed in the second frame.
[0018]
In the present invention, the first and second skinning processes of the first and second model objects are not performed in the same frame, and in each frame, the first and second skinning processes obtained in the past frame or the frame are processed. First to Lth display objects are displayed based on the vertex data of the model object. As described above, the skinning process is appropriately omitted without performing the skinning process every frame, and the frames to be subjected to the skinning process are distributed according to the model object. Thereby, it is possible to further reduce the processing load of the skinning process and to display many display objects that are realistically expressed by the skinning technique.
[0019]
In the image generation system, the program, and the information storage medium according to the present invention, a shadow that generates at least one shadow display data of the first to Nth display objects using the vertex data of the model object after the skinning process. Including a processing unit (a program that causes the computer to function as each of these units, or a program that causes the computer to function as each of these units), and the geometry processing unit performs geometry processing based on the shadow display data to generate shadow drawing data The image generation unit performs a shadow drawing process of any of the first to Nth display objects based on the shadow drawing data, and the shadows of the first to Nth display objects are displayed. An image may be generated.
[0020]
According to the present invention, the vertex object data of the model object after the skinning process is used to generate the image on which the shadow of the display object is displayed. An image in which the shadow of the display object is displayed can be generated.
[0021]
The present invention is also an image generation system for generating an image, and performs a skinning process based on the object data of the model object and the motion data of the model object, and generates a vertex data of the model object after the skinning process A storage unit that stores vertex data of the model object after the skinning process, a geometry processing unit that obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit, A display object rendering process based on display object rendering data, and an image generation unit that generates an image on which the display object is displayed. In the Kth (K is a natural number) frame, the skinning processing unit includes: Generate vertex data of the model object after the skinning process, and The unit stores vertex data of the object after the skinning process, and the geometry processing unit performs a geometry process based on the vertex data stored in the storage unit to obtain display object drawing data, and generates the image A drawing process of a display object based on the display object drawing data, and generating an image on which the display object is displayed. In the frames after the Kth frame, the geometry processing unit In this frame, geometry processing is performed based on the vertex data stored in the storage unit to obtain display object drawing data, and the image generation unit displays the display object based on the display object drawing data obtained in the frame. This is related to an image generation system that generates the image on which the display object is displayed. The present invention also relates to a program that causes a computer to function as each of the above-described units. The present invention also relates to a computer-readable information storage medium that stores (records) a program that causes a computer to function as each unit.
[0022]
In the present invention, an image on which the display object of the frame is displayed is generated using the vertex data of the model object after the skinning process generated in the past frame. That is, in the Kth frame, skinning processing is performed to obtain vertex data, and an image on which a display object corresponding to the vertex data is displayed is generated. In the frames after the Kth frame, the display object corresponding to the vertex data is displayed using the vertex data stored in the storage unit generated in the Kth frame without performing the skinning process. Generate an image. Accordingly, it is possible to display a display object that can be realistically expressed by the skeleton model without performing a skinning process for each frame. At the same time, the processing load of the skinning process can be reduced.
[0023]
In the image generation system, the program, and the information storage medium according to the present invention, the geometry processing unit performs geometry processing based on the vertex data stored in the storage unit, and includes first to Nth (N is 2). The above-mentioned natural number) display object drawing data is obtained, and the image generation unit performs drawing processing of the first to Nth display objects based on the first to Nth display object drawing data, An image on which the Nth display object is displayed may be generated.
[0024]
According to the present invention, it is possible to generate an image on which the first to Nth display objects are displayed only by performing the skinning process with a heavy processing load once. In addition, the display object can be realistically expressed using a skinning technique with a small processing load. In addition, the processing load of the skinning process is greatly reduced, and application to real-time processing is facilitated.
[0025]
In the image generation system, the program, and the information storage medium according to the present invention, a shadow that generates at least one shadow display data of the first to Nth display objects using the vertex data of the model object after the skinning process. A processing unit, wherein the geometry processing unit performs geometry processing based on the shadow display data to obtain shadow drawing data, and the image generation unit includes the first to Nth displays based on the shadow drawing data. An image in which the shadows of the first to Nth display objects are displayed may be generated by performing a shadow drawing process on any one of the objects.
[0026]
According to the present invention, the vertex object data of the model object after the skinning process is used to generate the image on which the shadow of the display object is displayed. An image in which the shadow of the display object is displayed can be generated.
[0027]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, this embodiment will be described.
[0028]
The embodiments described below do not unduly limit the contents of the present invention described in the claims. Moreover, not all of the configurations described below are essential constituent requirements of the present invention.
[0029]
1. Constitution
FIG. 1 shows an example of a functional block diagram of an image generation system (game system) of the present embodiment. Note that the image generation system according to the present embodiment does not need to include all the components (respective parts) in FIG. It is good also as a structure.
[0030]
The
[0031]
The
[0032]
The information storage medium 180 (computer-readable medium) stores programs, data, and the like, and functions as an optical disk (CD, DVD), magneto-optical disk (MO), magnetic disk, hard disk, and magnetic tape. Alternatively, it can be realized by hardware such as a memory (ROM). The
[0033]
The
[0034]
The
[0035]
The portable
[0036]
The
[0037]
Note that a program (data) for causing a computer to function as each unit of this embodiment is distributed from the information storage medium of the host device (server) to the information storage medium 180 (storage unit 170) via the network and the
[0038]
The processing unit 100 (processor) performs various processes such as a game process, an image generation process, and a sound generation process based on operation data from the
[0039]
The
[0040]
The object space processing unit 110 (simulation calculation unit, movement / motion calculation unit) performs processing for controlling an object (moving object, model object). For example, the object
[0041]
More specifically, the object
[0042]
Pk = Pk-1 + ΔP (1)
θk = θk−1 + Δθ (2)
Note that the processing performed by the object
[0043]
The object
[0044]
The model object control unit 111 performs processing for obtaining operation information of the model object (position information and direction information of each part of the model object). That is, based on operation data input by the player through the
[0045]
More specifically, the model object control unit 111 performs processing for reproducing the motion of the model object based on the motion data with the model object. That is, motion data including the position or rotation angle (direction) of each bone (part object) constituting the model object (object, skeleton, character) is read from the
[0046]
Then, the model object control unit 111 generates object data of the model object controlled as described above. The object data is output to the skinning
[0047]
The virtual
[0048]
For example, when generating an image in which a display object displayed based on a model object is captured from behind, the position or rotation angle of the virtual camera (so that the virtual camera follows changes in the position or rotation of the model object ( Control the orientation of the virtual camera. In this case, the virtual camera can be controlled based on information such as the position, rotation angle, or speed of the model object obtained in the object space processing unit 110 (movement / motion calculation unit). Alternatively, the virtual camera may be rotated at a predetermined rotation angle while being moved along a predetermined movement route. The virtual camera is controlled based on virtual camera data for specifying the position (movement path) and rotation angle of the virtual camera.
[0049]
The virtual
[0050]
The skinning
[0051]
Here, the motion data of the model object can include position data and rotation angle (orientation) data based on a plurality of bones (arcs) constituting the skeleton model of the model object. The object data of the model object includes the reference vertex data (data including the position data of the vertex when the model object is in the reference posture) and the degree of tracking of the vertex with respect to each bone when the motion of the model object (skeleton model) changes Can be included. The skinning process is realized by causing the vertices of the model object to follow each bone according to the weighting data (influence information) when the motion changes. More specifically, the skinning process includes motion data in which the position and rotation angle of each bone constituting the skeleton model of the model object are specified, influence information indicating the degree of tracking of each vertex of the model object with respect to each bone, Is a process for obtaining new vertex data of the model object.
[0052]
Note that the object data is generated by the model object control unit 111 or read from, for example, the
[0053]
The vertex data of the model object after the skinning processing obtained by the skinning
[0054]
The
[0055]
The first to Nth geometry processes are performed based on the position or rotation angle (the direction of the virtual camera) of the first to Nth virtual cameras set by the virtual
[0056]
The
[0057]
Further, the
[0058]
The
[0059]
When the shadow display data is subjected to world coordinate transformation, the geometry processing includes at least one of camera coordinate transformation, clipping processing, perspective transformation, and light source processing. For example, when the shadow display data is data in the local coordinate system, the geometry processing includes at least one of world coordinate transformation, camera coordinate transformation, clipping processing, perspective transformation, and light source processing.
[0060]
The
[0061]
The
[0062]
Note that in the image generation system according to the present embodiment, it is possible to generate an image in which a display object visible from a virtual camera set in the object space is displayed on a plurality of divided display screens obtained by dividing the display screen. In this case, the virtual
[0063]
Note that the image generation system of the present embodiment may be a system dedicated to the single player mode in which only one player can play, or not only the single player mode but also a multiplayer mode in which a plurality of players can play. The system may also be provided.
[0064]
Further, when a plurality of players play, game images and game sounds to be provided to the plurality of players may be generated using one terminal, or connected via a network (transmission line, communication line) or the like. Alternatively, it may be generated using a plurality of terminals (game machine, mobile phone).
[0065]
2. Method of this embodiment
Next, the method of this embodiment will be described with reference to the drawings.
[0066]
2.1 Overview of processing
FIG. 2 shows a schematic diagram for explaining the outline of the processing of the present embodiment. In the present embodiment, the
[0067]
In the present embodiment, an image of a character (display object) expressed by a skeleton model is generated. Thereby, a more realistic image of the display object is generated.
[0068]
2.2 Skinning process
First, the skinning process will be described.
[0069]
The skinning process is a process for obtaining vertex data of a model object modeled by a skeleton model. More specifically, the skinning process includes motion data in which the position and rotation angle of each bone constituting the skeleton model of the model object are specified, impact information indicating the degree of tracking of each vertex of the model object with respect to each bone, Thus, new vertex data of the model object is obtained.
[0070]
FIG. 3 shows a configuration example of a model object modeled by a skeleton model. In the skeleton model, bones BM1 to BM20 whose positions and rotation angles are specified by motion data are set. Therefore, by moving the bones BM1 to BM20 based on the motion data, the model object can be deformed and the motion of the model object can be expressed.
[0071]
The motion data is created using, for example, motion capture. As shown in FIG. 4A, the motion data is represented by relative rotation angles rx, ry, rz around the X axis, Y axis, and Z axis of the child bone BMC with respect to the parent bone BMP, for example.
[0072]
For example, when expressing the movement of a model object by raising the right hand, ask the person to act up the right hand and rotate the upper arm by motion capture using a sensor attached to the person's shoulder or a sensor attached to the elbow. Get the angle. The acquired rotation angle is stored as motion data. Thus, the rotation angle of the child bone BM12 with respect to the parent bone BM11 shown in FIG. 3 is stored as motion data. Based on the motion data stored in this way, the bones BM1 to BM20 are moved in real time, and the model object is deformed so as to follow the movements of these bones, thereby expressing the movement of the model object to raise the right hand. .
[0073]
FIG. 4B is a configuration example of motion data in the present embodiment. Here, it is assumed that the number of joints determined by the bone structure of the skeleton model is K (K is a natural number).
[0074]
For each frame of
[0075]
In FIGS. 4B and 4C, the motion data is composed of the joint position data and the rotation angle of the child bone at the joint. However, the present invention is not limited to this, and the skeleton model of the model object is not limited to this. The motion data may be configured by position data and rotation angle (orientation) data of a plurality of bones.
[0076]
5A and 5B show configuration examples of object data of model objects in the present embodiment. Here, it is assumed that the number of bones that follow each vertex at the time of motion change of the model object by skinning processing is B (B is a natural number). The number of vertices of the model object is Vmax (Vmax is a natural number).
[0077]
Each vertex constituting the model object includes position data (X-axis, Y-axis, and Z-axis coordinates (x, y, z)), a matrix number of each bone used when the motion of the model object is changed, and each bone. Weighting data representing the degree of follow-up is provided.
[0078]
The position data can be referred to as position data of vertices when the model object is in the reference posture as the reference vertex data. The position data is generated as a result of the process of moving the model object in the object space in the model object control unit 111 based on, for example, operation data input by the player through the
[0079]
The matrix number is a number for specifying a matrix used for matrix calculation. This matrix is generated based on the motion data shown in FIG. Each weight is assigned so that the total weight of the bones BM0 to BM (B-1) is 1.
[0080]
For example, assuming that the coordinates of
[0081]
Therefore, in FIG. 5B, the coordinate of the
[0082]
The vertex data (temporary data TMP shown in FIG. 2) obtained by the skinning process in this way is stored in the
[0083]
6A and 6B show a configuration example of display object drawing data in the present embodiment. Here, it is assumed that the number of polygons of the model object is P (P is a positive integer). The display object drawing data is data for specifying a vertex constituting the polygon for each polygon. That is, the display object drawing data includes the number of vertices and the number of vertices corresponding to the number of vertices for each polygon. The vertex number is a number for specifying the vertex data after the skinning process for each vertex data shown in FIG.
[0084]
For example, as shown in FIG. 6B, the
[0085]
In the present embodiment, the processing load of the skinning process can be reduced by performing a plurality of different geometry processes based on the vertex data stored in the
[0086]
FIG. 7 shows an example of the game image. FIG. 7 shows an example in which the display screen is divided into first to fourth divided display screens DISP1 to DISP4. Here, four characters (display objects) C1 to C4 operated by four players move around with a gun in one three-dimensional game space (area set in the game process), and other players or The image of the game which defeats the character operated by a computer or a common enemy character is shown. On each divided display screen, an image of the character operated by each player viewed from behind is displayed.
[0087]
In FIG. 7, no other character appears in the range of the character operated by each character viewed from behind. Therefore, only the images C1 to C4 of the player character are displayed on the first to fourth divided display screens DISP1 to DISP4, respectively. Therefore, when each character is expressed using a separate skeleton model, skinning processing for four characters is required in one frame.
[0088]
FIG. 8 shows another example of the game image. In FIG. 8, an image of a character operated by another player in addition to the player character is displayed on each divided display screen. That is, the first to fourth divided display screens DISP1 to DISP1 are converted by performing perspective conversion to the first to fourth screens determined by the positions and rotation angles of the first to fourth virtual cameras set in the object space. An image in which the first to fourth display objects are displayed on the
[0089]
In addition to the self-character image C1, character images C2-1 to C4-1 operated by other characters are displayed on the first divided display screen DISP1. Similarly, on the second divided display screen DISP2, images C1-2, C3-2, and C4-2 of characters operated by other characters are displayed in addition to the image C2 of the own character. In addition to the self-character image C3, character images C1-3, C2-3, and C4-3 operated by other characters are displayed on the third divided display screen DISP3. On the fourth divided display screen DISP4, in addition to the image C4 of the player character, character images C1-4 to C3-4 operated by other characters are displayed.
[0090]
When each character is expressed using a separate skeleton model, the skinning process with a heavy processing load as described above is required for 16 characters in one frame, which can be realized in a game process that requires real-time characteristics. Processing is limited.
[0091]
However, as shown in FIG. 2, in the present embodiment, drawing processing is performed based on display object drawing data obtained by performing different geometry processing using data after skinning processing performed on one model object. Do.
[0092]
Therefore, according to the present embodiment, the character image C2-1 displayed on the first divided display screen DISP1 is based on the data after the skinning process of the player character C2 displayed on the second divided display screen DISP2. As a result of the drawing process, the image is generated. Similarly, the image C3-1 of the character displayed on the first divided display screen DISP1 is a result of the drawing process based on the data after the skinning process of the player character C3 displayed on the third divided display screen DISP3. It is generated as a generated image. The character image C4-1 displayed on the first divided display screen DISP1 is generated as a result of the drawing process based on the data after the skinning process of the player character C4 displayed on the fourth divided display screen DISP4. Generated as an image. The same applies to the second to fourth divided display screens DISP2 to DISP4.
[0093]
As described above, according to the present embodiment, even in the case shown in FIG. 8, skinning processing for four characters is sufficient, and the processing load of game calculation that requires real-time performance can be greatly reduced. Become.
[0094]
2.3 Expression of crowds
Further, in the present embodiment, the
[0095]
More specifically, the object data of the model object before the skinning process is held as local coordinate system data. Then, the skinning
[0096]
As a result, as shown in FIG. 9, the first to first display screens DISP (or any one of the first to fourth divided display screens DISP1 to DISP4) generated based on one model object are displayed. An image on which the Nth display objects DOB1 to DOBN are displayed can be generated with a smaller processing load. This is because the skinning process is performed only once on the model object for the image generation of N display objects.
[0097]
In this way, for example, crowds, spectators, team members such as soccer games, and the like can be realistically represented by a skeleton model with a small processing load.
[0098]
2.4 Reduction of skinning processing load
2.4.1 Omission of skinning process
Further, in the present embodiment, the first to Nth display objects are obtained by performing geometry processing based on the vertex data after the skinning process obtained in the past frame without using the vertex data skinned in the frame. An image displaying may be generated.
[0099]
FIG. 10A schematically shows an outline of processing when each processing of this embodiment is performed for each frame. Here, it is assumed that the next
[0100]
In FIG. 10A, in
[0101]
Also in
Therefore, the skinning process SP with a heavy processing load as described above must be executed for each frame, and it may be necessary to omit other processes to be executed within a limited time of one frame.
[0102]
FIG. 10B schematically shows an outline of processing when the skinning processing of the present embodiment is omitted. 10B, in
[0103]
On the other hand, in
[0104]
In
[0105]
As described above, the
[0106]
In FIG. 10B, the object data generation process OBM2 is performed by the model object control unit 111 in the
[0107]
In FIG. 10B, the vertex data after the skinning process generated in the
[0108]
Further, the vertex data generated by the skinning process in the past frame is used to generate an image in which the first to Nth display objects are displayed in the frame, but the image is generated by the skinning process in the past frame. An image in which one display object is displayed in the frame may be generated using the vertex data.
[0109]
In this case, the image generation system performs a skinning process based on the object data of the model object and the motion data of the model object, generates a vertex data of the model object after the skinning process, A
[0110]
Then, in the Kth frame (K is a natural number), the skinning
[0111]
Furthermore, in the frames after the Kth frame, the
[0112]
The
[0113]
2.4.2 Skinning process according to model object
In the present embodiment, the frame for performing the skinning process may be changed according to the model object. In this way, when displaying a plurality of display objects using a plurality of model objects, it is possible to appropriately allocate a frame on which skinning processing is performed and to distribute the load of skinning processing performed on the same frame. Become.
[0114]
FIGS. 11A and 11B schematically show a distribution example of the skinning process for the model objects OBJ1 to OBJ4. FIG. 11A shows an outline of processing performed in the skinning processing SP. That is, the skinning process SP performs a skinning process using the object data of the model object and the motion data of the model object, and obtains the vertex data after the skinning process of the model object.
[0115]
Then, as shown in FIG. 11B, in an odd frame (first frame), a skinning process based on the object data of the model object OBJ1 (first model object) and the motion data of the model object (first To obtain vertex data (first vertex data) of the model object OBJ1 after the skinning process. Also, the skinning process based on the object data of the model object OBJ2 (second model object) and the motion data of the model object is omitted.
[0116]
Then, in an even frame (second frame), a skinning process (second skinning process) based on the object data of the model object OBJ2 (second model object) and the motion data of the model object is performed, and after the skinning process The vertex data (second vertex data) of the model object OBJ2 is obtained. Also, the skinning process based on the object data of the model object OBJ1 (first model object) and the motion data of the model object is omitted.
[0117]
In FIG. 11B, the skinning process for the model objects OBJ1 and OBJ3 is performed in the odd frame, and the skinning process for the model objects OBJ2 and OBJ4 is performed in the even frame.
[0118]
By doing so, it is possible to distribute the skinning processing load performed in the same frame.
[0119]
FIG. 12A shows an outline of processing when skinning processing is performed on the model objects OBJ1 and OBJ2 for each frame. FIG. 12B shows an outline of the process when the skinning process is omitted. Each process is denoted by the same reference numerals as in FIGS. 10 (A) and 10 (B).
[0120]
In FIG. 12B,
[0121]
The
[0122]
As described above, as compared with the case where the skinning process is performed for each frame as illustrated in FIG. 12A, the load of the skinning process can be distributed in the
[0123]
In FIG. 12B, the skinning process for the model object OBJ1 and the skinning process for the model object OBJ2 are performed in different frames and in the same cycle (two frame cycles). It is not limited. For example, the skinning process for the model object OBJ1 and the skinning process for the model object OBJ2 are performed at different periods, and the skinning process for the model object OBJ1 and the skinning process for the model object OBJ2 are periodically performed in the same frame. May be performed. It is sufficient that the skinning process for the model object OBJ1 and the skinning process for the model object OBJ2 are performed at least in different frames and the skinning process is distributed.
[0124]
2.5 Expression of shadow
In this embodiment, an image in which at least one shadow of the first to Nth display objects is displayed may be generated using the vertex data of the model object after the skinning process.
[0125]
That is, the
[0126]
FIG. 13A, FIG. 13B, and FIG. 13C are explanatory diagrams when shadow display data is generated by the planar projection method.
[0127]
In the planar projection method, based on the object data of the model object, a projection plane onto the XZ plane is generated as shadow display data of the display object based on the model object, as shown in FIG.
[0128]
In this case, if the angle between the light beam direction of the light source and the Z-axis is θ as shown in FIG. 13A, and the angle between the light beam direction of the light source and the XZ plane is φ as shown in FIG. A shadow matrix S is defined as shown in FIG.
[0129]
The coordinates (x1, y1, z1) of the shadow of the display object based on the model object are obtained from the vertex coordinates (x, y, z) after the skinning process of the model object and the shadow matrix S according to the following equation.
[0130]
(X1, y1, z1) = (x, y, z) · S (5)
As described above, by using the vertex data after the skinning process, it is possible to easily represent a more realistic image shadow.
[0131]
13A to 13C describe the case where the shadow is expressed by the planar projection method. However, the present invention is not limited to this. For example, the vertex data after the skinning process is used, for example, shadow mapping or shadow. You may make it express a shadow with a volume.
[0132]
3. Processing of this embodiment
Next, a detailed processing example of the present embodiment will be described using the flowcharts of FIGS.
[0133]
FIG. 14 shows a processing flow for generating an image in which the first to Nth display objects are displayed on N screens (divided display screens) based on the vertex data of one model object after the skinning process. An example is shown.
[0134]
In FIG. 14, f is a variable for counting the frames of motion data, Fmax is the maximum value of the frames in which the motion data is stored, j is a variable for specifying a screen (divided display screen), and N is The number of screens (the number of divided display screens).
[0135]
First, the variable f is initialized to 0 (step S10). Next, a character position rotation matrix defined by the model object is created (step S11). The model object control unit 111 determines the position and orientation of the model object based on operation data input by the player through the
[0136]
Then, the skinning
[0137]
Thereafter, world coordinate transformation is performed on the obtained vertex data after the skinning process using the position rotation matrix obtained in step S11 (step S14). For example, the
[0138]
Subsequently, the vertex data after the world coordinate conversion is stored in the main storage unit 172 (step S15). In this way, by storing the vertex data that has undergone world coordinate conversion, it is not necessary to perform world coordinate conversion each time an image displayed on each of the N divided display screens is generated.
[0139]
Next, the variable f is incremented (step S16). When the variable f is equal to or greater than Fmax (step S17: N), the variable f is initialized to 0 (step S18), and the process proceeds to step S19. In step S17, when the variable f is smaller than Fmax (step S17: Y), the process proceeds to step S19.
[0140]
In step S19, the variable j is initialized to 0 (step S19). Then, the jth screen is initialized (step S20), and the position / rotation and angle of view of the virtual camera for the jth screen (jth virtual camera) are set (step S21). For example, when the j-th virtual camera follows a model object such as an airplane or a car, the position and rotation angle of the virtual camera can be set according to the position and rotation angle of the model object. When the j-th virtual camera moves on a predetermined trajectory, the position and rotation angle of the virtual camera can be set based on the virtual camera data.
[0141]
Next, the
[0142]
Subsequently, the variable j is incremented (step S23). When the variable j is smaller than N (step S24: Y), the process returns to step S20. Therefore, the first to Nth display objects based on the vertex data of the model object after the skinning process saved in step S15 are transferred from the first screen to the Nth screen (first to Nth divided display screens). A displayed image can be generated.
[0143]
In step S24, when the variable j is greater than or equal to N (step S24: N), it is determined whether or not a predetermined end condition such as game over is satisfied. When the variable j is ended (step S25: Y), a series of processing is performed. finish. When it is not the end (step S25: N), it returns to step S11.
[0144]
As a result, as shown in FIG. 8, the first to fourth display objects based on the vertex data of the object data of one model object after the skinning process are displayed on the first to fourth divided display screens. Can be generated.
[0145]
15 and 16, a plurality of display objects are displayed on each of the divided display screens based on the vertex data after skinning processing of M (M is a natural number) model objects on N screens (divided display screens). An example of the processing flow in the case of In this case, an image in which M × N display objects are simultaneously displayed on one display screen is generated.
[0146]
15 and 16, f [i] (0 ≦ i ≦ M−1, i is an integer) is a variable for counting the frame of motion data of the i-th model object, and Fmax [i] is i The maximum value of the frame in which the motion data of the second model object is stored, j is a variable for specifying the screen, N is the number of screens, and M is the number of display objects.
[0147]
First, variables f [0] to f [M−1] are initialized to 0 (step S30). In addition, the variable i is initialized to 0 (step S31).
[0148]
Next, a character position rotation matrix defined by the i-th model object is created (step S32).
[0149]
Then, the skinning
[0150]
Thereafter, world coordinate transformation is performed on the obtained vertex data after the skinning process using the position rotation matrix obtained in step S32 (step S35).
[0151]
Subsequently, the vertex data after world coordinate conversion is stored in the main storage unit 172 (step S36).
[0152]
Next, the variable f [i] is incremented (step S37). When the variable f [i] is equal to or greater than Fmax [i] (step S38: N), the variable f [i] is initialized to 0 (step S39), and the process proceeds to step S40. In step S38, when the variable f [i] is smaller than Fmax [i] (step S38: Y), the process proceeds to step S40.
[0153]
In step S40, the variable i is incremented (step S40), and it is determined whether or not the variable i is smaller than M (step S41). When the variable i is smaller than M (step S41: Y), the process returns to step S32. When the variable i is greater than or equal to M (step S41: N), the process proceeds to step S42. Thereby, the vertex data after the skinning process for generating images of M display objects can be obtained.
[0154]
In step S42 shown in FIG. 16, the variable j is initialized to 0 (step S42). Then, the jth screen is initialized (step S43), and the position / rotation and angle of view of the virtual camera for the jth screen (jth virtual camera) are set (step S44).
[0155]
Next, the variable i is initialized again to 0 (step S45), and the
[0156]
Then, the variable i is incremented (step S47). It is determined whether or not the variable i is smaller than M. When the variable i is smaller than M (step S48: Y), the process returns to step S46. Thereby, an image on which M display objects are displayed is generated on the jth screen (jth divided display screen) based on the vertex data after the skinning process of the M model objects stored in step S36. can do.
[0157]
On the other hand, when the variable i is greater than or equal to M in step S48 (step S48: N), the variable j is incremented (step S49). When the variable j is smaller than N (step S50: Y), the process returns to step S43. Therefore, M × N display objects based on the vertex data of the model object after the skinning process stored in step S36 are displayed on the first to Nth screens (first to Nth divided display screens). An image can be generated.
[0158]
In step S50, when the variable j is greater than or equal to N (step S50: N), it is determined whether or not a predetermined end condition such as game over is satisfied. When the variable j is ended (step S51: Y), a series of processing is performed. finish. If not finished (step S51: N), the process returns to step S31.
[0159]
As a result, as shown in FIG. 8, fewer images are displayed on the first to fourth divided display screens in which 16 display objects based on the vertex data after the skinning process of the object data of the four model objects are displayed. Can be generated with load.
[0160]
FIG. 17 shows an example of a processing flow for generating an image in which the first to Mth display objects are displayed on one screen based on the vertex data of one model object after the skinning process. Thereby, for example, a crowd scene can be expressed more realistically with a smaller processing load.
[0161]
In FIG. 17, f is a variable for counting the frames of the motion data, Fmax is the maximum value of the frame in which the motion data is stored, i is a variable for specifying the display object, and M is one screen. It is the number of display objects to be displayed.
[0162]
First, the variable f is initialized to 0 (step S60). Next, the skinning
[0163]
Thereafter, the obtained vertex data after the skinning process is stored in the main storage unit 172 (step S63). Thus, by storing the vertex data of the local coordinate system, M display objects with different world coordinates are displayed on one display screen.
[0164]
Next, the variable f is incremented (step S64). When the variable f is greater than or equal to Fmax (step S65: N), the variable f is initialized to 0 (step S66), and the process proceeds to step S67. In step S65, when the variable f is smaller than Fmax (step S65: Y), the process proceeds to step S67.
[0165]
In step S67, the screen is initialized (step S67), and the position / rotation and angle of view of the virtual camera are set (step S68).
[0166]
Thereafter, the variable i is initialized to 0 (step S69). Next, a character position rotation matrix defined by the model object is created (step S70). Then, the world coordinate transformation is performed on the vertex data after the skinning process stored in step S63 by the position rotation matrix obtained in step S70, and the camera coordinate transformation and perspective transformation of the virtual camera are performed and displayed on the screen (step). S71).
[0167]
Subsequently, the variable i is incremented (step S72). When the variable i is smaller than M (step S73: Y), the process returns to step S70. Therefore, an image in which a plurality of display objects based on the vertex data of the model object after the skinning process stored in step S63 is displayed on one screen can be generated.
[0168]
In step S73, when the variable i is greater than or equal to M (step S73: N), it is determined whether or not a predetermined end condition such as a game over is satisfied. When the variable i ends (step S74: Y), a series of processing is performed. finish. When it is not finished (step S74: N), the process returns to step S61.
[0169]
As a result, as shown in FIG. 9, an image in which a plurality of display objects based on the vertex data of the object data of one model object after skinning processing is displayed on one display screen can be generated.
[0170]
FIG. 18 and FIG. 19 show an example of a processing flow in the case of changing the frame on which the skinning process is performed according to the model object. Here, an image in which a plurality of display objects are displayed on each divided display screen is generated on N screens (divided display screens) based on vertex data after skinning processing of M (M is a natural number) model objects. To do. The skinning process of each model object is performed once every G times (G is an integer of 2 or more). Accordingly, when G is 2, the skinning process is performed by skipping one frame.
[0171]
18 and 19, f [i] (0 ≦ i ≦ M−1, i is an integer) is a variable for counting the frame of motion data of the i-th model object, and e [i] is the i-th Model object skinning process end flag, Fmax [i] is the maximum value of the frame in which the motion data of the i-th model object is stored, G is the number of alternating drawing groups, j is a variable for specifying the screen, N Is the number of screens, M is the number of display objects, and cnt is a variable of the drawing frame counter.
[0172]
First, the variable cnt is initialized to 0 (step S80). Variables f [0] to f [M-1] and e [0] to e [M-1] are initialized to 0 (step S81). By initializing the variables e [0] to e [M−1] to 0, it is indicated that the vertex data after the skinning process is not obtained for all M model objects.
[0173]
Subsequently, the variable i is initialized to 0 (step S82). Next, (cnt mod G) is obtained for the drawing frame counter variable cnt. (Cnt mod G) means a remainder obtained by dividing cnt by G. And it is discriminate | determined whether (i mod G) and (cnt mod G) correspond (step S83).
[0174]
For the i-th model object in which (i mod G) and (cnt mod G) match, skinning processing is performed in the frame. That is, when it is determined that (i mod G) and (cnt mod G) match (step S83: Y), a position rotation matrix of the character defined by the i-th model object is created (step S84).
[0175]
Then, the skinning
[0176]
Thereafter, world coordinate transformation is performed on the obtained vertex data after the skinning process using the position rotation matrix obtained in step S84 (step S87).
[0177]
Subsequently, the vertex data after the world coordinate conversion is stored in the main storage unit 172 (step S88). Then, a variable e [i] is set to 1 to indicate that the skinning process for the i-th model object has been completed (step S89). As a result, for the i-th model object, it is possible to generate an image in which a display object is displayed using the vertex data after the skinning process obtained in the frame even in the frames after the frame.
[0178]
After setting the variable e [1] to 1 in step S89, the process proceeds to step S90. When it is determined in step S83 that (i mod G) and (cnt mod G) do not match (step S83: N), the process proceeds to step S90. In step S90, the variable f [i] is incremented (step S90). When the variable f [i] is equal to or greater than Fmax [i] (step S91: N), the variable f [i] is initialized to 0 (step S92), and the process proceeds to step S92. In step S91, when the variable f [i] is smaller than Fmax [i] (step S91: Y), the process proceeds to step S93.
[0179]
In step S93, the variable i is incremented (step S92), and it is determined whether or not the variable i is smaller than M (step S94). When the variable i is smaller than M (step S94: Y), the process returns to step S83. When the variable i is greater than or equal to M (step S94: N), the process proceeds to step S95. As a result, skinning processing is performed on the M model objects at a rate of once every G times alternately, and skinning processing is not performed on many model objects in the same frame.
[0180]
In step S95 shown in FIG. 19, the variable j is initialized to 0 (step S95). Then, the jth screen is initialized (step S96), and the position / rotation and angle of view of the virtual camera for the jth screen (jth virtual camera) are set (step S97).
[0181]
Next, the variable i is initialized again to 0 (step S98), and it is determined whether or not the variable e [i] is set to 1 (step S99). When it is determined that the variable e [i] is set to 1 (step S99: Y), the
[0182]
Then, the variable i is incremented (step S101).
[0183]
On the other hand, when it is determined in step S99 that the variable e [i] is not set to 1 (step S99: N), step S100 is omitted and the process proceeds to step S101. This is because it is determined that the vertex data after the skinning process for the i-th model object has not been obtained, and it is inconvenient to perform the drawing process.
[0184]
In step S102, it is determined whether or not the variable i is smaller than M. When the variable i is smaller than M (step S102: Y), the process returns to step S99. As a result, an image on which M display objects are displayed is generated on the jth screen (jth divided display screen) based on the vertex data after the skinning process of the M model objects stored in step S88. can do.
[0185]
On the other hand, when the variable i is greater than or equal to M in step S102 (step S102: N), the variable j is incremented (step S103). When the variable j is smaller than N (step S104: Y), the process returns to step S96. Therefore, M × N display objects based on the vertex data of the model object after the skinning process stored in step S88 are displayed on the first to Nth screens (first to Nth divided display screens). An image can be generated.
[0186]
In step S104, when the variable j is N or more (step S104: N), the variable cnt is incremented (step S105).
[0187]
Subsequently, it is determined whether or not a predetermined end condition such as a game over is satisfied, and when it is ended (step S106: Y), a series of processes is ended. When it is not finished (step S106: N), the process returns to step S82.
[0188]
18 and 19, when G is 2, as shown in FIG. 11B, the skinning processing load can be distributed between odd frames and even frames according to the model object.
[0189]
20 and FIG. 21, a plurality of display objects are displayed on each divided display screen based on vertex data after skinning processing of M (M is a natural number) model objects on N screens (divided display screens). An example of the processing flow when a shadow image of a plurality of display objects is displayed is shown. However, the description of the variables common to the processing flows shown in FIGS. 15 and 16 is omitted.
[0190]
First, variables f [0] to f [M−1] are initialized to 0 (step S120). The variable i is initialized to 0 (step S121).
[0191]
Next, a character position rotation matrix defined by the i-th model object is created (step S122).
[0192]
Then, the skinning
[0193]
Then, for the vertex data after the skinning process as local data that is character data in the local coordinate system, a shadow matrix shown in FIG. 13C and a world coordinate system conversion matrix for conversion into the world coordinate system are obtained. Using this, the i-th shadow display data is generated (step S125).
[0194]
Furthermore, world coordinate transformation is performed on the obtained vertex data after the skinning process using the position rotation matrix obtained in step S122 (step S126) to obtain vertex data (character data) after the skinning process of the world coordinate system. .
[0195]
Subsequently, the shadow display data after the world coordinate conversion and the vertex data after the skinning process are stored in the main storage unit 172 (step S127).
[0196]
Next, the variable f [i] is incremented (step S128). When the variable f [i] is equal to or greater than Fmax [i] (step S129: N), the variable f [i] is initialized to 0 (step S130), and the process proceeds to step S131. In step S129, when the variable f [i] is smaller than Fmax [i] (step S129: Y), the process proceeds to step S131.
[0197]
In step S131, the variable i is incremented (step S131), and it is determined whether or not the variable i is smaller than M (step S132). When the variable i is smaller than M (step S132: Y), the process returns to step S122. When the variable i is greater than or equal to M (step S132: N), the process proceeds to step S133. Thereby, the vertex data after the skinning process for generating images of M display objects and the vertex data for generating shadow images of these display objects can be obtained.
[0198]
In step S133 shown in FIG. 21, the variable j is initialized to 0 (step S133). Then, the jth screen is initialized (step S134), and the position / rotation and angle of view of the virtual camera for the jth screen (jth virtual camera) are set (step S135).
[0199]
Next, the variable i is initialized again to 0 (step S136), and the
[0200]
Further, the
[0201]
Then, the variable i is incremented (step S139). It is determined whether or not the variable i is smaller than M. When the variable i is smaller than M (step S140: Y), the process returns to step S137. As a result, the M display objects and the shadows of these display objects are displayed on the jth screen (jth divided display screen) based on the vertex data after skinning processing of the M model objects stored in step S127. Can be generated.
[0202]
On the other hand, when the variable i is greater than or equal to M in step S140 (step S140: N), the variable j is incremented (step S141). When the variable j is smaller than N (step S142: Y), the process returns to step S134. Therefore, on the 1st to Nth screens (first to Nth divided display screens), M × N display objects and their shadows based on the vertex data of the model object after the skinning process stored in step S127. Can be generated.
[0203]
In step S142, when the variable j is greater than or equal to N (step S142: N), it is determined whether or not a predetermined end condition such as game over is satisfied. When the variable j is ended (step S143: Y), a series of processing is performed. finish. When it is not the end (step S143: N), the process returns to step S121.
[0204]
As a result, as shown in FIG. 8, 16 display objects based on vertex data after skinning processing of object data of four model objects and their shadows are displayed on the first to fourth divided display screens. Can be generated with a smaller processing load.
[0205]
4). Hardware configuration
FIG. 22 shows an example of a hardware configuration that can realize this embodiment.
[0206]
The
[0207]
The
[0208]
The
[0209]
The
[0210]
The drawing
[0211]
The
[0212]
The
[0213]
The
[0214]
Note that the processing of each unit (each unit) of the present embodiment may be realized entirely by hardware, or only by a program stored in an information storage medium or a program distributed via a communication interface. May be. Alternatively, it may be realized by both hardware and a program.
[0215]
When the processing of each part of this embodiment is realized by both hardware and a program, a program for causing the hardware (computer) to function as each part of this embodiment is stored in the information storage medium. More specifically, the program instructs each
[0216]
FIG. 23A shows an application example of this embodiment to the arcade game system. The player enjoys the game by operating the
[0217]
FIG. 23B shows an application example of this embodiment to a home game system. In this case, the stored program (stored information) is stored in the
[0218]
FIG. 23C illustrates the embodiment of the present invention to a system including a
[0219]
The present invention is not limited to the one described in the above embodiment, and various modifications can be made.
[0220]
For example, a term cited as a broad term in the description in the specification or the drawings can be replaced with a broad term in other descriptions in the specification or the drawings.
[0221]
In the invention according to the dependent claims of the present invention, a part of the constituent features of the dependent claims can be omitted. Moreover, the principal part of the invention according to one independent claim of the present invention can be made dependent on another independent claim.
[0222]
Further, the present invention can be applied to various games (such as fighting games, competitive games, shooting games, robot battle games, sports games, role playing games, etc.).
[0223]
In addition, the present invention is applied to various image generation systems (game systems) such as a business game system, a home game system, a large attraction system in which a large number of players participate, a simulator, a multimedia terminal, and a system board for generating game images. Applicable.
[Brief description of the drawings]
FIG. 1 is an example of a functional block diagram of an image generation system according to an embodiment.
FIG. 2 is a schematic diagram for explaining an overview of processing of the present embodiment.
FIG. 3 is a diagram illustrating a configuration example of a model object modeled by a skeleton model.
4A to 4C are explanatory diagrams of motion data. FIG.
FIGS. 5A and 5B are explanatory diagrams of object data. FIG.
6A and 6B are explanatory diagrams of display object drawing data. FIG.
FIG. 7 is a diagram showing an example of a game image.
FIG. 8 is a diagram showing another example of a game image.
FIG. 9 is a diagram showing an outline of an example of an image in which a plurality of display objects generated based on one model object are displayed on one display screen.
FIGS. 10A and 10B are diagrams illustrating load reduction by omitting the skinning process in the present embodiment.
FIGS. 11A and 11B are explanatory diagrams of a technique for distributing skinning processing according to model objects.
FIGS. 12A and 12B are diagrams illustrating load reduction by distributing skinning processing according to model objects in the present embodiment.
FIGS. 13A, 13B, and 13C are explanatory diagrams of shadow generation in the present embodiment.
FIG. 14 is a flowchart showing an example of processing for generating an image in which a plurality of display objects are displayed on a plurality of screens using object data of one model object.
FIG. 15 is a flowchart showing the first half of an example of processing for generating an image in which a plurality of display objects are displayed on a plurality of screens using object data of a plurality of model objects.
16 is a diagram showing the second half of the flow of FIG.
FIG. 17 is a flowchart showing an example of processing for generating an image in which a plurality of display objects are displayed on one screen based on vertex data after skinning processing of one model object.
FIG. 18 is a flowchart of the first half of an example of processing when changing a frame on which skinning processing is performed according to a model object.
FIG. 19 is a diagram showing the second half of the flow of FIG.
FIG. 20 is a flowchart illustrating an example of processing when a plurality of display objects and shadow images of the plurality of display objects are displayed on a plurality of screens based on vertex data after skinning processing of a plurality of model objects.
FIG. 21 is a diagram showing the second half of the flow of FIG.
FIG. 22 is a diagram illustrating a hardware configuration example.
FIGS. 23A, 23B, and 23C are diagrams showing examples of various forms of systems. FIGS.
[Explanation of symbols]
100 processing unit, 110 object space processing unit,
111 model object control unit, 112 virtual camera setting unit,
114 skinning processing unit, 116 geometry processing unit, 118 shadow processing unit,
120 image generation unit, 130 sound generation unit, 160 operation unit, 170 storage unit,
172 main storage unit, 174 drawing buffer, 180 information storage medium,
190 display unit, 192 sound output unit, 194 portable information storage device,
196 communication unit, GP-1 to GP-N 1st to Nth geometry processing,
MDAT motion data, OBJD object data
SP skinning processing, TMP temporary data
Claims (19)
モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、
前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、
前記記憶部に記憶された前記頂点データに基づいて、互いに異なる第1〜第N(Nは2以上の整数)のジオメトリ処理を行い、第1〜第Nの表示物描画データを求めるジオメトリ処理部と、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成する画像生成部と、
を含むことを特徴とする画像生成システム。An image generation system for generating an image,
A skinning processing unit that performs skinning processing based on the object data of the model object and the motion data of the model object, and generates vertex data of the model object after the skinning processing;
A storage unit for storing vertex data of the model object after the skinning process;
Geometry processing unit that performs first to Nth (N is an integer of 2 or more) different geometry processing based on the vertex data stored in the storage unit to obtain first to Nth display object drawing data When,
An image generating unit that performs drawing processing of the first to Nth display objects based on the first to Nth display object drawing data, and generates an image on which the first to Nth display objects are displayed;
An image generation system comprising:
前記ジオメトリ処理部が、
前記頂点データに基づいて第1〜第Nのスクリーンへの透視変換を行って、前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面が分割された第1〜第Nの分割表示画面に前記第1〜第Nの表示物が表示された画像を生成することを特徴とする画像生成システム。In claim 1,
The geometry processing unit
Perform perspective transformation to the first to Nth screens based on the vertex data to obtain the first to Nth display object drawing data,
The image generator
The first to Nth display objects are drawn based on the first to Nth display object drawing data, and the first to Nth divided display screens are divided into the first to Nth divided display screens. An image generation system for generating an image on which the display object is displayed.
前記ジオメトリ処理部が、
前記頂点データに基づいて第1〜第Nのワールド座標変換を行って、前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面に前記第1〜第Nの表示物が表示された画像を生成することを特徴とする画像生成システム。In claim 1,
The geometry processing unit
First to Nth world coordinate transformation is performed based on the vertex data to obtain the first to Nth display object drawing data,
The image generator
The first to Nth display objects are drawn based on the first to Nth display object drawing data, and an image in which the first to Nth display objects are displayed on a display screen is generated. A featured image generation system.
前記ジオメトリ処理部が、
過去のフレームで前記記憶部に記憶された前記頂点データに基づいて前記第1〜第Nのジオメトリ処理を行って前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて前記第1〜第Nの表示物の描画処理を行い、当該フレームでの前記第1〜第Nの表示物が表示された画像を生成することを特徴とする画像生成システム。In any one of Claims 1 thru | or 3,
The geometry processing unit
Obtaining the first to Nth display object drawing data by performing the first to Nth geometry processing based on the vertex data stored in the storage unit in a past frame;
The image generator
The first to Nth display objects are rendered based on the first to Nth display object drawing data, and an image in which the first to Nth display objects are displayed in the frame is generated. An image generation system characterized by that.
前記スキニング処理部が、
第1のフレームでは、第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づく第1のスキニング処理を行ってスキニング処理後の第1の頂点データを求めると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略し、
第2のフレームでは、前記第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略すると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づく第2のスキニング処理を行ってスキニング処理後の第2の頂点データを求め、
前記ジオメトリ処理部が、
前記第1のフレームで求められた前記第1の頂点データに基づいて第1〜第Nのジオメトリ処理を行い第1〜第Nの表示物描画データを求めると共に、前記第2のフレームで求められた前記第2の頂点データに基づいて第(N+1)〜第L(Lは(N+1)以上の整数)のジオメトリ処理を行い第(N+1)〜第Lの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Lの表示物描画データに基づいて第1〜第Lの表示物の描画処理を行い、前記第1〜第Lの表示物が表示された画像を生成することを特徴とする画像生成システム。In any one of Claims 1 thru | or 3,
The skinning processing unit
In the first frame, a first skinning process based on the object data of the first model object and the motion data of the first model object is performed to obtain the first vertex data after the skinning process, and the second The skinning process based on the object data of the model object and the motion data of the second model object is omitted,
In the second frame, the skinning process based on the object data of the first model object and the motion data of the first model object is omitted, and the object data of the second model object and the second model object are omitted. The second skinning process based on the motion data of the second to obtain the second vertex data after the skinning process,
The geometry processing unit
Based on the first vertex data obtained in the first frame, first to Nth geometry processing is performed to obtain first to Nth display object drawing data, and obtained in the second frame. The (N + 1) th to Lth (L is an integer greater than or equal to (N + 1)) geometry processing is performed based on the second vertex data to obtain (N + 1) th to Lth display object drawing data,
The image generator
The first to Lth display objects are rendered based on the first to Lth display object drawing data, and an image on which the first to Lth display objects are displayed is generated. Image generation system.
前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部を含み、
前記ジオメトリ処理部が、
前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、
前記画像生成部が、
前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成することを特徴とする画像生成システム。In any one of Claims 1 thru | or 5,
A shadow processing unit that generates at least one shadow display data of the first to Nth display objects using vertex data of the model object after the skinning process;
The geometry processing unit
Geometry processing is performed based on the shadow display data to obtain shadow drawing data,
The image generator
Based on the shadow drawing data, a shadow drawing process of any of the first to Nth display objects is performed to generate an image in which the shadows of the first to Nth display objects are displayed. Image generation system.
モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、
前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、
前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求めるジオメトリ処理部と、
前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成する画像生成部と、
を含み、
第K(Kは自然数)のフレームにおいて、
前記スキニング処理部が、前記スキニング処理後のモデルオブジェクトの頂点データを生成し、
前記記憶部が、前記スキニング処理後のオブジェクトの頂点データを記憶し、
前記ジオメトリ処理部が、前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、
前記画像生成部が、前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成し、
前記第Kのフレーム以降のフレームにおいて、
前記ジオメトリ処理部が、前記第Kのフレームにおいて前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、
前記画像生成部が、当該フレームにおいて求められた前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成することを特徴とする画像生成システム。An image generation system for generating an image,
A skinning processing unit that performs skinning processing based on the object data of the model object and the motion data of the model object, and generates vertex data of the model object after the skinning processing;
A storage unit for storing vertex data of the model object after the skinning process;
A geometry processing unit that obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit;
An image generation unit that performs a display object drawing process based on the display object drawing data and generates an image on which the display object is displayed;
Including
In the Kth frame (K is a natural number),
The skinning processing unit generates vertex data of the model object after the skinning processing,
The storage unit stores vertex data of the object after the skinning process,
The geometry processing unit obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit,
The image generation unit performs a display object drawing process based on the display object drawing data, generates an image on which the display object is displayed,
In frames after the Kth frame,
The geometry processing unit obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit in the Kth frame,
The image generation system, wherein the image generation unit performs a display object drawing process based on the display object drawing data obtained in the frame, and generates an image on which the display object is displayed.
前記ジオメトリ処理部が、
前記記憶部に記憶された前記頂点データに基づいて、ジオメトリ処理を行い、第1〜第N(Nは2以上の自然数)の表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成することを特徴とする画像生成システム。In claim 7,
The geometry processing unit
Based on the vertex data stored in the storage unit, geometry processing is performed to obtain first to Nth display object drawing data (N is a natural number of 2 or more),
The image generator
The first to Nth display objects are drawn based on the first to Nth display object drawing data, and an image on which the first to Nth display objects are displayed is generated. Image generation system.
前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部を含み、
前記ジオメトリ処理部が、
前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、
前記画像生成部が、
前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成することを特徴とする画像生成システム。In claim 8,
A shadow processing unit that generates at least one shadow display data of the first to Nth display objects using vertex data of the model object after the skinning process;
The geometry processing unit
Geometry processing is performed based on the shadow display data to obtain shadow drawing data,
The image generator
Based on the shadow drawing data, a shadow drawing process of any of the first to Nth display objects is performed to generate an image in which the shadows of the first to Nth display objects are displayed. Image generation system.
モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、
前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、
前記記憶部に記憶された前記頂点データに基づいて、互いに異なる第1〜第N(Nは2以上の整数)のジオメトリ処理を行い、第1〜第Nの表示物描画データを求めるジオメトリ処理部と、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。A program for generating an image,
A skinning processing unit that performs skinning processing based on the object data of the model object and the motion data of the model object, and generates vertex data of the model object after the skinning processing;
A storage unit for storing vertex data of the model object after the skinning process;
Geometry processing unit that performs first to Nth (N is an integer of 2 or more) different geometry processing based on the vertex data stored in the storage unit to obtain first to Nth display object drawing data When,
As an image generation unit that performs drawing processing of the first to Nth display objects based on the first to Nth display object drawing data, and generates an image on which the first to Nth display objects are displayed,
A program characterized by causing a computer to function.
前記ジオメトリ処理部が、
前記頂点データに基づいて第1〜第Nのスクリーンへの透視変換を行って、前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面が分割された第1〜第Nの分割表示画面に前記第1〜第Nの表示物が表示された画像を生成することを特徴とするプログラム。In claim 10,
The geometry processing unit
Perform perspective transformation to the first to Nth screens based on the vertex data to obtain the first to Nth display object drawing data,
The image generator
The first to Nth display objects are drawn based on the first to Nth display object drawing data, and the first to Nth divided display screens are divided into the first to Nth divided display screens. A program for generating an image on which a display object is displayed.
前記ジオメトリ処理部が、
前記頂点データに基づいて第1〜第Nのワールド座標変換を行って、前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、表示画面に前記第1〜第Nの表示物が表示された画像を生成することを特徴とするプログラム。In claim 10,
The geometry processing unit
First to Nth world coordinate transformation is performed based on the vertex data to obtain the first to Nth display object drawing data,
The image generator
Performing drawing processing of the first to Nth display objects based on the first to Nth display object drawing data, and generating an image in which the first to Nth display objects are displayed on a display screen; A featured program.
前記ジオメトリ処理部が、
過去のフレームで前記記憶部に記憶された前記頂点データに基づいて前記第1〜第Nのジオメトリ処理を行って前記第1〜第Nの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて前記第1〜第Nの表示物の描画処理を行い、当該フレームでの前記第1〜第Nの表示物が表示された画像を生成することを特徴とするプログラム。In any of claims 10 to 12,
The geometry processing unit
Obtaining the first to Nth display object drawing data by performing the first to Nth geometry processing based on the vertex data stored in the storage unit in a past frame;
The image generator
The first to Nth display objects are rendered based on the first to Nth display object rendering data, and an image in which the first to Nth display objects are displayed in the frame is generated. A program characterized by that.
前記スキニング処理部が、
第1のフレームでは、第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づく第1のスキニング処理を行ってスキニング処理後の第1の頂点データを求めると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略し、
第2のフレームでは、前記第1のモデルオブジェクトのオブジェクトデータと該第1のモデルオブジェクトのモーションデータとに基づくスキニング処理を省略すると共に、第2のモデルオブジェクトのオブジェクトデータと該第2のモデルオブジェクトのモーションデータとに基づく第2のスキニング処理を行ってスキニング処理後の第2の頂点データを求め、
前記ジオメトリ処理部が、
前記第1のフレームで求められた前記第1の頂点データに基づいて第1〜第Nのジオメトリ処理を行い第1〜第Nの表示物描画データを求めると共に、前記第2のフレームで求められた前記第2の頂点データに基づいて第(N+1)〜第L(Lは(N+1)以上の整数)のジオメトリ処理を行い第(N+1)〜第Lの表示物描画データを求め、
前記画像生成部が、
前記第1〜第Lの表示物描画データに基づいて第1〜第Lの表示物の描画処理を行い、前記第1〜第Lの表示物が表示された画像を生成することを特徴とするプログラム。In any of claims 10 to 12,
The skinning processing unit
In the first frame, a first skinning process based on the object data of the first model object and the motion data of the first model object is performed to obtain the first vertex data after the skinning process, and the second The skinning process based on the object data of the model object and the motion data of the second model object is omitted,
In the second frame, the skinning process based on the object data of the first model object and the motion data of the first model object is omitted, and the object data of the second model object and the second model object are omitted. The second skinning process based on the motion data of the second to obtain the second vertex data after the skinning process,
The geometry processing unit
Based on the first vertex data obtained in the first frame, first to Nth geometry processing is performed to obtain first to Nth display object drawing data, and obtained in the second frame. The (N + 1) th to Lth (L is an integer greater than or equal to (N + 1)) geometry processing is performed based on the second vertex data to obtain (N + 1) th to Lth display object drawing data,
The image generator
The first to Lth display objects are rendered based on the first to Lth display object drawing data, and an image on which the first to Lth display objects are displayed is generated. program.
前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部としてコンピュータを機能させ、
前記ジオメトリ処理部が、
前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、
前記画像生成部が、
前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成することを特徴とするプログラム。In any of claims 10 to 14,
Using the vertex data of the model object after the skinning process, causing a computer to function as a shadow processing unit that generates at least one shadow display data of the first to Nth display objects,
The geometry processing unit
Geometry processing is performed based on the shadow display data to obtain shadow drawing data,
The image generator
Based on the shadow drawing data, a shadow drawing process of any of the first to Nth display objects is performed to generate an image in which the shadows of the first to Nth display objects are displayed. Program to do.
モデルオブジェクトのオブジェクトデータと該モデルオブジェクトのモーションデータに基づいてスキニング処理を行い、スキニング処理後のモデルオブジェクトの頂点データを生成するスキニング処理部と、
前記スキニング処理後のモデルオブジェクトの頂点データを記憶する記憶部と、
前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求めるジオメトリ処理部と、
前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成する画像生成部としてコンピュータを機能させ、
第K(Kは自然数)のフレームにおいて、
前記スキニング処理部が、前記スキニング処理後のモデルオブジェクトの頂点データを生成し、
前記記憶部が、前記スキニング処理後のオブジェクトの頂点データを記憶し、
前記ジオメトリ処理部が、前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、
前記画像生成部が、前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成し、
前記第Kのフレーム以降のフレームにおいて、
前記ジオメトリ処理部が、前記第Kのフレームにおいて前記記憶部に記憶された前記頂点データに基づいてジオメトリ処理を行って表示物描画データを求め、
前記画像生成部が、当該フレームにおいて求められた前記表示物描画データに基づいて表示物の描画処理を行い、前記表示物が表示された画像を生成することを特徴とするプログラム。A program for generating an image,
A skinning processing unit that performs skinning processing based on the object data of the model object and the motion data of the model object, and generates vertex data of the model object after the skinning processing;
A storage unit for storing vertex data of the model object after the skinning process;
A geometry processing unit that obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit;
Performing display object drawing processing based on the display object drawing data, causing the computer to function as an image generation unit that generates an image on which the display object is displayed,
In the Kth frame (K is a natural number),
The skinning processing unit generates vertex data of the model object after the skinning processing,
The storage unit stores vertex data of the object after the skinning process,
The geometry processing unit obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit,
The image generation unit performs a display object drawing process based on the display object drawing data, generates an image on which the display object is displayed,
In frames after the Kth frame,
The geometry processing unit obtains display object drawing data by performing geometry processing based on the vertex data stored in the storage unit in the Kth frame,
The program, wherein the image generation unit performs a display object drawing process based on the display object drawing data obtained in the frame and generates an image on which the display object is displayed.
前記ジオメトリ処理部が、
前記記憶部に記憶された前記頂点データに基づいて、ジオメトリ処理を行い、第1〜第N(Nは2以上の自然数)の表示物描画データを求め、
前記画像生成部が、
前記第1〜第Nの表示物描画データに基づいて第1〜第Nの表示物の描画処理を行い、前記第1〜第Nの表示物が表示された画像を生成することを特徴とするプログラム。In claim 16,
The geometry processing unit
Based on the vertex data stored in the storage unit, geometry processing is performed to obtain first to Nth display object drawing data (N is a natural number of 2 or more),
The image generator
The first to Nth display objects are rendered based on the first to Nth display object rendering data, and an image on which the first to Nth display objects are displayed is generated. program.
前記スキニング処理後のモデルオブジェクトの頂点データを用いて、前記第1〜第Nの表示物の少なくとも1つの影表示データを生成する影処理部としてコンピュータを機能させ、
前記ジオメトリ処理部が、
前記影表示データに基づいてジオメトリ処理を行い、影描画データを求め、
前記画像生成部が、
前記影描画データに基づいて前記第1〜第Nの表示物のいずれかの影の描画処理を行い、前記第1〜第Nの表示物の影が表示された画像を生成することを特徴とするプログラム。In claim 17,
Using the vertex data of the model object after the skinning process, causing a computer to function as a shadow processing unit that generates at least one shadow display data of the first to Nth display objects,
The geometry processing unit
Geometry processing is performed based on the shadow display data to obtain shadow drawing data,
The image generator
Based on the shadow drawing data, a shadow drawing process of any of the first to Nth display objects is performed to generate an image in which the shadows of the first to Nth display objects are displayed. Program to do.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003131576A JP4229316B2 (en) | 2003-05-09 | 2003-05-09 | Image generation system, program, and information storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003131576A JP4229316B2 (en) | 2003-05-09 | 2003-05-09 | Image generation system, program, and information storage medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004334662A true JP2004334662A (en) | 2004-11-25 |
JP4229316B2 JP4229316B2 (en) | 2009-02-25 |
Family
ID=33506710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003131576A Expired - Fee Related JP4229316B2 (en) | 2003-05-09 | 2003-05-09 | Image generation system, program, and information storage medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4229316B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012223371A (en) * | 2011-04-20 | 2012-11-15 | Sega Corp | Game program, game system, game device, and storage medium |
JP6487083B1 (en) * | 2018-03-07 | 2019-03-20 | 株式会社スクウェア・エニックス | Skinning decomposition acceleration method and skinning decomposition acceleration program considering locality of weight map |
CN112634415A (en) * | 2020-12-11 | 2021-04-09 | 北方信息控制研究院集团有限公司 | Human body skeleton model-based real-time simulation method for human actions |
JP2021527895A (en) * | 2018-06-21 | 2021-10-14 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Object modeling operation method and device and device |
-
2003
- 2003-05-09 JP JP2003131576A patent/JP4229316B2/en not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012223371A (en) * | 2011-04-20 | 2012-11-15 | Sega Corp | Game program, game system, game device, and storage medium |
JP6487083B1 (en) * | 2018-03-07 | 2019-03-20 | 株式会社スクウェア・エニックス | Skinning decomposition acceleration method and skinning decomposition acceleration program considering locality of weight map |
JP2019159348A (en) * | 2018-03-07 | 2019-09-19 | 株式会社スクウェア・エニックス | Skinning decomposition acceleration method considering locality of weight map and skinning decomposition acceleration program of the same |
JP2021527895A (en) * | 2018-06-21 | 2021-10-14 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Object modeling operation method and device and device |
US11436802B2 (en) | 2018-06-21 | 2022-09-06 | Huawei Technologies Co., Ltd. | Object modeling and movement method and apparatus, and device |
JP7176012B2 (en) | 2018-06-21 | 2022-11-21 | 華為技術有限公司 | OBJECT MODELING OPERATING METHOD AND APPARATUS AND DEVICE |
CN112634415A (en) * | 2020-12-11 | 2021-04-09 | 北方信息控制研究院集团有限公司 | Human body skeleton model-based real-time simulation method for human actions |
CN112634415B (en) * | 2020-12-11 | 2023-11-10 | 北方信息控制研究院集团有限公司 | Human body skeleton model-based personnel action real-time simulation method |
Also Published As
Publication number | Publication date |
---|---|
JP4229316B2 (en) | 2009-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002222435A (en) | Image generation system, program, and information storage medium | |
US6890261B2 (en) | Game system, program and image generation method | |
JP4229316B2 (en) | Image generation system, program, and information storage medium | |
JP3576126B2 (en) | Image generation system, program, and information storage medium | |
JP4743770B2 (en) | Image generation system, program, and information storage medium | |
JP4245356B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP2001079261A (en) | Image forming system and information recording medium | |
JP2001229403A (en) | Game system and information storage medium | |
JP3748451B1 (en) | Program, information storage medium, and image generation system | |
JP4577968B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP2002216167A (en) | Image generation system, program and information storage medium | |
JP4574058B2 (en) | Image generation system, program, and information storage medium | |
JP4786389B2 (en) | Program, information storage medium, and image generation system | |
JP4159060B2 (en) | Image generating apparatus and information storage medium | |
JP4592039B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP2002035409A (en) | Game system and information recording medium | |
JP3377490B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP3431562B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP2004038639A (en) | System for generating picture, program and medium for recording information | |
JP4641602B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4162125B2 (en) | Image generation system, program, and information storage medium | |
JP2003162734A (en) | Game system and information storage medium | |
JP4662260B2 (en) | Program, information storage medium, and image generation system | |
JP2005209217A (en) | Game system and information storage medium | |
JP4480322B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060327 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080903 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081028 |
|
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: 20081126 |
|
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: 20081127 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4229316 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: 20111212 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111212 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111212 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111212 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121212 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: 20121212 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131212 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 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |