説明

プログラム、情報記憶媒体及び画像生成システム

【課題】状況に応じた適切な立体視表現を実現できるプログラム、情報記憶媒体、画像生成システム等の提供。
【解決手段】画像生成システムは、オブジェクト空間設定部と、キャラクタ制御部と、仮想カメラ制御部と、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、オブジェクト空間において左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
近年、映画やゲーム等の分野において、より臨場感が溢れる画像を生成するシステムとして、立体視画像の生成システムが脚光を浴びている。この立体視画像の生成システムでは、左目用カメラから見える左目用画像と右目用カメラから見える右目用画像を生成する。そしてプレーヤが立体視用の眼鏡を装着して、左目は左目用画像のみを見て、右目は右目用画像のみを見るようにすることで、立体視を実現する。このような立体視を実現する画像生成システムの従来技術としては、例えば特許文献1に開示される技術がある。
【0003】
この立体視では、左目用カメラと右目用カメラの間のカメラ間距離が広くなれば、プレーヤは、より強い立体感を感じるようになる。一方、カメラ間距離が狭くなれば、立体感は控えめになる。
【0004】
しかしながら、これまでのゲーム装置などの画像生成システムでは、このカメラ間距離を固定していた。このため、状況に応じた効果的な立体視表現(3D表現)を実現できなかった。
【0005】
この場合に、例えば場面に応じてカメラ間距離を切り替える手法も考えられる。例えば、遠距離を見渡すような場面では、カメラ間距離を広くして、立体感を強くし、近距離のものを見るような場面では、カメラ間距離を狭くして、近距離のものを見やすくする手法である。
【0006】
しかしながら、ゲーム装置等においては、このような場面に応じたカメラ間距離の切り替えだけでは、ゲーム状況に応じた適切な立体視表現を実現することは難しい。即ち、ゲーム装置では、プレーヤが操作部を用いて入力した操作情報に応じて、ゲーム状況が様々に変化してしまい、このゲーム状況の変化を予想することは難しい。従って、場面に応じた切り替えだけでは、ゲーム状況に応じた適切な距離にカメラ間距離を設定することは難しい。例えばキャラクタが遠距離を見渡すことができる場所に立っていたとしても、プレーヤの操作によりキャラクタが向きを変えた場合に、キャラクタの向く方向によっては、キャラクタの目の前に他の物体が存在するような状況もあり得る。従って、遠距離を見渡すことができる場面であるという理由だけで、カメラ間距離を広くしてしまうと、目の前の物体を見た時に、立体感が強すぎて、プレーヤが不自然さを感じるおそれがある。
【0007】
また、プレーヤの操作によりキャラクタがマップ上を移動する場合に、マップの各場所に応じて、キャラクタから見える視界状況は多様に変化する。従って、このような多様な視界状況の変化に対して、場面によるカメラ間距離の切り替え手法だけで対応することは難しい。また、プレーヤの操作によっては、仮想カメラ(視点)とキャラクタの間に障害物オブジェクトが入ってしまう事態も生じ、このような事態はゲーム場面の判断だけでは予想できない。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−126902号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の幾つかの態様によれば、状況に応じた適切な立体視表現を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0010】
本発明の一態様は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、仮想カメラの制御を行う仮想カメラ制御部と、前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0011】
本発明の一態様では、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離が設定される。そして、このようにカメラ間距離が設定された左目用仮想カメラ、右目用仮想カメラから見える画像が、左目用画像、右目用画像として生成されるようになる。このようにすれば、キャラクタや仮想カメラの位置や方向や移動状態を反映させたカメラ間距離の制御が可能になる。従って、単にゲームの場面に応じてカメラ間距離を制御する手法に比べて、状況に応じた適切な立体視表現を実現できる。
【0012】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの位置情報に基づいて、前記キャラクタ又は前記仮想カメラが位置する場所のマップ情報を取得し、取得されたマップ情報に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0013】
このようにすれば、マップ情報に関連づけられた各種の情報を用いて、カメラ間距離を設定できるため、よりインテリジェントなカメラ間距離の制御を実現できる。
【0014】
また本発明の一態様では、前記カメラ間距離設定部は、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが高い場所に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが低い場所に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【0015】
このようにすれば、キャラクタ又は仮想カメラが高い場所に位置する場合には、左目用仮想カメラと右目用仮想カメラの間のカメラ間距離が広くなるため、遠景を見るのに適した立体視の設定になる。一方、キャラクタ又は仮想カメラが低い場所に位置する場合には、カメラ間距離が狭くなるため、キャラクタや仮想カメラの周りの近景を見るのに適した立体視の設定になる。
【0016】
また本発明の一態様では、前記カメラ間距離設定部は、ゲームにおいて前記キャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0017】
このようにすれば、ゲームにおいてキャラクタの行動等の対象となるターゲットオブジェクトの位置や方向や移動状態を反映させたカメラ間距離の制御が可能になる。
【0018】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの方向が、前記ターゲットオブジェクトが位置する方向に向いたと判断された場合に、前記カメラ間距離を変化させる処理を行ってもよい。
【0019】
このようにすれば、キャラクタ又は仮想カメラの方向が、ターゲットオブジェクトの方に向いている場合に、キャラクタ又は仮想カメラとターゲットオブジェクトとの位置関係等に応じたカメラ間距離の制御を行うことが可能になる。
【0020】
また本発明の一態様では、前記カメラ間距離設定部は、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから遠い距離に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから近い距離に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【0021】
このようにすれば、キャラクタ又は仮想カメラの方向が、ターゲットオブジェクトの方に向いていると判断された後に、キャラクタ又は仮想カメラとターゲットオブジェクトの間の距離に応じて、カメラ間距離が制御されるようになる。これにより、ターゲットオブジェクトの立体視での視認性を向上できる。
【0022】
また本発明の一態様では、前記カメラ間距離設定部は、前記仮想カメラと前記キャラクタとの間に障害物オブジェクトが存在すると判断した場合に、前記カメラ間距離を狭くする処理を行ってもよい。
【0023】
このようにすれば、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合に、カメラ間距離が狭くなるように制御されるため、不自然な画像がプレーヤに表示されてしまう事態を防止できる。
【0024】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内にターゲットポイントが設定された場合に、前記キャラクタ又は前記仮想カメラを前記ターゲットポイントの方に誘導するための前記カメラ間距離の設定処理を行ってもよい。
【0025】
このようにすれば、カメラ間距離の設定による立体感の制御を有効利用して、キャラクタ又は仮想カメラをターゲットポイントの方に誘導することが可能になる。
【0026】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内にターゲットポイントが設定された場合に、前記カメラ間距離を広くする処理を行い、前記キャラクタ又は前記仮想カメラが前記ターゲットポイントに近づくにつれて、前記カメラ間距離を狭くする処理を行ってもよい。
【0027】
このようにすれば、ターゲットポイントが設定された場合に、カメラ間距離が広くなることで、ターゲットポイントが遠くの位置にあっても、立体視における視認が容易になる。そしてキャラクタ又は仮想カメラがターゲットポイントに近づくにつれて、カメラ間距離が狭くなるため、ターゲットポイントの周りのオブジェクト等の視認性を向上できる。
【0028】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの移動速度に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0029】
このようにすれば、キャラクタ又は仮想カメラの移動速度を反映させたカメラ間距離の制御が可能になる。
【0030】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタ又は前記仮想カメラの移動速度が速くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【0031】
このようにすれば、キャラクタ又は仮想カメラの移動速度が速くなると、カメラ間距離が広くなって、遠景の立体感が適切に表現されるようになる。従って、遠くにあるターゲットポイントに、キャラクタ又は仮想カメラを適切に誘導することが可能になる。
【0032】
また本発明の一態様では、前記カメラ間距離設定部は、前記オブジェクト空間内の各場所における前記キャラクタ又は前記仮想カメラの存在履歴情報に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0033】
このようにすれば、オブジェクト空間内での各場所でのキャラクタ又は仮想カメラの存在履歴情報を反映させて、カメラ間距離を制御できるようになる。
【0034】
この場合に、例えば前記カメラ間距離設定部は、前記存在履歴情報に基づいて前記キャラクタ又は前記仮想カメラの存在頻度が低いと判断された場所では、前記カメラ間距離を狭くする処理を行い、前記存在履歴情報に基づいて前記キャラクタ又は前記仮想カメラの存在頻度が高いと判断された場所では、前記カメラ間距離を広くする処理を行ってもよい。
【0035】
このようにすれば、キャラクタ又は仮想カメラが、過去における存在頻度が低い場所に位置する場合には、カメラ間距離が狭くなり、存在頻度が高い場所に位置する場合には、カメラ間距離が広くなる。従って、初めて来たような場所では、立体視における近景での視認性が向上し、何度も来ているような場所では、立体視における遠景での視認性が向上するようになる。
【0036】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタが装備する装備オブジェクトの種類に応じて、前記カメラ間距離の設定処理を行ってもよい。
【0037】
このようにすれば、キャラクタが装備するオブジェクトの種類を反映させたカメラ間距離の制御が可能になる。
【0038】
この場合に、前記装備オブジェクトは武器オブジェクトであってもよい。そして、前記カメラ間距離設定部は、前記武器オブジェクトが近距離攻撃用のオブジェクトである場合には、前記カメラ間距離を狭くする処理を行い、前記武器オブジェクトが遠距離攻撃用のオブジェクトである場合には、前記カメラ間距離を広くする処理を行ってもよい。
【0039】
このようにすれば、キャラクタが近距離攻撃用オブジェクトを装備した場合には、カメラ間距離が狭くなるため、近距離の敵等に対する攻撃が容易化される。一方、キャラクタが遠距離攻撃用オブジェクトを装備した場合には、カメラ間距離が広くなるため、遠距離の敵等に対する攻撃が容易化される。
【0040】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタのモーションに基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0041】
このようにすれば、キャラクタのモーションを反映させたインテリジェントなカメラ間距離の制御が可能になる。
【0042】
また本発明の一態様では、前記カメラ間距離設定部は、前記キャラクタに対して所定のイベントが発生した場合に、前記カメラ間距離を広くする処理と狭くする処理を繰り返す前記カメラ間距離の変動処理を行ってもよい。
【0043】
このようにすれば、カメラ間距離を変動させることによる立体視強度の変動を利用した演出効果を実現できる。
【0044】
また本発明の他の態様は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0045】
本発明の他の態様では、ゲームに関する時間パラメータの演算処理が行われ、この時間パラメータに基づいて、左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離が設定される。そして、このようにカメラ間距離が設定された左目用仮想カメラ、右目用仮想カメラから見える画像が、左目用画像、右目用画像として生成されるようになる。このようにすれば、時間パラメータの変化等を反映させたカメラ間距離の制御が可能になる。従って、単にゲームの場面に応じてカメラ間距離を制御する手法に比べて、状況に応じた適切な立体視表現を実現できる。
【0046】
また本発明の他の態様では、前記時間パラメータ演算部は、前記時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行い、前記カメラ間距離設定部は、前記経過時間パラメータにより表される経過時間が長くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【0047】
このようにすれば、ゲームの経過時間が長くなるにつれて、カメラ間距離が広くなる。従って、プレーヤが立体視の視界環境に慣れた状況になった後に、カメラ間距離を広くできるため、立体視強度が強すぎることによるプレーヤの違和感を緩和できる。
【0048】
ここで経過時間パラメータは、プレーヤの累積プレイ時間を表す累積プレイ時間パラメータであってもよい。そして前記カメラ間距離設定部は、前記累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、前記カメラ間距離を広くする処理を行ってもよい。
【0049】
このようにすれば、ゲームの累積プレイ時間が長くなるにつれて、カメラ間距離が広くなる。従って、プレーヤが立体視の視界環境に慣れた状況になった後に、カメラ間距離を広くできるため、立体視強度が強すぎることによるプレーヤの違和感を緩和できる。
【0050】
また本発明の他の態様では、プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部を含み(ゲーム環境設定部としてコンピュータを機能させ)、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において、前記カメラ間距離の基準距離が設定された場合に、前記時間パラメータで表される時間が長くなるにつれて、前記カメラ間距離を前記基準距離に近づける処理を行ってもよい。
【0051】
このようにすれば、プレーヤは、ゲーム環境の設定においてカメラ間距離の基準距離を設定できるようになる。そして、時間パラメータの時間が長くなるにつれて、カメラ間距離が基準距離に近づくようになる。従って、プレーヤの意思を反映させたカメラ間距離の制御が可能になる。
【0052】
また本発明の他の態様では、プレーヤが操作する操作部から入力される操作情報を取得する操作情報取得部を含み(操作情報取得部としてとしてコンピュータを機能させ)、前記カメラ間距離設定部は、取得された前記操作情報をモニタし、モニタ結果に基づいて前記カメラ間距離を制御してもよい。
【0053】
このようにすれば、操作部から入力される操作情報を反映させたカメラ間距離の制御が可能になる。
【0054】
この場合に、前記カメラ間距離設定部は、前記時間パラメータにより表される時間が長くなるにつれて、前記カメラ間距離を広くする処理を行うと共に、所定の期間、前記操作情報が入力されなかったと判断した場合には、広くなった前記カメラ間距離を狭くする処理を行ってもよい。
【0055】
このようにすれば、所定の期間、操作情報が入力された場合には、プレーヤがゲームをプレイしてないと判断して、カメラ間距離が狭く設定される。従って、その後に、プレーヤがゲームプレイを再開した時には、カメラ間距離が狭い状態でゲームが再開されるようになるため、プレーヤが感じる違和感を低減できる。
【0056】
また、前記カメラ間距離設定部は、前記操作情報の入力頻度が基準頻度よりも多いと判断された場合には、前記カメラ間距離を狭くする処理を行ってもよい。
【0057】
このようにすれば、操作情報の入力頻度が多い場合には、カメラ間距離が狭くなり、立体視における近景での視認性が向上するようになる。
【0058】
なお、プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部を含ませ(ゲーム環境設定部としてコンピュータを機能させ)、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において設定された前記カメラ間距離の変化許容範囲及び前記カメラ間距離の基準距離の少なくとも一方に基づいて、前記カメラ間距離の設定処理を行ってもよい。
【0059】
このようにすれば、プレーヤは、ゲーム環境の設定において、カメラ間距離の変化許容範囲や基準距離を設定できるようになる。そして、設定された変化許容範囲や基準距離を反映させたカメラ間距離の制御が可能になり、ユーザの意思を反映させることが可能になる。
【0060】
また、前記カメラ間距離設定部は、前記ゲーム環境の設定処理において設定された前記変化許容範囲内で、前記カメラ間距離を変化させる処理を行ってもよい。
【0061】
このようにすれば、プレーヤの意思等をある程度反映させながら、その変化許容範囲でカメラ間距離を変化させることが可能になる。従って、プレーヤの個人差を吸収しながら、カメラ間距離を設定することが可能になり、これまでにない立体視のインターフェース環境を構築できる。
【図面の簡単な説明】
【0062】
【図1】本実施形態の画像生成システムの構成例。
【図2】図2(A)〜図2(C)は本実施形態のカメラ間距離の設定手法の説明図。
【図3】図3(A)〜図3(D)はマップ情報に基づくカメラ間距離の設定手法の説明図。
【図4】マップ情報に基づくカメラ間距離の設定処理のフローチャート。
【図5】図5(A)、図5(B)はターゲットオブジェクトの出現時のカメラ間距離の設定手法の説明図。
【図6】ターゲットオブジェクトの出現時のカメラ間距離の設定処理のフローチャート。
【図7】仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定手法の説明図。
【図8】仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定処理のフローチャート。
【図9】図9(A)〜図9(C)はターゲットポイントの設定によるカメラ間距離の設定手法の説明図。
【図10】キャラクタの移動速度に応じたカメラ間距離の設定手法の説明図。
【図11】ターゲットポイントの設定によるカメラ間距離の設定処理のフローチャート。
【図12】図12(A)、図12(B)は存在履歴情報に基づくカメラ間距離の設定手法の説明図。
【図13】存在履歴情報に基づくカメラ間距離の設定処理のフローチャート。
【図14】図14(A)〜図14(D)は装備オブジェクトやモーションに基づくカメラ間距離の設定手法の説明図。
【図15】図15(A)、図15(B)はヒットイベント発生時にカメラ間距離を変動させる手法の説明図。
【図16】ヒットイベント発生時にカメラ間距離を変動させる処理のフローチャート。
【図17】図17(A)、図17(B)は時間パラメータに基づくカメラ間距離の設定手法の説明図。
【図18】図18(A)、図18(B)は操作部の操作状況に応じたカメラ間距離の設定手法の説明図。
【図19】図19(A)、図19(B)はゲーム環境設定画面の一例。
【図20】時間パラメータに基づくカメラ間距離の設定処理のフローチャート。
【発明を実施するための形態】
【0063】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0064】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図1に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0065】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0066】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0067】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0068】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0069】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0070】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0071】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0072】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0073】
処理部100は、操作情報取得部101、ゲーム演算部102、オブジェクト空間設定部104、キャラクタ制御部105、仮想カメラ制御部108、時間パラメータ演算部110、ゲーム環境設定部112、カメラ間距離設定部114、画像生成部120、音生成部130を含む。またゲーム演算部102はゲームイベント処理部103を含み、キャラクタ制御部105は移動処理部106、モーション処理部107を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0074】
操作情報取得部101は操作情報を取得する。例えばプレーヤが操作する操作部160から入力される操作情報を取得する。具体的には、プレーヤが操作部160の操作ボタン、操作レバー等を操作することで入力された操作情報は、例えば各フレーム毎に操作部160から出力され、操作情報バッファ178に記憶されて蓄積される。操作情報取得部101は、このようにして入力された各フレームの操作情報を取得する。ここで操作情報は、例えば操作ボタンを押したか否かの情報、操作レバーを倒した角度の情報などである。また操作部160が角速度センサ等のモーションセンサを有する場合には、モーションセンサからのセンサ情報も操作情報になる。
【0075】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0076】
ゲーム演算部102が含むゲームイベント処理部103は、ゲームイベントの管理処理を行う。例えばゲームイベント処理部103は、敵出現イベント、攻撃イベント、ゲーム展開の切り替えイベント、マップ切り替えイベント等の各種ゲームイベントの発生条件が満たされた否かを判断する。そして発生条件が満たされた場合にその発生条件に対応するゲームイベントを発生させる処理(ゲームイベントのフラグを立てる処理)などを行う。
【0077】
オブジェクト空間設定部104は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行う。例えば、キャラクタ(人、動物、ロボット、車、船舶、飛行機等)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部171には、オブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。オブジェクト空間設定部104は、例えば各フレーム毎にこのオブジェクトデータを更新する処理などを行う。
【0078】
キャラクタ制御部105は、オブジェクト空間を移動(動作)するキャラクタの制御を行う。例えばキャラクタ制御部105が含む移動処理部106は、キャラクタ(モデルオブジェクト、移動オブジェクト)を移動させる処理を行う。例えば操作部160によりプレーヤが入力した操作情報や、プログラム(移動アルゴリズム)や、各種データなどに基づいて、キャラクタをオブジェクト空間内で移動させる。具体的には、キャラクタの移動情報(位置、回転角度、速度、或いは加速度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動処理やモーション処理や画像生成処理を行う時間の単位である。
【0079】
キャラクタ制御部105が含むモーション処理部107は、キャラクタにモーション(アニメーション)を行わせるモーション処理(モーション再生、モーション生成)を行う。このモーション処理は、キャラクタのモーションを、モーションデータ記憶部172に記憶されているモーションデータに基づいて再生することなどで実現できる。
【0080】
具体的にはモーションデータ記憶部172には、キャラクタ(モデルオブジェクト)のスケルトンを構成する各骨(キャラクタを構成する各パーツオブジェクト)の位置又は回転角度(親の骨に対する子の骨の3軸周りの回転角度)等を含むモーションデータが記憶されている。モーション処理部107は、このモーションデータをモーションデータ記憶部172から読み出し、読み出されたモーションデータに基づいてスケルトンを構成する各骨(パーツオブジェクト)を動かすことで(スケルトン形状を変形させることで)、キャラクタのモーションを再生する。
【0081】
なお、モーションデータ記憶部172に記憶されるモーションデータは、現実世界の人にセンサをつけてモーションキャプチャを行うことで作成できるが、モーションデータを、物理シミュレーション(物理計算を利用したシミュレーション。擬似的な物理計算でもよい)やモーションブレンドなどによりリアルタイムに生成してもよい。また、少ないモーションデータ量でリアルなモーションを再生するために、インバース・キネマティクス等を用いてモーション再生を行ってもよい。
【0082】
またモデルデータ記憶部173は、キャラクタを表すモデルオブジェクトのモデルデータを記憶する。このモデルデータは、例えばキャラクタを表すモデルオブジェクトの形状を規定するデータであり、モデルオブジェクトの基本姿勢や基本形状などを決めるデータである。具体的にはモデルデータ記憶部173は、モデルオブジェクトのスケルトンを構成する骨の位置(親の骨からの相対位置)や初期回転角度(基本姿勢での各骨の回転角度)などの初期状態情報を記憶する。またモデルオブジェクトの頂点データ(頂点位置等)を記憶する。モーション処理は、モデルデータに含まれる初期回転角度などの初期状態情報を、モーションデータに基づき更新して行くことで実現される。
【0083】
仮想カメラ制御部108は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点、基準仮想カメラ)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0084】
例えば仮想カメラによりキャラクタを後方から撮影する場合には、キャラクタの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動処理部106で得られたキャラクタの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0085】
時間パラメータ演算部110は、時間パラメータの演算処理(設定処理)を行う。例えば時間パラメータが表す時間の経過を計測する処理などを行う。ここで時間パラメータは、ゲームに関する時間を表すパラメータであり、経過時間パラメータなどである。経過時間パラメータは、ゲームの経過時間を表すパラメータであり、例えばゲームが開始してからの経過時間などを表すパラメータである。この経過時間パラメータは累積プレイ時間パラメータであってもよい。累積プレイ時間パラメータは、プレーヤのプレイ経過時間の累積を表すパラメータであり、例えばプレーヤがゲームプレイしていると判断される経過時間を累積(加算)する処理を行うことで得られるパラメータである。なお時間パラメータなどの各種パラメータの値は、パラメータ記憶部176に記憶される。
【0086】
ゲーム環境設定部112は、ゲーム環境の設定処理を行う。例えばプレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行う。具体的には、表示部190によりゲーム環境の設定画面(オプション設定画面)を表示する。そして、表示されたゲーム環境設定画面においてプレーヤが操作部160を用いて入力した情報に基づいて、プレーヤがゲームをプレイにするのに必要な各種のゲーム環境情報を設定する処理を行う。設定されたゲーム環境情報は、ゲーム環境情報記憶部177に保存される。
【0087】
カメラ間距離設定部114は、カメラ間距離の設定処理を行う。例えば各種のゲームパラメータ(キャラクタ又は仮想カメラの位置情報、方向情報、移動状態情報のパラメータ、時間パラメータ、ゲームイベントのパラメータ等)に基づいて、カメラ間距離の設定処理を行う。
【0088】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ179(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現することができる。
【0089】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0090】
そして本実施形態ではカメラ間距離設定部114は、キャラクタ又は仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行う。
【0091】
ここで位置情報は、例えばキャラクタ又は仮想カメラの代表位置の情報(座標)である。方向情報は、例えばキャラクタの方向(向く方向、視線方向、移動方向)、或いは仮想カメラの方向(視線方向、移動方向)の情報である。移動状態情報は、例えばキャラクタ又は仮想カメラの速度情報、加速度情報、或いは移動経路情報などの移動状態を表す情報である。またカメラ間距離は、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表す情報(パラメータ)である。このカメラ間距離は、左目用仮想カメラと右目用仮想カメラとの間の距離そのものであってもよいし、この距離と同等の情報(例えば立体視強度等)であってもよい。
【0092】
そして画像生成部120は、オブジェクト空間において左目用仮想カメラから見える画像である左目用画像(左目用映像)を生成する。またオブジェクト空間において右目用仮想カメラから見える画像である右目用画像(右目用映像)を生成する。即ち左目用仮想カメラの視点でオブジェクト空間のオブジェクトのレンダリングを行って、左目用画像を生成し、右目用仮想カメラの視点でオブジェクト空間のオブジェクトのレンダリングを行って、右目用画像を生成する。
【0093】
なお仮想カメラ制御部108は、例えば左目用仮想カメラと右目用仮想カメラを設定するための基準となる基準仮想カメラの制御を行う。そして、得られた基準仮想カメラの位置情報、方向情報と、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラの位置情報(視点位置)、方向情報(視線方向)を求める。なお仮想カメラ制御部108が、左目用仮想カメラや右目用仮想カメラを直接制御するようにしてもよい。また画像生成部120は、立体視モードでは、左目用仮想カメラによる左目用画像と、右目用仮想カメラによる右目用画像を生成する。一方、例えば立体視モードではない擬似3次元画像表示モードでは、基準仮想カメラから見える画像を疑似3次元画像として生成する。
【0094】
また立体方式としては、2眼分離眼鏡方式や、レンティキュラーレンズなどを用いた裸眼方式などの様々な方式を想定できる。2眼分離眼鏡方式としては、例えば偏光眼鏡方式、継時分離方式、2色分離方式などがある。偏光眼鏡方式では、例えば表示部190の奇数ラインと偶数ラインに左目用画像と右目用画像を交互に表示し、これを偏光眼鏡(例えば左目に水平方向の偏光フィルタ、右目に垂直方向の偏光フィルタを付けた眼鏡)で見ることで立体視を実現する。或いは左目用画像と右目用画像を特殊な偏光フィルタを有するプロジェクタで投影し、投影画像を偏光眼鏡で見ることで立体視を実現してもよい。また継時分離方式(ページ・フリップ方式)では、表示部190に左目用画像、右目用画像を所定期間毎(例えば1/120秒毎、1/60秒毎)に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左目、右目の液晶シャッターを交互に開閉することで、立体視を実現する。2色分離方式では、アナグリフ画像を生成し、赤青眼鏡等で見ることで、立体視を実現する。
【0095】
また左目用画像と右目用画像から立体視画像を生成する機能は、画像生成部120に持たせてもよいし、表示部190に持たせてもよい。例えば画像生成部120が、サイドバイサイド方式の画像信号を出力する。すると表示部190が、このサイドバイサイドの画像信号に基づいて、奇数ラインと偶数ラインに左目用画像と右目用画像が交互に割り当てられるフィールドシーケンシャル方式の画像を表示する。或いは、左目用画像と右目用画像が所定期間毎に交互に切り替えられるフレームシーケンシャル方式の画像を表示する。或いは画像生成部120の方が、フィールドシーケンシャル方式やフレームシーケンシャル方式の画像を生成して、表示部190に出力するようにしてもよい。
【0096】
また本実施形態ではカメラ間距離設定部114は、キャラクタ又は仮想カメラの位置情報(代表位置情報)に基づいて、キャラクタ又は仮想カメラが位置する場所のマップ情報を取得する。即ち、マップ情報記憶部174から、その場所に対応するマップ情報を読み出す。そして取得されたマップ情報に基づいて、カメラ間距離の設定処理を行う。具体的にはカメラ間距離設定部114は、マップ情報に基づいてキャラクタ又は仮想カメラが高い場所(基準となる高さよりも高い場所)に位置すると判断された場合には、カメラ間距離を広くする処理を行う。一方、マップ情報に基づいてキャラクタ又は仮想カメラが低い場所(基準となる高さよりも低い場所)に位置すると判断された場合には、カメラ間距離を狭くする処理を行う。
【0097】
カメラ間距離設定部114は、ゲームにおいてキャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報(速度、加速度、移動経路等)の少なくとも1つに基づいて、カメラ間距離の設定処理を行ってもよい。ここで、ターゲットオブジェクトは、キャラクタの攻撃、守備、移動等の行動のターゲットとなるオブジェクトである。そしてカメラ間距離設定部114は、例えばキャラクタ又は仮想カメラの方向が、ターゲットオブジェクトが位置する方向に向いたと判断された場合に、カメラ間距離を変化させる処理を行う。具体的には、仮想カメラの視線方向が、ターゲットオブジェクトが位置する方向を含む所定の方向範囲内に入っていると判断された場合に、カメラ間距離を狭くしたり広くする制御を行う。更に具体的には、カメラ間距離設定部114は、ターゲットオブジェクトがキャラクタ又は仮想カメラから遠い距離(基準距離よりも遠い距離)に位置すると判断された場合には、カメラ間距離を広くする処理を行う。一方、ターゲットオブジェクトがキャラクタ又は仮想カメラから近い距離(基準距離よりも近い距離)に位置すると判断された場合には、カメラ間距離を狭くする処理を行う。
【0098】
またカメラ間距離設定部114は、仮想カメラとキャラクタとの間に障害物オブジェクトが存在すると判断した場合に、カメラ間距離を狭くする処理を行ってもよい。例えば仮想カメラとキャラクタを結ぶ線分(仮想カメラの位置とキャラクタの代表位置を結ぶ線分)に交差するオブジェクトが検出された場合に、そのオブジェクトを障害物オブジェクトと判断する。そして障害物オブジェクトが検出されている期間では、カメラ間距離を一時的に狭くする処理を行う。
【0099】
またカメラ間距離設定部114は、オブジェクト空間内にターゲットポイントが設定された場合に、キャラクタ又は仮想カメラをターゲットポイントの方に誘導(ナビゲート)するためのカメラ間距離の設定処理を行ってもよい。即ち、ターゲットポイントの方への移動をプレーヤに促すようなカメラ間距離の設定処理を行う。具体的には、オブジェクト空間内にターゲットポイントが設定された場合に、まず、カメラ間距離を広くする処理を行う。そしてキャラクタ又は仮想カメラがターゲットポイントに近づくにつれて、カメラ間距離を狭くする処理を行う。
【0100】
またカメラ間距離設定部114は、キャラクタ又は仮想カメラの移動速度(広義には移動状態情報)に基づいて、カメラ間距離の設定処理を行ってもよい。例えばキャラクタ又は仮想カメラの移動速度が速くなるにつれて、カメラ間距離を広くする処理を行う。なお移動速度は、移動速度そのものであってもよいし、移動速度と等価な情報であってもよい。
【0101】
またカメラ間距離設定部114は、オブジェクト空間内の各場所におけるキャラクタ又は仮想カメラの存在履歴情報に基づいて、カメラ間距離の設定処理を行ってもよい。ここで存在履歴情報は、キャラクタ又は仮想カメラが移動するゲームフィールド上(マップ上)の各場所でのキャラクタ又は仮想カメラの存在履歴(存在頻度)を表す情報であり、存在履歴情報記憶部175に記憶される。具体的にはカメラ間距離設定部114は、存在履歴情報に基づいてキャラクタ又は仮想カメラの存在頻度が低いと判断された場所(基準頻度よりも存在頻度が低い場所)では、カメラ間距離を狭くする処理を行う。一方、存在履歴情報に基づいてキャラクタ又は仮想カメラの存在頻度が高いと判断された場所(基準頻度よりも存在頻度が高い場所)では、カメラ間距離を広くする処理を行う。
【0102】
またカメラ間距離設定部114は、キャラクタが装備する装備オブジェクトの種類に応じて、カメラ間距離の設定処理を行ってもよい。ここで装備オブジェクトが、ゲーム中においてキャラクタが所持したり身に着けたりするオブジェクトであり、例えば武器、衣服、防具、アイテム等のオブジェクトである。そしてカメラ間距離設定部114は、武器オブジェクトが近距離攻撃用のオブジェクトである場合には、カメラ間距離を狭くする処理を行う。一方、武器オブジェクトが遠距離攻撃用のオブジェクトである場合には、カメラ間距離を広くする処理を行う。ここで、近距離攻撃用のオブジェクトは、近距離攻撃用の武器等としてテーブルなどにより対応づけられたオブジェクトであり、その攻撃距離が短いオブジェクトである。一方、遠距離攻撃用のオブジェクトは、遠距離攻撃用の武器等としてテーブルなどにより対応づけられたオブジェクトであり、近距離攻撃用のオブジェクトに比べてその攻撃距離が長いオブジェクトである。
【0103】
またカメラ間距離設定部114は、キャラクタのモーションに基づいて、カメラ間距離の設定処理を行ってもよい。具体的には、各モーション毎に、そのモーションに対応するカメラ間距離を対応づけておき、そのモーションが再生される場合には、再生されるモーションに対応づけられたカメラ間距離で左目用仮想カメラと右目用仮想カメラを設定する。例えばしゃがむモーションを行っている場合と、ジャンプモーションを行っている場合とで、カメラ間距離を異ならせる。
【0104】
またカメラ間距離設定部114は、キャラクタに対して所定のイベントが発生した場合に、カメラ間距離を広くする処理と狭くする処理を繰り返すカメラ間距離の変動処理を行ってもよい。例えばカメラ間距離を、徐々に振幅が小さくなる変動関数(周期関数)により変動(振動)させる処理を行う。なおゲームにおける各イベントの発生の判断は、ゲーム演算部102のゲームイベント処理部103が行う。
【0105】
また本実施形態では、時間パラメータ演算部110が、ゲームに関する時間パラメータの演算処理(計測処理、設定処理)を行うと、カメラ間距離設定部114は、その時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行う。例えば時間パラメータ演算部110は、時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行う。この場合にはカメラ間距離設定部114は、経過時間パラメータにより表される経過時間が長くなるにつれて、カメラ間距離を広くする処理を行う。或いは時間パラメータ演算部110は、時間パラメータ(経過時間パラメータ)として、プレーヤの累積プレイ時間を表す累積プレイ時間パラメータの演算処理を行う。この場合にはカメラ間距離設定部114は、累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、カメラ間距離を広くする処理を行う。
【0106】
またゲーム環境設定部112は、例えばゲーム環境設定画面でのプレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行う。この場合に設定されたゲーム環境の情報はゲーム環境情報記憶部177に保存される。するとカメラ間距離設定部114は、ゲーム環境の設定処理において、カメラ間距離の基準距離が設定された場合には、時間パラメータで表される時間が長くなるにつれて、カメラ間距離を基準距離に近づける処理を行う。即ちプレーヤが設定した基準距離にカメラ間距離を徐々に近づける処理を行う。
【0107】
また操作情報取得部101は、プレーヤが操作する操作部160から入力される操作情報を取得する。そしてカメラ間距離設定部114は、操作情報をモニタし、モニタ結果に基づいてカメラ間距離を制御する。具体的には、カメラ間距離設定部114は、時間パラメータ(経過時間パラメータ、累積プレイ時間パラメータ)により表される時間(経過時間、累積プレイ時間)が長くなるにつれて、カメラ間距離を広くする処理を行う。そして所定の期間、操作情報が入力されなかったと判断した場合には、広くなったカメラ間距離を狭くする処理を行う。即ち広くしたカメラ間距離を元に戻す処理を行う。更にカメラ間距離設定部114は、操作情報の入力頻度(例えば単位時間あたりの入力回数)が基準頻度よりも多いと判断された場合に、カメラ間距離を狭くする処理を行ってもよい。例えばプレーヤが操作部160の操作ボタン等を速い速度で連続して操作していると判断された場合に、カメラ間距離を狭くする処理を行う。
【0108】
またカメラ間距離設定部114は、ゲーム環境設定部112によるゲーム環境の設定処理(入力処理)において設定されたカメラ間距離の変化許容範囲及びカメラ間距離の基準距離の少なくとも一方に基づいて、カメラ間距離の設定処理を行ってもよい。即ち、プレーヤがカメラ間距離の変化許容範囲や基準距離を入力した場合には、その範囲やその基準にしたがってカメラ間距離の設定処理を行う。具体的には、ゲーム環境の設定処理において設定された変化許容範囲内で、カメラ間距離を変化させる処理を行う。
【0109】
2.本実施形態の手法
次に本実施形態の手法について具体的に説明する。
【0110】
2.1 キャラクタの位置情報等に基づくカメラ間距離の設定
立体視では、左目用仮想カメラと右目用仮想カメラのカメラ間距離を広くしたり、狭くすることで、立体感の強弱を制御できる。この場合に、例えばゲーム環境設定のオプション画面などにおいて、カメラ間距離(立体視強度)を設定する第1の手法が考えられる。
【0111】
しかしながら、この第1の手法によると、一旦、オプション画面でカメラ間距離を設定すると、ゲーム中は常にそのカメラ間距離で立体視画像が生成されるようになり、ゲーム状況に応じた適切な立体視表現を実現できない。
【0112】
一方、例えばゲーム中にプレーヤが操作部160を操作することで、カメラ間距離を任意に切り替え可能にする第2の手法も考えられる。例えばプレーヤが操作部160の操作レバーを操作することで、立体視強度が「強」「中」「弱」となるようにカメラ間距離を切り替える。この手法によれば、プレーヤは、ゲーム中において自身が所望する立体視強度に切り替えることが可能になる。
【0113】
しかしながら、この第2の手法では、カメラ間距離による立体視強度の切り替えにプレーヤの操作を必要とする。このため、様々に変化するゲーム状況に合わせて立体視強度をリアルタイムに変更することは難しい。
【0114】
また、ゲームの場面に応じてカメラ間距離を切り替える第3の手法も考えられる。例えば立体視強度を強くしたい場面ではカメラ間距離を広くし、立体視強度を弱くしたい場面ではカメラ間距離を狭くする。
【0115】
しかしながら、この第3の手法では、ゲームの場面の切り替え時にしかカメラ間距離は切り替わらないため、カメラ間距離の制御が単調になってしまい、プレーヤの現在のゲーム状況に合わせたインテリジェントなカメラ間距離制御を実現できない。また、強い立体視表現は、プレーヤにとって違和感を感じるものになるが、このような強い立体視表現であっても、時間が経過するにつれてプレーヤは慣れてくる。しかしながら、場面に応じてカメラ間距離を制御する第3の手法では、この点については全く考慮されていない。
【0116】
そこで本実施形態では、キャラクタ又は仮想カメラの位置情報や方向情報や移動状態情報に応じて、カメラ間距離を制御する手法を採用している。
【0117】
例えば図2(A)において、キャラクタCHはオブジェクト空間内のゲームフィールド上を移動しており、仮想カメラVCは、このゲームキャラクタCHに追従して移動している。この場合に本実施形態では、キャラクタCHの位置PC(代表位置)、方向DC(向く方向、視線方向、移動方向)、或いは移動状態情報MVC(速度、加速度、移動経路)に基づいて、図2(B)、図2(C)に示す左目用仮想カメラVCLと右目用仮想カメラVCRのカメラ間距離DSを設定する。或いはプレーヤの視点に相当する仮想カメラVC(VCL、VCR)の位置PV(視点位置)、方向DV(視線方向、移動方向)、或いは移動状態情報MVV(速度、加速度、移動経路)に基づいて、カメラ間距離DSを設定する。なお、いわゆる一人称視点の場合には、キャラクタCHは表示部190に表示されない仮想的なオブジェクトになり、仮想カメラVCの視点がプレーヤの視点になって、プレーヤはオブジェクト空間内を移動することになる。
【0118】
例えば図2(B)では、図2(A)に示す位置、方向等の情報に基づいて、カメラ間距離DSを狭くする制御を行っている。このようにカメラ間距離DSを狭くすると、目の前の立体感を強調できる。また立体感が少し控えめになり、近距離のものが立体的に見やすい状態になる。一方、遠方のもの(奥行き方向で遠い位置にあるもの)の立体感は薄れる。
【0119】
また図2(C)では、図2(A)に示す位置、方向等の情報に基づいて、カメラ間距離DSを広くする制御を行っている。このようにカメラ間距離DSを広くすると、奥行きの立体感を強調できるようになる。またプレーヤは、より強い立体感を感じるようになり、遠方のものに対して立体感を感じやすい状態になる。一方、近距離のものについてはチラツキにより見にくい状態になる。
【0120】
即ち、場面に応じてカメラ間距離を切り替える上記の第3の手法では、例えば近景のオブジェクトが多いと想定される近距離シーンではカメラ間距離を狭くし、遠景のオブジェクトが多いと想定される遠距離シーンではカメラ間距離を広くする制御を行うことになる。
【0121】
しかしながら、キャラクタや仮想カメラの位置、方向、移動状態によっては、近距離シーンであっても、カメラ間距離を広くすべき状況が発生し、遠距離シーンであっても、カメラ間距離を狭くすべき状況が発生する場合がある。例えば、キャラクタの前方には遠距離シーンが広がっているが、キャラクタの後方には近景オブジェクトが存在し、キャラクタが後ろをふり返った場合である。或いは、後述するように、遠距離シーンにおいてキャラクタの目の前に敵キャラクタが出現した場合や、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合などである。更に、場面に応じてカメラ間距離を制御する手法では、例えばゲームステージの切り替え時のタイミングでしか、カメラ間距離を切り替えることができない。このため、キャラクタが移動するマップの高さや形状に応じたインテリジェントなカメラ間距離の制御を実現できない。
【0122】
これに対して本実施形態によれば、キャラクタや仮想カメラの位置、方向、移動状態に応じてカメラ間距離が切り替わるようになる。従って、上述のように前方に遠距離シーンが広がっている状況でキャラクタが後ろをふり返った場合に、キャラクタの方向の変化を検出して、カメラ間距離を切り替えることが可能になる。
【0123】
即ち、キャラクタが前方を向いている場合には、前方の遠距離シーンに合わせて図2(C)に示すようにカメラ間距離DSを広くして、遠景オブジェクトの立体感を感じやすい状態にする。そしてキャラクタが後ろを向いたことが検出されると、図2(B)に示すようにカメラ間距離DSを狭くする。これにより、キャラクタの後方に存在する近景オブジェクトの立体感を感じやすい状態に切り替えることができる。即ち、キャラクタが後ろをふり返った時に、図2(C)のようにカメラ間距離DSが広い状態のままであると、後方にある近景オブジェクトがチラツキにより見にくい状態になってしまうが、本実施形態によれば、このような事態を防止できる。
【0124】
また、後述するように、遠距離シーンにおいてキャラクタの目の前に敵キャラクタが出現した場合でも、キャラクタと敵キャラクタとの位置関係に応じて、カメラ間距離DSを設定することで、そのゲーム状況に合った適切な立体感の制御を実現できる。また、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合に、仮想カメラやキャラクタの位置と障害物オブジェクトの位置に基づいて、障害物オブジェクトの介在を検出し、例えばカメラ間距離DSを狭くする制御などが可能になる。これにより、遠景オブジェクトに合っていたカメラ間距離DSを、近景オブジェクトである障害物オブジェクトに合わせることが可能になり、プレーヤが、より違和感を感じない立体視画像を生成できるようになる。
【0125】
2.2 マップ情報に基づくカメラ間距離の設定
次にキャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、マップ情報に基づくカメラ間距離の設定手法について説明する。
【0126】
例えば図3(A)では、キャラクタCHが移動するゲームフィールド(オブジェクト空間)には、複数のマップブロックMB1、MB2・・・MBNにより構成されるマップが設けられている。そして図3(A)では、キャラクタCHや仮想カメラVCの位置に基づいて、マップ情報を読み出す。具体的には、キャラクタCHや仮想カメラVCの位置に対応するマップブロックを特定し、そのマップブロックに対応づけられるマップ情報を読み出す。そして、読み出されたマップ情報に基づいてカメラ間距離DSを制御する。
【0127】
また図3(B)に示すように、MB1〜MBNの各マップブロックには、各マップブロックを構成する頂点の位置座標(X、Z座標)と、高さ情報(H)が関連づけられている。そして、各マップブロック内でのキャラクタCHの位置座標と、マップブロックの各頂点の位置座標とに基づいて、各頂点に関連づけられた高さ情報の補間処理を行い、キャラクタCHが位置する場所での高さを求める。
【0128】
そして図3(C)に示すように、キャラクタCHが高い場所に位置すると判断された場合には、カメラ間距離DSを広くする。こうすることで、高い場所にキャラクタCHが位置する場合に、その高い場所に適した立体視の設定で画像を生成できる。即ち、高い場所から遠景を見渡すのに適した立体視の設定で画像が生成される。
【0129】
一方、図3(D)に示すように、キャラクタCHが低い場所に位置すると判断された場合には、カメラ間距離DSを狭くする。こうすることで、低い場所にキャラクタCHが位置する場合に、その低い場所に適した立体視の設定で画像を生成できる。即ち、低い場所ではキャラクタCHの近くに近景オブジェクトが存在する可能性が高く場合に、その近景オブジェクトの画像が自然な立体感で表示されるようになる。
【0130】
なお図3(A)〜図3(D)では、マップ情報の高さ情報に基づいてカメラ間距離DSを設定する場合について説明したが、本実施形態はこれに限定されない。
【0131】
例えば各マップブロックに対して各マップブロックでの視界状況情報が関連づけられたマップ情報を用意する。そしてキャラクタ又は仮想カメラが位置するマップブロックでの視界状況情報を読み出して、読み出された視界状況情報に基づいてカメラ間距離DSを設定してもよい。例えば視界状況が遠景の視界状況である場合には、カメラ間距離DSを広くし、視界状況が近景の視界状況である場合には、カメラ間距離DSを狭くする。
【0132】
また、マップ情報のマップ属性情報に基づいてカメラ間距離を制御してもよい。例えばキャラクタが位置しているマップが水面のマップである場合には、キャラクタの足下には草木等の近景オブジェクトが存在していない状況である。従って、この場合には、カメラ間距離DSを広くして、水面の奥行き感が強調された立体視画像を生成する。或いは、各マップブロックに対してカメラ間距離DSそのものを関連づけて、各マップブロックでのカメラ間距離DSを制御してもよい。
【0133】
次に、マップ情報に基づくカメラ間距離の設定処理の例について、図4のフローチャートを用いて説明する。
【0134】
まずキャラクタ又は仮想カメラの位置に基づいて、マップ情報を読み出し、読み出されたマップ情報に基づいて、高さ情報を取得する(ステップS1、S2)。例えばキャラクタ又は仮想カメラの位置に対応するマップブロックを特定し、そのマップブロックのマップ情報により高さ情報を取得する。そして、取得された高さ情報に基づいて、カメラ間距離を設定する(ステップS3)。例えば図3(C)、図3(D)に示すように、高い場所であればカメラ間距離を広くし、低い場所であればカメラ間距離を狭くする。
【0135】
次に、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定する(ステップS4)。例えばキャラクタに追従する基準仮想カメラの位置、方向を求め、この基準仮想カメラの位置、方向とカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラの位置、方向を設定する。そして設定された左目用仮想カメラから見える画像を描画して、左目用画像を生成する(ステップS5)。また設定された右目用仮想カメラから見える画像を描画して、右目用画像を生成する(ステップS6)。そして、生成され左目用画像、右目用画像は、例えばサイドバイサイド方式等の画像信号で表示部190に出力される。
【0136】
2.3 ターゲットオブジェクトの出現時のカメラ間距離の設定
次にキャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、ターゲットオブジェクトの出現時のカメラ間距離の設定手法について説明する。
【0137】
本実施形態では、キャラクタの行動等のターゲットとなるターゲットオブジェクトの位置、方向、移動状態の情報の少なくとも1つに基づいて、カメラ間距離を設定する。例えばキャラクタ又は仮想カメラの位置、方向、移動状態の情報の少なくとも1つと、ターゲットオブジェクトの位置、方向、移動状態の情報の少なくとも1つに基づいて、カメラ間距離を設定する。具体的には、キャラクタ又は仮想カメラとターゲットオブジェクトとの間の、相対的な位置関係や相対的な方向関係や相対的な移動状態の関係に基づいて、カメラ間距離を制御する。
【0138】
例えば図5(A)では、キャラクタCHの近くに、敵キャラクタであるターゲットオブジェクトTOBが出現している。このようなターゲットオブジェクトTOBの制御処理は、キャラクタCH(仮想カメラ)の位置情報や方向情報に基づいて実現できる。例えばキャラクタCHが、ターゲットオブジェクトTOBの出現エリアに近づいたり、キャラクタCHがターゲットオブジェクトTOBの方向に向いた時に、ターゲットオブジェクトTOBを出現させたり、ターゲットオブジェクトTOBの行動を開始させる。
【0139】
そして図5(B)では、キャラクタCH(仮想カメラ)の方向が、ターゲットオブジェクトTOBが位置(存在)する方向に向いている。例えばキャラクタCHの方向を含む所定の方向範囲内に、ターゲットオブジェクトTOBが位置している。このような状況が発生した場合に、図5(B)に示すようにカメラ間距離DSを変化させる処理を開始する。即ちカメラ間距離を広くしたり狭くしたりする処理を行う。
【0140】
具体的には、ターゲットオブジェクトTOBがキャラクタCH(仮想カメラ)から遠い場所に位置している場合には、カメラ間距離DSを広くする。こうすることで、遠い場所に位置しているターゲットオブジェクトTOBの画像を、適正な立体感で表示できるようになる。即ちプレーヤは、遠景の表示に適した立体感の画像で、ターゲットオブジェクトTOBを見ることができる。
【0141】
そして、この状態から、キャラクタCHがターゲットオブジェクトTOBの方に近づくと、広くなったカメラ間距離DSを、今度は狭くする。例えばキャラクタCHとターゲットオブジェクトTOBとの間の距離が近づくにつれて、カメラ間距離DSを狭くする。このようにすれば、キャラクタCHがターゲットオブジェクトTOBの方に近づいた場合に、近い場所に位置しているターゲットオブジェクトTOBの画像を、適正な立体感で表示できるようになる。
【0142】
即ち、ターゲットオブジェクトTOBの出現時には、敢えて遠方に偏重した立体視の画像表現にすることで、プレーヤの集中を遠方のターゲットオブジェクトTOBの方に誘導する。そして、キャラクタCHがターゲットオブジェクトTOBに近づいた時に、カメラ間距離DSを狭くすることで、例えば、突然に近距離から驚異となるターゲットオブジェクトTOBが出現したかのような画像表現を演出できる。このような立体視表現の制御を行うことで、プレーヤの驚きを倍増させる演出が可能になる。またキャラクタCHがターゲットオブジェクトTOBに近づくにつれて、カメラ間距離DSを狭くすることで、キャラクタCHがターゲットオブジェクトTOBに徐々に近づいているという感覚を、カメラ間距離DSに基づく立体視強度の制御を利用して、プレーヤに感じさせることが可能になる。
【0143】
なおターゲットオブジェクトの位置、方向、移動状態の情報に基づいてカメラ間距離を制御する手法は、図5(A)、図5(B)で説明した手法に限定されない。例えばキャラクタ(仮想カメラ)の位置とターゲットオブジェクトの位置により求められた相対的な距離情報に基づいて、カメラ間距離を制御したり、キャラクタの方向とターゲットオブジェクトの方向により求められた相対的な方向関係に基づいて、カメラ間距離を制御してもよい。例えばキャラクタとターゲットオブジェクトの距離が近づくにつれてカメラ間距離を狭くしたり、キャラクタの方向とターゲットオブジェクトの方向が正対するにつれてカメラ間距離を広くしたり、狭くしてもよい。またターゲットオブジェクトの移動状態情報である移動経路が、キャラクタの方に向かっていると判断された場合や、キャラクタの移動状態情報である移動経路が、ターゲットオブジェクトの方に向かっていると判断された場合に、カメラ間距離を例えば狭くする制御を行ってもよい。
【0144】
次に、ターゲットオブジェクトの出現時のカメラ間距離の設定処理の例について、図6のフローチャートを用いて説明する。
【0145】
まず、ターゲットオブジェクト(敵キャラクタ)が出現したか否かを判断する(ステップS11)。例えばキャラクタの位置がターゲットオブジェクトの出現エリアに入った場合に、ターゲットオブジェクトが出現したと判断される。
【0146】
次に、キャラクタ又は仮想カメラの方向を含む所定の方向範囲内に、ターゲットオブジェクトが位置するか否かを判断する(ステップS12)。例えばキャラクタ又は仮想カメラの方向を中心とした−α度〜α度(例えばα=20度)の方向範囲内に、ターゲットオブジェクトが位置するか否かを判断する。そしてその方向範囲内にターゲットオブジェクトが位置する場合には、キャラクタ又は仮想カメラとターゲットオブジェクトとの距離を求める(ステップS13)。そして求められた距離に基づいて、カメラ間距離を設定する(ステップS14)。例えば、求められた距離が所定の基準距離(距離しきい値)よりも遠い場合には、カメラ間距離を広くし、所定の基準距離よりも近い場合には、カメラ間距離を狭くする。或いは、キャラクタ又は仮想カメラとターゲットオブジェクトの距離が近づくにつれて、徐々にカメラ間距離を狭くする制御を行う。
【0147】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS15〜S17)。
【0148】
2.4 障害物オブジェクトの介在時のカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定手法について説明する。
【0149】
例えば図7では、仮想カメラ(VC、VCL、VCR)とキャラクタCHの間に障害物オブジェクトBOBが介在し、仮想カメラの視線が遮られている。このような場合に、カメラ間距離DSが広い設定のままであると、目の前に現れた障害物オブジェクトBOBの立体感が強すぎて、プレーヤが不自然さを感じるおそれがある。
【0150】
そこで本実施形態では、仮想カメラの位置情報とキャラクタCHの位置情報に基づいて、障害物オブジェクトBOBが仮想カメラとキャラクタCHの間に入ったか否かを検出する。そして、障害物オブジェクトBOBが仮想カメラとキャラクタCHの間に入ったことが検出されると、カメラ間距離DSを狭くする制御を行う。例えば障害物オブジェクトBOB用に用意された狭い距離に、カメラ間距離DSを設定する。
【0151】
こうすることで、障害物オブジェクトBOBがプレーヤの目の前に突然に現れた場合にも、障害物オブジェクトBOBに応じた適切な距離にカメラ間距離DSが設定されるようになるため、障害物オブジェクトBOBの立体感にプレーヤが不自然さを感じる事態を防止できる。
【0152】
次に、仮想カメラとキャラクタの間に障害物オブジェクトが入った場合のカメラ間距離の設定処理の例について、図8のフローチャートを用いて説明する。
【0153】
まず仮想カメラ(視点)とキャラクタを結ぶ線分を求める(ステップS21)。例えば仮想カメラの位置とキャラクタの代表位置を結ぶ線分を求める。次に線分に交差するオブジェクトが存在するか否かを判断する(ステップS22)。
【0154】
そして、線分に交差するオブジェクトが存在する場合には、当該オブジェクトを障害物オブジェクトであると判断し、図7に示すようにカメラ間距離を狭くする設定を行う(ステップS23)。
【0155】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS24〜S26)。
【0156】
2.5 ターゲットポイントによるカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、ターゲットポイントによるカメラ間距離の設定手法について説明する。
【0157】
ゲームにおいては、ゲームフィールドの所定のポイントにキャラクタ(プレーヤ)を誘導したい場合がある。例えば3次元ゲームでは、3次元空間内で自由にキャラクタが移動できることが原則である。しかしながら、ゲーム進行をスムーズにするために、キャラクタの移動先となるターゲットポイントを設定して、そのターゲットポイントに向かって移動するようにキャラクタを誘導する場合がある。こうすることで、ゲーム制作者が意図するルートに沿ってキャラクタを誘導して移動させることができる。そして、この場合に、誘導されていることをプレーヤが意識できないような自然な感覚で、キャラクタを誘導できることが望ましい。
【0158】
そこで本実施形態では、このようなターゲットポイントが、ゲーム空間であるオブジェクト空間内に設定された場合に、カメラ間距離を制御することで、キャラクタ(仮想カメラ)をターゲットポイントの方に誘導する手法を採用している。
【0159】
例えば図9(A)では、キャラクタCHが通過すべき「秘密のドア」に対してターゲットポイントTGが設定されている。このターゲットポイントTGは、キャラクタCHの移動のターゲットとなるポイントである。図9(A)ではターゲットポイントTGが設定されている「秘密のドア」を通過することで、プレーヤは次のステージにゲームを進めることができる。このため、プレーヤが不自然さを感じない手法で、ターゲットポイントTGに対してキャラクタCHを如何にして誘導するかが重要になる。
【0160】
このため図9(B)では、ターゲットポイントTGの発生時に、まずカメラ間距離DSを広くして、遠方に偏重した立体視表現を演出する。こうすることで、プレーヤは、遠方にある「秘密のドア」であっても、立体感が適正に表現されることで、認識しやすくなり、プレーヤの集中を「秘密のドア」であるターゲットポイントTGの方に誘導することができる。
【0161】
そして、このようにカメラ間距離DSを広くした後、図9(C)に示すように、キャラクタCH(仮想カメラ)がターゲットポイントTGに近づくにつれて、カメラ間距離DSを狭くする制御を行う。この時、例えばキャラクタCH(仮想カメラ)の方向が、ターゲットポイントTGの方に向いていることを条件に、ターゲットポイントTGに近づくにつれてカメラ間距離DSを狭くする制御を行ってもよい。
【0162】
このようにすれば、ターゲットポイントTGが出現した後、プレーヤの操作によりキャラクタCHがターゲットポイントTGの方に近づくと、カメラ間距離DSが変化する。そしてキャラクタCHとの距離に応じた適切な立体視表現で、「秘密のドア」の画像が表示されるようになるため、ターゲットポイントTGにキャラクタCHを誘導する効果を更に高めることができる。例えばキャラクタCHがターゲットポイントTGの方とは違う方向に移動した場合には、カメラ間距離DSを変化させずに、ターゲットポイントTGの方向に移動した場合に、カメラ間距離DSを変化させる。このようにすれば、カメラ間距離DSが変化する方向であるターゲットポイントTGの方向に、キャラクタCHを誘導することができる。従って、カメラ間距離DSの制御を有効活用して、キャラクタCHをターゲットポイントTGの方に誘導することが可能になる。
【0163】
なお、ターゲットポイントの方にキャラクタ又は仮想カメラを誘導するカメラ間距離の制御手法は、図9(A)〜図9(C)で説明した手法には限定されない。例えばキャラクタ又は仮想カメラの位置とターゲットポイントの位置との間の相対的な位置関係や、キャラクタ又は仮想カメラの方向とターゲットポイントの存在方向との間の相対的な方向関係や、キャラクタ又は仮想カメラとターゲットポイントとの間の距離などに基づいて、ターゲットポイントの方に誘導するカメラ間距離の制御を行えばよい。例えば複数のターゲットポイントが設定された場合には、これらの複数のターゲットポイントの中から、キャラクタ又は仮想カメラの方向に対応するターゲットポイントを選択する。そして選択されたターゲットポイントとキャラクタ又は仮想カメラとの間の距離等に基づいて、カメラ間距離を設定すればよい。
【0164】
また、キャラクタ又は仮想カメラの移動状態情報に基づいて、カメラ間距離を制御してもよい。例えば図10では、キャラクタCH(仮想カメラ)の移動速度VEを検出し、検出された移動速度VEに基づいてカメラ間距離DSを設定する。具体的には、例えばキャラクタCHの移動速度VEが速くなるにつれて、カメラ間距離DSを広くする。
【0165】
このようにすれば、キャラクタCHが速く移動すれば、より遠景のものの立体感が適切に表現されるようになるため、遠くにあるターゲットポイント等に、キャラクタCHを誘導することが可能になる。或いは、プレーヤが操作部の操作レバー等を一定の方向に倒し続けることで、キャラクタCHが一定の方向に継続して移動していると判断された場合に、カメラ間距離DSを広くする制御を行うようにしてもよい。このようにすれば、プレーヤの操作により移動するキャラクタCHの移動方向に存在する遠景のオブジェクトが、より適切な立体視の画像で表示されるようになる。従って、その遠景オブジェクトに近づいているという感覚をプレーヤに与えることができ、よりスムーズでリアルな立体視画像を表示できる。
【0166】
次に、ターゲットポイントによるカメラ間距離の設定処理の例について、図11のフローチャートを用いて説明する。
【0167】
まず、ターゲットポイントが設定されたか否かを判断し(ステップS31)、ターゲットポイントが設定された場合には、図9(A)、図9(B)で説明したようにカメラ間距離を広くする設定を行う(ステップS32)。
【0168】
次に、キャラクタ又は仮想カメラとターゲットポイントの間の距離が所定距離内か否かを判断する(ステップS33)。そして、所定距離内になった場合には、図9(C)で説明したように、キャラクタ又は仮想カメラとターゲットポイントの間の距離に応じて、カメラ間距離を設定する(ステップS34)。例えばキャラクタ又は仮想カメラとターゲットポイントの距離が近づくにつれて、カメラ間距離を狭くする。
【0169】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS35〜S37)。
【0170】
2.6 存在履歴情報に基づくカメラ間距離の設定
次に、キャラクタの位置情報等に基づくカメラ間距離の設定手法の例として、存在履歴情報に基づくカメラ間距離の設定手法について説明する。
【0171】
3次元ゲームにおいては、初めて来た場所と、何度も来ている場所とでは、プレーヤの余裕も異なり、周りの状況の見え方も異なってくる。
【0172】
そして、初めて来た場所では、プレーヤはその場所を見慣れていないため、プレーヤが操作するキャラクタの近くにある近景オブジェクトが、より適切な立体視表現で表示されていることが望ましい。
【0173】
一方、何度も来ている場所では、プレーヤはその場所を見慣れているため、近景オブジェクトを適切な立体視表現で表示する必要性が薄れる。そして、余裕のあるプレーヤに対して、遠景を見渡せるような画像を表示することが望ましい。
【0174】
そこで本実施形態では、オブジェクト空間内の各場所におけるキャラクタ(仮想カメラ)の存在履歴情報に基づいて、カメラ間距離を制御する。例えば、存在履歴情報に基づいて、キャラクタ(仮想カメラ)の存在頻度が低いと判断された場所では、例えばカメラ間距離を狭くする。一方、存在頻度が高いと判断された場所では、カメラ間距離を広くする。
【0175】
具体的には図12(A)に示すように、キャラクタCHが移動するゲームフィールドのマップを複数のマップブロックMB1〜MBNに分割する。そして、これらの複数のマップブロックMB1〜MBNの中から、キャラクタCH(仮想カメラVC)が位置するマップブロックを特定する。
【0176】
そして例えば図12(B)に示すように、各マップブロックに対して、各マップブロックでのキャラクタCHの存在頻度が関連づけられた存在履歴情報を用意する。そして、この存在履歴情報に基づいて、キャラクタCHが位置するマップブロックに関連づけられた存在頻度を読み出す。こうすることで、そのマップブロックが、初めて来た場所なのか、何度も来ている場所なのかを判断できる。
【0177】
例えば図12(B)において、マップブロックMB1には存在頻度=0が関連づけられている。従って、キャラクタCHの位置するマップブロックがMB1である場合には、そのマップブロックは初めて来た場所であると判断できる。一方、マップブロックMB3には存在頻度=6が関連づけられている。従って、キャラクタCHの位置するマップブロックがMB3である場合には、そのマップブロックは何度も来ている場所であると判断できる。
【0178】
そして、例えばマップブロックMB1のように初めて来た場所である場合には、プレーヤに余裕がなく、周囲の状況をあまり把握できていないと想定して、カメラ間距離を狭くする。こうすることで、プレーヤは、キャラクタCHの周りに存在する近景オブジェクトを、適切な立体感で把握できるようになり、プレーヤの不安感を取り除くことができる。
【0179】
一方、マップブロックMB3のように何度も来ている場所である場合には、プレーヤに余裕があり、周囲の状況を十分に把握できていると想定して、カメラ間距離を広くする。こうすることで、プレーヤは、キャラクタCHの近くに存在する近景オブジェクトよりも、キャラクタCHの遠くにある遠景オブジェクトの方を適切な立体感で把握できるようになり、スムーズなゲーム進行を実現できる。
【0180】
なお、存在履歴情報に基づくカメラ間距離の設定手法は、図12(A)、図12(B)で説明した手法に限定されるものではない。例えば存在履歴情報は、図12(B)に示すようにマップ情報のマップブロックに関連づけられた情報には限定されず、他の情報に関連づけられた情報であってもよい。また、上記とは逆に、存在頻度が低い場所ではカメラ間距離を広くし、存在頻度が高い場所ではカメラ間距離を狭くするような制御を行ってもよい。また存在頻度に加えて、上述したようなキャラクタの位置、方向、移動状態や、ターゲットオブジェクトやターゲットポイントの位置、方向等も反映させて、カメラ間距離を制御してもよい。
【0181】
次に、存在履歴情報に基づくカメラ間距離の設定処理の例について、図13のフローチャートを用いて説明する。
【0182】
まず、キャラクタ又は仮想カメラの位置に基づいて、マップ情報を読み出す(ステップS41)。そして、読み出されたマップ情報に関連づけられた存在履歴情報に基づいて、存在頻度を取得する(ステップS42)。例えば図12(A)、図12(B)に示すように、キャラクタ等の位置に基づいてマップ情報のマップブロックを特定し、そのマップブロックに対応する存在頻度を読み出す。
【0183】
次に、存在履歴情報の更新処理を行う(ステップS43)。即ち、そのマップブロックにキャラクタ等が位置したことが検出されたため、そのマップブロックに関連づけられた存在頻度を例えば1だけインクリメントする。
【0184】
次に、取得された存在頻度に基づいて、カメラ間距離を設定する(ステップS44)。例えば存在頻度が低い場合には、カメラ間距離を狭くして、近景オブジェクトが見やすくなる立体視の設定にする。一方、存在頻度が高い場合には、カメラ間距離を広くして、遠景オブジェクトが見やすくなる立体視の設定にする。
【0185】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS45〜S47)。
【0186】
2.7 装備オブジェクト、モーション、発生イベントに基づくカメラ間距離の設定
次に、装備オブジェクト、モーション、発生イベント等に基づく本実施形態の種々のカメラ間距離の設定手法について説明する。
【0187】
本実施形態では、例えばキャラクタが装備するオブジェクトに基づいてカメラ間距離を設定してもよい。具体的には、例えば図14(A)に示すように、EOB1、EOB2、EOB3等の各装備オブジェクトに対して、DS1、DS2、DS3等の各カメラ間距離が関連づけられたテーブル等を用意する。そして、例えばキャラクタが装備オブジェクトEOB1を装備した場合には、そのキャラクタに対応する左目用・右目用の仮想カメラのカメラ間距離をDS1に設定する。同様に装備オブジェクトEOB2、EOB3を装備した場合には、カメラ間距離をDS2、DS3に設定する。
【0188】
このようにすれば、キャラクタの装備オブジェクトに応じたカメラ間距離を設定して、立体視画像を生成できるようになる。
【0189】
例えば図14(B)では、キャラクタCHは、武器オブジェクトとして、近距離攻撃用のオブジェクトEOB1(例えばナイフ、拳銃等)を装備している。この場合には、接近戦の準備をしていると考え、カメラ間距離DSを狭くし、近距離に適した立体視表現にする。このようにすれば、プレーヤは、近距離の敵に対する攻撃が容易になる。
【0190】
一方、図14(C)では、キャラクタCHは、武器オブジェクトとして遠距離攻撃用のオブジェクトEOB2(例えばライフル等)を装備している。この場合には、遠距離のものを狙うために、カメラ間距離DSを広くして、奥行き感を強調する。このようにすれば、プレーヤは、遠距離の敵に対する攻撃が容易になる。
【0191】
なおカメラ間距離の切り替え対象となる装備オブジェクトは、図14(B)、図14(C)に示すような武器オブジェクトには限定されない。例えば遠距離視認用のアイテムオブジェクト(双眼鏡、望遠鏡等)や近距離視認用のアイテムオブジェクト(虫眼鏡等)を用意する。そして遠距離視認用のアイテムオブジェクトを装備した場合には、カメラ間距離を広くし、近距離視認用のアイテムオブジェクトを装備した場合には、カメラ間距離を狭くしてもよい。
【0192】
またキャラクタのモーションに応じてカメラ間距離を制御してもよい。例えば図14(D)に示すように、NMS1、NMS2、NMS3等の各モーション番号に対して、DS1、DS2、DS3等の各カメラ間距離が関連づけられたテーブル等を用意する。そして、キャラクタの再生モーションのモーション番号がNMS1である場合には、カメラ間距離をDS1に設定し、モーション番号がNMS2である場合には、カメラ間距離をDS2に設定する。
【0193】
例えば、キャラクタのモーションがジャンプモーションである場合には、キャラクタの視界は遠距離を見ている視界であると想定できる。従って、この場合には例えばカメラ間距離DSを広くして、奥行き感を強調した立体視表現にする。
【0194】
一方、キャラクタのモーションがしゃがみのモーションである場合には、キャラクタの視界は近距離の視界であると想定できる。従って、この場合には例えばカメラ間距離DSを狭くして、近距離に適した立体視表現にする。
【0195】
このようにすれば、キャラクタのモーションに対応する視界状況に適切なカメラ間距離で、立体視画像が生成されるようになるため、よりインテリジェントなカメラ間距離制御を実現できる。
【0196】
なお、キャラクタのモーションに応じてカメラ間距離を制御する手法は、図14(D)等で説明した手法には限定されない。例えばキャラクタのモーションの各モーションフレームに応じて、カメラ間距離を変化させてもよい。例えば前半のモーションフレームにおいてはキャラクタの視点が高い位置に設定され、後半のモーションフレームにおいてはキャラクタの視点が低い位置に設定されるモーションがあったとする。この場合には、前半のモーションフレームにおいては、カメラ間距離を広くして、奥行き感を強調し、後半のモーションフレームにおいては、カメラ間距離を狭くして、近距離に適した立体視表現にする。このようにすることで、更に綿密なカメラ間距離の制御を実現できる。
【0197】
また本実施形態では、発生したイベントの種類に応じて、カメラ間距離を設定してもよい。例えばキャラクタに対して所定のイベントが発生した場合に、カメラ間距離を変動させる処理を行う。即ち、カメラ間距離を広くする処理と狭くする処理を繰り返す。
【0198】
例えば図15(A)では、キャラクタCHに対して弾丸等のヒットオブジェクトがヒットするイベントが発生している。この場合には、カメラ間距離DSを所定の周期で変動させる処理を行う。具体的には図15(B)に示すように、後述する基準距離DSRを中心に、カメラ間距離DSを周期的に変動させると共に、その振幅を徐々に小さくする。
【0199】
このようにすれば、例えばプレーヤが操作するキャラクタCHが高いダメージを受けた場合に、カメラ間距離DSがゆらゆらと変動し、プレーヤの集中力の低下やめまい感を演出することが可能になる。即ちカメラ間距離DSが変動すると、立体視の強度が変動し、立体視の見え方も変動するようになる。従って、あたかも弾丸等のヒットオブジェクトHOBのヒットにより、一定期間の間、めまいが生じているような演出効果を創出できる。
【0200】
次に、図15(A)、図15(B)で説明したカメラ間距離の変動処理の例について、図16のフローチャートを用いて説明する。
【0201】
まず図15(A)で説明したように、キャラクタにヒットオブジェクトがヒットしたか否かを判定する(ステップS51)。そして、ヒットしたと判定された場合には、ヒットオブジェクトのヒット強さ、ヒット方向等のヒット情報を取得する(ステップS52)。
【0202】
次に、取得されたヒット情報に基づいて、図15(B)に示すようなカメラ間距離の変動関数を設定する(ステップS53)。具体的には、変動関数の振幅や、変動周期や、変動が開始してから終了するまでの変動期間などを設定する。例えばヒット強さが大きかった場合や、ヒット方向が正面方向であった場合には、変動関数の振幅を大きくしたり、変動周期を速くしたり、変動期間を長くする。
【0203】
次に、設定された変動関数に基づいて、カメラ間距離を設定する(ステップS54)。即ち、変動関数に基づいて、各時間におけるカメラ間距離を取得して設定する。
【0204】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS55〜S57)。
【0205】
次に、変動関数の変動期間が終了したか否かを判断する(ステップS58)。そして、変動期間が終了していない場合にはステップS54に戻り、変動期間が終了した場合には、処理を終了する。
【0206】
2.8 時間パラメータに基づくカメラ間距離の設定
次に、時間パラメータに基づくカメラ間距離の設定手法について説明する。
【0207】
人間が物体の立体感を感じるのは、左右の目が空間的に離れていることに起因して網膜の結像がずれる両眼視差や、左右の目が内側に向く機能である輻輳や、水晶体の厚さが物体までの距離に応答するピント調整などの生理的機能に起因する。人間は、これらの生理的機能である両眼視差、輻輳、ピント調整等を脳内で処理して立体感を感じている。
【0208】
しかしながら、このような立体感を立体視画像により実現する場合には、眼鏡をかけるなどの通常とは異なる視界状況でプレーヤは立体視画像を見ることになる。このため、ゲームプレイの開始時に、あまりに立体視強度が強い立体視画像を表示すると、プレーヤが違和感を感じるおそれがある。即ち、立体視画像による立体感は、最初は、より効果的に働き、あまりに強すぎる立体感だと、かえって見にくく感じるおそれがある。
【0209】
一方、プレーヤは、立体視による立体感の効果に時間が経過するにつれて徐々に慣れてくる。そして、プレーヤが立体視に慣れてくると、徐々に立体感の効果が薄れてくるため、より誇張した立体感でも、プレーヤはそれほど違和感を感じないようになる。
【0210】
そこで本実施形態では、まず、ゲームに関する時間パラメータを取得する演算処理を行う。例えばフレーム更新毎に、ゲーム開始からのフレーム更新数をカウントして、ゲームの経過時間を表す経過時間パラメータを取得する。或いは、プレーヤがゲームを行っている期間においてフレーム更新数をカウントし、このカウント値を累積することで、プレーヤの累積プレイ経過時間を表す累積プレイ時間パラメータを経過時間パラメータとして取得する。なお画像生成システムが、時間を計測するタイマを有する場合には、タイマからの時間情報に基づいて経過時間パラメータや累積プレイ時間パラメータを求めてもよい。
【0211】
そして本実施形態では、このように取得された時間パラメータに基づいて、左目用仮想カメラと右目用仮想カメラの間のカメラ間距離を設定して、左目用画像及び右目用画像を生成する。例えば、時間パラメータの1つである経過時間パラメータにより表される経過時間が長くなるにつれて、カメラ間距離を広くする制御を行う。或いは時間パラメータの1つである累積プレイ時間パラメータにより表される累積プレイ時間が長くなるにつれて、カメラ間距離を広くする制御を行う。
【0212】
図17(A)、図17(B)に時間パラメータに基づくカメラ間距離の制御の一例を示す。
【0213】
図17(A)では、例えばゲームが開始してから所定期間TINが経過するまでは、カメラ間距離DSを短い距離(例えば下限距離)に設定する。そしてゲーム開始から所定期間TINが経過した後に、カメラ間距離DSを増加させる。例えば時間パラメータにより表される時間が長くなるにつれて、カメラ間距離DSを基準距離DSRに近づける処理を行う。
【0214】
このようにすれば、所定期間TINが経過して、プレーヤが立体視の視界環境に慣れた後に、カメラ間距離DSを増加させて、カメラ間距離DSを基準距離DSRに設定できる。従って、ゲーム開始時に、強い立体感によりプレーヤが違和感を感じてしまう事態を防止できる。そして所定期間TINの経過により、プレーヤが立体視に慣れると、標準的立体感を与える基準距離DSRに、カメラ間距離DSを設定して、立体視画像をプレーヤに表示できるようになる。
【0215】
この時、図17(B)に示すように、プレーヤが、後述するゲーム環境の設定画面等において、カメラ間距離DSの下限距離DSL、基準距離DSR、上限距離DSHを設定できるようにしておく。そして、ゲーム開始後、所定期間TINが経過するまでの間は、カメラ間距離DSを下限距離DSLに設定する。
【0216】
そして、所定期間TINが経過すると、カメラ間距離DSを増加させて、標準的なカメラ間距離である基準距離DSRに設定する。その後、図2(A)〜図16で説明した手法によりカメラ間距離DSを変化させる場合にも、上限距離DSHを超えないようにカメラ間距離DSを制御する。例えば図3(C)や図9(B)でカメラ間距離DSを広くする場合にも、カメラ間距離DSが上限距離DSHを超えないように制御する。また図15(B)に示すようにカメラ間距離DSを変動させて、めまい感等を演出する場合にも、変動関数の振幅の最大値が、上限距離DSHを超えないように制御する。このようにすれば、ある程度、プレーヤの意思や希望を反映させながら、その範囲でカメラ間距離DSを変化させることが可能になる。
【0217】
また、操作部160を用いて入力されたプレーヤの操作情報をモニタ(監視)し、モニタ結果(監視結果)に基づいてカメラ間距離を制御してもよい。
【0218】
例えば図17(A)、図17(B)に示すように、時間パラメータにより表される時間が長くなるにつれて、カメラ間距離DSを広くする制御を行う。そして図18(A)に示すように、所定の期間TNOP、操作情報が入力されなかったと判断した場合には、広くなったカメラ間距離DSを狭くする。その後、操作情報が入力されるようになったら、カメラ間距離DSを広くして、基準距離DSRに戻す。
【0219】
即ち、操作部160(コントローラ)の未入力期間(TNOP)が長かった場合には、プレーヤがゲームプレイを中断して、休んでいると考えられる。従って、この場合には、カメラ間距離DSを短くして、立体感を弱くする。例えばカメラ間距離DSを図17(B)の下限距離DSLに設定する。このようにすれば、次にゲームを再開するまでは、カメラ間距離DSが下限距離DSLに設定されるようになる。従って、次のゲーム再開時に、強い立体感の立体視画像が表示されて、プレーヤが違和感を感じてしまう事態を防止できる。
【0220】
そして、プレーヤがゲームプレイを再開して、操作情報の入力が検出されると、所定期間が経過した後に、短くなったカメラ間距離DSを増加させて、基準距離DSRに戻す。これにより、立体感の効果が、基準距離DSRによる標準的な設定に戻るようになる。従って、プレーヤは、ゲームの中断の前の元の視界状況で、立体視ゲームのプレイを楽しめるようになる。
【0221】
また本実施形態では、プレーヤが操作する操作部160から入力される操作情報の入力頻度を監視し、監視結果に基づいてカメラ間距離を制御してもよい。具体的には、操作情報の入力頻度が基準頻度よりも多いと判断された場合には、カメラ間距離を狭くする制御を行う。
【0222】
例えば図18(B)に、入力頻度に基づくカメラ間距離DSの設定例を示す。図18(B)では、入力頻度が第1の基準頻度FR1よりも少ない場合にはカメラ間距離DSはDS1に設定される。また第1の基準頻度FR1と第2の基準頻度FR2の間では、カメラ間距離DSはDS2(DS2<DS1)に設定され、第2の基準頻度FR2よりも多い場合には、カメラ間距離DSはDS3(DS3<DS2)に設定される。
【0223】
例えばプレーヤによる操作部160の入力頻度が多い場合には、プレーヤが操作するキャラクタの周りに多数の敵等が存在し、これに対処するためにプレーヤが一生懸命に操作部160を操作していると考えられる。従って、この場合には、近景の敵等の立体感が適正に表示されるように、カメラ間距離DSを狭くする(例えばDS=DS3)。こうすることで、プレーヤは、近くの敵を正しい立体感で認識して、これに対処できるようになるため、プレーヤに余裕を与えて、スムーズなゲーム進行を実現できるようになる。
【0224】
一方、操作部160の入力頻度が少ない場合には、プレーヤがキャラクタの周りの状況をじっくりと確認している状況であると考えられる。従って、この場合には、遠景の立体感が適正に表示されるように、カメラ間距離DSを広くする(例えばDS=DS1)。こうすることで、プレーヤは、例えば周囲の敵を倒した後、遠景のターゲット等を正しい立体感で認識して、その後のキャラクタの行動を決定できるようになる。
【0225】
なお、操作部160の入力頻度に基づくカメラ間距離の設定は図19(B)に示す設定には限定されない。例えば、図19(B)とは逆に、操作部160の入力頻度が多くなるにつれて、カメラ間距離DSを広くするような制御を行うことも可能である。
【0226】
図19(A)、図19(B)に、プレーヤが自身のゲームプレイの環境を設定するためのゲーム環境の設定画面(オプション設定画面)の例を示す。
【0227】
例えば図19(A)では、プレーヤは、ゲーム環境設定の立体視オプションとして、立体視方式、立体視強度、テレビサイズ、テレビまでの距離等を設定できるようになっている。立体視方式としては、前述のように偏光眼鏡を使用する偏光方式や、液晶シャッター等を用いるシャッター方式などの種々の方式を設定できる。
【0228】
また、立体視強度は、カメラ間距離DSに対応するものであり、プレーヤは、この立体視強度を設定することで、自身が所望する立体感で立体視画像を見ることが可能になる。
【0229】
テレビサイズは、立体視画像が表示するテレビ(表示部)のサイズである。テレビまでの距離は、プレーヤの視聴位置からテレビまでの距離である。これらのテレビサイズやテレビまでの距離が変わると、同じカメラ間距離の設定であっても、プレーヤが感じる立体感の強さは異なったものになる。従って、テレビサイズやテレビまでの距離に応じて、カメラ間距離の補正処理を行うことが望ましい。
【0230】
また図19(B)では、立体視強度として、上限値、基準値、下限値を設定できるようになっている。ここで、上限値、基準値、下限値は、図17(B)で説明した上限距離DSH、基準距離DSR、下限距離DSLに対応するものである。そして立体視強度の上限値に対応する上限距離DSHと、下限値に対応する下限距離DSLによって、カメラ間距離DSの変化許容範囲が設定される。
【0231】
そして本実施形態では、図19(B)のゲーム環境設定画面で設定されたカメラ間距離DSの変化許容範囲(DSH〜DSL)及び基準距離DSRの少なくとも一方に基づいて、カメラ間距離DSの設定処理を行う。例えばゲーム環境設定画面で設定された変化許容範囲内で、カメラ間距離DSが変化するように制御する。
【0232】
具体的には図17(A)、図17(B)では、時間経過につれて、ゲーム環境設定画面でプレーヤが設定した基準距離DSRに近づくようにカメラ間距離DSを制御する。この場合に図17(B)に示すように、上限距離DSHと下限距離DSLで設定される変化許容範囲を超えないように、カメラ間距離DSを制御する。また図15(B)では、ゲーム環境設定画面で設定された基準距離DSRを中心とした変動関数で、カメラ間距離DSを変動させる。またカメラ間距離DSの変動関数の振幅が、上限距離DSHと下限距離DSLで設定される変化許容範囲を超えないように制御する。また図3(C)、図5(B)、図7、図9(B)、図9(C)等でカメラ間距離DSを制御するときも、カメラ間距離DSを基準距離DSRに近づける制御や、カメラ間距離DSが変化許容範囲を超えないようにする制御を行う。
【0233】
このようにすれば、プレーヤ(ユーザ)の意思をある程度反映させながら、その範囲でカメラ間距離を変化させることが可能になる。即ち、立体視強度の基準値の設定のみならず、その変換レンジについてもプレーヤが任意に決めることが可能になる。従って、プレーヤの個人差を吸収しながら、ゲーム状況に応じたカメラ間距離を設定することが可能になり、これまでにない立体視のインターフェース環境を構築できる。
【0234】
なお図19(B)において、例えばDSL=0.7、DSR=1.2、DSH=1.5に設定した場合には、基準距離を1.2にすると共に、0.7〜1.5のレンジでカメラ間距離を変化させる。一方、DSL=DSR=DSHに設定した場合には、カメラ間距離が固定された立体視画像が生成されるようにしてもよい。
【0235】
次に、時間パラメータに基づくカメラ間距離の設定処理の例について、図20のフローチャートを用いて説明する。
【0236】
まず、フレーム更新のタイミングか否かを判断する(ステップS61)。そしてフレーム更新のタイミングである場合には、時間パラメータを更新する(ステップS62)。例えば、時間経過を表すフレーム更新数を1だけインクリメントする。
【0237】
次に、図17(B)等で説明したように、ゲーム開始から所定期間(TIN)が経過したか否かを判断する(ステップS63)。そして、所定期間が経過していない場合には、カメラ間距離を下限距離(DSL)に設定する(ステップS64)。一方、所定期間が経過している場合には、カメラ間距離を基準距離(DSR)に近づくように増加させる(ステップS65)。
【0238】
そして、設定されたカメラ間距離に基づいて、左目用仮想カメラ、右目用仮想カメラを設定し、左目用画像、右目用画像を生成する(ステップS66〜S68)。
【0239】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、カメラ間距離の設定処理、時間パラメータの演算処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0240】
CH キャラクタ、VC 仮想カメラ、
PV 仮想カメラの位置、DV 仮想カメラの方向、
MVV 仮想カメラの移動状態情報、
PC キャラクタの位置、DC キャラクタの方向、
MVC キャラクタの移動状態情報、
VCL 左目用仮想カメラ、VCR 右目用仮想カメラ、DS カメラ間距離、
DSR 基準距離、DSH 上限距離、DSL 下限距離、
100 処理部、101 操作情報取得部、102 ゲーム演算部、
103 ゲームイベント処理部、104 オブジェクト空間設定部、
105 キャラクタ制御部、106 移動処理部、107 モーション処理部、
108 仮想カメラ制御部、110 時間パラメータ演算部、
112 ゲーム環境設定部、114 カメラ間距離設定部、
120 画像生成部、130 音生成部、160 操作部、
170 記憶部、171 オブジェクトデータ記憶部、
172 モーションデータ記憶部、173 モデルデータ記憶部、
174 マップ情報記憶部、175 存在履歴情報記憶部、176 パラメータ記憶部、
177 ゲーム環境情報記憶部、178 操作情報バッファ、179 描画バッファ、
180 情報記憶媒体、190 表示部、192 音出力部、194 補助記憶装置、
196 通信部

