(58)【調査した分野】(Int.Cl.,DB名)
所定のオブジェクトを配置した仮想3次元空間を仮想ステレオカメラで撮像して表示装置に立体視表示させる表示制御装置のコンピュータによって実行される表示制御プログラムであって、
前記コンピュータを、
前記所定のオブジェクトに関するパラメータであるオブジェクトパラメータに応じて、前記仮想ステレオカメラの視点位置から前記所定のオブジェクトまでの距離であるオブジェクト距離と、前記仮想ステレオカメラの視点位置から当該仮想ステレオカメラで前記仮想3次元空間を撮像した際に視差が生じない位置である基準面までの距離である立体視基準距離との割合である立体視割合を設定する立体視割合設定手段と、
前記立体視割合に基づいて、前記仮想ステレオカメラに関するパラメータであるカメラパラメータを設定するカメラパラメータ設定手段と、
前記カメラパラメータ設定手段によって設定されたカメラパラメータに基づいて、前記仮想ステレオカメラで前記仮想3次元空間を撮像した立体視画像を生成する画像生成手段と、
前記画像生成手段によって生成された立体視画像を前記表示装置に表示させる表示制御手段として機能させる、表示制御プログラム。
前記割合変更手段は、前記所定のオブジェクトの移動速度が前記所定の閾値を上回った場合に、前記立体視割合を所定の基準割合よりも高い値に変化させる、請求項6に記載の表示制御プログラム。
前記割合変更手段は、前記所定のオブジェクトの移動速度が前記所定の閾値を下回った場合に、前記立体視割合を所定の基準割合よりも低い値に変化させる、請求項6に記載の表示制御プログラム。
前記割合変更手段は、前記仮想ステレオカメラの撮像方向における前記所定のオブジェクトの加速度が第1の閾値を上回った場合に、前記立体視割合を所定の基準割合よりも高い値に変化させる、請求項9に記載の表示制御プログラム。
前記割合変更手段は、前記仮想ステレオカメラの撮像方向における前記所定のオブジェクトの加速度が第2の閾値を下回った場合に、前記立体視割合を所定の基準割合よりも高い値に変化させる、請求項9に記載の表示制御プログラム。
前記割合変更手段は、前記所定のオブジェクトが小さくなった場合に、前記立体視割合を所定の基準割合よりも高い値に変化させる、請求項12に記載の表示制御プログラム。
前記オブジェクトパラメータは、前記仮想ステレオカメラの視点位置からの奥行き方向に垂直な所定の方向に沿った前記所定のオブジェクトの厚みを示すパラメータであり、
前記判定手段は、前記所定のオブジェクトの厚みが変化したか否かを判定し、
前記割合変更手段は、厚みが変化したと前記判定手段によって判定された場合に、前記立体視割合を前記所定のオブジェクトの厚みに応じた値に変化させる、請求項5に記載の表示制御プログラム。
前記割合変更手段は、前記所定のオブジェクトが薄くなった場合に、前記立体視割合を所定の基準割合よりも高い値に変化させる、請求項14に記載の表示制御プログラム。
前記割合変更手段は、前記立体視割合を変化させる際に、当該立体視割合を変化した前記オブジェクトパラメータに応じた値とは異なる値に変化させてから、当該オブジェクトパラメータに応じた値に変化させる、請求項5から16のいずれかに記載の表示制御プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、特許文献1に記載の装置では、仮想3次元空間に配置されたオブジェクトを描画する場合に、上述のように、ユーザの操作に基づいて立体視表示されるオブジェクトの立体感が調整される。このように、立体視表示を行う従来の装置においては、外部からの入力に基づいてオブジェクトの立体感を調整するといった処理が行われるため、仮想3次元空間におけるオブジェクトの状態に応じた適切な臨場感を必ずしも自然に表現することができているとは言えなかった。
【0006】
それ故に、本発明の目的は、仮想3次元空間におけるオブジェクトの状態に応じた適切な臨場感を自然に表現することを可能にする表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法を提供することである。
【課題を解決するための手段】
【0007】
本発明の表示制御プログラムは、所定のオブジェクトを配置した仮想3次元空間を仮想ステレオカメラで撮像して表示装置に立体視表示させる表示制御装置のコンピュータによって実行される表示制御プログラムである。この表示制御プログラムは、コンピュータを、立体視割合設定手段、カメラパラメータ設定手段、画像生成手段、及び表示制御手段として機能させる。立体視割合設定手段は、所定のオブジェクトに関するパラメータ
であるオブジェクトパラメータに応じて、オブジェクト距離と立体視基準距離の割合である立体視割合を設定する。ここで、オブジェクト距離は、仮想ステレオカメラの視点位置から所定のオブジェクトまでの距離である。立体視基準距離は、仮想ステレオカメラの視点位置から仮想ステレオカメラで仮想3次元空間を撮像した際に視差が生じない位置である基準面までの距離である。カメラパラメータ設定手段は、設定された立体視割合に基づいて、仮想ステレオカメラに関するパラメータであるカメラパラメータを設定する。画像生成手段は、カメラパラメータ設定手段によって設定されたカメラパラメータに基づいて、仮想ステレオカメラで仮想3次元空間を撮像した立体視画像を生成する。表示制御手段は、画像生成手段によって生成された立体視画像を表示装置に表示させる。
【0008】
この構成によれば、立体視割合に基づいてカメラパラメータが設定される。すなわち、仮想3次元空間内の状況を表す2つの距離の割合に基づいてカメラパラメータが設定される。これにより、仮想3次元空間におけるオブジェクトの状態に応じた適切な臨場感を自然に表現することが可能になる。
【0009】
表示制御プログラムは、コンピュータを、オブジェクト距離を変化させるオブジェクト距離変化手段として更に機能させてもよい。この場合、立体視割合設定手段は、オブジェクト距離変化手段により変化したオブジェクト距離に基づいて立体視割合を設定する。
【0010】
この構成によれば、所定のオブジェクト又は仮想ステレオカメラが移動してオブジェクト距離が変化したとしても、仮想3次元空間におけるオブジェクトの状態に応じた適切な臨場感を自然に表現することが可能である。
【0011】
カメラパラメータ設定手段は、立体視割合を固定した上で、カメラパラメータを設定
してもよい。
【0012】
立体視割合が一定である場合、所定のオブジェクトの立体感は変化しない。逆に、立体視割合が変化した場合、所定のオブジェクトの立体感も変化することになる。上記構成によれば、オブジェクトパラメータが変化しなければ、立体視割合設定手段によって設定された立体視割合が一定の値に維持されるので、所定のオブジェクトの状態に応じた臨場感が損なわれてしまうのを効果的に防止することが可能になる。なお、オブジェクトパラメータとしては、所定のオブジェクトの速度を示すパラメータ、加速度を示すパラメータ、大きさを示すパラメータ、厚みを示すパラメータ等が例として挙げられる。
【0013】
カメラパラメータ設定手段は、判定手段、及び割合変更手段を含んでいてもよい。判定手段は、オブジェクトパラメータの変化により所定のオブジェクトの状態が所定の変化をしたか否かを判定する。割合変更手段は、所定のオブジェクトの状態が所定の変化をしたと判定手段によって判定された場合に、立体視割合を変化させる。
【0014】
この構成によれば、オブジェクトパラメータが変化して所定のオブジェクトの状態が変化した場合に、立体視割合が状態変化前の値から変化して状態変化に応じた別の値に収束する。このように、所定のオブジェクトの状態が変化したときに例外的に立体視割合が変更されるので、所定のオブジェクトの状態変化をユーザに効果的に知らしめることができ、且つ所定のオブジェクトの立体感を状態変化後のオブジェクトの状態に適したものにすることが可能になる。
【0015】
割合変更手段は、変化したオブジェクトパラメータに応じた値に立体視割合を変化させる。
【0016】
この構成によれば、変化したオブジェクトパラメータに応じた値を適切な値に設定しておくことにより、変化したオブジェクトパラメータとは無関係な値に立体視割合を変化させる場合に比べて、所定のオブジェクトの状態変化をより効果的に知らしめることが可能である。
【0017】
オブジェクトパラメータは、
仮想ステレオカメラの視点位置からの奥行き方向に沿った所定のオブジェクトの移動速度を示すパラメータであってもよい。この場合、判定手段は、所定のオブジェクトの移動速度が所定の閾値を超えたか否かを判定する。割合変更手段は、所定の閾値を超えたと判定手段によって判定された場合に、立体視割合を所定のオブジェクトの移動速度に応じた値に変化させる。
【0018】
この構成によれば、所定のオブジェクトの移動速度が所定の閾値を超えることにより、立体視割合がその移動速度に応じた値に変更される。これにより、所定のオブジェクトの移動速度の変化をユーザに効果的に知らしめることができ、且つ所定のオブジェクトの立体感を移動速度に応じた自然なものにすることが可能になる。なお、所定の閾値を超えるとは、所定の閾値を上回る場合と、所定の閾値を下回る場合との両方を含むものである。
【0019】
割合変更手段は、所定のオブジェクトの移動速度が所定の閾値を上回った場合に、立体視割合を所定の基準割合よりも高い値に変化させることが好ましい。
【0020】
この構成によれば、所定のオブジェクトの移動速度が所定の閾値を上回ると、立体視割合が高くなる。これにより、例えば所定のオブジェクトに対して基準面が仮想ステレオカメラから離れる方向に移動する。その結果、所定のオブジェクトがより近くにいるかのようにユーザに感じさせることができ、所定のオブジェクトの移動速度が大きくなったときの臨場感を効果的に表現することが可能になる。
【0021】
割合変更手段は、所定のオブジェクトの移動速度が所定の閾値を下回った場合に、立体視割合を所定の基準割合よりも低い値に変化させることが好ましい。
【0022】
この構成によれば、所定のオブジェクトの移動速度が所定の閾値を下回ると、立体視割合が低くなる。これにより、例えば、仮想ステレオカメラが所定のオブジェクトから離される。その結果、
ユーザが離れた位置から所定のオブジェクトを俯瞰するように見ることができ、所定のオブジェクトがゆっくりと移動していることを
ユーザが自然に感じることが可能になる。
【0023】
オブジェクトパラメータは、
仮想ステレオカメラの視点位置からの奥行き方向に沿った所定のオブジェクトの加速度を示すパラメータであってもよい。この場合、判定手段は、所定のオブジェクトの加速度が所定の閾値を超えたか否かを判定する。割合変更手段は、所定の閾値を超えたと判定手段によって判定された場合に、立体視割合を所定のオブジェクトの加速度に応じた値に変化させる。
【0024】
この構成によれば、所定のオブジェクトの加速度が所定の閾値を超えることにより、立体視割合がそのオブジェクトの加速度に応じた値に変更される。これにより、所定のオブジェクトの加速度の変化をユーザに効果的に知らしめることができ、且つ所定のオブジェクトの立体感を加速度に応じた自然なものにすることが可能になる。なお、所定の閾値を超えるとは、所定の閾値を上回る場合と、所定の閾値を下回る場合との両方を含むものである。
【0025】
割合変更手段は、仮想ステレオカメラの撮像方向における所定のオブジェクトの加速度が第1の閾値を上回った場合に、立体視割合を所定の基準割合よりも高い値に変化させることが好ましい。
【0026】
この構成によれば、撮像方向における所定のオブジェクトの加速度が第1の閾値を上回ると、立体視割合が高くなる。これにより、例えば所定のオブジェクトに対して基準面が仮想ステレオカメラから離れる方向に移動する。その結果、所定のオブジェクトがより近くにいるかのようにユーザに感じさせることができ、所定のオブジェクトの加速度が大きくなったときの臨場感を効果的に表現することが可能になる。
【0027】
割合変更手段は、仮想ステレオカメラの撮像方向における所定のオブジェクトの加速度が第2の閾値を下回った場合に、立体視割合を所定の基準割合よりも高い値に変化させることが好ましい。
【0028】
この構成によれば、所定のオブジェクトの加速度が第2の閾値を下回ると、立体視割合が高くなる。これにより、例えば所定のオブジェクトに対して基準面が仮想ステレオカメラから離れる方向に移動する。その結果、所定のオブジェクトがより近くにいるかのようにユーザに感じさせることができ、所定のオブジェクトの加速度が小さくなったときの臨場感を効果的に表現することが可能になる。
【0029】
オブジェクトパラメータは、所定のオブジェクトの大きさを示すパラメータであってもよい。この場合、判定手段は、所定のオブジェクトの大きさが変化したか否かを判定する。割合変更手段は、大きさが変化したと判定手段によって判定された場合に、立体視割合を所定のオブジェクトの大きさに応じた値に変化させる。
【0030】
この構成によれば、立体視割合が、所定のオブジェクトの大きさに応じた値に変更される。すなわち、所定のオブジェクトが小さいときに第1設定値に維持されていた立体視割合が、所定のオブジェクトが大きくなることで第1設定値とは異なる第2設定値に変更される。これにより、所定のオブジェクトの大きさの変化をユーザに効果的に知らしめることができ、且つ所定のオブジェクトの立体感を大きさに応じた自然なものにすることが可能になる。
【0031】
割合変更手段は、所定のオブジェクトが小さくなった場合に、立体視割合を所定の基準割合よりも高い値に変化させることが好ましい。
【0032】
この構成によれば、所定のオブジェクトが小さくなると、立体視割合が高くなる。これにより、例えば所定のオブジェクトに対して基準面が仮想ステレオカメラから離れる方向に移動する。その結果、所定のオブジェクトがより近くにいるかのようにユーザに感じさせることができ、所定のオブジェクトが小さくなって周りのオブジェクトが大きく見えるような臨場感を効果的に表現することが可能になる。
【0033】
オブジェクトパラメータは、
仮想ステレオカメラの視点位置からの奥行き方向に垂直な所定の方向に沿った所定のオブジェクトの厚みを示すパラメータであってもよい。この場合、判定手段は、所定のオブジェクトの厚みが変化したか否かを判定する。割合変更手段は、厚みが変化したと判定手段によって判定された場合に、立体視割合を所定のオブジェクトの厚みに応じた値に変化させる。
【0034】
この構成によれば、立体視割合が、所定のオブジェクトの厚みに応じた値に変更される。すなわち、所定のオブジェクトが厚いときに第1設定値に維持されていた立体視割合が、所定のオブジェクトが薄くなることで第1設定値とは異なる第2設定値に変更される。これにより、所定のオブジェクトの厚みの変化をユーザに効果的に知らしめることができ、且つ所定のオブジェクトの立体感を厚みに応じた自然なものにすることが可能になる。
【0035】
割合変更手段は、所定のオブジェクトが薄くなった場合に、立体視割合を所定の基準割合よりも高い値に変化させることが好ましい。
【0036】
この構成によれば、所定のオブジェクトが薄くなると、立体視割合が高くなる。これにより、例えば所定のオブジェクトに対して基準面が仮想ステレオカメラから離れる方向に移動する。その結果、所定のオブジェクトがより近くにいるかのようにユーザに感じさせることができ、所定のオブジェクトが薄くなったときの臨場感を効果的に表現することが可能になる。
【0037】
割合変更手段は、立体視割合を変化させる際に、オブジェクト距離を一時的に維持してもよい。
【0038】
この構成によれば、立体視割合を変化させる際に、オブジェクト距離が一時的に維持された状態で立体視基準距離だけが変化する。このため、立体視画像を見ているユーザが所定のオブジェクトを見失うことなく、オブジェクトパラメータが変化してオブジェクトの状態が変わったことをユーザに効果的に知らしめることが可能になる。
【0039】
割合変更手段は、立体視割合を変化させる際に、その立体視割合を変化したオブジェクトパラメータに応じた値とは異なる値に変化させてから、オブジェクトパラメータに応じた値に変化させてもよい。
【0040】
この構成によれば、立体視割合の変化により、立体視割合を単純に変化させる場合に比べて、オブジェクトパラメータが変化したことが視覚的に強調される。このため、オブジェクトパラメータが変化してオブジェクトの状態が変わったことをユーザにより効果的に知らしめることが可能になる。
【0041】
割合変更手段は、立体視割合を徐々に変化させてもよい。
【0042】
この構成によれば、所定のオブジェクトの状態変化に伴い、立体視割合が徐々に変化するので、所定のオブジェクトの状態が変化する様子を自然に表現することが可能になる。
【0043】
仮想ステレオカメラは、左目用画像を撮像する左目用カメラと、右目用画像を撮像する右目用カメラとから構成されている。この場合、仮想ステレオカメラの視点位置は、左目用カメラと右目用カメラとの間のいずれかの位置である。
【0044】
この構成によれば、仮想3次元空間における左目用カメラの位置座標と右目用カメラの位置座標とに基づいて、仮想ステレオカメラの視点位置の位置座標が容易に算出される。
【0045】
仮想ステレオカメラの視点位置は、左目用カメラと右目用カメラとを結ぶ線分の中点の位置であってもよい。
【0046】
この構成によれば、仮想3次元空間における左目用カメラの位置座標と右目用カメラの位置座標とに基づいて、仮想ステレオカメラの視点位置の位置座標が容易に算出される。
【0047】
仮想ステレオカメラの視点位置は、左目用カメラの位置
および右目用カメラの位置
の間の位置であってもよい。
【0048】
この構成によれば、仮想3次元空間における左目用カメラの位置座標と右目用カメラの位置座標とに基づいて、仮想ステレオカメラの視点位置の位置座標が更に容易に算出される。
【0049】
表示制御プログラムは、コンピュータを、ユーザによって操作される入力手段からの入力を受け付ける入力受付手段として更に機能させてもよい。オブジェクトパラメータは、この入力受付手段によって受け付けられた入力に応じて変化する。
【0050】
所定のオブジェクトは、ユーザによって操作される操作対象オブジェクトである。上記構成によれば、ユーザの操作によって操作対象オブジェクトの状態(オブジェクトパラメータ)が変化するので、ユーザの操作に伴う操作対象オブジェクトの状態変化を効果的に表現することが可能になる。
【0051】
本発明は、所定のオブジェクトを配置した仮想3次元空間を仮想ステレオカメラで撮像して表示装置に立体視表示させる表示制御装置として捉えることもできる。この表示制御装置は、立体視割合設定手段、カメラパラメータ設定手段、画像生成手段、及び表示制御手段を備える。立体視割合設定手段は、所定のオブジェクトに関するパラメータ
であるオブジェクトパラメータに応じて、オブジェクト距離と立体視基準距離の割合である立体視割合を設定する。ここで、オブジェクト距離は、仮想ステレオカメラの視点位置から所定のオブジェクトまでの距離である。立体視基準距離は、仮想ステレオカメラの視点位置から仮想ステレオカメラで仮想3次元空間を撮像した際に視差が生じない位置である基準面までの距離である。カメラパラメータ設定手段は、設定された立体視割合に基づいて、仮想ステレオカメラに関するパラメータであるカメラパラメータを設定する。画像生成手段は、カメラパラメータ設定手段によって設定されたカメラパラメータに基づいて、仮想ステレオカメラで仮想3次元空間を撮像した立体視画像を生成する。表示制御手段は、画像生成手段によって生成された立体視画像を表示装置に表示させる。
【0052】
また、本発明は、所定のオブジェクトを配置した仮想3次元空間を仮想ステレオカメラで撮像して表示装置に立体視表示させる表示制御システムとして捉えることもできる。この表示制御システムは、立体視割合設定手段、カメラパラメータ設定手段、画像生成手段、及び表示制御手段を備える。立体視割合設定手段は、所定のオブジェクトに関するパラメータ
であるオブジェクトパラメータに応じて、オブジェクト距離と立体視基準距離の割合である立体視割合を設定する。ここで、オブジェクト距離は、仮想ステレオカメラの視点位置から所定のオブジェクトまでの距離である。立体視基準距離は、仮想ステレオカメラの視点位置から仮想ステレオカメラで仮想3次元空間を撮像した際に視差が生じない位置である基準面までの距離である。カメラパラメータ設定手段は、設定された立体視割合に基づいて、仮想ステレオカメラに関するパラメータであるカメラパラメータを設定する。画像生成手段は、カメラパラメータ設定手段によって設定されたカメラパラメータに基づいて、仮想ステレオカメラで仮想3次元空間を撮像した立体視画像を生成する。表示制御手段は、画像生成手段によって生成された立体視画像を表示装置に表示させる。
【0053】
また、本発明は、所定のオブジェクトを配置した仮想3次元空間を仮想ステレオカメラで撮像して表示装置に立体視表示させる表示制御方法として捉えることもできる。この表示制御方法では、まず、所定のオブジェクトに関するパラメータ
であるオブジェクトパラメータに応じて、オブジェクト距離と立体視基準距離の割合である立体視割合が設定される。ここで、オブジェクト距離は、仮想ステレオカメラの視点位置から所定のオブジェクトまでの距離である。立体視基準距離は、仮想ステレオカメラの視点位置から仮想ステレオカメラで仮想3次元空間を撮像した際に視差が生じない位置である基準面までの距離である。次に、設定された立体視割合に基づいて、仮想ステレオカメラに関するパラメータであるカメラパラメータが設定される。続いて、設定されたカメラパラメータに基づいて、仮想ステレオカメラで仮想3次元空間を撮像した立体視画像が生成される。そして、生成された立体視画像が表示装置に表示される。
【発明の効果】
【0054】
この発明によれば、オブジェクト距離に対する立体視基準距離の割合である立体視割合に基づいて設定されたカメラパラメータで仮想ステレオカメラにより撮像された仮想3次元空間の立体視画像が表示装置に表示される。その際、外部から入力されたデータではなく、仮想3次元空間内の状況を表す2つの距離の割合に基づいてカメラパラメータが設定されるので、仮想3次元空間におけるオブジェクトの状態に応じた適切な臨場感を自然に表現することができる。
【発明を実施するための形態】
【0056】
[第1の実施形態]
以下、適宜図面を参照しつつ、本発明の第1の実施形態について説明する。
【0057】
[ゲーム装置10の構成]
まず、本発明の表示制御装置の一実施形態に係るゲーム装置10について説明する。ゲーム装置10は携帯型のゲーム装置である。
図1および
図2A〜Dに示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0058】
[下側ハウジング11の説明]
図1および
図2A〜Dに示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。
【0059】
タッチパネル13は、下側LCD12の画面上に装着されている。下側ハウジング11の上側面には、タッチペン28を収納するための挿入口17(
図1および
図2Dに示す点線)が設けられている。
【0060】
下側ハウジング11の内側面(主面)には、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。
【0061】
アナログスティック15は、方向を指示するデバイスである。
【0062】
下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(
図3参照)が設けられる。
【0063】
図2BおよびDに示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。また、
図2Aに示されるように、下側ハウジング11の左側面には、ゲーム装置10が備えるスピーカ43(
図3参照)の音量を調整するための音量ボタン14Iが設けられる。
【0064】
図2Aに示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタが設けられる。
【0065】
図2Dに示されるように、下側ハウジング11の上側面には、外部メモリ44を挿入するための挿入口11Dが設けられる。
【0066】
図1および
図2Cに示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(
図2C参照)。
【0067】
[上側ハウジング21の説明]
図1および
図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。
【0068】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像(立体視画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側LCD22は、立体視画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する3D調整スイッチ25によって行われる。
【0069】
外側撮像部23は、上側ハウジング21の外側面21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【0070】
内側撮像部24は、上側ハウジング21の内側面21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。
【0071】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。
【0072】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示すLEDである。
【0073】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0074】
[ゲーム装置10の内部構成]
次に、
図3を参照して、ゲーム装置10の内部の電気的構成について説明する。
図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。
【0075】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312、VRAM(Video RAM)313を含む。CPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、CPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。GPU312は、CPU311からの命令に応じて画像を生成し、VRAM313に描画する。VRAM313に描画された画像は、上側LCD22及び/又は下側LCD12に出力され、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0076】
外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0077】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【0078】
外部メモリ44は、情報処理部31によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。
【0079】
データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、任意のデータを保存するために用いられる。
【0080】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0081】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。
【0082】
加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0083】
RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0084】
I/F回路41には、タッチパネル13、マイク42およびスピーカ43が接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0085】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。
【0086】
下側LCD12および上側LCD22は情報処理部31に接続される。具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0087】
外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0088】
3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0089】
情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0090】
なお、上述したハードウェア構成は単なる一例に過ぎず、ゲーム装置
10の構成は適宜変更可能である。
【0091】
[ゲームの概要]
次に、
図4〜
図7を参照しつつ、ゲーム装置10のCPU311が表示制御プログラムを実行することによって進行するゲームの概要について説明する。ここで、
図4は、プレイヤオブジェクト50が走行する様子を示す図である。
図5は、プレイヤオブジェクト50が急加速する様子を示す図である。
図6は、プレイヤオブジェクト50が雷に打たれて小さくなった状態を示す図である。
図7は、プレイヤオブジェクト50に重りが落下してプレイヤオブジェクト50が薄くなる様子を示す図である。
【0092】
本実施形態において実行されるゲームは、仮想3次元空間内(仮想ゲーム空間内)に配置されたプレイヤオブジェクト50(所定のオブジェクトの一例)をユーザ(プレイヤ)が操作して着順を競うレースゲームである。このプレイヤオブジェクト50は、プレイヤによって操作される操作対象オブジェクトであって、カート51と、カート51を操縦するプレイヤキャラクタ52とから構成されている。
【0093】
また、プレイヤは、十字ボタン14A、ボタン14B、ボタン14C、及びボタン14Eを操作することによって、プレイヤオブジェクト50の動きをコントロールすることができる。プレイヤが十字ボタン14Aを操作すると、プレイヤオブジェクト50の進行方向が変化する。
【0094】
プレイヤがボタン14Bを押下すると、プレイヤオブジェクト50が通常速度まで順次加速した後、プレイヤオブジェクト50の移動速度が通常速度で一定となる。すなわち、ボタン14Bは、本実施形態ではアクセルボタンとして機能する。
【0095】
プレイヤがボタン14Cを押下すると、プレイヤオブジェクト50が順次減速する。すなわち、ボタン14Cは、本実施形態ではブレーキボタンとして機能する。なお、プレイヤがボタン14B、ボタン14C、及びボタン14Eをいずれも押下していない場合にもプレイヤオブジェクト50は減速するが、ボタン14Cを押下した時の方が、プレイヤオブジェクト50が減速する速度の変化量が大きい。
【0096】
プレイヤがボタン14Eを押下すると、プレイヤオブジェクト50を急加速させるためのアイテムを利用することができる。このため、ボタン14Eが押下されると、押下された時点の速度から上述した通常速度以上の上限速度までプレイヤオブジェクト50が急加速(ボタン14Bを押下した時の加速度以上の加速)する。すなわち、ボタン14Eは、本実施形態では、急加速ボタン(アイテム利用ボタン)として機能する。
【0097】
なお、ここで説明した各ボタン14に対する機能の割り当ては一例であって、ここで説明したプレイヤオブジェクト50の各動作は、別のボタンの操作によって実現されてもよい。
【0098】
本実施形態におけるレースゲームでは、プレイヤの操作、プレイヤオブジェクト50と着順を競う別のカートに乗った敵キャラクタによるアイテムの使用、或いはその他のオブジェクトの変化等により、プレイヤオブジェクト50の状態が変化する場合がある。すなわち、例えば、プレイヤがボタン14Eを押下することによって、プレイヤオブジェクト50が急加速している状態(
図4及び
図5参照)となる。また、プレイヤがボタン14Cを押下することによって、プレイヤキャラクタ52がブレーキを踏んでプレイヤオブジェクト50が減速する。また、プレイヤオブジェクト50が例えば障害物(壁など)に衝突すると、プレイヤオブジェクト50が急減速(ボタン14Cを押下した時の減速度以上の減速)する。また、例えば敵キャラクタが雷を落とすためのアイテムを使用すると、プレイヤオブジェクト50が雷に打たれて小さくなり(
図6参照)、アイテムの使用から一定時間(例えば10秒)が経過すると、プレイヤオブジェクト50が元の大きさに戻る(
図4参照)。また、仮想3次元空間には所定の時間間隔で上がり下がりを繰り返す重りのオブジェクト(以下単に「重り」という。)が配置されており、プレイヤオブジェクト50は、その重りに潰されると薄くなる(
図7参照)。そして、重りに潰されてから一定時間(例えば5秒)が経過すると、プレイヤオブジェクト50は、元の厚みに戻る(
図4参照)。本実施形態におけるゲーム装置10では、このようなプレイヤオブジェクト50の状態変化をプレイヤに効果的に知らしめるために、以下に説明するオブジェクト距離d1と立体視基準距離d2を制御する処理が行われる。
【0099】
[立体視割合d2/d1の説明]
以下、
図8〜
図10を参照しつつ、立体視割合d2/d1について説明する。ここで、
図8は、仮想3次元空間を模式的に示す説明図であり、設定割合d2/d1が基準割合に設定された状態を示す。
図9は、仮想3次元空間を模式的に示す説明図であり、設定割合d2/d1が低めに設定された状態を示す。
図10は、仮想3次元空間を模式的に示す説明図であり、設定割合d2/d1が高めに設定された状態を示す。
【0100】
図8〜
図10に示されるように、仮想3次元空間には、仮想ステレオカメラ53、及び仮想ステレオカメラ53によって撮像されるプレイヤオブジェクト50が配置されている。仮想ステレオカメラ53は、プレイヤの左目に視認される左目用画像を撮像する左目用カメラ53Aと、プレイヤの右目に視認される右目用画像を撮像する右目用カメラ53Bとから構成されている。
図8〜
図10において、左目用カメラ53A及び右目用カメラ53Bのそれぞれから延びる2本の直線により、各仮想カメラ53A,53Bの撮像範囲(画角)が示されている。ゲーム装置10では、情報処理部31によって表示制御プログラム322(
図11参照)が実行されることにより、仮想3次元空間を仮想ステレオカメラ53(左目用カメラ53A及び右目用カメラ53B)で撮像した左目用画像及び右目用画像が生成されて、立体視画像として上側LCD22に立体視表示される。
【0101】
このようにして仮想ステレオカメラ
53によって撮像される仮想3次元空間に対して、
図8〜
図10に示されるように、基準面(視差ゼロ面)が設定されている。ここで、基準面は、仮想ステレオカメラ53で仮想3次元空間を撮像した際に視差が生じない位置である。ゲーム装置10では、この基準面が上側LCD22の表面に位置するように制御が行われる。このため、この基準面上に位置しているオブジェクトは上側LCD22の画面上に再生される。また、基準面の手前(基準面に対して仮想ステレオカメラ53側)に位置しているオブジェクトは上側LCD22の画面に対して手前の位置に再生され、基準面の奥に位置しているオブジェクトは上側LCD22の画面に対して奥の位置に再生される。
【0102】
このように、オブジェクトと基準面との位置関係によって、上側LCD22に表示される立体視画像の見え方(立体感)が変化する。逆に言えば、左目用カメラ53Aと右目用カメラ53Bとの距離、左目用カメラ53A及び右目用カメラ53Bの画角(2本の直線がなす角度)等のカメラパラメータや、仮想ステレオカメラ53からオブジェクトまでの距離が変化しても、立体視割合d2/d1が一定であれば、そのオブジェクトの立体感は維持される。つまり、立体視割合d2/d1が変化しなければ、オブジェクトの立体感はプレイヤにとって同じように感じられる。ここで、オブジェクト距離d1は、仮想ステレオカメラ53の撮像方向54における仮想ステレオカメラ53の視点位置(ここでは左目用カメラ53Aの視点位置と右目用カメラ53Bの視点位置の中点)からプレイヤオブジェクト50までの距離である。立体視基準距離d2は、仮想ステレオカメラ53の撮像方向54における仮想ステレオカメラ53の視点位置から基準面までの距離である。なお、仮想ステレオカメラ53の視点位置は、左目用カメラ53Aの視点位置と右目用カメラ53Bの視点位置の間のいずれかの位置であれば、これらの視点位置の中点に限定されるものではない。
【0103】
本実施形態におけるゲーム装置10では、プレイヤオブジェクト50の状態に応じた適切な臨場感を自然に表現することを目的として、仮想ステレオカメラ53のカメラパラメータを設定する際に、上述した立体視割合d2/d1をプレイヤオブジェクト50の状況に基づいて制御することとしている。
【0104】
図8に例示されるように立体視割合d2/d1を基準割合(例えば「0.9」)に設定すると、プレイヤオブジェクト50が上側LCD22の画面から若干奥の位置に再生される。すなわち、プレイヤオブジェクト50が上側LCD22の画面から少し引っ込んで見える。
【0105】
また、
図9に例示されるように立体視割合d2/d1を小さめの値(例えば「0.6」)に設定すると、オブジェクト距離d1に対して立体視基準距離d2が小さいので、立体視割合d2/d1が基準割合に設定されている場合に比べて、プレイヤオブジェクト50が上側LCD22の画面から更に奥の位置に再生される。このため、プレイヤは、プレイヤオブジェクト50を少し離れた位置(遠く)から俯瞰するように見ることができる。
【0106】
図10に例示されるように立体視割合d2/d1を大きめの値(例えば「1.2」)に設定すると、オブジェクト距離d1に対して立体視基準距離d2が大きいので、プレイヤオブジェクト50が上側LCD22の画面の手前に再生される。このため、プレイヤは、プレイヤオブジェクト50が目の前に位置しているかのような臨場感を感じながらプレイヤオブジェクト50を近くで見ることができる。後に詳述するが、本実施形態におけるゲーム装置10では、このような立体視割合d2/d1が、プレイヤオブジェクト50の状態(プレイヤオブジェクト50の移動速度、加速度、大きさ、厚み等)に基づいて制御される。
【0107】
[メモリマップ]
以下、
図11を参照しつつ、メインメモリ32に記憶されるデータについて説明する。ここで、
図11は、メインメモリ32のメモリマップである。
図11に例示されるように、メインメモリ32は、プログラム記憶領域321及びデータ記憶領域323を有している。プログラム記憶領域321には、CPU311によって実行されるプログラムが記憶される。データ記憶領域323には、仮想3次元空間を仮想ステレオカメラ53で撮像して上側LCD22に表示させるための処理に必要な各種データが記憶される。プログラム記憶領域321内のプログラム、及びデータ記憶領域323内のデータの一部は、外部メモリ44に予め記憶されたデータが、仮想ステレオカメラ53による仮想3次元空間の撮像に際してメインメモリ32に読み出されたものである。
【0108】
プログラム記憶領域321には、表示制御プログラム322等が記憶されている。表示制御プログラム322は、
図12以降のフローチャートに示されている一連の処理を情報処理部31に実行させるためのプログラムである。
【0109】
データ記憶領域323には、操作データ324、プレイヤオブジェクトデータ325、ノンプレイヤオブジェクトデータ326、閾値データ327、割合データ328、基準割合データ329、設定割合データ330、カメラパラメータデータ331、左目用画像データ332、右目用画像データ333等が記憶される。
【0110】
操作データ324は、各操作ボタン14A〜E、G〜H、アナログスティック15及びタッチパネル13に対して行われたユーザの操作を示すデータである。
【0111】
プレイヤオブジェクトデータ325は、プレイヤオブジェクト50に関するオブジェクトパラメータを示すデータであって、プレイヤオブジェクト50の向きや形状(ポリゴン形状)、色彩(テクスチャ)を示すデータの他に、位置座標データ3251、加速度データ3252、移動速度データ3253、サイズデータ3254、厚みデータ3255等から構成されている。位置座標データ3251は、仮想3次元空間におけるプレイヤオブジェクト50の位置座標を示すデータである。加速度データ3252は、プレイヤオブジェクト50の加速度又は減速度を示すパラメータのデータである。言い換えれば、加速度データ3252は、プレイヤオブジェクト50が急加速又は急減速する際にプレイヤオブジェクト50に生じる加速度を示すパラメータのデータである。この加速度データ3252は、プレイヤオブジェクト50が急加速中のときはプレイヤオブジェクト50の加速度を示し、プレイヤオブジェクト50が急減速中のときはプレイヤオブジェクト50の減速度を示す。移動速度データ3253は、プレイヤオブジェクト50の移動速度を示すパラメータのデータである。サイズデータ3254は、プレイヤオブジェクト50の大きさを示すパラメータのデータである。厚みデータ3255は、プレイヤオブジェクト50の厚みを示すパラメータのデータである。
【0112】
ノンプレイヤオブジェクトデータ326は、仮想3次元空間におけるノンプレイヤオブジェクトの位置、向き、形状(ポリゴン形状)、色彩(テクスチャ)等を示すデータである。なお、ノンプレイヤオブジェクトは、プレイヤオブジェクト50と着順を競う他のカート、地形オブジェクト、背景オブジェクト等である。
【0113】
閾値データ327は、各種判定処理に使用される閾値を示すデータである。具体的には、ボタン14Eの押下によりプレイヤオブジェクト50が急加速したか否かを判定するための閾値、プレイヤオブジェクト50が例えば障害物に衝突して急減速したか否かを判定するための閾値、プレイヤオブジェクト50の移動速度が変化したか否かを判定するための閾値等である。
【0114】
割合データ328は、現時点のオブジェクト距離d1と、現時点の立体視基準距離d2と、これらのオブジェクト距離d1及び立体視基準距離d2に基づいて算出された立体視割合d2/d1とを示すデータである。基準割合データ329は、プレイヤオブジェクト50の状態が通常の状態から変化していない場合に設定される立体視割合d2/d1の基準割合を示すデータである。
【0115】
設定割合データ330は、プレイヤオブジェクト50の状態に対して立体視割合d2/d1の最適な設定割合を示すデータである。後に詳述するが、プレイヤオブジェクト50の状態が変化しない場合、設定割合データ330が示す設定割合が、基準割合データ329が示す基準割合(例えば「0.9」)に設定される。このように、設定割合データ330が基準割合に設定されると、割合データ328が示す立体視割合d2/d1が、設定割合データ330が示す基準割合を維持するように、オブジェクト距離d1及び立体視基準距離d2の両方又は一方が制御される。これに対して、プレイヤオブジェクト50の状態が変化すると、状態変化後のプレイヤオブジェクト50の状態に応じて、設定割合データ330が示す設定割合が低めの値(例えば「0.6」)又は高めの値(例えば「1.2」)に設定される。このように設定割合データ330が設定されると、割合データ328が示す立体視割合d2/d1が設定割合データ330が示す状態変化後の設定割合の値に徐々に近付いて収束するように、オブジェクト距離d1及び立体視基準距離d2の両方又は一方が制御される。
【0116】
なお、設定割合として設定される低めの値及び高めの値は、基準割合データ329が示す基準割合と同様に予め定められたものである。また、図には示されていないが、低めの値及び高めの値を示すデータは、基準割合データ329と同様に、データ記憶領域323に格納されている。そして、必要に応じて、設定割合データ330が示す設定割合に設定される。ただし、設定割合の高めの値及び低めの値は、必ずしもデータ記憶領域323に予め格納されている必要はなく、例えば、基準割合データ329を用いた表示制御プログラム322に基づく演算処理を行うことにより、設定割合を設定する毎に算出するようにしてもよい。
【0117】
また、後に詳述するが、立体視割合d2/d1を決定するオブジェクト距離d1と立体視基準距離d2のうち、オブジェクト距離d1を一定に維持したまま立体視基準距離d2だけを変化させるといった制御が行われる場合がある。このような場合、CPU311は、設定割合d2/d1の値を示すデータに加えて、オブジェクト距離d1を示すデータ、及び立体視基準距離d2を示すデータを設定割合データ330としてデータ記憶領域323に格納する。その際、CPU311は、割合データ328が示す現時点のオブジェクト距離d1を設定割合データ330のオブジェクト距離d1に設定すると共に、設定割合データ330の立体視基準距離d2を例えば予め定められた高めの値に設定する。このような設定が行われた場合、割合データ328が示すオブジェクト距離d1と、設定割合データ330が示すオブジェクト距離d1とが同じ値となるので、CPU311は、割合データ328が示す現在の立体視基準距離d2が設定割合データ330が示す立体視基準距離d2に収束するように、立体視基準距離d2を変化させる。
【0118】
カメラパラメータデータ331は、左目用カメラ53A及び右目用カメラ53Bのそれぞれの仮想カメラの仮想3次元空間における視点位置、両仮想カメラの距離、撮像方向、画角等のカメラパラメータを示すデータである。このカメラパラメータデータ331は、割合データ328が示す立体視割合d2/d1に基づいて設定される。
【0119】
左目用画像データ332及び右目用画像データ333は、仮想ステレオカメラ53による撮像で得られた左目用画像と右目用画像のデータであり、撮像が行われる毎に上側LCD22に出力される。
【0120】
なお、図には示されていないが、データ記憶領域323には、実カメラである外側撮像部23又は内側撮像部24による撮像で得られた画像データ等も記憶されるが、これらのデータは本発明とは直接関係しないので、ここでの詳細な説明は省略する。
【0121】
[メイン処理の説明]
次に、
図12を参照しつつ、ゲーム装置10によって実行されるメイン処理について説明する。ここで、
図12は、ゲーム装置10で実行されるメイン処理の一例を示すフローチャートである。まず、CPU311は、以降の処理において用いられるデータの初期化処理を実行する(ステップS1)。具体的には、CPU311は、以降の処理に使用されるデータ記憶領域323内の各種変数やフラグ等を初期化する。そして、CPU311は、プレイヤオブジェクト50、敵キャラクタが操縦するカートや地形オブジェクト等のノンプレイヤオブジェクトを仮想3次元空間に配置する。具体的には、CPU311は、ゲーム開始時における仮想ステレオカメラ53の初期位置、及び各種オブジェクトの初期状態を示すデータをデータ記憶領域323に格納する。
【0122】
続いて、仮想3次元空間が構築されて仮想ステレオカメラ53により撮像された立体視画像が上側LCD22に表示される。すなわち、CPU311は、仮想3次元空間を構築し、各オブジェクトの初期状態を示すデータに従って各オブジェクトを仮想3次元空間内に配置する。そして、CPU311は、この仮想3次元空間を仮想ステレオカメラ53の視点から見た立体視画像(左目用画像及び右目用画像)をGPU312に生成させて、その立体視画像を上側LCD22に表示させる。以降、ステップS2〜ステップS7の処理ループが1フレーム(例えば1/60秒)毎に繰り返されることによって、ゲームが進行していく。
【0123】
ステップS1の処理に続いて、CPU311は、プレイヤによって操作される入力手段からの入力を受け付ける(ステップS2)。具体的には、各操作ボタン14A〜E、G〜H、アナログスティック15及びタッチパネル13の入力状況を示す操作データが情報処理部31に入力されるので、情報処理部31のCPU311は、その操作データを操作データ324としてデータ記憶領域323に格納する。なお、新たな操作データ324が格納されると、古い操作データ324は新たな操作データ324に書き換えられて、操作データ324が適宜更新される。プレイヤオブジェクト50のオブジェクトパラメータ(加速度、移動速度、サイズ、厚み等)は、このようにしてデータ記憶領域323に格納された操作データ324や、プレイヤオブジェクト50と他のオブジェクトとの接触、他のオブジェクトの動作等に基づいて制御される。
【0124】
次に、CPU311は、各オブジェクトの動作処理を実行する(ステップS3)。具体的には、CPU311は、操作データ324が示す位置へプレイヤオブジェクト50を移動させると共に、敵キャラクタが搭乗するカートやその他のノンプレイヤオブジェクトを表示制御プログラム322等に基づいて移動させる。また、CPU311は、ゲームの状況に応じて、プレイヤオブジェクト50の大きさを変化させたり、或いは厚みを変化させるといった処理を行う。これにより、データ記憶領域323のプレイヤオブジェクトデータ325及びノンプレイヤオブジェクトデータ326が更新される。このステップS3の処理によって仮想3次元空間におけるプレイヤオブジェクト50の位置が変化するので、これに応じてオブジェクト距離d1が変化することになる。なお、オブジェクト距離d1は、プレイヤオブジェクト50の動作に限らず、仮想ステレオカメラ53に関するプレイヤのカメラ操作によっても変化する。
【0125】
ステップS3の処理に続いて、CPU311は、立体視割合d2/d1がプレイヤオブジェクト50の状態を示すプレイヤオブジェクトデータ325に応じた値となるように、オブジェクト距離d1及び立体視基準距離d2を制御するカメラ制御処理を実行する(ステップS4)。このカメラ制御処理については、
図13以降のフローチャートに基づいて後に詳述する。
【0126】
ステップS4の処理に続いて、CPU311は、ステップS2〜ステップS4の処理に基づいて、仮想ステレオカメラ53のカメラパラメータを設定するカメラパラメータ設定処理を実行する(ステップS5)。具体的には、CPU311は、ステップS2及びステップS3の処理によって更新されたプレイヤオブジェクトデータ325及びノンプレイヤオブジェクトデータ326と、ステップS4の処理によって更新された割合データ328が示す立体視割合d2/d1に基づいて、左目用カメラ53A及び右目用カメラ53Bのそれぞれの仮想カメラの仮想3次元空間における視点位置、撮像方向、画角等の各種カメラパラメータを設定する。このステップS5の処理で設定されたカメラパラメータは、カメラパラメータデータ331としてデータ記憶領域323に格納される。
【0127】
ステップS5の処理でカメラパラメータを設定すると、CPU311は、描画処理を実行する(ステップS6)。具体的には、CPU311は、設定されたカメラパラメータに基づいて、仮想ステレオカメラ53で仮想3次元空間を撮像した立体視画像(左目用画像及び右目用画像)をGPU312に生成させる。そして、CPU311は、生成された立体視画像を上側LCD22に表示させる。
【0128】
ステップS6の処理に続いて、CPU311は、電源ボタン14F等の操作の有無に基づいて、ゲームの終了が指示されたか否かを判定する(ステップS7)。ゲームの終了が指示されていないとCPU311によって判定された場合(ステップS7:NO)、ステップS2に処理が戻されて、ステップS2以降の処理が繰り返される。逆に、ゲームの終了が指示されたとCPU311によって判定された場合(ステップS7:YES)、一連のゲーム処理が終了する。
【0129】
[カメラ制御処理の説明]
以下、
図13を参照しつつ、プレイヤオブジェクト50の加速度又は移動速度が変化する場合に情報処理部31によって実行されるカメラ制御処理について説明する。ここで、
図13は、
図12のステップS4におけるカメラ制御処理の詳細フローチャートであり、プレイヤオブジェクト50の移動速度又は加速度が変化する場合に行われるカメラ制御処理を例示している。
【0130】
例えばプレイヤがボタン14Bを押下すると、プレイヤオブジェクト50が上述した通常速度まで順次加速した後、通常速度を維持した状態で前(
図4の紙面奥側)に進む。このため、プレイヤオブジェクト50の移動速度が通常速度に達した後もプレイヤがボタン14Bを押下し続けている間は、加速度データ3252が示す撮像方向54におけるプレイヤオブジェクト50の加速度は「0」である。これに対して、プレイヤがカート51の急加速を指示するためにボタン14E(急加速ボタン)を押下すると、加速度データ3252が示す加速度が、ボタン14B(アクセルボタン)が押下された時よりも大きな値となる。逆に、例えばプレイヤオブジェクト50が障害物に衝突すると、加速度データ3252が示す減速度(プレイヤオブジェクト50の進行方向の逆向きに生じる加速度)が、ボタン14C(ブレーキボタン)が押下された時よりも大きな値となる。
【0131】
そこで、CPU311は、ステップS3の処理に続いて、まず、プレイヤオブジェクト50が急加速中であるか否かを判定する(ステップS401)。具体的には、CPU311は、加速度データ3252が示す加速度(プレイヤオブジェクト50の進行方向における加速度)が、閾値データ327が示す加速度以上であるか否かを判定する。なお、ここでの急加速は、ボタン14E(急加速ボタン)の押下によるものであり、ボタン14B(アクセルボタン)の押下によるものではない。このため、このステップS401の処理に使用される閾値は、ボタン14Bの押下によってプレイヤオブジェクト50に生じる加速度よりも大きい値に設定されている。加速度データ3252が示す加速度が閾値データ327が示す加速度以上であれば、プレイヤオブジェクト50が急加速中であると判定される。逆に、加速度データ3252が示す加速度が閾値データ327が示す加速度未満であれば、プレイヤオブジェクト50が急加速中ではないと判定される。このように、CPU311は、プレイヤオブジェクト50の
加速度が第1の閾値(ここでは閾値データ327が示す加速度)を上回ったか否かを判定する。
【0132】
CPU311は、プレイヤオブジェクト50が急加速中ではないと判定した場合(ステップS401:NO)、プレイヤオブジェクト50が急減速中であるか否かを判定する(ステップS402)。具体的には、CPU311は、加速度データ3252が示す減速度(プレイヤオブジェクト50の進行方向の逆向きに生じる加速度)が、閾値データ327が示す減速度以上であるか否かを判定する。なお、ここでの急減速は、プレイヤオブジェクト50が障害物に衝突することによるものであり、ボタン14C(ブレーキボタン)の押下によるものではない。このため、このステップS402の処理に使用される閾値は、ボタン14Cの押下によってプレイヤオブジェクト50に生じる減速度よりも大きい値に設定されている。加速度データ3252が示す減速度が閾値データ327が示す減速度以上であれば、プレイヤオブジェクト50が急減速中であると判定される。逆に、加速度データ3252が示す減速度が閾値データ327が示す減速度未満であれば、プレイヤオブジェクト50が急減速中ではないと判定される。このように、CPU311は、プレイヤオブジェクト50の
加速度が第2の閾値(ここでは閾値データ327が示す減速度)を下回ったか否かを判定する。
【0133】
CPU311は、プレイヤオブジェクト50が急減速中ではないと判定した場合(ステップS402:NO)、プレイヤオブジェクト50の移動速度が大きいか否かを判定する(ステップS403)。具体的には、CPU311は、移動速度データ3253が示すプレイヤオブジェクト50の移動速度が、閾値データ327が示す所定の速度(所定の閾値)よりも大きいか否か(所定の閾値を上回ったか否か)を判定する。
【0134】
CPU311は、プレイヤオブジェクト50の移動速度が大きくないと判定した場合(ステップS403:NO)、プレイヤオブジェクト50の移動速度が小さいか否かを判定する(ステップS404)。具体的には、CPU311は、移動速度データ3253が示すプレイヤオブジェクト50の移動速度が、閾値データ327が示す所定の速度(所定の閾値)よりも小さいか否か(所定の閾値を下回ったか否か)を判定する。なお、このステップS404の処理に用いられる閾値データ327が示す所定の速度は、ステップS403の処理に用いられる閾値データ327が示す所定の速度よりも小さい値に設定されている。
【0135】
CPU311は、プレイヤオブジェクト50の移動速度が小さくないと判定した場合(ステップS404:NO)、すなわちプレイヤオブジェクト50の移動速度が標準的な速度である場合、設定割合d2/d1を基準割合に設定する(ステップS405)。具体的には、CPU311は、設定割合データ330が示す設定割合d2/d1を、基準割合データ329が示す値(例えば「0.9」)に書き換える。
【0136】
図8には、設定割合d2/d1が基準割合に設定されている場合のオブジェクト距離d1と立体視基準距離d2との関係が例示されている。なお、ここでの基準割合は、プレイヤオブジェクト50が標準的な速度で走行する様子をプレイヤが自然に感じることができるのに適した値であれば、本実施形態で例示した数値に限定されるものではない。また、後に詳述するが、設定割合データ330を設定する処理が行われると、割合データ328が示す立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に収束するように、オブジェクト距離d1及び立体視基準距離d2の両方又はいずれか一方が制御される。その結果、プレイヤオブジェクト50の状態が変化しなければ、立体視割合d2/d1が設定割合d2/d1に維持され、その結果、プレイヤオブジェクト50の立体感も維持されることになる。
【0137】
ところで、プレイヤオブジェクト50の移動速度が小さい場合、プレイヤオブジェクト50がゆっくりと進んでいることをプレイヤが自然に感じることができるように、仮想ステレオカメラ53をプレイヤオブジェクト50から離す(オブジェクト距離d1を大きくする)制御と、基準面を仮想ステレオカメラ53に近付ける(立体視基準距離d2を小さくする)制御のいずれか一方又は両方を行うのが効果的である。すなわち、立体視割合d2/d1を低めに設定するのが効果的である。立体視割合d2/d1を低めに設定することで、プレイヤが離れた位置からプレイヤオブジェクト50を俯瞰するように見ることができる。この場合、道路等のノンプレイヤオブジェクトがプレイヤオブジェクト50に対してプレイヤオブジェクト50の進行方向の反対側にゆっくりと流れていくように見えるため、プレイヤオブジェクト50の移動速度が小さいことをプレイヤが十分に感じることができる。
【0138】
そこで、CPU311は、プレイヤオブジェクト50の移動速度が小さいと判定した場合(ステップS404:YES)、設定割合d2/d1を低めの値に設定する(ステップS406)。具体的には、CPU311は、設定割合データ330が示す設定割合d2/d1の値を低めの値(例えば「0.6」)に書き換える。
図9には、設定割合d2/d1が低めに設定されている場合のオブジェクト距離d1と立体視基準距離d2との関係が例示されている。
【0139】
このように、設定割合d2/d1が低めに設定されると、プレイヤオブジェクト50の移動速度が小さいままであれば、割合データ328が示す現時点の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付いていくように、オブジェクト距離d1と立体視基準距離d2が徐々に変化する。その結果、割合データ328が示す立体視割合d2/d1が設定割合d2/d1に収束して、立体視割合d2/d1が低めのまま維持される。このようにして立体視割合d2/d1の値が低めの値に維持されることで、プレイヤオブジェクト50の立体感が保たれるので、プレイヤオブジェクト50の移動速度が小さい場合の仮想3次元空間の様子をプレイヤが自然に感じることができる。
【0140】
ところで、プレイヤオブジェクト50の移動速度が大きい場合、プレイヤオブジェクト50が高速で進んでいることをプレイヤが自然に感じることができるように、仮想ステレオカメラ53をプレイヤオブジェクト50に近付ける(オブジェクト距離d1を小さくする)制御と、基準面を仮想ステレオカメラ53から遠ざける(立体視基準距離d2を大きくする)制御のいずれか一方又は両方を行うのが効果的である。すなわち、立体視割合d2/d1を高めに設定するのが効果的である。立体視割合d2/d1を高めに設定することで、プレイヤがプレイヤオブジェクト50が目の前に位置しているかのようにプレイヤオブジェクト50を近くで見ることができる。この場合、道路等のノンプレイヤオブジェクトがプレイヤオブジェクト50に対してプレイヤオブジェクト50の進行方向の反対側に高速で流れていくように見えるため、プレイヤオブジェクト50の移動速度が大きいことをプレイヤが十分に感じることができる。言い換えれば、プレイヤオブジェクト50が高速移動するときの臨場感をプレイヤが自然に感じることができる。
【0141】
そこで、CPU311は、プレイヤオブジェクト50の移動速度が大きいと判定した場合(ステップS403:YES)、設定割合d2/d1を高めの値に設定する(ステップS407)。具体的には、CPU311は、設定割合データ330が示す設定割合d2/d1の値を高めの値(例えば「1.2」)に書き換える。
図10には、設定割合d2/d1が高めに設定されている場合のオブジェクト距離d1と立体視基準距離d2との関係が例示されている。
【0142】
このように、設定割合d2/d1が高めに設定されると、プレイヤオブジェクト50の移動速度が大きいままであれば、割合データ328が示す現時点の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付いていくように、オブジェクト距離d1と立体視基準距離d2が徐々に変化する。その結果、割合データ328が示す立体視割合d2/d1が設定割合d2/d1に収束して、立体視割合d2/d1が高めのまま維持される。このようにして立体視割合d2/d1の値が高めの値に維持されることで、プレイヤオブジェクト50の立体感が保たれるので、プレイヤオブジェクト50の移動速度が大きい場合の仮想3次元空間の臨場感をプレイヤが自然に感じることができる。
【0143】
ところで、プレイヤオブジェクト50の急加速又は急減速が始まった瞬間にオブジェクト距離d1と立体視基準距離d2を両方変化させると、オブジェクト距離d1が変化するために、プレイヤがプレイヤオブジェクト50を一瞬見失ってしまうおそれがある。このため、プレイヤオブジェクト50の急加速又は急減速が完了するまでは、オブジェクト距離d1を維持したまま立体視基準距離d2だけを変化させてプレイヤオブジェクト50の状態が変化したことを表現することが好ましい。
【0144】
そこで、CPU311は、プレイヤオブジェクト50が急加速中であると判定した場合(ステップS401:YES)、又はプレイヤオブジェクト50が急減速中であると判定した場合(ステップS402:YES)、現在のオブジェクト距離d1を設定割合のオブジェクト距離d1に設定する(ステップS408)。具体的には、CPU311は、設定割合データ330が示すオブジェクト距離d1の値を、割合データ328が示す現在のオブジェクト距離d1の値に書き換える。そして、CPU311は、設定割合の立体視基準距離d2を高めに設定する(ステップS409)。具体的には、CPU311は、設定割合データ330が示す立体視基準距離d2の値を、表示制御プログラム322に基づいて、予め定められた高めの値に書き換える。
【0145】
このステップS408の処理及びステップS409の処理が行われることによって、設定割合d2/d1が、ステップS407の処理で設定される設定割合よりも更に高い値に設定されることになる。
【0146】
なお、ここでは、プレイヤオブジェクト50に急な加速度又は急な減速度が生じている間は設定割合d2/d1に関する立体視基準距離d2を常に高めに設定しておく場合について説明したが、急加速又は急減速の途中でステップS403へ処理が進められるようにして、立体視割合d2/d1を制御することによる効果を急加速中又は急減速中に変化させるようにしてもよい。
【0147】
CPU311は、ステップS405の処理を行った場合、ステップS406の処理を行った場合、ステップS407の処理を行った場合、又はステップS409の処理を行った場合、オブジェクト距離d1及び立体視基準距離d2が共に可変であるか否かを判定する(ステップS411)。具体的には、CPU311は、設定割合データ330の一部としてオブジェクト距離d1がデータ記憶領域323に格納されており、且つ割合データ328が示す現在のオブジェクト距離d1が設定割合データ330のオブジェクト距離d1と一致しているか否かを判定する。
【0148】
設定割合データ330の一部としてオブジェクト距離d1がデータ記憶領域323に格納されていない場合、オブジェクト距離d1が設定されていないので、オブジェクト距離d1及び立体視基準距離d2が共に可変であると判定することができる。すなわち、ステップS405、ステップS406、又はステップS407の処理が行われてからステップS411に処理が進められた場合に、オブジェクト距離d1及び立体視基準距離d2が共に可変であると判定することができる。CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変であると判定した場合(ステップS411:YES)、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、プレイヤオブジェクトデータ325に基づいてオブジェクト距離d1及び立体視基準距離d2を変化させる(ステップS412)。
【0149】
ところで、プレイヤオブジェクト50の移動速度が急加速又は急減速を伴わずに緩やかに変化するという状況に対して、立体視割合d2/d1を設定割合d2/d1に向けて急激に変化させた場合、仮想3次元空間の状況変化に相応しくない立体視画像が上側LCD22に表示されてしまう可能性がある。そこで、上記ステップS412の処理では、立体視割合d2/d1が設定割合d2/d1に向けて徐々に変化するように、1回のステップS412の処理で立体視割合d2/d1が変化する立体視割合d2/d1の変化値を小さくしている。例えば現時点の立体視割合d2/d1が「0.9」で、設定割合d2/d1が「1.2」に設定されている状態で2秒間(120フレーム)かけて立体視割合d2/d1を設定割合d2/d1に一致させる場合、1回のステップS412の処理による立体視割合d2/d1の変化値は、0.0025(=(1.2−0.9)/120)である。また、このように立体視割合d2/d1を一定量ずつ変化させる代わりに、立体視割合d2/d1と設定割合d2/d1との差の一定割合ずつ立体視割合d2/d1を変化させるようにしてもよい。
【0150】
一方、設定割合データ330の一部としてオブジェクト距離d1がデータ記憶領域323に格納されている場合、割合データ328が示す現在のオブジェクト距離d1が設定割合データ330が示すオブジェクト
距離d1と一致しているため、オブジェクト距離d1及び立体視基準距離d2が共に可変ではない(立体視基準距離d2のみが可変である)と判定することができる。すなわち、ステップS408及びステップS409の処理が行われてからステップS411に処理が進められた場合に、オブジェクト距離d1及び立体視基準距離d2が共に可変ではないと判定することができる。CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変ではないと判定した場合(ステップS411:NO)、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、立体視基準距離d2を変化させる(ステップS413)。
【0151】
ところで、プレイヤオブジェクト50が急加速又は急減速するという状況に対して、立体視割合d2/d1を設定割合d2/d1に向けて少しずつ変化させた場合、仮想3次元空間の状況変化に相応しくない立体視画像が上側LCD22に表示されてしまう可能性がある。すなわち、プレイヤオブジェクト50の状態変化(急激な移動速度の変化)をプレイヤに対して効果的に知らしめることができない可能性がある。そこで、上記ステップS413の処理では、立体視割合d2/d1が設定割合d2/d1に向けて急激に変化するように、1回のステップS413の処理による立体視割合d2/d1の変化値を、ステップS412の処理が行われる場合に比べて大きくしている。
【0152】
図14は、オブジェクト距離d1が維持された状態で立体視基準距離d2が高めに設定された場合の仮想3次元空間を模式的に示す説明図である。例えばボタン14B(アクセルボタン)の押下によりプレイヤオブジェクト50が通常速度で走行している場合、
図8に例示されるように、設定割合d2/d1が基準割合に設定される。この状態から、例えばボタン14E(急加速ボタン)の押下によりプレイヤオブジェクト50が急加速すると、その瞬間に、オブジェクト距離d1を維持したまま立体視基準距離d2を大きくする制御(
図8及び
図14参照)が、ステップS408、ステップS409、及びステップS413の一連の処理によって実現される。この場合、
図14から明らかなように、プレイヤオブジェクト50が通常速度で移動する場合(
図8参照)に比べて、仮想ステレオカメラ53から見てプレイヤオブジェクト50の手前に位置していた基準面がプレイヤオブジェクト50の奥に移動しているので、プレイヤオブジェクト50は、通常速度で移動していた時に比べて、プレイヤの方に大きく飛び出して見えることとなる。これにより、プレイヤオブジェクト50の状態が大きく変化したことをプレイヤに対して効果的に知らしめることができる。この場合、プレイヤの焦点の位置がずれて、プレイヤオブジェクト50が瞬間的にぼけて見える状態となる。なお、プレイヤオブジェクト50が急加速(又は急減速)する場合(
図14参照)、プレイヤオブジェクト50の移動速度が大きい場合(
図10参照)に比べて、設定割合d2/d1がより大きくなっている。このため、通常速度で移動しているプレイヤオブジェクト50が急加速する場合には、通常速度で移動しているプレイヤオブジェクト50の移動速度が急加速を伴わずに大きくなる場合に比べて、プレイヤオブジェクト50の状態変化を知らしめる効果がより大きいと言える。
【0153】
ところで、
図13から明らかなように、急加速中又は急減速中は、ステップS403ではなくステップS408に処理が進められて、オブジェクト距離d1を維持したまま立体視基準距離d2だけを大きくした状態が所定時間継続されることになる。このように、オブジェクト距離d1を変化させることなく立体視基準距離d2だけを変化させて設定割合d2/d1を変化させることで、プレイヤがプレイヤオブジェクト50を見失うことなく、プレイヤオブジェクト50の状態が変化したこと(ここではプレイヤオブジェクト50が急加速又は急減速したこと)を効果的に表現することができる。
【0154】
また、急加速又は急減速が完了すると、ステップS408ではなくステップS403へ処理が進められる。これにより、設定割合d2/d1をステップS403以降の判定結果に応じた値とは異なる値(
図14参照)に一旦変化させてから、その判定結果に応じた値に変化させる制御が行われる。具体的には、通常速度で移動していたプレイヤオブジェクト50が急加速してから高速移動する状態となる場合、まず、ステップS408、ステップS409、及びステップS413の処理によって、オブジェクト距離d1を維持したまま立体視基準距離d2を高めに設定した場合の値に設定割合d2/d1が設定される。そして、プレイヤオブジェクト50の移動速度が上限速度から通常速度まで小さくなる過程で、オブジェクト距離d1が小さくなりながら(
図14及び
図10参照)、設定割合d2/d1がステップS407の処理で設定された高めの値に徐々に収束していくことになる。
【0155】
このように、立体視基準距離d2を大きくしてプレイヤオブジェクト50をプレイヤ側に飛び出させ、それから、仮想ステレオカメラ53がプレイヤオブジェクト50に徐々に近付いていく(オブジェクト距離d1が徐々に小さくなる)ように設定割合d2/d1が変更されることにより、プレイヤオブジェクト50が急加速してから一定の速度(通常速度)で高速移動する状態になるまでの状態変化の様子を自然に表現することができる。
【0156】
[第2の実施形態]
以下、
図15を参照しつつ、本発明の第2の実施形態について説明する。この第2の実施形態では、プレイヤオブジェクト50の大きさが変化する場合に情報処理部31によって実行されるカメラ制御処理について説明する。ここで、
図15は、
図12のステップS4におけるカメラ制御処理の詳細フローチャートであり、プレイヤオブジェクト50の大小が変化する場合に行われるカメラ制御処理を例示している。なお、以下に説明するカメラ制御処理において、
図13に基づいて説明したカメラ制御処理と共通する内容については、その説明を一部省略する。
【0157】
[カメラ制御処理の説明]
CPU311は、ステップS3の処理に続いて、プレイヤオブジェクト50が大きいか否かを判定する(ステップS421)。具体的には、CPU311は、サイズデータ3254を参照して、プレイヤオブジェクト50の大小を判定する。なお、上述したように、本実施形態では、プレイヤオブジェクト50は、雷に打たれることでその大きさが小さくなり(
図6参照)、雷に打たれてから一定の時間が経過すると元の大きさ(
図4参照)に戻る。
【0158】
CPU311は、プレイヤオブジェクト50が大きいと判定した場合(ステップS421:YES)、ステップS405の処理と同様に、設定割合d2/d1を基準割合に設定する(ステップS422)。なお、ここでの基準割合は、プレイヤオブジェクト50が大きい状態であることをプレイヤが自然に感じることができるのに適した値であれば、ステップS405の処理で設定される設定割合と異なっていてもよい。
【0159】
このステップS422の処理が行われることにより、プレイヤは、プレイヤオブジェクト50から少し離れた位置からプレイヤオブジェクト50を俯瞰するように、上側LCD22に表示された立体視画像を視認することができる。なお、プレイヤオブジェクト50が大きくなって、プレイヤオブジェクト50の移動範囲が拡大したことを効果的に表現するために、ここでの基準割合は、後述するステップS424の処理で設定される設定割合d2/d1よりも小さな値に設定されている。
【0160】
CPU311は、プレイヤオブジェクト50が大きくないと判定した場合(ステップS421:NO)、プレイヤオブジェクト50が小さい状態から大きい状態へと変化している途中であるか否かを判定する(ステップS423)。ところで、プレイヤオブジェクト50が雷に打たれてから第1時間(例えば8.5秒間)が経過するまではプレイヤオブジェクト50が小さい状態となっている。そして、第1時間が経過したタイミングから更に第2時間(例えば1.5秒間)が経過するまでの間にプレイヤオブジェクト50が徐々に大きくなり、第2時間が経過するとプレイヤオブジェクト50が完全に大きい状態となる。そこで、CPU311は、上記第1時間が経過してから上記第2時間が経過するまでの間であるか否かに基づいて、プレイヤオブジェクト50が小さい状態から大きい状態へと変化している途中であるか否かを判定する。
【0161】
CPU311は、プレイヤオブジェクト50が小さい状態から大きい状態へと変化している途中ではないと判定した場合(ステップS423:NO)、すなわちプレイヤオブジェクト50が小さいままである場合、ステップS407の処理と同様に、設定割合d2/d1を高めの値に設定する(ステップS424)。このように、設定割合d2/d1が高めの値に設定されることで、仮想ステレオカメラ53がプレイヤオブジェクト50に近付いてオブジェクト距離d1が小さくなると共に、基準面が仮想ステレオカメラ53から遠ざかって立体視基準距離d2が大きくなる。
【0162】
その結果、プレイヤは、プレイヤオブジェクト50の真後ろにいるかのように、上側LCD22に表示された立体視画像を視認することができる。ここで設定割合d2/d1を基準割合に対して高めの値に設定しているのは、プレイヤオブジェクト50が小さくなって周りのオブジェクトが大きく見えるときの臨場感を自然に表現するためである。
【0163】
このように、プレイヤオブジェクト50が大きくなったか否かが判定され、立体視割合d2/d1を一定の値に維持するための設定割合d2/d1がその判定結果に応じた値に変更される。これにより、プレイヤオブジェクト50の大きさに応じた適切な臨場感を自然に表現することができる。
【0164】
一方、CPU311は、プレイヤオブジェクト50が小さい状態から大きい状態へと変化している途中であると判定した場合(ステップS423:YES)、上記ステップS408及びステップS409の処理と同様に、現在のオブジェクト距離d1を設定割合のオブジェクト距離d1に設定し(ステップS425)、設定割合の立体視基準距離d2を高めに設定する(ステップS426)。
【0165】
この場合、CPU311は、設定割合d2/d1を変化させる際に、プレイヤオブジェクト50が小さい状態から大きい状態への状態変化が始まってから一定の時間(上記第2時間)が経過するまでの間、オブジェクト距離d1を維持したまま、立体視基準距離d2だけを変化させる(大きくする)。
【0166】
これにより、オブジェクト距離d1を保ったまま立体視割合d2/d1が変化するので、プレイヤがプレイヤオブジェクト50を見失うことなく、プレイヤオブジェクト50が小さい状態から大きい状態へ状態変化するときの臨場感を自然に表現することができる。
【0167】
CPU311は、ステップS422の処理を行った場合、ステップS424の処理を行った場合、又はステップS426の処理を行った場合、上記ステップS411の処理と同様に、オブジェクト距離d1及び立体視基準距離d2が共に可変であるか否かを判定する(ステップS427)。
【0168】
CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変であると判定した場合(ステップS427:YES)、上記ステップS412の処理と同様に、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、プレイヤオブジェクトデータ325に基づいてオブジェクト距離d1及び立体視基準距離d2を変化させる(ステップS428)。このステップS428の処理は、ステップS425及びステップS426の処理が行われていない場合、すなわち、ステップS422の処理、又はステップS424の処理が行われた場合に実行される。
【0169】
CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変ではないと判定した場合(ステップS427:NO)、上記ステップS413の処理と同様に、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、立体視基準距離d2を変化させる(ステップS429)。
【0170】
ところで、
図15の表記から明らかなように、プレイヤオブジェクト50が小さい状態から大きい状態へと変化している途中であれば、処理がステップS425及びステップS426に進められる。そして、プレイヤオブジェクト50が完全に大きくなると、処理がステップS422に進められる。このため、プレイヤオブジェクト50が小さい状態から大きい状態へと変化するときに、ステップS425及びステップS426の処理により、立体視割合d2/d1が、まずはプレイヤオブジェクト50が大きいときの設定割合(基準割合)、及びプレイヤオブジェクト50が小さいときの設定割合(基準割合に対して高めの値)のどちらとも異なる値に変化する。そして、立体視割合d2/d1は、ステップS422の処理で設定される基準割合に変化する。このように立体視割合d2/d1を変化させることにより、プレイヤオブジェクト50の大きさが変化したことをプレイヤに効果的に認識させることができると共に、プレイヤオブジェクト50の大きさが変化した後の臨場感を自然に表現することができる。
【0171】
[第3の実施形態]
以下、
図16を参照しつつ、本発明の第3の実施形態について説明する。この第3の実施形態では、プレイヤオブジェクト50の厚みが変化する場合に情報処理部31によって実行されるカメラ制御処理について説明する。ここで、
図16は、
図12のステップS4におけるカメラ制御処理の詳細フローチャートであり、プレイヤオブジェクト50の厚みが変化する場合に行われるカメラ制御処理を例示している。なお、以下に説明するカメラ制御処理において、
図13に基づいて説明したカメラ制御処理と共通する内容については、その説明を一部省略する。
【0172】
[カメラ制御処理の説明]
CPU311は、ステップS3の処理に続いて、プレイヤオブジェクト50が厚いか薄いかを判定する(ステップS441)。具体的には、CPU311は、厚みデータ3255を参照して、プレイヤオブジェクト50が厚いか薄いかを判定する。なお、上述したように、本実施形態では、プレイヤオブジェクト50は、重りに潰されることで薄くなり(
図7参照)、潰されてから一定の時間が経過すると元の厚み(
図4参照)に戻る。
【0173】
CPU311は、プレイヤオブジェクト50が厚いと判定した場合(ステップS441:YES)、ステップS405の処理と同様に、設定割合d2/d1を基準割合に設定する(ステップS442)。なお、ここでの基準割合は、プレイヤオブジェクト50が厚い状態であることをプレイヤが自然に感じることができるのに適した値であれば、ステップS405の処理で設定される設定割合と異なっていてもよい。
【0174】
このステップS442の処理が行われることにより、プレイヤは、プレイヤオブジェクト50から少し離れた位置からプレイヤオブジェクト50を俯瞰するように、上側LCD22に表示された立体視画像を視認することができる。なお、プレイヤオブジェクト50が厚くなって普通に移動できる状態になったことを効果的に表現するために、ここでの基準割合は、後述するステップS444の処理で設定される設定割合d2/d1よりも小さな値に設定されている。
【0175】
CPU311は、プレイヤオブジェクト50が厚くないと判定した場合(ステップS441:NO)、プレイヤオブジェクト50が薄い状態から厚い状態へと変化している途中であるか否かを判定する(ステップS443)。ところで、プレイヤオブジェクト50が重りに潰されてから第3時間(例えば4秒間)が経過するまではプレイヤオブジェクト50が薄い状態となっている。そして、第3時間が経過したタイミングから更に第4時間(例えば1.5秒間)が経過するまでの間にプレイヤオブジェクト50が徐々に厚くなり、第4時間が経過するとプレイヤオブジェクト50が完全に厚い状態となる。そこで、CPU311は、上記第3時間が経過してから上記第4時間が経過するまでの間であるか否かに基づいて、プレイヤオブジェクト50が薄い状態から厚い状態へと変化している途中であるか否かを判定する。
【0176】
CPU311は、プレイヤオブジェクト50が薄い状態から厚い状態へと変化している途中ではないと判定した場合(ステップS443:NO)、すなわちプレイヤオブジェクト50が薄いままである場合、ステップS407の処理と同様に、設定割合d2/d1を高めの値に設定する(ステップS444)。このように、設定割合d2/d1が高めの値に設定されることで、仮想ステレオカメラ53がプレイヤオブジェクト50に近付いてオブジェクト距離d1が小さくなると共に、基準面が仮想ステレオカメラ53から遠ざかって立体視基準距離d2が大きくなる。
【0177】
その結果、プレイヤは、プレイヤオブジェクト50の真後ろにいるかのように、上側LCD22に表示された立体視画像を視認することができる。ここで設定割合d2/d1を基準割合に対して高めの値に設定しているのは、プレイヤオブジェクト50が薄くなったときの臨場感を自然に表現するためである。
【0178】
このように、プレイヤオブジェクト50が厚くなったか否かが判定され、立体視割合d2/d1を一定の値に維持するための設定割合d2/d1がその判定結果に応じた値に変更される。これにより、プレイヤオブジェクト50の厚みに応じた適切な臨場感を自然に表現することができる。
【0179】
一方、CPU311は、プレイヤオブジェクト50が薄い状態から厚い状態へと変化している途中であると判定した場合(ステップS443:YES)、上記ステップS408及びステップS409の処理と同様に、現在のオブジェクト距離d1を設定割合のオブジェクト距離d1に設定し(ステップS445)、設定割合の立体視基準距離d2を高めに設定する(ステップS446)。
【0180】
この場合、CPU311は、設定割合d2/d1を変化させる際に、プレイヤオブジェクト50が薄い状態から厚い状態への状態変化が始まってから一定の時間(上記第4時間)が経過するまでの間、オブジェクト距離d1を維持したまま、立体視基準距離d2だけを変化させる(大きくする)。
【0181】
これにより、オブジェクト距離d1を保ったまま立体視割合d2/d1が変化するので、プレイヤがプレイヤオブジェクト50を見失うことなく、プレイヤオブジェクト50が薄い状態から厚い状態へ状態変化するときの臨場感を自然に表現することができる。
【0182】
CPU311は、ステップS442の処理を行った場合、ステップS444の処理を行った場合、又はステップS446の処理を行った場合、上記ステップS411の処理と同様に、オブジェクト距離d1及び立体視基準距離d2が共に可変であるか否かを判定する(ステップS447)。
【0183】
CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変であると判定した場合(ステップS447:YES)、上記ステップS412の処理と同様に、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、プレイヤオブジェクトデータ325に基づいてオブジェクト距離d1及び立体視基準距離d2を変化させる(ステップS448)。このステップS448の処理は、ステップS445及びステップS446の処理が行われていない場合、すなわち、ステップS442の処理、又はステップS444の処理が行われた場合に実行される。
【0184】
CPU311は、オブジェクト距離d1及び立体視基準距離d2が共に可変ではないと判定した場合(ステップS447:NO)、上記ステップS413の処理と同様に、割合データ328が示す現在の立体視割合d2/d1が設定割合データ330が示す設定割合d2/d1に近付くように、立体視基準距離d2を変化させる(ステップS449)。
【0185】
ところで、
図16の表記から明らかなように、プレイヤオブジェクト50が薄い状態から厚い状態へと変化している途中であれば、処理がステップS445及びステップS446に進められる。そして、プレイヤオブジェクト50が完全に厚くなると、処理がステップS442に進められる。このため、プレイヤオブジェクト50が薄い状態から厚い状態へと変化するときに、ステップS445及びステップS446の処理により、立体視割合d2/d1が、まずはプレイヤオブジェクト50が厚いときの設定割合(基準割合)、及びプレイヤオブジェクト50が薄いときの設定割合(基準割合に対して高めの値)のどちらとも異なる値に変化する。そして、立体視割合d2/d1は、ステップS442の処理で設定される基準割合に変化する。このように立体視割合d2/d1を変化させることにより、プレイヤオブジェクト50の厚みが変化したことをプレイヤに効果的に認識させることができると共に、プレイヤオブジェクト50の厚みが変化した後の臨場感を自然に表現することができる。
【0186】
[第1〜第3の実施形態の作用効果]
以上説明したように、第1〜第3の実施形態によれば、オブジェクト距離d1に対する立体視基準距離d2の割合である立体視割合d2/d1に基づいてカメラパラメータが設定される。すなわち、外部入力されたデータではなく、いずれも仮想3次元空間内の状況を表す2つの距離の割合に基づいてカメラパラメータが設定されるので、仮想3次元空間におけるプレイヤオブジェクト50の状態に応じた適切な臨場感を自然に表現することができる。
【0187】
また、第1〜第3の実施形態では、プレイヤオブジェクト50のオブジェクトパラメータが変化しなければ立体視割合d2/d1が一定の値に維持されるので、プレイヤオブジェクト50の状態に応じた臨場感が損なわれてしまうのを効果的に防止することができる。
【0188】
また、第1〜第3の実施形態では、オブジェクトパラメータが変化してプレイヤオブジェクト50の状態が変化した場合に、立体視割合d2/d1が状態変化前の値から変化して、その立体視割合d2/d1が状態変化に応じた別の値に収束する。このように、プレイヤオブジェクト50の状態が変化したときに例外的に立体視割合d2/d1が変更されるので、プレイヤオブジェクト50の状態変化をプレイヤに効果的に知らしめることができ、且つプレイヤオブジェクト50の立体感を状態変化後のプレイヤオブジェクト50の状態に応じたものにすることができる。
【0189】
また、第1〜第3の実施形態では、立体視割合d2/d1を変化させる際に、オブジェクト距離d1が一時的に維持された状態で立体視基準距離d2だけが変化する。このため、立体視画像を見ているプレイヤがプレイヤオブジェクト50を見失うことなく、オブジェクトパラメータが変化してプレイヤオブジェクト50の状態が変わったことをプレイヤに効果的に知らしめることができる。
【0190】
また、第1〜第3の実施形態では、立体視割合d2/d1の変化により、オブジェクトパラメータが変化したことが視覚的に強調されるので、オブジェクトパラメータが変化してプレイヤオブジェクト50の状態が変わったことをプレイヤにより効果的に知らしめることができる。
【0191】
また、第1〜第3の実施形態では、プレイヤオブジェクト50の状態変化に伴い、立体視割合d2/d1が徐々に変化するので、プレイヤオブジェクト50の状態が変化する様子をより自然に表現することができる。
【0192】
また、第1〜第3の実施形態では、操作対象オブジェクトであるプレイヤオブジェクト50の状態が変化した際に立体視割合d2/d1が制御されるので、プレイヤの操作に伴うプレイヤオブジェクト50の状態変化を効果的に表現することができる。
【0193】
[変形例]
本発明は上記実施形態に限定されるものではなく、例えば以下の形態であってもよい。
すなわち、上記実施形態では、プレイヤオブジェクト50の状態変化が始まった際に、オブジェクト距離d1を維持したまま立体視基準距離d2だけを変化させて立体視割合d2/d1を変化させることとした。これに代えて、プレイヤオブジェクト50の状態変化が始まった際に、オブジェクト距離d1と立体視基準距離d2の両方を変化させて、立体視割合d2/d1を変化させるようにしてもよい。
【0194】
また、上記実施形態では、立体視割合d2/d1を高めの設定割合d2/d1又は低めの設定割合d2/d1のいずれかに収束させることとしているが、立体視割合d2/d1を収束させる設定割合d2/d1の値はこれら2つの値に限定されるものではない。すなわち、プレイヤオブジェクト50の状態(オブジェクトパラメータ)に応じて、立体視割合d2/d1が3つ以上の設定割合d2/d1のいずれかに収束するようにしてもよい。
【0195】
また、上記実施形態では、本発明の所定のオブジェクトがプレイヤによって操作されるプレイヤオブジェクト50である場合について説明したが、所定のオブジェクトは、ノンプレイヤオブジェクトであってもよい。すなわち、本発明は、仮想3次元空間を撮像した立体視画像をユーザ(或いはプレイヤ)の操作とは無関係に表示するデモ画面の表示等に適用されてもよい。
【0196】
また、上記実施形態では、上記のような一連の処理を1台のゲーム装置10で実現しているが、これは必須ではなく、複数の情報処理装置が協働することによって上記のような一連の処理を実現してもよい。すなわち、オブジェクト距離変化手段、カメラパラメータ設定手段、画像生成手段、表示制御手段のうちの少なくとも1つの手段の機能を、ゲーム装置10以外の例えばネットワーク上のサーバ装置等が実現するようにしてもよい。この場合、ゲーム装置10及びサーバ装置からなるゲームシステムが、上述したゲーム装置10と同様に機能する。
【0197】
また、上記実施形態において、ゲーム装置10の形状や、それに設けられている各種操作ボタン14やタッチパネル13の形状、数、設置位置等は単なる一例に過ぎず、他の形状、数、設置位置であっても、本発明を実現できることは言うまでもない。また、上述したフローチャートに基づいて説明した処理の順序、設定値、判定に用いられる閾値等は単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
【0198】
また、上記実施形態のゲーム装置10において実行される表示制御プログラムは、外部メモリ44等の記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置10に供給されてもよい。また、上記表示制御プログラムは、ゲーム装置10内部の不揮発性記憶装置(データ保存用内部メモリ35等)に予め記録されていてもよい。なお、上記表示制御プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等であってもよい。また、上記表示制御プログラムを記憶する情報記憶媒体としては、上記表示制御プログラムを一時的に記憶する揮発性メモリでもよい。