説明

プログラム、および、当該プログラムを記録したプログラム記録部を備えている画像処理装置

【課題】キャラクタの状態や特性に応じた動作のバリエーションを簡単に増加させることができる画像処理装置、および、この画像処理装置を実現するためのプログラムを提供する。
【解決手段】基準モーションデータを、特徴パラメータのパラメータ値および演算式に基づいて補正する。演算式として、特徴が反映されるような式を、動作および特徴に応じて設定する。パラメータ値として、特徴の反映の程度を示す値を設定する。補正後のモーションデータを用いることにより、パラメータ値に応じて特徴を反映させた動作が再生される。性別パラメータのパラメータ値を「0」とした場合(選択図(a)参照)と比べて、パラメータ値を「1」とした場合(選択図(b)参照)に女性らしく歩く動作が再生され、パラメータ値を「−1」とした場合(選択図(c)参照)に男性らしく歩く動作が再生される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、および、当該プログラムを記録したプログラム記録部を備えている画像処理装置に関し、特に、キャラクタの表示方法に関する。
【背景技術】
【0002】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で敵であるキャラクタと戦うアクションゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とし、敵であるキャラクタを「敵キャラクタ」とする。
【0003】
このようなアクションゲームでは、プレイヤキャラクタおよび敵キャラクタは、互いに相手を攻撃する動作を行う。また、プレイヤキャラクタおよび敵キャラクタは、走ったりジャンプするなどの移動のための動作を行う。キャラクタ毎に各動作のためのデータ(以下では、「モーションデータ」とする。詳細は後述する。)をあらかじめ用意しておくと膨大なデータ量となる。したがって、各キャラクタに共通する動作毎のモーションデータを用意し、これを各キャラクタ固有の画像データやモデルデータなど(以下では、「キャラクタデータ」とする。詳細は後述する。)と組み合わせて各キャラクタに各動作を行わせることで、用意するモーションデータの数を抑制している。
【0004】
モーションデータは、各動作(モーション)のフレーム毎(例えば1/60秒毎)のデータを記録したものである(図6参照)。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル(図2および図3参照)で表現される。スケルトンモデルおよびその階層構造については、後述する。モーションデータは、このスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。例えば、プレイヤがプレイヤキャラクタに歩いて移動させるための操作を行った場合、歩いて移動する動作のモーションデータとプレイヤキャラクタのキャラクタデータとを用いてプレイヤキャラクタが歩いて移動する動作の映像が生成され、ゲーム画面に表示される。
【0005】
また、プレイヤキャラクタの状態は、ゲームの進行状況によって異なる場合がある。例えば、プレイヤキャラクタが元気な場合もあれば、疲れている場合もある。プレイヤキャラクタの状態が異なる場合に、その状態をよりリアルに表現しようとすれば、プレイヤキャラクタの動作を変化させる必要がある。つまり、プレイヤキャラクタが元気な状態では元気に歩く動作の映像を生成し、プレイヤキャラクタが疲れている状態では疲れて歩く動作の映像を生成する必要がある。しかし、この場合、元気に歩く動作と疲れて歩く動作とで、別々のモーションデータを用意する必要がある。少し疲れた状態と疲れ果てた状態とを区別して表現しようとすれば、さらに用意するモーションデータの数が増加することになる。
【0006】
このようにモーションデータの数が増加することを抑制するための方法が、開発されている。例えば、ある状態のモーションデータと基準となるモーションデータとから、その状態を表現するための変形データを抽出し、当該変形データに適用度を乗算したものを用いる方法が開発されている。当該方法では、抽出された変形データと他の動作のモーションデータとを用いて、変形データに対応する状態の他の動作を表現することで、モーションデータの数が増加することを抑制している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−15713号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上記方法を用いる場合、ある状態のモーションデータと基準となるモーションデータの2つのモーションデータを用意する必要がある。つまり、疲れた状態の変形データを抽出するためには、基準となる歩くモーションデータと疲れた状態で歩くモーションデータとを用意する必要がある。さらに、キャラクタの性別や体格(例えば、猫背など)の違いを表現する場合は、男性(または、女性)が歩くモーションデータや猫背の人が歩くモーションデータなどを用意しなければならない。つまり、キャラクタの状態や特性に応じた動作のバリエーションを増加させるためには、状態や特性ごとのモーションデータを用意する必要がある。したがって、ゲーム作製者の作業負担が増加し、記録するデータ量が膨大になる。
【0009】
なお、上記問題は、アクションゲームに限られるものではなく、他の種類のゲームにおいても生じる。また、ゲーム以外においても、共通のモーションデータに基づいてキャラクタの動作を表示する場合に、上記問題が生じる。
【0010】
本発明は上記した事情のもとで考え出されたものであって、キャラクタの状態や特性に応じた動作のバリエーションを簡単に増加させることができる画像処理装置、および、この画像処理装置を実現するためのプログラムを提供することをその目的としている。
【課題を解決するための手段】
【0011】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【0012】
本発明の第1の側面によって提供されるプログラムは、複数の関節による連結構造を有するキャラクタが動作を行っている画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、前記各関節間の距離を特定するためのキャラクタデータと、所定の動作を行わせるべく前記各関節間の相対的な位置関係を特定するための基準モーションデータと、前記キャラクタに関する少なくとも1種類のパラメータ値とを、記憶部から読み出す情報読出手段と、前記基準モーションデータを用いて、前記キャラクタに対応するモーションデータを生成するモーションデータ生成手段と、前記キャラクタに対応するモーションデータと前記キャラクタデータとを用いて、前記キャラクタに所定の動作を行わせるキャラクタ制御手段として機能させ、前記モーションデータ生成手段は、前記キャラクタに関するパラメータ値に基づいて前記基準モーションデータを補正することで、前記キャラクタに対応するモーションデータを生成することを特徴とする。
【0013】
なお、本発明における「パラメータ値」には、キャラクタにあらかじめ設定されている「特性」についてのパラメータ値、および、ゲームの進行に応じて変化するキャラクタの「状態」についてのパラメータ値などが含まれる。「特性」には、性別や体格、性格などが含まれる。例えば、当該キャラクタの男っぽさ(または、女っぽさ)の程度や、猫背の程度、太り具合、性格の明るさ(暗さ)の程度、年齢、傲慢さ(謙虚さ)の程度などが、「パラメータ値」として設定されている。また、「状態」には、体力の状態や精神状態などが含まれる。例えば、当該キャラクタのそのときの疲れ方の程度や、士気の高さ、気力の充実度、気分の高揚の程度、体力の程度、年齢(ゲーム進行中に加齢する場合)などが、「パラメータ値」として設定されている。
【0014】
本発明の好ましい実施の形態においては、前記キャラクタは、同一の連結構造を有する複数のキャラクタであって、前記情報読出手段は、前記各キャラクタに対応するキャラクタデータおよびパラメータ値と、前記基準モーションデータとを読み出し、前記モーションデータ生成手段は、前記各キャラクタに対応するモーションデータを生成し、前記キャラクタ制御手段は、前記各キャラクタに対応するモーションデータとキャラクタデータとを用いて、前記各キャラクタに所定の動作を行わせる。
【0015】
本発明の好ましい実施の形態においては、前記基準モーションデータは、前記各関節の回転角度を含んでおり、前記モーションデータ生成手段は、前記基準モーションデータに含まれる所定の関節の回転角度を補正する。
【0016】
本発明の好ましい実施の形態においては、前記基準モーションデータは、前記キャラクタの位置の情報を含んでおり、前記モーションデータ生成手段は、前記位置の情報を補正する。
【0017】
本発明の好ましい実施の形態においては、前記情報読出手段は、複数の所定の特徴の程度をそれぞれ特定するためのパラメータ値を読出し、前記モーションデータ生成手段は、前記各所定の特徴ごとに、対応するパラメータ値に基づく補正を行う。
【0018】
本発明の好ましい実施の形態においては、前記コンピュータを、プレイヤの操作に応じて前記パラメータ値を変更するパラメータ値変更手段としてさらに機能させる。
【0019】
本発明の第2の側面によって提供される画像処理装置は、本発明の第1の側面によって提供されるプログラムを記録したプログラム記録部と、前記プログラム記録部に記録されたプログラムを実行するコンピュータとを備えていることを特徴とする。
【発明の効果】
【0020】
本発明によれば、基準モーションデータが、特徴の程度を特定するためのパラメータ値に基づいて補正される。補正されたモーションデータに基づいて、キャラクタの動作は制御される。基準モーションデータがパラメータ値に基づいて補正されているので、キャラクタの特徴が反映された動作が再生される。また、パラメータ値に応じて、各特徴の程度が反映される。これにより、キャラクタの動作のバリエーションを簡単に増加させることができる。また、基準モーションデータを補正して用いるので、バリエーションに応じたモーションデータをそれぞれ作製する必要がない。したがって、ゲーム作製者の作業負担を軽減することができ、開発コストを抑制することができる。また、バリエーションが増加しても基準モーションデータのデータ量は増加しないので、モーションデータを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0021】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【0022】
【図1】本実施形態に係るゲーム装置を示す構成図である。
【図2】キャラクタが両手を広げて直立した姿勢を取っているときの各関節のリンク構造を示す図である。
【図3】各関節の親子関係の階層構造を示す図である。
【図4】プレイヤキャラクタデータの一例を説明するための図である。
【図5】ポジションデータを説明するための図である。
【図6】基準モーションデータの一例を説明するための図である。
【図7】演算式データの一例を説明するための図である。
【図8】キャラクタが歩く動作を行っているデモ映像の1コマの画像を示す図である。
【図9】キャラクタが左手に盾を持って歩く動作を行っているデモ映像の1コマの画像を示す図である。
【図10】プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理を説明するためのフローチャートである。
【図11】スケルトンデータの一例を説明するための図である。
【発明を実施するための形態】
【0023】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置(以下、「ゲーム装置」とする。)において、アクションゲームを進行している場合を例として説明する。
【0024】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタが敵キャラクタと戦い、敵キャラクタを倒すことにより進行する。プレイヤキャラクタは、プレイヤの操作に応じて、攻撃や移動などの動作を行う。また、敵キャラクタなどのキャラクタは、コンピュータによる制御に応じて、同様に動作を行う。各キャラクタ(プレイヤキャラクタおよび敵キャラクタなど)の各動作のために、各キャラクタに共通で用いられる基準となるモーションデータ(以下では、「基準モーションデータ」とする。)が予め設定されている。例えば、歩くモーションデータや剣で切りかかるモーションデータなど、動作毎の基準モーションデータが用意されている。各キャラクタに動作をさせる場合、当該キャラクタの特性(性別、体格、性格などの特徴)や状態(疲れ方の程度などの特徴)に応じて、基準モーションデータが補正され、補正後のモーションデータが用いられる。
【0025】
例えば、キャラクタが疲れた状態の場合、キャラクタが少し前かがみ(すなわち、腰と胴を曲げて下を向いた姿勢)で歩幅が狭くなるように、基準モーションデータが補正される。この補正後のモーションデータが用いられることで、キャラクタの歩く動作が疲れて歩いているように表現される(図8(b)参照)。なお、ゲーム進行においてキャラクタが歩き回ったり、敵と戦ったりして体力を消耗した場合などに、当該キャラクタは疲れた状態になる。また、体力の消耗度合いに応じて、キャラクタの疲れの程度も変わってくる。
【0026】
また、キャラクタが女性の場合、腰関節、胴関節、鎖骨の回転を強調するように、基準モーションデータが補正される。この補正後のモーションデータが用いられることで、キャラクタが女性らしく歩いているように表現される(図9(b)参照)。さらに、女性であるキャラクタが疲れた状態である場合は、基準モーションデータに対する上記2つの補正が重複して行われる。この補正後のモーションデータが用いられることで、キャラクタが女性らしく、かつ、疲れた状態で歩いているように表現される。モーションデータを用いた具体的な動作の再生方法、および、特性や状態に応じたモーションデータの補正方法については後述する。
【0027】
以下に、本実施形態のハード構成について説明する。
【0028】
図1は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置1は、本体11および操作コントローラ12を備えている。操作コントローラ12は短距離無線通信によって本体11に接続されている。本体11には、モニタ13が専用のケーブルによって接続される。また、本体11には、ゲームプログラムやゲームデータが記録されているディスク14が装着される。さらに、本体11には、必要に応じてゲームデータを保存するためのメモリカード15も装着される。
【0029】
本体11は、制御部111、描画処理部112、音声処理部113、ディスクドライブユニット114、メモリカード接続ユニット115、I/Oインターフェース部116、通信処理部117、および信号送受信部118を備えている。制御部111には、描画処理部112、音声処理部113、I/Oインターフェース部116、および通信処理部117が接続されている。また、I/Oインターフェース部116には、ディスクドライブユニット114、メモリカード接続ユニット115、信号送受信部118、およびモニタ13が接続されている。
【0030】
ゲーム装置1では、上記アクションゲームのソフトウェアが記録されたディスク14がディスクドライブユニット114に装着される。このディスクドライブユニット114によって、ディスク14内のゲームプログラムおよびゲームデータが制御部111内のRAM111c(後述)に読み込まれる。当該ゲームプログラムがCPU111a(後述)によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ12(後述)を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ12を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【0031】
ディスク14内のゲームデータには、プレイヤキャラクタや敵キャラクタなどのキャラクタデータ(画像データ含む)、武器などのアイテムデータ(画像データ含む)、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【0032】
制御部111は、本体11の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、CPU111a、ROM111b、およびRAM111cなどからなる。これらは、それぞれバスラインで接続されている。
【0033】
CPU111aは、RAM111cに読み込まれたゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、プレイヤの操作による操作信号が操作コントローラ12から信号送受信部118を介して入力されると、CPU111aは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。CPU111aは、その処理結果に基づいて、例えば三次元空間を表現する二次元画像(以下では、「ゲーム画像」とする。)を、モニタ13の表示画面に表示させる。また、CPU111aは、処理結果に基づいて、効果音などの音声を、モニタ13のスピーカ13a(後述)に出力させる。
【0034】
ROM111bには、ゲーム装置1に基本的な機能を発揮させるための基本プログラムが記録されている。基本プログラムには、ディスク14に記録されたゲームプログラムおよびゲームデータを読み出すディスクローディング機能のためのプログラム等が含まれる。CPU111aは、ディスクドライブユニット114にディスク14が装着されると、ROM111bの基本プログラムにしたがってディスクドライブユニット114を動作させ、ディスク14からゲームプログラムおよびゲームデータをRAM111cに読み込み、ゲーム装置1をゲーム開始状態に設定する。
【0035】
RAM111cは、ディスク14から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、CPU111aがゲームプログラムを実行するためのワークエリアとを提供する。
【0036】
ゲームプログラムは、例えばゲーム進行プログラムやグラフィック制御プログラム等の複数のプログラムが組み合わされて構成されている。ゲーム進行プログラムは、モニタ13に表示されているプレイヤキャラクタの動作を操作コントローラ12からの操作信号に基づいて制御するプログラムである。グラフィック制御プログラムは、モニタ13に表示すべきゲーム画像を制御するプログラムである。また、本実施形態において、RAM111cはゲームデータとして、ディスク14から読み込まれたプレイヤキャラクタデータ(図4参照)および基準モーションデータ(図6参照)などを記録しており、これらのデータから作成されたスケルトンデータ(図11参照)などを記録する。
【0037】
CPU111aは、操作コントローラ12からの操作信号に基づき、必要に応じてディスク14からゲームプログラムや画像データなどをRAM111cに読み込む。CPU111aは、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ13に表示すべきゲーム画像の内容を決定する。
【0038】
描画処理部112は、描画処理に必要な各種の演算処理を行う。CPU111aは、例えば、1/60秒毎に、描画処理部112に描画指令を出力する。このとき、CPU111aは、モニタ13に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータ、仮想カメラの位置と撮影方向のデータ、および光源データなどをRAM111cから読み出して描画処理部112に供給する。また、CPU111aは、各キャラクタの位置データや、操作コントローラ12から入力される操作信号を描画処理部112に供給する。
【0039】
描画処理部112は、CPU111aからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ(各オブジェクトおよび背景の位置関係、モニタ13の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ)の演算などを行い、その演算結果に基づいて描画処理部112内のvideo RAM(図示せず)に1コマ(1フレーム)のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば1/60秒毎に映像信号としてモニタ13に出力され、モニタ13に映像として表示される。
【0040】
音声処理部113は、効果音などの音声を発生させる処理に必要な各種の演算処理を行う。CPU111aは、モニタ13のスピーカ13aから出力すべき効果音若しくはBGMの音響内容を決定すると、音声処理部113に音声指令を出力する。音声処理部113は、音声指令に基づき、RAM111cから効果音もしくはBGMの音声データを読み出す。さらに、音声処理部113は、この音声データに所定の加工処理とデジタル/アナログ変換処理とを施した後、スピーカ13aに出力する。
【0041】
ディスクドライブユニット114は、CPU111aからのローディング指令(ローディングすべきゲームプログラムとゲームデータを指定した読出指令)に基づき、ディスク14に記録されたゲームプログラムやゲームデータを読み出す。
【0042】
メモリカード接続ユニット115は、ゲーム進行に関する情報をメモリカード15に書き込んだり、読み出したりするためのユニットである。CPU111aは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、RAM111cのワークエリアに記録されたゲーム進行に関する情報(この情報には、例えば、プレイヤが設定したゲームキャラクタの種類、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。)を、メモリカード接続ユニット115を介してメモリカード15に記録する。また、CPU111aは、メモリカード15に記録されたゲーム進行に関する情報を、ゲーム開始前にRAM111cに読み出す。
【0043】
I/Oインターフェース部116は、ディスクドライブユニット114やメモリカード接続ユニット115によって読み出されたゲームプログラムやゲームデータ、および信号送受信部118が受信した操作コントローラ12からの操作信号を制御部111に伝送する。また、I/Oインターフェース部116は、制御部111、描画処理部112や音声処理部113からの映像信号や音声信号などをモニタ13やスピーカ13aに伝送する。
【0044】
通信処理部117は、ゲーム装置1がネットワーク回線2を介して他のゲーム装置1と通信を行う場合に、データの送信および受信を行うための制御を行う。具体的には、通信処理部117は、操作コントローラ12から入力される操作信号やCPU111aから出力される信号をネットワーク回線2を介して他のゲーム装置1に送信する。また、通信処理部117は、ネットワーク回線2を介して他のゲーム装置1から送信される信号を受信してCPU111aに入力する。
【0045】
信号送受信部118は、操作コントローラ12から短距離無線通信により送信される信号を受信する。操作コントローラ12からの信号には、操作コントローラ12に設けられた操作ボタンの操作情報の他に、操作コントローラ12に設けられた各種センサ(図示しない)による検出データが含まれる。CPU111aはこの操作コントローラ12から送信される信号によりゲームを進行させる。また、信号送受信部118は、操作コントローラ12に各種信号(例えば、操作コントローラ12の振動部(図示しない)を振動させたり、発光部(図示しない)を発光させたり、音声出力部(図示しない)から音声を出力させたりするための信号など)を送信する。
【0046】
操作コントローラ12は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作される。プレイヤによって操作コントローラ12が操作されると、その操作信号が制御部111に伝送され、モニタ13に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ12は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど(押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。)を備えている。
【0047】
モニタ13は、本体11から送られてきた映像信号に応じてゲーム進行状態を示すゲーム画像を表示画面に映し出したり、本体11から送られてきた音声信号に応じてスピーカ13aから効果音などの音声を出力するための装置である。モニタ13は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【0048】
ディスク14は、例えばDVD−ROMまたはCD−ROMなどの光ディスクである。ディスク14には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード15は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。RAM111cのワークエリアに記録された情報はゲーム装置本体11の電源を切ると消滅する。したがって、CPU111aは、当該情報のうち消滅させずに残しておくべきゲーム進行に関する情報などをメモリカード15に記録する。
【0049】
なお、ゲーム装置1がHDD(Hard Disk Drive)を備えている場合、ゲーム進行に関する情報やゲームプログラム、ゲームプログラムの実行に必要な種々のデータや画像データの一部を、HDDに記憶することができる。
【0050】
ゲーム装置1は、ネットワークアダプタ16を介して、インターネット回線などのネットワーク回線2に接続することができる。この場合、ネットワーク回線2を介して、複数のゲーム装置1間でゲームを行うこともできる(いわゆる「オンラインゲーム」)。本実施形態では、ゲーム装置1単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【0051】
次に、プレイヤキャラクタデータについて、図2〜図5を参照して説明する。
【0052】
図2および図3は、キャラクタのスケルトンモデルおよびその階層構造を説明するための図である。図2は、キャラクタが両手を広げて直立した姿勢(以下では、「標準姿勢」とする。)を取っているときの各関節のリンク構造を示す図である。図3は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人型のキャラクタなのでスケルトンモデルは人型のスケルトンモデルであり、図2および図3はそれぞれ人型のスケルトンモデルのリンク構造および階層構造を示している。
【0053】
図2において、a〜qが記載されている丸は各関節を示している。なお、各関節a〜qの名称は図3と共通しており、図2においては各名称の記載を省略している。以下の記載でも、各関節a〜qの名称を省略して、例えば、「関節a」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩eと右肘fとが接続されていることを示している。腰関節aはスケルトンモデルの基点(連結構造の基準となる部位)となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節aに限定されるわけではなく、胴関節b、首cや左肩iとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸(首c、胴関節b、腰関節aを結ぶ直線)に位置する点が望ましい。
【0054】
図3において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨dは、右肩eの親であり、胴関節bの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節a(基点)は1番上位の関節であり、腰関節aの位置はローカル座標系の原点を基準に設定される。なお、ローカル座標系は、キャラクタ(例えば、プレイヤキャラクタや敵キャラクタなどの、CPU111aによって動きが制御されているキャラクタ)毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。ローカル座標系は、キャラクタの上方向をY軸の正方向とし、キャラクタの正面方向をZ軸の正方向とし、キャラクタの左方向をX軸の正方向として設定されている。図2の右下の矢印は、ローカル座標系の各軸の方向を示しており、紙面裏から表の方向がZ軸の正方向である。
【0055】
図4はプレイヤキャラクタデータの一例を説明するための図である。
【0056】
プレイヤキャラクタデータはプレイヤキャラクタのキャラクタデータである。プレイヤキャラクタデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0057】
図4に示すように、プレイヤキャラクタデータはモデルデータ、特徴データ、および画像データなどを含んでいる。モデルデータは関節データを含んでいる。関節データは関節a〜q毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節bのポジションデータは(Xb,Yb,Zb)となっており、リンクデータは親関節である関節aを示す「a」となっている。
【0058】
関節aは基点であって親である関節がないので、リンクデータを有しない。関節aのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節aがローカル座標系の原点の真上(Y軸上)に設定されているので、Xa=Za=0である(図5参照)。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【0059】
図5は、ポジションデータを説明するための図であり、ローカル座標系上の関節a、関節b、および関節hの位置座標を示すものである。
【0060】
関節hのポジションデータ(Xh,Yh,Zh)は、親の関節である関節b(図5参照)の位置座標B(XB,YB,ZB)を基準とした相対位置を示している。したがって、関節hの位置座標Hは、H(XB+Xh,YB+Yh,ZB+Zh)となる。なお、関節bの親の関節である関節a(基点)の位置座標Aは関節aのポジションデータなのでA(Xa,Ya,Za)であり、関節bのポジションデータが(Xb,Yb,Zb)なので、位置座標B(XB,YB,ZB)は(Xa+Xb,Ya+Yb,Za+Zb)となる。したがって、位置座標Hは、H(Xa+Xb+Xh,Ya+Yb+Yh,Za+Zb+Zh)となる。
【0061】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【0062】
特徴データは、特性データおよび状態データを含んでいる。特性データは、プレイヤキャラクタにあらかじめ設定されている特徴を示す情報であって、特性毎のパラメータ値があらかじめ設定されている。本実施形態では、例えば、性別を示す性別パラメータおよび猫背の程度を示す猫背パラメータなどが設定されている。各パラメータには、「−1」から「1」までのパラメータ値が設定されている。以下では、特性を示すパラメータを総称して「特性パラメータ」とする。
【0063】
性別パラメータは、プレイヤキャラクタの性別の特性を示す情報である。パラメータ値が「0」の場合、プレイヤキャラクタは中性的なキャラクタとして表現される。また、パラメータ値が大きいほど女性的な(女っぽい)キャラクタとして表現され、パラメータ値が小さいほど男性的な(男っぽい)キャラクタとして表現される。図4においては、性別パラメータのパラメータ値が「0.5」なので、プレイヤキャラクタは、やや女性的なキャラクタとして表現される。
【0064】
猫背パラメータは、プレイヤキャラクタの猫背の程度を示す情報である。パラメータ値が「0」の場合、プレイヤキャラクタは猫背ではない(一般的な)キャラクタとして表現される。一方、パラメータ値が正の値の場合、猫背のキャラクタとして表現され、パラメータ値が負の値の場合、腹が出た(太っている)キャラクタとして表現される。猫背の程度(または、太り具合)は、パラメータ値の大きさに応じて顕著になる。図4においては、猫背パラメータのパラメータ値が「0.5」なので、プレイヤキャラクタは、やや猫背のキャラクタとして表現される。一般的に、太っている人は腹が出て胸を張った姿勢となる傾向があるので、本実施形態では、キャラクタの姿勢として、猫背の姿勢と太っている姿勢とを正反対の姿勢とし、共通するパラメータで設定するようにしている。しかし、これに限られず、猫背パラメータとは別に太り具合のパラメータを設定して、両方の特性を互いに独立に表現するようにしてもよい。
【0065】
状態データは、プレイヤキャラクタの状態を示す情報であって、状態毎のパラメータ値が設定される。本実施形態では、例えば、疲れ方の程度を示す疲れパラメータなどが設定されている。各パラメータには、「0」から「1」までの値が設定されている。以下では、状態を示すパラメータを総称して「状態パラメータ」とし、特性パラメータと状態パラメータとを総称して「特徴パラメータ」とする。
【0066】
疲れパラメータは、プレイヤキャラクタの疲れ方の程度を示すものである。パラメータ値が「0」の場合、プレイヤキャラクタは疲れていない状態であるように表現され、パラメータ値が大きいほど疲れ方が激しいように表現される。図4においては、疲れパラメータのパラメータ値が「0.5」なので、プレイヤキャラクタは、少し疲れた状態であるように表現される。
【0067】
状態データのパラメータ値は、ゲームの進行状況に応じて変化する。例えば、疲れパラメータのパラメータ値は、プレイヤキャラクタに設定されている体力値に基づいて算出され、適時更新される。なお、経過時間や他の要素に基づいて算出されるようにしてもよい。また、状態データは、プレイヤキャラクタデータとして記録しておくものに限定されず、適時算出して用いるようにしてもよい。一方、特性データのパラメータ値は、ゲームの進行状況に関係なく固定されている。例えば、性別パラメータや猫背パラメータのパラメータ値は、所定の固定値として、あらかじめ設定されている。
【0068】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【0069】
プレイヤキャラクタ以外のキャラクタであって、プレイヤキャラクタと同じスケルトンモデル(図2および図3参照)を有するキャラクタ(例えば、敵キャラクタなど)についても、プレイヤキャラクタデータ(図4参照)と同様のキャラクタデータがそれぞれ設定されている。
【0070】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図4、図6〜図11を参照して説明する。
【0071】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ(図4参照)と基準モーションデータ(図6参照)とを用いて行われる。すなわち、プレイヤキャラクタデータと基準モーションデータとに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータ(後述する図11参照)がフレーム毎に生成される。このとき、本実施形態では、基準モーションデータが、プレイヤキャラクタデータに含まれる特徴データに基づいて補正されてから用いられる。生成されたスケルトンデータに基づいて、プレイヤキャラクタデータの各パーツが三次元仮想ゲーム空間上に配置される。これがフレーム毎に行われることで、プレイヤキャラクタに所定の動作を行わせる。
【0072】
図6は、基準モーションデータの一例を説明するための図である。
【0073】
基準モーションデータは、キャラクタの各動作(例えば、歩く動作、走る動作、ジャンプする動作、相手を攻撃する動作、攻撃を防ぐ動作など)を再生するためのデータである。基準モーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準モーションデータは、動作(モーション)毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節a(基点)のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節aの回転角度を示すローテーションデータとが含まれている。また、関節b〜qのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。ローテーションデータは、ローカル座標系における3つの軸(X軸、Y軸、およびZ軸)をそれぞれ中心とした回転角度のデータを要素とする。以下では、各要素をそれぞれ、「X軸回転角度」、「Y軸回転角度」、「Z軸回転角度」と省略して記載する。各要素の単位は(°)とする。また、各軸の回転方向は、軸の正の方向からみて反時計回りを正の方向とする。例えば、図2に示すローカル座標系の場合、Z軸を中心とした回転角度は、紙面に対して反時計回りの回転角度が正の値になる。
【0074】
基準モーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ(図4参照)の各関節のポジションデータとから、プレイヤキャラクタのローカル座標系における各関節の位置座標を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【0075】
なお、基準モーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。
【0076】
次に、基準モーションデータの補正について説明する。
【0077】
基準モーションデータは、特徴がないキャラクタの動作を基準にして作製されている。「特徴がないキャラクタ」とは、特性が中間的で特定の状態でないキャラクタのことである。例えば、性別は中性的で、猫背や太った体型ではなく、全く疲れていないキャラクタである。より具体的には、特徴パラメータのパラメータ値が全て「0」のキャラクタである。以下では、キャラクタが「特徴がないキャラクタ」である場合を、「通常の場合」とする。各キャラクタの動作を再生する場合、当該キャラクタの特徴に応じて基準モーションデータが補正され、補正後のモーションデータが用いられる。当該補正は、特徴データ(図4参照)と、各特徴および各モーションデータに対応して記録されている演算式データ(図7参照)とに基づいて行われ、基準モーションデータの所定の関節のローテーションデータおよび関節a(基点)のポジションデータが補正されることで行われる。
【0078】
図7は、演算式データの一例を説明するための図である。
【0079】
演算式データは、設定されている特徴およびモーション毎に設定された各演算式を要素とするデータである。例えば、同図においては、性別とモーション1とに対応する演算式として、演算式1Wが設定されている。各演算式は、所定の関節のローテーションデータまたは関節a(基点)のポジションデータを補正するための1以上の式を含んでいる。
【0080】
いずれの関節に対してどのような補正が行われるかは、動作によって異なり、また、特徴によっても異なる。以下に、歩く動作のモーションデータを、疲れパラメータに基づいて補正する場合、猫背パラメータに基づいて補正する場合、および、性別パラメータに基づいて補正する場合を例として説明する。
【0081】
疲れパラメータに基づく補正では、腰関節aおよび胴関節bのローテーションデータのX軸回転角度を増加させる補正と、関節a(基点)のポジションデータのZ座標を減少させる補正とが行われる。上述したように、疲れパラメータのパラメータ値はプレイヤキャラクタに設定されている体力値に基づいて算出され、プレイヤキャラクタデータ(図4参照)に設定されているパラメータ値が適時更新されている。当該パラメータ値を用いて、補正が行われる。
【0082】
具体的には、基準モーションデータの腰関節aのローテーションデータを(θx,θy,θz)、疲れパラメータをTとすると、補正後のローテーションデータ(θx’,θy’,θz’)は、下記(1)式によって算出される。