【特許請求の範囲】
【請求項1】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、
仮想カメラの制御を行う仮想カメラ制御部と、
前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの位置情報に基づいて、前記キャラクタ又は前記仮想カメラが位置する場所のマップ情報を取得し、取得されたマップ情報に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項3】
請求項2において、
前記カメラ間距離設定部は、
前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが高い場所に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記マップ情報に基づいて前記キャラクタ又は前記仮想カメラが低い場所に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記カメラ間距離設定部は、
ゲームにおいて前記キャラクタのターゲットとなるターゲットオブジェクトの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項5】
請求項4において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの方向が、前記ターゲットオブジェクトが位置する方向に向いたと判断された場合に、前記カメラ間距離を変化させる処理を行うことを特徴とするプログラム。
【請求項6】
請求項5において、
前記カメラ間距離設定部は、
前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから遠い距離に位置すると判断された場合には、前記カメラ間距離を広くする処理を行い、前記ターゲットオブジェクトが前記キャラクタ又は前記仮想カメラから近い距離に位置すると判断された場合には、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記カメラ間距離設定部は、
前記仮想カメラと前記キャラクタとの間に障害物オブジェクトが存在すると判断した場合に、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記カメラ間距離設定部は、
前記オブジェクト空間内にターゲットポイントが設定された場合に、前記キャラクタ又は前記仮想カメラを前記ターゲットポイントの方に誘導するための前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項9】
請求項8において、
前記カメラ間距離設定部は、
前記オブジェクト空間内にターゲットポイントが設定された場合に、前記カメラ間距離を広くする処理を行い、前記キャラクタ又は前記仮想カメラが前記ターゲットポイントに近づくにつれて、前記カメラ間距離を狭くする処理を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの移動速度に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項11】
請求項10において、
前記カメラ間距離設定部は、
前記キャラクタ又は前記仮想カメラの移動速度が速くなるにつれて、前記カメラ間距離を広くする処理を行うことを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記カメラ間距離設定部は、
前記オブジェクト空間内の各場所における前記キャラクタ又は前記仮想カメラの存在履歴情報に基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項13】
請求項1乃至12のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタが装備する装備オブジェクトの種類に応じて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項14】
請求項1乃至13のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタのモーションに基づいて、前記カメラ間距離の設定処理を行うことを特徴とするプログラム。
【請求項15】
請求項1乃至14のいずれかにおいて、
前記カメラ間距離設定部は、
前記キャラクタに対して所定のイベントが発生した場合に、前記カメラ間距離を広くする処理と狭くする処理を繰り返す前記カメラ間距離の変動処理を行うことを特徴とするプログラム。
【請求項16】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、
前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項17】
請求項16において、
前記時間パラメータ演算部は、
前記時間パラメータとして、ゲームの経過時間を表す経過時間パラメータの演算処理を行い、
前記カメラ間距離設定部は、
前記経過時間パラメータにより表される経過時間が長くなるにつれて、前記カメラ間距離を広くする処理を行うことを特徴とするプログラム。
【請求項18】
請求項16又は17において、
プレーヤからの入力情報に基づいて、プレーヤのゲーム環境の設定処理を行うゲーム環境設定部として、
コンピュータを機能させ、
前記カメラ間距離設定部は、
前記ゲーム環境の設定処理において、前記カメラ間距離の基準距離が設定された場合に、前記時間パラメータで表される時間が長くなるにつれて、前記カメラ間距離を前記基準距離に近づける処理を行うことを特徴とするプログラム。
【請求項19】
請求項1乃至18のいずれかにおいて、
プレーヤが操作する操作部から入力される操作情報を取得する操作情報取得部として、
コンピュータを機能させ、
前記カメラ間距離設定部は、
取得された前記操作情報をモニタし、前記操作情報のモニタ結果に基づいて前記カメラ間距離を制御することを特徴とするプログラム。
【請求項20】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至19のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項21】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
前記オブジェクト空間内で移動するキャラクタの制御を行うキャラクタ制御部と、
仮想カメラの制御を行う仮想カメラ制御部と、
前記キャラクタ又は前記仮想カメラの位置情報、方向情報及び移動状態情報の少なくとも1つに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部と、
を含むことを特徴とする画像生成システム。
【請求項22】
複数のオブジェクトが配置されるオブジェクト空間の設定処理を行うオブジェクト空間設定部と、
ゲームに関する時間パラメータの演算処理を行う時間パラメータ演算部と、
前記時間パラメータに基づいて、立体視画像を生成するための左目用仮想カメラと右目用仮想カメラとの間の距離を表すカメラ間距離の設定処理を行うカメラ間距離設定部と、
前記オブジェクト空間において前記左目用仮想カメラから見える画像である左目用画像と、前記オブジェクト空間において前記右目用仮想カメラから見える画像である右目用画像とを生成する画像生成部と、
を含むことを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2011−215918(P2011−215918A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−83889(P2010−83889)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】