(57)【特許請求の範囲】
【請求項１】
仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理装置であって、
現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定部と、
前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定部と、
前記視線設定部により設定された視線を中心として前記仮想カメラの画角を設定する画角設定部と、
前記画角設定部により設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成部とを備え、
前記画角設定部は、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる画像処理装置。
【請求項２】
前記画角設定部は、フレーム毎に前記投影点が前記外周領域に位置するか否かを判定し、前記投影点が前記外周領域に位置すると判定した場合、前記投影点が前記中央領域に入るフレームになるまで、前記画角を漸次に増大させる請求項１記載の画像処理装置。
【請求項３】
前記キャラクタは、前記仮想３次元空間に規定された水平面上を移動するものであり、
前記キャラクタの位置は前記キャラクタの所定の部位の位置であり、
前記位置推定部は、前記現フレームでの前記キャラクタの水平座標と、前記現フレームでの前記予測移動速度に１又は複数フレーム周期の時間を乗じた値との和を前記移動推定位置の水平座標として求めると共に、前記現フレームでの前記キャラクタの位置の前記水平面からの高さを示す鉛直座標を前記移動推定位置の鉛直座標として求める請求項１又は２記載の画像処理装置。
【請求項４】
前記キャラクタは、人間を模擬したスケルトンモデルであり、
前記スケルトンモデルは、複数のボーンと各ボーンを繋ぐノードとを含み、
前記所定の部位は、鼻であり、
前記位置推定部は、前記鼻の部位に最も近い所定の基準ノードからの鼻の方向を、前記スケルトンモデルの姿勢から特定し、前記基準ノードから特定した鼻の方向に向けて所定のオフセットを加えることで、前記鼻の位置を算出する請求項３記載の画像処理装置。
【請求項５】
前記画角設定部は、前記画角を増大させてから所定期間が経過するまでの間、継続的に前記移動推定位置の前記仮想スクリーンへの投影点が前記中央領域内に位置している場合に、前記画角を減少させる請求項１〜４のいずれかに記載の画像処理装置。
【請求項６】
前記視線設定部は、各フレームにおいて、前記仮想スクリーンの中心を起点とし、前記移動推定位置の前記仮想スクリーンへの投影点を終点とする視線ずれベクトルを求め、
前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルよりも大きい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量よりも大きくなるように前記次フレームの視線を設定し、
前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルよりも小さい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量よりも小さくなるように前記次フレームの視線を設定し、
前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルと等しい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量と同じになるように前記次フレームの視線を設定する請求項１〜５のいずれかに記載の画像処理装置。
【請求項７】
前記視線設定部は、前記キャラクタが停止し、かつ、前記仮想のカメラの視線の移動量が規定値以下の場合、現在の移動量で前記視線を変化させ、前記キャラクタと交差する位置で前記視線を停止させる請求項６記載の画像処理装置。
【請求項８】
前記視線設定部は、前記現フレームで求めた視線ずれベクトルから、前記前フレームで求めた視線ずれベクトルを差し引くことで差分ベクトルを求め、前記差分ベクトルと同じ向きを持ち、かつ、前記差分ベクトルの大きさに応じた値を持つベクトルを前記現フレームの視線の加速度ベクトルとして設定し、設定した加速度ベクトルを用いて前記現フレームから前記次フレームへの視線の移動量を求める請求項６又は７記載の画像処理装置。
【請求項９】
キャラクタが向きを突然変えた場合、
前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルに対して反対側を向いた場合、前記視線ずれベクトルの大きさが規定値以下のフレームになるまで、前記現フレームで求めた視線の加速度で前記視線を移動させる請求項８記載の画像処理装置。
【請求項１０】
仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理プログラムであって、
現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定部と、
前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定部と、
前記視線設定部により設定された視線を中心として前記仮想カメラの画角を設定する画角設定部と、
前記画角設定部により設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成部としてコンピュータを機能させ、
前記画角設定部は、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる画像処理プログラム。
【請求項１１】
仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理方法であって、
コンピュータが、現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定ステップと、
コンピュータが、前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定ステップと、
コンピュータが、前記視線設定ステップにより設定された視線を中心として前記仮想カメラの画角を設定する画角設定ステップと、
コンピュータが、前記画角設定ステップにより設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成ステップとを備え、
前記画角設定ステップは、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理技術に関するものである。
【背景技術】
【０００２】
近年、３次元コンピュータアニメーションを用いてキャラクタを表示装置の画面上に表示するゲーム装置が広く普及している。このようなゲーム装置では、仮想３次元空間内に仮想カメラを設定し、プレーヤの操作によって移動されるキャラクタに合わせて仮想カメラの視線が移動され、キャラクタが画面上からフレームアウトすることが防止されている。
【０００３】
仮想３次元空間にはキャラクタ以外の壁等の障害物も多数存在する。この場合、仮想カメラから見てキャラクタが障害物の奥側に移動すると、キャラクタが画面上に表示されない事態が発生する。これを防止するために、特許文献１では、視点とキャラクタとを結ぶ視線上に障害物がある場合、視線と障害物のキャラクタ側の面との交点に視点を設定し、障害物が邪魔になってキャラクタが画面上に表示されなくなることを防止するビデオゲーム装置が開示されている。
【０００４】
ところで、現実のプロ野球のテレビ中継等においては、カメラの視界内にいた選手が突然に動きだした場合、カメラの視線が移動する選手に追いつけず、選手がカメラの視界からはみ出そうになることがある。この場合、カメラマンは選手を追いかけるようにして視線を大きく移動させたり、カメラの画角を増大させたりすることによって、選手がカメラの視界内に収まるように操作する。
【０００５】
このような、実際のカメラワークをゲーム内に取り込むことができれば、プレーヤに対して実際の野球のテレビ中継を見ているような感覚を与えることができ、ゲームのリアル性をより高めることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１３５８４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１のビデオゲーム装置では、このような実際のカメラマンのカメラワークをゲーム内に全く取り入れられていないため、リアル性に欠けるという問題がある。
【０００８】
また、近年、ゲームにおいては、実際にプレーヤがゲームを開始する前にゲームの概要を映像表示するデモ画像が表示されることが一般的である。このようなデモ画像においてもカメラマンのカメラワークを模擬した画像が表示されると、リアル性が増し、プレーヤのゲームへの意欲をより喚起することが期待できる。
【０００９】
本発明の目的は、３次元コンピュータアニメーションにおいて、実際のカメラマンのカメラワークを模擬した画像を表示画面上に表示することができる画像処理装置を提供することである。
【課題を解決するための手段】
【００１０】
（１）本発明による画像処理装置は、仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理装置であって、現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定部と、前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定部と、前記視線設定部により設定された視線を中心として前記仮想カメラの画角を設定する画角設定部と、前記画角設定部により設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成部とを備え、前記画角設定部は、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる。
【００１１】
本発明による画像処理プログラムは、仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理プログラムであって、現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定部と、前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定部と、前記視線設定部により設定された視線を中心として前記仮想カメラの画角を設定する画角設定部と、前記画角設定部により設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成部としてコンピュータを機能させ、前記画角設定部は、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる。
【００１２】
本発明による画像処理方法は、仮想３次元空間内を移動するキャラクタを所定のフレーム周期で仮想スクリーンに投影する画像処理方法であって、コンピュータが、現フレームより過去のフレームにおける前記キャラクタの移動速度を用いて前記現フレームでの前記キャラクタの予測移動速度を求め、前記予測移動速度と前記現フレームでの前記キャラクタの現在位置とを用いて、前記キャラクタが１又は複数フレーム後に移動すると推定される前記仮想３次元空間内での移動推定位置を求める位置推定ステップと、コンピュータが、前記仮想３次元空間の所定の位置に配置された仮想カメラの視線が前記移動推定位置の変化に追従するように前記次フレームの視線を設定する視線設定ステップと、コンピュータが、前記視線設定ステップにより設定された視線を中心として前記仮想カメラの画角を設定する画角設定ステップと、コンピュータが、前記画角設定ステップにより設定された画角に従って前記仮想３次元空間内に前記仮想スクリーンを設定し、設定した仮想スクリーンに前記キャラクタを投影して２次元の投影画像データを生成する投影画像生成ステップとを備え、前記画角設定ステップは、前記位置推定部により推定された移動推定位置の前記仮想スクリーンへの投影点が前記仮想スクリーン内の外周に設けられた所定の外周領域に位置する場合、前記投影点を前記外周領域の内側の中央領域に位置させるために前記画角を増大させる。
【００１３】
これらの構成によれば、現フレームでのキャラクタの移動速度ではなく、予測移動速度を用いて移動推定位置が算出されている。したがって、移動推定位置は、キャラクタが数フレーム後に移動するであろうと、実際のカメラマンが推定する位置を表すことができる。これにより、実際のカメラマンがカメラの視線を動かす際の目標位置をシミュレートとすることができる。
【００１４】
そして、移動推定位置の仮想スクリーンへの投影点が外周領域に侵入すると、移動推定位置が画面の中央に寄るように仮想カメラの画角が増大される。これにより、実際のカメラマンのカメラワークをリアルに模擬することができる。
【００１５】
つまり、実際の野球のＴＶ中継において、カメラマンは、選手の動きを予測し、選手がカメラの視界から外れないようにカメラの向きや画角を調節する。そして、選手が突然予想外の動きを示し、選手がカメラの視界から消えそうになると、あわててカメラの画角を増大させるといったカメラワークを行う。したがって、上記構成を採用することで、このような実際のカメラマンのカメラワークを模擬した画像を表示画面上にすることができる。
【００１６】
また、上記構成では、実際のキャラクタの位置ではなく、移動推定位置に追従するように視線が設定されているため、視線を実際のキャラクタの動きに対して少し遅れて追従させることができ、実際のカメラワークをリアルに模擬することができる。
【００１７】
（２）前記画角設定部は、フレーム毎に前記投影点が前記外周領域に位置するか否かを判定し、前記投影点が前記外周領域に位置すると判定した場合、前記投影点が前記中央領域に入るフレームになるまで、前記画角を漸次に増大させることが好ましい。
【００１８】
この構成によれば、移動推定位置の投影点が外周領域に侵入すると、フレームが更新される毎に投影点が外周領域に位置しているか否かが判定され、投影点が中央領域内に入るフレームになるまで、画角が漸次に増大される。そのため、投影点が外周領域に位置した場合に一挙に画角を増大させて投影点を中央領域に位置させる構成に比べて、画角をなだらかに変化することができ、実際のカメラワークをよりリアルに模擬することができる。
【００１９】
（３）前記キャラクタは、前記仮想３次元空間に規定された水平面上を移動するものであり、前記キャラクタの位置は前記キャラクタの所定の部位の位置であり、前記位置推定部は、前記現フレームでの前記キャラクタの水平座標と、前記現フレームでの前記予測移動速度に１又は複数フレーム周期の時間を乗じた値との和を前記移動推定位置の水平座標として求めると共に、前記現フレームでの前記キャラクタの位置の前記水平面からの高さを示す鉛直座標を前記移動推定位置の鉛直座標として求めることが好ましい。
【００２０】
この構成によれば、移動推定位置の水平座標は、予測移動速度を用いて算出されているが、移動推定位置の鉛直座標は、キャラクタの位置の鉛直座標がそのまま用いられている。そのため、水平面に沿って移動するキャラクタの移動推定位置の算出処理の処理負担を軽減しつつ、ある程度の精度が維持されるように移動推定位置を算出することができる。
【００２１】
（４）前記キャラクタは、人間を模擬したスケルトンモデルであり、前記スケルトンモデルは、複数のボーンと各ボーンを繋ぐノードとを含み、前記所定の部位は、鼻であり、前記位置推定部は、前記鼻の部位に最も近い所定の基準ノードからの鼻の方向を、前記スケルトンモデルの姿勢から特定し、前記基準ノードから特定した鼻の方向に向けて所定のオフセットを加えることで、前記鼻の位置を算出することが好ましい。
【００２２】
スケルトンモデルでは鼻は関節ではないため、鼻の位置にノードが設定されないのが一般的である。上記構成によれば、キャラクタの姿勢に基づいて、鼻の位置に最も近い基準ノードから鼻の方向が特定され、基準ノードから鼻の方向に向けて所定のオフセットが加えられて鼻の位置が算出されている。したがって、鼻の位置を正確、かつ、簡便な処理により算出することができる。
【００２３】
（５）前記画角設定部は、前記画角を増大させてから所定期間が経過するまでの間、継続的に前記移動推定位置の前記仮想スクリーンへの投影点が前記中央領域内に位置している場合に、前記画角を減少させることが好ましい。
【００２４】
画角を増大させると、キャラクタが小さく表示されるため、画像の迫力が欠け、プレーヤの興味が減退する虞がある。そこで、上記構成では、画角を増大させてから所定期間が経過するまでの間、継続的に投影点が中央領域内に位置している場合に、画角θが減少される。これにより、再度、キャラクタが大きく表示され、迫力のある画像演出を行うことができる。
【００２５】
（６）前記視線設定部は、各フレームにおいて、前記仮想スクリーンの中心を起点とし、前記移動推定位置の前記仮想スクリーンへの投影点を終点とする視線ずれベクトルを求め、前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルよりも大きい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量よりも大きくなるように前記次フレームの視線を設定し、前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルよりも小さい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量よりも小さくなるように前記次フレームの視線を設定し、前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルと等しい場合、前記現フレームから前記次フレームへの前記視線の移動量が前記前フレームから前記現フレームへの前記視線の移動量と同じになるように前記次フレームの視線を設定することが好ましい。
【００２６】
この構成によれば、被写体の移動速度が漸次に増加している場合、それに伴って視線の速度を漸次に増大させ、被写体の移動速度が漸次に減少している場合、それに伴って視線の速度を漸次に減少させ、被写体の移動速度が一定の場合、視線の速度を一定に保つというような実際のカメラマンのカメラワークをシミュレートすることができる。
【００２７】
（７）前記視線設定部は、前記キャラクタが停止し、かつ、前記仮想のカメラの視線の移動量が規定値以下の場合、現在の移動量で前記視線を変化させ、前記キャラクタと交差する位置で前記視線を停止させることが好ましい。
【００２８】
視線の追従中にキャラクタが停止した場合、視線ずれベクトルが漸次に減少するため、視線の移動量が漸次に減少していき、視線がキャラクタになかなか到達することができない虞がある。
【００２９】
上記の構成によれば、キャラクタが停止し、かつ、視線の移動量が規定値以下となった場合、現在の視線の移動量で視線が移動され、キャラクタと交差する位置で視線が停止されるため、上記問題を解消することができる。
【００３０】
（８）前記視線設定部は、前記現フレームで求めた視線ずれベクトルから、前記前フレームで求めた視線ずれベクトルを差し引くことで差分ベクトルを求め、前記差分ベクトルと同じ向きを持ち、かつ、前記差分ベクトルの大きさに応じた値を持つベクトルを前記現フレームの視線の加速度ベクトルとして設定し、設定した加速度ベクトルを用いて前記現フレームから前記次フレームへの視線の移動量を求めることが好ましい。
【００３１】
現フレームの視線ずれベクトルから、前フレームの視線ずれベクトルが差し引かれて差分ベクトルが求められ、この差分ベクトルと向きが同じで、この差分ベクトルに応じた大きさを持つベクトルが視線の加速度ベクトルとして算出される。
【００３２】
これにより、視線と移動推定位置との差が前フレームから現フレームにかけて増大すると視線移動量が増大され、視線と移動推定位置との差が前フレームから現フレームにかけて減少すると視線移動量が減少され、視線と移動推定位置との差が前フレームから現フレームにかけて一定であると、視線移動量が維持される。そのため、カメラワークをリアルに再現することができる。
【００３３】
（９）前記現フレームの視線ずれベクトルが前記前フレームの視線ずれベクトルに対して反対側を向いた場合、前記視線ずれベクトルの大きさが規定値以下のフレームになるまで、前記現フレームで求めた視線の加速度で前記視線を移動させることが好ましい。
【００３４】
この構成によれば、キャラクタが突然向きを変えた場合、差分ベクトルに応じた大きさ及び向きを持つ加速度ベクトルが設定され、この加速度ベクトルにしたがって、視線が移動される。そのため、視線がキャラクタの移動方向とは反対方向に少しだけ移動した後、方向変換して急速にキャラクタに近づいていくように視線を設定させることができる。これにより、キャラクタが急に方向変換した場合において、視線が直ぐにキャラクタの近傍に設定されることを防止することができる。その結果、カメラの慣性を考慮にいれて視線を設定することができ、実際のカメラワークをリアルに再現することが可能となる。
【発明の効果】
【００３５】
本発明によれば、現実のカメラマンのカメラワークをリアルに模擬したゲーム画面を作成することができる。具体的には、カメラ視界内に収めているキャラクタ等が急に移動した場合、そのキャラクタがカメラ視界内から外れてしまうことがないように、画角を広げてキャラクタをカメラ視界内に捕捉する、といったカメラマンのカメラワークをゲーム上に反映することができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施の形態による画像処理装置を家庭用のゲーム装置に適用した場合のゲーム装置のブロック図を示している。
【図２】キャラクタの３次元モデルを模式的に示した図である。
【図３】（Ａ）は、仮想３次元空間に設定された視線及び仮想スクリーンを示した図である。図３（Ｂ）は投影画像データを示した図である。
【図４】（Ａ）は画角が増大されたときの仮想３次元空間に設定された仮想スクリーンを示した図であり、（Ｂ）は画角が増大されたときに生成された投影画像データを示した図である。
【図５】（Ａ）は前フレームにおいて、仮想スクリーンを真上から見たときの仮想３次元空間の図である。（Ｂ）は（Ａ）に対応する仮想スクリーンを正面から見た図である。
【図６】（Ａ）は、現フレームにおいて、仮想スクリーンを真上から見たときの仮想３次元空間の図である。（Ｂ）は、（Ａ）に対応する仮想スクリーンを正面から見た図である。
【図７】次フレームの視線が設定される様子を示した図であり、（Ａ）は仮想スクリーンを真上から見た図であり、（Ｂ）は仮想スクリーンを正面から見た図である。
【図８】キャラクタの移動速度が漸次に減少する場合の視線ずれベクトルと差分ベクトルとの関係を示した図である。
【図９】図８を一般化したときの視線ずれベクトルと差分ベクトルとの関係を示した図である。
【図１０】キャラクタの移動速度が増大している場合において、仮想スクリーンの中心と移動推定位置の仮想スクリーンへの投影点との関係について説明した図である。
【図１１】キャラクタの移動速度が減少している場合において、仮想スクリーンの中心と移動推定位置の仮想スクリーンへの投影点との関係について説明した図である。
【図１２】キャラクタが停止している場合の仮想スクリーンの中心と移動推定位置の仮想スクリーンへの投影点との関係を示した図である。
【図１３】右側を移動しているキャラクタが突然左側に向きを変えたときの視線ずれベクトルを示した図である。
【図１４】右側に移動しているキャラクタが突然向きを変えて左側に移動を開始した場合において、仮想スクリーンの中心と移動推定位置の仮想スクリーンへの投影点との関係について示した図である。
【図１５】図１に示すゲーム装置の処理を示すフローチャートである。
【図１６】視線設定処理のフローチャートである。
【図１７】本ゲーム装置において、実際に表示部に表示される投影画像データを示した図である。
【図１８】本ゲーム装置において、実際に表示部に表示される投影画像データを示した図である。
【図１９】本ゲーム装置において、実際に表示部に表示される投影画像データを示した図である。
【発明を実施するための形態】
【００３７】
図１は、本発明の実施の形態による画像処理装置を家庭用のゲーム装置に適用した場合のゲーム装置のブロック図を示している。ゲーム装置は、例えば、操作部１０、制御部２０、キャラクタ情報記憶部３０、及び表示部４０を備えている。操作部１０は、プレーヤが操作指令を入力するために用いられる入力デバイスであり、いわゆる、ゲームコントローラである。具体的には、操作部１０は、例えばスティック、十字キー、及びセレクトキー等を備えている。ここで、プレーヤの操作指令としては、例えば、キャラクタをゲーム空間内で移動させるための移動指令や、ゲームを開始するためのゲーム開始指令等が含まれる。
【００３８】
制御部２０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、及びＧＰＵ等から構成され、ゲーム装置全体を制御する。具体的には、制御部２０は、キャラクタ移動部２１、位置推定部２２、視線設定部２３、画角設定部２４、及び撮影画像生成部２５を備えている。
【００３９】
キャラクタ移動部２１〜撮影画像生成部２５は、コンピュータをゲーム装置として機能させるためのゲーム制御プログラムをＣＰＵが実行することで実現される。このゲーム制御プログラムには、本発明による画像制御プログラムが含まれている。ゲーム制御プログラムは、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体に記録されて市場に流通されている。プレーヤはこの記録媒体を購入し、購入した記録媒体をゲーム装置が備える図略の記録媒体駆動装置に挿入することで、ＣＰＵにゲーム制御プログラムを実行させる。なお、ゲーム装置がインターネットに接続することが可能であれば、インターネット上のサーバからゲーム制御プログラムをダウンロードすることで、プレーヤにゲーム制御プログラムを購入させるようにしてもよい。
【００４０】
本実施の形態では、ゲームとして例えば、野球ゲームを想定しているが、本発明はこれに限定されず、野球ゲーム以外の種々のゲームに適用可能である。つまり、本発明による画像処理装置は、仮想３次元空間内をキャラクタが移動するような３次元コンピュータアニメーションを用いるゲームであれば、どのようなゲームにも適用することができる。また、本発明による画像処理装置は、ゲームに限定されず、例えばゲーム以外の一般的なコンピュータグラフィックスに適用してもよい。
【００４１】
本実施の形態では、ゲーム装置は、仮想３次元空間内を移動するキャラクタを所定のフレームレート（例えば、１／６０秒）でレンダリングする。以下に示す現フレームとは、仮想３次元空間内を移動するキャラクタの最新のレンダリングタイミングを示す。また、前フレームとは、現フレームよりも１つ前のレンダリングタイミングを示す。また、次フレームとは、現フレームよりも１つ後のレンダリングタイミングを示す。
【００４２】
キャラクタ移動部２１は、プレーヤが操作部１０を操作してキャラクタを移動させることができるプレーモードにある場合、プレーヤにより入力される移動指令にしたがって、キャラクタを仮想３次元空間内で移動させる。また、キャラクタ移動部２１は、キャラクタが予め定められた移動パターンにしたがって自動的に移動されるデモモードにある場合、移動パターンにしたがって、キャラクタを仮想３次元空間内で移動させる。
【００４３】
図２は、キャラクタの３次元モデルを模式的に示した図である。図２に示すようにキャラクタＣＡは、人間を模擬したスケルトンモデルである。スケルトンモデルは、複数のボーンＢＮと各ボーンＢＮを繋ぐノードＮＤとを含んでいる。各ボーンＢＮは、腕、足、胴体、顔等に相当する外皮ＳＫで覆われている。
【００４４】
キャラクタ移動部２１は、プレーヤからの操作指令又は予め定められた移動パターンにしたがって、ノードＮＤを中心とする各ボーンＢＮの回転量を設定し、種々の拘束条件の下、キャラクタＣＡの姿勢を設定する。拘束条件としては、例えば、上腕のノードＮＤと下腕のノードＮＤとは所定度以上回転できない、キャラクタＣＡは水平面ＳＦ上を移動する等が挙げられる。
【００４５】
水平面ＳＦは仮想３次元空間内に設けられた平面であり、人間が歩く地表面を想定したものである。本実施の形態では、仮想３次元空間は、互いに直交するｘ，ｙ，ｚの３軸の座標によって各位置が規定される。水平面ＳＦは、ｚ＝０、かつ、ｘ−ｙ平面と平行な面に設定されている。
【００４６】
また、キャラクタ移動部２１は、フレーム毎にキャラクタＣＡの移動速度を設定し、設定した移動速度にしたがって、キャラクタＣＡを仮想３次元空間内で動かす。具体的には、キャラクタ移動部２１は、プレーモードにある場合、操作部１０により入力された移動指令にしたがって、現フレームでのキャラクタＣＡの移動速度を設定すればよい。また、キャラクタ移動部２１は、デモモードにある場合、予め定められた移動パターンにしたがって現フレームでのキャラクタＣＡの移動速度を設定すればよい。
【００４７】
本実施の形態では、キャラクタＣＡは野球ゲームの選手キャラクタであり、図２に示すように、仮想３次元空間内に設けられた水平面ＳＦ上を移動する。したがって、キャラクタ移動部２１は、キャラクタＣＡの移動速度ＶＣを水平面ＳＦと平行に設定する。
【００４８】
また、鼻ＮＰの中心位置がキャラクタＣＡの位置Ｋとされている。したがって、キャラクタ移動部２１は、前フレームでのキャラクタＣＡの移動速度ＶＣにフレーム周期Ｔを乗じ、得られた値（＝Ｔ・ＶＣ）を、前フレームでのキャラクタＣＡの位置Ｋ（ｉ−１）の水平座標に加えることで、現フレームでのキャラクタＣＡの位置Ｋ（ｉ）の水平座標を算出する。そして、キャラクタ移動部２１は、算出した位置Ｋ（ｉ）の水平座標にキャラクタＣＡを移動させる。
【００４９】
位置推定部２２は、現フレームより過去のフレームにおけるキャラクタＣＡの移動速度ＶＣを用いて現フレームでのキャラクタＣＡの予測移動速度ＰＶを求める。そして、位置推定部２２は、予測移動速度と現フレームでのキャラクタＣＡの現在位置とを用いて、キャラクタが１又は複数フレーム後に移動すると推定される仮想３次元空間内での移動推定位置Ｑを求める。
【００５０】
本実施の形態では、位置推定部２２は、例えば、過去数フレームにおける仮想３次元空間でのキャラクタＣＡの移動速度ＶＣの平均速度を、現フレームでのキャラクタＣＡの予測移動速度ＰＶ（ｉ）として求める。過去数フレームとしては、例えば１フレームであってもよいし、２，３，４，・・・，１０等の複数フレームであってもよい。
【００５１】
そして、位置推定部２２は、予測移動速度ＰＶ（ｉ）をｎ・Ｔ倍することで、現フレームから次フレームへのキャラクタＣＡの移動推定距離ＰＤ（ｉ）（＝ｎ・Ｔ・ＰＶ（ｉ））を求める。但し、ｎは１又は２以上の整数を示し、Ｔはフレーム周期を示す。
【００５２】
そして、位置推定部２２は、式（１）に示すように、キャラクタＣＡの現フレームの位置Ｋ（ｉ）の水平座標に現フレームの移動推定距離ＰＤ（ｉ）を加えて、キャラクタＣＡの移動推定位置Ｑ（ｉ）の水平座標を算出する。
【００５３】
Ｑ（ｉ）＝Ｋ（ｉ）＋ＰＤ（ｉ）    （１）
本実施の形態では、図２に示すように、鼻ＮＰの中心位置がキャラクタＣＡの位置Ｋとされている。したがって、位置推定部２２は、鼻に最も近い首の付け根のノードＮＤｘから鼻ＮＰの方向を特定する。そして、位置推定部２２は、ノードＮＤｘから特定した鼻の方向に向けて所定のオフセットｈを加えることで、位置Ｋを算出する。ここで、位置推定部２２は、キャラクタ移動部２１によって設定されたキャラクタＣＡの姿勢を用いてノードＮＤｘから鼻ＮＰへの向きを特定すればよい。
【００５４】
また、位置推定部２２は、現フレームでのキャラクタＣＡの位置Ｋ（ｉ）の水平面ＳＦからの高さを示す鉛直座標を移動推定位置Ｑ（ｉ）の鉛直座標として算出する。
【００５５】
このように、現フレームでのキャラクタＣＡの移動速度ＶＣではなく、予測移動速度ＰＶを用いて移動推定位置Ｑが算出されている。したがって、移動推定位置Ｑは、キャラクタＣＡが数フレーム後に移動するであろうと、実際のカメラマンが推定する位置を表すことができる。これにより、実際のカメラマンがカメラの視線を動かす際の目標位置をシミュレートとすることができる。
【００５６】
なお、キャラクタＣＡは仮想３次元空間内を移動するため、キャラクタＣＡの移動速度ＶＣ、予測移動速度ＰＶは３次元ベクトルで表され、位置Ｋ、移動推定距離ＰＤ、移動推定位置Ｑは３次元データである。
【００５７】
図１に戻り、視線設定部２３は、仮想３次元空間の所定の位置に配置された仮想カメラの視線が移動推定位置Ｑの変化に追従するように次フレームの視線を設定する。図３（Ａ）は、仮想３次元空間に設定された視線ＬＥ及び仮想スクリーンＳＣを示した図である。図３（Ｂ）は投影画像データを示した図である。図３（Ａ）に示すように視線ＬＥは仮想カメラＣＭの光軸方向に設定される。視線ＬＥは、仮想カメラＣＭを中心に回転され、移動推定位置Ｑに追従される。
【００５８】
本実施の形態では、移動推定位置Ｑに追従するように視線ＬＥが設定されているため、視線ＬＥを実際のキャラクタＣＡの動きに対して少し遅れて追従させることができ、実際のカメラワークをリアルに模擬することができる。
【００５９】
画角設定部２４は、視線設定部２３により設定された視線ＬＥを中心として仮想カメラＣＭの画角θを設定する。画角には、図３（Ａ）に示すように、水平方向の画角θと鉛直方向の画角θ´とが含まれる。ここで、画角設定部２４は、仮想スクリーンＳＣを真上から見たときに視線ＬＥにより画角θが２等分されるように画角θを設定する。また、画角設定部２４は、仮想スクリーンＳＣを真横から見たときに視線ＬＥにより画角θ´が２等分されるように画角θ´を設定する。また、画角設定部２４は、画角θと画角θ´との比が、仮想スクリーンＳＣの水平方向の辺Ｈ１と鉛直方向の辺Ｈ２の比と同じになるように画角θ、θ´を設定する。ここで、辺Ｈ１と辺Ｈ２との比としては、通常のテレビモニタの比を採用することができる。このように画角θ、θ´が設定されることで、仮想スクリーンＳＣは中心Ｐに視線ＬＥが通るように仮想３次元空間内に設定される。本実施の形態では、画角設定部２４は、まず、画角θを設定し、その後で、辺Ｈ１と辺Ｈ２との比にしたがって、画角θ´を設定するものとする。
【００６０】
投影画像生成部２５は、画角設定部２４により設定された画角θに従って仮想３次元空間内に仮想スクリーンＳＣを設定し、設定した仮想スクリーンＳＣにキャラクタＣＡを投影して２次元の投影画像データを生成する。
【００６１】
ここで、投影画像生成部２５は、仮想スクリーンＳＣの面積が所定の値となり、辺Ｈ１が水平面ＳＦと平行、かつ、辺Ｈ２が水平面ＳＦと直交するように仮想スクリーンＳＣを設定する。そして、投影画像生成部２５は、キャラクタＣＡを仮想スクリーンＳＣに投影変換する。また、投影画像生成部２５は、仮想３次元空間にキャラクタＣＡ以外のキャラクタやオブジェクトが配置されていれば、これらのキャラクタやオブジェクトも仮想スクリーンＳＣに投影変換する。このとき、投影画像生成部２５は、シェーディング処理、テクスチャマッピング処理、及び隠面消去処理等も併せて行う。これにより、キャラクタＣＡが仮想スクリーンＳＣにレンダリングされ、図３（Ｂ）に示すような投影画像データが生成される。
【００６２】
そして、投影画像生成部２５は、生成した投影画像データを表示部４０に表示させる。これにより、表示部４０には所定のフレームレートで投影画像データが表示され、３次元コンピュータアニメーションが実現される。
【００６３】
図３（Ｂ）に示すように投影画像データの中心Ｐが仮想スクリーンＳＣと視線ＬＥとの交点となっていることが分かる。図３（Ｂ）の例では、キャラクタＣＡは画角θによって規定される仮想カメラＣＭの視界のやや右側に位置しているため、キャラクタＣＡは投影画像データの右側に表示されている。
【００６４】
ここで、画角設定部２４は、位置推定部２２により推定された移動推定位置Ｑの仮想スクリーンＳＣへの投影点Ｒが仮想スクリーンＳＣ内の外周に設けられた所定の外周領域Ｄ２に位置する場合、投影点Ｒを外周領域Ｄ２の内側の中央領域Ｄ１に位置させるために画角θを増大させる。
【００６５】
実際の野球のＴＶ中継において、カメラマンは、選手の動きを予測し、選手がカメラの視界から外れないようにカメラの向きや画角を調節する。そして、選手が突然予想外の動きを示し、選手がカメラの視界から消えそうになると、あわててカメラの画角を増大させて（すなわち、球場を広く映し出すことで）、選手をカメラの視界内に収めようとするといったカメラワークを行う。本実施の形態では、このようなカメラマンのカメラワークを模擬することを目的としている。
【００６６】
そこで、画角設定部２４は、フレームが更新される毎に投影点Ｒが外周領域Ｄ２に位置するか否かを判定する。そして、画角設定部２４は、投影点Ｒが外周領域Ｄ２に位置すると判定した場合、投影点Ｒが中央領域Ｄ１に入るフレームになるまで、画角θを漸次に増大させる。ここで、画角設定部２４は、一定の角度で画角θを増大させてもよいし、画角θを増大させる処理を開始してからの時間が増大するにつれて画角θの変化量が大きくなるように画角θを増大させてもよい。
【００６７】
これにより、投影点Ｒが外周領域Ｄ２に侵入し、キャラクタＣＡが視界から消えそうになると、急激に画角を増大させることで、投影点Ｒを中央領域Ｄ１に戻し、キャラクタＣＡを画面の中央に寄せるような画面演出を行うことができる。
【００６８】
なお、外周領域Ｄ２は中央領域Ｄ１を取り囲むように仮想スクリーンＳＣに設けられた枠状の領域である。中央領域Ｄ１はその中心が仮想スクリーンＳＣの中心Ｐに位置する四角形状の領域である。なお、外周領域Ｄ２の辺Ｈ１側の幅及び辺Ｈ２側の幅は同じ値にしてもよいし、異なる値にしてもよい。また、外周領域Ｄ２の幅は、画角θに関わらず一定にしてもよいし、画角θに応じて変化させてもよい。また、中央領域Ｄ１として四角形状を採用したが、これに限定されず、円形や、楕円形等の形状を採用してもよい。
【００６９】
図４（Ａ）は、画角θが増大されたときの仮想スクリーンＳＣを示した図であり、図４（Ｂ）は画角θが増大されたときに生成された投影画像データを示した図である。
【００７０】
上述したように、投影画像生成部２５は、仮想スクリーンＳＣの面積が一定の値になるように仮想スクリーンＳＣを設定する。したがって、画角θが増大されると、図４（Ａ）に示すように仮想スクリーンＳＣは仮想カメラＣＭ側に寄る。よって、図４（Ｂ）の投影画像データのキャラクタＣＡのサイズは、図４（Ａ）の投影画像のキャラクタＣＡのサイズよりも小さくなっている。
【００７１】
ここで、図４（Ｂ）に示すように画角θを増大させると、キャラクタＣＡが小さく表示されるため、画像の迫力が欠け、プレーヤの興味が減退する虞がある。そこで、画角設定部２４は、画角θを増大させてから所定期間が経過するまでの間、継続的に移動推定位置Ｑの仮想スクリーンＳＣへの投影点Ｒが中央領域Ｄ１内に位置していることを条件として、画角θを減少させる処理を実行する。これにより、再度、キャラクタＣＡが大きく表示され、迫力のある画像演出を行うことができる。
【００７２】
ここで、所定期間が経過するまでという条件を設けているのは、以下の理由による。すなわち、仮に図４（Ｂ）の画面となって、すぐに画角θを減少させた場合、また、キャラクタＣＡが急に動くと、再び、画角θを増大させることとなる。その結果、短い時間の間にカメラの画角θの増大、縮小が繰り返され、見づらい画面になってしまうためである。
【００７３】
なお、画角設定部２４は、画角θを減少する処理を開始すると、フレーム毎に一定の変化量で画角θを減少させてもよいし、画角θを減少する処理を開始してからの時間が経過するにつれて画角θの変化量が増大するように画角θを減少させてもよい。そして、画角設定部２４は、中央領域Ｄ１内に位置する投影点Ｒから外周領域Ｄ２の内周ＩＮまでの距離が一定の値以下になると、画角θを減少する処理を終了させればよい。投影点Ｒが中央領域Ｄ１の端ぎりぎりになるまで画角θを減少させると、直ぐに投影点Ｒが外周領域Ｄ２に侵入する虞がある。そうすると、再度、画角θを増大する処理が開始され、画角θを増大する処理が頻発し、処理負担が増大する。そこで、一定の値としては、投影点Ｒが直ぐに外周領域Ｄ２に侵入しないように、一定の余裕を見越した値を採用することが好ましい。
【００７４】
キャラクタ情報記憶部３０は、例えば、ハードディスク、ＲＡＭ、又はＲＯＭ等の記憶装置により構成され、キャラクタＣＡを描画する上で必要となるデータを記憶している。本実施の形態では、キャラクタ情報記憶部３０は、例えば、キャラクタＣＡのボーンＢＮ、ノードＮＤに関するデータ、表皮ＳＫに関するデータ、デモモードにおけるキャラクタＣＡの移動パターン等を記憶している。
【００７５】
表示部４０は、家庭用のテレビや、ゲーム装置が備えるディスプレイにより構成され、投影画像生成部２５により生成された投影画像データが所定のフレームレートで表示する。
【００７６】
次に、視線設定部２３の視線設定処理について具体的に説明する。図５（Ａ）は、前フレームにおいて、仮想スクリーンＳＣを真上から見たときの仮想３次元空間の図である。図５（Ｂ）は図５（Ａ）に対応する仮想スクリーンＳＣを正面から見た図である。図６（Ａ）は、現フレームにおいて、仮想スクリーンＳＣを真上から見たときの仮想３次元空間の図である。図６（Ｂ）は、図６（Ａ）に対応する仮想スクリーンＳＣを正面から見た図である。なお、図５（Ｂ）、図６（Ｂ）では説明の便宜上、視線ずれベクトルＶ１は水平面ＳＦと平行であるとしている。
【００７７】
視線設定部２３は、各フレームにおいて、仮想スクリーンＳＣの中心Ｐを起点とし、移動推定位置Ｑの仮想スクリーンへの投影点Ｒを終点とする視線ずれベクトルＶ１を求める。そして、視線設定部２３は、現フレームの視線ずれベクトルＶ１（ｉ）が前フレームの視線ずれベクトルＶ１（ｉ−１）よりも大きい場合、現フレームから次フレームへの視線ＬＥの移動量が前フレームから現フレームへの視線ＬＥの移動量よりも大きくなるように次フレームの視線ＬＥを設定する。
【００７８】
また、視線設定部２３は、現フレームの視線ずれベクトルＶ１（ｉ）が前フレームの視線ずれベクトルＶ１（ｉ−１）よりも小さい場合、現フレームから次フレームへの視線ＬＥの移動量が前フレームから現フレームへの視線ＬＥの移動量よりも小さくなるように次フレームの視線ＬＥを設定する。
【００７９】
更に、視線設定部２３は、現フレームの視線ずれベクトルＶ１（ｉ）が前フレームの視線ずれベクトルＶ１（ｉ−１）と等しい場合、現フレームから次フレームへの視線ＬＥの移動量が前フレームから現フレームへの視線ＬＥの移動量と同じになるように次フレームの視線ＬＥを設定する。
【００８０】
図７（Ａ）、（Ｂ）は次フレームの視線ＬＥ（ｉ＋１）が設定される様子を示した図であり、（Ａ）は仮想スクリーンＳＲを真上から見た図であり、（Ｂ）は仮想スクリーンＳＲを正面から見た図である。
【００８１】
視線設定部２３は、図７（Ｂ）に示すように、現フレームで求めた視線ずれベクトルＶ１（ｉ）から、前フレームで求めた視線ずれベクトルＶ１（ｉ−１）を差し引くことで差分ベクトルΔＶ１（ｉ）を求める。ここで、視線ずれベクトルＶ１（ｉ）は仮想スクリーンＳＣの中心Ｐ（ｉ）を始点とし、仮想スクリーンＳＣ上に設定される２次元ベクトルである。したがって、差分ベクトルΔＶ１（ｉ）も２次元ベクトルとなる。
【００８２】
そして、視線設定部２３は、差分ベクトルΔＶ１（ｉ）と同じ向きを持ち、かつ、差分ベクトルの大きさに応じた値を持つベクトルを現フレームの視線の加速度ベクトルα（ｉ）として設定する。つまり、加速度ベクトルα（ｉ）は、α（ｉ）＝ｋ・ΔＶ１の関係を持つ。但し、ｋは係数であり、例えば０＜ｋ≦１である。なお、これは一例であり、ｋ＞１の任意の数を採用してもよい。
【００８３】
そして、視線設定部２３は、図７（Ａ）に示すように、設定した現フレームの加速度ベクトルα（ｉ）を、前フレームの視線ＬＥ（ｉ−１）の視線速度ベクトルＶ２（ｉ−１）に加え、現フレームの視線速度ベクトルＶ２（ｉ）を求める。
【００８４】
（Ｖ２（ｉ）＝Ｖ２（ｉ−１）＋α（ｉ））
ここで、視線速度ベクトルＶ２（ｉ）は、例えば、仮想スクリーンＳＲ（ｉ）の中心Ｐ（ｉ）を始点とし、視線ＬＥ（ｉ）と直交する面上に現れる２次元ベクトルである。
【００８５】
そして、視線設定部２３は、現フレームの視線速度ベクトルＶ２（ｉ）を仮想カメラＣＭと中心Ｐ（ｉ）との距離ｒ（ｉ）で割り、現フレームの視線角速度ω（ｉ）（＝Ｖ２（ｉ）／ｒ（ｉ））を求める。
【００８６】
そして、視線設定部２３は、現フレームの視線角速度ω（ｉ）にフレーム周期Ｔを乗じ、現フレームから次フレームへの視線移動量φ（ｉ）を求める。そして、視線設定部２３は、現フレームの視線ＬＥ（ｉ）を仮想カメラＣＭを中心に視線移動量φ（ｉ）で規定される角度だけ移動させ、次フレームの視線ＬＥ（ｉ＋１）を設定する。
【００８７】
図７（Ａ）の例では、キャラクタＣＡの速度が漸次に増大しているケースを想定しているため、Ｖ１（ｉ）＞Ｖ１（ｉ−１）となる。そのため、差分ベクトルΔＶ１はＶ１（ｉ）と同じ方向に向き、Ｖ２（ｉ）は加速される。これにより、被写体の移動速度が漸次に増加している場合、それに伴って視線の速度を漸次に増大させる実際のカメラマンのカメラワークをシミュレートすることができる。
【００８８】
一方、キャラクタＣＡの移動速度が漸次に減少する場合、図８に示すように、視線ずれベクトルＶ１（ｉ）が視線ずれベクトルＶ１（ｉ−１）よりも小さくなる。この場合、差分ベクトルΔＶ１（ｉ）は現フレームの視線ずれベクトルＶ１（ｉ）に対して反対側を向き、視線速度ベクトルＶ２（ｉ）は減速される。これにより、被写体の移動速度が漸次に減少している場合、それに伴って視線の速度を漸次に減少させる実際のカメラマンのカメラワークをシミュレートすることができる。
【００８９】
本実施の形態では、キャラクタＣＡは移動中に場合、鼻の高さを変えるような姿勢を取らないものとしている。したがって、基本的には視線ずれベクトルＶ１（ｉ）、Ｖ（ｉ−１）は平行になる。しかしながら、本発明を一般化すると、視線ずれベクトルＶ１（ｉ）、Ｖ（ｉ−１）が図９の関係を持つようなケースも考えられる。
【００９０】
この場合も、差分ベクトルΔＶ１（ｉ）に応じた加速度ベクトルα（ｉ）を求め、視線ＬＥを移動させればよい。この場合、視線ＬＥは差分ベクトルΔＶ１（ｉ）の方向に加速されることになる。
【００９１】
図１０は、キャラクタＣＡの移動速度が増大している場合において、仮想スクリーンＳＣの中心Ｐと移動推定位置Ｑの仮想スクリーンＳＣへの投影点Ｒとの関係について説明した図である。
【００９２】
まず、ｉフレームにおいて、キャラクタＣＡは右側に移動しており、投影点Ｒ（ｉ）は中心Ｐ（ｉ）よりも右側に位置しているため、視線ずれベクトルＶ１（ｉ）は右側を向いている。
【００９３】
ｉ＋１フレームにおいて、中心Ｐ（ｉ＋１）は視線移動量φ（ｉ）にしたがって、中心Ｐ（ｉ）よりも右側にずらされて設定されている。
【００９４】
また、ｉ＋１フレームにおいて、キャラクタＣＡは移動速度を速めたため、視線ずれベクトルＶ１（ｉ＋１）は、視線ずれベクトルＶ１（ｉ）よりも右側に向けて増大している。
【００９５】
差分ベクトルΔＶ１（ｉ＋１）は、Ｖ１（ｉ＋１）−Ｖ（ｉ）であるため、向きが右側で大きさが差分ベクトルΔＶ（ｉ）よりも増大する。
【００９６】
加速度ベクトルα（ｉ＋１）は、α（ｉ＋１）＝ｋ・ΔＶ１（ｉ＋１）であるため、向きが右側で大きさが加速度ベクトルα（ｉ）よりも増大する。
【００９７】
視線速度ベクトルＶ２（ｉ＋１）は、Ｖ２（ｉ＋１）＝α（ｉ＋１）＋Ｖ２（ｉ）であるため、Ｖ２（ｉ）よりも、右側に向けて増大する。視線移動量φ（ｉ＋１）は、φ（ｉ＋１）＝Ｖ２（ｉ＋１）／ｒ（ｉ＋１）であるため、φ（ｉ）よりも増大する。
【００９８】
よって、中心Ｐ（ｉ＋２）は、φ（ｉ＋１）に従って、中心Ｐ（ｉ＋１）よりも右側に設定される。
【００９９】
ｉ＋２フレームにおいて、キャラクタＣＡは更に移動速度を速めたため、視線ずれベクトルＶ１（ｉ＋２）は視線ずれベクトルＶ１（ｉ＋１）よりも右側に向けて更に増大している。
【０１００】
差分ベクトルΔＶ１（ｉ＋２）は、ΔＶ１（ｉ＋２）＝Ｖ１（ｉ＋２）−Ｖ１（ｉ＋１）であるため、ΔＶ１（ｉ＋１）よりも右側に向けて更に増大する。
【０１０１】
加速度ベクトルα（ｉ＋２）は、α（ｉ＋２）＝ｋ・ΔＶ１（ｉ＋２）であるため、α（ｉ＋１）よりも増大する。視線速度ベクトルＶ２（ｉ＋２）は、Ｖ２（ｉ＋２）＝α（ｉ＋２）＋Ｖ２（ｉ＋１）であるため、Ｖ２（ｉ＋１）よりも増大する。視線移動量φ（ｉ＋２）は、Ｖ２（ｉ＋２）／ｒ（ｉ＋２）であるため、φ（ｉ＋１）よりも増大する。よって、中心Ｐ（ｉ＋３）は、φ（ｉ＋２）に従って、中心Ｐ（ｉ＋２）よりも右側に設定される。
【０１０２】
以後、フレームが増大するにつれてキャラクタＣＡは移動速度を速めているため、差分ベクトルΔＶ１が漸次に増大し、その増大に伴って加速度ベクトルαが漸次に増大し、視線速度ベクトルＶ２が漸次に増大し、視線移動量φが右側に向けて漸次に増大するように中心Ｐが設定されていく。
【０１０３】
図１１は、キャラクタＣＡの移動速度が減少している場合において、仮想スクリーンＳＣの中心Ｐと移動推定位置Ｑの仮想スクリーンＳＣへの投影点Ｒとの関係について説明した図である。
【０１０４】
まず、ｉフレームにおいて、キャラクタＣＡは右方向に移動しており、キャラクタＣＡは中心Ｐ（ｉ）よりも右側に位置しているため、視線ずれベクトルＶ１（ｉ）は右方向を向いている。
【０１０５】
ｉ＋１フレームにおいて、中心Ｐ（ｉ＋１）は視線移動量φ（ｉ）にしがたって、中心Ｐ（ｉ）よりも右側にずらされて設定されている。
【０１０６】
また、ｉ＋１フレームにおいて、キャラクタＣＡは移動速度を下げたため、視線ずれベクトルＶ１（ｉ＋１）は向きが右側で大きさが視線ずれベクトルＶ１（ｉ）よりも減少している。
【０１０７】
差分ベクトルΔＶ１（ｉ＋１）は、Ｖ１（ｉ＋１）−Ｖ１（ｉ）であるため、向きが左側で大きさが差分ベクトルΔＶ１（ｉ）よりも減少する。
【０１０８】
加速度ベクトルα（ｉ＋１）は、α（ｉ＋１）＝ｋ・ΔＶ１（ｉ＋１）であるため、向きが左側で大きさが加速度ベクトルα（ｉ）よりも減少する。
【０１０９】
視線速度ベクトルＶ２（ｉ＋１）は、Ｖ２（ｉ＋１）＝α（ｉ＋１）＋Ｖ２（ｉ）であるため、Ｖ２（ｉ）よりも減少する。視線移動量φ（ｉ＋１）は、φ（ｉ＋１）＝Ｖ２（ｉ＋１）／ｒ（ｉ＋１）であるため、φ（ｉ）よりも減少する。よって、中心Ｐ（ｉ＋２）は、φ（ｉ＋１）に従って、中心Ｐ（ｉ＋１）よりも右側に設定される。
【０１１０】
ｉ＋２フレームにおいて、キャラクタＣＡは更に移動速度を低下させたため、視線ずれベクトルＶ１（ｉ＋２）は、視線ずれベクトルＶ１（ｉ＋１）よりも右側に向けて更に減少している。
【０１１１】
差分ベクトルΔＶ１（ｉ＋２）は、ΔＶ１（ｉ＋２）＝Ｖ１（ｉ＋２）−Ｖ１（ｉ＋１）であるため、向きが左側であり、大きさがΔＶ１（ｉ＋１）よりも減少する。
【０１１２】
加速度ベクトルα（ｉ＋２）は、α（ｉ＋２）＝ｋ・ΔＶ１（ｉ＋２）であるため、向きが左側で、大きさがα（ｉ＋１）よりも減少する。
【０１１３】
視線速度ベクトルＶ２（ｉ＋２）は、Ｖ２（ｉ＋２）＝α（ｉ＋２）＋Ｖ２（ｉ＋１）であるため、Ｖ２（ｉ＋１）よりも減少する。
【０１１４】
視線移動量φ（ｉ＋２）は、φ（ｉ＋２）＝Ｖ２（ｉ＋２）／ｒ（ｉ＋２）であるため、視線移動量φ（ｉ＋１）よりも減少する。よって、中心Ｐ（ｉ＋３）は、φ（ｉ＋２）に従って中心Ｐ（ｉ＋２）より右側に設定される。
【０１１５】
以後、フレームが増大するにつれてキャラクタＣＡは移動速度を低下させているため、差分ベクトルΔＶ１は左側に向けて漸次に減少し、その減少に伴って加速度ベクトルαも左側に向けて漸次に減少し、その減少に伴って視線速度ベクトルＶ２が漸次に減少し、視線移動量φが漸次に減少するように中心Ｐが設定されていく。
【０１１６】
なお、視線ＬＥの追従中にキャラクタＣＡが停止した場合、差分ベクトルΔＶ１はキャラクタＣＡの移動速度に対して逆向きを維持するため、視線ＬＥがキャラクタＣＡに追いつく前に、視線ＬＥがキャラクタＣＡから離れる方向に移動を開始する虞がある。
【０１１７】
そこで、視線設定部２３は、キャラクタＣＡが停止し、かつ、視線速度ベクトルＶ２が規定値以下となった場合、現在の視線速度ベクトルＶ２で視線ＬＥを変化させ、キャラクタＣＡと交差する位置で視線ＬＥを停止させればよい。
【０１１８】
図１２は、キャラクタＣＡが停止している場合の仮想スクリーンＳＲの中心Ｐと移動推定位置Ｑの仮想スクリーンＳＲへの投影点Ｒとの関係を示した図である。
【０１１９】
ｉフレームにおいて、視線ＬＥは右側に移動しており、キャラクタＣＡが停止した。ｉ＋１フレームにおいて、差分ベクトルΔＶ１（ｉ＋１）は、ΔＶ１（ｉ＋１）＝Ｖ１（ｉ＋１）−Ｖ１（ｉ）から得られ、加速度ベクトルα（ｉ＋１）は、α（ｉ＋１）＝ｋ・ΔＶ１（ｉ＋１）から得られ、視線速度ベクトルＶ２（ｉ＋１）は、Ｖ２（ｉ＋１）＝α（ｉ＋１）＋Ｖ２（ｉ）から得られる。
【０１２０】
そして、視線速度ベクトルＶ２（ｉ＋１）が規定値以下となり、視線移動量φ（ｉ＋１）が規定値以下となった。そうすると、視線設定部２３は、視線移動量φ（ｉ＋１）を、算出したφ（ｉ＋１）ではなく、前フレームの視線移動量φ（ｉ）に設定して中心Ｐ（ｉ＋２）を設定する。
【０１２１】
ｉ＋２フレームでも、ｉ＋１フレームと同様にして視線速度ベクトルＶ２（ｉ＋２）が算出される。そして、視線速度ベクトルＶ２（ｉ＋２）が規定値以下であり、視線移動量φ（ｉ＋２）も規定値以下であった。そうすると、視線設定部２３は、視線移動量φ（ｉ＋２）を、算出したφ（ｉ＋２）ではなく、前フレームの視線移動量φ（ｉ＋１）＝φ（ｉ）に設定して中心Ｐ（ｉ＋３）を設定する。
【０１２２】
ここで、中心Ｐ（ｉ＋３）を中心Ｐ（ｉ＋２）からφ（ｉ＋２）だけ右側にずらすと、視線ＬＥがキャラクタＣＡを通り超してしまう。そこで、視線設定部２３は、中心Ｐ（ｉ＋３）が投影点Ｒ（ｉ＋３）を通り超えると、中心Ｐ（ｉ＋３）ではなく、投影点Ｒ（ｉ＋３）上に中心Ｐ´（ｉ＋３）を設定する。これにより、停止してきるキャラクタＣＡに視線ＬＥを確実に追従させることができる。
【０１２３】
このように、視線設定部２３は、視線ＬＥがキャラクタＣＡに到達する、つまり、中心Ｐが投影点Ｒと一致するまで視線移動量φ（ｉ）を維持して視線ＬＥを右側にずらしながら設定していく。なお、キャラクタＣＡが停止している場合、予測移動速度ＰＶは０となって、投影点ＲはキャラクタＣＡに位置することになるため、中心Ｐが投影点Ｒと一致すると、キャラクタＣＡに視線ＬＥが設定されることになる。
【０１２４】
実際のカメラワークにおいては、右側に移動している被写体が突然左側に移動すると、視線を右側に移動させているカメラの慣性によって、カメラマンはカメラの視線を直ぐに被写体側に向けることはできない。この場合、あるフレームでカメラの視界の中心よりも右側に位置していた被写体が次のフレームで突然、カメラの視界の左端に表示され、その後の数フレームで、被写体が急激にカメラの視界の中央に寄ってくるような映像が得られる。
【０１２５】
これを再現するために、視線設定部２３は、図１３に示すように、現フレームの視線ずれベクトルＶ１（ｉ）が前フレームの視線ずれベクトルＶ１（ｉ−１）に対して反対側を向いた場合、視線ずれベクトルＶ１の大きさが規定値以下となるまで、現フレームの視線の加速度ベクトルα（ｉ）で視線ＬＥを移動させる。
【０１２６】
図１３の例では、右側に移動していたキャラクタＣＡが突然左側に移動したため、前フレームで右側を向いていた視線ずれベクトルＶ１が、次フレームで左側を向き、視線ずれベクトルＶ１（ｉ）の向きが視線ずれベクトルＶ１（ｉ−１）の向きに対して反対側を向いていることが分かる。
【０１２７】
ここで、向きが反対側とは、例えば、視線ずれベクトルＶ１（ｉ）と視線ずれベクトルＶ１（ｉ−１）とのなす角度が例えば９０度以上になった場合である。
【０１２８】
図１４は、右側に移動しているキャラクタＣＡが突然向きを変えて左側に移動を開始した場合において、仮想スクリーンＳＣの中心Ｐと移動推定位置Ｑの仮想スクリーンＳＣへの投影点Ｒとの関係について示した図である。
【０１２９】
まず、ｉフレームにおいて、右側に移動しているキャラクタＣＡが突然向きを左側に変えたが、その変化に追従することができず、予測移動速度ＰＶ（ｉ）は右側を向くと算出されたとする。そうすると、移動推定位置Ｑ（ｉ）がキャラクタＣＡに対して右側の位置に算出され、投影点Ｒ（ｉ）は中心Ｐ（ｉ）よりも右側に位置に算出される。そのため、視線ずれベクトルＶ１（ｉ）は右側を向いている。この場合、キャラクタＣＡは中心Ｐ（ｉ）よりも左側に位置しているため、キャラクタＣＡは投影画像データの左側に表示される。
【０１３０】
ｉ＋１フレームにおいて、予測移動速度ＰＶ（ｉ＋１）が移動方向と同じ向きに算出され、キャラクタＣＡの方向の変化に追従することができたとすると、投影点Ｒ（ｉ＋１）が中心Ｐ（ｉ＋１）よりも左側の位置に算出される。ここで、投影点Ｒ（ｉ＋１）は中心Ｐ（ｉ＋１）よりも左側に位置しているため、視線ずれベクトルＶ１（ｉ＋１）は視線ずれベクトルＶ１（ｉ）に対して向きが反対となって左側を向いている。
【０１３１】
差分ベクトルΔＶ１（ｉ＋１）は、ΔＶ１（ｉ＋１）＝Ｖ１（ｉ＋１）−Ｖ１（ｉ）であるため、向きが左側であって、大きさが視線ずれベクトルＶ１（ｉ＋１）に視線ずれベクトルＶ１（ｉ）を加えた値となる。
【０１３２】
これにより、左側に向けて大きな加速度ベクトルα（ｉ＋１）が算出される。そして、右側を向いていた視線速度ベクトルＶ２（ｉ）の大きさが減少し始める。しかしながら、視線速度ベクトルＶ２（ｉ＋１）はまだ右側を向いており、キャラクタＣＡの移動に追従できていないため、視線移動量φ（ｉ＋１）は中心Ｐ（ｉ＋１）から右向きに算出される。そのため、中心Ｐ（ｉ＋２）は中心Ｐ（ｉ＋１）よりも視線移動量φ（ｉ＋１）に従って右側に設定される。
【０１３３】
ｉ＋２フレームおいて、視線ずれベクトルＶ１（ｉ＋２）が規定値以下となっていないため、加速度ベクトルα（ｉ＋２）は、α（ｉ＋２）＝加速度ベクトルα（ｉ＋１）に設定され、加速度ベクトルα（ｉ＋１）が維持される。
【０１３４】
そして、ｉ＋２フレームにおいて、視線速度ベクトルＶ２（ｉ＋２）が左側を向き、視線ＬＥがキャラクタＣＡの移動に追従できたため、視線移動量φ（ｉ＋２）は中心Ｐ（ｉ＋２）に対して左側を向く。これにより、中心Ｐ（ｉ＋３）は中心Ｐ（ｉ＋２）に対して視線移動量φ（ｉ＋２）に従って左側の位置に設定される。
【０１３５】
ｉ＋３フレームにおいて、視線ずれベクトルＶ１（ｉ＋３）が規定値以下になっていないため、加速度ベクトルα（ｉ＋３）は、α（ｉ＋３）＝α（ｉ＋１）に設定され、加速度ベクトルα（ｉ＋１）が維持される。
【０１３６】
そして、ｉ＋３フレームにおいて、視線速度ベクトルＶ２（ｉ＋３）がＶ２（ｉ＋２）よりも左側に向けて増大し、それに伴って視線移動量φ（ｉ＋３）が視線移動量φ（ｉ＋２）よりも左側に向けて増大している。これにより、中心Ｐ（ｉ＋４）が視線移動量φ（ｉ＋３）に従って、中心Ｐ（ｉ＋３）より左側の位置に設定される。
【０１３７】
ｉ＋４フレームにおいて、視線ずれベクトルＶ１（ｉ＋４）が規定値以下となった。そのため、加速度ベクトルαの維持が解除される。但し、この解除は、ｉ＋５フレーム以降で有効となるため、ｉ＋４フレームでは、加速度ベクトルα（ｉ＋４）は、α（ｉ＋４）＝α（ｉ＋１）に維持される。ここで、規定値としては、例えば、視線ずれベクトルＶ１の向きが反対側になったｉ＋１フレームでの差分ベクトルΔＶ１（ｉ＋１）の大きさの数分の１（例えば、１／３、１／４等）の値を採用すればよい。
【０１３８】
以後、視線設定部２３は、視線ずれベクトルＶ１の向きが反対側になるまで、図１０〜図１２で示した手法を用いて視線ＬＥを設定する。
【０１３９】
このように、キャラクタＣＡが突然方向を変えた場合、差分ベクトルΔＶ１の大きさ及び向きを持つ加速度ベクトルαが設定され、この加速度ベクトルαにしたがって、視線ＬＥが移動される。そのため、中心ＰがキャラクタＣＡの方向とは反対方向に少しだけ移動した後、方向変換して急速にキャラクタＣＡに向かっていくように視線ＬＥを設定することができる。これにより、キャラクタＣＡが急に方向変換した場合において、視線ＬＥが直ぐにキャラクタＣＡの近傍に設定されることを防止することができる。その結果、カメラの慣性を考慮にいれて視線ＬＥを設定することができ、実際のカメラワークをリアルに再現することが可能となる。
【０１４０】
図１５は、図１に示すゲーム装置の処理を示すフローチャートである。まず、キャラクタ移動部２１は、現フレームのキャラクタＣＡの移動速度ＶＣ（ｉ）を設定し（ステップＳ１）、キャラクタＣＡを仮想３次元空間内で移動させる。
【０１４１】
次に、位置推定部２２は、現フレームより過去のフレームにおけるキャラクタＣＡの移動速度ＶＣ（ｉ−１），ＶＣ（ｉ−１），・・・を用いて、現フレームでのキャラクタの予測移動速度ＰＶ（ｉ）を求める（ステップＳ２）。
【０１４２】
次に、位置推定部２２は、現フレームのキャラクタＣＡの位置を取得する（ステップＳ３）。この場合、位置推定部２２は、ステップＳ１でキャラクタ移動部２１が設定したキャラクタの移動先を現フレームのキャラクタＣＡの位置として取得する。
【０１４３】
次に、位置推定部２２は、式（１）を用いて現フレームの移動推定位置Ｑ（ｉ）を算出する（ステップＳ４）。次に、視線設定部２３は、ステップＳ１９の視線設定処理により設定した次フレームの視線ＬＥ（ｉ＋１）を、現フレームの視線ＬＥ（ｉ）として設定する（ステップＳ５）。ここで、視線設定部２３は、例えば、デフォルトの視線をキャラクタＣＡの位置Ｋに設定する。
【０１４４】
次に、画角設定部２４は、視線ＬＥ（ｉ）を中心に現フレームの画角θ（ｉ）を設定する（ステップＳ６）。ここで、画角設定部２４は、まず、デフォルトの画角を画角θ（ｉ）として設定する。また、画角設定部２４は、後述するステップＳ１２，Ｓ１５で画角θ（ｉ＋１）が前フレームに対して異なる値に設定した場合、次のループのステップＳ６において、ステップＳ１２，Ｓ１５で次フレームに対して設定した画角θ（ｉ＋１）を画角θ（ｉ）として設定する。一方、画角設定部２４は、後述するステップＳ１８で次フレームの画角θ（ｉ＋１）を前フレームの画角θ（ｉ）と同じ値に設定した場合、次のループのステップＳ６において、θ（ｉ＋１）＝θ（ｉ）に設定する。
【０１４５】
次に、投影画像生成部２５は、図３に示すように、視線ＬＥ（ｉ）が仮想スクリーンＳＣの中心に位置し、かつ、仮想スクリーンＳＣの面積が一定の値を持つように、現フレームの仮想スクリーンＳＣ（ｉ）を設定する（ステップＳ７）。
【０１４６】
次に、投影画像生成部２５は、仮想スクリーンＳＣ（ｉ）にキャラクタＣＡを投影変換し、投影画像データを生成する（ステップＳ８）。次に、投影画像生成部２５は、投影画像データを表示部４０に表示させる（ステップＳ９）。
【０１４７】
次に、画角設定部２４は、移動推定位置Ｑ（ｉ）の仮想スクリーンＳＣに投影変換し、移動推定位置Ｑ（ｉ）の投影点Ｒ（ｉ）を求める（ステップＳ１０）。次に、画角設定部２４は、投影点Ｒ（ｉ）が外周領域Ｄ２に位置するか否かを判定する（ステップＳ１１）。そして、画角設定部２４は、投影点Ｒ（ｉ）が外周領域Ｄ２に位置すると判定した場合（ステップＳ１１でＹＥＳ）、次フレームの画角θ（ｉ＋１）が現フレームの画角θ（ｉ）に対して所定角度増大される（ステップＳ１２）。
【０１４８】
一方、ステップＳ１１で、投影点Ｒ（ｉ）が外周領域Ｄ２に位置しておらず、中央領域Ｄ１に位置すると判定された場合（ステップＳ１１でＮＯ）、処理がステップＳ１３に進められる。
【０１４９】
ステップＳ１３において、画角設定部２４は、投影点Ｒが再度、中央領域Ｄ１に入ってから所定期間経過したと判定した場合（ステップＳ１３でＹＥＳ）、投影点Ｒ（ｉ）と外周領域Ｄ２の内周ＩＮとの距離が所定距離以下になったか否かを判定する（ステップＳ１４）。
【０１５０】
そして、画角設定部２４は、投影点Ｒ（ｉ）と外周領域Ｄ２の内周ＩＮとの距離が所定距離以下になった場合（ステップＳ１４でＹＥＳ）、次フレームの画角θ（ｉ＋１）と現フレームの画角θ（ｉ）とを同じ値に設定する（ステップＳ１８）。これにより、画角θを減少する処理が終了される。
【０１５１】
一方、画角設定部２４は、投影点Ｒ（ｉ）と外周領域Ｄ２の内周ＩＮとの距離が所定距離以下になっていない場合（ステップＳ１４でＮＯ）、次フレームの画角θ（ｉ＋１）を現フレームの画角θ（ｉ）に対して所定角度減少させる（ステップＳ１５）。
【０１５２】
次に、画角設定部２４は、減少させた画角θ（ｉ＋１）がデフォルトの画角以下である場合（ステップＳ１６でＹＥＳ）、次フレームの画角θ（ｉ＋１）をデフォルトの画角に設定する（ステップＳ１７）。一方、減少させた画角θ（ｉ＋１）がデフォルトの画角よりも大きい場合（ステップＳ１６でＮＯ）、処理をステップＳ１９に進める。
【０１５３】
これにより、画角θがデフォルトの角度以下となることが防止され、キャラクタＣＡを過度に大きく表示する投影画像データが生成されることを防止することができる。
【０１５４】
一方、ステップＳ１３において、投影点Ｒが再度中央領域Ｄ１に入ってから所定期間が経過していない場合（ステップＳ１３でＮＯ）、次フレームの画角θ（ｉ＋１）が現フレームの画角θ（ｉ）と同じ値に設定される（ステップＳ１８）。つまり、次フレームの画角θ（ｉ＋１）が現フレームの画角θ（ｉ）に維持され、次のループが開始される。
【０１５５】
ステップＳ１３〜Ｓ１８の処理によって、投影点Ｒが、再度、中央領域Ｄ１に入ってから一定期間が経過すると、再度画角θを減少する処理が開始される。これにより、投影画像データにおいて、キャラクタＣＡが漸次に増大していき、見やすい投影画像データを生成することができる。
【０１５６】
ステップＳ１９において、視線設定部２３は次フレームの視線ＬＥ（ｉ＋１）を設定するための視線設定処理を実行し、処理をステップＳ１に戻す。
【０１５７】
図１６は、視線設定処理のフローチャートである。まず、視線設定部２３は、現フレームにおいて、キャラクタＣＡの移動速度ＶＣ（ｉ）が０であるか否かを判定する（ステップＳ２１）。
【０１５８】
そして、移動速度ＶＣ（ｉ）が０の場合において（ステップＳ２１でＹＥＳ）、前フレームで算出した視線速度ベクトルＶ２（ｉ−１）が規定値以下の場合（ステップＳ２２でＹＥＳ）、視線設定部２３は処理をステップＳ３６に進め、視線速度ベクトルＶ２（ｉ−１）が規定値より大きい場合（ステップＳ２２でＮＯ）、処理をステップＳ２３に進める。
【０１５９】
次に、視線設定部２３は、投影点Ｒ（ｉ）から中心Ｐ（ｉ）を差し引き視線ずれベクトルＶ１（ｉ）を算出する（ステップＳ２３）。次に、視線設定部２３は、反転フラグが０であるか否かを判定する（ステップＳ２４）。ここで、反転フラグは、デフォルトで０が設定され、図１３に示すように現フレームの視線ずれベクトルＶ１（ｉ）が前フレームの視線ずれベクトルＶ１（ｉ−１）に対して反対側を向いた場合に１に設定される。
【０１６０】
反転フラグ＝０の場合（ステップＳ２４でＹＥＳ）、視線設定部２３は、視線ずれベクトルＶ１（ｉ）が視線ずれベクトルＶ１（ｉ−１）に対して反対側を向いたか否かを判定し、反対側を向いた場合（ステップＳ２５でＹＥＳ）、反転フラグ＝１に設定し（ステップＳ２７）、処理をステップＳ２６に進める。
【０１６１】
一方、視線ずれベクトルＶ１（ｉ）が視線ずれベクトルＶ１（ｉ−１）に対して反対側を向いていない場合（ステップＳ２５でＮＯ）、処理がステップＳ２６に進められる。ステップＳ２６において、視線設定部２３は、現フレームの視線ずれベクトルＶ１（ｉ）から前フレームの視線ずれベクトルＶ１（ｉ−１）を差し引いた差分ベクトルΔＶ１（ｉ）を算出する。
【０１６２】
次に、視線設定部２３は、差分ベクトルΔＶ１（ｉ）と向きが同じで、差分ベクトルΔＶ１（ｉ）に応じた大きさを持つ加速度ベクトルα（ｉ）を算出する（ステップＳ２８）。次に、視線設定部２３は、前フレームの視線速度ベクトルＶ２（ｉ−１）に加速度ベクトルα（ｉ）を加え、次フレームの視線速度ベクトルＶ２（ｉ）を算出する（ステップＳ２９）。
【０１６３】
次に、視線設定部２３は、視線速度ベクトルＶ２（ｉ）を仮想カメラＣＭと中心Ｐ（ｉ）との距離ｒ（ｉ）で除し、視線角速度ω（ｉ）を算出し、視線角速度ω（ｉ）にフレーム周期Ｔを乗じ、視線移動量φ（ｉ）を算出する（ステップＳ３０）。次に、視線設定部２３は、現フレームの視線ＬＥ（ｉ）を、仮想カメラＣＭを中心として視線移動量φ（ｉ）だけ移動させ、次フレームの視線ＬＥ（ｉ＋１）を設定する（ステップＳ３１）。
【０１６４】
一方、ステップＳ２４において、反転フラグ＝１の場合（ステップＳ２４でＮＯ）、視線設定部２３は、ステップＳ２６と同様にして差分ベクトルΔＶ１（ｉ）を算出する（ステップＳ３２）。
【０１６５】
次に、視線設定部２３は、ステップＳ２３で算出した視線ずれベクトルＶ１（ｉ）が規定値以下の場合（ステップＳ３３でＹＥＳ）、反転フラグを０に戻す（ステップＳ３４）。一方、視線設定部２３は、視線ずれベクトルＶ１（ｉ）が規定値より大きい場合（ステップＳ３３でＮＯ）、反転フラグを１に設定したときのステップＳ２８で算出した加速度ベクトルαで現フレームの加速度ベクトルα（ｉ）を設定し、加速度ベクトルを維持し（ステップＳ３５）、処理をステップＳ２９に進める。
【０１６６】
つまり、視線設定部２３は、視線ずれベクトルＶ１の向きが反対側になると、反転フラグを１に設定し、視線ずれベクトルＶ１の大きさが規定値以下となるまで、反転フラグを１に設定したときの加速度ベクトルαを維持する。これにより、図１４に示すように、キャラクタＣＡが突然向きを変えた場合、キャラクタＣＡと逆方向に視線ＬＥを少しだけ移動させた後、移動方向を切り替えてキャラクタＣＡを急速に追いかけるように視線ＬＥを設定することができる。そして、視線ＬＥと投影点Ｒとの距離がある程度まで縮まると、反転フラグが０に戻されて、ステップＳ２６〜Ｓ３１に示す通常の視線設定処理が実行される。
【０１６７】
ステップＳ３６において、視線設定部２３は、現フレームの視線速度ベクトルＶ２（ｉ）を前フレームの視線速度ベクトルＶ２（ｉ−１）と同じに設定し、視線速度ベクトルＶ２が規定値以下となったときの速度に維持する。
【０１６８】
次に、視線設定部２３は、ステップＳ３０と同様にして視線移動量φ（ｉ）を算出する（ステップＳ３７）。次に、視線設定部２３は、視線ＬＥ（ｉ＋１）が投影点Ｒを超えた場合（ステップＳ３８でＹＥＳ）、キャラクタＣＡの位置Ｋに視線ＬＥ（ｉ＋１）を設定し（ステップＳ３９）、処理をリターンする。
【０１６９】
一方、視線ＬＥ（ｉ＋１）がキャラクタＣＡの位置Ｋを超えなかった場合（ステップＳ３８でＮＯ）、視線設定部２３は、ステップＳ３７で算出した視線移動量φ（ｉ）で視線ＬＥ（ｉ）をずらした位置に視線ＬＥ（ｉ＋１）を設定し（ステップＳ３１）、処理をリターンする。ステップＳ３６〜Ｓ３９により、図１２に示すキャラクタＣＡが停止されている場合の視線設定処理が実現される。
【０１７０】
次に、本ゲーム装置の具体例について説明する。図１７〜図１９は、本ゲーム装置において、実際に表示部４０に表示される投影画像データを示した図である。まず、図１７において、所定の画角に設定された仮想スクリーンＳＣに投手を模擬したキャラクタＣＡが投影されて投影画像データが生成され、表示部４０に表示されている。ここで、キャラクタＣＡは停止しているため、キャラクタＣＡの鼻の位置に移動推定位置Ｑが設定されている。なお、移動推定位置Ｑを示すプラスの記号は説明の便宜上表示したものであり、実際には表示されない。
【０１７１】
図１８において、キャラクタＣＡがしゃがんだため、移動推定位置Ｑが中央領域Ｄ１から外周領域Ｄ２に侵入した。そのため、画角が増大する処理が開始され、図１９に示すような投影画像データが生成され、表示部４０に表示される。図１９に示すように、移動推定位置Ｑが中央領域Ｄ１内に位置しており、キャラクタＣＡが図１８に比べて画面の中央寄りに表示され、実際のカメラワークが模擬されていることが分かる。なお、説明の便宜上、図１７のキャラクタＣＡは図１８のキャラクタＣＡよりも大きく表示されているが、実際には同じサイズである。
【０１７２】
このように、本ゲーム装置によれば、実際のカメラワークを模擬するように視線ＬＥを設定し、投影画像データを生成することができる。
【符号の説明】
【０１７３】
１０  操作部
２０  制御部
２１  キャラクタ移動部
２２  位置推定部
２３  視線設定部
２４  画角設定部
２５  撮影画像生成部
３０  キャラクタ情報記憶部
４０  表示部
ＢＮ  ボーン
ＣＡ  キャラクタ
ＣＭ  仮想カメラ
ＶＣ  移動速度
Ｄ１  中央領域
Ｄ２  外周領域
ｈ  オフセット
Ｋ  位置
ＬＥ  視線
ＮＤ  ノード
ＮＤｘ  ノード（基準ノード）
ＮＰ  鼻
Ｐ  中心
ＰＶ  予測移動速度
Ｑ  移動推定位置
Ｒ  投影点
ＳＣ  仮想スクリーン
ＳＦ  水平面
ＳＲ  仮想スクリーン
Ｖ１  視線ずれベクトル
Ｖ２  視線速度ベクトル
α  加速度ベクトル
ΔＶ１      差分ベクトル
θ  画角
φ  視線移動量
【図１】
0005143883.tif 000002
【図２】
0005143883.tif 000003
【図３】
0005143883.tif 000004
【図４】
0005143883.tif 000005
【図５】
0005143883.tif 000006
【図６】
0005143883.tif 000007
【図７】
0005143883.tif 000008
【図８】
0005143883.tif 000009
【図９】
0005143883.tif 000010
【図１０】
0005143883.tif 000011
【図１１】
0005143883.tif 000012
【図１２】
0005143883.tif 000013
【図１３】
0005143883.tif 000014
【図１４】
0005143883.tif 000015
【図１５】
0005143883.tif 000016
【図１６】
0005143883.tif 000017
【図１７】
0005143883.tif 000018
【図１８】
0005143883.tif 000019
【図１９】
0005143883.tif 000020