プログラム、および、当該プログラムを実行するコンピュータを備えた画像処理装置
【課題】表示されるオブジェクトの大きさが異なる場合であっても、仮想カメラの位置および撮影方向のデータを増加させることなく、ゲーム作製者が想定した構図と同様の構図でオブジェクトを表示させる。
【解決手段】プレイヤキャラクタPCの身長L’と基準キャラクタの身長Lとの差ΔL=L’−Lを補正値として、仮想カメラCの位置座標の高さ成分に加算する。また、仮想カメラCの撮影方向が敵キャラクタECの頭部を向くように、差ΔLに応じた補正を行う。プレイヤキャラクタPCの背が高い場合(選択図(b)参照)、ΔL(>0)が高さ成分に加算されて、仮想カメラCが破線で示す基準カメラ位置よりΔLだけ上方に配置される。仮想カメラCの撮影方向は敵キャラクタECの頭部を向くように補正される。これにより、基準キャラクタの場合(選択図(a)参照)と同様の構図の画像を撮影することができる。
【解決手段】プレイヤキャラクタPCの身長L’と基準キャラクタの身長Lとの差ΔL=L’−Lを補正値として、仮想カメラCの位置座標の高さ成分に加算する。また、仮想カメラCの撮影方向が敵キャラクタECの頭部を向くように、差ΔLに応じた補正を行う。プレイヤキャラクタPCの背が高い場合(選択図(b)参照)、ΔL(>0)が高さ成分に加算されて、仮想カメラCが破線で示す基準カメラ位置よりΔLだけ上方に配置される。仮想カメラCの撮影方向は敵キャラクタECの頭部を向くように補正される。これにより、基準キャラクタの場合(選択図(a)参照)と同様の構図の画像を撮影することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、および、当該プログラムを実行するコンピュータを備えた画像処理装置に関し、特に、仮想カメラの位置または撮影方向の補正に関する。
【背景技術】
【0002】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で活動させるゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とする。三次元仮想ゲーム空間上に配置されたキャラクタおよびオブジェクト(「オブジェクト」は「キャラクタ」を含む概念なので、以下で総称する場合は、単に「オブジェクト」とする。)を二次元画像として画面に表示するため、一般的に、所定の位置座標に基づいた投影処理が行われる。この場合、所定の位置座標にある仮想カメラで撮影したような画像が生成されるので、三次元仮想ゲーム空間上のオブジェクトを二次元画像で表示することを仮想カメラで撮影すると表現する。
【0003】
仮想カメラの位置をプレイヤキャラクタから離れた位置とプレイヤキャラクタの視点位置とで切り替えて、客観視点から撮影した画像と主観視点から撮影した画像とを切り替えるゲームが開発されている(特許文献1参照)。また、プレイヤが選択したオブジェクトに注視点を設定して、仮想カメラの撮影方向を変更するゲームが開発されている(特許文献2参照)。
【0004】
各キャラクタに所定の動作を行わせる場合、あらかじめ設定されている各動作のためのデータ(以下では、「モーションデータ」とする。)を用いることが、一般的に行われている。モーションデータは、各動作(モーション)のフレーム毎(例えば1/60秒毎)のデータを記録したものである(図9参照)。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル(図4および図5参照)で表現される。モーションデータはこのスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。
【0005】
例えば、剣を振り下ろして敵キャラクタを切り倒す動作をプレイヤキャラクタにさせる場合、プレイヤキャラクタ固有の画像データやモデルデータなど(以下では、「キャラクタデータ」とする。詳細は後述する。)と、剣を振り下ろすモーションデータとを組み合わせて、当該動作を行わせる。このとき、仮想カメラの位置および撮影方向についてフレーム毎に記録したデータ(以下では、「仮想カメラモーションデータ」とする。)に応じて、仮想カメラの位置および撮影方向を変化させながら撮影させる場合がある。仮想カメラモーションデータの詳細は後述する。仮想カメラが、仮想カメラモーションデータに応じて位置および撮影方向を変化させながらプレイヤキャラクタを撮影することで、プレイヤキャラクタを中心とした構図で迫力ある映像が生成される。例えば、関節構造を有するキャラクタの骨格モデルの一部に仮想カメラを組み込んで、仮想カメラのモーションを制御するゲームが開発されている(特許文献3参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第3964884号公報
【特許文献2】特許第4144017号公報
【特許文献3】特開2009−28188号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、プレイヤがプレイヤキャラクタを選択できるゲームや、プレイヤがプレイヤキャラクタの体の各パーツを編集できるゲームの場合、所定の仮想カメラモーションデータに応じて撮影を行っても、ゲーム作製者が想定した構図での映像が生成されない場合がある。例えば、プレイヤキャラクタの背が高いなど体型が通常より大きい場合、プレイヤキャラクタが画面からはみ出したり、他のキャラクタがプレイヤキャラクタに隠れて見えなくなることがある。また、プレイヤキャラクタの背が低いなど体型が通常より小さい場合、プレイヤキャラクタが画面の下の方に表示されることがある。
【0008】
図17は、プレイヤキャラクタと敵キャラクタとが向かい合って、プレイヤキャラクタがある動作を行っているデモ映像の1コマの画像を示している。
【0009】
図17(a)は、プレイヤキャラクタPCの体型が通常の体型の場合を示している。仮想カメラモーションデータはプレイヤキャラクタPCの体型が通常の体型の場合を基準として設定されているので、プレイヤキャラクタPCと敵キャラクタECとがゲーム作製者が想定した構図で表示されている。
【0010】
図17(b)は、プレイヤキャラクタPCが通常の体型より背の高い体型である場合を示している。仮想カメラは、図17(a)の場合と同じ位置で同じ撮影方向で撮影を行っている。そのため、プレイヤキャラクタPCの頭部が画面からはみ出して、図17(a)の場合とは大幅に異なる構図になっている。
【0011】
図17(c)は、プレイヤキャラクタPCが通常の体型より背の低い体型である場合を示している。仮想カメラは、図17(a)の場合と同じ位置で同じ撮影方向で撮影を行っている。そのため、プレイヤキャラクタPCが画面の下方に位置しており、図17(a)の場合とは大幅に異なる構図になっている。
【0012】
図17(b)および(c)の場合において、図17(a)と同様の構図となるような仮想カメラモーションデータをあらかじめ用意して用いるようにすれば、プレイヤキャラクタPCの体型にかかわらず同様の構図で表示することができる。しかし、プレイヤキャラクタPCの体型毎にそれぞれ仮想カメラモーションデータを作成すると、データを作成するための作業量が増大する。また、記録するデータ量が膨大になる。
【0013】
また、プレイヤキャラクタPCの体型にかかわらず、プレイヤキャラクタPCの全体が確実に画面内に収まるように、仮想カメラの位置を予めプレイヤキャラクタPCから離れた位置に設定しておく方法もある。しかし、この場合、仮想カメラ位置は最も大きいプレイヤキャラクタPCの体型に基づいた位置が基準となる。そのため、体型が異なるプレイヤキャラクタPCを撮像する場合、単調で迫力がない映像になり、ゲーム作製者が想定した構図をとることができない。
【0014】
プレイヤキャラクタPC以外のキャラクタやオブジェクトが編集や選択可能な場合にも、同様の問題が生じる場合がある。また、上記問題はゲームに限られるものではない。ゲーム以外においても、共通の仮想カメラモーションデータに基づいて大きさの異なるオブジェクトを表示する場合に、同様の問題が生じる。
【0015】
上述したデモ映像の再生方法は、あらかじめ作成されて記憶されているデモ映像をそのまま再生する「プリレンダムービー」に対して、リアルタイムに処理を行ってデモ映像を再生するので、「リアルタイムレンダリングムービー」といわれる。「リアルタイムレンダリングムービー」では、あらかじめ記憶されているモーションデータにキャラクタデータを組み合わせ、キャラクタをリアルタイムに動作させて撮影するので、プレイヤがゲーム中に選択したキャラクタの武器や服装などの装備品をデモ映像に反映することができる。しかしながら、プレイヤが選択した装備品が大きい場合、再生されたデモ映像において、装備品の一部が画面からはみ出したり、他のキャラクタが当該装備品に隠されて見えなくなることがある。この場合も、同様の問題が生じる。
【0016】
本発明は上記した事情のもとで考え出されたものであって、表示されるオブジェクトの大きさが異なる場合であっても、仮想カメラの位置および撮影方向のデータを増加させることなく、ゲーム作製者が想定した構図と同様の構図でオブジェクトを表示させることができるプログラムを提供することをその目的としている。
【課題を解決するための手段】
【0017】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【0018】
本発明の第1の側面によって提供されるプログラムは、三次元仮想空間に配置されるオブジェクトの画像を表示装置に表示させる画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、記録部にあらかじめ記録されている、基準となる基準オブジェクトを撮影するために設定された仮想カメラの基準位置および基準撮影方向を読み出す読出手段と、前記基準オブジェクトの所定部分の大きさに対する前記オブジェクトの前記所定部分の大きさに関する情報である補正情報を演算する演算手段と、前記演算手段によって演算された補正情報に応じて、前記読出手段によって読み出された前記基準位置および基準撮影方向の少なくとも一方を補正する補正手段と、補正後の仮想カメラの位置および撮影方向を、前記オブジェクトを撮影するための仮想カメラの位置および撮影方向として設定する設定手段として機能させることを特徴とする。
【0019】
なお、本発明における「オブジェクトの所定部分の大きさ」には、オブジェクト全体の垂直方向の長さ(高さ)や水平方向の長さなどや、オブジェクトの一部分の長さなどが含まれる。例えば、オブジェクトが人物などのキャラクタの場合、当該キャラクタの身長や肩幅、脚の長さ、腕の長さなどが、「オブジェクトの所定部分の大きさ」に含まれる。また、キャラクタが装備品を装着している場合、装着している装備品も含めたキャラクタ全体を1つのオブジェクトと考えることができる。したがって、兜をかぶっているキャラクタの兜の先端までの高さや、ハイヒールを履いているキャラクタのヒールの先端を基準とした頭の先までの高さ(すなわち、ハイヒールを履いた状態での身長)も、「オブジェクトの所定部分の大きさ」に含まれる。また、キャラクタが槍などの武器を所持している場合、武器を構えたキャラクタの武器の先端までの高さが「オブジェクトの所定部分の大きさ」に含まれ、武器そのものの長さも「オブジェクトの所定部分の大きさ」に含まれる。また、本発明における「補正情報」には、大きさの差に基づく差分情報および大きさの割合に基づく割合情報などが含まれる。
【0020】
本発明の好ましい実施の形態においては、前記演算手段は、前記基準オブジェクトの垂直方向の長さに対する前記オブジェクトの垂直方向の長さに関する情報を前記補正情報として演算する。
【0021】
本発明の好ましい実施の形態においては、前記補正手段は、前記補正情報に応じて前記基準位置の垂直成分および基準撮影方向の垂直成分の少なくとも一方を補正する。
【0022】
本発明の好ましい実施の形態においては、前記オブジェクトは複数のオブジェクトであり、前記演算手段は、前記基準オブジェクトの前記所定部分の大きさに対する前記複数のオブジェクトのそれぞれの所定部分の平均の大きさに関する情報を前記補正情報として演算する。
【0023】
本発明の好ましい実施の形態においては、前記オブジェクト以外の他のオブジェクトが前記三次元仮想空間に配置されており、前記演算手段は、さらに前記オブジェクトの前記他のオブジェクトに対する相対位置の情報を演算し、前記補正手段は、前記相対位置の情報に応じて前記基準位置および基準撮影方向の少なくとも一方を補正する。
【0024】
本発明の好ましい実施の形態においては、前記基準位置および基準撮影方向は、前記記録部にフレームごとに記録されており、前記読出手段は、前記基準位置および基準撮影方向を、フレームごとに読み出し、前記補正手段は、前記補正情報に応じて、前記読出手段によって読み出されたフレームごとの前記基準位置および基準撮影方向を補正する。
【0025】
本発明の第2の側面によって提供される画像処理装置は、本発明の第1の側面によって提供されるプログラムを記録したプログラム記録部と、前記プログラム記録部に記録されたプログラムを実行するコンピュータとを備えていることを特徴とする。
【発明の効果】
【0026】
本発明によれば、あらかじめ記録されている基準位置や基準撮影方向が補正情報に応じて補正される。したがって、オブジェクトの大きさが異なる毎に仮想カメラの位置および撮影方向を記録しておかなくても、ゲーム作製者が想定した構図と同様の構図でオブジェクトを表示させることができる。
【0027】
例えば、プレイヤキャラクタの身長に応じて仮想カメラの位置の垂直成分と撮影方向の垂直成分とを補正して撮影することで、ゲーム作製者が想定した構図と同様の構図でプレイヤキャラクタを表示することができる。
【0028】
また、オブジェクトの大きさが異なる毎に仮想カメラの位置および撮影方向を記録しておかなくてもいいので、ゲーム開発時のデータ作成の作業量を抑制して、開発コストを抑制することができる。また、データを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0029】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【0030】
【図1】プレイヤキャラクタの大きさに応じた仮想カメラの位置および撮影方向を説明するための図である。
【図2】図1(b)および(c)の場合において、仮想カメラで撮影された画像を示す図である。
【図3】本実施形態に係るゲーム装置を示す構成図である。
【図4】キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。
【図5】各関節の親子関係の階層構造を示す図である。
【図6】基準キャラクタデータの一例を説明するための図である。
【図7】ポジションデータを説明するための図である。
【図8】プレイヤキャラクタデータの一例を説明するための図である。
【図9】基準キャラクタモーションデータの一例を説明するための図である。
【図10】仮想カメラデータの一例を説明するための図である。
【図11】基準仮想カメラモーションデータの一例を説明するための図である。
【図12】デモ映像のためのゲーム画像データを生成する処理を説明するためのフローチャートである。
【図13】スケルトンデータの一例を説明するための図である。
【図14】敵キャラクタの身長に応じて仮想カメラの撮影方向を補正する場合の例を説明するための図である。
【図15】複数の敵キャラクタの身長に応じて仮想カメラの位置を補正する場合の例を説明するための図である。
【図16】プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正する場合の例を説明するための図である。
【図17】プレイヤキャラクタがある動作を行っているデモ映像の1コマの画像を示す図である。
【発明を実施するための形態】
【0031】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置(以下では、「ゲーム装置」とする。)において、アクションゲームを進行している場合を例として説明する。
【0032】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタを敵キャラクタと戦わせ、プレイヤキャラクタが敵キャラクタを倒すことにより進行する。また、このアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。プレイヤは、編集機能を用いてプレイヤキャラクタを好みの形状に変更することができる。
【0033】
編集機能では、プレイヤキャラクタの基準となるキャラクタ(以下では、「基準キャラクタ」とする。)の腕や脚、胴体などの各パーツの形状(長さ、太さなど)を変更したり、基準キャラクタの顔を構成する目や鼻などの各パーツの形状および配置位置を変更したりすることができる。また、編集機能では、武器や服装などの装備品を選択して、プレイヤキャラクタに装備させることもできる。プレイヤは、編集後の基準キャラクタを自分のプレイヤキャラクタとして三次元仮想ゲーム空間上で使用することができる。例えば、腕のパーツの編集では、肩から肘までの上腕部分と肘から手首までの前腕部分とを、それぞれ個別に長くしたり短くしたり、太くしたり細くしたりすることができる。編集機能の詳細については後述する。
【0034】
プレイヤキャラクタの動作には、予め設定されている基準キャラクタの動作のためのモーションデータが用いられる。モーションデータを用いた具体的な動作の再生方法については後述する。また、仮想カメラモーションデータに応じて位置および撮影方向を変化させながら仮想カメラがプレイヤキャラクタを撮影する。当該仮想カメラモーションデータは、基準キャラクタが動作を行ったときに迫力ある映像が生成されるように、ゲーム作製者によって構図が決められて作製される。すなわち、基準キャラクタの動作を仮想カメラモーションデータに基づいて撮影した構図が、ゲーム作製者が想定した構図である。本実施形態では、プレイヤキャラクタの体型に応じて仮想カメラの位置および撮影方向を補正する。これにより、プレイヤキャラクタの体型が編集によって変化していても、ゲーム作製者が想定した構図と同様の構図で迫力ある映像を生成することができる。
【0035】
図1は、プレイヤキャラクタの体型に応じて補正された仮想カメラの位置および撮影方向を説明するための図である。図1においては、プレイヤキャラクタPCと敵キャラクタECとが向かい合っているところを、プレイヤキャラクタPCの右後方の所定の位置にある仮想カメラCで撮影している状態を示している。なお、図1の各キャラクタは図17の各キャラクタの手足を省略して簡略化したキャラクタとして記載されている(図14についても同様である。)。
【0036】
図1は、プレイヤキャラクタPCのローカル座標系のX軸の負方向から見たものである。ローカル座標系は、キャラクタ(例えば、プレイヤキャラクタPCや敵キャラクタECなどの、CPUによって動きが制御されているキャラクタ)毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。プレイヤキャラクタPCのローカル座標系は、プレイヤキャラクタPCの上方向をY軸の正方向とし、プレイヤキャラクタPCの正面方向をZ軸の正方向とし、プレイヤキャラクタPCの左方向をX軸の正方向として設定されている。図1(a)の右側の矢印はローカル座標系を示しており、紙面表から裏の方向がX軸の正方向である。
【0037】
図1(a)は、プレイヤキャラクタPCが通常の体型(基準キャラクタの体型)である場合を示している。仮想カメラCは、プレイヤキャラクタPC後方のプレイヤキャラクタPCの頭部より少し高い位置(図においては左側の上方位置)に配置され、撮影方向は敵キャラクタECの頭部を向いている。この場合、仮想カメラCで撮影された画像は、図17(a)に示す画像のようになる。
【0038】
図1(b)は、プレイヤキャラクタPCが背の高い体型である場合を示している。仮想カメラCは、プレイヤキャラクタPCが基準キャラクタの体型であった場合の位置(図において破線で示す仮想カメラCの位置であり、以下では、「基準カメラ位置」とする。)より高い位置に配置されている。また、仮想カメラCの撮影方向が鉛直上方向となす角度(以下では、「撮影角度」とする。)α’は、プレイヤキャラクタPCが基準キャラクタの体型であった場合の撮影角度(以下では、「基準撮影角度」とする。)αより大きくなっている。この場合、仮想カメラCで撮影された画像は、図2(a)に示す画像のようになり、図17(a)に近い構図となっている。仮に、図1(b)の場合に、基準カメラ位置にある仮想カメラCで、撮影角度が基準撮影角度αになるようにして撮影した場合(すなわち、図において破線で示す仮想カメラCで撮影した場合)、撮影された画像は図17(b)に示す画像のように、プレイヤキャラクタPCの頭部がはみだした画像になってしまう。
【0039】
図1(c)は、プレイヤキャラクタPCが背の低い体型である場合を示している。仮想カメラCは、プレイヤキャラクタPCが基準カメラ位置(図において破線で示す仮想カメラCの位置)より低い位置に配置されている。また、撮影角度α”は、基準撮影角度αより小さくなっている。この場合、仮想カメラCで撮影された画像は、図2(b)に示す画像のようになり、図17(a)に近い構図となっている。仮に、図1(c)の場合に、基準カメラ位置にある仮想カメラCで、撮影角度が基準撮影角度αになるようにして撮影した場合(すなわち、図において破線で示す仮想カメラCで撮影した場合)、撮影された画像は図17(c)に示す画像のように、プレイヤキャラクタPCが画像の下方に位置した画像になってしまう。
【0040】
本発明は、基準キャラクタとそれに基づいた基準となる仮想カメラモーションデータとを備えておき、基準キャラクタとは大きさの異なるキャラクタの映像を生成する場合に、その大きさの違いに基づいて、仮想カメラモーションデータを補正し、補正後の仮想カメラモーションデータに基づいて映像を生成するところに特徴がある。仮想カメラモーションデータの補正方法の詳細については後述する。
【0041】
以下に、本実施形態のハード構成について説明する。
【0042】
図3は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置1は、本体11および操作コントローラ12を備えている。操作コントローラ12は短距離無線通信によって本体11に接続されている。本体11には、モニタ13が専用のケーブルによって接続される。また、本体11には、ゲームプログラムやゲームデータが記録されているディスク14が装着される。さらに、本体11には、必要に応じてゲームデータを保存するためのメモリカード15も装着される。
【0043】
本体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が接続されている。
【0044】
ゲーム装置1では、上記アクションゲームのソフトウェアが記録されたディスク14がディスクドライブユニット114に装着される。このディスクドライブユニット114によって、ディスク14内のゲームプログラムおよびゲームデータが制御部111内のRAM111c(後述)に読み込まれる。当該ゲームプログラムがCPU111a(後述)によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ12(後述)を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ12を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【0045】
ディスク14内のゲームデータには、基準キャラクタや敵キャラクタなどのキャラクタデータ(画像データ含む)、武器などのアイテムデータ(画像データ含む)、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【0046】
制御部111は、本体11の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、CPU111a、ROM111b、およびRAM111cなどからなる。これらは、それぞれバスラインで接続されている。
【0047】
CPU111aは、RAM111cに読み込まれたゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、プレイヤの操作による操作信号が操作コントローラ12から信号送受信部118を介して入力されると、CPU111aは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。CPU111aは、その処理結果を例えば三次元空間を表現する二次元画像(以下では、「ゲーム画像」とする。)として、モニタ13の表示画面に表示させる。また、CPU111aは、処理結果を効果音などの音声として、モニタ13のスピーカ13a(後述)に出力させる。
【0048】
ROM111bには、ゲーム装置1の基本的な機能を発揮させるための基本プログラムが記録されている。基本プログラムには、ディスク14に記録されたゲームプログラムおよびゲームデータを読み出すディスクローディング機能のためのプログラム等が含まれる。CPU111aは、ディスクドライブユニット114にディスク14が装着されると、ROM111bの基本プログラムにしたがってディスクドライブユニット114を動作させ、ディスク14からゲームプログラムおよびゲームデータをRAM111cに読み込み、ゲーム装置1をゲーム開始状態に設定する。
【0049】
RAM111cは、ディスク14から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、CPU111aがゲームプログラムを実行するためのワークエリアとを提供する。
【0050】
ゲームプログラムは、例えばゲーム進行プログラムやグラフィック制御プログラム等の複数のプログラムが組み合わされて構成されている。ゲーム進行プログラムは、モニタ13に表示されているプレイヤキャラクタの動作をコントローラ12からの操作信号に基づいて制御するプログラムである。グラフィック制御プログラムは、モニタ13に表示すべきゲーム画像を制御するプログラムである。本実施形態においては、ゲームプログラムに、キャラクタ編集プログラム(編集画面を実行するためのプログラム)が含まれている。また、本実施形態において、RAM111cはゲームデータとして、ディスク14から読み込まれた基準キャラクタデータ(図6参照)、基準キャラクタモーションデータ(図9参照)、仮想カメラデータ(図12参照)、および基準仮想カメラモーションデータ(図11参照)などを記録しており、これらのデータから作成されたプレイヤキャラクタデータ(図8参照)およびスケルトンデータ(図13参照)などを記録する。
【0051】
CPU111aは、操作コントローラ12からの操作信号に基づき、必要に応じてディスク14からゲームプログラムや画像データなどをRAM111cに読み込む。CPU111aは、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ13に表示すべきゲーム画像の内容を決定する。
【0052】
描画処理部112は、描画処理に必要な各種の演算処理を行う。CPU111aは、例えば、1/60秒毎に、描画処理部112に描画指令を出力する。このとき、CPU111aは、モニタ13に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータ、仮想カメラの位置と撮影方向のデータ、および光源データなどをRAM111cから読み出して描画処理部112に供給する。また、CPU111aは、各キャラクタの位置データや、操作コントローラ12から入力される操作信号を描画処理部112に供給する。
【0053】
描画処理部112は、CPU111aからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ(各オブジェクトおよび背景の位置関係、モニタ13の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ)の演算などを行い、その演算結果に基づいて描画処理部112内のVRAM(図示せず)に1コマ(1フレーム)のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば1/60秒毎に映像信号としてモニタ13に出力され、モニタ13に映像として表示される。
【0054】
音声処理部113は、効果音などの音声を発生させる処理に必要な各種の演算処理を行う。CPU111aは、モニタ13のスピーカ13aから出力すべき効果音若しくはBGMの音響内容を決定すると、音声処理部113に音声指令を出力する。音声処理部113は、音声指令に基づき、RAM111cから効果音もしくはBGMの音声データを読み出す。さらに、音声処理部113は、この音声データに所定の加工処理とデジタル/アナログ変換処理とを施した後、スピーカ13aに出力する。
【0055】
ディスクドライブユニット114は、CPU111aからのローディング指令(ローディングすべきゲームプログラムとゲームデータを指定した読出指令)に基づき、ディスク14に記録されたゲームプログラムやゲームデータを読み出す。
【0056】
メモリカード接続ユニット115は、ゲーム進行に関する情報をメモリカード15に書き込んだり、読み出したりするためのユニットである。CPU111aは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、メモリカード接続ユニット115を介してメモリカード15に、ゲーム進行に関する情報(この情報には、例えば、編集機能で作成されたプレイヤキャラクタデータ(図8参照)や、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。)を記録する。また、CPU111aは、メモリカード15に記録されたゲーム進行に関する情報を、ゲーム開始前にRAM111cに読み出す。
【0057】
I/Oインターフェース部116は、ディスクドライブユニット114やメモリカード接続ユニット115によって読み出されたゲームプログラムやゲームデータ、および信号送受信部118が受信した操作コントローラ12からの操作信号を制御部111に伝送する。また、I/Oインターフェース部116は、制御部111、描画処理部112や音声処理部113からの映像信号や音声信号などをモニタ13やスピーカ13aに伝送する。
【0058】
通信処理部117は、ゲーム装置1がネットワーク回線2を介して他のゲーム装置1と通信を行う場合に、データの送信および受信を行うための制御を行う。具体的には、通信処理部117は、操作コントローラ12から入力される操作信号やCPU111aから出力される信号をネットワーク回線2を介して他のゲーム装置1に送信する。また、通信処理部117は、ネットワーク回線2を介して他のゲーム装置1から送信される信号を受信してCPU111aに入力する。
【0059】
信号送受信部118は、操作コントローラ12から短距離無線通信により送信される信号を受信する。操作コントローラ12からの信号には、操作コントローラ12に設けられた操作ボタンの操作情報の他に、操作コントローラ12に設けられた各種センサ(図示しない)による検出データが含まれる。CPU111aはこの操作コントローラ12から送信される信号によりゲームを進行させる。また、信号送受信部118は、操作コントローラ12に各種信号(例えば、操作コントローラ12の振動部(図示しない)を振動させたり、発光部(図示しない)を発光させたり、音声出力部から音声を出力させたりするための信号など)を送信する。
【0060】
操作コントローラ12は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作される。プレイヤによって操作コントローラ12が操作されると、その操作信号が制御部111に伝送され、モニタ13に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ12は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど(押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。)を備えている。
【0061】
モニタ13は、本体11から送られてきた映像信号に応じてゲーム進行状態を示すゲーム画像を表示画面に映し出したり、本体11から送られてきた音声信号に応じてスピーカ13aから効果音などの音声を出力するための装置である。モニタ13は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【0062】
ディスク14は、例えばDVD−ROMまたはCD−ROMなどの光ディスクである。ディスク14には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード15は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。RAM111cのワークエリアに記録された情報はゲーム装置本体11の電源を切ると消滅してしまうことから、当該情報のうち消滅させずに残しておくべきゲーム進行に関する情報(例えば、プレイヤキャラクタデータなど)などが、メモリカード15に記録される。
【0063】
なお、ゲーム装置1がHDD(Hard Disk Drive)を備えている場合、ゲーム進行に関する情報やゲームプログラム、ゲームプログラムの実行に必要な種々のデータや画像データの一部を、HDDに記憶することができる。
【0064】
ゲーム装置1は、ネットワークアダプタ16を介して、インターネット回線などのネットワーク回線2に接続することができる。この場合、ネットワーク回線2を介して、複数のゲーム装置1間でゲームを行うこともできる(いわゆる「オンラインゲーム」)。本実施形態では、ゲーム装置1単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【0065】
次に、キャラクタの編集処理について、図4〜図8を参照して説明する。
【0066】
上述したように、本実施形態に係るアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。編集機能には、プレイヤキャラクタの体のパーツ(腕や脚、胴体など)の形状を変更する機能や、プレイヤキャラクタの顔のパーツ(目や鼻など)の形状や配置を変更する機能、プレイヤキャラクタの装備品を選択する機能などがある。以下では、プレイヤキャラクタの体のパーツの編集処理について説明する。なお、顔のパーツの編集処理および装備品の選択処理については、説明を省略する。
【0067】
図4および図5は、キャラクタのスケルトンモデルを説明するための図である。図4は、キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。図5は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人のキャラクタなのでスケルトンモデルは人のスケルトンモデルであり、図4および図5はそれぞれ一般的な人のスケルトンモデルのリンク構造および階層構造を示している。
【0068】
図4において、a〜qが記載されている丸は各関節を示している。各関節a〜qの名称は図5と共通しており、図4においては各名称の記載を省略している。以下の記載でも、各関節a〜qの名称を省略して、例えば、「関節a」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩eと右肘fとが接続されていることを示している。腰関節aはスケルトンモデルの基点(連結構造の基準となる部位)となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節aに限定されるわけではなく、胴関節b、首cや左肩iとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸(首c、胴関節b、腰関節aを結ぶ直線)に位置する点が望ましい。図4に示す矢印は、スケルトンモデルの身長を示している。
【0069】
図5において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨dは、右肩eの親であり、胴関節bの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節a(基点)は1番上位の関節であり、腰関節aの位置はローカル座標系の原点を基準に設定される。
【0070】
プレイヤキャラクタの体のパーツの編集処理は、基準キャラクタのキャラクタデータからプレイヤが使用するプレイヤキャラクタのキャラクタデータを新たに生成したり、生成されたプレイヤキャラクタのキャラクタデータを変更したりすることで行われる。なお、以下では、新たにプレイヤキャラクタのキャラクタデータを生成する場合について説明する。
【0071】
図6は基準キャラクタデータの一例を説明するための図である。
【0072】
基準キャラクタデータは基準キャラクタのキャラクタデータであり、プレイヤが編集機能を用いてプレイヤキャラクタを編集するための元のキャラクタデータである。基準キャラクタデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0073】
図6に示すように、基準キャラクタデータはモデルデータと画像データなどを含んでいる。モデルデータは関節データと身長データを含んでいる。関節データは関節a〜q毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節bのポジションデータは(Xb,Yb,Zb)となっており、リンクデータは親関節である関節aを示す「a」となっている。
【0074】
関節aは基点であって親である関節がないので、リンクデータを有しない。関節aのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節aがローカル座標系の原点の真上(Y軸上)に設定されているので、Xa=Za=0である(図7参照)。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【0075】
図7は、ポジションデータを説明するための図であり、ローカル座標系上の関節a、関節b、および関節hの位置座標を示すものである。
【0076】
関節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)となる。
【0077】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【0078】
身長データは、基準キャラクタの身長を示す情報であり、仮想カメラの位置および撮影方向の補正において用いられる。身長データは、関節c(首)のローカル座標系における位置座標のY座標(すなわち、関節cのローカル座標系の原点からの高さ成分)が関節a,b,cの各ポジションデータから算出されて、予め設定されている。関節a,b,cの各ポジションデータをそれぞれ(Xa,Ya,Za),(Xb,Yb,Zb),(Xc,Yc,Zc)とすると、身長データは下記(1)式で算出することができる。なお、身長データは、関節のポジションデータと下記(1)式とから算出できるので、基準キャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。また、身長データは、別の方法で算出するようにしてもよい。
L=Ya+Yb+Yc ・・・・・ (1)
【0079】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【0080】
図8は、プレイヤキャラクタデータの一例を説明するための図である。
【0081】
プレイヤキャラクタデータは、プレイヤキャラクタのキャラクタデータであり、プレイヤが編集機能を用いて基準キャラクタデータを編集することで作成される。作成されたプレイヤキャラクタデータは、例えばメモリカード15などに記録される。プレイヤが同じプレイヤキャラクタを使用してゲームを行う場合(新たに編集機能を用いてプレイヤキャラクタを作成しない場合)は、メモリカード15に記録されているプレイヤキャラクタデータをRAM111cに読み込んで使用する。
【0082】
プレイヤキャラクタデータは、モデルデータおよび画像データなどを含んでいる。プレイヤキャラクタデータのモデルデータは、基準キャラクタデータのモデルデータをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。
【0083】
モデルデータの各関節のポジションデータはプレイヤによる編集作業によって変更される。例えば、同図においては、関節aのポジションデータは編集によって(Xa’,Ya’,Za’)に変更されている。また、身長データは、編集後の関節a,b,cの各ポジションデータから算出されて設定される。編集後の関節a,b,cの各ポジションデータをそれぞれ(Xa’,Ya’,Za’),(Xb’,Yb’,Zb’),(Xc’,Yc’,Zc’)とすると、身長データは下記(2)式で算出することができる。なお、基準キャラクタの身長データと区別するために、プレイヤキャラクタの身長データはL’で表している。なお、身長データは、関節のポジションデータと下記(2)式とから算出できるので、プレイヤキャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。また、身長データは、別の方法で算出するようにしてもよい。
L’=Ya’+Yb’+Yc’ ・・・・・ (2)
【0084】
プレイヤは、初めてゲームを行うときなどに自分のプレイヤキャラクタを作成するために、編集画面でプレイヤキャラクタの編集を行う。編集画面は、メインメニューで「プレイヤキャラクタの編集」を選択することで開始される。編集画面において、プレイヤは編集するパーツを選択する。選択できるパーツは、例えば、左上腕、左前腕、右上腕、右前腕、左大腿、左下腿、右大腿、右下腿、腹、胸などがある。なお、選択できるパーツはこれらに限られない。本実施形態では、編集画面上に表示されている基準キャラクタの各パーツにカーソルを合わせて所定のボタンを押圧することで、プレイヤはパーツを選択することができる。選択されたパーツは、選択されたことが判るように点滅表示され、編集のためのマーカが表示される。なお、パーツの選択方法はこれに限られず、番号や文字列でパーツを指定して選択するようにしてもよい。
【0085】
次に、プレイヤは、選択したパーツの長さ(長くするか短くするか)およびその太さ(太くするか細くするか)などを調整する。本実施形態では、選択したパーツに表示されているマーカを移動させることで、当該パーツの長さおよび太さを調整する。なお、選択したパーツの調整方法はこれに限られず、直接数字を入力することで調整するようにしてもよい。また、本実施形態では、プレイヤキャラクタが左右対称となるように、編集したパーツに対応するパーツ(例えば、右上腕を編集した場合は左上腕)にも同じ編集が自動的に行われる。なお、これに限られず、左右別々に編集できるようにしてもよい。
【0086】
プレイヤによってプレイヤキャラクタのパーツの長さの編集が行われた場合、プレイヤキャラクタデータの所定の関節のポジションデータが変更される。例えば、右上腕の長さを変更した場合、プレイヤキャラクタの右肘の位置が変化するので、関節f(右肘)のポジションデータが変更される。なお、右肘に対する右手首の相対位置は変化しないので、関節g(右手首)のポジションデータは変更されない。また、プレイヤキャラクタを左右対称とするために、左上腕の長さも自動的に変更されて左肘の位置も変化するので、関節j(左肘)のポジションデータも変更される。
【0087】
大腿、下腿、腹、胸などの長さが変更された場合、プレイヤキャラクタの身長が変化して、身長データL’も変更される。例えば、右大腿の長さを変更した場合、プレイヤキャラクタの右膝の位置が変化するので、関節m(右膝)のポジションデータが変更される。また、プレイヤキャラクタを左右対称とするために、左大腿の長さも自動的に変更されて左膝の位置も変化するので、関節p(左膝)のポジションデータも変更される。そして、プレイヤキャラクタの足が適切に接地するように、関節a(基点)のポジションデータの高さ位置(ローカル座標系におけるY座標)も自動的に変更される。関節aのポジションデータのY座標Ya’が変更されるので、身長データL’も変更される(上記(2)式参照)。なお、プレイヤキャラクタのパーツの太さの編集が行われた場合、プレイヤキャラクタデータの各関節のポジションデータおよび身長データは変更されない。
【0088】
画像データは、基準キャラクタの画像データをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。例えば、編集されたパーツを構成するポリゴンの各頂点の座標は、当該パーツの編集内容に応じて変更される。なお、編集時には画像データを変更せず、編集内容の情報をプレイヤキャラクタデータとして記録しておき、画像生成時に当該編集内容の情報に基づいて画像データを変更して用いるようにしてもよい。また、プレイヤキャラクタデータを記録しておくのではなく、編集内容の情報を記録しておき、必要の都度、基準キャラクタデータと編集内容の情報とからプレイヤキャラクタのモデルデータおよび画像データを算出するようにしてもよい。
【0089】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図8〜図9を参照して説明する。
【0090】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ(図8参照)と基準キャラクタのモーションデータ(図9参照)とを用いて行われる。すなわち、プレイヤキャラクタデータと基準キャラクタのモーションデータに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータをフレーム毎に生成する。スケルトンデータに基づいてプレイヤキャラクタデータの各パーツを三次元仮想ゲーム空間上に配置する。これをフレーム毎に行うことでプレイヤキャラクタに所定の動作を行わせる。
【0091】
図9は、基準キャラクタモーションデータの一例を説明するための図である。
【0092】
基準キャラクタモーションデータは、基準キャラクタのモーションデータであり、基準キャラクタの各動作を再生するためのデータである。基準キャラクタモーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準キャラクタモーションデータは、動作(モーション)毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節a(基点)のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節aの回転角度を示すローテーションデータとが含まれている。また、関節b〜qのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。基準キャラクタモーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ(図8参照)の各関節のポジションデータとから、各関節のローカル座標系における位置を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【0093】
なお、基準キャラクタモーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。
【0094】
スケルトンデータに基づいてプレイヤキャラクタの各パーツが三次元仮想ゲーム空間上に配置されることで、プレイヤキャラクタが三次元仮想ゲーム空間上に配置される。同時に、その他のキャラクタやオブジェクトなども三次元仮想ゲーム空間上に配置される。そして、三次元仮想ゲーム空間上を仮想カメラで撮影することで、二次元画像のゲーム画像が生成される。
【0095】
通常時(例えば、プレイヤキャラクタが単に歩いている場面や、通常の技で敵キャラクタと戦っている場面など)、仮想カメラは所定のオフセット位置(例えば、プレイヤキャラクタの右後方上部の所定の位置など)に配置され、プレイヤキャラクタが画面の中心に位置するように撮影方向が設定される。一方、プレイヤキャラクタが必殺技を繰り出す場合などのデモ映像を撮影する場合には、プレイヤキャラクタにモーションデータに基づいた動作を行わせ、同時に、仮想カメラの位置および撮影方向を仮想カメラモーションデータに基づいて変化させる。仮想カメラモーションデータは、プレイヤキャラクタの動作を迫力ある映像として撮影できるように構図などが考慮されて、ゲーム作製者によってあらかじめ設定されている。
【0096】
図10は、仮想カメラデータの一例を説明するための図である。
【0097】
仮想カメラデータは、通常時の仮想カメラの位置および撮影方向を示すデータである。仮想カメラデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0098】
図10に示すように、仮想カメラデータは、ポジションデータおよびローテーションデータなどを含んでいる。ポジションデータは、仮想カメラの位置を設定するためのデータであり、プレイヤキャラクタのローカル座標系における位置座標が設定されている。ローテーションデータは、仮想カメラの撮影方向を設定するためのデータであり、プレイヤキャラクタのローカル座標系における方向ベクトルが設定されている。
【0099】
なお、仮想カメラの位置および撮影方向を切り替える場合は、切り替える位置および撮影方向毎に仮想カメラデータを用意しておき、プレイヤの操作やゲームの進行に応じて仮想カメラデータを切り替えるようにすればよい。
【0100】
図11は、基準仮想カメラモーションデータの一例を説明するための図である。
【0101】
基準仮想カメラモーションデータは、デモ映像を撮影する場合の、仮想カメラの位置および撮影方向を示すデータである。各基準仮想カメラモーションデータは、各基準キャラクタモーションデータに対応して設定されている。通常、デモ映像のためのプレイヤキャラクタの動作は複数のモーションデータを組み合わせて作成されている。デモ映像の撮影には、それぞれのモーションデータに対応する基準仮想カメラモーションデータが用いられる。
【0102】
図11に示すように、基準仮想カメラモーションデータは、フレーム毎のポジションデータおよびローテーションデータなどを含んでいる。ポジションデータは、仮想カメラの位置を設定するためのデータであり、プレイヤキャラクタのローカル座標系における位置座標が設定されている。ローテーションデータは、仮想カメラの撮影方向を設定するためのデータであり、ローカル座標系における方向ベクトルが設定されている。
【0103】
基準仮想カメラモーションデータは、基準キャラクタが動作を行った場合に適切な構図で撮影できるように設定されている。したがって、プレイヤキャラクタの体型が基準キャラクタと異なる場合、基準仮想カメラモーションデータをそのまま用いても、適切な構図にならない。したがって、本実施形態では、基準仮想カメラモーションデータのポジションデータおよびローテーションデータに、プレイヤキャラクタの身長データに応じた補正を行って用いている。当該「プレイヤキャラクタの身長データ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものであり、基準キャラクタの身長データが本発明の「基準となるオブジェクトの所定部分の大きさ」に対応するものである。また、「身長データ」は本発明の「垂直方向の長さ」に対応するものである。
【0104】
例えば、図1に示す例では、プレイヤキャラクタPCの身長データL’と基準キャラクタの身長データLとの差ΔL=L’−Lを補正値として、基準仮想カメラモーションデータのポジションデータの高さ成分(Y座標値)に加算する。プレイヤキャラクタPCが背の高い体型である場合(図1(b)参照)、ΔL(=L’−L>0)がポジションデータのY座標値に加算されて、仮想カメラCが破線で示す基準カメラ位置よりΔLだけ上方に配置される。また、プレイヤキャラクタPCが背の低い体型である場合(図1(c)参照)、ΔL(=L’−L<0)がポジションデータのY座標値に加算されて(|ΔL|だけ減算されて)、仮想カメラCが破線で示す基準カメラ位置より|ΔL|だけ下方に配置される。また、図1に示す例では、仮想カメラCの撮影方向が敵キャラクタECの頭部を向くように、差ΔLに応じて基準仮想カメラモーションデータのローテーションデータの補正を行っている。この場合、「差ΔL」が本発明の「補正情報」に対応するものである。
【0105】
なお、身長データの差に応じて補正するのではなく、身長データの割合に応じて補正するようにしてもよい。例えば、図1に示す例で、基準キャラクタの身長データLに対するプレイヤキャラクタPCの身長データL’の割合R=L’/Lを補正値として、基準仮想カメラモーションデータのポジションデータの高さ成分(Y座標値)に乗算するようにしてもよい。また、この場合、撮影角度(仮想カメラCの撮影方向が鉛直上方向となす角度)が基準撮影角度αに割合Rを乗算した値となるように、基準仮想カメラモーションデータのローテーションデータの補正を行うようにしてもよい。プレイヤキャラクタPCが背の高い体型である場合(図1(b)参照)、R(=L’/L>1)がポジションデータのY座標値に乗算されて、仮想カメラCが基準カメラ位置より上方に配置される。また、撮影角度α’(=α・R)は、基準撮影角度αより大きくなる。一方、プレイヤキャラクタPCが背の低い体型である場合(図1(c)参照)、R(=L’/L<1)がポジションデータのY座標値に乗算されて、仮想カメラCが基準カメラ位置より下方に配置される。また、撮影角度α”(=α・R)は、基準撮影角度αより小さくなる。この場合、「割合R」が本発明の「補正情報」に対応するものである。
【0106】
なお、仮想カメラCの位置および撮影方向の補正値は、差ΔL=L’−L(または、割合R=L’/L)に応じて連続的に変化させる場合に限られず、段階的に変化させるようにしてもよい。例えば、プレイヤキャラクタの身長が151〜170cmの場合は補正値を「0」とし、150cm以下の場合は負の所定値とし、171cm以上の場合は正の所定値としてもよい。
【0107】
図12は、ゲーム装置1の例えば制御部111および描画処理部112で行われる、デモ映像のためのゲーム画像データを生成する処理(以下では、「デモ画像データ生成処理」とする。)を説明するためのフローチャートである。
【0108】
デモ画像データ生成処理は、フレーム毎に実施される。まず、実行される動作に対応するモーションデータの該当するフレームのデータ(例えば、図9に示すモーション1のフレーム1の処理の場合、ポジションデータα1、ローテーションデータa1、およびローテーションデータb1〜q1)と、プレイヤキャラクタデータ(図8参照)とが、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S1)。次に、入力されたデータからスケルトンデータが生成される(S2)。
【0109】
図13は、スケルトンデータの一例を説明するための図である。
【0110】
スケルトンデータは、各関節の位置データ(ポジションデータ)および親である関節を示すデータ(リンクデータ)を含んでいる。関節a(基点)のデータには、ポジションデータのみが含まれている。関節aのポジションデータは、ローカル座標系における関節aの位置座標であり、基準キャラクタモーションデータの関節aのポジションデータと、基準キャラクタの脚の長さ(大腿と下腿を合わせた長さ)に対するプレイヤキャラクタの脚の長さの比率Tとから算出される。具体的には、基準キャラクタモーションデータの関節aのポジションデータの各座標成分に比率Tを乗算したものが、補正前スケルトンデータの関節aのポジションデータの各座標成分となる。なお、比率Tは、標準姿勢をとった基準キャラクタおよびプレイヤキャラクタの脚の長さから算出されるが、詳細は省略する。
【0111】
例えば、図9に示すモーション1のフレーム1の処理の場合、スケルトンデータの関節aのポジションデータは、ポジションデータα1が(Xα1,Yα1,Zα1)の場合、(Xα1・T,Yα1・T,Zα1・T)となる。ローカル座標系の鉛直方向を示すY座標の値が基準キャラクタモーションデータにおける値に比率Tを乗じた値となっているので、関節aの高さ位置がプレイヤキャラクタの脚の長さに応じた位置となっている。これにより、プレイヤキャラクタの足が適切に地面に接するようになる。
【0112】
関節b〜qのデータには、ポジションデータおよびリンクデータが含まれている。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節b〜qのポジションデータと基準キャラクタモーションデータの関節b〜qのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節b〜qのリンクデータは、プレイヤキャラクタデータの関節b〜qのリンクデータを用いる。
【0113】
図12に戻って、ステップS2で生成されたスケルトンデータのワールド座標変換が行われる(S3)。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップS3のワールド座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【0114】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き(正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き)を示すデータであり、RAM111cに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが走って移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として走るモーションが実行される。当該走るモーションが終了したとき(最後のフレームが処理されたとき)のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが走って移動している間、走るモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【0115】
次に、プレイヤキャラクタ以外のキャラクタやオブジェクトの画像データが読み出されて、ワールド座標変換が行われる(S4)。他のキャラクタが動作を行っている場合は、対応するモーションデータに基づいた処理もなされる。この場合、他のキャラクタのキャラクタデータとして、基準キャラクタデータ(図6参照)を変更したものを用いるようにしてもよいし、別途設けられている基準キャラクタデータやこれを変更したものを用いるようにしてもよい。また、他のキャラクタの動作のためのモーションデータは、基準キャラクタモーションデータ(図9参照)を用いるようにしてもよいし、別途設けられているモーションデータを用いるようにしてもよい。
【0116】
次に、基準仮想カメラモーションデータの対応するフレームのデータ(例えば、図11に示すモーション1のフレーム1の処理の場合、ポジションデータβ1およびローテーションデータw1)が、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S5)。当該データも、ワールド座標変換される。次に、プレイヤキャラクタデータの身長データに応じて、基準仮想カメラモーションデータのポジションデータおよびローテーションデータが補正される(S6)。
【0117】
次に、仮想カメラの補正後のポジションデータおよびローテーションデータに基づいて、各画像データの投影変換が行われて(S7)、デモ画像データ生成処理は終了される。
【0118】
投影変換された各画像データからなるゲーム画像データが映像信号としてモニタ13に出力される。これをフレーム毎に繰り返すことで、デモ映像が表示される。
【0119】
本実施形態によると、基準仮想カメラモーションデータのポジションデータの高さ成分に、プレイヤキャラクタPCの身長データL’と基準キャラクタの身長データLとの差ΔL=L’−Lが補正値として加算される。これにより、仮想カメラCの位置がプレイヤキャラクタPCの身長に応じて補正される。また、仮想カメラCの撮影方向は、差ΔLに応じて、敵キャラクタECの頭部を向くように補正される。したがって、プレイヤキャラクタPCの身長に係わらず、ゲーム作製者が想定した構図と同様の構図でゲーム画像を生成することができる。また、基準仮想カメラモーションデータを補正して用いるので、身長の異なるプレイヤキャラクタPC毎に仮想カメラCのモーションデータを作成して記録しておく必要がない。したがって、ゲーム開発時の仮想カメラモーションデータ作成の作業量を抑制することができるので、開発コストを抑制することができる。また、仮想カメラモーションデータを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0120】
なお、上記実施形態では、編集機能によって編集されたプレイヤキャラクタの身長が変化する場合について説明したが、これに限られない。例えば、予め用意された身長の異なる複数のプレイヤキャラクタの中から、プレイヤがプレイヤキャラクタを選択する場合にも、本発明を適用することができる。
【0121】
また、装着した装備品によってプレイヤキャラクタの身長(すなわち、装備品を装着した状態のプレイヤキャラクタの垂直方向の長さ)が変化する場合にも、本発明を適用することができる。この場合、身長差であるΔL(=L’−L)に、装備品によって変化する高さの値を加えたものを、補正値として用いればよい。例えば、プレイヤキャラクタが兜を装着している場合、兜の高さに基づく値をΔLに加算して、補正値とすればよい。また、プレイヤキャラクタが所持する槍が基準キャラクタが所持する槍より長い場合、槍の長さの差をΔLに加算して、補正値としてもよい。
【0122】
上記実施形態では、デモ映像のためのゲーム画像データを生成する場合について説明したが、これに限られない。通常時のゲーム画像データを生成する場合にも、本発明を適用することができる。例えば、仮想カメラがプレイヤキャラクタの後方から追従する客観視点形式(サードパーソンシューティング)では、仮想カメラのオフセット位置が所定のプレイヤキャラクタに基づいた位置に設定される。この場合、プレイヤキャラクタの身長が高くなるように編集されると、プレイヤキャラクタの一部が画面からはみ出すなどして、ゲーム作製者の想定した構図でプレイヤキャラクタを表示することができなくなる。このような場合にも、プレイヤキャラクタの身長に応じて仮想カメラの位置および撮影方向を補正することは有効である。
【0123】
一方、仮想カメラの位置をプレイヤキャラクタの視点位置に設定する主観視点形式(ファーストパーソンシューティング)では、デモ映像または通常時のゲーム画像データを生成するとき、通常時の仮想カメラのオフセット位置が、基準となるプレイヤキャラクタに基づいた位置(目の位置)に設定される。この場合、プレイヤキャラクタの身長が高くなるように編集されると、実際に表示されるゲーム画像が、当該プレイヤキャラクタの身長にあった目線の高さで三次元仮想ゲーム空間を見た場合のゲーム画像と一致しなくなる。このような場合にも、プレイヤキャラクタの身長に応じて仮想カメラの位置および撮影方向を補正することは有効である。
【0124】
上記実施形態では、仮想カメラの位置および撮影方向を補正する場合について説明したが、これに限られない。仮想カメラの位置のみを補正するようにしてもよいし、仮想カメラの撮影方向のみを補正するようにしてもよい。
【0125】
上記実施形態では、プレイヤキャラクタの身長に応じて補正する場合について説明したが、これに限られない。プレイヤキャラクタ以外のキャラクタの身長に応じて補正するようにしてもよい。また、プレイヤキャラクタの身長に応じた補正と、他のキャラクタの身長に応じた補正とを、重ねて行うようにしてもよい。
【0126】
図14は、敵キャラクタの身長に応じて仮想カメラの撮影方向を補正する場合の例を説明するための図である。
【0127】
図14(a)は、図1(a)と同様の状態において、敵キャラクタECが身長の高い体型である場合を示している。この場合、仮想カメラCの配置場所は基準カメラ位置(図において破線で示す仮想カメラCの位置)から変更されていないが、仮想カメラCの撮影方向が敵キャラクタECの身長と基準キャラクタの身長との差に応じて補正され、撮影角度βが基準撮影角度αより小さくなっている。この場合、仮想カメラCで撮影された画像は、図17(a)に近い構図となる。
【0128】
図14(b)は、図1(a)と同様の状態において、プレイヤキャラクタPCおよび敵キャラクタECがともに身長の高い体型である場合を示している。この場合、仮想カメラCは、プレイヤキャラクタPCの身長と基準キャラクタの身長との差に応じて、基準カメラ位置(図において破線で示す仮想カメラCの位置)より高い位置に配置されている。また、仮想カメラCの撮影角度は、プレイヤキャラクタPCの身長と基準キャラクタの身長との差に応じて大きくなるように補正され、さらに、敵キャラクタECの身長と基準キャラクタの身長との差に応じて小さくなるように補正されるので、結果的に基準撮影角度αと同じ角度になっている。この場合も、仮想カメラCで撮影された画像は、図17(a)に近い構図となる。
【0129】
また、キャラクタの身長に応じて補正する場合に限られず、オブジェクトの高さに応じて補正するようにしてもよい。例えば、ゲーム画像に所定のオブジェクトを表示させたい場合に、当該オブジェクトの高さに応じて仮想カメラの位置や撮影方向を補正するようにしてもよい。この場合、「オブジェクトの高さ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0130】
上記実施形態では、一人のキャラクタの身長に応じて補正する場合について説明したが、これに限られず、複数のキャラクタの身長に応じて補正するようにしてもよい。この場合、例えば、各キャラクタの身長の平均値に応じて、仮想カメラの位置や撮影方向を補正するようにすればよい。
【0131】
図15は、複数の敵キャラクタの身長に応じて仮想カメラの位置を補正する場合の例を説明するための図である。
【0132】
図15(a)は、敵キャラクタEC1〜EC3の身長がいずれも基準キャラクタの身長と同じ場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長と同一なので、仮想カメラの位置は補正されていない。
【0133】
図15(b)は、敵キャラクタEC1およびEC3の身長が基準キャラクタの身長と同じであるが、敵キャラクタEC2の身長が基準キャラクタの身長より高い場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長より大きいので、仮想カメラは基準カメラ位置より高い位置に配置されている。したがって、敵キャラクタEC1〜EC3が、図15(a)の場合と比べて、画面上で下方に位置するように表示されている。これにより、図15(a)の構図に近い構図となっている。仮に、敵キャラクタEC1の身長のみに応じて仮想カメラの位置を補正した場合、敵キャラクタEC1の身長は基準キャラクタの身長と同じであるので仮想カメラの位置の補正が行われず、敵キャラクタEC2の頭の先が画面からはみ出して表示されることになる。一方、敵キャラクタEC2の身長のみに応じて仮想カメラの位置を補正した場合、仮想カメラは基準カメラ位置よりかなり高い位置に配置され、敵キャラクタEC1〜EC3の脚の先が画面からはみ出して表示されることになる。
【0134】
図15(c)は、敵キャラクタEC1の身長が基準キャラクタの身長と同じであるが、敵キャラクタEC2およびEC3の身長が基準キャラクタの身長より低い場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長より小さいので、仮想カメラは基準カメラ位置より低い位置に配置されている。したがって、敵キャラクタEC1〜EC3が、図15(a)の場合と比べて、画面上で上方に位置するように表示されている。これにより、図15(a)の構図に近い構図となっている。仮に、敵キャラクタEC1の身長のみに応じて仮想カメラの位置を補正した場合、敵キャラクタEC1の身長は基準キャラクタの身長と同じであるので仮想カメラの位置の補正が行われず、敵キャラクタEC2およびEC3が画面の下方に表示されることになる。一方、敵キャラクタEC2の身長のみに応じて仮想カメラの位置を補正した場合、仮想カメラは基準カメラ位置よりかなり低い位置に配置され、敵キャラクタEC1の頭の先が画面からはみ出して表示されることになる。
【0135】
なお、図15の例においては、仮想カメラの位置のみを補正する場合について説明したが、合わせて仮想カメラの撮影方向も補正するようにしてもよい。
【0136】
上記実施形態では、プレイヤキャラクタの身長に応じて補正する場合について説明したが、キャラクタの身長以外の要素に応じて補正するようにしてもよい。例えば、プレイヤキャラクタの肩幅などに応じて、仮想カメラの水平位置を補正するようにしてもよい。この場合、プレイヤキャラクタの肩幅が広く(体型が横に大きい)なるように編集されていても、仮想カメラの水平位置が補正されるので、プレイヤキャラクタの体が仮想カメラによる撮影の邪魔になることを抑制し、ゲーム作製者が想定した構図に近い構図にすることができる。この場合、「プレイヤキャラクタの肩幅」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0137】
また、例えば、仮想カメラの位置をプレイヤキャラクタの視点位置として、プレイヤキャラクタが腕を伸ばして手の平を見ている場合のゲーム画像の生成においては、プレイヤキャラクタの腕の長さに応じて仮想カメラの撮影方向を補正するようにしてもよい。この場合、プレイヤキャラクタの腕の長さが編集されていても、手の平が画面の適切な位置にくるように表示することができる。この場合、「プレイヤキャラクタの腕の長さ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0138】
上記では、プレイヤキャラクタの身長に応じて仮想カメラの高さ位置を補正する場合や、プレイヤキャラクタの肩幅などに応じて仮想カメラの水平位置を補正する場合など、編集によって長さが変わる方向と同じ方向に仮想カメラの位置を変化させる場合について説明したが、これに限られない。例えば、プレイヤキャラクタの身長(または肩幅)に応じて、仮想カメラとプレイヤキャラクタとの距離を離す方向(プレイヤキャラクタのローカル座標系のZ軸の負方向)に仮想カメラの位置を補正するようにしてもよい。この場合、プレイヤキャラクタの身長が長く(肩幅が広く)なるように編集されていても、仮想カメラの位置がプレイヤキャラクタから離れるように補正されるので、プレイヤキャラクタの体の一部が画面からはみ出すなどの不都合を抑制して、ゲーム作製者が想定した構図に近い構図にすることができる。
【0139】
また、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正するようにしてもよい。
【0140】
プレイヤキャラクタが敵キャラクタを倒したときのデモ映像を仮想カメラモーションデータを用いて撮影する場合、敵キャラクタが倒れた位置によっては、ゲーム作製者が想定した構図にならない場合がある。例えば、敵キャラクタがプレイヤキャラクタの体に隠れてしまう場合がある。この問題を解消するために、敵キャラクタが倒れた位置によって異なる仮想カメラモーションデータをあらかじめ作成することは、データ作成のための作業量が増大し、記録するデータ量が膨大になることから、現実的でない。このような問題を解決するために、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正して用いるようにしてもよい。
【0141】
図16は、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正する場合の例を説明するための図である。図16では、プレイヤキャラクタが敵キャラクタを倒したときのデモ映像を撮影する場合を例としており、倒された敵キャラクタとプレイヤキャラクタとがゲーム画像に表示されるように仮想カメラの位置および撮影方向を補正する場合について説明する。
【0142】
図16(a)は三次元仮想ゲーム空間を上から見た図であり、プレイヤキャラクタPCおよび敵キャラクタECの位置と仮想カメラCの位置および撮影方向とが示されている。図の右側の矢印は、プレイヤキャラクタPCのローカル座標系を示しており、紙面裏から表の方向がY軸の正方向である。点P1はプレイヤキャラクタPCの左前方にあらかじめ設定されている点を示している。点P2は敵キャラクタECの基準の位置である。敵キャラクタECが点P2の位置に倒れている場合を基準として、仮想カメラCの位置を示す点P3があらかじめ設定されている。点P3は、点P1を中心とした所定半径の円Eと、点P1と点P2とを結ぶ直線とが交わる点のうち、点P2から離れた位置にある点である。敵キャラクタECが点P2の位置に倒れている場合、仮想カメラCは点P3に配置され、点P3から点P1に向かう方向を撮影方向として撮影を行う。図16(b)はこの場合のデモ映像の1コマを示しており、倒された敵キャラクタECとプレイヤキャラクタPCとがゲーム画像に表示されている。
【0143】
敵キャラクタECが倒れる場所は、プレイヤキャラクタPCとの戦いの状況によるので、一定していない。すなわち、敵キャラクタECは、必ずしも点P2の位置に倒れるわけではない。敵キャラクタECが点P2以外の位置に倒れている場合、倒れている位置(プレイヤキャラクタPCの位置に対する相対位置)に応じて、仮想カメラCの位置が点P3から補正され、撮影方向が点P3から点P1に向かう方向から補正される。例えば、敵キャラクタECが点P2’の位置に倒れている場合、点P1と点P2’とを結ぶ直線と円Eとが交わる点のうち、点P2’から離れた位置にある点P3’が演算され、仮想カメラCの位置が点P3から点P3’に補正される。また、撮影方向が点P3’から点P1に向かう方向に補正される。
【0144】
図16(c)はこの場合のデモ映像の1コマを示している。図16(c)に示す画像では、倒された敵キャラクタECとプレイヤキャラクタPCとが、図16(b)に示す構図と同様の構図で表示されている。仮に、仮想カメラCの位置および撮影方向が補正されなかった場合(すなわち、仮想カメラCが点P3に配置され、点P3から点P1に向かう方向を撮影方向として撮影を行った場合)、敵キャラクタECはプレイヤキャラクタPCの体に隠れて表示されなくなり、図16(b)に示す構図と全く異なる構図になる。
【0145】
このように、敵キャラクタECとプレイヤキャラクタPCとの位置関係に応じて仮想カメラCの位置および撮影方向を補正することで、ゲーム作製者が想定した構図と同様の構図でゲーム画像を生成することができる。また、基準となる仮想カメラCの位置および撮影方向(図16の例では、点P3の位置および点P3から点P1に向かう方向)を補正して用いるので、敵キャラクタECの位置毎に仮想カメラCの位置および撮影方向の情報を作成して記録しておく必要がない。図16の例の場合、「プレイヤキャラクタPCの位置に対する敵キャラクタECの相対位置」が本発明の「オブジェクトの他のオブジェクトに対する相対位置の情報」に対応するものである。
【0146】
なお、上記図16の例では、三次元仮想ゲーム空間を上から見た図(図16(a)参照)を用いて、高さの要素を考慮せずに説明した。敵キャラクタECの倒れている位置の高さが変化する場合、仮想カメラCの位置および撮影方向の補正において、高さ方向の補正も行うようにしてもよい。この場合、円Eの代わりに点P1を中心とした所定半径の球に基づいて仮想カメラCの位置を補正すればよい。また、図16の例の場合でも、仮想カメラCの位置および撮影方向を、プレイヤキャラクタPCの身長データに応じて補正するようにしてもよい。
【0147】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、RPG(ロールプレイングゲーム)、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。例えば、野球ゲームであれば、ピッチャーまたはバッターのキャラクタの体型に基づいて仮想カメラの位置および撮影方向を補正することができる。また、ピッチャー、バッター、キャッチャー、審判などの複数のキャラクタの体型の平均に基づいて仮想カメラの位置および撮影方向を補正することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはCPUの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【0148】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【0149】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。本発明は、三次元仮想空間上のオブジェクトを仮想カメラで撮影した画像を表示するあらゆるプログラムに適用することができる。
【0150】
なお、本発明は、ゲーム実行時における映像の生成などに用いられるだけでなく、ゲームの開発時にも用いることができる。例えば、ゲーム作成者がゲームを開発する際に、体型の異なる複数のキャラクタを使って、それぞれの動作を確認する場合などにも用いることができる。このとき、一連の動作の映像としてではなく、フレーム毎の画像としても確認できるようにしてもよい。
【0151】
本発明に係るプログラムおよび画像処理装置は、上述した実施形態に限定されるものではない。本発明に係るプログラムおよび画像処理装置の具体的な構成は、種々に設計変更自在である。
【符号の説明】
【0152】
1 ゲーム装置
11 本体(画像処理装置)
111 制御部
111a CPU(演算手段、読出手段、補正手段、表示制御手段)
111b ROM
111c RAM(記録部、プログラム記録部)
112 描画処理部
113 音声処理部
114 ディスクドライブユニット
115 メモリカード接続ユニット
116 I/Oインターフェース部
117 通信処理部
118 信号送受信部
12 操作コントローラ
13 モニタ(表示装置)
14 ディスク
15 メモリカード
16 ネットワークアダプタ
2 ネットワーク回線
【技術分野】
【0001】
本発明は、プログラム、および、当該プログラムを実行するコンピュータを備えた画像処理装置に関し、特に、仮想カメラの位置または撮影方向の補正に関する。
【背景技術】
【0002】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で活動させるゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とする。三次元仮想ゲーム空間上に配置されたキャラクタおよびオブジェクト(「オブジェクト」は「キャラクタ」を含む概念なので、以下で総称する場合は、単に「オブジェクト」とする。)を二次元画像として画面に表示するため、一般的に、所定の位置座標に基づいた投影処理が行われる。この場合、所定の位置座標にある仮想カメラで撮影したような画像が生成されるので、三次元仮想ゲーム空間上のオブジェクトを二次元画像で表示することを仮想カメラで撮影すると表現する。
【0003】
仮想カメラの位置をプレイヤキャラクタから離れた位置とプレイヤキャラクタの視点位置とで切り替えて、客観視点から撮影した画像と主観視点から撮影した画像とを切り替えるゲームが開発されている(特許文献1参照)。また、プレイヤが選択したオブジェクトに注視点を設定して、仮想カメラの撮影方向を変更するゲームが開発されている(特許文献2参照)。
【0004】
各キャラクタに所定の動作を行わせる場合、あらかじめ設定されている各動作のためのデータ(以下では、「モーションデータ」とする。)を用いることが、一般的に行われている。モーションデータは、各動作(モーション)のフレーム毎(例えば1/60秒毎)のデータを記録したものである(図9参照)。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル(図4および図5参照)で表現される。モーションデータはこのスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。
【0005】
例えば、剣を振り下ろして敵キャラクタを切り倒す動作をプレイヤキャラクタにさせる場合、プレイヤキャラクタ固有の画像データやモデルデータなど(以下では、「キャラクタデータ」とする。詳細は後述する。)と、剣を振り下ろすモーションデータとを組み合わせて、当該動作を行わせる。このとき、仮想カメラの位置および撮影方向についてフレーム毎に記録したデータ(以下では、「仮想カメラモーションデータ」とする。)に応じて、仮想カメラの位置および撮影方向を変化させながら撮影させる場合がある。仮想カメラモーションデータの詳細は後述する。仮想カメラが、仮想カメラモーションデータに応じて位置および撮影方向を変化させながらプレイヤキャラクタを撮影することで、プレイヤキャラクタを中心とした構図で迫力ある映像が生成される。例えば、関節構造を有するキャラクタの骨格モデルの一部に仮想カメラを組み込んで、仮想カメラのモーションを制御するゲームが開発されている(特許文献3参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第3964884号公報
【特許文献2】特許第4144017号公報
【特許文献3】特開2009−28188号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、プレイヤがプレイヤキャラクタを選択できるゲームや、プレイヤがプレイヤキャラクタの体の各パーツを編集できるゲームの場合、所定の仮想カメラモーションデータに応じて撮影を行っても、ゲーム作製者が想定した構図での映像が生成されない場合がある。例えば、プレイヤキャラクタの背が高いなど体型が通常より大きい場合、プレイヤキャラクタが画面からはみ出したり、他のキャラクタがプレイヤキャラクタに隠れて見えなくなることがある。また、プレイヤキャラクタの背が低いなど体型が通常より小さい場合、プレイヤキャラクタが画面の下の方に表示されることがある。
【0008】
図17は、プレイヤキャラクタと敵キャラクタとが向かい合って、プレイヤキャラクタがある動作を行っているデモ映像の1コマの画像を示している。
【0009】
図17(a)は、プレイヤキャラクタPCの体型が通常の体型の場合を示している。仮想カメラモーションデータはプレイヤキャラクタPCの体型が通常の体型の場合を基準として設定されているので、プレイヤキャラクタPCと敵キャラクタECとがゲーム作製者が想定した構図で表示されている。
【0010】
図17(b)は、プレイヤキャラクタPCが通常の体型より背の高い体型である場合を示している。仮想カメラは、図17(a)の場合と同じ位置で同じ撮影方向で撮影を行っている。そのため、プレイヤキャラクタPCの頭部が画面からはみ出して、図17(a)の場合とは大幅に異なる構図になっている。
【0011】
図17(c)は、プレイヤキャラクタPCが通常の体型より背の低い体型である場合を示している。仮想カメラは、図17(a)の場合と同じ位置で同じ撮影方向で撮影を行っている。そのため、プレイヤキャラクタPCが画面の下方に位置しており、図17(a)の場合とは大幅に異なる構図になっている。
【0012】
図17(b)および(c)の場合において、図17(a)と同様の構図となるような仮想カメラモーションデータをあらかじめ用意して用いるようにすれば、プレイヤキャラクタPCの体型にかかわらず同様の構図で表示することができる。しかし、プレイヤキャラクタPCの体型毎にそれぞれ仮想カメラモーションデータを作成すると、データを作成するための作業量が増大する。また、記録するデータ量が膨大になる。
【0013】
また、プレイヤキャラクタPCの体型にかかわらず、プレイヤキャラクタPCの全体が確実に画面内に収まるように、仮想カメラの位置を予めプレイヤキャラクタPCから離れた位置に設定しておく方法もある。しかし、この場合、仮想カメラ位置は最も大きいプレイヤキャラクタPCの体型に基づいた位置が基準となる。そのため、体型が異なるプレイヤキャラクタPCを撮像する場合、単調で迫力がない映像になり、ゲーム作製者が想定した構図をとることができない。
【0014】
プレイヤキャラクタPC以外のキャラクタやオブジェクトが編集や選択可能な場合にも、同様の問題が生じる場合がある。また、上記問題はゲームに限られるものではない。ゲーム以外においても、共通の仮想カメラモーションデータに基づいて大きさの異なるオブジェクトを表示する場合に、同様の問題が生じる。
【0015】
上述したデモ映像の再生方法は、あらかじめ作成されて記憶されているデモ映像をそのまま再生する「プリレンダムービー」に対して、リアルタイムに処理を行ってデモ映像を再生するので、「リアルタイムレンダリングムービー」といわれる。「リアルタイムレンダリングムービー」では、あらかじめ記憶されているモーションデータにキャラクタデータを組み合わせ、キャラクタをリアルタイムに動作させて撮影するので、プレイヤがゲーム中に選択したキャラクタの武器や服装などの装備品をデモ映像に反映することができる。しかしながら、プレイヤが選択した装備品が大きい場合、再生されたデモ映像において、装備品の一部が画面からはみ出したり、他のキャラクタが当該装備品に隠されて見えなくなることがある。この場合も、同様の問題が生じる。
【0016】
本発明は上記した事情のもとで考え出されたものであって、表示されるオブジェクトの大きさが異なる場合であっても、仮想カメラの位置および撮影方向のデータを増加させることなく、ゲーム作製者が想定した構図と同様の構図でオブジェクトを表示させることができるプログラムを提供することをその目的としている。
【課題を解決するための手段】
【0017】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【0018】
本発明の第1の側面によって提供されるプログラムは、三次元仮想空間に配置されるオブジェクトの画像を表示装置に表示させる画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、記録部にあらかじめ記録されている、基準となる基準オブジェクトを撮影するために設定された仮想カメラの基準位置および基準撮影方向を読み出す読出手段と、前記基準オブジェクトの所定部分の大きさに対する前記オブジェクトの前記所定部分の大きさに関する情報である補正情報を演算する演算手段と、前記演算手段によって演算された補正情報に応じて、前記読出手段によって読み出された前記基準位置および基準撮影方向の少なくとも一方を補正する補正手段と、補正後の仮想カメラの位置および撮影方向を、前記オブジェクトを撮影するための仮想カメラの位置および撮影方向として設定する設定手段として機能させることを特徴とする。
【0019】
なお、本発明における「オブジェクトの所定部分の大きさ」には、オブジェクト全体の垂直方向の長さ(高さ)や水平方向の長さなどや、オブジェクトの一部分の長さなどが含まれる。例えば、オブジェクトが人物などのキャラクタの場合、当該キャラクタの身長や肩幅、脚の長さ、腕の長さなどが、「オブジェクトの所定部分の大きさ」に含まれる。また、キャラクタが装備品を装着している場合、装着している装備品も含めたキャラクタ全体を1つのオブジェクトと考えることができる。したがって、兜をかぶっているキャラクタの兜の先端までの高さや、ハイヒールを履いているキャラクタのヒールの先端を基準とした頭の先までの高さ(すなわち、ハイヒールを履いた状態での身長)も、「オブジェクトの所定部分の大きさ」に含まれる。また、キャラクタが槍などの武器を所持している場合、武器を構えたキャラクタの武器の先端までの高さが「オブジェクトの所定部分の大きさ」に含まれ、武器そのものの長さも「オブジェクトの所定部分の大きさ」に含まれる。また、本発明における「補正情報」には、大きさの差に基づく差分情報および大きさの割合に基づく割合情報などが含まれる。
【0020】
本発明の好ましい実施の形態においては、前記演算手段は、前記基準オブジェクトの垂直方向の長さに対する前記オブジェクトの垂直方向の長さに関する情報を前記補正情報として演算する。
【0021】
本発明の好ましい実施の形態においては、前記補正手段は、前記補正情報に応じて前記基準位置の垂直成分および基準撮影方向の垂直成分の少なくとも一方を補正する。
【0022】
本発明の好ましい実施の形態においては、前記オブジェクトは複数のオブジェクトであり、前記演算手段は、前記基準オブジェクトの前記所定部分の大きさに対する前記複数のオブジェクトのそれぞれの所定部分の平均の大きさに関する情報を前記補正情報として演算する。
【0023】
本発明の好ましい実施の形態においては、前記オブジェクト以外の他のオブジェクトが前記三次元仮想空間に配置されており、前記演算手段は、さらに前記オブジェクトの前記他のオブジェクトに対する相対位置の情報を演算し、前記補正手段は、前記相対位置の情報に応じて前記基準位置および基準撮影方向の少なくとも一方を補正する。
【0024】
本発明の好ましい実施の形態においては、前記基準位置および基準撮影方向は、前記記録部にフレームごとに記録されており、前記読出手段は、前記基準位置および基準撮影方向を、フレームごとに読み出し、前記補正手段は、前記補正情報に応じて、前記読出手段によって読み出されたフレームごとの前記基準位置および基準撮影方向を補正する。
【0025】
本発明の第2の側面によって提供される画像処理装置は、本発明の第1の側面によって提供されるプログラムを記録したプログラム記録部と、前記プログラム記録部に記録されたプログラムを実行するコンピュータとを備えていることを特徴とする。
【発明の効果】
【0026】
本発明によれば、あらかじめ記録されている基準位置や基準撮影方向が補正情報に応じて補正される。したがって、オブジェクトの大きさが異なる毎に仮想カメラの位置および撮影方向を記録しておかなくても、ゲーム作製者が想定した構図と同様の構図でオブジェクトを表示させることができる。
【0027】
例えば、プレイヤキャラクタの身長に応じて仮想カメラの位置の垂直成分と撮影方向の垂直成分とを補正して撮影することで、ゲーム作製者が想定した構図と同様の構図でプレイヤキャラクタを表示することができる。
【0028】
また、オブジェクトの大きさが異なる毎に仮想カメラの位置および撮影方向を記録しておかなくてもいいので、ゲーム開発時のデータ作成の作業量を抑制して、開発コストを抑制することができる。また、データを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0029】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【0030】
【図1】プレイヤキャラクタの大きさに応じた仮想カメラの位置および撮影方向を説明するための図である。
【図2】図1(b)および(c)の場合において、仮想カメラで撮影された画像を示す図である。
【図3】本実施形態に係るゲーム装置を示す構成図である。
【図4】キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。
【図5】各関節の親子関係の階層構造を示す図である。
【図6】基準キャラクタデータの一例を説明するための図である。
【図7】ポジションデータを説明するための図である。
【図8】プレイヤキャラクタデータの一例を説明するための図である。
【図9】基準キャラクタモーションデータの一例を説明するための図である。
【図10】仮想カメラデータの一例を説明するための図である。
【図11】基準仮想カメラモーションデータの一例を説明するための図である。
【図12】デモ映像のためのゲーム画像データを生成する処理を説明するためのフローチャートである。
【図13】スケルトンデータの一例を説明するための図である。
【図14】敵キャラクタの身長に応じて仮想カメラの撮影方向を補正する場合の例を説明するための図である。
【図15】複数の敵キャラクタの身長に応じて仮想カメラの位置を補正する場合の例を説明するための図である。
【図16】プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正する場合の例を説明するための図である。
【図17】プレイヤキャラクタがある動作を行っているデモ映像の1コマの画像を示す図である。
【発明を実施するための形態】
【0031】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置(以下では、「ゲーム装置」とする。)において、アクションゲームを進行している場合を例として説明する。
【0032】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタを敵キャラクタと戦わせ、プレイヤキャラクタが敵キャラクタを倒すことにより進行する。また、このアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。プレイヤは、編集機能を用いてプレイヤキャラクタを好みの形状に変更することができる。
【0033】
編集機能では、プレイヤキャラクタの基準となるキャラクタ(以下では、「基準キャラクタ」とする。)の腕や脚、胴体などの各パーツの形状(長さ、太さなど)を変更したり、基準キャラクタの顔を構成する目や鼻などの各パーツの形状および配置位置を変更したりすることができる。また、編集機能では、武器や服装などの装備品を選択して、プレイヤキャラクタに装備させることもできる。プレイヤは、編集後の基準キャラクタを自分のプレイヤキャラクタとして三次元仮想ゲーム空間上で使用することができる。例えば、腕のパーツの編集では、肩から肘までの上腕部分と肘から手首までの前腕部分とを、それぞれ個別に長くしたり短くしたり、太くしたり細くしたりすることができる。編集機能の詳細については後述する。
【0034】
プレイヤキャラクタの動作には、予め設定されている基準キャラクタの動作のためのモーションデータが用いられる。モーションデータを用いた具体的な動作の再生方法については後述する。また、仮想カメラモーションデータに応じて位置および撮影方向を変化させながら仮想カメラがプレイヤキャラクタを撮影する。当該仮想カメラモーションデータは、基準キャラクタが動作を行ったときに迫力ある映像が生成されるように、ゲーム作製者によって構図が決められて作製される。すなわち、基準キャラクタの動作を仮想カメラモーションデータに基づいて撮影した構図が、ゲーム作製者が想定した構図である。本実施形態では、プレイヤキャラクタの体型に応じて仮想カメラの位置および撮影方向を補正する。これにより、プレイヤキャラクタの体型が編集によって変化していても、ゲーム作製者が想定した構図と同様の構図で迫力ある映像を生成することができる。
【0035】
図1は、プレイヤキャラクタの体型に応じて補正された仮想カメラの位置および撮影方向を説明するための図である。図1においては、プレイヤキャラクタPCと敵キャラクタECとが向かい合っているところを、プレイヤキャラクタPCの右後方の所定の位置にある仮想カメラCで撮影している状態を示している。なお、図1の各キャラクタは図17の各キャラクタの手足を省略して簡略化したキャラクタとして記載されている(図14についても同様である。)。
【0036】
図1は、プレイヤキャラクタPCのローカル座標系のX軸の負方向から見たものである。ローカル座標系は、キャラクタ(例えば、プレイヤキャラクタPCや敵キャラクタECなどの、CPUによって動きが制御されているキャラクタ)毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。プレイヤキャラクタPCのローカル座標系は、プレイヤキャラクタPCの上方向をY軸の正方向とし、プレイヤキャラクタPCの正面方向をZ軸の正方向とし、プレイヤキャラクタPCの左方向をX軸の正方向として設定されている。図1(a)の右側の矢印はローカル座標系を示しており、紙面表から裏の方向がX軸の正方向である。
【0037】
図1(a)は、プレイヤキャラクタPCが通常の体型(基準キャラクタの体型)である場合を示している。仮想カメラCは、プレイヤキャラクタPC後方のプレイヤキャラクタPCの頭部より少し高い位置(図においては左側の上方位置)に配置され、撮影方向は敵キャラクタECの頭部を向いている。この場合、仮想カメラCで撮影された画像は、図17(a)に示す画像のようになる。
【0038】
図1(b)は、プレイヤキャラクタPCが背の高い体型である場合を示している。仮想カメラCは、プレイヤキャラクタPCが基準キャラクタの体型であった場合の位置(図において破線で示す仮想カメラCの位置であり、以下では、「基準カメラ位置」とする。)より高い位置に配置されている。また、仮想カメラCの撮影方向が鉛直上方向となす角度(以下では、「撮影角度」とする。)α’は、プレイヤキャラクタPCが基準キャラクタの体型であった場合の撮影角度(以下では、「基準撮影角度」とする。)αより大きくなっている。この場合、仮想カメラCで撮影された画像は、図2(a)に示す画像のようになり、図17(a)に近い構図となっている。仮に、図1(b)の場合に、基準カメラ位置にある仮想カメラCで、撮影角度が基準撮影角度αになるようにして撮影した場合(すなわち、図において破線で示す仮想カメラCで撮影した場合)、撮影された画像は図17(b)に示す画像のように、プレイヤキャラクタPCの頭部がはみだした画像になってしまう。
【0039】
図1(c)は、プレイヤキャラクタPCが背の低い体型である場合を示している。仮想カメラCは、プレイヤキャラクタPCが基準カメラ位置(図において破線で示す仮想カメラCの位置)より低い位置に配置されている。また、撮影角度α”は、基準撮影角度αより小さくなっている。この場合、仮想カメラCで撮影された画像は、図2(b)に示す画像のようになり、図17(a)に近い構図となっている。仮に、図1(c)の場合に、基準カメラ位置にある仮想カメラCで、撮影角度が基準撮影角度αになるようにして撮影した場合(すなわち、図において破線で示す仮想カメラCで撮影した場合)、撮影された画像は図17(c)に示す画像のように、プレイヤキャラクタPCが画像の下方に位置した画像になってしまう。
【0040】
本発明は、基準キャラクタとそれに基づいた基準となる仮想カメラモーションデータとを備えておき、基準キャラクタとは大きさの異なるキャラクタの映像を生成する場合に、その大きさの違いに基づいて、仮想カメラモーションデータを補正し、補正後の仮想カメラモーションデータに基づいて映像を生成するところに特徴がある。仮想カメラモーションデータの補正方法の詳細については後述する。
【0041】
以下に、本実施形態のハード構成について説明する。
【0042】
図3は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置1は、本体11および操作コントローラ12を備えている。操作コントローラ12は短距離無線通信によって本体11に接続されている。本体11には、モニタ13が専用のケーブルによって接続される。また、本体11には、ゲームプログラムやゲームデータが記録されているディスク14が装着される。さらに、本体11には、必要に応じてゲームデータを保存するためのメモリカード15も装着される。
【0043】
本体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が接続されている。
【0044】
ゲーム装置1では、上記アクションゲームのソフトウェアが記録されたディスク14がディスクドライブユニット114に装着される。このディスクドライブユニット114によって、ディスク14内のゲームプログラムおよびゲームデータが制御部111内のRAM111c(後述)に読み込まれる。当該ゲームプログラムがCPU111a(後述)によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ12(後述)を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ12を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【0045】
ディスク14内のゲームデータには、基準キャラクタや敵キャラクタなどのキャラクタデータ(画像データ含む)、武器などのアイテムデータ(画像データ含む)、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【0046】
制御部111は、本体11の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、CPU111a、ROM111b、およびRAM111cなどからなる。これらは、それぞれバスラインで接続されている。
【0047】
CPU111aは、RAM111cに読み込まれたゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、プレイヤの操作による操作信号が操作コントローラ12から信号送受信部118を介して入力されると、CPU111aは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。CPU111aは、その処理結果を例えば三次元空間を表現する二次元画像(以下では、「ゲーム画像」とする。)として、モニタ13の表示画面に表示させる。また、CPU111aは、処理結果を効果音などの音声として、モニタ13のスピーカ13a(後述)に出力させる。
【0048】
ROM111bには、ゲーム装置1の基本的な機能を発揮させるための基本プログラムが記録されている。基本プログラムには、ディスク14に記録されたゲームプログラムおよびゲームデータを読み出すディスクローディング機能のためのプログラム等が含まれる。CPU111aは、ディスクドライブユニット114にディスク14が装着されると、ROM111bの基本プログラムにしたがってディスクドライブユニット114を動作させ、ディスク14からゲームプログラムおよびゲームデータをRAM111cに読み込み、ゲーム装置1をゲーム開始状態に設定する。
【0049】
RAM111cは、ディスク14から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、CPU111aがゲームプログラムを実行するためのワークエリアとを提供する。
【0050】
ゲームプログラムは、例えばゲーム進行プログラムやグラフィック制御プログラム等の複数のプログラムが組み合わされて構成されている。ゲーム進行プログラムは、モニタ13に表示されているプレイヤキャラクタの動作をコントローラ12からの操作信号に基づいて制御するプログラムである。グラフィック制御プログラムは、モニタ13に表示すべきゲーム画像を制御するプログラムである。本実施形態においては、ゲームプログラムに、キャラクタ編集プログラム(編集画面を実行するためのプログラム)が含まれている。また、本実施形態において、RAM111cはゲームデータとして、ディスク14から読み込まれた基準キャラクタデータ(図6参照)、基準キャラクタモーションデータ(図9参照)、仮想カメラデータ(図12参照)、および基準仮想カメラモーションデータ(図11参照)などを記録しており、これらのデータから作成されたプレイヤキャラクタデータ(図8参照)およびスケルトンデータ(図13参照)などを記録する。
【0051】
CPU111aは、操作コントローラ12からの操作信号に基づき、必要に応じてディスク14からゲームプログラムや画像データなどをRAM111cに読み込む。CPU111aは、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ13に表示すべきゲーム画像の内容を決定する。
【0052】
描画処理部112は、描画処理に必要な各種の演算処理を行う。CPU111aは、例えば、1/60秒毎に、描画処理部112に描画指令を出力する。このとき、CPU111aは、モニタ13に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータ、仮想カメラの位置と撮影方向のデータ、および光源データなどをRAM111cから読み出して描画処理部112に供給する。また、CPU111aは、各キャラクタの位置データや、操作コントローラ12から入力される操作信号を描画処理部112に供給する。
【0053】
描画処理部112は、CPU111aからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ(各オブジェクトおよび背景の位置関係、モニタ13の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ)の演算などを行い、その演算結果に基づいて描画処理部112内のVRAM(図示せず)に1コマ(1フレーム)のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば1/60秒毎に映像信号としてモニタ13に出力され、モニタ13に映像として表示される。
【0054】
音声処理部113は、効果音などの音声を発生させる処理に必要な各種の演算処理を行う。CPU111aは、モニタ13のスピーカ13aから出力すべき効果音若しくはBGMの音響内容を決定すると、音声処理部113に音声指令を出力する。音声処理部113は、音声指令に基づき、RAM111cから効果音もしくはBGMの音声データを読み出す。さらに、音声処理部113は、この音声データに所定の加工処理とデジタル/アナログ変換処理とを施した後、スピーカ13aに出力する。
【0055】
ディスクドライブユニット114は、CPU111aからのローディング指令(ローディングすべきゲームプログラムとゲームデータを指定した読出指令)に基づき、ディスク14に記録されたゲームプログラムやゲームデータを読み出す。
【0056】
メモリカード接続ユニット115は、ゲーム進行に関する情報をメモリカード15に書き込んだり、読み出したりするためのユニットである。CPU111aは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、メモリカード接続ユニット115を介してメモリカード15に、ゲーム進行に関する情報(この情報には、例えば、編集機能で作成されたプレイヤキャラクタデータ(図8参照)や、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。)を記録する。また、CPU111aは、メモリカード15に記録されたゲーム進行に関する情報を、ゲーム開始前にRAM111cに読み出す。
【0057】
I/Oインターフェース部116は、ディスクドライブユニット114やメモリカード接続ユニット115によって読み出されたゲームプログラムやゲームデータ、および信号送受信部118が受信した操作コントローラ12からの操作信号を制御部111に伝送する。また、I/Oインターフェース部116は、制御部111、描画処理部112や音声処理部113からの映像信号や音声信号などをモニタ13やスピーカ13aに伝送する。
【0058】
通信処理部117は、ゲーム装置1がネットワーク回線2を介して他のゲーム装置1と通信を行う場合に、データの送信および受信を行うための制御を行う。具体的には、通信処理部117は、操作コントローラ12から入力される操作信号やCPU111aから出力される信号をネットワーク回線2を介して他のゲーム装置1に送信する。また、通信処理部117は、ネットワーク回線2を介して他のゲーム装置1から送信される信号を受信してCPU111aに入力する。
【0059】
信号送受信部118は、操作コントローラ12から短距離無線通信により送信される信号を受信する。操作コントローラ12からの信号には、操作コントローラ12に設けられた操作ボタンの操作情報の他に、操作コントローラ12に設けられた各種センサ(図示しない)による検出データが含まれる。CPU111aはこの操作コントローラ12から送信される信号によりゲームを進行させる。また、信号送受信部118は、操作コントローラ12に各種信号(例えば、操作コントローラ12の振動部(図示しない)を振動させたり、発光部(図示しない)を発光させたり、音声出力部から音声を出力させたりするための信号など)を送信する。
【0060】
操作コントローラ12は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作される。プレイヤによって操作コントローラ12が操作されると、その操作信号が制御部111に伝送され、モニタ13に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ12は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど(押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。)を備えている。
【0061】
モニタ13は、本体11から送られてきた映像信号に応じてゲーム進行状態を示すゲーム画像を表示画面に映し出したり、本体11から送られてきた音声信号に応じてスピーカ13aから効果音などの音声を出力するための装置である。モニタ13は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【0062】
ディスク14は、例えばDVD−ROMまたはCD−ROMなどの光ディスクである。ディスク14には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード15は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。RAM111cのワークエリアに記録された情報はゲーム装置本体11の電源を切ると消滅してしまうことから、当該情報のうち消滅させずに残しておくべきゲーム進行に関する情報(例えば、プレイヤキャラクタデータなど)などが、メモリカード15に記録される。
【0063】
なお、ゲーム装置1がHDD(Hard Disk Drive)を備えている場合、ゲーム進行に関する情報やゲームプログラム、ゲームプログラムの実行に必要な種々のデータや画像データの一部を、HDDに記憶することができる。
【0064】
ゲーム装置1は、ネットワークアダプタ16を介して、インターネット回線などのネットワーク回線2に接続することができる。この場合、ネットワーク回線2を介して、複数のゲーム装置1間でゲームを行うこともできる(いわゆる「オンラインゲーム」)。本実施形態では、ゲーム装置1単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【0065】
次に、キャラクタの編集処理について、図4〜図8を参照して説明する。
【0066】
上述したように、本実施形態に係るアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。編集機能には、プレイヤキャラクタの体のパーツ(腕や脚、胴体など)の形状を変更する機能や、プレイヤキャラクタの顔のパーツ(目や鼻など)の形状や配置を変更する機能、プレイヤキャラクタの装備品を選択する機能などがある。以下では、プレイヤキャラクタの体のパーツの編集処理について説明する。なお、顔のパーツの編集処理および装備品の選択処理については、説明を省略する。
【0067】
図4および図5は、キャラクタのスケルトンモデルを説明するための図である。図4は、キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。図5は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人のキャラクタなのでスケルトンモデルは人のスケルトンモデルであり、図4および図5はそれぞれ一般的な人のスケルトンモデルのリンク構造および階層構造を示している。
【0068】
図4において、a〜qが記載されている丸は各関節を示している。各関節a〜qの名称は図5と共通しており、図4においては各名称の記載を省略している。以下の記載でも、各関節a〜qの名称を省略して、例えば、「関節a」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩eと右肘fとが接続されていることを示している。腰関節aはスケルトンモデルの基点(連結構造の基準となる部位)となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節aに限定されるわけではなく、胴関節b、首cや左肩iとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸(首c、胴関節b、腰関節aを結ぶ直線)に位置する点が望ましい。図4に示す矢印は、スケルトンモデルの身長を示している。
【0069】
図5において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨dは、右肩eの親であり、胴関節bの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節a(基点)は1番上位の関節であり、腰関節aの位置はローカル座標系の原点を基準に設定される。
【0070】
プレイヤキャラクタの体のパーツの編集処理は、基準キャラクタのキャラクタデータからプレイヤが使用するプレイヤキャラクタのキャラクタデータを新たに生成したり、生成されたプレイヤキャラクタのキャラクタデータを変更したりすることで行われる。なお、以下では、新たにプレイヤキャラクタのキャラクタデータを生成する場合について説明する。
【0071】
図6は基準キャラクタデータの一例を説明するための図である。
【0072】
基準キャラクタデータは基準キャラクタのキャラクタデータであり、プレイヤが編集機能を用いてプレイヤキャラクタを編集するための元のキャラクタデータである。基準キャラクタデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0073】
図6に示すように、基準キャラクタデータはモデルデータと画像データなどを含んでいる。モデルデータは関節データと身長データを含んでいる。関節データは関節a〜q毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節bのポジションデータは(Xb,Yb,Zb)となっており、リンクデータは親関節である関節aを示す「a」となっている。
【0074】
関節aは基点であって親である関節がないので、リンクデータを有しない。関節aのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節aがローカル座標系の原点の真上(Y軸上)に設定されているので、Xa=Za=0である(図7参照)。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【0075】
図7は、ポジションデータを説明するための図であり、ローカル座標系上の関節a、関節b、および関節hの位置座標を示すものである。
【0076】
関節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)となる。
【0077】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【0078】
身長データは、基準キャラクタの身長を示す情報であり、仮想カメラの位置および撮影方向の補正において用いられる。身長データは、関節c(首)のローカル座標系における位置座標のY座標(すなわち、関節cのローカル座標系の原点からの高さ成分)が関節a,b,cの各ポジションデータから算出されて、予め設定されている。関節a,b,cの各ポジションデータをそれぞれ(Xa,Ya,Za),(Xb,Yb,Zb),(Xc,Yc,Zc)とすると、身長データは下記(1)式で算出することができる。なお、身長データは、関節のポジションデータと下記(1)式とから算出できるので、基準キャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。また、身長データは、別の方法で算出するようにしてもよい。
L=Ya+Yb+Yc ・・・・・ (1)
【0079】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【0080】
図8は、プレイヤキャラクタデータの一例を説明するための図である。
【0081】
プレイヤキャラクタデータは、プレイヤキャラクタのキャラクタデータであり、プレイヤが編集機能を用いて基準キャラクタデータを編集することで作成される。作成されたプレイヤキャラクタデータは、例えばメモリカード15などに記録される。プレイヤが同じプレイヤキャラクタを使用してゲームを行う場合(新たに編集機能を用いてプレイヤキャラクタを作成しない場合)は、メモリカード15に記録されているプレイヤキャラクタデータをRAM111cに読み込んで使用する。
【0082】
プレイヤキャラクタデータは、モデルデータおよび画像データなどを含んでいる。プレイヤキャラクタデータのモデルデータは、基準キャラクタデータのモデルデータをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。
【0083】
モデルデータの各関節のポジションデータはプレイヤによる編集作業によって変更される。例えば、同図においては、関節aのポジションデータは編集によって(Xa’,Ya’,Za’)に変更されている。また、身長データは、編集後の関節a,b,cの各ポジションデータから算出されて設定される。編集後の関節a,b,cの各ポジションデータをそれぞれ(Xa’,Ya’,Za’),(Xb’,Yb’,Zb’),(Xc’,Yc’,Zc’)とすると、身長データは下記(2)式で算出することができる。なお、基準キャラクタの身長データと区別するために、プレイヤキャラクタの身長データはL’で表している。なお、身長データは、関節のポジションデータと下記(2)式とから算出できるので、プレイヤキャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。また、身長データは、別の方法で算出するようにしてもよい。
L’=Ya’+Yb’+Yc’ ・・・・・ (2)
【0084】
プレイヤは、初めてゲームを行うときなどに自分のプレイヤキャラクタを作成するために、編集画面でプレイヤキャラクタの編集を行う。編集画面は、メインメニューで「プレイヤキャラクタの編集」を選択することで開始される。編集画面において、プレイヤは編集するパーツを選択する。選択できるパーツは、例えば、左上腕、左前腕、右上腕、右前腕、左大腿、左下腿、右大腿、右下腿、腹、胸などがある。なお、選択できるパーツはこれらに限られない。本実施形態では、編集画面上に表示されている基準キャラクタの各パーツにカーソルを合わせて所定のボタンを押圧することで、プレイヤはパーツを選択することができる。選択されたパーツは、選択されたことが判るように点滅表示され、編集のためのマーカが表示される。なお、パーツの選択方法はこれに限られず、番号や文字列でパーツを指定して選択するようにしてもよい。
【0085】
次に、プレイヤは、選択したパーツの長さ(長くするか短くするか)およびその太さ(太くするか細くするか)などを調整する。本実施形態では、選択したパーツに表示されているマーカを移動させることで、当該パーツの長さおよび太さを調整する。なお、選択したパーツの調整方法はこれに限られず、直接数字を入力することで調整するようにしてもよい。また、本実施形態では、プレイヤキャラクタが左右対称となるように、編集したパーツに対応するパーツ(例えば、右上腕を編集した場合は左上腕)にも同じ編集が自動的に行われる。なお、これに限られず、左右別々に編集できるようにしてもよい。
【0086】
プレイヤによってプレイヤキャラクタのパーツの長さの編集が行われた場合、プレイヤキャラクタデータの所定の関節のポジションデータが変更される。例えば、右上腕の長さを変更した場合、プレイヤキャラクタの右肘の位置が変化するので、関節f(右肘)のポジションデータが変更される。なお、右肘に対する右手首の相対位置は変化しないので、関節g(右手首)のポジションデータは変更されない。また、プレイヤキャラクタを左右対称とするために、左上腕の長さも自動的に変更されて左肘の位置も変化するので、関節j(左肘)のポジションデータも変更される。
【0087】
大腿、下腿、腹、胸などの長さが変更された場合、プレイヤキャラクタの身長が変化して、身長データL’も変更される。例えば、右大腿の長さを変更した場合、プレイヤキャラクタの右膝の位置が変化するので、関節m(右膝)のポジションデータが変更される。また、プレイヤキャラクタを左右対称とするために、左大腿の長さも自動的に変更されて左膝の位置も変化するので、関節p(左膝)のポジションデータも変更される。そして、プレイヤキャラクタの足が適切に接地するように、関節a(基点)のポジションデータの高さ位置(ローカル座標系におけるY座標)も自動的に変更される。関節aのポジションデータのY座標Ya’が変更されるので、身長データL’も変更される(上記(2)式参照)。なお、プレイヤキャラクタのパーツの太さの編集が行われた場合、プレイヤキャラクタデータの各関節のポジションデータおよび身長データは変更されない。
【0088】
画像データは、基準キャラクタの画像データをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。例えば、編集されたパーツを構成するポリゴンの各頂点の座標は、当該パーツの編集内容に応じて変更される。なお、編集時には画像データを変更せず、編集内容の情報をプレイヤキャラクタデータとして記録しておき、画像生成時に当該編集内容の情報に基づいて画像データを変更して用いるようにしてもよい。また、プレイヤキャラクタデータを記録しておくのではなく、編集内容の情報を記録しておき、必要の都度、基準キャラクタデータと編集内容の情報とからプレイヤキャラクタのモデルデータおよび画像データを算出するようにしてもよい。
【0089】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図8〜図9を参照して説明する。
【0090】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ(図8参照)と基準キャラクタのモーションデータ(図9参照)とを用いて行われる。すなわち、プレイヤキャラクタデータと基準キャラクタのモーションデータに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータをフレーム毎に生成する。スケルトンデータに基づいてプレイヤキャラクタデータの各パーツを三次元仮想ゲーム空間上に配置する。これをフレーム毎に行うことでプレイヤキャラクタに所定の動作を行わせる。
【0091】
図9は、基準キャラクタモーションデータの一例を説明するための図である。
【0092】
基準キャラクタモーションデータは、基準キャラクタのモーションデータであり、基準キャラクタの各動作を再生するためのデータである。基準キャラクタモーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準キャラクタモーションデータは、動作(モーション)毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節a(基点)のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節aの回転角度を示すローテーションデータとが含まれている。また、関節b〜qのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。基準キャラクタモーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ(図8参照)の各関節のポジションデータとから、各関節のローカル座標系における位置を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【0093】
なお、基準キャラクタモーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。
【0094】
スケルトンデータに基づいてプレイヤキャラクタの各パーツが三次元仮想ゲーム空間上に配置されることで、プレイヤキャラクタが三次元仮想ゲーム空間上に配置される。同時に、その他のキャラクタやオブジェクトなども三次元仮想ゲーム空間上に配置される。そして、三次元仮想ゲーム空間上を仮想カメラで撮影することで、二次元画像のゲーム画像が生成される。
【0095】
通常時(例えば、プレイヤキャラクタが単に歩いている場面や、通常の技で敵キャラクタと戦っている場面など)、仮想カメラは所定のオフセット位置(例えば、プレイヤキャラクタの右後方上部の所定の位置など)に配置され、プレイヤキャラクタが画面の中心に位置するように撮影方向が設定される。一方、プレイヤキャラクタが必殺技を繰り出す場合などのデモ映像を撮影する場合には、プレイヤキャラクタにモーションデータに基づいた動作を行わせ、同時に、仮想カメラの位置および撮影方向を仮想カメラモーションデータに基づいて変化させる。仮想カメラモーションデータは、プレイヤキャラクタの動作を迫力ある映像として撮影できるように構図などが考慮されて、ゲーム作製者によってあらかじめ設定されている。
【0096】
図10は、仮想カメラデータの一例を説明するための図である。
【0097】
仮想カメラデータは、通常時の仮想カメラの位置および撮影方向を示すデータである。仮想カメラデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0098】
図10に示すように、仮想カメラデータは、ポジションデータおよびローテーションデータなどを含んでいる。ポジションデータは、仮想カメラの位置を設定するためのデータであり、プレイヤキャラクタのローカル座標系における位置座標が設定されている。ローテーションデータは、仮想カメラの撮影方向を設定するためのデータであり、プレイヤキャラクタのローカル座標系における方向ベクトルが設定されている。
【0099】
なお、仮想カメラの位置および撮影方向を切り替える場合は、切り替える位置および撮影方向毎に仮想カメラデータを用意しておき、プレイヤの操作やゲームの進行に応じて仮想カメラデータを切り替えるようにすればよい。
【0100】
図11は、基準仮想カメラモーションデータの一例を説明するための図である。
【0101】
基準仮想カメラモーションデータは、デモ映像を撮影する場合の、仮想カメラの位置および撮影方向を示すデータである。各基準仮想カメラモーションデータは、各基準キャラクタモーションデータに対応して設定されている。通常、デモ映像のためのプレイヤキャラクタの動作は複数のモーションデータを組み合わせて作成されている。デモ映像の撮影には、それぞれのモーションデータに対応する基準仮想カメラモーションデータが用いられる。
【0102】
図11に示すように、基準仮想カメラモーションデータは、フレーム毎のポジションデータおよびローテーションデータなどを含んでいる。ポジションデータは、仮想カメラの位置を設定するためのデータであり、プレイヤキャラクタのローカル座標系における位置座標が設定されている。ローテーションデータは、仮想カメラの撮影方向を設定するためのデータであり、ローカル座標系における方向ベクトルが設定されている。
【0103】
基準仮想カメラモーションデータは、基準キャラクタが動作を行った場合に適切な構図で撮影できるように設定されている。したがって、プレイヤキャラクタの体型が基準キャラクタと異なる場合、基準仮想カメラモーションデータをそのまま用いても、適切な構図にならない。したがって、本実施形態では、基準仮想カメラモーションデータのポジションデータおよびローテーションデータに、プレイヤキャラクタの身長データに応じた補正を行って用いている。当該「プレイヤキャラクタの身長データ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものであり、基準キャラクタの身長データが本発明の「基準となるオブジェクトの所定部分の大きさ」に対応するものである。また、「身長データ」は本発明の「垂直方向の長さ」に対応するものである。
【0104】
例えば、図1に示す例では、プレイヤキャラクタPCの身長データL’と基準キャラクタの身長データLとの差ΔL=L’−Lを補正値として、基準仮想カメラモーションデータのポジションデータの高さ成分(Y座標値)に加算する。プレイヤキャラクタPCが背の高い体型である場合(図1(b)参照)、ΔL(=L’−L>0)がポジションデータのY座標値に加算されて、仮想カメラCが破線で示す基準カメラ位置よりΔLだけ上方に配置される。また、プレイヤキャラクタPCが背の低い体型である場合(図1(c)参照)、ΔL(=L’−L<0)がポジションデータのY座標値に加算されて(|ΔL|だけ減算されて)、仮想カメラCが破線で示す基準カメラ位置より|ΔL|だけ下方に配置される。また、図1に示す例では、仮想カメラCの撮影方向が敵キャラクタECの頭部を向くように、差ΔLに応じて基準仮想カメラモーションデータのローテーションデータの補正を行っている。この場合、「差ΔL」が本発明の「補正情報」に対応するものである。
【0105】
なお、身長データの差に応じて補正するのではなく、身長データの割合に応じて補正するようにしてもよい。例えば、図1に示す例で、基準キャラクタの身長データLに対するプレイヤキャラクタPCの身長データL’の割合R=L’/Lを補正値として、基準仮想カメラモーションデータのポジションデータの高さ成分(Y座標値)に乗算するようにしてもよい。また、この場合、撮影角度(仮想カメラCの撮影方向が鉛直上方向となす角度)が基準撮影角度αに割合Rを乗算した値となるように、基準仮想カメラモーションデータのローテーションデータの補正を行うようにしてもよい。プレイヤキャラクタPCが背の高い体型である場合(図1(b)参照)、R(=L’/L>1)がポジションデータのY座標値に乗算されて、仮想カメラCが基準カメラ位置より上方に配置される。また、撮影角度α’(=α・R)は、基準撮影角度αより大きくなる。一方、プレイヤキャラクタPCが背の低い体型である場合(図1(c)参照)、R(=L’/L<1)がポジションデータのY座標値に乗算されて、仮想カメラCが基準カメラ位置より下方に配置される。また、撮影角度α”(=α・R)は、基準撮影角度αより小さくなる。この場合、「割合R」が本発明の「補正情報」に対応するものである。
【0106】
なお、仮想カメラCの位置および撮影方向の補正値は、差ΔL=L’−L(または、割合R=L’/L)に応じて連続的に変化させる場合に限られず、段階的に変化させるようにしてもよい。例えば、プレイヤキャラクタの身長が151〜170cmの場合は補正値を「0」とし、150cm以下の場合は負の所定値とし、171cm以上の場合は正の所定値としてもよい。
【0107】
図12は、ゲーム装置1の例えば制御部111および描画処理部112で行われる、デモ映像のためのゲーム画像データを生成する処理(以下では、「デモ画像データ生成処理」とする。)を説明するためのフローチャートである。
【0108】
デモ画像データ生成処理は、フレーム毎に実施される。まず、実行される動作に対応するモーションデータの該当するフレームのデータ(例えば、図9に示すモーション1のフレーム1の処理の場合、ポジションデータα1、ローテーションデータa1、およびローテーションデータb1〜q1)と、プレイヤキャラクタデータ(図8参照)とが、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S1)。次に、入力されたデータからスケルトンデータが生成される(S2)。
【0109】
図13は、スケルトンデータの一例を説明するための図である。
【0110】
スケルトンデータは、各関節の位置データ(ポジションデータ)および親である関節を示すデータ(リンクデータ)を含んでいる。関節a(基点)のデータには、ポジションデータのみが含まれている。関節aのポジションデータは、ローカル座標系における関節aの位置座標であり、基準キャラクタモーションデータの関節aのポジションデータと、基準キャラクタの脚の長さ(大腿と下腿を合わせた長さ)に対するプレイヤキャラクタの脚の長さの比率Tとから算出される。具体的には、基準キャラクタモーションデータの関節aのポジションデータの各座標成分に比率Tを乗算したものが、補正前スケルトンデータの関節aのポジションデータの各座標成分となる。なお、比率Tは、標準姿勢をとった基準キャラクタおよびプレイヤキャラクタの脚の長さから算出されるが、詳細は省略する。
【0111】
例えば、図9に示すモーション1のフレーム1の処理の場合、スケルトンデータの関節aのポジションデータは、ポジションデータα1が(Xα1,Yα1,Zα1)の場合、(Xα1・T,Yα1・T,Zα1・T)となる。ローカル座標系の鉛直方向を示すY座標の値が基準キャラクタモーションデータにおける値に比率Tを乗じた値となっているので、関節aの高さ位置がプレイヤキャラクタの脚の長さに応じた位置となっている。これにより、プレイヤキャラクタの足が適切に地面に接するようになる。
【0112】
関節b〜qのデータには、ポジションデータおよびリンクデータが含まれている。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節b〜qのポジションデータと基準キャラクタモーションデータの関節b〜qのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節b〜qのリンクデータは、プレイヤキャラクタデータの関節b〜qのリンクデータを用いる。
【0113】
図12に戻って、ステップS2で生成されたスケルトンデータのワールド座標変換が行われる(S3)。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップS3のワールド座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【0114】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き(正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き)を示すデータであり、RAM111cに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが走って移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として走るモーションが実行される。当該走るモーションが終了したとき(最後のフレームが処理されたとき)のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが走って移動している間、走るモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【0115】
次に、プレイヤキャラクタ以外のキャラクタやオブジェクトの画像データが読み出されて、ワールド座標変換が行われる(S4)。他のキャラクタが動作を行っている場合は、対応するモーションデータに基づいた処理もなされる。この場合、他のキャラクタのキャラクタデータとして、基準キャラクタデータ(図6参照)を変更したものを用いるようにしてもよいし、別途設けられている基準キャラクタデータやこれを変更したものを用いるようにしてもよい。また、他のキャラクタの動作のためのモーションデータは、基準キャラクタモーションデータ(図9参照)を用いるようにしてもよいし、別途設けられているモーションデータを用いるようにしてもよい。
【0116】
次に、基準仮想カメラモーションデータの対応するフレームのデータ(例えば、図11に示すモーション1のフレーム1の処理の場合、ポジションデータβ1およびローテーションデータw1)が、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S5)。当該データも、ワールド座標変換される。次に、プレイヤキャラクタデータの身長データに応じて、基準仮想カメラモーションデータのポジションデータおよびローテーションデータが補正される(S6)。
【0117】
次に、仮想カメラの補正後のポジションデータおよびローテーションデータに基づいて、各画像データの投影変換が行われて(S7)、デモ画像データ生成処理は終了される。
【0118】
投影変換された各画像データからなるゲーム画像データが映像信号としてモニタ13に出力される。これをフレーム毎に繰り返すことで、デモ映像が表示される。
【0119】
本実施形態によると、基準仮想カメラモーションデータのポジションデータの高さ成分に、プレイヤキャラクタPCの身長データL’と基準キャラクタの身長データLとの差ΔL=L’−Lが補正値として加算される。これにより、仮想カメラCの位置がプレイヤキャラクタPCの身長に応じて補正される。また、仮想カメラCの撮影方向は、差ΔLに応じて、敵キャラクタECの頭部を向くように補正される。したがって、プレイヤキャラクタPCの身長に係わらず、ゲーム作製者が想定した構図と同様の構図でゲーム画像を生成することができる。また、基準仮想カメラモーションデータを補正して用いるので、身長の異なるプレイヤキャラクタPC毎に仮想カメラCのモーションデータを作成して記録しておく必要がない。したがって、ゲーム開発時の仮想カメラモーションデータ作成の作業量を抑制することができるので、開発コストを抑制することができる。また、仮想カメラモーションデータを記憶しておくためのRAMの記憶領域の増大を抑制することができる。
【0120】
なお、上記実施形態では、編集機能によって編集されたプレイヤキャラクタの身長が変化する場合について説明したが、これに限られない。例えば、予め用意された身長の異なる複数のプレイヤキャラクタの中から、プレイヤがプレイヤキャラクタを選択する場合にも、本発明を適用することができる。
【0121】
また、装着した装備品によってプレイヤキャラクタの身長(すなわち、装備品を装着した状態のプレイヤキャラクタの垂直方向の長さ)が変化する場合にも、本発明を適用することができる。この場合、身長差であるΔL(=L’−L)に、装備品によって変化する高さの値を加えたものを、補正値として用いればよい。例えば、プレイヤキャラクタが兜を装着している場合、兜の高さに基づく値をΔLに加算して、補正値とすればよい。また、プレイヤキャラクタが所持する槍が基準キャラクタが所持する槍より長い場合、槍の長さの差をΔLに加算して、補正値としてもよい。
【0122】
上記実施形態では、デモ映像のためのゲーム画像データを生成する場合について説明したが、これに限られない。通常時のゲーム画像データを生成する場合にも、本発明を適用することができる。例えば、仮想カメラがプレイヤキャラクタの後方から追従する客観視点形式(サードパーソンシューティング)では、仮想カメラのオフセット位置が所定のプレイヤキャラクタに基づいた位置に設定される。この場合、プレイヤキャラクタの身長が高くなるように編集されると、プレイヤキャラクタの一部が画面からはみ出すなどして、ゲーム作製者の想定した構図でプレイヤキャラクタを表示することができなくなる。このような場合にも、プレイヤキャラクタの身長に応じて仮想カメラの位置および撮影方向を補正することは有効である。
【0123】
一方、仮想カメラの位置をプレイヤキャラクタの視点位置に設定する主観視点形式(ファーストパーソンシューティング)では、デモ映像または通常時のゲーム画像データを生成するとき、通常時の仮想カメラのオフセット位置が、基準となるプレイヤキャラクタに基づいた位置(目の位置)に設定される。この場合、プレイヤキャラクタの身長が高くなるように編集されると、実際に表示されるゲーム画像が、当該プレイヤキャラクタの身長にあった目線の高さで三次元仮想ゲーム空間を見た場合のゲーム画像と一致しなくなる。このような場合にも、プレイヤキャラクタの身長に応じて仮想カメラの位置および撮影方向を補正することは有効である。
【0124】
上記実施形態では、仮想カメラの位置および撮影方向を補正する場合について説明したが、これに限られない。仮想カメラの位置のみを補正するようにしてもよいし、仮想カメラの撮影方向のみを補正するようにしてもよい。
【0125】
上記実施形態では、プレイヤキャラクタの身長に応じて補正する場合について説明したが、これに限られない。プレイヤキャラクタ以外のキャラクタの身長に応じて補正するようにしてもよい。また、プレイヤキャラクタの身長に応じた補正と、他のキャラクタの身長に応じた補正とを、重ねて行うようにしてもよい。
【0126】
図14は、敵キャラクタの身長に応じて仮想カメラの撮影方向を補正する場合の例を説明するための図である。
【0127】
図14(a)は、図1(a)と同様の状態において、敵キャラクタECが身長の高い体型である場合を示している。この場合、仮想カメラCの配置場所は基準カメラ位置(図において破線で示す仮想カメラCの位置)から変更されていないが、仮想カメラCの撮影方向が敵キャラクタECの身長と基準キャラクタの身長との差に応じて補正され、撮影角度βが基準撮影角度αより小さくなっている。この場合、仮想カメラCで撮影された画像は、図17(a)に近い構図となる。
【0128】
図14(b)は、図1(a)と同様の状態において、プレイヤキャラクタPCおよび敵キャラクタECがともに身長の高い体型である場合を示している。この場合、仮想カメラCは、プレイヤキャラクタPCの身長と基準キャラクタの身長との差に応じて、基準カメラ位置(図において破線で示す仮想カメラCの位置)より高い位置に配置されている。また、仮想カメラCの撮影角度は、プレイヤキャラクタPCの身長と基準キャラクタの身長との差に応じて大きくなるように補正され、さらに、敵キャラクタECの身長と基準キャラクタの身長との差に応じて小さくなるように補正されるので、結果的に基準撮影角度αと同じ角度になっている。この場合も、仮想カメラCで撮影された画像は、図17(a)に近い構図となる。
【0129】
また、キャラクタの身長に応じて補正する場合に限られず、オブジェクトの高さに応じて補正するようにしてもよい。例えば、ゲーム画像に所定のオブジェクトを表示させたい場合に、当該オブジェクトの高さに応じて仮想カメラの位置や撮影方向を補正するようにしてもよい。この場合、「オブジェクトの高さ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0130】
上記実施形態では、一人のキャラクタの身長に応じて補正する場合について説明したが、これに限られず、複数のキャラクタの身長に応じて補正するようにしてもよい。この場合、例えば、各キャラクタの身長の平均値に応じて、仮想カメラの位置や撮影方向を補正するようにすればよい。
【0131】
図15は、複数の敵キャラクタの身長に応じて仮想カメラの位置を補正する場合の例を説明するための図である。
【0132】
図15(a)は、敵キャラクタEC1〜EC3の身長がいずれも基準キャラクタの身長と同じ場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長と同一なので、仮想カメラの位置は補正されていない。
【0133】
図15(b)は、敵キャラクタEC1およびEC3の身長が基準キャラクタの身長と同じであるが、敵キャラクタEC2の身長が基準キャラクタの身長より高い場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長より大きいので、仮想カメラは基準カメラ位置より高い位置に配置されている。したがって、敵キャラクタEC1〜EC3が、図15(a)の場合と比べて、画面上で下方に位置するように表示されている。これにより、図15(a)の構図に近い構図となっている。仮に、敵キャラクタEC1の身長のみに応じて仮想カメラの位置を補正した場合、敵キャラクタEC1の身長は基準キャラクタの身長と同じであるので仮想カメラの位置の補正が行われず、敵キャラクタEC2の頭の先が画面からはみ出して表示されることになる。一方、敵キャラクタEC2の身長のみに応じて仮想カメラの位置を補正した場合、仮想カメラは基準カメラ位置よりかなり高い位置に配置され、敵キャラクタEC1〜EC3の脚の先が画面からはみ出して表示されることになる。
【0134】
図15(c)は、敵キャラクタEC1の身長が基準キャラクタの身長と同じであるが、敵キャラクタEC2およびEC3の身長が基準キャラクタの身長より低い場合に、仮想カメラで撮影された画像を示している。この場合、敵キャラクタEC1〜EC3の身長の平均値は基準キャラクタの身長より小さいので、仮想カメラは基準カメラ位置より低い位置に配置されている。したがって、敵キャラクタEC1〜EC3が、図15(a)の場合と比べて、画面上で上方に位置するように表示されている。これにより、図15(a)の構図に近い構図となっている。仮に、敵キャラクタEC1の身長のみに応じて仮想カメラの位置を補正した場合、敵キャラクタEC1の身長は基準キャラクタの身長と同じであるので仮想カメラの位置の補正が行われず、敵キャラクタEC2およびEC3が画面の下方に表示されることになる。一方、敵キャラクタEC2の身長のみに応じて仮想カメラの位置を補正した場合、仮想カメラは基準カメラ位置よりかなり低い位置に配置され、敵キャラクタEC1の頭の先が画面からはみ出して表示されることになる。
【0135】
なお、図15の例においては、仮想カメラの位置のみを補正する場合について説明したが、合わせて仮想カメラの撮影方向も補正するようにしてもよい。
【0136】
上記実施形態では、プレイヤキャラクタの身長に応じて補正する場合について説明したが、キャラクタの身長以外の要素に応じて補正するようにしてもよい。例えば、プレイヤキャラクタの肩幅などに応じて、仮想カメラの水平位置を補正するようにしてもよい。この場合、プレイヤキャラクタの肩幅が広く(体型が横に大きい)なるように編集されていても、仮想カメラの水平位置が補正されるので、プレイヤキャラクタの体が仮想カメラによる撮影の邪魔になることを抑制し、ゲーム作製者が想定した構図に近い構図にすることができる。この場合、「プレイヤキャラクタの肩幅」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0137】
また、例えば、仮想カメラの位置をプレイヤキャラクタの視点位置として、プレイヤキャラクタが腕を伸ばして手の平を見ている場合のゲーム画像の生成においては、プレイヤキャラクタの腕の長さに応じて仮想カメラの撮影方向を補正するようにしてもよい。この場合、プレイヤキャラクタの腕の長さが編集されていても、手の平が画面の適切な位置にくるように表示することができる。この場合、「プレイヤキャラクタの腕の長さ」が本発明の「オブジェクトの所定部分の大きさ」に対応するものである。
【0138】
上記では、プレイヤキャラクタの身長に応じて仮想カメラの高さ位置を補正する場合や、プレイヤキャラクタの肩幅などに応じて仮想カメラの水平位置を補正する場合など、編集によって長さが変わる方向と同じ方向に仮想カメラの位置を変化させる場合について説明したが、これに限られない。例えば、プレイヤキャラクタの身長(または肩幅)に応じて、仮想カメラとプレイヤキャラクタとの距離を離す方向(プレイヤキャラクタのローカル座標系のZ軸の負方向)に仮想カメラの位置を補正するようにしてもよい。この場合、プレイヤキャラクタの身長が長く(肩幅が広く)なるように編集されていても、仮想カメラの位置がプレイヤキャラクタから離れるように補正されるので、プレイヤキャラクタの体の一部が画面からはみ出すなどの不都合を抑制して、ゲーム作製者が想定した構図に近い構図にすることができる。
【0139】
また、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正するようにしてもよい。
【0140】
プレイヤキャラクタが敵キャラクタを倒したときのデモ映像を仮想カメラモーションデータを用いて撮影する場合、敵キャラクタが倒れた位置によっては、ゲーム作製者が想定した構図にならない場合がある。例えば、敵キャラクタがプレイヤキャラクタの体に隠れてしまう場合がある。この問題を解消するために、敵キャラクタが倒れた位置によって異なる仮想カメラモーションデータをあらかじめ作成することは、データ作成のための作業量が増大し、記録するデータ量が膨大になることから、現実的でない。このような問題を解決するために、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正して用いるようにしてもよい。
【0141】
図16は、プレイヤキャラクタと敵キャラクタの位置関係に応じて、仮想カメラの位置および撮影方向を補正する場合の例を説明するための図である。図16では、プレイヤキャラクタが敵キャラクタを倒したときのデモ映像を撮影する場合を例としており、倒された敵キャラクタとプレイヤキャラクタとがゲーム画像に表示されるように仮想カメラの位置および撮影方向を補正する場合について説明する。
【0142】
図16(a)は三次元仮想ゲーム空間を上から見た図であり、プレイヤキャラクタPCおよび敵キャラクタECの位置と仮想カメラCの位置および撮影方向とが示されている。図の右側の矢印は、プレイヤキャラクタPCのローカル座標系を示しており、紙面裏から表の方向がY軸の正方向である。点P1はプレイヤキャラクタPCの左前方にあらかじめ設定されている点を示している。点P2は敵キャラクタECの基準の位置である。敵キャラクタECが点P2の位置に倒れている場合を基準として、仮想カメラCの位置を示す点P3があらかじめ設定されている。点P3は、点P1を中心とした所定半径の円Eと、点P1と点P2とを結ぶ直線とが交わる点のうち、点P2から離れた位置にある点である。敵キャラクタECが点P2の位置に倒れている場合、仮想カメラCは点P3に配置され、点P3から点P1に向かう方向を撮影方向として撮影を行う。図16(b)はこの場合のデモ映像の1コマを示しており、倒された敵キャラクタECとプレイヤキャラクタPCとがゲーム画像に表示されている。
【0143】
敵キャラクタECが倒れる場所は、プレイヤキャラクタPCとの戦いの状況によるので、一定していない。すなわち、敵キャラクタECは、必ずしも点P2の位置に倒れるわけではない。敵キャラクタECが点P2以外の位置に倒れている場合、倒れている位置(プレイヤキャラクタPCの位置に対する相対位置)に応じて、仮想カメラCの位置が点P3から補正され、撮影方向が点P3から点P1に向かう方向から補正される。例えば、敵キャラクタECが点P2’の位置に倒れている場合、点P1と点P2’とを結ぶ直線と円Eとが交わる点のうち、点P2’から離れた位置にある点P3’が演算され、仮想カメラCの位置が点P3から点P3’に補正される。また、撮影方向が点P3’から点P1に向かう方向に補正される。
【0144】
図16(c)はこの場合のデモ映像の1コマを示している。図16(c)に示す画像では、倒された敵キャラクタECとプレイヤキャラクタPCとが、図16(b)に示す構図と同様の構図で表示されている。仮に、仮想カメラCの位置および撮影方向が補正されなかった場合(すなわち、仮想カメラCが点P3に配置され、点P3から点P1に向かう方向を撮影方向として撮影を行った場合)、敵キャラクタECはプレイヤキャラクタPCの体に隠れて表示されなくなり、図16(b)に示す構図と全く異なる構図になる。
【0145】
このように、敵キャラクタECとプレイヤキャラクタPCとの位置関係に応じて仮想カメラCの位置および撮影方向を補正することで、ゲーム作製者が想定した構図と同様の構図でゲーム画像を生成することができる。また、基準となる仮想カメラCの位置および撮影方向(図16の例では、点P3の位置および点P3から点P1に向かう方向)を補正して用いるので、敵キャラクタECの位置毎に仮想カメラCの位置および撮影方向の情報を作成して記録しておく必要がない。図16の例の場合、「プレイヤキャラクタPCの位置に対する敵キャラクタECの相対位置」が本発明の「オブジェクトの他のオブジェクトに対する相対位置の情報」に対応するものである。
【0146】
なお、上記図16の例では、三次元仮想ゲーム空間を上から見た図(図16(a)参照)を用いて、高さの要素を考慮せずに説明した。敵キャラクタECの倒れている位置の高さが変化する場合、仮想カメラCの位置および撮影方向の補正において、高さ方向の補正も行うようにしてもよい。この場合、円Eの代わりに点P1を中心とした所定半径の球に基づいて仮想カメラCの位置を補正すればよい。また、図16の例の場合でも、仮想カメラCの位置および撮影方向を、プレイヤキャラクタPCの身長データに応じて補正するようにしてもよい。
【0147】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、RPG(ロールプレイングゲーム)、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。例えば、野球ゲームであれば、ピッチャーまたはバッターのキャラクタの体型に基づいて仮想カメラの位置および撮影方向を補正することができる。また、ピッチャー、バッター、キャッチャー、審判などの複数のキャラクタの体型の平均に基づいて仮想カメラの位置および撮影方向を補正することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはCPUの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【0148】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【0149】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。本発明は、三次元仮想空間上のオブジェクトを仮想カメラで撮影した画像を表示するあらゆるプログラムに適用することができる。
【0150】
なお、本発明は、ゲーム実行時における映像の生成などに用いられるだけでなく、ゲームの開発時にも用いることができる。例えば、ゲーム作成者がゲームを開発する際に、体型の異なる複数のキャラクタを使って、それぞれの動作を確認する場合などにも用いることができる。このとき、一連の動作の映像としてではなく、フレーム毎の画像としても確認できるようにしてもよい。
【0151】
本発明に係るプログラムおよび画像処理装置は、上述した実施形態に限定されるものではない。本発明に係るプログラムおよび画像処理装置の具体的な構成は、種々に設計変更自在である。
【符号の説明】
【0152】
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】
三次元仮想空間に配置されるオブジェクトの画像を表示装置に表示させる画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
記録部にあらかじめ記録されている、基準となる基準オブジェクトを撮影するために設定された仮想カメラの基準位置および基準撮影方向を読み出す読出手段と、
前記基準オブジェクトの所定部分の大きさに対する前記オブジェクトの前記所定部分の大きさに関する情報である補正情報を演算する演算手段と、
前記演算手段によって演算された補正情報に応じて、前記読出手段によって読み出された前記基準位置および基準撮影方向の少なくとも一方を補正する補正手段と、
補正後の仮想カメラの位置および撮影方向を、前記オブジェクトを撮影するための仮想カメラの位置および撮影方向として設定する設定手段と、
して機能させることを特徴とするプログラム。
【請求項2】
前記演算手段は、前記基準オブジェクトの垂直方向の長さに対する前記オブジェクトの垂直方向の長さに関する情報を前記補正情報として演算する、
請求項1に記載のプログラム。
【請求項3】
前記補正手段は、前記補正情報に応じて前記基準位置の垂直成分および基準撮影方向の垂直成分の少なくとも一方を補正する、
請求項1または2に記載のプログラム。
【請求項4】
前記オブジェクトは複数のオブジェクトであり、
前記演算手段は、前記基準オブジェクトの前記所定部分の大きさに対する前記複数のオブジェクトのそれぞれの所定部分の平均の大きさに関する情報を前記補正情報として演算する、
請求項1ないし3のいずれかに記載のプログラム。
【請求項5】
前記オブジェクト以外の他のオブジェクトが前記三次元仮想空間に配置されており、
前記演算手段は、さらに前記オブジェクトの前記他のオブジェクトに対する相対位置の情報を演算し、
前記補正手段は、前記相対位置の情報に応じて前記基準位置および基準撮影方向の少なくとも一方を補正する、
請求項1ないし4のいずれかに記載のプログラム。
【請求項6】
前記基準位置および基準撮影方向は、前記記録部にフレームごとに記録されており、
前記読出手段は、前記基準位置および基準撮影方向を、フレームごとに読み出し、
前記補正手段は、前記補正情報に応じて、前記読出手段によって読み出されたフレームごとの前記基準位置および基準撮影方向を補正する、
請求項1ないし5のいずれかに記載のプログラム。
【請求項7】
請求項1ないし6のいずれかに記載のプログラムを記録したプログラム記録部と、
前記プログラム記録部に記録されたプログラムを実行するコンピュータと、
を備えていることを特徴とする画像処理装置。
【請求項1】
三次元仮想空間に配置されるオブジェクトの画像を表示装置に表示させる画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
記録部にあらかじめ記録されている、基準となる基準オブジェクトを撮影するために設定された仮想カメラの基準位置および基準撮影方向を読み出す読出手段と、
前記基準オブジェクトの所定部分の大きさに対する前記オブジェクトの前記所定部分の大きさに関する情報である補正情報を演算する演算手段と、
前記演算手段によって演算された補正情報に応じて、前記読出手段によって読み出された前記基準位置および基準撮影方向の少なくとも一方を補正する補正手段と、
補正後の仮想カメラの位置および撮影方向を、前記オブジェクトを撮影するための仮想カメラの位置および撮影方向として設定する設定手段と、
して機能させることを特徴とするプログラム。
【請求項2】
前記演算手段は、前記基準オブジェクトの垂直方向の長さに対する前記オブジェクトの垂直方向の長さに関する情報を前記補正情報として演算する、
請求項1に記載のプログラム。
【請求項3】
前記補正手段は、前記補正情報に応じて前記基準位置の垂直成分および基準撮影方向の垂直成分の少なくとも一方を補正する、
請求項1または2に記載のプログラム。
【請求項4】
前記オブジェクトは複数のオブジェクトであり、
前記演算手段は、前記基準オブジェクトの前記所定部分の大きさに対する前記複数のオブジェクトのそれぞれの所定部分の平均の大きさに関する情報を前記補正情報として演算する、
請求項1ないし3のいずれかに記載のプログラム。
【請求項5】
前記オブジェクト以外の他のオブジェクトが前記三次元仮想空間に配置されており、
前記演算手段は、さらに前記オブジェクトの前記他のオブジェクトに対する相対位置の情報を演算し、
前記補正手段は、前記相対位置の情報に応じて前記基準位置および基準撮影方向の少なくとも一方を補正する、
請求項1ないし4のいずれかに記載のプログラム。
【請求項6】
前記基準位置および基準撮影方向は、前記記録部にフレームごとに記録されており、
前記読出手段は、前記基準位置および基準撮影方向を、フレームごとに読み出し、
前記補正手段は、前記補正情報に応じて、前記読出手段によって読み出されたフレームごとの前記基準位置および基準撮影方向を補正する、
請求項1ないし5のいずれかに記載のプログラム。
【請求項7】
請求項1ないし6のいずれかに記載のプログラムを記録したプログラム記録部と、
前記プログラム記録部に記録されたプログラムを実行するコンピュータと、
を備えていることを特徴とする画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2012−174089(P2012−174089A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−36781(P2011−36781)
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000129149)株式会社カプコン (192)
【Fターム(参考)】
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願日】平成23年2月23日(2011.2.23)
【出願人】(000129149)株式会社カプコン (192)
【Fターム(参考)】
[ Back to top ]