θx’=θx+10・T
θy’=θy
θz’=θz ・・・・・ (1)
【0083】
例えば、疲れパラメータTが「0.5」の場合、θx’=θx+5となって、X軸回転角度に5°が加算され、キャラクタは通常の場合より5°腰が曲がった状態になる。同様に、胴関節bのローテーションデータのX軸回転角度も補正される(具体的な計算式は、省略している。)。なお、疲れパラメータTが「0」の場合、補正が行われない(補正後も同じデータとなる)。
【0084】
また、関節a(基点)のポジションデータを(Px,Py,Pz)とすると、補正後の関節a(基点)のポジションデータ(Px’,Py’,Pz’)は、下記(2)式によって算出される。

Px’=Px・[1+(-0.5)・T]
Py’=Py
Pz’=Pz・[1+(-0.5)・T] ・・・・・ (2)
【0085】
例えば、疲れパラメータTが「0.5」の場合、Px’=0.75・Pxとなって、キャラクタの左右方向の動きが通常の場合の75%になる。また、Pz’=0.75・Pzとなって、キャラクタの進行方向に進む距離が通常の場合の75%になる。進む距離が減少する場合、歩幅も小さくなるように補正される。すなわち、足の位置が補正され、インバースキネマティクス技術を用いて、足首関節、膝関節、および股関節の各ローテーションデータが自動計算により補正される。
【0086】
図8は、キャラクタが歩く動作を行っているデモ映像の1コマの画像を示す図である。同図(a)は、特徴がないキャラクタの歩く動作を示しており、疲れパラメータTが「0」の場合のものを示している。同図(a)の右下の矢印は、キャラクタのローカル座標系の各軸の方向を示しており、紙面裏から表の方向がX軸の正方向である。同図(b)は、疲れているキャラクタの歩く動作を示しており、疲れパラメータTが「1」の場合のものを示している。
【0087】
同図(b)に示すキャラクタは、同図(a)に示すキャラクタと比べて、腰関節aのX軸回転角度に10°(=10・1)が加算され、胴関節bのX軸回転角度も所定の角度が加算されている。また、キャラクタの進行方向(Z軸方向)に進む距離が、同図(a)の場合の50%(=1+(-0.5)・1)になり、これに応じて歩幅も補正されている。また、同図からは判らないが、キャラクタの左右方向(X軸方向)の動きも、通常の場合の50%(=1+(-0.5)・1)になっている。これらの補正によって、同図(b)に示すキャラクタの姿勢は腰と胴を曲げて下を向いた姿勢となり、小さい歩幅で疲れて歩いているように再生される。
【0088】
猫背パラメータに基づく補正では、腰関節a、胴関節b、および首関節cのローテーションデータのX軸回転角度を変化させる補正と、鎖骨d,hのローテーションデータのY軸回転角度を変化させる補正とが行われる。上述したように、猫背パラメータのパラメータ値は、固定値としてプレイヤキャラクタデータ(図4参照)にあらかじめ設定されている。当該パラメータ値を用いて、補正が行われる。
【0089】
具体的には、基準モーションデータの腰関節aのローテーションデータを(θx,θy,θz)、猫背パラメータをSとすると、補正後のローテーションデータ(θx’,θy’,θz’)は、下記(3)式によって算出される。

