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