(57)【特許請求の範囲】
【請求項１】
複数の関節による連結構造を有するキャラクタが動作を行っている画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
前記各関節間の距離を特定するためのキャラクタデータと、所定の動作を行わせるべく前記各関節間の相対的な位置関係を特定するための基準モーションデータと、前記キャラクタの身体の特性に関する少なくとも１種類の特性パラメータ値とを、記憶部から読み出す情報読出手段と、
前記基準モーションデータを用いて、前記キャラクタに対応するモーションデータを生成するモーションデータ生成手段と、
前記キャラクタに対応するモーションデータと前記キャラクタデータとを用いて、前記キャラクタに所定の動作を行わせるキャラクタ制御手段と、
して機能させ、
前記モーションデータ生成手段は、前記特性パラメータ値に基づいて前記基準モーションデータを補正することで、前記身体の特性がそれぞれ異なる前記キャラクタに対応するモーションデータを生成する、
ことを特徴とするプログラム。
【請求項２】
前記情報読出手段は、前記身体の特性に対応して記憶されている演算式を読み出し、
前記モーションデータ生成手段は、前記演算式および前記特性パラメータ値に基づいて前記基準モーションデータを補正し、
前記演算式は、所定の関節の回転角度を補正する演算式、または、前記キャラクタの位置を補正する演算式のいずれかである、
請求項１に記載のプログラム。
【請求項３】
前記基準モーションデータは、前記各関節の回転角度、および、前記キャラクタの位置の情報を含んでおり、
前記モーションデータ生成手段は、前記基準モーションデータに含まれる所定の関節の回転角度、および、前記位置の情報を補正する、
請求項１または２に記載のプログラム。
【請求項４】
前記コンピュータを、前記情報読出手段によって読み出された前記特性パラメータ値を、プレイヤの操作に応じて変更するパラメータ値変更手段としてさらに機能させ、
前記モーションデータ生成手段は、前記パラメータ値変更手段によって変更された前記特性パラメータ値に基づいて前記基準モーションデータを補正する、
請求項１ないし３のいずれかに記載のプログラム。
【請求項５】
前記特性パラメータ値は、前記キャラクタの性別または体格の特徴に基づいて設定されるパラメータ値である、
請求項１ないし４のいずれかに記載のプログラム。
【請求項６】
請求項１ないし５のいずれかに記載のプログラムを記録したプログラム記録部と、
前記プログラム記録部に記録されたプログラムを実行するコンピュータと、
を備えていることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、および、当該プログラムを記録したプログラム記録部を備えている画像処理装置に関し、特に、キャラクタの表示方法に関する。
【背景技術】
【０００２】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で敵であるキャラクタと戦うアクションゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とし、敵であるキャラクタを「敵キャラクタ」とする。
【０００３】
このようなアクションゲームでは、プレイヤキャラクタおよび敵キャラクタは、互いに相手を攻撃する動作を行う。また、プレイヤキャラクタおよび敵キャラクタは、走ったりジャンプするなどの移動のための動作を行う。キャラクタ毎に各動作のためのデータ（以下では、「モーションデータ」とする。詳細は後述する。）をあらかじめ用意しておくと膨大なデータ量となる。したがって、各キャラクタに共通する動作毎のモーションデータを用意し、これを各キャラクタ固有の画像データやモデルデータなど（以下では、「キャラクタデータ」とする。詳細は後述する。）と組み合わせて各キャラクタに各動作を行わせることで、用意するモーションデータの数を抑制している。
【０００４】
モーションデータは、各動作（モーション）のフレーム毎（例えば１／６０秒毎）のデータを記録したものである（図６参照）。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル（図２および図３参照）で表現される。スケルトンモデルおよびその階層構造については、後述する。モーションデータは、このスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。例えば、プレイヤがプレイヤキャラクタに歩いて移動させるための操作を行った場合、歩いて移動する動作のモーションデータとプレイヤキャラクタのキャラクタデータとを用いてプレイヤキャラクタが歩いて移動する動作の映像が生成され、ゲーム画面に表示される。
【０００５】
また、プレイヤキャラクタの状態は、ゲームの進行状況によって異なる場合がある。例えば、プレイヤキャラクタが元気な場合もあれば、疲れている場合もある。プレイヤキャラクタの状態が異なる場合に、その状態をよりリアルに表現しようとすれば、プレイヤキャラクタの動作を変化させる必要がある。つまり、プレイヤキャラクタが元気な状態では元気に歩く動作の映像を生成し、プレイヤキャラクタが疲れている状態では疲れて歩く動作の映像を生成する必要がある。しかし、この場合、元気に歩く動作と疲れて歩く動作とで、別々のモーションデータを用意する必要がある。少し疲れた状態と疲れ果てた状態とを区別して表現しようとすれば、さらに用意するモーションデータの数が増加することになる。
【０００６】
このようにモーションデータの数が増加することを抑制するための方法が、開発されている。例えば、ある状態のモーションデータと基準となるモーションデータとから、その状態を表現するための変形データを抽出し、当該変形データに適用度を乗算したものを用いる方法が開発されている。当該方法では、抽出された変形データと他の動作のモーションデータとを用いて、変形データに対応する状態の他の動作を表現することで、モーションデータの数が増加することを抑制している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１５７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記方法を用いる場合、ある状態のモーションデータと基準となるモーションデータの２つのモーションデータを用意する必要がある。つまり、疲れた状態の変形データを抽出するためには、基準となる歩くモーションデータと疲れた状態で歩くモーションデータとを用意する必要がある。さらに、キャラクタの性別や体格（例えば、猫背など）の違いを表現する場合は、男性（または、女性）が歩くモーションデータや猫背の人が歩くモーションデータなどを用意しなければならない。つまり、キャラクタの状態や特性に応じた動作のバリエーションを増加させるためには、状態や特性ごとのモーションデータを用意する必要がある。したがって、ゲーム作製者の作業負担が増加し、記録するデータ量が膨大になる。
【０００９】
なお、上記問題は、アクションゲームに限られるものではなく、他の種類のゲームにおいても生じる。また、ゲーム以外においても、共通のモーションデータに基づいてキャラクタの動作を表示する場合に、上記問題が生じる。
【００１０】
本発明は上記した事情のもとで考え出されたものであって、キャラクタの状態や特性に応じた動作のバリエーションを簡単に増加させることができる画像処理装置、および、この画像処理装置を実現するためのプログラムを提供することをその目的としている。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【００１２】
本発明の第１の側面によって提供されるプログラムは、複数の関節による連結構造を有するキャラクタが動作を行っている画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、前記各関節間の距離を特定するためのキャラクタデータと、所定の動作を行わせるべく前記各関節間の相対的な位置関係を特定するための基準モーションデータと、前記キャラクタの身体の特性に関する少なくとも１種類の特性パラメータ値とを、記憶部から読み出す情報読出手段と、前記基準モーションデータを用いて、前記キャラクタに対応するモーションデータを生成するモーションデータ生成手段と、前記キャラクタに対応するモーションデータと前記キャラクタデータとを用いて、前記キャラクタに所定の動作を行わせるキャラクタ制御手段として機能させ、前記モーションデータ生成手段は、前記特性パラメータ値に基づいて前記基準モーションデータを補正することで、前記身体の特性がそれぞれ異なる前記キャラクタに対応するモーションデータを生成することを特徴とする。
【００１３】
なお、本発明における「パラメータ値」には、キャラクタにあらかじめ設定されている「特性」についてのパラメータ値、および、ゲームの進行に応じて変化するキャラクタの「状態」についてのパラメータ値などが含まれる。「特性」には、性別や体格、性格などが含まれる。例えば、当該キャラクタの男っぽさ（または、女っぽさ）の程度や、猫背の程度、太り具合、性格の明るさ（暗さ）の程度、年齢、傲慢さ（謙虚さ）の程度などが、「パラメータ値」として設定されている。また、「状態」には、体力の状態や精神状態などが含まれる。例えば、当該キャラクタのそのときの疲れ方の程度や、士気の高さ、気力の充実度、気分の高揚の程度、体力の程度、年齢（ゲーム進行中に加齢する場合）などが、「パラメータ値」として設定されている。
【００１４】
本発明の好ましい実施の形態においては、前記情報読出手段は、前記身体の特性に対応して記憶されている演算式を読み出し、前記モーションデータ生成手段は、前記演算式および前記特性パラメータ値に基づいて前記基準モーションデータを補正し、前記演算式は、所定の関節の回転角度を補正する演算式、または、前記キャラクタの位置を補正する演算式のいずれかである。
【００１５】
本発明の好ましい実施の形態においては、前記基準モーションデータは、前記各関節の回転角度、および、前記キャラクタの位置の情報を含んでおり、前記モーションデータ生成手段は、前記基準モーションデータに含まれる所定の関節の回転角度、および、前記位置の情報を補正する。
【００１６】
本発明の好ましい実施の形態においては、前記コンピュータを、前記情報読出手段によって読み出された前記特性パラメータ値を、プレイヤの操作に応じて変更するパラメータ値変更手段としてさらに機能させ、前記モーションデータ生成手段は、前記パラメータ値変更手段によって変更された前記特性パラメータ値に基づいて前記基準モーションデータを補正する。
【００１７】
本発明の好ましい実施の形態においては、前記特性パラメータ値は、前記キャラクタの性別または体格の特徴に基づいて設定されるパラメータ値である。
【００１９】
本発明の第２の側面によって提供される画像処理装置は、本発明の第１の側面によって提供されるプログラムを記録したプログラム記録部と、前記プログラム記録部に記録されたプログラムを実行するコンピュータとを備えていることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、基準モーションデータが、特徴の程度を特定するためのパラメータ値に基づいて補正される。補正されたモーションデータに基づいて、キャラクタの動作は制御される。基準モーションデータがパラメータ値に基づいて補正されているので、キャラクタの特徴が反映された動作が再生される。また、パラメータ値に応じて、各特徴の程度が反映される。これにより、キャラクタの動作のバリエーションを簡単に増加させることができる。また、基準モーションデータを補正して用いるので、バリエーションに応じたモーションデータをそれぞれ作製する必要がない。したがって、ゲーム作製者の作業負担を軽減することができ、開発コストを抑制することができる。また、バリエーションが増加しても基準モーションデータのデータ量は増加しないので、モーションデータを記憶しておくためのＲＡＭの記憶領域の増大を抑制することができる。
【００２１】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【００２２】
【図１】本実施形態に係るゲーム装置を示す構成図である。
【図２】キャラクタが両手を広げて直立した姿勢を取っているときの各関節のリンク構造を示す図である。
【図３】各関節の親子関係の階層構造を示す図である。
【図４】プレイヤキャラクタデータの一例を説明するための図である。
【図５】ポジションデータを説明するための図である。
【図６】基準モーションデータの一例を説明するための図である。
【図７】演算式データの一例を説明するための図である。
【図８】キャラクタが歩く動作を行っているデモ映像の１コマの画像を示す図である。
【図９】キャラクタが左手に盾を持って歩く動作を行っているデモ映像の１コマの画像を示す図である。
【図１０】プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理を説明するためのフローチャートである。
【図１１】スケルトンデータの一例を説明するための図である。
【発明を実施するための形態】
【００２３】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置（以下、「ゲーム装置」とする。）において、アクションゲームを進行している場合を例として説明する。
【００２４】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタが敵キャラクタと戦い、敵キャラクタを倒すことにより進行する。プレイヤキャラクタは、プレイヤの操作に応じて、攻撃や移動などの動作を行う。また、敵キャラクタなどのキャラクタは、コンピュータによる制御に応じて、同様に動作を行う。各キャラクタ（プレイヤキャラクタおよび敵キャラクタなど）の各動作のために、各キャラクタに共通で用いられる基準となるモーションデータ（以下では、「基準モーションデータ」とする。）が予め設定されている。例えば、歩くモーションデータや剣で切りかかるモーションデータなど、動作毎の基準モーションデータが用意されている。各キャラクタに動作をさせる場合、当該キャラクタの特性（性別、体格、性格などの特徴）や状態（疲れ方の程度などの特徴）に応じて、基準モーションデータが補正され、補正後のモーションデータが用いられる。
【００２５】
例えば、キャラクタが疲れた状態の場合、キャラクタが少し前かがみ（すなわち、腰と胴を曲げて下を向いた姿勢）で歩幅が狭くなるように、基準モーションデータが補正される。この補正後のモーションデータが用いられることで、キャラクタの歩く動作が疲れて歩いているように表現される（図８（ｂ）参照）。なお、ゲーム進行においてキャラクタが歩き回ったり、敵と戦ったりして体力を消耗した場合などに、当該キャラクタは疲れた状態になる。また、体力の消耗度合いに応じて、キャラクタの疲れの程度も変わってくる。
【００２６】
また、キャラクタが女性の場合、腰関節、胴関節、鎖骨の回転を強調するように、基準モーションデータが補正される。この補正後のモーションデータが用いられることで、キャラクタが女性らしく歩いているように表現される（図９（ｂ）参照）。さらに、女性であるキャラクタが疲れた状態である場合は、基準モーションデータに対する上記２つの補正が重複して行われる。この補正後のモーションデータが用いられることで、キャラクタが女性らしく、かつ、疲れた状態で歩いているように表現される。モーションデータを用いた具体的な動作の再生方法、および、特性や状態に応じたモーションデータの補正方法については後述する。
【００２７】
以下に、本実施形態のハード構成について説明する。
【００２８】
図１は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置１は、本体１１および操作コントローラ１２を備えている。操作コントローラ１２は短距離無線通信によって本体１１に接続されている。本体１１には、モニタ１３が専用のケーブルによって接続される。また、本体１１には、ゲームプログラムやゲームデータが記録されているディスク１４が装着される。さらに、本体１１には、必要に応じてゲームデータを保存するためのメモリカード１５も装着される。
【００２９】
本体１１は、制御部１１１、描画処理部１１２、音声処理部１１３、ディスクドライブユニット１１４、メモリカード接続ユニット１１５、Ｉ／Ｏインターフェース部１１６、通信処理部１１７、および信号送受信部１１８を備えている。制御部１１１には、描画処理部１１２、音声処理部１１３、Ｉ／Ｏインターフェース部１１６、および通信処理部１１７が接続されている。また、Ｉ／Ｏインターフェース部１１６には、ディスクドライブユニット１１４、メモリカード接続ユニット１１５、信号送受信部１１８、およびモニタ１３が接続されている。
【００３０】
ゲーム装置１では、上記アクションゲームのソフトウェアが記録されたディスク１４がディスクドライブユニット１１４に装着される。このディスクドライブユニット１１４によって、ディスク１４内のゲームプログラムおよびゲームデータが制御部１１１内のＲＡＭ１１１ｃ（後述）に読み込まれる。当該ゲームプログラムがＣＰＵ１１１ａ（後述）によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ１２（後述）を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ１２を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【００３１】
ディスク１４内のゲームデータには、プレイヤキャラクタや敵キャラクタなどのキャラクタデータ（画像データ含む）、武器などのアイテムデータ（画像データ含む）、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【００３２】
制御部１１１は、本体１１の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、ＣＰＵ１１１ａ、ＲＯＭ１１１ｂ、およびＲＡＭ１１１ｃなどからなる。これらは、それぞれバスラインで接続されている。
【００３３】
ＣＰＵ１１１ａは、ＲＡＭ１１１ｃに読み込まれたゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、プレイヤの操作による操作信号が操作コントローラ１２から信号送受信部１１８を介して入力されると、ＣＰＵ１１１ａは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。ＣＰＵ１１１ａは、その処理結果に基づいて、例えば三次元空間を表現する二次元画像（以下では、「ゲーム画像」とする。）を、モニタ１３の表示画面に表示させる。また、ＣＰＵ１１１ａは、処理結果に基づいて、効果音などの音声を、モニタ１３のスピーカ１３ａ（後述）に出力させる。
【００３４】
ＲＯＭ１１１ｂには、ゲーム装置１に基本的な機能を発揮させるための基本プログラムが記録されている。基本プログラムには、ディスク１４に記録されたゲームプログラムおよびゲームデータを読み出すディスクローディング機能のためのプログラム等が含まれる。ＣＰＵ１１１ａは、ディスクドライブユニット１１４にディスク１４が装着されると、ＲＯＭ１１１ｂの基本プログラムにしたがってディスクドライブユニット１１４を動作させ、ディスク１４からゲームプログラムおよびゲームデータをＲＡＭ１１１ｃに読み込み、ゲーム装置１をゲーム開始状態に設定する。
【００３５】
ＲＡＭ１１１ｃは、ディスク１４から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、ＣＰＵ１１１ａがゲームプログラムを実行するためのワークエリアとを提供する。
【００３６】
ゲームプログラムは、例えばゲーム進行プログラムやグラフィック制御プログラム等の複数のプログラムが組み合わされて構成されている。ゲーム進行プログラムは、モニタ１３に表示されているプレイヤキャラクタの動作を操作コントローラ１２からの操作信号に基づいて制御するプログラムである。グラフィック制御プログラムは、モニタ１３に表示すべきゲーム画像を制御するプログラムである。また、本実施形態において、ＲＡＭ１１１ｃはゲームデータとして、ディスク１４から読み込まれたプレイヤキャラクタデータ（図４参照）および基準モーションデータ（図６参照）などを記録しており、これらのデータから作成されたスケルトンデータ（図１１参照）などを記録する。
【００３７】
ＣＰＵ１１１ａは、操作コントローラ１２からの操作信号に基づき、必要に応じてディスク１４からゲームプログラムや画像データなどをＲＡＭ１１１ｃに読み込む。ＣＰＵ１１１ａは、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ１３に表示すべきゲーム画像の内容を決定する。
【００３８】
描画処理部１１２は、描画処理に必要な各種の演算処理を行う。ＣＰＵ１１１ａは、例えば、１／６０秒毎に、描画処理部１１２に描画指令を出力する。このとき、ＣＰＵ１１１ａは、モニタ１３に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータ、仮想カメラの位置と撮影方向のデータ、および光源データなどをＲＡＭ１１１ｃから読み出して描画処理部１１２に供給する。また、ＣＰＵ１１１ａは、各キャラクタの位置データや、操作コントローラ１２から入力される操作信号を描画処理部１１２に供給する。
【００３９】
描画処理部１１２は、ＣＰＵ１１１ａからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ（各オブジェクトおよび背景の位置関係、モニタ１３の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ）の演算などを行い、その演算結果に基づいて描画処理部１１２内のｖｉｄｅｏ  ＲＡＭ（図示せず）に１コマ（１フレーム）のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば１／６０秒毎に映像信号としてモニタ１３に出力され、モニタ１３に映像として表示される。
【００４０】
音声処理部１１３は、効果音などの音声を発生させる処理に必要な各種の演算処理を行う。ＣＰＵ１１１ａは、モニタ１３のスピーカ１３ａから出力すべき効果音若しくはＢＧＭの音響内容を決定すると、音声処理部１１３に音声指令を出力する。音声処理部１１３は、音声指令に基づき、ＲＡＭ１１１ｃから効果音もしくはＢＧＭの音声データを読み出す。さらに、音声処理部１１３は、この音声データに所定の加工処理とデジタル／アナログ変換処理とを施した後、スピーカ１３ａに出力する。
【００４１】
ディスクドライブユニット１１４は、ＣＰＵ１１１ａからのローディング指令（ローディングすべきゲームプログラムとゲームデータを指定した読出指令）に基づき、ディスク１４に記録されたゲームプログラムやゲームデータを読み出す。
【００４２】
メモリカード接続ユニット１１５は、ゲーム進行に関する情報をメモリカード１５に書き込んだり、読み出したりするためのユニットである。ＣＰＵ１１１ａは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、ＲＡＭ１１１ｃのワークエリアに記録されたゲーム進行に関する情報（この情報には、例えば、プレイヤが設定したゲームキャラクタの種類、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。）を、メモリカード接続ユニット１１５を介してメモリカード１５に記録する。また、ＣＰＵ１１１ａは、メモリカード１５に記録されたゲーム進行に関する情報を、ゲーム開始前にＲＡＭ１１１ｃに読み出す。
【００４３】
Ｉ／Ｏインターフェース部１１６は、ディスクドライブユニット１１４やメモリカード接続ユニット１１５によって読み出されたゲームプログラムやゲームデータ、および信号送受信部１１８が受信した操作コントローラ１２からの操作信号を制御部１１１に伝送する。また、Ｉ／Ｏインターフェース部１１６は、制御部１１１、描画処理部１１２や音声処理部１１３からの映像信号や音声信号などをモニタ１３やスピーカ１３ａに伝送する。
【００４４】
通信処理部１１７は、ゲーム装置１がネットワーク回線２を介して他のゲーム装置１と通信を行う場合に、データの送信および受信を行うための制御を行う。具体的には、通信処理部１１７は、操作コントローラ１２から入力される操作信号やＣＰＵ１１１ａから出力される信号をネットワーク回線２を介して他のゲーム装置１に送信する。また、通信処理部１１７は、ネットワーク回線２を介して他のゲーム装置１から送信される信号を受信してＣＰＵ１１１ａに入力する。
【００４５】
信号送受信部１１８は、操作コントローラ１２から短距離無線通信により送信される信号を受信する。操作コントローラ１２からの信号には、操作コントローラ１２に設けられた操作ボタンの操作情報の他に、操作コントローラ１２に設けられた各種センサ（図示しない）による検出データが含まれる。ＣＰＵ１１１ａはこの操作コントローラ１２から送信される信号によりゲームを進行させる。また、信号送受信部１１８は、操作コントローラ１２に各種信号（例えば、操作コントローラ１２の振動部（図示しない）を振動させたり、発光部（図示しない）を発光させたり、音声出力部（図示しない）から音声を出力させたりするための信号など）を送信する。
【００４６】
操作コントローラ１２は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作される。プレイヤによって操作コントローラ１２が操作されると、その操作信号が制御部１１１に伝送され、モニタ１３に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ１２は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど（押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。）を備えている。
【００４７】
モニタ１３は、本体１１から送られてきた映像信号に応じてゲーム進行状態を示すゲーム画像を表示画面に映し出したり、本体１１から送られてきた音声信号に応じてスピーカ１３ａから効果音などの音声を出力するための装置である。モニタ１３は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【００４８】
ディスク１４は、例えばＤＶＤ−ＲＯＭまたはＣＤ−ＲＯＭなどの光ディスクである。ディスク１４には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード１５は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。ＲＡＭ１１１ｃのワークエリアに記録された情報はゲーム装置本体１１の電源を切ると消滅する。したがって、ＣＰＵ１１１ａは、当該情報のうち消滅させずに残しておくべきゲーム進行に関する情報などをメモリカード１５に記録する。
【００４９】
なお、ゲーム装置１がＨＤＤ（Hard Disk Drive）を備えている場合、ゲーム進行に関する情報やゲームプログラム、ゲームプログラムの実行に必要な種々のデータや画像データの一部を、ＨＤＤに記憶することができる。
【００５０】
ゲーム装置１は、ネットワークアダプタ１６を介して、インターネット回線などのネットワーク回線２に接続することができる。この場合、ネットワーク回線２を介して、複数のゲーム装置１間でゲームを行うこともできる（いわゆる「オンラインゲーム」）。本実施形態では、ゲーム装置１単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【００５１】
次に、プレイヤキャラクタデータについて、図２〜図５を参照して説明する。
【００５２】
図２および図３は、キャラクタのスケルトンモデルおよびその階層構造を説明するための図である。図２は、キャラクタが両手を広げて直立した姿勢（以下では、「標準姿勢」とする。）を取っているときの各関節のリンク構造を示す図である。図３は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人型のキャラクタなのでスケルトンモデルは人型のスケルトンモデルであり、図２および図３はそれぞれ人型のスケルトンモデルのリンク構造および階層構造を示している。
【００５３】
図２において、ａ〜ｑが記載されている丸は各関節を示している。なお、各関節ａ〜ｑの名称は図３と共通しており、図２においては各名称の記載を省略している。以下の記載でも、各関節ａ〜ｑの名称を省略して、例えば、「関節ａ」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩ｅと右肘ｆとが接続されていることを示している。腰関節ａはスケルトンモデルの基点（連結構造の基準となる部位）となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節ａに限定されるわけではなく、胴関節ｂ、首ｃや左肩ｉとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸（首ｃ、胴関節ｂ、腰関節ａを結ぶ直線）に位置する点が望ましい。
【００５４】
図３において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨ｄは、右肩ｅの親であり、胴関節ｂの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節ａ（基点）は１番上位の関節であり、腰関節ａの位置はローカル座標系の原点を基準に設定される。なお、ローカル座標系は、キャラクタ（例えば、プレイヤキャラクタや敵キャラクタなどの、ＣＰＵ１１１ａによって動きが制御されているキャラクタ）毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。ローカル座標系は、キャラクタの上方向をＹ軸の正方向とし、キャラクタの正面方向をＺ軸の正方向とし、キャラクタの左方向をＸ軸の正方向として設定されている。図２の右下の矢印は、ローカル座標系の各軸の方向を示しており、紙面裏から表の方向がＺ軸の正方向である。
【００５５】
図４はプレイヤキャラクタデータの一例を説明するための図である。
【００５６】
プレイヤキャラクタデータはプレイヤキャラクタのキャラクタデータである。プレイヤキャラクタデータは、ディスク１４にゲームデータとして記録されており、ディスクドライブユニット１１４によって読み出されて、ＲＡＭ１１１ｃに格納される。
【００５７】
図４に示すように、プレイヤキャラクタデータはモデルデータ、特徴データ、および画像データなどを含んでいる。モデルデータは関節データを含んでいる。関節データは関節ａ〜ｑ毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節ｂのポジションデータは（Ｘｂ，Ｙｂ，Ｚｂ）となっており、リンクデータは親関節である関節ａを示す「ａ」となっている。
【００５８】
関節ａは基点であって親である関節がないので、リンクデータを有しない。関節ａのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節ａがローカル座標系の原点の真上（Ｙ軸上）に設定されているので、Ｘａ＝Ｚａ＝０である（図５参照）。関節ｂ〜ｑのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【００５９】
図５は、ポジションデータを説明するための図であり、ローカル座標系上の関節ａ、関節ｂ、および関節ｈの位置座標を示すものである。
【００６０】
関節ｈのポジションデータ（Ｘｈ，Ｙｈ，Ｚｈ）は、親の関節である関節ｂ（図５参照）の位置座標Ｂ（ＸＢ，ＹＢ，ＺＢ）を基準とした相対位置を示している。したがって、関節ｈの位置座標Ｈは、Ｈ（ＸＢ＋Ｘｈ，ＹＢ＋Ｙｈ，ＺＢ＋Ｚｈ）となる。なお、関節ｂの親の関節である関節ａ（基点）の位置座標Ａは関節ａのポジションデータなのでＡ（Ｘａ，Ｙａ，Ｚａ）であり、関節ｂのポジションデータが（Ｘｂ，Ｙｂ，Ｚｂ）なので、位置座標Ｂ（ＸＢ，ＹＢ，ＺＢ）は（Ｘａ＋Ｘｂ，Ｙａ＋Ｙｂ，Ｚａ＋Ｚｂ）となる。したがって、位置座標Ｈは、Ｈ（Ｘａ＋Ｘｂ＋Ｘｈ，Ｙａ＋Ｙｂ＋Ｙｈ，Ｚａ＋Ｚｂ＋Ｚｈ）となる。
【００６１】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【００６２】
特徴データは、特性データおよび状態データを含んでいる。特性データは、プレイヤキャラクタにあらかじめ設定されている特徴を示す情報であって、特性毎のパラメータ値があらかじめ設定されている。本実施形態では、例えば、性別を示す性別パラメータおよび猫背の程度を示す猫背パラメータなどが設定されている。各パラメータには、「−１」から「１」までのパラメータ値が設定されている。以下では、特性を示すパラメータを総称して「特性パラメータ」とする。
【００６３】
性別パラメータは、プレイヤキャラクタの性別の特性を示す情報である。パラメータ値が「０」の場合、プレイヤキャラクタは中性的なキャラクタとして表現される。また、パラメータ値が大きいほど女性的な（女っぽい）キャラクタとして表現され、パラメータ値が小さいほど男性的な（男っぽい）キャラクタとして表現される。図４においては、性別パラメータのパラメータ値が「０．５」なので、プレイヤキャラクタは、やや女性的なキャラクタとして表現される。
【００６４】
猫背パラメータは、プレイヤキャラクタの猫背の程度を示す情報である。パラメータ値が「０」の場合、プレイヤキャラクタは猫背ではない（一般的な）キャラクタとして表現される。一方、パラメータ値が正の値の場合、猫背のキャラクタとして表現され、パラメータ値が負の値の場合、腹が出た（太っている）キャラクタとして表現される。猫背の程度（または、太り具合）は、パラメータ値の大きさに応じて顕著になる。図４においては、猫背パラメータのパラメータ値が「０．５」なので、プレイヤキャラクタは、やや猫背のキャラクタとして表現される。一般的に、太っている人は腹が出て胸を張った姿勢となる傾向があるので、本実施形態では、キャラクタの姿勢として、猫背の姿勢と太っている姿勢とを正反対の姿勢とし、共通するパラメータで設定するようにしている。しかし、これに限られず、猫背パラメータとは別に太り具合のパラメータを設定して、両方の特性を互いに独立に表現するようにしてもよい。
【００６５】
状態データは、プレイヤキャラクタの状態を示す情報であって、状態毎のパラメータ値が設定される。本実施形態では、例えば、疲れ方の程度を示す疲れパラメータなどが設定されている。各パラメータには、「０」から「１」までの値が設定されている。以下では、状態を示すパラメータを総称して「状態パラメータ」とし、特性パラメータと状態パラメータとを総称して「特徴パラメータ」とする。
【００６６】
疲れパラメータは、プレイヤキャラクタの疲れ方の程度を示すものである。パラメータ値が「０」の場合、プレイヤキャラクタは疲れていない状態であるように表現され、パラメータ値が大きいほど疲れ方が激しいように表現される。図４においては、疲れパラメータのパラメータ値が「０．５」なので、プレイヤキャラクタは、少し疲れた状態であるように表現される。
【００６７】
状態データのパラメータ値は、ゲームの進行状況に応じて変化する。例えば、疲れパラメータのパラメータ値は、プレイヤキャラクタに設定されている体力値に基づいて算出され、適時更新される。なお、経過時間や他の要素に基づいて算出されるようにしてもよい。また、状態データは、プレイヤキャラクタデータとして記録しておくものに限定されず、適時算出して用いるようにしてもよい。一方、特性データのパラメータ値は、ゲームの進行状況に関係なく固定されている。例えば、性別パラメータや猫背パラメータのパラメータ値は、所定の固定値として、あらかじめ設定されている。
【００６８】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【００６９】
プレイヤキャラクタ以外のキャラクタであって、プレイヤキャラクタと同じスケルトンモデル（図２および図３参照）を有するキャラクタ（例えば、敵キャラクタなど）についても、プレイヤキャラクタデータ（図４参照）と同様のキャラクタデータがそれぞれ設定されている。
【００７０】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図４、図６〜図１１を参照して説明する。
【００７１】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ（図４参照）と基準モーションデータ（図６参照）とを用いて行われる。すなわち、プレイヤキャラクタデータと基準モーションデータとに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータ（後述する図１１参照）がフレーム毎に生成される。このとき、本実施形態では、基準モーションデータが、プレイヤキャラクタデータに含まれる特徴データに基づいて補正されてから用いられる。生成されたスケルトンデータに基づいて、プレイヤキャラクタデータの各パーツが三次元仮想ゲーム空間上に配置される。これがフレーム毎に行われることで、プレイヤキャラクタに所定の動作を行わせる。
【００７２】
図６は、基準モーションデータの一例を説明するための図である。
【００７３】
基準モーションデータは、キャラクタの各動作（例えば、歩く動作、走る動作、ジャンプする動作、相手を攻撃する動作、攻撃を防ぐ動作など）を再生するためのデータである。基準モーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準モーションデータは、動作（モーション）毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節ａ（基点）のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節ａの回転角度を示すローテーションデータとが含まれている。また、関節ｂ〜ｑのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。ローテーションデータは、ローカル座標系における３つの軸（Ｘ軸、Ｙ軸、およびＺ軸）をそれぞれ中心とした回転角度のデータを要素とする。以下では、各要素をそれぞれ、「Ｘ軸回転角度」、「Ｙ軸回転角度」、「Ｚ軸回転角度」と省略して記載する。各要素の単位は（°）とする。また、各軸の回転方向は、軸の正の方向からみて反時計回りを正の方向とする。例えば、図２に示すローカル座標系の場合、Ｚ軸を中心とした回転角度は、紙面に対して反時計回りの回転角度が正の値になる。
【００７４】
基準モーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ（図４参照）の各関節のポジションデータとから、プレイヤキャラクタのローカル座標系における各関節の位置座標を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【００７５】
なお、基準モーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。
【００７６】
次に、基準モーションデータの補正について説明する。
【００７７】
基準モーションデータは、特徴がないキャラクタの動作を基準にして作製されている。「特徴がないキャラクタ」とは、特性が中間的で特定の状態でないキャラクタのことである。例えば、性別は中性的で、猫背や太った体型ではなく、全く疲れていないキャラクタである。より具体的には、特徴パラメータのパラメータ値が全て「０」のキャラクタである。以下では、キャラクタが「特徴がないキャラクタ」である場合を、「通常の場合」とする。各キャラクタの動作を再生する場合、当該キャラクタの特徴に応じて基準モーションデータが補正され、補正後のモーションデータが用いられる。当該補正は、特徴データ（図４参照）と、各特徴および各モーションデータに対応して記録されている演算式データ（図７参照）とに基づいて行われ、基準モーションデータの所定の関節のローテーションデータおよび関節ａ（基点）のポジションデータが補正されることで行われる。
【００７８】
図７は、演算式データの一例を説明するための図である。
【００７９】
演算式データは、設定されている特徴およびモーション毎に設定された各演算式を要素とするデータである。例えば、同図においては、性別とモーション１とに対応する演算式として、演算式１Ｗが設定されている。各演算式は、所定の関節のローテーションデータまたは関節ａ（基点）のポジションデータを補正するための１以上の式を含んでいる。
【００８０】
いずれの関節に対してどのような補正が行われるかは、動作によって異なり、また、特徴によっても異なる。以下に、歩く動作のモーションデータを、疲れパラメータに基づいて補正する場合、猫背パラメータに基づいて補正する場合、および、性別パラメータに基づいて補正する場合を例として説明する。
【００８１】
疲れパラメータに基づく補正では、腰関節ａおよび胴関節ｂのローテーションデータのＸ軸回転角度を増加させる補正と、関節ａ（基点）のポジションデータのＺ座標を減少させる補正とが行われる。上述したように、疲れパラメータのパラメータ値はプレイヤキャラクタに設定されている体力値に基づいて算出され、プレイヤキャラクタデータ（図４参照）に設定されているパラメータ値が適時更新されている。当該パラメータ値を用いて、補正が行われる。
【００８２】
具体的には、基準モーションデータの腰関節ａのローテーションデータを（θｘ，θｙ，θｚ）、疲れパラメータをＴとすると、補正後のローテーションデータ（θｘ’，θｙ’，θｚ’）は、下記（１）式によって算出される。
θｘ’＝θｘ＋１０・Ｔ
θｙ’＝θｙ
θｚ’＝θｚ                  ・・・・・  （１）
【００８３】
例えば、疲れパラメータＴが「０．５」の場合、θｘ’＝θｘ＋５となって、Ｘ軸回転角度に５°が加算され、キャラクタは通常の場合より５°腰が曲がった状態になる。同様に、胴関節ｂのローテーションデータのＸ軸回転角度も補正される（具体的な計算式は、省略している。）。なお、疲れパラメータＴが「０」の場合、補正が行われない（補正後も同じデータとなる）。
【００８４】
また、関節ａ（基点）のポジションデータを（Ｐｘ，Ｐｙ，Ｐｚ）とすると、補正後の関節ａ（基点）のポジションデータ（Ｐｘ’，Ｐｙ’，Ｐｚ’）は、下記（２）式によって算出される。
Ｐｘ’＝Ｐｘ・[１＋（-０．５）・Ｔ]
Ｐｙ’＝Ｐｙ
Ｐｚ’＝Ｐｚ・[１＋（-０．５）・Ｔ]  ・・・・・  （２）
【００８５】
例えば、疲れパラメータＴが「０．５」の場合、Ｐｘ’＝０．７５・Ｐｘとなって、キャラクタの左右方向の動きが通常の場合の７５％になる。また、Ｐｚ’＝０．７５・Ｐｚとなって、キャラクタの進行方向に進む距離が通常の場合の７５％になる。進む距離が減少する場合、歩幅も小さくなるように補正される。すなわち、足の位置が補正され、インバースキネマティクス技術を用いて、足首関節、膝関節、および股関節の各ローテーションデータが自動計算により補正される。
【００８６】
図８は、キャラクタが歩く動作を行っているデモ映像の１コマの画像を示す図である。同図（ａ）は、特徴がないキャラクタの歩く動作を示しており、疲れパラメータＴが「０」の場合のものを示している。同図（ａ）の右下の矢印は、キャラクタのローカル座標系の各軸の方向を示しており、紙面裏から表の方向がＸ軸の正方向である。同図（ｂ）は、疲れているキャラクタの歩く動作を示しており、疲れパラメータＴが「１」の場合のものを示している。
【００８７】
同図（ｂ）に示すキャラクタは、同図（ａ）に示すキャラクタと比べて、腰関節ａのＸ軸回転角度に１０°（＝１０・１）が加算され、胴関節ｂのＸ軸回転角度も所定の角度が加算されている。また、キャラクタの進行方向（Ｚ軸方向）に進む距離が、同図（ａ）の場合の５０％（＝１＋（-０．５）・１）になり、これに応じて歩幅も補正されている。また、同図からは判らないが、キャラクタの左右方向（Ｘ軸方向）の動きも、通常の場合の５０％（＝１＋（-０．５）・１）になっている。これらの補正によって、同図（ｂ）に示すキャラクタの姿勢は腰と胴を曲げて下を向いた姿勢となり、小さい歩幅で疲れて歩いているように再生される。
【００８８】
猫背パラメータに基づく補正では、腰関節ａ、胴関節ｂ、および首関節ｃのローテーションデータのＸ軸回転角度を変化させる補正と、鎖骨ｄ，ｈのローテーションデータのＹ軸回転角度を変化させる補正とが行われる。上述したように、猫背パラメータのパラメータ値は、固定値としてプレイヤキャラクタデータ（図４参照）にあらかじめ設定されている。当該パラメータ値を用いて、補正が行われる。
【００８９】
具体的には、基準モーションデータの腰関節ａのローテーションデータを（θｘ，θｙ，θｚ）、猫背パラメータをＳとすると、補正後のローテーションデータ（θｘ’，θｙ’，θｚ’）は、下記（３）式によって算出される。
θｘ’＝θｘ＋７・Ｓ
θｙ’＝θｙ
θｚ’＝θｚ                  ・・・・・  （３）
【００９０】
例えば、猫背パラメータＳが「０．５」の場合、θｘ’＝θｘ＋３．５となって、Ｘ軸回転角度に３．５°が加算され、キャラクタは通常の場合より３．５°腰が曲がった状態になる。一方、猫背パラメータＳが「−０．５」の場合、θｘ’＝θｘ−３．５となって、Ｘ軸回転角度から３．５°が減算され、キャラクタは通常の場合より３．５°腰が逆に曲がった状態（すなわち、背筋が伸びた状態）になる。同様に、胴関節ｂのローテーションデータのＸ軸回転角度も補正される（具体的な計算式は、省略している。）。このとき、猫背パラメータＳが「１」の場合に、通常の場合のＸ軸回転角度に１０°が加算されるように補正される。なお、猫背パラメータＳが「０」の場合、補正が行われない（補正後も同じデータとなる）。
【００９１】
猫背パラメータＳに応じて、腰関節ａおよび胴関節ｂのローテーションデータのＸ軸回転角度を補正すると、キャラクタの顔の向きも変化する。すなわち、猫背パラメータＳが正の値の場合、キャラクタの顔は下を向くようになり、猫背パラメータＳが負の値の場合、キャラクタの顔は上を向くようになる。本実施形態では、キャラクタの顔が正面を向いた状態とするために、首関節ｃのローテーションデータのＸ軸回転角度を変化させる補正も行っている。
【００９２】
具体的には、基準モーションデータの首関節ｃのローテーションデータを（θｘ，θｙ，θｚ）、猫背パラメータをＳとすると、補正後のローテーションデータ（θｘ’，θｙ’，θｚ’）は、下記（４）式によって算出される。
θｘ’＝θｘ−１７・Ｓ
θｙ’＝θｙ
θｚ’＝θｚ                  ・・・・・  （４）
【００９３】
例えば、猫背パラメータＳが「０．５」の場合、θｘ’＝θｘ−８．５となって、首関節ｃのＸ軸回転角度から８．５°が減算される。これにより、腰関節ａの補正で加算された３．５°と胴関節ｂの補正で加算された５°とが打ち消されて、キャラクタの顔の向きが通常の場合と同じ向き（正面を向いた状態）に補正される。
【００９４】
また、基準モーションデータの右鎖骨ｄのローテーションデータを（θｘ，θｙ，θｚ）、猫背パラメータをＳとすると、補正後のローテーションデータ（θｘ’，θｙ’，θｚ’）は、下記（５）式によって算出される。
θｘ’＝θｘ
θｙ’＝θｙ＋１０・Ｓ
θｚ’＝θｚ                  ・・・・・  （５）
【００９５】
例えば、猫背パラメータＳが「０．５」の場合、θｙ’＝θｙ＋５となって、Ｙ軸回転角度に５°が加算される。これにより、キャラクタの右肩が通常の場合より前に出た状態（肩をすぼめた状態）になる。一方、猫背パラメータＳが「−０．５」の場合、θｙ’＝θｙ−５となって、Ｙ軸回転角度から５°が減算さる。これにより、キャラクタの右肩が通常の場合より後ろに出た状態（胸を張った状態）になる。同様に、左鎖骨ｈのローテーションデータのＹ軸回転角度も補正される。このとき、左鎖骨ｈは右鎖骨ｄとは逆方向に回転させる必要があるので、猫背パラメータＳが「０．５」の場合、左鎖骨ｈは通常の場合のＹ軸回転角度に５°が減算されるように補正される（具体的な計算式は、省略している。）。これにより、キャラクタの左肩が通常の場合より前に出た状態（肩をすぼめた状態）になる。なお、猫背パラメータＳが「０」の場合、補正が行われない（補正後も同じデータとなる）。
【００９６】
図８（ｃ）は、猫背のキャラクタの歩く動作を示しており、猫背パラメータＳが「１」の場合のものを示している。同図（ａ）は、特徴がないキャラクタの歩く動作を示しており、猫背パラメータＳが「０」の場合のものである。
【００９７】
同図（ｃ）に示すキャラクタは、同図（ａ）に示すキャラクタと比べて、腰関節ａのＸ軸回転角度に７°（＝７・１）が加算され、胴関節ｂのＸ軸回転角度に１０°（＝１０・１）が加算され、首関節ｃのＸ軸回転角度から１７°（＝１７・１）が減算されている。また、右鎖骨ｄのＹ軸回転角度に１０°（＝１０・１）が加算され、左鎖骨ｈのＹ軸回転角度から１０°（＝１０・１）が減算されている。これらの補正によって、同図（ｃ）に示すキャラクタの姿勢は腰と胴をまげて肩をすぼめた姿勢となり、猫背の人が歩いているように再生される。
【００９８】
図８（ｄ）は、腹が出た（太っている）キャラクタの歩く動作を示しており、猫背パラメータＳが「−１」の場合のものを示している。
【００９９】
同図（ｄ）に示すキャラクタは、同図（ａ）に示すキャラクタと比べて、腰関節ａのＸ軸回転角度に−７°（＝７・（−１））が加算（すなわち、７°が減算）され、胴関節ｂのＸ軸回転角度に−１０°（＝１０・（−１））が加算（すなわち、１０°が減算）され、首関節ｃのＸ軸回転角度から−１７°（＝１７・（−１））が減算（すなわち、１７°が加算）されている。また、右鎖骨ｄのＹ軸回転角度に−１０°（＝１０・（−１））が加算（すなわち、１０°が減算）され、左鎖骨ｈのＹ軸回転角度から−１０°(＝１０・（−１））が減算（すなわち、１０°が加算）されている。これらの補正によって、同図（ｄ）に示すキャラクタの姿勢は背筋を伸ばして胸を張った姿勢となり、太っている人が歩いているように再生される。
【０１００】
性別パラメータに基づく補正では、腰関節ａ、胴関節ｂ、および鎖骨ｄ，ｈのローテーションデータの各要素を変化させる補正と、肘および膝の開き方を調整する補正とが行われる。上述したように、性別パラメータのパラメータ値は、固定値としてプレイヤキャラクタデータ（図４参照）にあらかじめ設定されている。当該パラメータ値を用いて、補正が行われる。
【０１０１】
具体的には、基準モーションデータの腰関節ａのローテーションデータを（θｘ，θｙ，θｚ）、性別パラメータをＷとすると、補正後のローテーションデータ（θｘ’，θｙ’，θｚ’）は、下記（６）式によって算出される。
θｘ’＝θｘ
θｙ’＝θｙ・（１＋０．３・Ｗ）
θｚ’＝θｚ・（１＋０．５・Ｗ）      ・・・・・  （６）
【０１０２】
例えば、性別パラメータＷが「０．５」の場合、θｙ’＝１．１５・θｙとなって、Ｙ軸回転角度が１１５％になり、キャラクタは通常の場合より１５％増しで腰をＹ軸周りに回転させる状態になる。また、θｚ’＝１．２５・θｚとなって、Ｚ軸回転角度が１２５％になり、キャラクタは通常の場合より２５％増しで腰をＺ軸周りに回転させる状態になる。同様に、胴関節ｂのローテーションデータのＹ軸回転角度およびＺ軸回転角度も補正され（具体的な計算式は、省略している。）、胴の回転も強調される。また、鎖骨ｄ，ｈのローテーションデータの各要素も補正され（具体的な計算式は、省略している。）、肩の動きが強調される。一方、性別パラメータＷが「−０．５」の場合、θｙ’＝０．８５・θｙ、θｚ’＝０．７５・θｚとなって、Ｙ軸回転角度およびＺ軸回転角度が抑えられる。同様に、胴関節ｂのローテーションデータのＹ軸回転角度およびＺ軸回転角度も補正され、胴の回転も抑えられる。また、鎖骨ｄ，ｈのローテーションデータの各要素も補正され、肩の動きも抑えられる。なお、性別パラメータＷが「０」の場合、補正が行われない（補正後も同じデータとなる）。
【０１０３】
また、性別パラメータＷに応じて、肘および膝の開き方を調整する補正も行われる。性別パラメータＷが大きいほど、肘および膝の開き方が小さくなるように補正される。肘についての補正は、肘関節ｆ，ｊの位置を先に決定し、インバースキネマティクス技術を用いて、手首関節ｇ，ｋおよび肩関節ｅ，ｉの各ローテーションデータを自動計算で補正することで行われる。膝についての補正も同様に、膝関節ｍ，ｐの位置を先に決定し、インバースキネマティクス技術を用いて、足首関節ｎ，ｑおよび股関節ｌ，ｏの各ローテーションデータを自動計算で補正することで行われる。
【０１０４】
図９は、キャラクタが左手に盾を持って歩く動作を行っているデモ映像の１コマの画像を示す図である（なお、同図においては、キャラクタのみを表示しており、盾および装備を表示していない。）。同図（ａ）は、特徴がないキャラクタの動作を示しており、性別パラメータＷが「０」の場合のものを示している。同図（ａ）の右下の矢印は、キャラクタのローカル座標系の各軸の方向を示しており、紙面裏から表の方向がＺ軸の正方向である。同図（ｂ）は、女性キャラクタの歩く動作を示しており、性別パラメータＷが「１」の場合のものを示している。
【０１０５】
同図（ｂ）に示すキャラクタは、同図（ａ）に示すキャラクタと比べて、腰関節ａのＹ軸回転角度が１３０％（＝１＋０．３・１）になり、Ｚ軸回転角度が１５０％（＝１＋０．５・１）になって、腰のＹ軸およびＺ軸まわりの回転が強調されている。また、胴のＹ軸およびＺ軸まわりの回転も強調され、肩の動きも強調されている。さらに、肘および膝の開き方が小さくなるように補正されている。これらの補正によって、同図（ｂ）に示すキャラクタの動作は女性らしくなって、女性が歩いているように再生される。
【０１０６】
同図（ｃ）は、男性キャラクタの歩く動作を示しており、性別パラメータＷが「−１」の場合のものを示している。
【０１０７】
同図（ｃ）に示すキャラクタは、同図（ａ）に示すキャラクタと比べて、腰関節ａのＹ軸回転角度が７０％（＝１＋０．３・（−１））になり、Ｚ軸回転角度が５０％（＝１＋０．５・（−１））になって、腰のＹ軸およびＺ軸まわりの回転が抑えられている。また、胴のＹ軸およびＺ軸まわりの回転も抑えられ、肩の動きも抑えられている。さらに、肘および膝の開き方が大きくなるように補正されている。これらの補正によって、同図（ｃ）に示すキャラクタの動作は男性らしくなって、男性が歩いているように再生される。
【０１０８】
上記各特徴パラメータに基づく補正はそれぞれ互いに独立しており、基準モーションデータには全ての補正が行われる。例えば、図４に示すプレイヤキャラクタデータの場合、性別パラメータＷが「０．５」の場合の補正、猫背パラメータＳが「０．５」の場合の補正、疲れパラメータＴが「０．５」の場合の補正がそれぞれ重複して行われる。
【０１０９】
他の特徴に基づく補正も、対応する特徴パラメータとあらかじめ設定されている演算式とに基づいて行われる。他の特徴としては、性格の明るさ（暗さ）、年齢、傲慢さ（謙虚さ）、士気の高さ、気力の充実度、気分の高揚の程度、体力の程度などが設定されており、それぞれの特徴に対応する特徴パラメータと演算式とがあらかじめ設定されている（図７参照）。
【０１１０】
なお、上記では、歩く動作の基準モーションデータに対する補正のための演算式について説明したが、他の動作（例えば、走る動作、ジャンプする動作、相手を攻撃する動作、攻撃を防ぐ動作など）の基準モーションデータに対する補正のための演算式も、キャラクタの特徴毎にそれぞれ設定されている（図７参照）。なお、同じような動作（例えば、歩く動作と走る動作など）の場合、共通の演算式を用いるようにしてもよい。また、体型に関する特徴（猫背など）に基づく補正の場合、動作の種類に関わらず共通の演算式を用いても、適切な補正を行うことができる場合が多い。しかし、疲れや性別などの特徴に基づく補正の場合、共通の演算式を用いて補正すると、動作によっては不自然な動作になる場合がある。したがって、動作毎にそれぞれ異なる演算式を用いる必要がある
【０１１１】
図１０は、ゲーム装置１の例えば制御部１１１によって行われる、プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理（以下では、「スケルトンデータ生成処理」とする。）を説明するためのフローチャートである。
【０１１２】
スケルトンデータ生成処理は、フレーム毎に実施される。まず、実行される動作に対応する基準モーションデータの該当するフレームのデータ（例えば、図６に示すモーション１のフレーム１の処理の場合、ポジションデータα１、ローテーションデータａ１、およびローテーションデータｂ１〜ｑ１）と、プレイヤキャラクタデータ（図４参照）とが、ＣＰＵ１１１ａによってＲＡＭ１１１ｃから読み出されて、描画処理部１１２に入力される（Ｓ１）。
【０１１３】
次に、プレイヤキャラクタデータの特徴データに基づいて、ポジションデータα１、ローテーションデータａ１、およびローテーションデータｂ１〜ｑ１が補正される（Ｓ２）。このとき、モーションと各特徴パラメータとに対応する演算式が演算式データ（図７参照）を参照して読み出される。例えば、上記例では、モーション１と性別パラメータとに対応する演算式１Ｗが読み出されて性別パラメータに基づく補正がされ、演算式１Ｓが読み出されて猫背パラメータに基づく補正がされ、演算式１Ｔが読み出されて疲れパラメータに基づく補正がされる。次に、補正後のデータとプレイヤキャラクタデータとから、スケルトンデータが生成される（Ｓ３）。
【０１１４】
図１１は、スケルトンデータの一例を説明するための図である。
【０１１５】
スケルトンデータは、各関節の位置データ（ポジションデータ）および親である関節を示すデータ（リンクデータ）を含んでいる。関節ａ（基点）のデータには、ポジションデータのみが含まれている。関節ａのポジションデータは、プレイヤキャラクタのローカル座標系における関節ａの位置座標であり、基準モーションデータの関節ａのポジションデータが設定される。
【０１１６】
関節ｂ〜ｑのデータには、ポジションデータおよびリンクデータが含まれている。関節ｂ〜ｑのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節ｂ〜ｑのポジションデータと補正後のモーションデータの関節ｂ〜ｑのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節ｂ〜ｑのリンクデータは、プレイヤキャラクタデータの関節ｂ〜ｑのリンクデータを用いる。
【０１１７】
図１０に戻って、ステップＳ３で生成されたスケルトンデータの座標変換が行われ（Ｓ４）、スケルトンデータ生成処理は終了される。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップＳ４の座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【０１１８】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き（正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き）を示すデータであり、ＲＡＭ１１１ｃに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが歩いて移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として歩くモーションが実行される。当該歩くモーションが終了したとき（最後のフレームが処理されたとき）のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが歩いて移動している間、歩くモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【０１１９】
敵キャラクタなどのプレイヤキャラクタと同じスケルトンモデル（図２および図３参照）を有するキャラクタの動作の再生においても、上記と同様に、スケルトンデータ生成処理が行われる。すなわち、当該キャラクタの特徴に応じて基準モーションデータ（図６参照）を補正し、補正後のモーションデータを用いてスケルトンデータを生成して座標変換を行う。
【０１２０】
描画処理部１１２は、最終的に、ワールド座標系のデータに変換されたスケルトンデータ（各キャラクタのスケルトンデータ）と、同様にワールド座標系のデータに変換された画像データなどを用いて、ゲーム画像のデータを作成する。フレーム毎に作成されたゲーム画像のデータが、映像信号としてモニタ１３に出力されて、プレイヤキャラクタの動作の映像がモニタ１３に表示される。
【０１２１】
本実施形態によると、特徴がないキャラクタの動作を再生するように作製された基準モーションデータが、キャラクタの特徴に応じて補正される。キャラクタの動作は、補正後のモーションデータが用いられて再生される。各動作のモーションデータは、動作および特徴に応じて設定されている演算式に基づいて、当該特徴が表現されるように補正される。これにより、キャラクタの各特徴が反映された動作が再生される。また、各特徴の反映の程度は、特徴パラメータのパラメータ値に応じて調整される。各特徴の程度を様々に調整することで、キャラクタの動作のバリエーションを簡単に増加させることができる。また、基準モーションデータとして、特徴がないキャラクタの動作を再生するためのものだけを作製すればよいので、ゲーム作製者の作業負担を軽減することができ、開発コストを抑制することができる。また、動作のバリエーションが増加しても基準モーションデータのデータ量は増加しないので、モーションデータを記憶しておくためのＲＡＭの記憶領域の増大を抑制することができる。
【０１２２】
なお、上記実施形態では、体型が固定されているキャラクタの動作について説明したが、キャラクタの体型を編集できるゲームにも、本発明を適用することができる。この場合、体型の変化に応じて所定の特徴パラメータが変化するようにしてもよい。例えば、キャラクタの身長に応じて猫背パラメータが大きくなるようにしてもよい。また、体型の変化に連動させずに、特徴パラメータをプレイヤが直接編集できるようにしてもよい。例えば、ゲームを初めてプレイする時に、プレイヤがプレイヤキャラクタの各特徴パラメータを編集して、性別や姿勢などの特徴を設定するようにしてもよい。また、プレイヤキャラクタを編集するのではなく、特徴の異なる複数のキャラクタ（例えば、男性キャラクタと女性キャラクタなど）の中からプレイヤが好みのキャラクタを選択できるようにしてもよい。この場合も、選択されたキャラクタの特徴に応じて基準モーションデータが補正されるので、キャラクタの特徴に応じた動作を再生することができる。なお、プレイヤキャラクタ以外のキャラクタについても、プレイヤが各特徴パラメータを直接編集できるようにしてもよいし、プレイヤが好みのキャラクタを選択できるようにしてもよい。
【０１２３】
また、人型以外のキャラクタについても、本発明を適用することができる。例えば、馬などの四足歩行の動物のキャラクタの場合、当該キャラクタのスケルトンモデルに応じた基準モーションデータを作製しておき、当該基準モーションデータを特徴に応じて補正すればよい。
【０１２４】
上記実施形態では、プレイヤキャラクタおよび敵キャラクタなどについて本発明を適用した場合について説明したが、特定のキャラクタについてのみ本発明を適用するようにしてもよい。例えば、プレイヤキャラクタにのみ適用するようにしてもよいし、特定の敵キャラクタにのみ適用するようにしてもよい。
【０１２５】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、ＲＰＧ（ロールプレイングゲーム）、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはＣＰＵの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【０１２６】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【０１２７】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。例えば、仮想現実空間でキャラクタを活動させるプログラムや、シミュレータなどのプログラムにも適用できる。本発明は、モーションデータに基づいてキャラクタなどの動作を表示するあらゆるプログラムに適用することができる。
【０１２８】
また、本発明は、ゲームを作製するためのツールに適用することもできる。例えば、特徴パラメータのパラメータ値を変化させてキャラクタの動作を確認し、ゲームに使用するキャラクタの特徴を決定するようにしてもよい。また、特徴に応じて補正された後のモーションデータを、特定のキャラクタのモーションデータとして用いるようにしてもよい。
【０１２９】
また、複数種類（別タイトル）のゲームであっても、本発明を適用することができる。例えば、各ゲームの単一のプレイヤキャラクタについて、同一の基準モーションデータを使用して動作を再生するようにしてもよい。これにより、例えば各種ゲームのそれぞれで、所定の動作のモーションデータを毎回作成する必要がなくなり、ゲーム開発業務の負担を軽減することができる。
【０１３０】
本発明に係るプログラム、および、当該プログラムを記録したプログラム記録部を備えた画像処理装置は、上述した実施形態に限定されるものではない。本発明に係るプログラム、当該プログラムを記録したプログラム記録部を備えた画像処理装置の具体的な構成は、種々に設計変更自在である。
【符号の説明】
【０１３１】
１  ゲーム装置
１１  本体（画像処理装置）
１１１  制御部
１１１ａ  ＣＰＵ（情報読出手段、モーションデータ生成手段、キャラクタ制御手段）
１１１ｂ  ＲＯＭ
１１１ｃ  ＲＡＭ（記憶部、プログラム記録部）
１１２  描画処理部
１１３  音声処理部
１１４  ディスクドライブユニット
１１５  メモリカード接続ユニット
１１６  Ｉ／Ｏインターフェース部
１１７  通信処理部
１１８  信号送受信部
１２  操作コントローラ
１３  モニタ（表示装置）
１４  ディスク
１５  メモリカード
１６  ネットワークアダプタ
２  ネットワーク回線
【図１】
0005785414.tif 000002
【図２】
0005785414.tif 000003
【図３】
0005785414.tif 000004
【図４】
0005785414.tif 000005
【図５】
0005785414.tif 000006
【図６】
0005785414.tif 000007
【図７】
0005785414.tif 000008
【図１０】
0005785414.tif 000009
【図１１】
0005785414.tif 000010
【図８】
0005785414.tif 000011
【図９】
0005785414.tif 000012