θx’=θx+7・S
θy’=θy
θz’=θz ・・・・・ (3)
【0090】
例えば、猫背パラメータSが「0.5」の場合、θx’=θx+3.5となって、X軸回転角度に3.5°が加算され、キャラクタは通常の場合より3.5°腰が曲がった状態になる。一方、猫背パラメータSが「−0.5」の場合、θx’=θx−3.5となって、X軸回転角度から3.5°が減算され、キャラクタは通常の場合より3.5°腰が逆に曲がった状態(すなわち、背筋が伸びた状態)になる。同様に、胴関節bのローテーションデータのX軸回転角度も補正される(具体的な計算式は、省略している。)。このとき、猫背パラメータSが「1」の場合に、通常の場合のX軸回転角度に10°が加算されるように補正される。なお、猫背パラメータSが「0」の場合、補正が行われない(補正後も同じデータとなる)。
【0091】
猫背パラメータSに応じて、腰関節aおよび胴関節bのローテーションデータのX軸回転角度を補正すると、キャラクタの顔の向きも変化する。すなわち、猫背パラメータSが正の値の場合、キャラクタの顔は下を向くようになり、猫背パラメータSが負の値の場合、キャラクタの顔は上を向くようになる。本実施形態では、キャラクタの顔が正面を向いた状態とするために、首関節cのローテーションデータのX軸回転角度を変化させる補正も行っている。
【0092】
具体的には、基準モーションデータの首関節cのローテーションデータを(θx,θy,θz)、猫背パラメータをSとすると、補正後のローテーションデータ(θx’,θy’,θz’)は、下記(4)式によって算出される。

