(57)【要約】【課題】状況に応じた適切な立体視表現を実現できるプログラム、情報記憶媒体、画像生成システム等の提供。【解決手段】画像生成システムは、オブジェクト空間設定部と、キャラクタ制御部と、仮想カメラ制御部と、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、オブジェクト空間において左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部を含む。【選択図】図４
2011215918.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、
仮想カメラの制御を行う仮想カメラ制御部と、
前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの位置情報に基づいて、前記キャラクタ又は前記仮想カメラが位置する場所のマップ情報を取得し、取得されたマップ情報に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項３】
請求項２において、
前記カメラ間距離設定部は、
前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが高い場所に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが低い場所に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記カメラ間距離設定部は、
ゲームにおいて前記キャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項５】
請求項４において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの方向が、前記ターゲットオブジェクトが位置する方向に向いたと判断された場合に、前記カメラ間距離を変化させる処理を行うことを特徴とするプログラム。
【請求項６】
請求項５において、
前記カメラ間距離設定部は、
前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから遠い距離に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから近い距離に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記カメラ間距離設定部は、
前記仮想カメラと前記キャラクタとの間に障害物オブジェクトが存在すると判断した場合に、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記カメラ間距離設定部は、
前記オブジェクト空間内にターゲットポイントが設定された場合に、前記キャラクタ又は前記仮想カメラを前記ターゲットポイントの方に誘導するための前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項９】
請求項８において、
前記カメラ間距離設定部は、
前記オブジェクト空間内にターゲットポイントが設定された場合に、前記カメラ間距離を広くする処理を行い、前記キャラクタ又は前記仮想カメラが前記ターゲットポイントに近づくにつれて、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの移動速度に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項１１】
請求項１０において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの移動速度が速くなるにつれて、前記カメラ間距離を広くする処理を行うことを特徴とするプログラム。
【請求項１２】
請求項１乃至１１のいずれかにおいて、
前記カメラ間距離設定部は、
前記オブジェクト空間内の各場所における前記キャラクタ又は前記仮想カメラの存在履歴情報に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタが装備する装備オブジェクトの種類に応じて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項１４】
請求項１乃至１３のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタのモーションに基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項１５】
請求項１乃至１４のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタに対して所定のイベントが発生した場合に、前記カメラ間距離を広くする処理と狭くする処理を繰り返す前記カメラ間距離の変動処理を行うことを特徴とするプログラム。
【請求項１６】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、
前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項１７】
請求項１６において、
前記時間パラメータ演算部は、
前記時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行い、
前記カメラ間距離設定部は、
前記経過時間パラメータにより表される経過時間が長くなるにつれて、前記カメラ間距離を広くする処理を行うことを特徴とするプログラム。
【請求項１８】
請求項１６又は１７において、
プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部として、
コンピュータを機能させ、
前記カメラ間距離設定部は、
前記ゲーム環境の設定処理において、前記カメラ間距離の基準距離が設定された場合に、前記時間パラメータで表される時間が長くなるにつれて、前記カメラ間距離を前記基準距離に近づける処理を行うことを特徴とするプログラム。
【請求項１９】
請求項１乃至１８のいずれかにおいて、
プレーヤが操作する操作部から入力される操作情報を取得する操作情報取得部として、
コンピュータを機能させ、
前記カメラ間距離設定部は、
取得された前記操作情報をモニタし、前記操作情報のモニタ結果に基づいて前記カメラ間距離を制御することを特徴とするプログラム。
【請求項２０】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至１９のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項２１】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、
仮想カメラの制御を行う仮想カメラ制御部と、
前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部と、
を含むことを特徴とする画像生成システム。
【請求項２２】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、
前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部と、
を含むことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【０００２】
近年、映画やゲーム等の分野において、より臨場感が溢れる画像を生成するシステムとして、立体視画像の生成システムが脚光を浴びている。この立体視画像の生成システムでは、左目用カメラから見える左目用画像と右目用カメラから見える右目用画像を生成する。そしてプレーヤが立体視用の眼鏡を装着して、左目は左目用画像のみを見て、右目は右目用画像のみを見るようにすることで、立体視を実現する。このような立体視を実現する画像生成システムの従来技術としては、例えば特許文献１に開示される技術がある。
【０００３】
この立体視では、左目用カメラと右目用カメラの間のカメラ間距離が広くなれば、プレーヤは、より強い立体感を感じるようになる。一方、カメラ間距離が狭くなれば、立体感は控えめになる。
【０００４】
しかしながら、これまでのゲーム装置などの画像生成システムでは、このカメラ間距離を固定していた。このため、状況に応じた効果的な立体視表現（３Ｄ表現）を実現できなかった。
【０００５】
この場合に、例えば場面に応じてカメラ間距離を切り替える手法も考えられる。例えば、遠距離を見渡すような場面では、カメラ間距離を広くして、立体感を強くし、近距離のものを見るような場面では、カメラ間距離を狭くして、近距離のものを見やすくする手法である。
【０００６】
しかしながら、ゲーム装置等においては、このような場面に応じたカメラ間距離の切り替えだけでは、ゲーム状況に応じた適切な立体視表現を実現することは難しい。即ち、ゲーム装置では、プレーヤが操作部を用いて入力した操作情報に応じて、ゲーム状況が様々に変化してしまい、このゲーム状況の変化を予想することは難しい。従って、場面に応じた切り替えだけでは、ゲーム状況に応じた適切な距離にカメラ間距離を設定することは難しい。例えばキャラクタが遠距離を見渡すことができる場所に立っていたとしても、プレーヤの操作によりキャラクタが向きを変えた場合に、キャラクタの向く方向によっては、キャラクタの目の前に他の物体が存在するような状況もあり得る。従って、遠距離を見渡すことができる場面であるという理由だけで、カメラ間距離を広くしてしまうと、目の前の物体を見た時に、立体感が強すぎて、プレーヤが不自然さを感じるおそれがある。
【０００７】
また、プレーヤの操作によりキャラクタがマップ上を移動する場合に、マップの各場所に応じて、キャラクタから見える視界状況は多様に変化する。従って、このような多様な視界状況の変化に対して、場面によるカメラ間距離の切り替え手法だけで対応することは難しい。また、プレーヤの操作によっては、仮想カメラ（視点）とキャラクタの間に障害物オブジェクトが入ってしまう事態も生じ、このような事態はゲーム場面の判断だけでは予想できない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１２６９０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の幾つかの態様によれば、状況に応じた適切な立体視表現を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【００１０】
本発明の一態様は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、仮想カメラの制御を行う仮想カメラ制御部と、前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【００１１】
本発明の一態様では、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離が設定される。そして、このようにカメラ間距離が設定された左目用仮想カメラ、右目用仮想カメラから見える画像が、左目用画像、右目用画像として生成されるようになる。このようにすれば、キャラクタや仮想カメラの位置や方向や移動状態を反映させたカメラ間距離の制御が可能になる。従って、単にゲームの場面に応じてカメラ間距離を制御する手法に比べて、状況に応じた適切な立体視表現を実現できる。
【００１２】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの位置情報に基づいて、前記キャラクタ又は前記仮想カメラが位置する場所のマップ情報を取得し、取得されたマップ情報に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００１３】
このようにすれば、マップ情報に関連づけられた各種の情報を用いて、カメラ間距離を設定できるため、よりインテリジェントなカメラ間距離の制御を実現できる。
【００１４】
また本発明の一態様では、前記カメラ間距離設定部は、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが高い場所に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが低い場所に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【００１５】
このようにすれば、キャラクタ又は仮想カメラが高い場所に位置する場合には、左目用仮想カメラと右目用仮想カメラの間のカメラ間距離が広くなるため、遠景を見るのに適した立体視の設定になる。一方、キャラクタ又は仮想カメラが低い場所に位置する場合には、カメラ間距離が狭くなるため、キャラクタや仮想カメラの周りの近景を見るのに適した立体視の設定になる。
【００１６】
また本発明の一態様では、前記カメラ間距離設定部は、ゲームにおいて前記キャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００１７】
このようにすれば、ゲームにおいてキャラクタの行動等の対象となるターゲットオブジェクトの位置や方向や移動状態を反映させたカメラ間距離の制御が可能になる。
【００１８】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの方向が、前記ターゲットオブジェクトが位置する方向に向いたと判断された場合に、前記カメラ間距離を変化させる処理を行ってもよい。
【００１９】
このようにすれば、キャラクタ又は仮想カメラの方向が、ターゲットオブジェクトの方に向いている場合に、キャラクタ又は仮想カメラとターゲットオブジェクトとの位置関係等に応じたカメラ間距離の制御を行うことが可能になる。
【００２０】
また本発明の一態様では、前記カメラ間距離設定部は、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから遠い距離に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから近い距離に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【００２１】
このようにすれば、キャラクタ又は仮想カメラの方向が、ターゲットオブジェクトの方に向いていると判断された後に、キャラクタ又は仮想カメラとターゲットオブジェクトの間の距離に応じて、カメラ間距離が制御されるようになる。これにより、ターゲットオブジェクトの立体視での視認性を向上できる。
【００２２】
また本発明の一態様では、前記カメラ間距離設定部は、前記仮想カメラと前記キャラクタとの間に障害物オブジェクトが存在すると判断した場合に、前記カメラ間距離を狭くする処理を行ってもよい。
【００２３】
このようにすれば、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合に、カメラ間距離が狭くなるように制御されるため、不自然な画像がプレーヤに表示されてしまう事態を防止できる。
【００２４】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内にターゲットポイントが設定された場合に、前記キャラクタ又は前記仮想カメラを前記ターゲットポイントの方に誘導するための前記カメラ間距離の設定処理を行ってもよい。
【００２５】
このようにすれば、カメラ間距離の設定による立体感の制御を有効利用して、キャラクタ又は仮想カメラをターゲットポイントの方に誘導することが可能になる。
【００２６】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内にターゲットポイントが設定された場合に、前記カメラ間距離を広くする処理を行い、前記キャラクタ又は前記仮想カメラが前記ターゲットポイントに近づくにつれて、前記カメラ間距離を狭くする処理を行ってもよい。
【００２７】
このようにすれば、ターゲットポイントが設定された場合に、カメラ間距離が広くなることで、ターゲットポイントが遠くの位置にあっても、立体視における視認が容易になる。そしてキャラクタ又は仮想カメラがターゲットポイントに近づくにつれて、カメラ間距離が狭くなるため、ターゲットポイントの周りのオブジェクト等の視認性を向上できる。
【００２８】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの移動速度に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００２９】
このようにすれば、キャラクタ又は仮想カメラの移動速度を反映させたカメラ間距離の制御が可能になる。
【００３０】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの移動速度が速くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【００３１】
このようにすれば、キャラクタ又は仮想カメラの移動速度が速くなると、カメラ間距離が広くなって、遠景の立体感が適切に表現されるようになる。従って、遠くにあるターゲットポイントに、キャラクタ又は仮想カメラを適切に誘導することが可能になる。
【００３２】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内の各場所における前記キャラクタ又は前記仮想カメラの存在履歴情報に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００３３】
このようにすれば、オブジェクト空間内での各場所でのキャラクタ又は仮想カメラの存在履歴情報を反映させて、カメラ間距離を制御できるようになる。
【００３４】
この場合に、例えば前記カメラ間距離設定部は、前記存在履歴情報に基づいて前記キャラクタ又は前記仮想カメラの存在頻度が低いと判断された場所では、前記カメラ間距離を狭くする処理を行い、前記存在履歴情報に基づいて前記キャラクタ又は前記仮想カメラの存在頻度が高いと判断された場所では、前記カメラ間距離を広くする処理を行ってもよい。
【００３５】
このようにすれば、キャラクタ又は仮想カメラが、過去における存在頻度が低い場所に位置する場合には、カメラ間距離が狭くなり、存在頻度が高い場所に位置する場合には、カメラ間距離が広くなる。従って、初めて来たような場所では、立体視における近景での視認性が向上し、何度も来ているような場所では、立体視における遠景での視認性が向上するようになる。
【００３６】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタが装備する装備オブジェクトの種類に応じて、前記カメラ間距離の設定処理を行ってもよい。
【００３７】
このようにすれば、キャラクタが装備するオブジェクトの種類を反映させたカメラ間距離の制御が可能になる。
【００３８】
この場合に、前記装備オブジェクトは武器オブジェクトであってもよい。そして、前記カメラ間距離設定部は、前記武器オブジェクトが近距離攻撃用のオブジェクトである場合には、前記カメラ間距離を狭くする処理を行い、前記武器オブジェクトが遠距離攻撃用のオブジェクトである場合には、前記カメラ間距離を広くする処理を行ってもよい。
【００３９】
このようにすれば、キャラクタが近距離攻撃用オブジェクトを装備した場合には、カメラ間距離が狭くなるため、近距離の敵等に対する攻撃が容易化される。一方、キャラクタが遠距離攻撃用オブジェクトを装備した場合には、カメラ間距離が広くなるため、遠距離の敵等に対する攻撃が容易化される。
【００４０】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタのモーションに基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００４１】
このようにすれば、キャラクタのモーションを反映させたインテリジェントなカメラ間距離の制御が可能になる。
【００４２】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタに対して所定のイベントが発生した場合に、前記カメラ間距離を広くする処理と狭くする処理を繰り返す前記カメラ間距離の変動処理を行ってもよい。
【００４３】
このようにすれば、カメラ間距離を変動させることによる立体視強度の変動を利用した演出効果を実現できる。
【００４４】
また本発明の他の態様は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【００４５】
本発明の他の態様では、ゲームに関する時間パラメータの演算処理が行われ、この時間パラメータに基づいて、左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離が設定される。そして、このようにカメラ間距離が設定された左目用仮想カメラ、右目用仮想カメラから見える画像が、左目用画像、右目用画像として生成されるようになる。このようにすれば、時間パラメータの変化等を反映させたカメラ間距離の制御が可能になる。従って、単にゲームの場面に応じてカメラ間距離を制御する手法に比べて、状況に応じた適切な立体視表現を実現できる。
【００４６】
また本発明の他の態様では、前記時間パラメータ演算部は、前記時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行い、前記カメラ間距離設定部は、前記経過時間パラメータにより表される経過時間が長くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【００４７】
このようにすれば、ゲームの経過時間が長くなるにつれて、カメラ間距離が広くなる。従って、プレーヤが立体視の視界環境に慣れた状況になった後に、カメラ間距離を広くできるため、立体視強度が強すぎることによるプレーヤの違和感を緩和できる。
【００４８】
ここで経過時間パラメータは、プレーヤの累積プレイ時間を表す累積プレイ時間パラメータであってもよい。そして前記カメラ間距離設定部は、前記累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【００４９】
このようにすれば、ゲームの累積プレイ時間が長くなるにつれて、カメラ間距離が広くなる。従って、プレーヤが立体視の視界環境に慣れた状況になった後に、カメラ間距離を広くできるため、立体視強度が強すぎることによるプレーヤの違和感を緩和できる。
【００５０】
また本発明の他の態様では、プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部を含み（ゲーム環境設定部としてコンピュータを機能させ）、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において、前記カメラ間距離の基準距離が設定された場合に、前記時間パラメータで表される時間が長くなるにつれて、前記カメラ間距離を前記基準距離に近づける処理を行ってもよい。
【００５１】
このようにすれば、プレーヤは、ゲーム環境の設定においてカメラ間距離の基準距離を設定できるようになる。そして、時間パラメータの時間が長くなるにつれて、カメラ間距離が基準距離に近づくようになる。従って、プレーヤの意思を反映させたカメラ間距離の制御が可能になる。
【００５２】
また本発明の他の態様では、プレーヤが操作する操作部から入力される操作情報を取得する操作情報取得部を含み（操作情報取得部としてとしてコンピュータを機能させ）、前記カメラ間距離設定部は、取得された前記操作情報をモニタし、モニタ結果に基づいて前記カメラ間距離を制御してもよい。
【００５３】
このようにすれば、操作部から入力される操作情報を反映させたカメラ間距離の制御が可能になる。
【００５４】
この場合に、前記カメラ間距離設定部は、前記時間パラメータにより表される時間が長くなるにつれて、前記カメラ間距離を広くする処理を行うと共に、所定の期間、前記操作情報が入力されなかったと判断した場合には、広くなった前記カメラ間距離を狭くする処理を行ってもよい。
【００５５】
このようにすれば、所定の期間、操作情報が入力された場合には、プレーヤがゲームをプレイしてないと判断して、カメラ間距離が狭く設定される。従って、その後に、プレーヤがゲームプレイを再開した時には、カメラ間距離が狭い状態でゲームが再開されるようになるため、プレーヤが感じる違和感を低減できる。
【００５６】
また、前記カメラ間距離設定部は、前記操作情報の入力頻度が基準頻度よりも多いと判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【００５７】
このようにすれば、操作情報の入力頻度が多い場合には、カメラ間距離が狭くなり、立体視における近景での視認性が向上するようになる。
【００５８】
なお、プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部を含ませ（ゲーム環境設定部としてコンピュータを機能させ）、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において設定された前記カメラ間距離の変化許容範囲及び前記カメラ間距離の基準距離の少なくとも一方に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【００５９】
このようにすれば、プレーヤは、ゲーム環境の設定において、カメラ間距離の変化許容範囲や基準距離を設定できるようになる。そして、設定された変化許容範囲や基準距離を反映させたカメラ間距離の制御が可能になり、ユーザの意思を反映させることが可能になる。
【００６０】
また、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において設定された前記変化許容範囲内で、前記カメラ間距離を変化させる処理を行ってもよい。
【００６１】
このようにすれば、プレーヤの意思等をある程度反映させながら、その変化許容範囲でカメラ間距離を変化させることが可能になる。従って、プレーヤの個人差を吸収しながら、カメラ間距離を設定することが可能になり、これまでにない立体視のインターフェース環境を構築できる。
【図面の簡単な説明】
【００６２】
【図１】本実施形態の画像生成システムの構成例。
【図２】図２（Ａ）〜図２（Ｃ）は本実施形態のカメラ間距離の設定手法の説明図。
【図３】図３（Ａ）〜図３（Ｄ）はマップ情報に基づくカメラ間距離の設定手法の説明図。
【図４】マップ情報に基づくカメラ間距離の設定処理のフローチャート。
【図５】図５（Ａ）、図５（Ｂ）はターゲットオブジェクトの出現時のカメラ間距離の設定手法の説明図。
【図６】ターゲットオブジェクトの出現時のカメラ間距離の設定処理のフローチャート。
【図７】仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定手法の説明図。
【図８】仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定処理のフローチャート。
【図９】図９（Ａ）〜図９（Ｃ）はターゲットポイントの設定によるカメラ間距離の設定手法の説明図。
【図１０】キャラクタの移動速度に応じたカメラ間距離の設定手法の説明図。
【図１１】ターゲットポイントの設定によるカメラ間距離の設定処理のフローチャート。
【図１２】図１２（Ａ）、図１２（Ｂ）は存在履歴情報に基づくカメラ間距離の設定手法の説明図。
【図１３】存在履歴情報に基づくカメラ間距離の設定処理のフローチャート。
【図１４】図１４（Ａ）〜図１４（Ｄ）は装備オブジェクトやモーションに基づくカメラ間距離の設定手法の説明図。
【図１５】図１５（Ａ）、図１５（Ｂ）はヒットイベント発生時にカメラ間距離を変動させる手法の説明図。
【図１６】ヒットイベント発生時にカメラ間距離を変動させる処理のフローチャート。
【図１７】図１７（Ａ）、図１７（Ｂ）は時間パラメータに基づくカメラ間距離の設定手法の説明図。
【図１８】図１８（Ａ）、図１８（Ｂ）は操作部の操作状況に応じたカメラ間距離の設定手法の説明図。
【図１９】図１９（Ａ）、図１９（Ｂ）はゲーム環境設定画面の一例。
【図２０】時間パラメータに基づくカメラ間距離の設定処理のフローチャート。
【発明を実施するための形態】
【００６３】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００６４】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図１に限定されず、その構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００６５】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ（角速度センサ、加速度センサ等）、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００６６】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００６７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００６８】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００６９】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００７０】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００７１】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００７２】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００７３】
処理部１００は、操作情報取得部１０１、ゲーム演算部１０２、オブジェクト空間設定部１０４、キャラクタ制御部１０５、仮想カメラ制御部１０８、時間パラメータ演算部１１０、ゲーム環境設定部１１２、カメラ間距離設定部１１４、画像生成部１２０、音生成部１３０を含む。またゲーム演算部１０２はゲームイベント処理部１０３を含み、キャラクタ制御部１０５は移動処理部１０６、モーション処理部１０７を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００７４】
操作情報取得部１０１は操作情報を取得する。例えばプレーヤが操作する操作部１６０から入力される操作情報を取得する。具体的には、プレーヤが操作部１６０の操作ボタン、操作レバー等を操作することで入力された操作情報は、例えば各フレーム毎に操作部１６０から出力され、操作情報バッファ１７８に記憶されて蓄積される。操作情報取得部１０１は、このようにして入力された各フレームの操作情報を取得する。ここで操作情報は、例えば操作ボタンを押したか否かの情報、操作レバーを倒した角度の情報などである。また操作部１６０が角速度センサ等のモーションセンサを有する場合には、モーションセンサからのセンサ情報も操作情報になる。
【００７５】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００７６】
ゲーム演算部１０２が含むゲームイベント処理部１０３は、ゲームイベントの管理処理を行う。例えばゲームイベント処理部１０３は、敵出現イベント、攻撃イベント、ゲーム展開の切り替えイベント、マップ切り替えイベント等の各種ゲームイベントの発生条件が満たされた否かを判断する。そして発生条件が満たされた場合にその発生条件に対応するゲームイベントを発生させる処理（ゲームイベントのフラグを立てる処理）などを行う。
【００７７】
オブジェクト空間設定部１０４は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行う。例えば、キャラクタ（人、動物、ロボット、車、船舶、飛行機等）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７１には、オブジェクト（パーツオブジェクト）の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。オブジェクト空間設定部１０４は、例えば各フレーム毎にこのオブジェクトデータを更新する処理などを行う。
【００７８】
キャラクタ制御部１０５は、オブジェクト空間を移動（動作）するキャラクタの制御を行う。例えばキャラクタ制御部１０５が含む移動処理部１０６は、キャラクタ（モデルオブジェクト、移動オブジェクト）を移動させる処理を行う。例えば操作部１６０によりプレーヤが入力した操作情報や、プログラム（移動アルゴリズム）や、各種データなどに基づいて、キャラクタをオブジェクト空間内で移動させる。具体的には、キャラクタの移動情報（位置、回転角度、速度、或いは加速度）を、１フレーム（例えば１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動処理やモーション処理や画像生成処理を行う時間の単位である。
【００７９】
キャラクタ制御部１０５が含むモーション処理部１０７は、キャラクタにモーション（アニメーション）を行わせるモーション処理（モーション再生、モーション生成）を行う。このモーション処理は、キャラクタのモーションを、モーションデータ記憶部１７２に記憶されているモーションデータに基づいて再生することなどで実現できる。
【００８０】
具体的にはモーションデータ記憶部１７２には、キャラクタ（モデルオブジェクト）のスケルトンを構成する各骨（キャラクタを構成する各パーツオブジェクト）の位置又は回転角度（親の骨に対する子の骨の３軸周りの回転角度）等を含むモーションデータが記憶されている。モーション処理部１０７は、このモーションデータをモーションデータ記憶部１７２から読み出し、読み出されたモーションデータに基づいてスケルトンを構成する各骨（パーツオブジェクト）を動かすことで（スケルトン形状を変形させることで）、キャラクタのモーションを再生する。
【００８１】
なお、モーションデータ記憶部１７２に記憶されるモーションデータは、現実世界の人にセンサをつけてモーションキャプチャを行うことで作成できるが、モーションデータを、物理シミュレーション（物理計算を利用したシミュレーション。擬似的な物理計算でもよい）やモーションブレンドなどによりリアルタイムに生成してもよい。また、少ないモーションデータ量でリアルなモーションを再生するために、インバース・キネマティクス等を用いてモーション再生を行ってもよい。
【００８２】
またモデルデータ記憶部１７３は、キャラクタを表すモデルオブジェクトのモデルデータを記憶する。このモデルデータは、例えばキャラクタを表すモデルオブジェクトの形状を規定するデータであり、モデルオブジェクトの基本姿勢や基本形状などを決めるデータである。具体的にはモデルデータ記憶部１７３は、モデルオブジェクトのスケルトンを構成する骨の位置（親の骨からの相対位置）や初期回転角度（基本姿勢での各骨の回転角度）などの初期状態情報を記憶する。またモデルオブジェクトの頂点データ（頂点位置等）を記憶する。モーション処理は、モデルデータに含まれる初期回転角度などの初期状態情報を、モーションデータに基づき更新して行くことで実現される。
【００８３】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点、基準仮想カメラ）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００８４】
例えば仮想カメラによりキャラクタを後方から撮影する場合には、キャラクタの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動処理部１０６で得られたキャラクタの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００８５】
時間パラメータ演算部１１０は、時間パラメータの演算処理（設定処理）を行う。例えば時間パラメータが表す時間の経過を計測する処理などを行う。ここで時間パラメータは、ゲームに関する時間を表すパラメータであり、経過時間パラメータなどである。経過時間パラメータは、ゲームの経過時間を表すパラメータであり、例えばゲームが開始してからの経過時間などを表すパラメータである。この経過時間パラメータは累積プレイ時間パラメータであってもよい。累積プレイ時間パラメータは、プレーヤのプレイ経過時間の累積を表すパラメータであり、例えばプレーヤがゲームプレイしていると判断される経過時間を累積（加算）する処理を行うことで得られるパラメータである。なお時間パラメータなどの各種パラメータの値は、パラメータ記憶部１７６に記憶される。
【００８６】
ゲーム環境設定部１１２は、ゲーム環境の設定処理を行う。例えばプレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行う。具体的には、表示部１９０によりゲーム環境の設定画面（オプション設定画面）を表示する。そして、表示されたゲーム環境設定画面においてプレーヤが操作部１６０を用いて入力した情報に基づいて、プレーヤがゲームをプレイにするのに必要な各種のゲーム環境情報を設定する処理を行う。設定されたゲーム環境情報は、ゲーム環境情報記憶部１７７に保存される。
【００８７】
カメラ間距離設定部１１４は、カメラ間距離の設定処理を行う。例えば各種のゲームパラメータ（キャラクタ又は仮想カメラの位置情報、方向情報、移動状態情報のパラメータ、時間パラメータ、ゲームイベントのパラメータ等）に基づいて、カメラ間距離の設定処理を行う。
【００８８】
画像生成部１２０は、処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７９（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現することができる。
【００８９】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００９０】
そして本実施形態ではカメラ間距離設定部１１４は、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも１つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行う。
【００９１】
ここで位置情報は、例えばキャラクタ又は仮想カメラの代表位置の情報（座標）である。方向情報は、例えばキャラクタの方向（向く方向、視線方向、移動方向）、或いは仮想カメラの方向（視線方向、移動方向）の情報である。移動状態情報は、例えばキャラクタ又は仮想カメラの速度情報、加速度情報、或いは移動経路情報などの移動状態を表す情報である。またカメラ間距離は、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表す情報（パラメータ）である。このカメラ間距離は、左目用仮想カメラと右目用仮想カメラとの間の距離そのものであってもよいし、この距離と同等の情報（例えば立体視強度等）であってもよい。
【００９２】
そして画像生成部１２０は、オブジェクト空間において左目用仮想カメラから見える画像である左目用画像（左目用映像）を生成する。またオブジェクト空間において右目用仮想カメラから見える画像である右目用画像（右目用映像）を生成する。即ち左目用仮想カメラの視点でオブジェクト空間のオブジェクトのレンダリングを行って、左目用画像を生成し、右目用仮想カメラの視点でオブジェクト空間のオブジェクトのレンダリングを行って、右目用画像を生成する。
【００９３】
なお仮想カメラ制御部１０８は、例えば左目用仮想カメラと右目用仮想カメラを設定するための基準となる基準仮想カメラの制御を行う。そして、得られた基準仮想カメラの位置情報、方向情報と、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラの位置情報（視点位置）、方向情報（視線方向）を求める。なお仮想カメラ制御部１０８が、左目用仮想カメラや右目用仮想カメラを直接制御するようにしてもよい。また画像生成部１２０は、立体視モードでは、左目用仮想カメラによる左目用画像と、右目用仮想カメラによる右目用画像を生成する。一方、例えば立体視モードではない擬似３次元画像表示モードでは、基準仮想カメラから見える画像を疑似３次元画像として生成する。
【００９４】
また立体方式としては、２眼分離眼鏡方式や、レンティキュラーレンズなどを用いた裸眼方式などの様々な方式を想定できる。２眼分離眼鏡方式としては、例えば偏光眼鏡方式、継時分離方式、２色分離方式などがある。偏光眼鏡方式では、例えば表示部１９０の奇数ラインと偶数ラインに左目用画像と右目用画像を交互に表示し、これを偏光眼鏡（例えば左目に水平方向の偏光フィルタ、右目に垂直方向の偏光フィルタを付けた眼鏡）で見ることで立体視を実現する。或いは左目用画像と右目用画像を特殊な偏光フィルタを有するプロジェクタで投影し、投影画像を偏光眼鏡で見ることで立体視を実現してもよい。また継時分離方式（ページ・フリップ方式）では、表示部１９０に左目用画像、右目用画像を所定期間毎（例えば１／１２０秒毎、１／６０秒毎）に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左目、右目の液晶シャッターを交互に開閉することで、立体視を実現する。２色分離方式では、アナグリフ画像を生成し、赤青眼鏡等で見ることで、立体視を実現する。
【００９５】
また左目用画像と右目用画像から立体視画像を生成する機能は、画像生成部１２０に持たせてもよいし、表示部１９０に持たせてもよい。例えば画像生成部１２０が、サイドバイサイド方式の画像信号を出力する。すると表示部１９０が、このサイドバイサイドの画像信号に基づいて、奇数ラインと偶数ラインに左目用画像と右目用画像が交互に割り当てられるフィールドシーケンシャル方式の画像を表示する。或いは、左目用画像と右目用画像が所定期間毎に交互に切り替えられるフレームシーケンシャル方式の画像を表示する。或いは画像生成部１２０の方が、フィールドシーケンシャル方式やフレームシーケンシャル方式の画像を生成して、表示部１９０に出力するようにしてもよい。
【００９６】
また本実施形態ではカメラ間距離設定部１１４は、キャラクタ又は仮想カメラの位置情報（代表位置情報）に基づいて、キャラクタ又は仮想カメラが位置する場所のマップ情報を取得する。即ち、マップ情報記憶部１７４から、その場所に対応するマップ情報を読み出す。そして取得されたマップ情報に基づいて、カメラ間距離の設定処理を行う。具体的にはカメラ間距離設定部１１４は、マップ情報に基づいてキャラクタ又は仮想カメラが高い場所（基準となる高さよりも高い場所）に位置すると判断された場合には、カメラ間距離を広くする処理を行う。一方、マップ情報に基づいてキャラクタ又は仮想カメラが低い場所（基準となる高さよりも低い場所）に位置すると判断された場合には、カメラ間距離を狭くする処理を行う。
【００９７】
カメラ間距離設定部１１４は、ゲームにおいてキャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報（速度、加速度、移動経路等）の少なくとも１つに基づいて、カメラ間距離の設定処理を行ってもよい。ここで、ターゲットオブジェクトは、キャラクタの攻撃、守備、移動等の行動のターゲットとなるオブジェクトである。そしてカメラ間距離設定部１１４は、例えばキャラクタ又は仮想カメラの方向が、ターゲットオブジェクトが位置する方向に向いたと判断された場合に、カメラ間距離を変化させる処理を行う。具体的には、仮想カメラの視線方向が、ターゲットオブジェクトが位置する方向を含む所定の方向範囲内に入っていると判断された場合に、カメラ間距離を狭くしたり広くする制御を行う。更に具体的には、カメラ間距離設定部１１４は、ターゲットオブジェクトがキャラクタ又は仮想カメラから遠い距離（基準距離よりも遠い距離）に位置すると判断された場合には、カメラ間距離を広くする処理を行う。一方、ターゲットオブジェクトがキャラクタ又は仮想カメラから近い距離（基準距離よりも近い距離）に位置すると判断された場合には、カメラ間距離を狭くする処理を行う。
【００９８】
またカメラ間距離設定部１１４は、仮想カメラとキャラクタとの間に障害物オブジェクトが存在すると判断した場合に、カメラ間距離を狭くする処理を行ってもよい。例えば仮想カメラとキャラクタを結ぶ線分（仮想カメラの位置とキャラクタの代表位置を結ぶ線分）に交差するオブジェクトが検出された場合に、そのオブジェクトを障害物オブジェクトと判断する。そして障害物オブジェクトが検出されている期間では、カメラ間距離を一時的に狭くする処理を行う。
【００９９】
またカメラ間距離設定部１１４は、オブジェクト空間内にターゲットポイントが設定された場合に、キャラクタ又は仮想カメラをターゲットポイントの方に誘導（ナビゲート）するためのカメラ間距離の設定処理を行ってもよい。即ち、ターゲットポイントの方への移動をプレーヤに促すようなカメラ間距離の設定処理を行う。具体的には、オブジェクト空間内にターゲットポイントが設定された場合に、まず、カメラ間距離を広くする処理を行う。そしてキャラクタ又は仮想カメラがターゲットポイントに近づくにつれて、カメラ間距離を狭くする処理を行う。
【０１００】
またカメラ間距離設定部１１４は、キャラクタ又は仮想カメラの移動速度（広義には移動状態情報）に基づいて、カメラ間距離の設定処理を行ってもよい。例えばキャラクタ又は仮想カメラの移動速度が速くなるにつれて、カメラ間距離を広くする処理を行う。なお移動速度は、移動速度そのものであってもよいし、移動速度と等価な情報であってもよい。
【０１０１】
またカメラ間距離設定部１１４は、オブジェクト空間内の各場所におけるキャラクタ又は仮想カメラの存在履歴情報に基づいて、カメラ間距離の設定処理を行ってもよい。ここで存在履歴情報は、キャラクタ又は仮想カメラが移動するゲームフィールド上（マップ上）の各場所でのキャラクタ又は仮想カメラの存在履歴（存在頻度）を表す情報であり、存在履歴情報記憶部１７５に記憶される。具体的にはカメラ間距離設定部１１４は、存在履歴情報に基づいてキャラクタ又は仮想カメラの存在頻度が低いと判断された場所（基準頻度よりも存在頻度が低い場所）では、カメラ間距離を狭くする処理を行う。一方、存在履歴情報に基づいてキャラクタ又は仮想カメラの存在頻度が高いと判断された場所（基準頻度よりも存在頻度が高い場所）では、カメラ間距離を広くする処理を行う。
【０１０２】
またカメラ間距離設定部１１４は、キャラクタが装備する装備オブジェクトの種類に応じて、カメラ間距離の設定処理を行ってもよい。ここで装備オブジェクトが、ゲーム中においてキャラクタが所持したり身に着けたりするオブジェクトであり、例えば武器、衣服、防具、アイテム等のオブジェクトである。そしてカメラ間距離設定部１１４は、武器オブジェクトが近距離攻撃用のオブジェクトである場合には、カメラ間距離を狭くする処理を行う。一方、武器オブジェクトが遠距離攻撃用のオブジェクトである場合には、カメラ間距離を広くする処理を行う。ここで、近距離攻撃用のオブジェクトは、近距離攻撃用の武器等としてテーブルなどにより対応づけられたオブジェクトであり、その攻撃距離が短いオブジェクトである。一方、遠距離攻撃用のオブジェクトは、遠距離攻撃用の武器等としてテーブルなどにより対応づけられたオブジェクトであり、近距離攻撃用のオブジェクトに比べてその攻撃距離が長いオブジェクトである。
【０１０３】
またカメラ間距離設定部１１４は、キャラクタのモーションに基づいて、カメラ間距離の設定処理を行ってもよい。具体的には、各モーション毎に、そのモーションに対応するカメラ間距離を対応づけておき、そのモーションが再生される場合には、再生されるモーションに対応づけられたカメラ間距離で左目用仮想カメラと右目用仮想カメラを設定する。例えばしゃがむモーションを行っている場合と、ジャンプモーションを行っている場合とで、カメラ間距離を異ならせる。
【０１０４】
またカメラ間距離設定部１１４は、キャラクタに対して所定のイベントが発生した場合に、カメラ間距離を広くする処理と狭くする処理を繰り返すカメラ間距離の変動処理を行ってもよい。例えばカメラ間距離を、徐々に振幅が小さくなる変動関数（周期関数）により変動（振動）させる処理を行う。なおゲームにおける各イベントの発生の判断は、ゲーム演算部１０２のゲームイベント処理部１０３が行う。
【０１０５】
また本実施形態では、時間パラメータ演算部１１０が、ゲームに関する時間パラメータの演算処理（計測処理、設定処理）を行うと、カメラ間距離設定部１１４は、その時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行う。例えば時間パラメータ演算部１１０は、時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行う。この場合にはカメラ間距離設定部１１４は、経過時間パラメータにより表される経過時間が長くなるにつれて、カメラ間距離を広くする処理を行う。或いは時間パラメータ演算部１１０は、時間パラメータ（経過時間パラメータ）として、プレーヤの累積プレイ時間を表す累積プレイ時間パラメータの演算処理を行う。この場合にはカメラ間距離設定部１１４は、累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、カメラ間距離を広くする処理を行う。
【０１０６】
またゲーム環境設定部１１２は、例えばゲーム環境設定画面でのプレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行う。この場合に設定されたゲーム環境の情報はゲーム環境情報記憶部１７７に保存される。するとカメラ間距離設定部１１４は、ゲーム環境の設定処理において、カメラ間距離の基準距離が設定された場合には、時間パラメータで表される時間が長くなるにつれて、カメラ間距離を基準距離に近づける処理を行う。即ちプレーヤが設定した基準距離にカメラ間距離を徐々に近づける処理を行う。
【０１０７】
また操作情報取得部１０１は、プレーヤが操作する操作部１６０から入力される操作情報を取得する。そしてカメラ間距離設定部１１４は、操作情報をモニタし、モニタ結果に基づいてカメラ間距離を制御する。具体的には、カメラ間距離設定部１１４は、時間パラメータ（経過時間パラメータ、累積プレイ時間パラメータ）により表される時間（経過時間、累積プレイ時間）が長くなるにつれて、カメラ間距離を広くする処理を行う。そして所定の期間、操作情報が入力されなかったと判断した場合には、広くなったカメラ間距離を狭くする処理を行う。即ち広くしたカメラ間距離を元に戻す処理を行う。更にカメラ間距離設定部１１４は、操作情報の入力頻度（例えば単位時間あたりの入力回数）が基準頻度よりも多いと判断された場合に、カメラ間距離を狭くする処理を行ってもよい。例えばプレーヤが操作部１６０の操作ボタン等を速い速度で連続して操作していると判断された場合に、カメラ間距離を狭くする処理を行う。
【０１０８】
またカメラ間距離設定部１１４は、ゲーム環境設定部１１２によるゲーム環境の設定処理（入力処理）において設定されたカメラ間距離の変化許容範囲及びカメラ間距離の基準距離の少なくとも一方に基づいて、カメラ間距離の設定処理を行ってもよい。即ち、プレーヤがカメラ間距離の変化許容範囲や基準距離を入力した場合には、その範囲やその基準にしたがってカメラ間距離の設定処理を行う。具体的には、ゲーム環境の設定処理において設定された変化許容範囲内で、カメラ間距離を変化させる処理を行う。
【０１０９】
２．本実施形態の手法
次に本実施形態の手法について具体的に説明する。
【０１１０】
２．１  キャラクタの位置情報等に基づくカメラ間距離の設定
立体視では、左目用仮想カメラと右目用仮想カメラのカメラ間距離を広くしたり、狭くすることで、立体感の強弱を制御できる。この場合に、例えばゲーム環境設定のオプション画面などにおいて、カメラ間距離（立体視強度）を設定する第１の手法が考えられる。
【０１１１】
しかしながら、この第１の手法によると、一旦、オプション画面でカメラ間距離を設定すると、ゲーム中は常にそのカメラ間距離で立体視画像が生成されるようになり、ゲーム状況に応じた適切な立体視表現を実現できない。
【０１１２】
一方、例えばゲーム中にプレーヤが操作部１６０を操作することで、カメラ間距離を任意に切り替え可能にする第２の手法も考えられる。例えばプレーヤが操作部１６０の操作レバーを操作することで、立体視強度が「強」「中」「弱」となるようにカメラ間距離を切り替える。この手法によれば、プレーヤは、ゲーム中において自身が所望する立体視強度に切り替えることが可能になる。
【０１１３】
しかしながら、この第２の手法では、カメラ間距離による立体視強度の切り替えにプレーヤの操作を必要とする。このため、様々に変化するゲーム状況に合わせて立体視強度をリアルタイムに変更することは難しい。
【０１１４】
また、ゲームの場面に応じてカメラ間距離を切り替える第３の手法も考えられる。例えば立体視強度を強くしたい場面ではカメラ間距離を広くし、立体視強度を弱くしたい場面ではカメラ間距離を狭くする。
【０１１５】
しかしながら、この第３の手法では、ゲームの場面の切り替え時にしかカメラ間距離は切り替わらないため、カメラ間距離の制御が単調になってしまい、プレーヤの現在のゲーム状況に合わせたインテリジェントなカメラ間距離制御を実現できない。また、強い立体視表現は、プレーヤにとって違和感を感じるものになるが、このような強い立体視表現であっても、時間が経過するにつれてプレーヤは慣れてくる。しかしながら、場面に応じてカメラ間距離を制御する第３の手法では、この点については全く考慮されていない。
【０１１６】
そこで本実施形態では、キャラクタ又は仮想カメラの位置情報や方向情報や移動状態情報に応じて、カメラ間距離を制御する手法を採用している。
【０１１７】
例えば図２（Ａ）において、キャラクタＣＨはオブジェクト空間内のゲームフィールド上を移動しており、仮想カメラＶＣは、このゲームキャラクタＣＨに追従して移動している。この場合に本実施形態では、キャラクタＣＨの位置ＰＣ（代表位置）、方向ＤＣ（向く方向、視線方向、移動方向）、或いは移動状態情報ＭＶＣ（速度、加速度、移動経路）に基づいて、図２（Ｂ）、図２（Ｃ）に示す左目用仮想カメラＶＣＬと右目用仮想カメラＶＣＲのカメラ間距離ＤＳを設定する。或いはプレーヤの視点に相当する仮想カメラＶＣ（ＶＣＬ、ＶＣＲ）の位置ＰＶ（視点位置）、方向ＤＶ（視線方向、移動方向）、或いは移動状態情報ＭＶＶ（速度、加速度、移動経路）に基づいて、カメラ間距離ＤＳを設定する。なお、いわゆる一人称視点の場合には、キャラクタＣＨは表示部１９０に表示されない仮想的なオブジェクトになり、仮想カメラＶＣの視点がプレーヤの視点になって、プレーヤはオブジェクト空間内を移動することになる。
【０１１８】
例えば図２（Ｂ）では、図２（Ａ）に示す位置、方向等の情報に基づいて、カメラ間距離ＤＳを狭くする制御を行っている。このようにカメラ間距離ＤＳを狭くすると、目の前の立体感を強調できる。また立体感が少し控えめになり、近距離のものが立体的に見やすい状態になる。一方、遠方のもの（奥行き方向で遠い位置にあるもの）の立体感は薄れる。
【０１１９】
また図２（Ｃ）では、図２（Ａ）に示す位置、方向等の情報に基づいて、カメラ間距離ＤＳを広くする制御を行っている。このようにカメラ間距離ＤＳを広くすると、奥行きの立体感を強調できるようになる。またプレーヤは、より強い立体感を感じるようになり、遠方のものに対して立体感を感じやすい状態になる。一方、近距離のものについてはチラツキにより見にくい状態になる。
【０１２０】
即ち、場面に応じてカメラ間距離を切り替える上記の第３の手法では、例えば近景のオブジェクトが多いと想定される近距離シーンではカメラ間距離を狭くし、遠景のオブジェクトが多いと想定される遠距離シーンではカメラ間距離を広くする制御を行うことになる。
【０１２１】
しかしながら、キャラクタや仮想カメラの位置、方向、移動状態によっては、近距離シーンであっても、カメラ間距離を広くすべき状況が発生し、遠距離シーンであっても、カメラ間距離を狭くすべき状況が発生する場合がある。例えば、キャラクタの前方には遠距離シーンが広がっているが、キャラクタの後方には近景オブジェクトが存在し、キャラクタが後ろをふり返った場合である。或いは、後述するように、遠距離シーンにおいてキャラクタの目の前に敵キャラクタが出現した場合や、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合などである。更に、場面に応じてカメラ間距離を制御する手法では、例えばゲームステージの切り替え時のタイミングでしか、カメラ間距離を切り替えることができない。このため、キャラクタが移動するマップの高さや形状に応じたインテリジェントなカメラ間距離の制御を実現できない。
【０１２２】
これに対して本実施形態によれば、キャラクタや仮想カメラの位置、方向、移動状態に応じてカメラ間距離が切り替わるようになる。従って、上述のように前方に遠距離シーンが広がっている状況でキャラクタが後ろをふり返った場合に、キャラクタの方向の変化を検出して、カメラ間距離を切り替えることが可能になる。
【０１２３】
即ち、キャラクタが前方を向いている場合には、前方の遠距離シーンに合わせて図２（Ｃ）に示すようにカメラ間距離ＤＳを広くして、遠景オブジェクトの立体感を感じやすい状態にする。そしてキャラクタが後ろを向いたことが検出されると、図２（Ｂ）に示すようにカメラ間距離ＤＳを狭くする。これにより、キャラクタの後方に存在する近景オブジェクトの立体感を感じやすい状態に切り替えることができる。即ち、キャラクタが後ろをふり返った時に、図２（Ｃ）のようにカメラ間距離ＤＳが広い状態のままであると、後方にある近景オブジェクトがチラツキにより見にくい状態になってしまうが、本実施形態によれば、このような事態を防止できる。
【０１２４】
また、後述するように、遠距離シーンにおいてキャラクタの目の前に敵キャラクタが出現した場合でも、キャラクタと敵キャラクタとの位置関係に応じて、カメラ間距離ＤＳを設定することで、そのゲーム状況に合った適切な立体感の制御を実現できる。また、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合に、仮想カメラやキャラクタの位置と障害物オブジェクトの位置に基づいて、障害物オブジェクトの介在を検出し、例えばカメラ間距離ＤＳを狭くする制御などが可能になる。これにより、遠景オブジェクトに合っていたカメラ間距離ＤＳを、近景オブジェクトである障害物オブジェクトに合わせることが可能になり、プレーヤが、より違和感を感じない立体視画像を生成できるようになる。
【０１２５】
２．２  マップ情報に基づくカメラ間距離の設定
次にキャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、マップ情報に基づくカメラ間距離の設定手法について説明する。
【０１２６】
例えば図３（Ａ）では、キャラクタＣＨが移動するゲームフィールド（オブジェクト空間）には、複数のマップブロックＭＢ１、ＭＢ２・・・ＭＢＮにより構成されるマップが設けられている。そして図３（Ａ）では、キャラクタＣＨや仮想カメラＶＣの位置に基づいて、マップ情報を読み出す。具体的には、キャラクタＣＨや仮想カメラＶＣの位置に対応するマップブロックを特定し、そのマップブロックに対応づけられるマップ情報を読み出す。そして、読み出されたマップ情報に基づいてカメラ間距離ＤＳを制御する。
【０１２７】
また図３（Ｂ）に示すように、ＭＢ１〜ＭＢＮの各マップブロックには、各マップブロックを構成する頂点の位置座標（Ｘ、Ｚ座標）と、高さ情報（Ｈ）が関連づけられている。そして、各マップブロック内でのキャラクタＣＨの位置座標と、マップブロックの各頂点の位置座標とに基づいて、各頂点に関連づけられた高さ情報の補間処理を行い、キャラクタＣＨが位置する場所での高さを求める。
【０１２８】
そして図３（Ｃ）に示すように、キャラクタＣＨが高い場所に位置すると判断された場合には、カメラ間距離ＤＳを広くする。こうすることで、高い場所にキャラクタＣＨが位置する場合に、その高い場所に適した立体視の設定で画像を生成できる。即ち、高い場所から遠景を見渡すのに適した立体視の設定で画像が生成される。
【０１２９】
一方、図３（Ｄ）に示すように、キャラクタＣＨが低い場所に位置すると判断された場合には、カメラ間距離ＤＳを狭くする。こうすることで、低い場所にキャラクタＣＨが位置する場合に、その低い場所に適した立体視の設定で画像を生成できる。即ち、低い場所ではキャラクタＣＨの近くに近景オブジェクトが存在する可能性が高く場合に、その近景オブジェクトの画像が自然な立体感で表示されるようになる。
【０１３０】
なお図３（Ａ）〜図３（Ｄ）では、マップ情報の高さ情報に基づいてカメラ間距離ＤＳを設定する場合について説明したが、本実施形態はこれに限定されない。
【０１３１】
例えば各マップブロックに対して各マップブロックでの視界状況情報が関連づけられたマップ情報を用意する。そしてキャラクタ又は仮想カメラが位置するマップブロックでの視界状況情報を読み出して、読み出された視界状況情報に基づいてカメラ間距離ＤＳを設定してもよい。例えば視界状況が遠景の視界状況である場合には、カメラ間距離ＤＳを広くし、視界状況が近景の視界状況である場合には、カメラ間距離ＤＳを狭くする。
【０１３２】
また、マップ情報のマップ属性情報に基づいてカメラ間距離を制御してもよい。例えばキャラクタが位置しているマップが水面のマップである場合には、キャラクタの足下には草木等の近景オブジェクトが存在していない状況である。従って、この場合には、カメラ間距離ＤＳを広くして、水面の奥行き感が強調された立体視画像を生成する。或いは、各マップブロックに対してカメラ間距離ＤＳそのものを関連づけて、各マップブロックでのカメラ間距離ＤＳを制御してもよい。
【０１３３】
次に、マップ情報に基づくカメラ間距離の設定処理の例について、図４のフローチャートを用いて説明する。
【０１３４】
まずキャラクタ又は仮想カメラの位置に基づいて、マップ情報を読み出し、読み出されたマップ情報に基づいて、高さ情報を取得する（ステップＳ１、Ｓ２）。例えばキャラクタ又は仮想カメラの位置に対応するマップブロックを特定し、そのマップブロックのマップ情報により高さ情報を取得する。そして、取得された高さ情報に基づいて、カメラ間距離を設定する（ステップＳ３）。例えば図３（Ｃ）、図３（Ｄ）に示すように、高い場所であればカメラ間距離を広くし、低い場所であればカメラ間距離を狭くする。
【０１３５】
次に、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定する（ステップＳ４）。例えばキャラクタに追従する基準仮想カメラの位置、方向を求め、この基準仮想カメラの位置、方向とカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラの位置、方向を設定する。そして設定された左目用仮想カメラから見える画像を描画して、左目用画像を生成する（ステップＳ５）。また設定された右目用仮想カメラから見える画像を描画して、右目用画像を生成する（ステップＳ６）。そして、生成され左目用画像、右目用画像は、例えばサイドバイサイド方式等の画像信号で表示部１９０に出力される。
【０１３６】
２．３  ターゲットオブジェクトの出現時のカメラ間距離の設定
次にキャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、ターゲットオブジェクトの出現時のカメラ間距離の設定手法について説明する。
【０１３７】
本実施形態では、キャラクタの行動等のターゲットとなるターゲットオブジェクトの位置、方向、移動状態の情報の少なくとも１つに基づいて、カメラ間距離を設定する。例えばキャラクタ又は仮想カメラの位置、方向、移動状態の情報の少なくとも１つと、ターゲットオブジェクトの位置、方向、移動状態の情報の少なくとも１つに基づいて、カメラ間距離を設定する。具体的には、キャラクタ又は仮想カメラとターゲットオブジェクトとの間の、相対的な位置関係や相対的な方向関係や相対的な移動状態の関係に基づいて、カメラ間距離を制御する。
【０１３８】
例えば図５（Ａ）では、キャラクタＣＨの近くに、敵キャラクタであるターゲットオブジェクトＴＯＢが出現している。このようなターゲットオブジェクトＴＯＢの制御処理は、キャラクタＣＨ（仮想カメラ）の位置情報や方向情報に基づいて実現できる。例えばキャラクタＣＨが、ターゲットオブジェクトＴＯＢの出現エリアに近づいたり、キャラクタＣＨがターゲットオブジェクトＴＯＢの方向に向いた時に、ターゲットオブジェクトＴＯＢを出現させたり、ターゲットオブジェクトＴＯＢの行動を開始させる。
【０１３９】
そして図５（Ｂ）では、キャラクタＣＨ（仮想カメラ）の方向が、ターゲットオブジェクトＴＯＢが位置（存在）する方向に向いている。例えばキャラクタＣＨの方向を含む所定の方向範囲内に、ターゲットオブジェクトＴＯＢが位置している。このような状況が発生した場合に、図５（Ｂ）に示すようにカメラ間距離ＤＳを変化させる処理を開始する。即ちカメラ間距離を広くしたり狭くしたりする処理を行う。
【０１４０】
具体的には、ターゲットオブジェクトＴＯＢがキャラクタＣＨ（仮想カメラ）から遠い場所に位置している場合には、カメラ間距離ＤＳを広くする。こうすることで、遠い場所に位置しているターゲットオブジェクトＴＯＢの画像を、適正な立体感で表示できるようになる。即ちプレーヤは、遠景の表示に適した立体感の画像で、ターゲットオブジェクトＴＯＢを見ることができる。
【０１４１】
そして、この状態から、キャラクタＣＨがターゲットオブジェクトＴＯＢの方に近づくと、広くなったカメラ間距離ＤＳを、今度は狭くする。例えばキャラクタＣＨとターゲットオブジェクトＴＯＢとの間の距離が近づくにつれて、カメラ間距離ＤＳを狭くする。このようにすれば、キャラクタＣＨがターゲットオブジェクトＴＯＢの方に近づいた場合に、近い場所に位置しているターゲットオブジェクトＴＯＢの画像を、適正な立体感で表示できるようになる。
【０１４２】
即ち、ターゲットオブジェクトＴＯＢの出現時には、敢えて遠方に偏重した立体視の画像表現にすることで、プレーヤの集中を遠方のターゲットオブジェクトＴＯＢの方に誘導する。そして、キャラクタＣＨがターゲットオブジェクトＴＯＢに近づいた時に、カメラ間距離ＤＳを狭くすることで、例えば、突然に近距離から驚異となるターゲットオブジェクトＴＯＢが出現したかのような画像表現を演出できる。このような立体視表現の制御を行うことで、プレーヤの驚きを倍増させる演出が可能になる。またキャラクタＣＨがターゲットオブジェクトＴＯＢに近づくにつれて、カメラ間距離ＤＳを狭くすることで、キャラクタＣＨがターゲットオブジェクトＴＯＢに徐々に近づいているという感覚を、カメラ間距離ＤＳに基づく立体視強度の制御を利用して、プレーヤに感じさせることが可能になる。
【０１４３】
なおターゲットオブジェクトの位置、方向、移動状態の情報に基づいてカメラ間距離を制御する手法は、図５（Ａ）、図５（Ｂ）で説明した手法に限定されない。例えばキャラクタ（仮想カメラ）の位置とターゲットオブジェクトの位置により求められた相対的な距離情報に基づいて、カメラ間距離を制御したり、キャラクタの方向とターゲットオブジェクトの方向により求められた相対的な方向関係に基づいて、カメラ間距離を制御してもよい。例えばキャラクタとターゲットオブジェクトの距離が近づくにつれてカメラ間距離を狭くしたり、キャラクタの方向とターゲットオブジェクトの方向が正対するにつれてカメラ間距離を広くしたり、狭くしてもよい。またターゲットオブジェクトの移動状態情報である移動経路が、キャラクタの方に向かっていると判断された場合や、キャラクタの移動状態情報である移動経路が、ターゲットオブジェクトの方に向かっていると判断された場合に、カメラ間距離を例えば狭くする制御を行ってもよい。
【０１４４】
次に、ターゲットオブジェクトの出現時のカメラ間距離の設定処理の例について、図６のフローチャートを用いて説明する。
【０１４５】
まず、ターゲットオブジェクト（敵キャラクタ）が出現したか否かを判断する（ステップＳ１１）。例えばキャラクタの位置がターゲットオブジェクトの出現エリアに入った場合に、ターゲットオブジェクトが出現したと判断される。
【０１４６】
次に、キャラクタ又は仮想カメラの方向を含む所定の方向範囲内に、ターゲットオブジェクトが位置するか否かを判断する（ステップＳ１２）。例えばキャラクタ又は仮想カメラの方向を中心とした−α度〜α度（例えばα＝２０度）の方向範囲内に、ターゲットオブジェクトが位置するか否かを判断する。そしてその方向範囲内にターゲットオブジェクトが位置する場合には、キャラクタ又は仮想カメラとターゲットオブジェクトとの距離を求める（ステップＳ１３）。そして求められた距離に基づいて、カメラ間距離を設定する（ステップＳ１４）。例えば、求められた距離が所定の基準距離（距離しきい値）よりも遠い場合には、カメラ間距離を広くし、所定の基準距離よりも近い場合には、カメラ間距離を狭くする。或いは、キャラクタ又は仮想カメラとターゲットオブジェクトの距離が近づくにつれて、徐々にカメラ間距離を狭くする制御を行う。
【０１４７】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ１５〜Ｓ１７）。
【０１４８】
２．４  障害物オブジェクトの介在時のカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定手法について説明する。
【０１４９】
例えば図７では、仮想カメラ（ＶＣ、ＶＣＬ、ＶＣＲ）とキャラクタＣＨの間に障害物オブジェクトＢＯＢが介在し、仮想カメラの視線が遮られている。このような場合に、カメラ間距離ＤＳが広い設定のままであると、目の前に現れた障害物オブジェクトＢＯＢの立体感が強すぎて、プレーヤが不自然さを感じるおそれがある。
【０１５０】
そこで本実施形態では、仮想カメラの位置情報とキャラクタＣＨの位置情報に基づいて、障害物オブジェクトＢＯＢが仮想カメラとキャラクタＣＨの間に入ったか否かを検出する。そして、障害物オブジェクトＢＯＢが仮想カメラとキャラクタＣＨの間に入ったことが検出されると、カメラ間距離ＤＳを狭くする制御を行う。例えば障害物オブジェクトＢＯＢ用に用意された狭い距離に、カメラ間距離ＤＳを設定する。
【０１５１】
こうすることで、障害物オブジェクトＢＯＢがプレーヤの目の前に突然に現れた場合にも、障害物オブジェクトＢＯＢに応じた適切な距離にカメラ間距離ＤＳが設定されるようになるため、障害物オブジェクトＢＯＢの立体感にプレーヤが不自然さを感じる事態を防止できる。
【０１５２】
次に、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定処理の例について、図８のフローチャートを用いて説明する。
【０１５３】
まず仮想カメラ（視点）とキャラクタを結ぶ線分を求める（ステップＳ２１）。例えば仮想カメラの位置とキャラクタの代表位置を結ぶ線分を求める。次に線分に交差するオブジェクトが存在するか否かを判断する（ステップＳ２２）。
【０１５４】
そして、線分に交差するオブジェクトが存在する場合には、当該オブジェクトを障害物オブジェクトであると判断し、図７に示すようにカメラ間距離を狭くする設定を行う（ステップＳ２３）。
【０１５５】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ２４〜Ｓ２６）。
【０１５６】
２．５  ターゲットポイントによるカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、ターゲットポイントによるカメラ間距離の設定手法について説明する。
【０１５７】
ゲームにおいては、ゲームフィールドの所定のポイントにキャラクタ（プレーヤ）を誘導したい場合がある。例えば３次元ゲームでは、３次元空間内で自由にキャラクタが移動できることが原則である。しかしながら、ゲーム進行をスムーズにするために、キャラクタの移動先となるターゲットポイントを設定して、そのターゲットポイントに向かって移動するようにキャラクタを誘導する場合がある。こうすることで、ゲーム制作者が意図するルートに沿ってキャラクタを誘導して移動させることができる。そして、この場合に、誘導されていることをプレーヤが意識できないような自然な感覚で、キャラクタを誘導できることが望ましい。
【０１５８】
そこで本実施形態では、このようなターゲットポイントが、ゲーム空間であるオブジェクト空間内に設定された場合に、カメラ間距離を制御することで、キャラクタ（仮想カメラ）をターゲットポイントの方に誘導する手法を採用している。
【０１５９】
例えば図９（Ａ）では、キャラクタＣＨが通過すべき「秘密のドア」に対してターゲットポイントＴＧが設定されている。このターゲットポイントＴＧは、キャラクタＣＨの移動のターゲットとなるポイントである。図９（Ａ）ではターゲットポイントＴＧが設定されている「秘密のドア」を通過することで、プレーヤは次のステージにゲームを進めることができる。このため、プレーヤが不自然さを感じない手法で、ターゲットポイントＴＧに対してキャラクタＣＨを如何にして誘導するかが重要になる。
【０１６０】
このため図９（Ｂ）では、ターゲットポイントＴＧの発生時に、まずカメラ間距離ＤＳを広くして、遠方に偏重した立体視表現を演出する。こうすることで、プレーヤは、遠方にある「秘密のドア」であっても、立体感が適正に表現されることで、認識しやすくなり、プレーヤの集中を「秘密のドア」であるターゲットポイントＴＧの方に誘導することができる。
【０１６１】
そして、このようにカメラ間距離ＤＳを広くした後、図９（Ｃ）に示すように、キャラクタＣＨ（仮想カメラ）がターゲットポイントＴＧに近づくにつれて、カメラ間距離ＤＳを狭くする制御を行う。この時、例えばキャラクタＣＨ（仮想カメラ）の方向が、ターゲットポイントＴＧの方に向いていることを条件に、ターゲットポイントＴＧに近づくにつれてカメラ間距離ＤＳを狭くする制御を行ってもよい。
【０１６２】
このようにすれば、ターゲットポイントＴＧが出現した後、プレーヤの操作によりキャラクタＣＨがターゲットポイントＴＧの方に近づくと、カメラ間距離ＤＳが変化する。そしてキャラクタＣＨとの距離に応じた適切な立体視表現で、「秘密のドア」の画像が表示されるようになるため、ターゲットポイントＴＧにキャラクタＣＨを誘導する効果を更に高めることができる。例えばキャラクタＣＨがターゲットポイントＴＧの方とは違う方向に移動した場合には、カメラ間距離ＤＳを変化させずに、ターゲットポイントＴＧの方向に移動した場合に、カメラ間距離ＤＳを変化させる。このようにすれば、カメラ間距離ＤＳが変化する方向であるターゲットポイントＴＧの方向に、キャラクタＣＨを誘導することができる。従って、カメラ間距離ＤＳの制御を有効活用して、キャラクタＣＨをターゲットポイントＴＧの方に誘導することが可能になる。
【０１６３】
なお、ターゲットポイントの方にキャラクタ又は仮想カメラを誘導するカメラ間距離の制御手法は、図９（Ａ）〜図９（Ｃ）で説明した手法には限定されない。例えばキャラクタ又は仮想カメラの位置とターゲットポイントの位置との間の相対的な位置関係や、キャラクタ又は仮想カメラの方向とターゲットポイントの存在方向との間の相対的な方向関係や、キャラクタ又は仮想カメラとターゲットポイントとの間の距離などに基づいて、ターゲットポイントの方に誘導するカメラ間距離の制御を行えばよい。例えば複数のターゲットポイントが設定された場合には、これらの複数のターゲットポイントの中から、キャラクタ又は仮想カメラの方向に対応するターゲットポイントを選択する。そして選択されたターゲットポイントとキャラクタ又は仮想カメラとの間の距離等に基づいて、カメラ間距離を設定すればよい。
【０１６４】
また、キャラクタ又は仮想カメラの移動状態情報に基づいて、カメラ間距離を制御してもよい。例えば図１０では、キャラクタＣＨ（仮想カメラ）の移動速度ＶＥを検出し、検出された移動速度ＶＥに基づいてカメラ間距離ＤＳを設定する。具体的には、例えばキャラクタＣＨの移動速度ＶＥが速くなるにつれて、カメラ間距離ＤＳを広くする。
【０１６５】
このようにすれば、キャラクタＣＨが速く移動すれば、より遠景のものの立体感が適切に表現されるようになるため、遠くにあるターゲットポイント等に、キャラクタＣＨを誘導することが可能になる。或いは、プレーヤが操作部の操作レバー等を一定の方向に倒し続けることで、キャラクタＣＨが一定の方向に継続して移動していると判断された場合に、カメラ間距離ＤＳを広くする制御を行うようにしてもよい。このようにすれば、プレーヤの操作により移動するキャラクタＣＨの移動方向に存在する遠景のオブジェクトが、より適切な立体視の画像で表示されるようになる。従って、その遠景オブジェクトに近づいているという感覚をプレーヤに与えることができ、よりスムーズでリアルな立体視画像を表示できる。
【０１６６】
次に、ターゲットポイントによるカメラ間距離の設定処理の例について、図１１のフローチャートを用いて説明する。
【０１６７】
まず、ターゲットポイントが設定されたか否かを判断し（ステップＳ３１）、ターゲットポイントが設定された場合には、図９（Ａ）、図９（Ｂ）で説明したようにカメラ間距離を広くする設定を行う（ステップＳ３２）。
【０１６８】
次に、キャラクタ又は仮想カメラとターゲットポイントの間の距離が所定距離内か否かを判断する（ステップＳ３３）。そして、所定距離内になった場合には、図９（Ｃ）で説明したように、キャラクタ又は仮想カメラとターゲットポイントの間の距離に応じて、カメラ間距離を設定する（ステップＳ３４）。例えばキャラクタ又は仮想カメラとターゲットポイントの距離が近づくにつれて、カメラ間距離を狭くする。
【０１６９】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ３５〜Ｓ３７）。
【０１７０】
２．６  存在履歴情報に基づくカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、存在履歴情報に基づくカメラ間距離の設定手法について説明する。
【０１７１】
３次元ゲームにおいては、初めて来た場所と、何度も来ている場所とでは、プレーヤの余裕も異なり、周りの状況の見え方も異なってくる。
【０１７２】
そして、初めて来た場所では、プレーヤはその場所を見慣れていないため、プレーヤが操作するキャラクタの近くにある近景オブジェクトが、より適切な立体視表現で表示されていることが望ましい。
【０１７３】
一方、何度も来ている場所では、プレーヤはその場所を見慣れているため、近景オブジェクトを適切な立体視表現で表示する必要性が薄れる。そして、余裕のあるプレーヤに対して、遠景を見渡せるような画像を表示することが望ましい。
【０１７４】
そこで本実施形態では、オブジェクト空間内の各場所におけるキャラクタ（仮想カメラ）の存在履歴情報に基づいて、カメラ間距離を制御する。例えば、存在履歴情報に基づいて、キャラクタ（仮想カメラ）の存在頻度が低いと判断された場所では、例えばカメラ間距離を狭くする。一方、存在頻度が高いと判断された場所では、カメラ間距離を広くする。
【０１７５】
具体的には図１２（Ａ）に示すように、キャラクタＣＨが移動するゲームフィールドのマップを複数のマップブロックＭＢ１〜ＭＢＮに分割する。そして、これらの複数のマップブロックＭＢ１〜ＭＢＮの中から、キャラクタＣＨ（仮想カメラＶＣ）が位置するマップブロックを特定する。
【０１７６】
そして例えば図１２（Ｂ）に示すように、各マップブロックに対して、各マップブロックでのキャラクタＣＨの存在頻度が関連づけられた存在履歴情報を用意する。そして、この存在履歴情報に基づいて、キャラクタＣＨが位置するマップブロックに関連づけられた存在頻度を読み出す。こうすることで、そのマップブロックが、初めて来た場所なのか、何度も来ている場所なのかを判断できる。
【０１７７】
例えば図１２（Ｂ）において、マップブロックＭＢ１には存在頻度＝０が関連づけられている。従って、キャラクタＣＨの位置するマップブロックがＭＢ１である場合には、そのマップブロックは初めて来た場所であると判断できる。一方、マップブロックＭＢ３には存在頻度＝６が関連づけられている。従って、キャラクタＣＨの位置するマップブロックがＭＢ３である場合には、そのマップブロックは何度も来ている場所であると判断できる。
【０１７８】
そして、例えばマップブロックＭＢ１のように初めて来た場所である場合には、プレーヤに余裕がなく、周囲の状況をあまり把握できていないと想定して、カメラ間距離を狭くする。こうすることで、プレーヤは、キャラクタＣＨの周りに存在する近景オブジェクトを、適切な立体感で把握できるようになり、プレーヤの不安感を取り除くことができる。
【０１７９】
一方、マップブロックＭＢ３のように何度も来ている場所である場合には、プレーヤに余裕があり、周囲の状況を十分に把握できていると想定して、カメラ間距離を広くする。こうすることで、プレーヤは、キャラクタＣＨの近くに存在する近景オブジェクトよりも、キャラクタＣＨの遠くにある遠景オブジェクトの方を適切な立体感で把握できるようになり、スムーズなゲーム進行を実現できる。
【０１８０】
なお、存在履歴情報に基づくカメラ間距離の設定手法は、図１２（Ａ）、図１２（Ｂ）で説明した手法に限定されるものではない。例えば存在履歴情報は、図１２（Ｂ）に示すようにマップ情報のマップブロックに関連づけられた情報には限定されず、他の情報に関連づけられた情報であってもよい。また、上記とは逆に、存在頻度が低い場所ではカメラ間距離を広くし、存在頻度が高い場所ではカメラ間距離を狭くするような制御を行ってもよい。また存在頻度に加えて、上述したようなキャラクタの位置、方向、移動状態や、ターゲットオブジェクトやターゲットポイントの位置、方向等も反映させて、カメラ間距離を制御してもよい。
【０１８１】
次に、存在履歴情報に基づくカメラ間距離の設定処理の例について、図１３のフローチャートを用いて説明する。
【０１８２】
まず、キャラクタ又は仮想カメラの位置に基づいて、マップ情報を読み出す（ステップＳ４１）。そして、読み出されたマップ情報に関連づけられた存在履歴情報に基づいて、存在頻度を取得する（ステップＳ４２）。例えば図１２（Ａ）、図１２（Ｂ）に示すように、キャラクタ等の位置に基づいてマップ情報のマップブロックを特定し、そのマップブロックに対応する存在頻度を読み出す。
【０１８３】
次に、存在履歴情報の更新処理を行う（ステップＳ４３）。即ち、そのマップブロックにキャラクタ等が位置したことが検出されたため、そのマップブロックに関連づけられた存在頻度を例えば１だけインクリメントする。
【０１８４】
次に、取得された存在頻度に基づいて、カメラ間距離を設定する（ステップＳ４４）。例えば存在頻度が低い場合には、カメラ間距離を狭くして、近景オブジェクトが見やすくなる立体視の設定にする。一方、存在頻度が高い場合には、カメラ間距離を広くして、遠景オブジェクトが見やすくなる立体視の設定にする。
【０１８５】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ４５〜Ｓ４７）。
【０１８６】
２．７  装備オブジェクト、モーション、発生イベントに基づくカメラ間距離の設定
次に、装備オブジェクト、モーション、発生イベント等に基づく本実施形態の種々のカメラ間距離の設定手法について説明する。
【０１８７】
本実施形態では、例えばキャラクタが装備するオブジェクトに基づいてカメラ間距離を設定してもよい。具体的には、例えば図１４（Ａ）に示すように、ＥＯＢ１、ＥＯＢ２、ＥＯＢ３等の各装備オブジェクトに対して、ＤＳ１、ＤＳ２、ＤＳ３等の各カメラ間距離が関連づけられたテーブル等を用意する。そして、例えばキャラクタが装備オブジェクトＥＯＢ１を装備した場合には、そのキャラクタに対応する左目用・右目用の仮想カメラのカメラ間距離をＤＳ１に設定する。同様に装備オブジェクトＥＯＢ２、ＥＯＢ３を装備した場合には、カメラ間距離をＤＳ２、ＤＳ３に設定する。
【０１８８】
このようにすれば、キャラクタの装備オブジェクトに応じたカメラ間距離を設定して、立体視画像を生成できるようになる。
【０１８９】
例えば図１４（Ｂ）では、キャラクタＣＨは、武器オブジェクトとして、近距離攻撃用のオブジェクトＥＯＢ１（例えばナイフ、拳銃等）を装備している。この場合には、接近戦の準備をしていると考え、カメラ間距離ＤＳを狭くし、近距離に適した立体視表現にする。このようにすれば、プレーヤは、近距離の敵に対する攻撃が容易になる。
【０１９０】
一方、図１４（Ｃ）では、キャラクタＣＨは、武器オブジェクトとして遠距離攻撃用のオブジェクトＥＯＢ２（例えばライフル等）を装備している。この場合には、遠距離のものを狙うために、カメラ間距離ＤＳを広くして、奥行き感を強調する。このようにすれば、プレーヤは、遠距離の敵に対する攻撃が容易になる。
【０１９１】
なおカメラ間距離の切り替え対象となる装備オブジェクトは、図１４（Ｂ）、図１４（Ｃ）に示すような武器オブジェクトには限定されない。例えば遠距離視認用のアイテムオブジェクト（双眼鏡、望遠鏡等）や近距離視認用のアイテムオブジェクト（虫眼鏡等）を用意する。そして遠距離視認用のアイテムオブジェクトを装備した場合には、カメラ間距離を広くし、近距離視認用のアイテムオブジェクトを装備した場合には、カメラ間距離を狭くしてもよい。
【０１９２】
またキャラクタのモーションに応じてカメラ間距離を制御してもよい。例えば図１４（Ｄ）に示すように、ＮＭＳ１、ＮＭＳ２、ＮＭＳ３等の各モーション番号に対して、ＤＳ１、ＤＳ２、ＤＳ３等の各カメラ間距離が関連づけられたテーブル等を用意する。そして、キャラクタの再生モーションのモーション番号がＮＭＳ１である場合には、カメラ間距離をＤＳ１に設定し、モーション番号がＮＭＳ２である場合には、カメラ間距離をＤＳ２に設定する。
【０１９３】
例えば、キャラクタのモーションがジャンプモーションである場合には、キャラクタの視界は遠距離を見ている視界であると想定できる。従って、この場合には例えばカメラ間距離ＤＳを広くして、奥行き感を強調した立体視表現にする。
【０１９４】
一方、キャラクタのモーションがしゃがみのモーションである場合には、キャラクタの視界は近距離の視界であると想定できる。従って、この場合には例えばカメラ間距離ＤＳを狭くして、近距離に適した立体視表現にする。
【０１９５】
このようにすれば、キャラクタのモーションに対応する視界状況に適切なカメラ間距離で、立体視画像が生成されるようになるため、よりインテリジェントなカメラ間距離制御を実現できる。
【０１９６】
なお、キャラクタのモーションに応じてカメラ間距離を制御する手法は、図１４（Ｄ）等で説明した手法には限定されない。例えばキャラクタのモーションの各モーションフレームに応じて、カメラ間距離を変化させてもよい。例えば前半のモーションフレームにおいてはキャラクタの視点が高い位置に設定され、後半のモーションフレームにおいてはキャラクタの視点が低い位置に設定されるモーションがあったとする。この場合には、前半のモーションフレームにおいては、カメラ間距離を広くして、奥行き感を強調し、後半のモーションフレームにおいては、カメラ間距離を狭くして、近距離に適した立体視表現にする。このようにすることで、更に綿密なカメラ間距離の制御を実現できる。
【０１９７】
また本実施形態では、発生したイベントの種類に応じて、カメラ間距離を設定してもよい。例えばキャラクタに対して所定のイベントが発生した場合に、カメラ間距離を変動させる処理を行う。即ち、カメラ間距離を広くする処理と狭くする処理を繰り返す。
【０１９８】
例えば図１５（Ａ）では、キャラクタＣＨに対して弾丸等のヒットオブジェクトがヒットするイベントが発生している。この場合には、カメラ間距離ＤＳを所定の周期で変動させる処理を行う。具体的には図１５（Ｂ）に示すように、後述する基準距離ＤＳＲを中心に、カメラ間距離ＤＳを周期的に変動させると共に、その振幅を徐々に小さくする。
【０１９９】
このようにすれば、例えばプレーヤが操作するキャラクタＣＨが高いダメージを受けた場合に、カメラ間距離ＤＳがゆらゆらと変動し、プレーヤの集中力の低下やめまい感を演出することが可能になる。即ちカメラ間距離ＤＳが変動すると、立体視の強度が変動し、立体視の見え方も変動するようになる。従って、あたかも弾丸等のヒットオブジェクトＨＯＢのヒットにより、一定期間の間、めまいが生じているような演出効果を創出できる。
【０２００】
次に、図１５（Ａ）、図１５（Ｂ）で説明したカメラ間距離の変動処理の例について、図１６のフローチャートを用いて説明する。
【０２０１】
まず図１５（Ａ）で説明したように、キャラクタにヒットオブジェクトがヒットしたか否かを判定する（ステップＳ５１）。そして、ヒットしたと判定された場合には、ヒットオブジェクトのヒット強さ、ヒット方向等のヒット情報を取得する（ステップＳ５２）。
【０２０２】
次に、取得されたヒット情報に基づいて、図１５（Ｂ）に示すようなカメラ間距離の変動関数を設定する（ステップＳ５３）。具体的には、変動関数の振幅や、変動周期や、変動が開始してから終了するまでの変動期間などを設定する。例えばヒット強さが大きかった場合や、ヒット方向が正面方向であった場合には、変動関数の振幅を大きくしたり、変動周期を速くしたり、変動期間を長くする。
【０２０３】
次に、設定された変動関数に基づいて、カメラ間距離を設定する（ステップＳ５４）。即ち、変動関数に基づいて、各時間におけるカメラ間距離を取得して設定する。
【０２０４】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ５５〜Ｓ５７）。
【０２０５】
次に、変動関数の変動期間が終了したか否かを判断する（ステップＳ５８）。そして、変動期間が終了していない場合にはステップＳ５４に戻り、変動期間が終了した場合には、処理を終了する。
【０２０６】
２．８  時間パラメータに基づくカメラ間距離の設定
次に、時間パラメータに基づくカメラ間距離の設定手法について説明する。
【０２０７】
人間が物体の立体感を感じるのは、左右の目が空間的に離れていることに起因して網膜の結像がずれる両眼視差や、左右の目が内側に向く機能である輻輳や、水晶体の厚さが物体までの距離に応答するピント調整などの生理的機能に起因する。人間は、これらの生理的機能である両眼視差、輻輳、ピント調整等を脳内で処理して立体感を感じている。
【０２０８】
しかしながら、このような立体感を立体視画像により実現する場合には、眼鏡をかけるなどの通常とは異なる視界状況でプレーヤは立体視画像を見ることになる。このため、ゲームプレイの開始時に、あまりに立体視強度が強い立体視画像を表示すると、プレーヤが違和感を感じるおそれがある。即ち、立体視画像による立体感は、最初は、より効果的に働き、あまりに強すぎる立体感だと、かえって見にくく感じるおそれがある。
【０２０９】
一方、プレーヤは、立体視による立体感の効果に時間が経過するにつれて徐々に慣れてくる。そして、プレーヤが立体視に慣れてくると、徐々に立体感の効果が薄れてくるため、より誇張した立体感でも、プレーヤはそれほど違和感を感じないようになる。
【０２１０】
そこで本実施形態では、まず、ゲームに関する時間パラメータを取得する演算処理を行う。例えばフレーム更新毎に、ゲーム開始からのフレーム更新数をカウントして、ゲームの経過時間を表す経過時間パラメータを取得する。或いは、プレーヤがゲームを行っている期間においてフレーム更新数をカウントし、このカウント値を累積することで、プレーヤの累積プレイ経過時間を表す累積プレイ時間パラメータを経過時間パラメータとして取得する。なお画像生成システムが、時間を計測するタイマを有する場合には、タイマからの時間情報に基づいて経過時間パラメータや累積プレイ時間パラメータを求めてもよい。
【０２１１】
そして本実施形態では、このように取得された時間パラメータに基づいて、左目用仮想カメラと右目用仮想カメラの間のカメラ間距離を設定して、左目用画像及び右目用画像を生成する。例えば、時間パラメータの１つである経過時間パラメータにより表される経過時間が長くなるにつれて、カメラ間距離を広くする制御を行う。或いは時間パラメータの１つである累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、カメラ間距離を広くする制御を行う。
【０２１２】
図１７（Ａ）、図１７（Ｂ）に時間パラメータに基づくカメラ間距離の制御の一例を示す。
【０２１３】
図１７（Ａ）では、例えばゲームが開始してから所定期間ＴＩＮが経過するまでは、カメラ間距離ＤＳを短い距離（例えば下限距離）に設定する。そしてゲーム開始から所定期間ＴＩＮが経過した後に、カメラ間距離ＤＳを増加させる。例えば時間パラメータにより表される時間が長くなるにつれて、カメラ間距離ＤＳを基準距離ＤＳＲに近づける処理を行う。
【０２１４】
このようにすれば、所定期間ＴＩＮが経過して、プレーヤが立体視の視界環境に慣れた後に、カメラ間距離ＤＳを増加させて、カメラ間距離ＤＳを基準距離ＤＳＲに設定できる。従って、ゲーム開始時に、強い立体感によりプレーヤが違和感を感じてしまう事態を防止できる。そして所定期間ＴＩＮの経過により、プレーヤが立体視に慣れると、標準的立体感を与える基準距離ＤＳＲに、カメラ間距離ＤＳを設定して、立体視画像をプレーヤに表示できるようになる。
【０２１５】
この時、図１７（Ｂ）に示すように、プレーヤが、後述するゲーム環境の設定画面等において、カメラ間距離ＤＳの下限距離ＤＳＬ、基準距離ＤＳＲ、上限距離ＤＳＨを設定できるようにしておく。そして、ゲーム開始後、所定期間ＴＩＮが経過するまでの間は、カメラ間距離ＤＳを下限距離ＤＳＬに設定する。
【０２１６】
そして、所定期間ＴＩＮが経過すると、カメラ間距離ＤＳを増加させて、標準的なカメラ間距離である基準距離ＤＳＲに設定する。その後、図２（Ａ）〜図１６で説明した手法によりカメラ間距離ＤＳを変化させる場合にも、上限距離ＤＳＨを超えないようにカメラ間距離ＤＳを制御する。例えば図３（Ｃ）や図９（Ｂ）でカメラ間距離ＤＳを広くする場合にも、カメラ間距離ＤＳが上限距離ＤＳＨを超えないように制御する。また図１５（Ｂ）に示すようにカメラ間距離ＤＳを変動させて、めまい感等を演出する場合にも、変動関数の振幅の最大値が、上限距離ＤＳＨを超えないように制御する。このようにすれば、ある程度、プレーヤの意思や希望を反映させながら、その範囲でカメラ間距離ＤＳを変化させることが可能になる。
【０２１７】
また、操作部１６０を用いて入力されたプレーヤの操作情報をモニタ（監視）し、モニタ結果（監視結果）に基づいてカメラ間距離を制御してもよい。
【０２１８】
例えば図１７（Ａ）、図１７（Ｂ）に示すように、時間パラメータにより表される時間が長くなるにつれて、カメラ間距離ＤＳを広くする制御を行う。そして図１８（Ａ）に示すように、所定の期間ＴＮＯＰ、操作情報が入力されなかったと判断した場合には、広くなったカメラ間距離ＤＳを狭くする。その後、操作情報が入力されるようになったら、カメラ間距離ＤＳを広くして、基準距離ＤＳＲに戻す。
【０２１９】
即ち、操作部１６０（コントローラ）の未入力期間（ＴＮＯＰ）が長かった場合には、プレーヤがゲームプレイを中断して、休んでいると考えられる。従って、この場合には、カメラ間距離ＤＳを短くして、立体感を弱くする。例えばカメラ間距離ＤＳを図１７（Ｂ）の下限距離ＤＳＬに設定する。このようにすれば、次にゲームを再開するまでは、カメラ間距離ＤＳが下限距離ＤＳＬに設定されるようになる。従って、次のゲーム再開時に、強い立体感の立体視画像が表示されて、プレーヤが違和感を感じてしまう事態を防止できる。
【０２２０】
そして、プレーヤがゲームプレイを再開して、操作情報の入力が検出されると、所定期間が経過した後に、短くなったカメラ間距離ＤＳを増加させて、基準距離ＤＳＲに戻す。これにより、立体感の効果が、基準距離ＤＳＲによる標準的な設定に戻るようになる。従って、プレーヤは、ゲームの中断の前の元の視界状況で、立体視ゲームのプレイを楽しめるようになる。
【０２２１】
また本実施形態では、プレーヤが操作する操作部１６０から入力される操作情報の入力頻度を監視し、監視結果に基づいてカメラ間距離を制御してもよい。具体的には、操作情報の入力頻度が基準頻度よりも多いと判断された場合には、カメラ間距離を狭くする制御を行う。
【０２２２】
例えば図１８（Ｂ）に、入力頻度に基づくカメラ間距離ＤＳの設定例を示す。図１８（Ｂ）では、入力頻度が第１の基準頻度ＦＲ１よりも少ない場合にはカメラ間距離ＤＳはＤＳ１に設定される。また第１の基準頻度ＦＲ１と第２の基準頻度ＦＲ２の間では、カメラ間距離ＤＳはＤＳ２（ＤＳ２＜ＤＳ１）に設定され、第２の基準頻度ＦＲ２よりも多い場合には、カメラ間距離ＤＳはＤＳ３（ＤＳ３＜ＤＳ２）に設定される。
【０２２３】
例えばプレーヤによる操作部１６０の入力頻度が多い場合には、プレーヤが操作するキャラクタの周りに多数の敵等が存在し、これに対処するためにプレーヤが一生懸命に操作部１６０を操作していると考えられる。従って、この場合には、近景の敵等の立体感が適正に表示されるように、カメラ間距離ＤＳを狭くする（例えばＤＳ＝ＤＳ３）。こうすることで、プレーヤは、近くの敵を正しい立体感で認識して、これに対処できるようになるため、プレーヤに余裕を与えて、スムーズなゲーム進行を実現できるようになる。
【０２２４】
一方、操作部１６０の入力頻度が少ない場合には、プレーヤがキャラクタの周りの状況をじっくりと確認している状況であると考えられる。従って、この場合には、遠景の立体感が適正に表示されるように、カメラ間距離ＤＳを広くする（例えばＤＳ＝ＤＳ１）。こうすることで、プレーヤは、例えば周囲の敵を倒した後、遠景のターゲット等を正しい立体感で認識して、その後のキャラクタの行動を決定できるようになる。
【０２２５】
なお、操作部１６０の入力頻度に基づくカメラ間距離の設定は図１９（Ｂ）に示す設定には限定されない。例えば、図１９（Ｂ）とは逆に、操作部１６０の入力頻度が多くなるにつれて、カメラ間距離ＤＳを広くするような制御を行うことも可能である。
【０２２６】
図１９（Ａ）、図１９（Ｂ）に、プレーヤが自身のゲームプレイの環境を設定するためのゲーム環境の設定画面（オプション設定画面）の例を示す。
【０２２７】
例えば図１９（Ａ）では、プレーヤは、ゲーム環境設定の立体視オプションとして、立体視方式、立体視強度、テレビサイズ、テレビまでの距離等を設定できるようになっている。立体視方式としては、前述のように偏光眼鏡を使用する偏光方式や、液晶シャッター等を用いるシャッター方式などの種々の方式を設定できる。
【０２２８】
また、立体視強度は、カメラ間距離ＤＳに対応するものであり、プレーヤは、この立体視強度を設定することで、自身が所望する立体感で立体視画像を見ることが可能になる。
【０２２９】
テレビサイズは、立体視画像が表示するテレビ（表示部）のサイズである。テレビまでの距離は、プレーヤの視聴位置からテレビまでの距離である。これらのテレビサイズやテレビまでの距離が変わると、同じカメラ間距離の設定であっても、プレーヤが感じる立体感の強さは異なったものになる。従って、テレビサイズやテレビまでの距離に応じて、カメラ間距離の補正処理を行うことが望ましい。
【０２３０】
また図１９（Ｂ）では、立体視強度として、上限値、基準値、下限値を設定できるようになっている。ここで、上限値、基準値、下限値は、図１７（Ｂ）で説明した上限距離ＤＳＨ、基準距離ＤＳＲ、下限距離ＤＳＬに対応するものである。そして立体視強度の上限値に対応する上限距離ＤＳＨと、下限値に対応する下限距離ＤＳＬによって、カメラ間距離ＤＳの変化許容範囲が設定される。
【０２３１】
そして本実施形態では、図１９（Ｂ）のゲーム環境設定画面で設定されたカメラ間距離ＤＳの変化許容範囲（ＤＳＨ〜ＤＳＬ）及び基準距離ＤＳＲの少なくとも一方に基づいて、カメラ間距離ＤＳの設定処理を行う。例えばゲーム環境設定画面で設定された変化許容範囲内で、カメラ間距離ＤＳが変化するように制御する。
【０２３２】
具体的には図１７（Ａ）、図１７（Ｂ）では、時間経過につれて、ゲーム環境設定画面でプレーヤが設定した基準距離ＤＳＲに近づくようにカメラ間距離ＤＳを制御する。この場合に図１７（Ｂ）に示すように、上限距離ＤＳＨと下限距離ＤＳＬで設定される変化許容範囲を超えないように、カメラ間距離ＤＳを制御する。また図１５（Ｂ）では、ゲーム環境設定画面で設定された基準距離ＤＳＲを中心とした変動関数で、カメラ間距離ＤＳを変動させる。またカメラ間距離ＤＳの変動関数の振幅が、上限距離ＤＳＨと下限距離ＤＳＬで設定される変化許容範囲を超えないように制御する。また図３（Ｃ）、図５（Ｂ）、図７、図９（Ｂ）、図９（Ｃ）等でカメラ間距離ＤＳを制御するときも、カメラ間距離ＤＳを基準距離ＤＳＲに近づける制御や、カメラ間距離ＤＳが変化許容範囲を超えないようにする制御を行う。
【０２３３】
このようにすれば、プレーヤ（ユーザ）の意思をある程度反映させながら、その範囲でカメラ間距離を変化させることが可能になる。即ち、立体視強度の基準値の設定のみならず、その変換レンジについてもプレーヤが任意に決めることが可能になる。従って、プレーヤの個人差を吸収しながら、ゲーム状況に応じたカメラ間距離を設定することが可能になり、これまでにない立体視のインターフェース環境を構築できる。
【０２３４】
なお図１９（Ｂ）において、例えばＤＳＬ＝０．７、ＤＳＲ＝１．２、ＤＳＨ＝１．５に設定した場合には、基準距離を１．２にすると共に、０．７〜１．５のレンジでカメラ間距離を変化させる。一方、ＤＳＬ＝ＤＳＲ＝ＤＳＨに設定した場合には、カメラ間距離が固定された立体視画像が生成されるようにしてもよい。
【０２３５】
次に、時間パラメータに基づくカメラ間距離の設定処理の例について、図２０のフローチャートを用いて説明する。
【０２３６】
まず、フレーム更新のタイミングか否かを判断する（ステップＳ６１）。そしてフレーム更新のタイミングである場合には、時間パラメータを更新する（ステップＳ６２）。例えば、時間経過を表すフレーム更新数を１だけインクリメントする。
【０２３７】
次に、図１７（Ｂ）等で説明したように、ゲーム開始から所定期間（ＴＩＮ）が経過したか否かを判断する（ステップＳ６３）。そして、所定期間が経過していない場合には、カメラ間距離を下限距離（ＤＳＬ）に設定する（ステップＳ６４）。一方、所定期間が経過している場合には、カメラ間距離を基準距離（ＤＳＲ）に近づくように増加させる（ステップＳ６５）。
【０２３８】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する（ステップＳ６６〜Ｓ６８）。
【０２３９】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、カメラ間距離の設定処理、時間パラメータの演算処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【０２４０】
ＣＨ  キャラクタ、ＶＣ  仮想カメラ、
ＰＶ  仮想カメラの位置、ＤＶ  仮想カメラの方向、
ＭＶＶ  仮想カメラの移動状態情報、
ＰＣ  キャラクタの位置、ＤＣ  キャラクタの方向、
ＭＶＣ  キャラクタの移動状態情報、
ＶＣＬ  左目用仮想カメラ、ＶＣＲ  右目用仮想カメラ、ＤＳ  カメラ間距離、
ＤＳＲ  基準距離、ＤＳＨ  上限距離、ＤＳＬ  下限距離、
１００  処理部、１０１  操作情報取得部、１０２  ゲーム演算部、
１０３  ゲームイベント処理部、１０４  オブジェクト空間設定部、
１０５  キャラクタ制御部、１０６  移動処理部、１０７  モーション処理部、
１０８  仮想カメラ制御部、１１０  時間パラメータ演算部、
１１２  ゲーム環境設定部、１１４  カメラ間距離設定部、
１２０  画像生成部、１３０  音生成部、１６０  操作部、
１７０  記憶部、１７１  オブジェクトデータ記憶部、
１７２  モーションデータ記憶部、１７３  モデルデータ記憶部、
１７４  マップ情報記憶部、１７５  存在履歴情報記憶部、１７６  パラメータ記憶部、
１７７  ゲーム環境情報記憶部、１７８  操作情報バッファ、１７９  描画バッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９４  補助記憶装置、
１９６  通信部
【図１】
2011215918.tif 000003
【図２】
2011215918.tif 000004
【図３】
2011215918.tif 000005
【図４】
2011215918.tif 000006
【図５】
2011215918.tif 000007
【図６】
2011215918.tif 000008
【図７】
2011215918.tif 000009
【図８】
2011215918.tif 000010
【図９】
2011215918.tif 000011
【図１０】
2011215918.tif 000012
【図１１】
2011215918.tif 000013
【図１２】
2011215918.tif 000014
【図１３】
2011215918.tif 000015
【図１４】
2011215918.tif 000016
【図１５】
2011215918.tif 000017
【図１６】
2011215918.tif 000018
【図１７】
2011215918.tif 000019
【図１８】
2011215918.tif 000020
【図１９】
2011215918.tif 000021
【図２０】
2011215918.tif 000022