(57)【要約】【課題】より自然な関節部分の画像を少ない処理負荷で生成できるプログラム、情報記憶媒体、画像生成システム等の提供。【解決手段】画像生成システムは、モーションデータ記憶部と、モーション処理部と、モーション処理により動作するモデルオブジェクトの描画処理を行い、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部を含む。モーション処理部は、モデルオブジェクトの隣り合う第１、第２のパーツオブジェクトが関節運動を行うモーション処理を行う。画像生成部は、第１、第２のパーツオブジェクトの関節運動の伸展側領域では、第１、第２のパーツオブジェクトの関節面に対応する頂点を有し、第１、第２のパーツオブジェクトの関節運動の屈曲側領域では、関節面に対応する頂点を有しないモデルオブジェクトの描画処理を行う。【選択図】      図５
2011095935.tif 000002
【特許請求の範囲】
【請求項１】
モデルオブジェクトのモーションデータを記憶するモーションデータ記憶部と、
前記モーションデータに基づいて前記モデルオブジェクトのモーション処理を行うモーション処理部と、
前記モーション処理により動作する前記モデルオブジェクトの描画処理を行い、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部として、
コンピュータを機能させ、
前記モーション処理部は、
前記モデルオブジェクトの隣り合う第１、第２のパーツオブジェクトが関節運動を行うモーション処理を行い、
前記画像生成部は、
前記第１、第２のパーツオブジェクトの関節運動の伸展側領域では、前記第１、第２のパーツオブジェクトの関節面に対応する頂点を有し、前記第１、第２のパーツオブジェクトの関節運動の屈曲側領域では、前記関節面に対応する頂点を有しない前記モデルオブジェクトの描画処理を行うことを特徴とするプログラム。
【請求項２】
請求項１において、
前記第１のパーツオブジェクト側の前記屈曲側領域の頂点のうち、前記関節面に隣接する頂点を第１の頂点とし、前記第２のパーツオブジェクト側の前記屈曲側領域の頂点のうち、前記関節面に隣接する頂点を第２の頂点とした場合に、
前記画像生成部は、
前記第１の頂点と前記第２の頂点を結ぶ線分を一辺とするポリゴンを描画して、前記第１、第２のパーツオブジェクトの関節部分での画像を生成することを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記伸展側領域では前記関節面に対応する頂点を有し、前記屈曲側領域では前記関節面に対応する頂点を有しない前記モデルオブジェクトのモデルデータを記憶するモデルデータ記憶部として、
コンピュータを機能させ、
前記画像生成部は、
前記モデルデータ記憶部に記憶される前記モデルデータに基づいて、前記モデルオブジェクトの描画処理を行うことを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記画像生成部は、
前記屈曲側領域のうちの第１の側面側領域では前記関節面に対応する頂点を有し、前記屈曲側領域のうちの第２の側面側領域では前記関節面に対応する頂点を有しない前記モデルオブジェクトの描画処理を行うことを特徴とするプログラム。
【請求項５】
請求項４において、
前記第１のパーツオブジェクトは上腕オブジェクトであり、前記第２のパーツオブジェクトは前腕オブジェクトであり、前記第１の側面側領域は小指側の領域であり、前記第２の側面側領域は親指側の領域であることを特徴とするプログラム。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記第１のパーツオブジェクトに対応して設けられる第１の骨と、前記第２のパーツオブジェクトに対応して設けられる第２の骨と、前記第１、第２のパーツオブジェクトの関節部分に対応して設けられる関節骨に基づいて、前記第１、第２のパーツオブジェクトの頂点位置を求める頂点処理部として、
コンピュータを機能させ、
前記頂点処理部は、
前記伸展側領域における前記関節面に対応する頂点については、前記関節骨に追従させる演算処理を行って頂点位置を求めることを特徴とするプログラム。
【請求項７】
請求項６において、
前記モーション処理部は、
関節運動時に前記第２の骨の回転に連動させて前記関節骨を回転させることを特徴とするプログラム。
【請求項８】
請求項７において、
前記モーション処理部は、
前記第２の骨の回転角度をθ＝θＢとした場合に、前記関節骨をθ＝θＪ（θＪ＜θＢ）の回転角度だけ回転させることを特徴とするプログラム。
【請求項９】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至８のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１０】
モデルオブジェクトのモーションデータを記憶するモーションデータ記憶部と、
前記モーションデータに基づいて前記モデルオブジェクトのモーション処理を行うモーション処理部と、
前記モーション処理により動作する前記モデルオブジェクトの描画処理を行い、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、
前記モーション処理部は、
前記モデルオブジェクトの隣り合う第１、第２のパーツオブジェクトが関節運動を行うモーション処理を行い、
前記画像生成部は、
前記第１、第２のパーツオブジェクトの関節運動の伸展側領域では、前記第１、第２のパーツオブジェクトの関節面に対応する頂点を有し、前記第１、第２のパーツオブジェクトの関節運動の屈曲側領域では、前記関節面に対応する頂点を有しない前記モデルオブジェクトの描画処理を行うことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【０００２】
従来より、キャラクタ等のモデルオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、操作部（ゲームコントローラ）を用いてキャラクタ（モデルオブジェクト）を操作し、相手プレーヤやコンピュータが操作する他キャラクタ（敵キャラクタ）と対戦することでゲームを楽しむ。
【０００３】
このような画像生成システムでは、モーションデータに基づくモーション処理を行うことで、キャラクタの動作を表現する。モーション処理では、頭部、胴体、腕等の複数のパーツオブジェクトで構成されるモデルオブジェクトによりキャラクタを表し、これらのパーツオブジェクトに関節運動を行わせることで、キャラクタのリアルな動きを表現する。このようなモーション処理における関節運動に関する従来技術としては、例えば特許文献１に開示される技術がある。
【０００４】
しかしながら、これまでのモーション処理では、例えばキャラクタの上腕と前腕の関節運動の際に、肘関節の部分が極端に細くなってしまい、不自然な画像が生成されてしまうという問題がある。このような問題を解決する手法として、上腕や前腕の関節部分でのポリゴン数を増やす手法も考えられるが、これはポリゴン数の増加により処理負荷が重くなるという問題を招く。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−９４３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の幾つかの態様によれば、より自然な関節部分の画像を少ない処理負荷で生成できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、モデルオブジェクトのモーションデータを記憶するモーションデータ記憶部と、前記モーションデータに基づいて前記モデルオブジェクトのモーション処理を行うモーション処理部と、前記モーション処理により動作する前記モデルオブジェクトの描画処理を行い、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、前記モーション処理部は、前記モデルオブジェクトの隣り合う第１、第２のパーツオブジェクトが関節運動を行うモーション処理を行い、前記画像生成部は、前記第１、第２のパーツオブジェクトの関節運動の伸展側領域では、前記第１、第２のパーツオブジェクトの関節面に対応する頂点を有し、前記第１、第２のパーツオブジェクトの関節運動の屈曲側領域では、前記関節面に対応する頂点を有しない前記モデルオブジェクトの描画処理を行う画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００８】
本発明の一態様では、モデルオブジェクトの隣り合う第１、第２のパーツオブジェクトが関節運動を行うモーション処理が行われる。そしてモデルオブジェクトは、関節運動の伸展側領域においては、関節面に対応する頂点（関節面の場所に位置する頂点）を有している。一方、関節運動の屈曲側領域においては、関節面に対応する頂点を有しない。従って、このようなモデルオブジェクトを描画して画像を生成すれば、例えば関節運動の屈曲側領域において、関節面の頂点の存在を原因とする不自然な画像が生成されてしまう事態を防止できる。従って、より自然な関節部分の画像を少ない処理負荷で生成することが可能になる。
【０００９】
また本発明の一態様では、前記第１のパーツオブジェクト側の前記屈曲側領域の頂点のうち、前記関節面に隣接する頂点を第１の頂点とし、前記第２のパーツオブジェクト側の前記屈曲側領域の頂点のうち、前記関節面に隣接する頂点を第２の頂点とした場合に、前記画像生成部は、前記第１の頂点と前記第２の頂点を結ぶ線分を一辺とするポリゴンを描画して、前記第１、第２のパーツオブジェクトの関節部分での画像を生成してもよい。
【００１０】
このようにすれば、屈曲側領域において関節面に対応する頂点が設けられていない場合にも、第１のパーツオブジェクト側の第１の頂点と第２のパーツオブジェクト側の第２の頂点を結ぶ線分により構成されるポリゴンを描画することで、第１、第２のパーツオブジェクトの関節部分での画像を生成できるようになる。
【００１１】
また本発明の一態様では、前記伸展側領域では前記関節面に対応する頂点を有し、前記屈曲側領域では前記関節面に対応する頂点を有しない前記モデルオブジェクトのモデルデータを記憶するモデルデータ記憶部を含み（モデルデータ記憶部としてコンピュータを機能させ）、前記画像生成部は、前記モデルデータ記憶部に記憶される前記モデルデータに基づいて、前記モデルオブジェクトの描画処理を行ってもよい。
【００１２】
このようなデータ構造のモデルデータを用意してモデルデータ記憶部に記憶し、このモデルデータに基づきモデルオブジェクトの描画処理を行えば、関節面の頂点の存在を原因とする不自然な画像が生成されるのを防止して、より自然な関節部分の画像を少ない処理負荷で生成できるようになる。
【００１３】
また本発明の一態様では、前記画像生成部は、前記屈曲側領域のうちの第１の側面側領域では前記関節面に対応する頂点を有し、前記屈曲側領域のうちの第２の側面側領域では前記関節面に対応する頂点を有しない前記モデルオブジェクトの描画処理を行ってもよい。
【００１４】
このようにすれば、第１の側面側領域では、関節面に設けられた頂点を利用して、第１の側面側領域に応じた適切な画像を生成する一方で、第２の側面側領域では、関節面の頂点の存在を原因とする不自然な画像が生成されるのを防止して、第２の側面側領域に応じた適切な画像を生成することが可能になる。
【００１５】
また本発明の一態様では、前記第１のパーツオブジェクトは上腕オブジェクトであり、前記第２のパーツオブジェクトは前腕オブジェクトであり、前記第１の側面側領域は小指側の領域であり、前記第２の側面側領域は親指側の領域であってもよい。
【００１６】
このようにすれば、上腕と前腕の関節運動における、より自然な関節運動画像を生成できるようになる。
【００１７】
また本発明の一態様では、前記第１のパーツオブジェクトに対応して設けられる第１の骨と、前記第２のパーツオブジェクトに対応して設けられる第２の骨と、前記第１、第２のパーツオブジェクトの関節部分に対応して設けられる関節骨に基づいて、前記第１、第２のパーツオブジェクトの頂点位置を求める頂点処理部を含み（頂点処理部としてコンピュータを機能させ）、前記頂点処理部は、前記伸展側領域における前記関節面に対応する頂点については、前記関節骨に追従させる演算処理を行って頂点位置を求めてもよい。
【００１８】
このようにすれば、関節運動の屈曲側領域のみならず伸展側領域においても、より自然な関節運動画像を生成できるようになる。
【００１９】
また本発明の一態様では、前記モーション処理部は、関節運動時に前記第２の骨の回転に連動させて前記関節骨を回転させてもよい。
【００２０】
このようにすれば、第２の骨の回転に連動して回転する関節骨を用いて、伸展側領域における関節面の頂点の位置を適切に設定できるようになる。
【００２１】
また本発明の一態様では、前記モーション処理部は、前記第２の骨の回転角度をθ＝θＢとした場合に、前記関節骨をθ＝θＪ（θＪ＜θＢ）の回転角度だけ回転させてもよい。
【００２２】
このようにすれば、第２の骨に連動して回転する際の関節骨の回転角度を、第２の骨の回転角度よりも小さくすることで、伸展側領域における関節面の頂点の位置を、より適切に設定できるようになる。
【図面の簡単な説明】
【００２３】
【図１】本実施形態の画像生成システムの構成例。
【図２】モーションデータの説明図。
【図３】図３（Ａ）、図３（Ｂ）は従来例の問題点の説明図。
【図４】従来例の問題点の説明図。
【図５】図５（Ａ）、図５（Ｂ）は本実施形態の手法の説明図。
【図６】本実施形態の手法の説明図。
【図７】モデルデータのデータ構造例。
【図８】図８（Ａ）、図８（Ｂ）は関節運動の屈曲側領域の第１の側面側領域と第２の側面側領域で処理を異ならせる手法の説明図。
【図９】図９（Ａ）、図９（Ｂ）は、伸展側領域の頂点の設定手法の説明図。
【図１０】伸展側領域の頂点の設定手法の説明図。
【図１１】関節運動の詳細な画像例。
【図１２】関節運動の詳細な画像例。
【図１３】関節運動の詳細な画像例。
【図１４】関節運動の詳細な画像例。
【図１５】関節運動の詳細な画像例。
【図１６】関節運動の詳細な画像例。
【図１７】本実施形態の処理のフローチャート。
【図１８】本実施形態の処理のフローチャート。
【発明を実施するための形態】
【００２４】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２５】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図１に限定されず、その構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００２６】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ（角速度センサ、加速度センサ等）、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００２７】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００２８】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００２９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３０】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００３１】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００３２】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００３３】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３４】
処理部１００は、ゲーム演算部１０２、オブジェクト空間設定部１０４、移動処理部１０６、モーション処理部１０７、仮想カメラ制御部１０８、画像生成部１２０、音生成部１３０を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００３５】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００３６】
オブジェクト空間設定部１０４は、移動体（人、ロボット、車、戦闘機、ミサイル、弾等）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７２には、オブジェクト（パーツオブジェクト）の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【００３７】
移動処理部１０６は、モデルオブジェクト等の移動オブジェクトを移動させる処理を行う。例えば操作部１６０によりプレーヤが入力した操作データや、プログラム（移動アルゴリズム）や、各種データなどに基づいて、移動オブジェクトをオブジェクト空間内で移動させる。具体的には、移動オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動処理やモーション処理や画像生成処理を行う時間の単位である。
【００３８】
モーション処理部１０７は、キャラクタ等のモデルオブジェクトにモーション（アニメーション）を行わせるモーション処理（モーション再生、モーション生成）を行う。このモーション処理は、モデルオブジェクトのモーションを、モーションデータ記憶部１７３に記憶されているモーションデータに基づいて再生することなどで実現できる。
【００３９】
具体的にはモーションデータ記憶部１７３には、モデルオブジェクトのスケルトンを構成する各骨（モデルオブジェクトを構成する各パーツオブジェクト）の位置又は回転角度（親の骨に対する子の骨の３軸周りの回転角度）等を含むモーションデータが記憶されている。モーション処理部１０７は、このモーションデータをモーションデータ記憶部１７３から読み出し、読み出されたモーションデータに基づいてモデルオブジェクトのスケルトンを構成する各骨（パーツオブジェクト）を動かすことで（スケルトン形状を変形させることで）、モデルオブジェクトのモーションを再生する。
【００４０】
なお、モーションデータ記憶部１７３に記憶されるモーションデータは、現実世界の人にセンサをつけてモーションキャプチャを行うことで作成できるが、モーションデータを、物理シミュレーション（物理計算を利用したシミュレーション。擬似的な物理計算でもよい）やモーションブレンドなどによりリアルタイムに生成してもよい。また、少ないモーションデータ量でリアルなモーションを再生するために、インバース・キネマティクス等を用いてモーション再生を行ってもよい。
【００４１】
またモデルデータ記憶部１７４は、モデルオブジェクトのモデルデータを記憶する。このモデルデータは、例えばモデルオブジェクトの形状を規定するデータであり、モデルオブジェクトの基本姿勢や基本形状などを決めるデータである。具体的にはモデルデータ記憶部１７４は、モデルオブジェクトのスケルトンを構成する骨の位置（親の骨からの相対位置）や初期回転角度（基本姿勢での各骨の回転角度）などの初期状態情報を記憶する。またモデルオブジェクトの頂点データ（頂点位置等）を記憶する。モーション処理は、モデルデータに含まれる初期回転角度などの初期状態情報を、モーションデータに基づき更新して行くことで実現される。
【００４２】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００４３】
例えば仮想カメラによりキャラクタ、車などのモデルオブジェクト（移動体）を後方から撮影する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動処理部１０６で得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００４４】
画像生成部１２０は、処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７６（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００４５】
例えば画像生成部１２０は、頂点処理部１２２、ピクセル処理部１２４を含むことができる。
【００４６】
頂点処理部１２２（頂点シェーダ、ジオメトリーシェーダ）は頂点処理を行う。具体的には、オブジェクトの頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）に基づいて、頂点処理（頂点シェーダによるシェーディング）を行う。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４７】
頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。
【００４８】
ピクセル処理部１２４（ピクセルシェーダ）はピクセル処理を行う。具体的には、ラスタライズ後に、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）を行う。
【００４９】
ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャ記憶部１７５からのテクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４に出力（描画）する。即ち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００５０】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００５１】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００５２】
そして本実施形態ではモーション処理部１０７は、モーションデータ記憶部１７３に記憶されるモデルオブジェクトのモーションデータに基づいて、モデルオブジェクトのモーション処理を行う。そして画像生成部１２０は、モーション処理により動作するモデルオブジェクトの描画処理を行って、オブジェクト空間において仮想カメラから見える画像を生成する。
【００５３】
この場合にモーション処理部１０７は、モデルオブジェクトの隣り合う第１、第２のパーツオブジェクト（例えば上腕と前腕、大腿と脛）が関節運動を行うモーション処理を行う。例えば第１、第２のパーツオブジェクトを関節を中心に屈曲させたり伸展させるモーション処理を行う。ここで第１のパーツオブジェクトは例えば上腕オブジェクトや大腿オブジェクトである。第２のパーツオブジェクトは例えば前腕オブジェクトや脛オブジェクトである。但し、第１、第２のパーツオブジェクトはこれに限定されず、例えば第１、第２のパーツオブジェクトの少なくとも一方が、武器オブジェクト（例えばマシンガン、剣）や義足オブジェクトや義手オブジェクトであってもよい。
【００５４】
そして画像生成部１２０は、第１、第２のパーツオブジェクトの関節運動の伸展側領域では、第１、第２のパーツオブジェクトの関節面に対応する頂点を有し、第１、第２のパーツオブジェクトの関節運動の屈曲側領域では、関節面に対応する頂点を有しないモデルオブジェクトの描画処理を行う。即ちモデルデータ記憶部１７４は、伸展側領域では関節面に対応する頂点を有し、屈曲側領域では関節面に対応する頂点を有しないモデルオブジェクトのモデルデータを記憶する。そして画像生成部１２０は、モデルデータ記憶部１７４に記憶されるモデルデータに基づいて、モデルオブジェクトの描画処理を行う。
【００５５】
ここで屈曲側領域は、第１、第２のパーツオブジェクトのサーフェース領域のうち、屈曲の関節運動が行われる側の領域である。上腕と前腕の関節運動を例にとれば、屈曲側領域は、上腕オブジェクト（広義には第１のパーツオブジェクト）と前腕オブジェクト（広義には第２のパーツオブジェクト）のサーフェース領域のうち、手の平側の領域である。大腿と脛の関節運動を例にとれば、屈曲側領域は、大腿オブジェクト（広義には第１のパーツオブジェクト）と脛オブジェクト（広義には第２のパーツオブジェクト）のサーフェース領域のうち、足のかかと側の領域である。
【００５６】
一方、伸展側領域は、第１のパーツオブジェクトと第２のパーツオブジェクトのサーフェース領域のうち、伸展の関節運動が行われる側の領域（屈曲側領域の反対側の領域）である。上腕と前腕の関節運動を例にとれば、伸展側領域は、上腕オブジェクトと前腕オブジェクトのサーフェース領域のうち、手の甲側の領域である。大腿と脛の関節運動を例にとれば、伸展側領域は、大腿オブジェクトと脛オブジェクトのサーフェース領域のうち、足の甲側の領域である。
【００５７】
また関節面に対応する頂点は、例えば第１、第２のパーツオブジェクトの関節面（接続面）の場所に配置される頂点である。上腕と前腕の関節運動を例にとれば、屈曲側領域での関節面に対応する頂点は、肘関節の内側（手の平側）の頂点のうち関節面の場所に配置される頂点である。また伸展側領域での関節面に対応する頂点は、肘関節の外側（手の甲側）の頂点のうち関節面の場所に配置される頂点である。
【００５８】
また第１のパーツオブジェクト側の屈曲側領域の頂点のうち、関節面に隣接する頂点（関節面に最も近い頂点）を第１の頂点とし、第２のパーツオブジェクト側の屈曲側領域の頂点のうち関節面に隣接する頂点を第２の頂点としたとする。この場合に画像生成部１２０は、第１の頂点と前記第２の頂点を結ぶ線分を一辺とするポリゴン（プリミティブ面）を描画して、第１、第２のパーツオブジェクトの関節部分での画像（屈曲側領域の画像）を生成する。上腕と前腕の関節運動を例にとれば、肘関節の内側の上腕側の第１の頂点と、肘関節の内側の前腕側の第２の頂点を結ぶ線分を一辺とするポリゴンを描画して、肘関節の内側の画像を生成する。
【００５９】
また画像生成部１２０は、屈曲側領域のうちの第１の側面側領域では関節面に対応する頂点を有し、屈曲側領域のうちの第２の側面側の領域では関節面に対応する頂点を有しないモデルオブジェクトの描画処理を行ってもよい。上腕と前腕の関節運動を例にとれば、第１の側面側領域は小指側（尺骨側）の領域であり、第２の側面側領域は親指側（橈骨側）の領域である。大腿と脛の関節運動を例にとれば、第１の側面側領域は足の小指側及び親指側の一方の領域であり、第２の側面側領域は足の小指側及び親指側の他方の領域である。
【００６０】
また頂点処理部１２２は、第１のパーツオブジェクトに対応して設けられる第１の骨と、第２のパーツオブジェクトに対応して設けられる第２の骨と、第１、第２のパーツオブジェクトの関節部分に対応して設けられる関節骨に基づいて、第１、第２のパーツオブジェクトの頂点位置を求める。例えば第１の骨、第２の骨、関節骨と、これらの骨に対する重み付け値に基づいて、第１、第２のパーツオブジェクトの各頂点の位置（位置座標）を求める。そして頂点処理部１２２は、伸展側領域における関節面に対応する頂点については、関節骨に追従させる演算処理を行って頂点位置を求める。上腕と前腕の関節運動を例にとれば、肘関節の外側（手の甲側）の頂点については、肘関節に設定される関節骨に追従させる演算処理を行って、その頂点位置を求める。
【００６１】
この場合にモーション処理部１０７は、関節運動時に第２の骨の回転に連動させて関節骨を回転させてもよい。例えば第２の骨の回転角度をθ＝θＢとした場合に、関節骨をθ＝θＪ（θＪ＜θＢ）の回転角度だけ回転させる。なお、関節骨の配置位置（回転中心となる位置）は、第２の骨の配置位置と一致させてもよいし、関節骨の配置位置を、例えば第２の骨の配置位置から伸展側（外側）にシフトさせた位置に設定してもよい。
【００６２】
２．本実施形態の手法
２．１  モーション処理
図２に示すように、キャラクタなどを表すモデルオブジェクトＭＯＢは、複数のパーツオブジェクトＰＢ０〜ＰＢ１５により構成される。そして、これらのパーツオブジェクト（部位）の位置や回転角度（方向）は、モデルオブジェクトＭＯＢのスケルトンモデルを構成する骨Ｂ０〜Ｂ１９の位置（関節Ｊ０〜Ｊ１５の位置）や回転角度（親の骨に対する子の骨の相対的な回転角度）により特定される。なお、これらの骨、関節は仮想的なものであり、現実に表示されるオブジェクトではない。
【００６３】
モデルオブジェクトＭＯＢのスケルトンを構成する骨（モーション骨、関節、パーツオブジェクト）は、親子（階層）構造を有している。例えば、手の骨Ｂ７、Ｂ１１の親は前腕の骨Ｂ６、Ｂ１０になり、Ｂ６、Ｂ１０の親は上腕の骨Ｂ５、Ｂ９になり、Ｂ５、Ｂ９の親は肩の骨Ｂ４、Ｂ８になる。足、脛（すね）、大腿、腰、胸、頭の骨も同様である。
【００６４】
モーションデータ記憶部１７３には、これらの骨（パーツオブジェクト、関節）の位置、回転角度が、モーションデータとして記憶されている。なお骨の回転角度だけをモーションデータに含ませて、骨（アーク）の位置（関節の位置）についてはモデルオブジェクトのモデルデータの中に含ませてもよい。
【００６５】
例えば、歩きモーションが、Ｍ０、Ｍ１、Ｍ２・・・・ＭＮという基準モーション（各フレームでのモーション）により構成されているとする。するとこれらの各基準モーションＭ０、Ｍ１、Ｍ２・・・・ＭＮでの各骨の位置又は回転角度が、モーションデータとして予め記憶されている。そして、例えば基準モーションＭ０の各骨（各パーツオブジェクト）の位置、回転角度を読み出し、次に基準モーションＭ１の各骨の位置、回転角度を読み出すというように、基準モーションのモーションデータを時間経過に伴い順次読み出すことで、モーション処理（モーション再生）が実現される。
【００６６】
なお、モーションデータ記憶部１７３に記憶するモーションデータは、一般的には、モーションキャプチャにより取得したり、デザイナが作成する。またモーションデータは、親の骨の位置、回転角度に対する子の骨の相対的な位置、相対的な回転角度（３軸周りの回転角度）で表される。具体的には、親の骨に対する子の骨のＸ軸、Ｙ軸、Ｚ軸回りの回転角度（相対的な回転角度）が、モーションデータとして記憶される。なお親の骨に対する子の骨の相対的な位置（相対距離）は、例えばモデルオブジェクト（キャラクタ）のモデルデータに含ませてもよい。
【００６７】
２．２  関節運動
上述したモーション処理の際には、例えば図２の上腕のパーツオブジェクトＰＢ４（第１のパーツオブジェクト）と前腕のパーツオブジェクトＰＢ５（第２のパーツオブジェクト）が関節運動を行う。また大腿のパーツオブジェクトＰＢ１０（第１のパーツオブジェクト）と脛のパーツオブジェクトＰＢ１１（第２のパーツオブジェクト）も関節運動を行う。以下、この第１、第２のパーツオブジェクト（第１、第２の骨）の関節運動について説明する。
【００６８】
図３（Ａ）、図３（Ｂ）、図４は従来例での関節運動の説明図である。なお、第１、第２のパーツオブジェクトＰＯＡ、ＰＯＢは実際には３次元形状のオブジェクトであるが、以下では説明の簡素化のために２次元形状に簡略化して説明する。
【００６９】
図３（Ａ）において、例えば上腕や大腿等を表すパーツオブジェクトＰＯＡは、頂点Ｖ１〜Ｖ１２（Ｖ１〜Ｖ９）により構成され、前腕や脛を表すパーツオブジェクトＰＯＢは、頂点Ｖ１０〜Ｖ２１（Ｖ１０〜Ｖ１８）により構成される。即ちパーツオブジェクトＰＯＡは、頂点Ｖ１〜Ｖ１２により形成される複数のポリゴンで構成され、パーツオブジェクトＰＯＢは、頂点Ｖ１０〜Ｖ２１により形成される複数のポリゴンで構成される。
【００７０】
パーツオブジェクトＰＯＡの頂点Ｖ１〜Ｖ１２の位置は基本的には骨ＢＮＡに追従し、パーツオブジェクトＰＯＢの頂点Ｖ１０〜Ｖ２１の位置は基本的には骨ＢＮＢに追従する。但し、これらの頂点の一部（例えばＶ１０、Ｖ１１、Ｖ１２）については、両方の骨ＢＮＡ、ＢＮＢに追従し、その追従の度合いは、後述する重み付け値により設定される。
【００７１】
また図３（Ａ）において骨ＢＮＡ（パーツオブジェクトＰＯＡ）は親であり、骨ＢＮＢ（パーツオブジェクトＰＯＢ）は骨ＢＮＡの子になる。従って、この関節運動のモーションデータは、親の骨ＢＮＡに対する子の骨ＢＮＢのＸ軸回りの回転角度、Ｙ軸回りの回転角度、Ｚ軸回りの回転角度により表されることになる。
【００７２】
またパーツオブジェクトＰＯＡについてのモデルデータ（頂点リスト、オブジェクトデータ）は、骨ＢＮＡのローカル座標系におけるＰＯＡの頂点データ（頂点位置、テクスチャ座標、色データ、法線ベクトル、α値等）を含むことができる。またパーツオブジェクトＰＯＢについてのモデルデータは、骨ＢＮＢのローカル座標系におけるＰＯＢの頂点データを含むことができる。但し、頂点Ｖ１０、Ｖ１１、Ｖ１２の頂点データは重複するため、子のパーツオブジェクトＰＯＢのモデルデータのみに含ませればよい。
【００７３】
図３（Ａ）において、ＲＢＥはパーツオブジェクトＰＯＡ、ＰＯＢの関節運動の屈曲側領域（曲がる側の領域）であり、ＲＥＸは伸展側領域（曲がる側の領域の反対側の領域）である。そして図３（Ａ）の従来例では、関節運動の伸展側領域ＲＥＸにおいて、関節面ＪＳＦに対応する場所に頂点Ｖ１２を有すると共に、屈曲側領域ＲＢＥにおいても、関節面ＪＳＦに対応する場所に頂点Ｖ１０を有する。このため関節運動の際に図３（Ｂ）、図４に示すような問題が生じることが判明した。
【００７４】
例えば図３（Ｂ）、図４において、関節面ＪＳＦの頂点Ｖ１０、Ｖ１１、Ｖ１２の骨ＢＮＡに対する重み付け値（追従する度合いを表す係数値）は例えば５０％（０．５）になっており、頂点Ｖ１０、Ｖ１１、Ｖ１２の骨ＢＮＢに対する重み付け値も例えば５０％（０．５）になっている。従って、関節運動によるオブジェクトの変形後の頂点Ｖ１０の位置は、骨ＢＮＡに完全（１００％）に追従した場合の頂点Ｖ１０’と、骨ＢＮＢに完全に追従した場合の頂点Ｖ１０”の中点の位置になる。同様に、関節運動によるオブジェクトの変形後の頂点Ｖ１２の位置は、骨ＢＮＡに完全に追従した場合の頂点Ｖ１２’と、骨ＢＮＢに完全に追従した場合の頂点Ｖ１２”の中点の位置になる。
【００７５】
このため図３（Ｂ）、図４に示すように、屈曲時に、関節面ＪＳＦでの関節部分の太さが細くなってしまう。即ち、あたかもゴムチューブを曲げたときのようなエンベロープの形状になってしまう。特に図４に示すように屈曲角が９０度に近づくと、関節部分が極端に細くなり、生成される画像の品質が劣化してしまう。
【００７６】
そこで本実施形態では、屈曲側領域ＲＢＥにおける関節面ＪＳＦでの頂点Ｖ１０を省略する手法を採用している。
【００７７】
即ち図３（Ａ）では、屈曲側領域ＲＢＥ及び伸展側領域ＲＥＸの両方において、関節面ＪＳＦの場所に頂点Ｖ１０、Ｖ１２が設けられている。これに対して本実施形態では図５（Ａ）に示すように、伸展側領域ＲＥＸでは関節面ＪＳＦの場所に頂点Ｖ１２が設けられているが、屈曲側領域ＲＢＥでは関節面ＪＳＦの場所に頂点が設けられておらず、図３（Ａ）のＶ１０に相当する頂点が省略されている。
【００７８】
また図５（Ａ）において、パーツオブジェクトＰＯＡ側の屈曲側領域ＲＢＥの頂点Ｖ１、Ｖ４、Ｖ７のうち、関節面ＪＳＦに隣接する頂点（ＪＳＦに最も近い頂点）を第１の頂点Ｖ７とする。またパーツオブジェクトＰＯＢ側の屈曲側領域ＲＢＥの頂点Ｖ１３、Ｖ１６、Ｖ１９のうち、関節面ＪＳＦに隣接する頂点を第２の頂点Ｖ１３とする。この場合には、第１の頂点Ｖ７と第２の頂点Ｖ１３を結ぶ線分を一辺とするポリゴンＰＬＪが生成される。例えば図５（Ａ）では三角形のポリゴンＰＬＪが生成され、図３（Ａ）とはポリゴンの分割の仕方が変化する。そしてこのポリゴンＰＬＪを描画することで、パーツオブジェクトＰＯＡ、ＰＯＢの屈曲側領域ＲＢＥでの関節部分の画像が生成される。
【００７９】
このような手法を採用すれば、例えば図５（Ｂ）、図６に示すようにパーツオブジェクトＰＯＡ、ＰＯＢの関節運動が行われた場合にも、関節面ＪＳＦでの関節部分の太さが極端に細くなってしまう事態を防止できる。即ち図３（Ｂ）、図４では関節部分が細くなる事態が生じていたが、図５（Ｂ）、図６では、このような事態が生じない。特に図６に示すように屈曲角が９０度に近づいた場合にも、図４のように関節部分が極端に細くなってしまう事態が防止される。従って、生成される画像の品質劣化を防止でき、より自然な関節運動画像を生成できる。
【００８０】
特に格闘ゲームなどでは、基本姿勢の状態（構えの状態）において、腕等の関節部分が屈曲した状態である場合が多い。従って、図４のように関節部分が極端に細くなると、生成される画像が不自然になり、プレーヤの仮想現実感を低下させる。この点、本実施形態では図５（Ｂ）、図６に示すように、関節部分が細くなるのが防止されるため、プレーヤの仮想現実感の低下を防止できる。
【００８１】
また図５（Ａ）〜図６の本実施形態の手法は、新たな特別な処理を付加することなく、関節面の屈曲側での頂点（図３（Ａ）のＶ１０）を省略するだけで済む。従って、処理負荷の増加を防止しながら関節運動のより自然が画像を生成できるという利点がある。
【００８２】
図７に、図５（Ａ）のパーツオブジェクトＰＯＡ、ＰＯＢのモデルデータ（頂点リスト）の例を示す。図７のモデルデータでは、各頂点に対して、その頂点の位置（骨のローカル座標系での位置）や、各骨に対する重み付け値（ウェイト値）が対応づけられている。
【００８３】
例えば頂点Ｖ１に対しては、Ｖ１の位置座標（Ｘ１、Ｙ１、Ｚ１）や、骨ＢＮＡに対する重み付け値ＷＴ１Ａが対応づけられ、頂点Ｖ２に対しては、Ｖ２の位置座標（Ｘ２、Ｙ２、Ｚ２）や、骨ＢＮＡに対する重み付け値ＷＴ２Ａが対応づけられている。頂点Ｖ３〜Ｖ９も同様である。そして図５（Ａ）〜図６では、頂点Ｖ１〜Ｖ９は骨ＢＮＡに対して完全に追従する。従って、頂点Ｖ１〜Ｖ９の骨ＢＮＡに対する重み付け値ＷＴ１Ａ〜ＷＴ９Ａは１００％（１．０）に設定される。なお頂点Ｖ１〜Ｖ９には、骨ＢＮＢに対する重み付け値は設定されていない。
【００８４】
一方、関節面ＪＳＦの頂点Ｖ１１、Ｖ１２は、骨ＢＮＡと骨ＢＮＢの両方に追従する。従って、骨ＢＮＡに対する重み付け値ＷＴ１１Ａ、ＷＴ１２Ａと、骨ＢＮＢに対する重み付け値ＷＴ１１Ｂ、ＷＴ１２Ｂが設定される。例えば頂点Ｖ１１の骨ＢＮＡ、ＢＮＢに対する重み付け値ＷＴ１１Ａ、ＷＴ１１Ｂは共に例えば５０％（０．５）に設定され、頂点Ｖ１２の骨ＢＮＡ、ＢＮＢに対する重み付け値ＷＴ１２Ａ、ＷＴ１２Ｂも共に例えば５０％に設定される。
【００８５】
また頂点Ｖ１３〜Ｖ２１は骨ＢＮＢに対して完全に追従する。従って、頂点Ｖ１３〜Ｖ２１の骨ＢＮＢに対する重み付け値ＷＴ１３Ｂ〜ＷＴ２１Ｂは１００％に設定される。なお頂点Ｖ１３〜Ｖ２１には、骨ＢＮＡに対する重み付け値は設定されていない。
【００８６】
図７に示すように本実施形態のモデルデータは、屈曲側領域ＲＢＥの関節面ＪＳＦの頂点Ｖ１０のデータが削除されている。即ち、伸展側領域ＲＥＸでは関節面ＪＳＦに対応する頂点Ｖ１２を有し、屈曲側領域ＲＢＥでは関節面ＪＳＦに対応する頂点を有しないデータ構造のモデルデータ（頂点リスト）になっている。そして、このようなデータ構造のモデルデータをモデルデータ記憶部１７４から読み出して、モデルデータにより規定される頂点で構成されるポリゴンを描画することで、関節部分が細くなる事態が防止されたリアルな画像を生成できるようになる。
【００８７】
２．３  第１、第２の側面側領域の頂点
以上では、屈曲側領域の関節面での頂点を省略する手法について説明したが、屈曲側領域の関節面での全ての頂点を省略する必要はなく、一部の頂点については残すようにしてもよい。
【００８８】
例えば図８（Ａ）、図８（Ｂ）は、キャラクタの上腕と前腕が屈曲する関節運動の様子を示す画像である。図８（Ａ）はキャラクタを前側から見た画像であり、図８（Ｂ）はキャラクタを後ろ側から見た画像である。図８（Ａ）の前側画像では、例えば上腕二頭筋が膨らみ、上腕と前腕の関節部分がくびれて見える画像が、自然な画像になる。一方、図８（Ｂ）の後ろ側画像では、上腕三頭筋等の筋肉が盛り上がって見える画像が、自然な画像になる。
【００８９】
そこで本実施形態では、屈曲側領域ＲＢＥのうちの第１の側面ＳＤ１側（前側）の領域ＲＳＤ１では、図３（Ａ）のように関節面の頂点（Ｖ１０）を設ける手法を採用し、屈曲側領域ＲＢＥのうちの第２の側面ＳＤ２側（後ろ側）の領域ＲＳＤ２では、図５（Ａ）のように関節面の頂点を省略する手法を採用する。
【００９０】
このようにすれば、屈曲側領域ＲＢＥのＳＤ１側の領域ＲＳＤ１では、図４のように関節部分が細くなってしまう現象を逆利用して、図８（Ａ）のように関節部分がくびれた画像を生成できる。即ち領域ＲＳＤ１は、屈曲側領域ＲＢＥであっても、関節面の場所に頂点を有するため、図４のように関節部分が細くなる画像が生成され、図８（Ａ）のように関節部分がくびれた画像が生成されるようになる。
【００９１】
一方、屈曲側領域ＲＢＥのＳＤ２側の領域ＲＳＤ２では、関節部分が細くなるのを防止する本実施形態の手法を採用することで、図８（Ｂ）のように筋肉が盛り上がって見える画像を生成できる。即ち領域ＲＳＤ２では、関節面の場所に頂点を有しないため、図６に示すように関節部分が細くなるのが防止され、図８（Ｂ）のように関節部分のくびれが防止された画像が生成されるようになる。
【００９２】
なお図８（Ａ）、図８（Ｂ）では、第１のパーツオブジェクトＰＯＡは上腕オブジェクトになり、第２のパーツオブジェクトＰＯＢは前腕オブジェクトになる。そして図８（Ａ）に示すように第１の側面ＳＤ１側の領域ＲＳＤ１は小指側（尺骨側）の領域になり、図８（Ｂ）に示すように第２の側面ＳＤ２側の領域ＲＳＤ２は親指側（橈骨側）の領域になる（腕や手が内転或いは外転していないと仮定する）。そして小指側の領域ＲＳＤ１では関節面の場所に頂点が設けられ、親指側の領域ＲＳＤ２では関節面の場所の頂点が削除される。
【００９３】
２．４  関節骨
さて、図５（Ａ）〜図６の本実施形態の手法では、屈曲側領域ＲＢＥでの関節部分のくびれは防止できるが、伸展側領域ＲＥＸでの関節部分のへっこみは防止できない。例えば上腕と前腕のなす角度が９０度になった場合に、肘の外側形状（伸展側の形状）の角度も理想的には９０度になることが望ましい。しかしながら、図６では、Ｖ１２’とＶ１２”の中点が頂点Ｖ１２になるため、このような肘の外側形状を表現できない。
【００９４】
そこで本実施形態では図９（Ａ）に示すように、骨ＢＮＡ、骨ＢＮＢの他に、関節部分（例えば頂点Ｖ１１の位置）に関節骨ＢＪを設ける。この関節骨ＢＪは関節運動を補助するための骨であり、骨ＢＮＢの動きに追従する。
【００９５】
例えば関節骨ＢＪは、骨ＢＮＢと同様の位置（Ｖ１１の位置）に配置され、骨ＢＮＢの回転に連動して回転する。即ち、骨ＢＮＢがその配置位置（Ｖ１１）を回転中心としてθ＝θＢだけ回転すると、関節骨ＢＪはその配置位置を回転中心としてθ＝θＪ（θＪ＜θＢ）だけ回転する。例えば図９（Ｂ）に示すように骨ＢＮＢがθＢ＝６０度回転すると、関節骨ＢＪはθＪ＝３０度回転する。また図１０に示すように、骨ＢＮＢがθＢ＝９０度回転すると、関節骨ＢＪはθＪ＝４５度回転する。
【００９６】
なお図９（Ａ）〜図１０では、骨ＢＮＢの配置位置と関節骨ＢＪの配置位置が一致しているが、これらの配置位置が一致しないようにしてもよい。例えば関節骨ＢＪの配置位置を、骨ＢＮＢの配置位置から伸展側（外側）にシフトした位置に設定する。具体的には、図９（Ａ）の頂点Ｖ１１とＶ１２の間の位置（例えばＶ１１とＶ１２の中点）に、関節骨ＢＪを配置してもよい。
【００９７】
本実施形態では、このような関節骨ＢＪを設け、この関節骨ＢＪと、パーツオブジェクトＰＯＡに対応する骨ＢＮＡと、パーツオブジェクトＰＯＢに対応する骨ＢＮＢに基づいて、パーツオブジェクトＰＯＡ、ＰＯＢの頂点位置を求める頂点処理を行う。具体的には、伸展側領域ＲＥＸにおける関節面ＪＳＦに対応する頂点Ｖ１２については、関節骨ＢＪに追従させる演算処理を行って、その頂点位置を求める。
【００９８】
例えば図９（Ｂ）では、骨ＢＮＢの６０度の回転に連動して、関節骨ＢＪは３０度だけ回転している。すると頂点Ｖ１２は、関節骨ＢＪの回転に追従して、関節骨ＢＪの配置位置である頂点Ｖ１１を回転中心として３０度だけ回転する。また図１０では、骨ＢＮＢの９０度の回転に連動して、関節骨ＢＪは４５度だけ回転している。すると、頂点Ｖ１２は、関節骨ＢＪの回転に追従して、頂点Ｖ１１を回転中心として４５度だけ回転する。
【００９９】
このようにすれば、図５（Ｂ）、図６と図９（Ｂ）、図１０を比較すれば理解されるように、関節部分の屈曲時に頂点Ｖ１２は、より伸展側に離れた位置に配置されるようになる。これにより、図１０に示すように、肘等の関節部分の伸展側の形状を９０度に近づけることが可能になる。従って、よりリアルな関節部分の関節運動画像を生成できるようになり、屈曲側領域ＲＢＥの画像のみならず伸展側領域ＲＥＸの画像のリアル度も増すことができる。
【０１００】
２．５  関節運動画像
次に関節運動の詳細な画像例について説明する。図１１においてキャラクタＣＨの前方向をＤ１方向とし、左方向をＤ２方向とし、上方向をＤ３方向とする。するとキャラクタＣＨの左腕は左方向Ｄ２の方に伸びており、図１１、図１２、図１３は、この左腕の関節運動を上側から見た場合のワイヤフレーム画像の例である。
【０１０１】
図１１のＦ１に示すように、この左腕のモデルオブジェクトでは、伸展側領域ＲＥＸでは関節面の場所に頂点が設けられている。一方、図１１のＦ２に示すように、屈曲側領域ＲＢＥでは関節面の場所に頂点が設けられていない。そして、上腕オブジェクト側の第１の頂点ＶＡ１と、前腕オブジェクト側の第２の頂点ＶＢ２を結ぶ線分を一辺とするポリゴンが描画されて、屈曲側領域ＲＢＥでの関節部分の画像が生成されている。
【０１０２】
図１２、図１３は、図１１の状態から関節部分が徐々に屈曲して行く様子を示す関節運動画像である。図１２のＦ３や図１３のＦ４に示すように、屈曲側領域ＲＢＥの関節面に頂点を設けないことで、関節部分が細くなってくびれが生じてしまう事態を防止できる。また図１２のＦ５や図１３のＦ６に示すように、図９（Ａ）〜図１０で説明した関節骨を設けることで、肘の関節部分の伸展側の形状を９０度に近づけることができ、よりリアルな画像を生成できるようになる。
【０１０３】
図１４、図１５、図１６は、キャラクタＣＨの左腕の関節運動を前側から見た場合のワイヤフレーム画像の例である。
【０１０４】
図１４において、屈曲側領域ＲＢＥのうちの下側（小指側）の領域が第１の側面側領域ＲＳＤ１になり、屈曲側領域ＲＢＥのうちの上側（親指側）の領域が第２の側面側領域ＲＳＤ２になる。そして図１４のＧ１に示すように、第１の側面側領域ＲＳＤ１では関節面の場所に頂点が設けられる。一方、Ｇ２に示すように、第２の側面側領域ＲＳＤ２では関節面の場所に頂点が設けられていない。
【０１０５】
従って、関節面に頂点を有する第１の側面側領域ＲＳＤ１では、図８（Ａ）で説明したような関節分のくびれを表現できる。一方、関節面に頂点を有しない第２の側面側領域ＲＳＤ２では、図８（Ｂ）で説明したような関節部分付近の筋肉の盛り上がり等を表現できるようになる。
【０１０６】
３．処理例
次に本実施形態の処理例について図１７、図１８のフローチャートを用いて説明する。図１７は画像生成システムの全体的な処理の例を表すフローチャートである。
【０１０７】
まず、モデルオブジェクトなどの複数のオブジェクトをオブジェクト空間に配置設定するオブジェクト空間設定処理を行う（ステップＳ１）。そして、モデルオブジェクトなどの移動体をオブジェクト空間内で移動させる移動処理や、モデルオブジェクトの動きを表現するモーション処理などを行う（ステップＳ２、Ｓ３）。具体的には、操作部からの操作データ等に基づいてモデルオブジェクトを移動させる移動処理を行ったり、モデルオブジェクトのスケルトンを構成する各骨を、モーションデータに基づいて動かすモーション処理を行う。
【０１０８】
次に頂点シェーダプログラムによる頂点シェーダ処理を行う（ステップＳ４）。この頂点シェーダ処理（頂点処理）では、頂点単位での座標変換処理（ローカル座標系からワールド座標系への変換等）、頂点単位での陰影処理（シェーディング処理）、頂点単位での光源処理（ライティング処理）、テクスチャ座標の演算処理などが行われる。例えばモーション処理後のモデルオブジェクトの頂点位置を求める処理を、この頂点シェーダ処理により実現してもよい。そして、この頂点シェーダ処理により得られた頂点座標、視線ベクトル、光源ベクトル、法線ベクトル等は、出力レジスタに格納され、ピクセルシェーダ処理に渡される。
【０１０９】
次に、ピクセルシェーダプログラムによるピクセルシェーダ処理を開始する（ステップＳ５）。このピクセルシェーダ処理では、ラスタライズ後にピクセル単位の様々な処理が行われる。具体的には、ピクセル単位での陰影処理（シェーディング処理）、テクスチャマッピング処理、半透明処理などが行われる。これにより、表示部に表示される最終的な画像（ゲーム画像）が生成される。
【０１１０】
図１８は、モデルオブジェクトのモーション処理や形状変形処理の詳細を示すフローチャートである。まずモーションデータ等に基づいて、モデルオブジェクトの骨のワールドマトリクスを計算する（ステップＳ１１）。具体的には、モーションデータに含まれる骨の回転角度とモデルデータに含まれる骨の位置に基づいて、各骨のローカルマトリクス（ローカル座標系への座標変換マトリクス）を計算する。そしてモデルデータに含まれる親子構造データに基づいて親子関係を判断し、この親子関係にしたがって親の骨のローカルマトリクスに対して子の骨のローカルマトリクスを順次乗算して行く事で、各骨のワールドマトリクス（ワールド座標系への座標変換マトリクス）を求める。
【０１１１】
次に、全ての骨のワールドマトリクスの計算が終了したか否かを判断し（ステップＳ１２）、終了していない場合にはステップＳ１１に戻って次の骨のワールドマトリクスを計算する。一方、終了した場合には、求められた骨のワールドマトリクスと、モデルデータ（頂点リスト）に基づいて、モデルオブジェクトの頂点位置（ワールド座標系での頂点位置）を求めて、モデルオブジェクトの形状変形処理を実行する（ステップＳ１３）。そして、その後にピクセル単位の描画処理が行われることで、関節運動のモーション画像が生成される。
【０１１２】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（第１のパーツオブジェクト、第２のパーツオブジェクト等）と共に記載された用語（上腕オブジェクト、前腕オブジェクト等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、モーション処理、頂点処理、描画処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【０１１３】
ＰＯＡ  第１のパーツオブジェクト、ＰＯＢ  第１のパーツオブジェクト、
ＢＮＡ  第１の骨、ＢＮＢ  第２の骨、ＢＪ  関節骨、
ＲＢＥ  屈曲側領域、ＲＥＸ  伸展側領域、ＪＳＦ  関節面、
ＲＳＤ１  第１の側面側領域、ＲＳＤ２  第２の側面側領域、
１００  処理部、１０２  ゲーム演算部、１０４  オブジェクト空間設定部、
１０６  移動処理部、１０７  モーション処理部、１０８  仮想カメラ制御部、
１２０  画像生成部、１２２  頂点処理部、１２４  ピクセル処理部、
１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  オブジェクトデータ記憶部、１７３  モーションデータ記憶部、
１７４  モデルデータ記憶部、１７５  テクスチャ記憶部、１７６  描画バッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９４  補助記憶装置、
１９６  通信部
【図１】
2011095935.tif 000003
【図２】
2011095935.tif 000004
【図３】
2011095935.tif 000005
【図４】
2011095935.tif 000006
【図５】
2011095935.tif 000007
【図６】
2011095935.tif 000008
【図７】
2011095935.tif 000009
【図８】
2011095935.tif 000010
【図９】
2011095935.tif 000011
【図１０】
2011095935.tif 000012
【図１１】
2011095935.tif 000013
【図１２】
2011095935.tif 000014
【図１３】
2011095935.tif 000015
【図１４】
2011095935.tif 000016
【図１５】
2011095935.tif 000017
【図１６】
2011095935.tif 000018
【図１７】
2011095935.tif 000019
【図１８】
2011095935.tif 000020