θx’=θx−17・S
θy’=θy
θz’=θz ・・・・・ (4)
【0093】
例えば、猫背パラメータSが「0.5」の場合、θx’=θx−8.5となって、首関節cのX軸回転角度から8.5°が減算される。これにより、腰関節aの補正で加算された3.5°と胴関節bの補正で加算された5°とが打ち消されて、キャラクタの顔の向きが通常の場合と同じ向き(正面を向いた状態)に補正される。
【0094】
また、基準モーションデータの右鎖骨dのローテーションデータを(θx,θy,θz)、猫背パラメータをSとすると、補正後のローテーションデータ(θx’,θy’,θz’)は、下記(5)式によって算出される。

θx’=θx
θy’=θy+10・S
θz’=θz ・・・・・ (5)
【0095】
例えば、猫背パラメータSが「0.5」の場合、θy’=θy+5となって、Y軸回転角度に5°が加算される。これにより、キャラクタの右肩が通常の場合より前に出た状態(肩をすぼめた状態)になる。一方、猫背パラメータSが「−0.5」の場合、θy’=θy−5となって、Y軸回転角度から5°が減算さる。これにより、キャラクタの右肩が通常の場合より後ろに出た状態(胸を張った状態)になる。同様に、左鎖骨hのローテーションデータのY軸回転角度も補正される。このとき、左鎖骨hは右鎖骨dとは逆方向に回転させる必要があるので、猫背パラメータSが「0.5」の場合、左鎖骨hは通常の場合のY軸回転角度に5°が減算されるように補正される(具体的な計算式は、省略している。)。これにより、キャラクタの左肩が通常の場合より前に出た状態(肩をすぼめた状態)になる。なお、猫背パラメータSが「0」の場合、補正が行われない(補正後も同じデータとなる)。
【0096】
図8(c)は、猫背のキャラクタの歩く動作を示しており、猫背パラメータSが「1」の場合のものを示している。同図(a)は、特徴がないキャラクタの歩く動作を示しており、猫背パラメータSが「0」の場合のものである。
【0097】
同図(c)に示すキャラクタは、同図(a)に示すキャラクタと比べて、腰関節aのX軸回転角度に7°(=7・1)が加算され、胴関節bのX軸回転角度に10°(=10・1)が加算され、首関節cのX軸回転角度から17°(=17・1)が減算されている。また、右鎖骨dのY軸回転角度に10°(=10・1)が加算され、左鎖骨hのY軸回転角度から10°(=10・1)が減算されている。これらの補正によって、同図(c)に示すキャラクタの姿勢は腰と胴をまげて肩をすぼめた姿勢となり、猫背の人が歩いているように再生される。
【0098】
図8(d)は、腹が出た(太っている)キャラクタの歩く動作を示しており、猫背パラメータSが「−1」の場合のものを示している。
【0099】
同図(d)に示すキャラクタは、同図(a)に示すキャラクタと比べて、腰関節aのX軸回転角度に−7°(=7・(−1))が加算(すなわち、7°が減算)され、胴関節bのX軸回転角度に−10°(=10・(−1))が加算(すなわち、10°が減算)され、首関節cのX軸回転角度から−17°(=17・(−1))が減算(すなわち、17°が加算)されている。また、右鎖骨dのY軸回転角度に−10°(=10・(−1))が加算(すなわち、10°が減算)され、左鎖骨hのY軸回転角度から−10°(=10・(−1))が減算(すなわち、10°が加算)されている。これらの補正によって、同図(d)に示すキャラクタの姿勢は背筋を伸ばして胸を張った姿勢となり、太っている人が歩いているように再生される。
【0100】
性別パラメータに基づく補正では、腰関節a、胴関節b、および鎖骨d,hのローテーションデータの各要素を変化させる補正と、肘および膝の開き方を調整する補正とが行われる。上述したように、性別パラメータのパラメータ値は、固定値としてプレイヤキャラクタデータ(図4参照)にあらかじめ設定されている。当該パラメータ値を用いて、補正が行われる。
【0101】
具体的には、基準モーションデータの腰関節aのローテーションデータを(θx,θy,θz)、性別パラメータをWとすると、補正後のローテーションデータ(θx’,θy’,θz’)は、下記(6)式によって算出される。

θx’=θx
θy’=θy・(1+0.3・W)
θz’=θz・(1+0.5・W) ・・・・・ (6)
【0102】
例えば、性別パラメータWが「0.5」の場合、θy’=1.15・θyとなって、Y軸回転角度が115%になり、キャラクタは通常の場合より15%増しで腰をY軸周りに回転させる状態になる。また、θz’=1.25・θzとなって、Z軸回転角度が125%になり、キャラクタは通常の場合より25%増しで腰をZ軸周りに回転させる状態になる。同様に、胴関節bのローテーションデータのY軸回転角度およびZ軸回転角度も補正され(具体的な計算式は、省略している。)、胴の回転も強調される。また、鎖骨d,hのローテーションデータの各要素も補正され(具体的な計算式は、省略している。)、肩の動きが強調される。一方、性別パラメータWが「−0.5」の場合、θy’=0.85・θy、θz’=0.75・θzとなって、Y軸回転角度およびZ軸回転角度が抑えられる。同様に、胴関節bのローテーションデータのY軸回転角度およびZ軸回転角度も補正され、胴の回転も抑えられる。また、鎖骨d,hのローテーションデータの各要素も補正され、肩の動きも抑えられる。なお、性別パラメータWが「0」の場合、補正が行われない(補正後も同じデータとなる)。
【0103】
また、性別パラメータWに応じて、肘および膝の開き方を調整する補正も行われる。性別パラメータWが大きいほど、肘および膝の開き方が小さくなるように補正される。肘についての補正は、肘関節f,jの位置を先に決定し、インバースキネマティクス技術を用いて、手首関節g,kおよび肩関節e,iの各ローテーションデータを自動計算で補正することで行われる。膝についての補正も同様に、膝関節m,pの位置を先に決定し、インバースキネマティクス技術を用いて、足首関節n,qおよび股関節l,oの各ローテーションデータを自動計算で補正することで行われる。
【0104】
図9は、キャラクタが左手に盾を持って歩く動作を行っているデモ映像の1コマの画像を示す図である(なお、同図においては、キャラクタのみを表示しており、盾および装備を表示していない。)。同図(a)は、特徴がないキャラクタの動作を示しており、性別パラメータWが「0」の場合のものを示している。同図(a)の右下の矢印は、キャラクタのローカル座標系の各軸の方向を示しており、紙面裏から表の方向がZ軸の正方向である。同図(b)は、女性キャラクタの歩く動作を示しており、性別パラメータWが「1」の場合のものを示している。
【0105】
同図(b)に示すキャラクタは、同図(a)に示すキャラクタと比べて、腰関節aのY軸回転角度が130%(=1+0.3・1)になり、Z軸回転角度が150%(=1+0.5・1)になって、腰のY軸およびZ軸まわりの回転が強調されている。また、胴のY軸およびZ軸まわりの回転も強調され、肩の動きも強調されている。さらに、肘および膝の開き方が小さくなるように補正されている。これらの補正によって、同図(b)に示すキャラクタの動作は女性らしくなって、女性が歩いているように再生される。
【0106】
同図(c)は、男性キャラクタの歩く動作を示しており、性別パラメータWが「−1」の場合のものを示している。
【0107】
同図(c)に示すキャラクタは、同図(a)に示すキャラクタと比べて、腰関節aのY軸回転角度が70%(=1+0.3・(−1))になり、Z軸回転角度が50%(=1+0.5・(−1))になって、腰のY軸およびZ軸まわりの回転が抑えられている。また、胴のY軸およびZ軸まわりの回転も抑えられ、肩の動きも抑えられている。さらに、肘および膝の開き方が大きくなるように補正されている。これらの補正によって、同図(c)に示すキャラクタの動作は男性らしくなって、男性が歩いているように再生される。
【0108】
上記各特徴パラメータに基づく補正はそれぞれ互いに独立しており、基準モーションデータには全ての補正が行われる。例えば、図4に示すプレイヤキャラクタデータの場合、性別パラメータWが「0.5」の場合の補正、猫背パラメータSが「0.5」の場合の補正、疲れパラメータTが「0.5」の場合の補正がそれぞれ重複して行われる。
【0109】
他の特徴に基づく補正も、対応する特徴パラメータとあらかじめ設定されている演算式とに基づいて行われる。他の特徴としては、性格の明るさ(暗さ)、年齢、傲慢さ(謙虚さ)、士気の高さ、気力の充実度、気分の高揚の程度、体力の程度などが設定されており、それぞれの特徴に対応する特徴パラメータと演算式とがあらかじめ設定されている(図7参照)。
【0110】
なお、上記では、歩く動作の基準モーションデータに対する補正のための演算式について説明したが、他の動作(例えば、走る動作、ジャンプする動作、相手を攻撃する動作、攻撃を防ぐ動作など)の基準モーションデータに対する補正のための演算式も、キャラクタの特徴毎にそれぞれ設定されている(図7参照)。なお、同じような動作(例えば、歩く動作と走る動作など)の場合、共通の演算式を用いるようにしてもよい。また、体型に関する特徴(猫背など)に基づく補正の場合、動作の種類に関わらず共通の演算式を用いても、適切な補正を行うことができる場合が多い。しかし、疲れや性別などの特徴に基づく補正の場合、共通の演算式を用いて補正すると、動作によっては不自然な動作になる場合がある。したがって、動作毎にそれぞれ異なる演算式を用いる必要がある
【0111】
図10は、ゲーム装置1の例えば制御部111によって行われる、プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理(以下では、「スケルトンデータ生成処理」とする。)を説明するためのフローチャートである。
【0112】
スケルトンデータ生成処理は、フレーム毎に実施される。まず、実行される動作に対応する基準モーションデータの該当するフレームのデータ(例えば、図6に示すモーション1のフレーム1の処理の場合、ポジションデータα1、ローテーションデータa1、およびローテーションデータb1〜q1)と、プレイヤキャラクタデータ(図4参照)とが、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S1)。
【0113】
次に、プレイヤキャラクタデータの特徴データに基づいて、ポジションデータα1、ローテーションデータa1、およびローテーションデータb1〜q1が補正される(S2)。このとき、モーションと各特徴パラメータとに対応する演算式が演算式データ(図7参照)を参照して読み出される。例えば、上記例では、モーション1と性別パラメータとに対応する演算式1Wが読み出されて性別パラメータに基づく補正がされ、演算式1Sが読み出されて猫背パラメータに基づく補正がされ、演算式1Tが読み出されて疲れパラメータに基づく補正がされる。次に、補正後のデータとプレイヤキャラクタデータとから、スケルトンデータが生成される(S3)。
【0114】
図11は、スケルトンデータの一例を説明するための図である。
【0115】
スケルトンデータは、各関節の位置データ(ポジションデータ)および親である関節を示すデータ(リンクデータ)を含んでいる。関節a(基点)のデータには、ポジションデータのみが含まれている。関節aのポジションデータは、プレイヤキャラクタのローカル座標系における関節aの位置座標であり、基準モーションデータの関節aのポジションデータが設定される。
【0116】
関節b〜qのデータには、ポジションデータおよびリンクデータが含まれている。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節b〜qのポジションデータと補正後のモーションデータの関節b〜qのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節b〜qのリンクデータは、プレイヤキャラクタデータの関節b〜qのリンクデータを用いる。
【0117】
図10に戻って、ステップS3で生成されたスケルトンデータの座標変換が行われ(S4)、スケルトンデータ生成処理は終了される。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップS4の座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【0118】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き(正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き)を示すデータであり、RAM111cに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが歩いて移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として歩くモーションが実行される。当該歩くモーションが終了したとき(最後のフレームが処理されたとき)のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが歩いて移動している間、歩くモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【0119】
敵キャラクタなどのプレイヤキャラクタと同じスケルトンモデル(図2および図3参照)を有するキャラクタの動作の再生においても、上記と同様に、スケルトンデータ生成処理が行われる。すなわち、当該キャラクタの特徴に応じて基準モーションデータ(図6参照)を補正し、補正後のモーションデータを用いてスケルトンデータを生成して座標変換を行う。
【0120】
描画処理部112は、最終的に、ワールド座標系のデータに変換されたスケルトンデータ(各キャラクタのスケルトンデータ)と、同様にワールド座標系のデータに変換された画像データなどを用いて、ゲーム画像のデータを作成する。フレーム毎に作成されたゲーム画像のデータが、映像信号としてモニタ13に出力されて、プレイヤキャラクタの動作の映像がモニタ13に表示される。
【0121】
本実施形態によると、特徴がないキャラクタの動作を再生するように作製された基準モーションデータが、キャラクタの特徴に応じて補正される。キャラクタの動作は、補正後のモーションデータが用いられて再生される。各動作のモーションデータは、動作および特徴に応じて設定されている演算式に基づいて、当該特徴が表現されるように補正される。これにより、キャラクタの各特徴が反映された動作が再生される。また、各特徴の反映の程度は、特徴パラメータのパラメータ値に応じて調整される。各特徴の程度を様々に調整することで、キャラクタの動作のバリエーションを簡単に増加させることができる。また、基準モーションデータとして、特徴がないキャラクタの動作を再生するためのものだけを作製すればよいので、ゲーム作製者の作業負担を軽減することができ、開発コストを抑制することができる。また、動作のバリエーションが増加しても基準モーションデータのデータ量は増加しないので、モーションデータを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0122】
なお、上記実施形態では、体型が固定されているキャラクタの動作について説明したが、キャラクタの体型を編集できるゲームにも、本発明を適用することができる。この場合、体型の変化に応じて所定の特徴パラメータが変化するようにしてもよい。例えば、キャラクタの身長に応じて猫背パラメータが大きくなるようにしてもよい。また、体型の変化に連動させずに、特徴パラメータをプレイヤが直接編集できるようにしてもよい。例えば、ゲームを初めてプレイする時に、プレイヤがプレイヤキャラクタの各特徴パラメータを編集して、性別や姿勢などの特徴を設定するようにしてもよい。また、プレイヤキャラクタを編集するのではなく、特徴の異なる複数のキャラクタ(例えば、男性キャラクタと女性キャラクタなど)の中からプレイヤが好みのキャラクタを選択できるようにしてもよい。この場合も、選択されたキャラクタの特徴に応じて基準モーションデータが補正されるので、キャラクタの特徴に応じた動作を再生することができる。なお、プレイヤキャラクタ以外のキャラクタについても、プレイヤが各特徴パラメータを直接編集できるようにしてもよいし、プレイヤが好みのキャラクタを選択できるようにしてもよい。
【0123】
また、人型以外のキャラクタについても、本発明を適用することができる。例えば、馬などの四足歩行の動物のキャラクタの場合、当該キャラクタのスケルトンモデルに応じた基準モーションデータを作製しておき、当該基準モーションデータを特徴に応じて補正すればよい。
【0124】
上記実施形態では、プレイヤキャラクタおよび敵キャラクタなどについて本発明を適用した場合について説明したが、特定のキャラクタについてのみ本発明を適用するようにしてもよい。例えば、プレイヤキャラクタにのみ適用するようにしてもよいし、特定の敵キャラクタにのみ適用するようにしてもよい。
【0125】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、RPG(ロールプレイングゲーム)、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはCPUの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【0126】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【0127】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。例えば、仮想現実空間でキャラクタを活動させるプログラムや、シミュレータなどのプログラムにも適用できる。本発明は、モーションデータに基づいてキャラクタなどの動作を表示するあらゆるプログラムに適用することができる。
【0128】
また、本発明は、ゲームを作製するためのツールに適用することもできる。例えば、特徴パラメータのパラメータ値を変化させてキャラクタの動作を確認し、ゲームに使用するキャラクタの特徴を決定するようにしてもよい。また、特徴に応じて補正された後のモーションデータを、特定のキャラクタのモーションデータとして用いるようにしてもよい。
【0129】
また、複数種類(別タイトル)のゲームであっても、本発明を適用することができる。例えば、各ゲームの単一のプレイヤキャラクタについて、同一の基準モーションデータを使用して動作を再生するようにしてもよい。これにより、例えば各種ゲームのそれぞれで、所定の動作のモーションデータを毎回作成する必要がなくなり、ゲーム開発業務の負担を軽減することができる。
【0130】
本発明に係るプログラム、および、当該プログラムを記録したプログラム記録部を備えた画像処理装置は、上述した実施形態に限定されるものではない。本発明に係るプログラム、当該プログラムを記録したプログラム記録部を備えた画像処理装置の具体的な構成は、種々に設計変更自在である。
【符号の説明】
【0131】
1 ゲーム装置
11 本体(画像処理装置)
111 制御部
111a CPU(情報読出手段、モーションデータ生成手段、キャラクタ制御手段)
111b ROM
111c RAM(記憶部、プログラム記録部)
112 描画処理部
113 音声処理部
114 ディスクドライブユニット
115 メモリカード接続ユニット
116 I/Oインターフェース部
117 通信処理部
118 信号送受信部
12 操作コントローラ
13 モニタ(表示装置)
14 ディスク
15 メモリカード
16 ネットワークアダプタ
2 ネットワーク回線

【特許請求の範囲】
【請求項1】
複数の関節による連結構造を有するキャラクタが動作を行っている画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
前記各関節間の距離を特定するためのキャラクタデータと、所定の動作を行わせるべく前記各関節間の相対的な位置関係を特定するための基準モーションデータと、前記キャラクタに関する少なくとも1種類のパラメータ値とを、記憶部から読み出す情報読出手段と、
前記基準モーションデータを用いて、前記キャラクタに対応するモーションデータを生成するモーションデータ生成手段と、
前記キャラクタに対応するモーションデータと前記キャラクタデータとを用いて、前記キャラクタに所定の動作を行わせるキャラクタ制御手段と、
して機能させ、
前記モーションデータ生成手段は、前記キャラクタに関するパラメータ値に基づいて前記基準モーションデータを補正することで、前記キャラクタに対応するモーションデータを生成する、
ことを特徴とするプログラム。
【請求項2】
前記キャラクタは、同一の連結構造を有する複数のキャラクタであって、
前記情報読出手段は、前記各キャラクタに対応するキャラクタデータおよびパラメータ値と、前記基準モーションデータとを読み出し、
前記モーションデータ生成手段は、前記各キャラクタに対応するモーションデータを生成し、
前記キャラクタ制御手段は、前記各キャラクタに対応するモーションデータとキャラクタデータとを用いて、前記各キャラクタに所定の動作を行わせる、
請求項1に記載のプログラム。
【請求項3】
前記基準モーションデータは、前記各関節の回転角度を含んでおり、
前記モーションデータ生成手段は、前記基準モーションデータに含まれる所定の関節の回転角度を補正する、
請求項1または2に記載のプログラム。
【請求項4】
前記基準モーションデータは、前記キャラクタの位置の情報を含んでおり、
前記モーションデータ生成手段は、前記位置の情報を補正する、
請求項1ないし3のいずれかに記載のプログラム。
【請求項5】
前記情報読出手段は、複数の所定の特徴の程度をそれぞれ特定するためのパラメータ値を読出し、
前記モーションデータ生成手段は、前記各所定の特徴ごとに、対応するパラメータ値に基づく補正を行う、
請求項1ないし4のいずれかに記載のプログラム。
【請求項6】
前記コンピュータを、プレイヤの操作に応じて前記パラメータ値を変更するパラメータ値変更手段としてさらに機能させる、請求項1ないし5のいずれかに記載のプログラム。
【請求項7】
請求項1ないし6のいずれかに記載のプログラムを記録したプログラム記録部と、
前記プログラム記録部に記録されたプログラムを実行するコンピュータと、
を備えていることを特徴とする画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図10】
image rotate

【図11】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−208548(P2012−208548A)
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願番号】特願2011−71481(P2011−71481)
【出願日】平成23年3月29日(2011.3.29)
【出願人】(000129149)株式会社カプコン (192)
【Fターム(参考)】