(57)【要約】【課題】仮想カメラの近傍に障害物等があるような場合でも、プレイヤに違和感を与えない画像を提供できるように仮想カメラを移動制御できる情報処理プログラム等を提供する。【解決手段】仮想カメラの近傍に少なくとも１つの判定用座標を設定し、この判定用座標から所定のオブジェクトに基づいた方向の所定範囲内に障害物オブジェクトが存在するか否かを判定する。その結果、障害物オブジェクトが存在する場合、障害物オブジェクトが所定範囲内に存在しなくなるように仮想カメラを移動させる。【選択図】図１４
2014235596.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内の所定のオブジェクトを仮想カメラで撮像した画像を表示する情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記仮想カメラの近傍において少なくとも１つの判定用座標を設定する判定用座標設定手段と、
少なくとも前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する障害物判定手段と、
前記障害物判定手段が、前記障害物オブジェクトが存在すると判定したとき、前記障害物オブジェクトが前記所定範囲内に存在しなくなるように前記仮想カメラを移動させる迂回手段として機能させる、情報処理プログラム。
【請求項２】
前記情報処理プログラムは、前記コンピュータを、所定の条件に基づいて前記仮想カメラを移動させる仮想カメラ移動制御手段として更に機能させる、請求項１に記載の情報処理プログラム。
【請求項３】
前記仮想カメラ移動制御手段は、プレイヤの操作内容を示す操作データに基づいて前記仮想カメラを移動させる、請求項２に記載の情報処理プログラム。
【請求項４】
前記仮想カメラ移動制御手段は、プレイヤの操作内容を示す操作データに基づいて移動する所定のオブジェクトの移動に基づいて前記仮想カメラを移動させる、請求項３に記載の情報処理プログラム。
【請求項５】
前記所定のオブジェクトと前記仮想カメラとの相対的な位置関係は、予め定められた位置関係である、請求項４に記載の情報処理プログラム。
【請求項６】
前記判定用座標設定手段は、前記仮想カメラの進行方向に基づいた所定の座標に少なくとも１つの前記判定用座標を設定する、請求項１ないし５のいずれかに記載の情報処理プログラム。
【請求項７】
前記判定用座標設定手段は、前記仮想カメラの進行方向とは逆方向に基づく所定の座標に更に前記判定用座標を設定する、請求項６に記載の情報処理プログラム。
【請求項８】
前記情報処理プログラムは、前記コンピュータを、前記判定用座標で示される位置にダミーカメラオブジェクトを配置するダミーカメラ配置手段として更に機能させ、
前記障害物判定手段は、前記ダミーカメラの撮像方向上に前記障害物オブジェクトが存在するか否かを判定する、請求項１ないし７のいずれかに記載の情報処理プログラム。
【請求項９】
前記所定のオブジェクトに基づいた方向は、前記判定用座標から前記所定のオブジェクトへ向けた方向、あるいは、前記仮想カメラから前記所定のオブジェクトへ向けた方向のいずれかの方向である、請求項１ないし８のいずれかに記載の情報処理プログラム。
【請求項１０】
前記障害物判定手段は、前記仮想カメラから前記所定のオブジェクトまでの距離に基づいた範囲内に前記障害物オブジェクトが存在するか否かを判定する、請求項１ないし９のいずれかに記載の情報処理プログラム。
【請求項１１】
前記障害物判定手段は、前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かの判定に加え、更に、前記仮想カメラの位置から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する、請求項１ないし１０のいずれかに記載の情報処理プログラム。
【請求項１２】
前記迂回手段は、前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内、および、前記仮想カメラの位置から前記所定のオブジェクトに基づいた方向の所定範囲内のいずれにも前記障害物オブジェクトが存在しなくなるように前記仮想カメラを移動させる、請求項１１に記載の情報処理プログラム。
【請求項１３】
前記迂回手段は、前記仮想カメラを前記所定のオブジェクト周りを回転させる、あるいは、当該仮想カメラを当該所定のオブジェクトに近づけることで前記障害物オブジェクトが前記所定範囲内に存在しなくなるように当該仮想カメラを移動させる、請求項１ないし１２のいずれかに記載の情報処理プログラム。
【請求項１４】
前記迂回手段は、前記障害物オブジェクトが前記所定範囲内に存在しなくなるように、前記仮想カメラを徐々に移動させる、請求項１ないし１３のいずれかに記載の情報処理プログラム。
【請求項１５】
仮想空間内の所定のオブジェクトを仮想カメラで撮像した画像を表示する情報処理システムであって、
前記仮想カメラの近傍において少なくとも１つの判定用座標を設定する判定用座標設定手段と、
少なくとも前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する障害物判定手段と、
前記障害物判定手段が、前記障害物オブジェクトが存在すると判定したとき、前記障害物オブジェクトが前記所定範囲内に存在しなくなるように前記仮想カメラを移動させる迂回手段とを備える、情報処理システム。
【請求項１６】
仮想空間内の所定のオブジェクトを仮想カメラで撮像した画像を表示する情報処理装置であって、
前記仮想カメラの近傍において少なくとも１つの判定用座標を設定する判定用座標設定手段と、
少なくとも前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する障害物判定手段と、
前記障害物判定手段が、前記障害物オブジェクトが存在すると判定したとき、前記障害物オブジェクトが前記所定範囲内に存在しなくなるように前記仮想カメラを移動させる迂回手段とを備える、情報処理装置。
【請求項１７】
仮想空間内の所定のオブジェクトを仮想カメラで撮像した画像を表示する情報処理装置あるいはシステムを制御するための情報処理方法であって、
前記仮想カメラの近傍において少なくとも１つの判定用座標を設定する判定用座標設定ステップと、
少なくとも前記判定用座標から前記所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する障害物判定ステップと、
前記障害物判定ステップにおいて、前記障害物オブジェクトが存在すると判定されたとき、前記障害物オブジェクトが前記所定範囲内に存在しなくなるように前記仮想カメラを移動させる迂回ステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想３次元空間を仮想カメラで撮像した画像を表示する情報処理装置のコンピュータに実行させる情報処理プログラム等に関する。
【背景技術】
【０００２】
従来から、３次元仮想ゲーム空間を仮想カメラで撮影した画像をゲーム画像として提示するゲームが知られている。また、これらのゲームの中には、例えば水平視点の横スクロールゲームあるいは縦スクロールのようにゲーム画面が表示されるよう、仮想カメラの移動制御を行うようなゲームもある（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０-２７３８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような、画面の見せ方は水平視点の横スクロールゲームであって、ゲーム空間自体は３次元空間で構築されている場合、基本的にはプレイヤキャラクタが仮想カメラの正面方向に映るように撮像される。そして、プレイヤキャラクタの移動に追随して、仮想カメラも水平方向に移動する。例えば、プレイヤキャラクタをプレイヤから見て右方向に動かせば、仮想カメラもプレイヤから見て右方向に水平移動する。その結果、プレイヤキャラクタが例えばゲーム画面の中央に常に位置するようなゲーム画像となる。
【０００５】
ここで、上記のような仮想カメラの移動を行う場合、仮想カメラの移動方向に障害物となるオブジェクト（例えば壁オブジェクト）がある場合を想定する。図２０は、このような状態を説明するための、俯瞰で見た仮想ゲーム空間を示す模式図である。図２０のような状態から、プレイヤキャラクタが右方向に進むと、これに伴い、仮想カメラもプレイヤキャラクタを正面に捉え続けるように右方向に移動する。その結果、図２１に示すように、仮想カメラが障害物オブジェクトにめり込んでしまうことになる。その結果、仮想カメラから見ると、プレイヤキャラクタが障害物オブジェクトに遮られて見えなくなってしまい、例えば障害物オブジェクトの裏面がゲーム画像として表示される等で、プレイヤにとってゲームのプレイに支障がでる可能性がある。
【０００６】
上記のような場合に、例えば、仮想カメラが障害物オブジェクトにめり込んだタイミングで、仮想カメラを瞬時に障害物オブジェクトの外となる位置に移動させることも考えられるが、この場合は画面が急激に切り替わり、プレイヤに違和感を与えてしまう。また、同じく仮想カメラが障害物オブジェクトにめり込んだタイミングから、徐々に仮想カメラを障害物オブジェクトの外側に移動させることも考えられるが、この場合も、仮想カメラが障害物オブジェクトにめり込んだ後、外に出るまでの数フレームは仮想カメラが障害物オブジェクトにめり込んだ状態におけるゲーム画像をプレイヤに提示してしまい、やはり違和感や画面の見にくさを感じさせてしまう。
【０００７】
それ故に、本発明の目的は、仮想カメラの近傍に障害物等があるような場合でも、プレイヤに違和感を与えない仮想空間の撮像画像を提供できるように仮想カメラを移動制御できる情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【０００９】
構成例の一例は、仮想空間内の所定のオブジェクトを仮想カメラで撮像した画像を表示する情報処理装置のコンピュータに実行させる情報処理プログラムであって、コンピュータを、判定用座標設定手段と、障害物判定手段と、迂回手段として機能させる。判定用座標設定手段は、仮想カメラの近傍において少なくとも１つの判定用座標を設定する。障害物判定手段は、少なくとも判定用座標から所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定する。迂回手段は、障害物判定手段が、障害物オブジェクトが存在すると判定したとき、障害物オブジェクトが所定範囲内に存在しなくなるように仮想カメラを移動させる。
【００１０】
上記構成例によれば、例えばプレイヤキャラクタ等の所定のオブジェクトを撮像する仮想カメラの近傍に障害物等があるような場合でも、この障害物に遮られてプレイヤキャラクタが撮像できなくなってしまうことを防ぐことができる。
【００１１】
他の構成例として、情報処理プログラムは、コンピュータを、所定の条件に基づいて仮想カメラを移動させる仮想カメラ移動制御手段として更に機能させてもよい。また、仮想カメラ移動制御手段は、プレイヤの操作内容を示す操作データに基づいて仮想カメラを移動させてもよい。更には、仮想カメラ移動制御手段は、プレイヤの操作内容を示す操作データに基づいて移動する所定のオブジェクトの移動に基づいて仮想カメラを移動させるようにしてもよい。また、所定のオブジェクトと仮想カメラとの相対的な位置関係は、予め定められた位置関係であってもよい。
【００１２】
上記構成例によれば、仮想カメラの移動先に障害物があるような場合に、その障害物を事前に検知し、これを迂回するように仮想カメラを移動させることができる。また、例えば、プレイヤキャラクタに追随して仮想カメラを移動させるような場合に、プレイヤキャラクタが障害物に遮られて見えなくなってしまうことを防ぐことができる。
【００１３】
他の構成例として、判定用座標設定手段は、仮想カメラの進行方向に基づいた所定の座標に少なくとも１つの判定用座標を設定してもよい。更には、仮想カメラの進行方向とは逆方向に基づく所定の座標にも更に判定用座標を設定してもよい。
【００１４】
上記構成例によれば、例えば、仮想カメラの移動経路が予測できるような制御を用いる情報処理において、その進行方向上にある障害物を事前に検知して回避することができる。また、進行方向が反転可能な制御である場合にも、その反転方向上の障害物を回避することもできる。
【００１５】
他の構成例として、情報処理プログラムは、コンピュータを、判定用座標で示される位置にダミーカメラオブジェクトを配置するダミーカメラ配置手段として更に機能させ、障害物判定手段は、ダミーカメラの撮像方向上に障害物オブジェクトが存在するか否かを判定するようにしてもよい。
【００１６】
上記構成例によれば、仮想カメラが直接的には障害物に接触しないが、その撮像範囲内に当該障害物が入り込んで所定のオブジェクトが映らないような場合でも、このような障害物を迂回した撮像を行うことが可能となる。
【００１７】
他の構成例として、所定のオブジェクトに基づいた方向は、判定用座標から所定のオブジェクトへ向けた方向、あるいは、仮想カメラから所定のオブジェクトへ向けた方向のいずれかの方向であってもよい。また、障害物判定手段は、仮想カメラから所定のオブジェクトまでの距離に基づいた範囲内に障害物オブジェクトが存在するか否かを判定するようにしてもよい。
【００１８】
上記構成例によれば、障害物の存在を事前に検知し、仮想カメラからの所定のオブジェクトの撮像が当該障害物で遮られてしまう状況を回避することができる。
【００１９】
他の構成例として、障害物判定手段は、判定用座標から所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かの判定に加え、更に、仮想カメラの位置から所定のオブジェクトに基づいた方向の所定範囲内に当該所定のオブジェクト以外のオブジェクトである障害物オブジェクトが存在するか否かを判定するようにしてもよい。また、迂回手段は、判定用座標から所定のオブジェクトに基づいた方向の所定範囲内、および、仮想カメラの位置から所定のオブジェクトに基づいた方向の所定範囲内のいずれにも障害物オブジェクトが存在しなくなるように仮想カメラを移動させてもよい。
【００２０】
上記構成例によれば、仮想カメラの撮像範囲内に障害物が入ることによって所定のオブジェクトの撮像が遮られてしまう状況を回避することができる。
【００２１】
他の構成例として、迂回手段は、仮想カメラを所定のオブジェクト周りを回転させる、あるいは、当該仮想カメラを当該所定のオブジェクトに近づけることで障害物オブジェクトが所定範囲内に存在しなくなるように当該仮想カメラを移動させるようにしてもよい。
【００２２】
上記構成例によれば、処理負荷が低い簡易な仮想カメラの移動制御とすることができる。
【００２３】
他の構成例として、迂回手段は、障害物オブジェクトが所定範囲内に存在しなくなるように、仮想カメラを徐々に移動させてもよい。
【００２４】
上記構成例によれば、プレイヤに対して提示する画像について、急激な変化が発生することによる違和感をプレイヤに与えることを防ぐことができる。
【発明の効果】
【００２５】
本実施形態によれば、プレイヤにとって見やすい仮想空間の画像を提供できる。
【図面の簡単な説明】
【００２６】
【図１】ゲーム装置１０の構成の一例を示すブロック図
【図２】本実施形態で想定するゲーム画面の一例
【図３】基準位置関係を説明するための図
【図４】基準位置関係を説明するための図
【図５】仮想カメラ制御の概要を説明するための図
【図６】仮想カメラ制御の概要を説明するための図
【図７】仮想カメラ制御の概要を説明するための図
【図８】仮想カメラ制御の概要を説明するための図
【図９】仮想カメラ制御の概要を説明するための図
【図１０】仮想カメラ制御の概要を説明するための図
【図１１】仮想カメラ制御の概要を説明するための図
【図１２】仮想カメラ制御の概要を説明するための図
【図１３】ゲーム装置１０のメインメモリ１５に格納される情報の一例
【図１４】本実施形態にかかる仮想カメラ制御処理の詳細を示すフローチャート
【図１５】仮想カメラ制御の他の一例を説明するための図
【図１６】仮想カメラ制御の他の一例を説明するための図
【図１７】仮想カメラ制御の他の一例を説明するための図
【図１８】仮想カメラ制御の他の一例を説明するための図
【図１９】仮想カメラ制御の他の一例を説明するための図
【図２０】従来の仮想カメラ制御を説明するための図
【図２１】従来の仮想カメラ制御を説明するための図
【発明を実施するための形態】
【００２７】
以下、本発明の一実施形態について説明する。
【００２８】
図１において、ゲーム装置１０は、入力装置１１、表示装置１２、プロセッサ１３、内部記憶装置１４、およびメインメモリ１５を備えている。本実施形態にかかるゲーム装置１０は例えば携帯型ゲーム装置を想定するが、他の実施形態では、据置型のゲーム装置であっても良い。また、更に他の実施形態では、ゲーム装置でなくともよく、画像処理装置等の情報処理装置であってもよい。
【００２９】
入力装置１１は、ゲーム装置１０のユーザによって操作され、ユーザの操作に応じた信号を出力する。入力装置１１は、例えば、十字スイッチや押しボタンやタッチパネルである。表示装置１２は、ゲーム装置１０において生成された画像を画面に表示する。表示装置１２は、例えば液晶表示装置である。内部記憶装置１４には、プロセッサ１３によって実行されるコンピュータプログラムが格納されている。内部記憶装置１４は、典型的には、フラッシュＥＥＰＲＯＭである。メインメモリ１５は、コンピュータプログラムや情報を一時的に記憶する。
【００３０】
以下、本実施形態にかかるゲーム装置１０で実行される処理の動作概要を説明する。本実施形態にかかる処理は、仮想ゲーム空間内における仮想カメラの制御に関するものであり、仮想カメラの移動先に障害物が存在するとき、その障害物を避ける（迂回する）ように仮想カメラの移動経路を調整するような制御を行う処理である。
【００３１】
まず、本実施形態で想定するゲームの概要について説明する。本ゲームは、基本的には仮想３次元空間を舞台とするゲームである。そして、このゲームでは、例えば迷路状に構成されたダンジョンが存在する。プレイヤはこのダンジョン内でプレイヤキャラクタを移動させることができるが、このときに、所定の条件を満たすことで、プレイヤキャラクタをダンジョンの壁に沿って移動させるという場面が本ゲームには存在する。より具体的には、３Ｄモデルのプレイヤキャラクタを薄い平面状のオブジェクトに変化させ、壁に貼り付けたような状態とすることができる。そして、この壁に沿うようにしてプレイヤキャラクタを移動させるというような場面が存在する。図２は、このような場面のゲーム画面の一例である。図２では、平面化したプレイヤキャラクタ１０１が壁１０２ａの壁面に沿って右方向に移動しているときの画面例である。
【００３２】
ここで、このときの移動方向は、（プレイヤから見て）左右方向に限られるものとする。そして、このような壁沿いの移動を行う際は、プレイヤキャラクタと仮想カメラの位置関係は原則として固定されるものとする。以下、このようなプレイヤキャラクタと仮想カメラの位置関係を「基準位置関係」と呼ぶ。図３および図４は、当該基準位置関係の一例を示す模式図である。図３は、仮想ゲーム空間を俯瞰した状態の模式図であり、図４は、プレイヤキャラクタ１０１の進行方向を奥行き方向にした場合の模式図である。これらの図では、平面状のプレイヤキャラクタ１０１の全身が表示されるように、あらかじめ定義された距離Ｄ１を空けて仮想カメラ１０３が配置されており（注視点としてプレイヤキャラクタ１０１が設定されている）、プレイヤキャラクタ１０１が存在する壁オブジェクト１０２ａ（以下、単に壁と呼ぶ）の壁面を正面から捉えるような位置となっている。そのため、仮想カメラ１０３の配置される高さ（Ｙ軸方向における位置）は、地面より少し上である（プレイヤキャラクタ１０１とほぼ同じ高さ）。また、仮想カメラ１０３の向き（角度）も、地面に対して水平（壁面に対して垂直）な角度となっている。本実施形態では、このようなプレイヤキャラクタ１０１と仮想カメラの位置関係（および仮想カメラの姿勢）を上記基準位置関係として説明する。
【００３３】
また、以下の説明では、プレイヤキャラクタ１０１の進行可能方向は、図３における左右方向であり、このうち、右方向へ進行しようとする場合を例に説明する。この場合、プレイヤキャラクタ１０１の移動に伴い、仮想カメラ１０３も、原則としては上記基準位置関係を保ちながら、図３における右方向に移動する（このことは、換言すれば、プレイヤキャラクタ１０１の進行方向が判れば、仮想カメラ１０３の移動先や移動経路も、ある程度推測できるということでもある）。
【００３４】
次に、上記のような場合を前提として、本実施形態における仮想カメラ制御処理の原理について説明する。図５〜図１１は、当該仮想カメラ制御の原理を説明するための図である。まず、本実施形態では、図５における仮想カメラ１０３の左右の近接する位置（プレイヤキャラの進行方向を基準にすると、進行方向および逆方向となる位置）にそれぞれ、ダミーカメラ１０４ａ、１０４ｂが配置される（以下では総称してダミーカメラ１０４と呼ぶこともある）。このダミーカメラ１０４の向き（撮像方向）については、仮想カメラ１０３の向き（撮像方向）と同じである（つまり、仮想カメラの撮像方向をダミーカメラの撮像方向として流用している）。また、仮想カメラ１０３とダミーカメラとの間隔については、予め定められた所定の間隔だけ空けて配置される。なお、ここでは説明の便宜上「ダミーカメラ」と呼んでいるが、このダミーカメラ１０４は、仮想ゲーム空間を撮像するものではなく、その実体としては、後述するように、障害物との接触を回避するための仮想カメラ１０３の位置を決定するために用いられるオブジェクトである（プレイヤからは不可視のオブジェクトでもある）。また、他の実施形態では、ダミーカメラ１０４について、オブジェクトではなく、その位置を示す単なる座標情報（例えば、上記ダミーカメラ１０４の中点に該当する座標）として扱ってもよい。
【００３５】
図５の状態から、プレイヤキャラクタ１０１が進行方向（図５でいうと右方向）に進むと、これに伴い、仮想カメラ１０３およびその両隣に配置されたダミーカメラ１０４ａおよび１０４ｂも上記基準位置関係を保ったまま、上記進行方向に沿って移動する。その結果、図６に示すように、ダミーカメラ１０４ａの位置が壁１０２ｂにめり込むような位置になった場合を想定する。このような場合に、本実施形態では、上記図６のようにダミーカメラ１０４が壁１０２ｂにめり込んだ状態（接触した状態）であることを判定し、このタイミングで、図７に示すような、回避位置１０６を算出する。この回避位置１０６は、例えば図７のｘ軸上において仮想カメラ１０３がダミーカメラ１０４ａにあると仮定したときに、壁１０２ｂに遮られずに仮想カメラ１０３でプレイヤキャラクタ１０１が撮影できるような位置である。換言すれば、その撮像範囲内に壁１０２ｂが含まれなくなるような位置である。なお、この図では説明をわかりやすくするため、ダミーカメラ１０４の全体が壁１０２ｂにめり込んだ場合を示しているが、他の実施形態では、ダミーカメラ１０４の一部が壁１０２ｂに接触した段階で、回避位置１０６を算出するようにしてもよい。
【００３６】
そして、ダミーカメラ１０４ａが壁１０２ｂにめり込んだ状態であることが判定された時点、つまり、仮想カメラ１０３が壁１０２ｂにめり込んでしまう前の段階から、当該仮想カメラ１０３の位置を上記回避位置に基づいた位置に向けて移動させる。この例では、仮想カメラ１０３のｚ軸にかかる位置が回避位置１０６のｚ軸にかかる位置と同じになるように仮想カメラ１０３の移動が行われる。例えば、図６の状態から、プレイヤキャラクタ１０１が進行方向に等速で移動した場合は、図６におけるｘ軸方向にかかる仮想カメラ１０３の移動については、プレイヤキャラクタ１０１の移動（換言すればプレイヤの移動操作）に追随するよう制御されるが、ｚ軸方向にかかる移動については、プレイヤの操作の有無にかかわらず、徐々に上記回避位置１０６のｚ軸の位置と同じになるように移動制御される。その結果、図８で示すように、仮想カメラ１０３が回避位置１０６に向けて徐々に移動していくような制御が行われることになる（結果的に、壁１０２ｂを迂回するような移動経路となる）。また、例えば図６の状態からプレイヤキャラクタ１０１が移動しないままの状態（静止している状態）であれば、図９に示すように、仮想カメラ１０３のｘ軸方向にかかる位置はプレイヤキャラクタ１０１の正面となる位置（正対した位置）を維持したまま、ｚ軸方向にかかる位置のみ、回避位置１０６のｚ軸の位置と同じになるよう、時間の経過と共に徐々に近づけるような制御を行う。その後、プレイヤキャラクタ１０１が進行方向に移動すれば、これに伴って、仮想カメラ１０３も進行方向側に平行移動し、図１０に示すように、結果的に回避位置１０６で示される位置に到達することになる。
【００３７】
その後、プレイヤキャラクタ１０１が進行方向側に移動していき、図１１に示すように、ダミーカメラ１０４ａが壁１０２ｂと接触しない状態となった場合を想定する。この場合でも、ダミーカメラ１０４ｂは壁１０２ｂと接触している状態である。そのため、ダミーカメラ１０４ｂについての回避位置１０６が算出され、仮想カメラ１０３のｚ軸上の位置を当該回避位置１０６ｂのｚ軸上の位置に移動させる。もっとも、図１１の状態の場合は、仮想カメラ１０３のｚ軸上の位置については、既に回避位置１０６ｂのｚ軸の位置と同じとなっているため、結果的には現在の位置を維持する形となる。その後、ダミーカメラ１０４ｂも壁１０２ｂと接触しなくなった時点で、上記基準位置関係となるように仮想カメラ１０３の位置関係を徐々に戻していく処理が行われる。
【００３８】
上記のような制御により、プレイヤキャラクタ１０１の移動に伴って移動する仮想カメラ１０３の近傍（典型的には進行方向）に障害物があった場合に、これを徐々に迂回するように仮想カメラ１０３を移動させることができる。その結果、違和感のないゲーム画像をプレイヤに提供できる。
【００３９】
なお、本実施形態では、上述したような原理で仮想カメラの制御を行うが、具体的処理の一例として以下に説明する処理では、次のような制御を行う。まず、上記の説明では、ダミーカメラ１０４が壁１０２等の障害物にめり込む場合を例に説明したが、実際の処理では、ダミーカメラ１０４から正面方向を見たときに、その視線上に障害物が存在するか否かを判定する。つまり、ダミーカメラ１０４自体が壁等と接触していなくても、当該ダミーカメラ１０４の位置から、その撮像方向を仮想カメラ１０３と同じとした場合にプレイヤキャラクタ１０１が何らかの障害物等で遮られて見えなくなるか否かを判定することになる。例えば、ダミーカメラ１０４の位置から撮像方向の向かう直線（以下、この直線のことを視線と呼ぶこともある）を算出する。なお、当該直線の長さは、上記基準位置関係における仮想カメラ１０３とプレイヤキャラクタ１０１間の距離に準ずる。そして、この直線上に、プレイヤキャラクタ１０１の撮像を遮るような障害物が存在するか否かの判定（直線と何らかの障害物とのコリジョン判定）を行うことで、上記回避位置を算出すべきか否かを決定する。なお、他の実施形態では、直線上に障害物が存在するか否かではなく、ダミーカメラ１０４の位置から上記距離Ｄ１までの撮像範囲内に障害物が存在するか否かを判定するようにしても良い。
【００４０】
なお、以下の説明においては、ダミーカメラ１０４の視線が何らかの障害物で遮られている状態をコリジョン状態と呼び、そうでないときは非コリジョン状態と呼ぶこともある。また、後述する処理では、仮想カメラ１０３に対しても上記と同様のコリジョン判定が行われる。そのため、以下の説明では、仮想カメラ１０３に関するコリジョン状態/非コリジョン状態も含めた総称として、コリジョン状態/非コリジョン状態と呼ぶ。
【００４１】
また、回避位置の算出について、上記の原理説明では、仮想カメラ１０３をプレイヤキャラクタ１０１に近づけるような位置を求めるパターンを例に挙げたが、後述する処理例では、図１２に示すように、注視点を中心として仮想カメラ１０３をｘ軸周りに所定角度ずつ回転させていくことで回避位置を求める。この回転方向は、ｙ軸正方向側である。この回転角度には上限値が定められており、例えば５５度〜６０度である。この回転の過程で上記回避位置となる条件が満たされる位置が算出できれば、その位置が回避位置となる。一方、上限値まで回転させても、その視線でなおプレイヤキャラクタ１０１が遮られている場合は、仮想カメラ１０３とプレイヤキャラクタ１０１（注視点）との距離を所定距離ずつ近づけていく（寄せる）ことで更に回避位置を算出する。なお、この近づける距離についても上限値が設定されている。
【００４２】
次に、図１３〜図１９を参照して、本実施形態におけるゲーム装置１０の動作をより詳細に説明する。
【００４３】
図１３は、ゲーム装置１０のメインメモリ１５に格納されるプログラムおよび情報の一例を示している。メインメモリ１５には、ゲーム処理プログラム２０１、操作データ２０２、仮想カメラデータ２０３、ダミーカメラデータ２０４、基準位置関係データ２０５、等が格納される。
【００４４】
ゲーム処理プログラム２０１は、上述したようなゲーム処理を実行するためのプログラムである。
【００４５】
操作データ２０２は、ゲーム装置１０に対して行われた各種操作を示すデータである。例えば、操作データ２０２には、各種ボタンの押下状態を示すボタンデータ等が含まれる。
【００４６】
仮想カメラデータ２０３は、上記仮想カメラ１０３を示すデータであり、仮想ゲーム空間内における位置や仮想カメラの姿勢や撮影方向、画角等を示すデータが含まれる。ダミーカメラデータ２０４は、上記ダミーカメラ１０４を示すデータであり、その位置を示すデータが含まれる。なお、本実施形態では、上記のようにダミーカメラ１０４は仮想カメラ１０３の左右（進行方向の前後）に近接するような位置にダミーカメラ１０４が１つずつ配置されるものとする（そのため、ダミーカメラデータ２０４には上記２つのダミーカメラ１０４ａ、１０４ｂのデータが含まれるものとする）。
【００４７】
基準位置関係データ２０５は、上述したような「基準位置関係」におけるプレイヤキャラクタ１０１と仮想カメラ１０３との相対的な位置関係を示すためのデータである。換言すれば、「基準位置関係」を定義するデータである。
【００４８】
次に、図１４のフローチャートを参照して、ゲーム装置１０のプロセッサ１３によって実行される処理の流れを説明する。なお、図１４に示すフローチャートにおいては、主に、上述したような仮想カメラ１０３の制御に関する処理（仮想カメラ制御処理）を中心に説明し、本実施形態に直接関連しない他の処理については詳細な説明を省略する。また、図１４のステップＳ１〜Ｓ１０の一連の処理からなる処理ループが所定時間（１フレーム時間）に１回の割合で繰り返し実行されるものとする。
【００４９】
なお、図１４に示すフローチャートの各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ１３が実行するものとして説明するが、上記フローチャートの一部のステップの処理を、プロセッサ１３以外のプロセッサや専用回路が実行するようにしてもよい。
【００５０】
ゲーム処理が開始されると、図示しない初期化処理において、仮想ゲーム空間が構築され、プレイヤキャラクタ１０１が配置され、上記基準位置関係に基づく位置に仮想カメラ１０３も配置される。更に、当該仮想カメラ１０３の左右に所定間隔離れた位置に上記ダミーカメラ１０４が一つずつ配置される。その他、ゲーム処理の開始に必要な各種処理が適宜行われた後、如何に説明するような仮想カメラの制御処理が繰り返し実行されることになる。
【００５１】
図１４において、まず、ステップＳ１で、プロセッサ１３は、操作データ２０２を取得する。そして、当該操作データ２０２に基づいて、仮想カメラ１０３およびダミーカメラ１０４を移動させる。ここで、当該移動については、上記基準位置関係を前提とした移動となる。つまり、プレイヤキャラクタ１０１と平行移動となり、仮想カメラ１０３およびダミーカメラ１０４の高さ方向（上記図１２でいうと、ｙ軸方向）にかかる位置については、この時点では変化しない。また、もし操作データ２０２で示される内容が、プレイヤキャラクタ１０１が移動していない（つまり静止状態である）ことを示す内容であれば、当該ステップにかかる処理では、仮想カメラ１０３およびダミーカメラ１０４の移動は行われないことになる。
【００５２】
次に、ステップＳ２において、プロセッサ１３は、（上記基準位置関係を前提とした）仮想カメラ１０３およびダミーカメラ１０４のそれぞれについて、上述したようなコリジョン状態であるか否かが判定される。続くステップＳ３において、プロセッサ１３は、上記ステップＳ２の処理の結果、コリジョン状態となっている仮想カメラ、あるいはダミーカメラ１０４が１以上存在するか否かを判定する。その結果、コリジョン状態となっている仮想カメラ１０３およびダミーカメラ１０４が１つも存在しないときは（ステップＳ３でＮＯ）、後述するステップＳ９の処理に進む。
【００５３】
一方、コリジョン状態の仮想カメラ１０３またはダミーカメラ１０４が１以上存在するときは（ステップＳ３でＹＥＳ）、障害物に接触しないように仮想カメラ１０３の位置を調整する必要があると考えられる。この場合は、ステップＳ４において、プロセッサ１３は、仮想カメラ１０３がコリジョン状態にならない位置、すなわち、上記回避位置（上記図１２参照）を算出する。ここで、このときの回避位置の算出について、コリジョン状態である仮想カメラおよびダミーカメラ１０４が複数存在するときは、それぞれを上記図１２で示したように注視点を中心として仮想カメラ１０３あるいはダミーカメラ１０４を回転させていくことで、上記回避位置の算出（検索）を行う。そして、その結果、最も高い位置となるダミーカメラ１０４あるいは仮想カメラ１０３の算出結果を回避位置として採用する。また、この回転角度には上述したように上限値が予め定義されている。そのため、回転角度が当該上限値まで到達した場合は、この時点ではその位置が回避位置として設定されることになる。なお、以下の処理でこの位置が更に調整される可能性があるため、この時点で算出された回避位置のことを暫定回避位置と呼ぶ。
【００５４】
次に、ステップＳ５において、プロセッサ１３は、上記暫定回避位置として採用したダミーカメラ１０４あるいは仮想カメラの算出結果について、その回転角度が上記上限値に達しているか否かを判定する。その結果、上限値まで達しているときは（ステップＳ５でＹＥＳ）、ステップＳ６において、プロセッサ１３は、当該暫定回避位置からプレイヤキャラクタ１０１までの視線が遮られないような位置を、プレイヤキャラクタ１０１に近づく方向（つまり、撮像方向）に向けて算出（検索）する。つまり、暫定回避位置をプレイヤキャラクタ１０１に寄せていくことで最終的な回避位置の算出を行う。なお、この寄せていく距離についても上限値が定められており、この上限値まで達した場合は、その位置が最終的な回避位置として確定される。また、上記回転角度が上限値の状態において、別段その位置を寄せる必要がない場合であれば、その位置が回避位置として確定される。つまり、この場合はこのステップＳ６の処理において、実質的には暫定回避位置に変化は発生せず、その確定のみが行われることになる。
【００５５】
一方、上限値まで達していなければ（ステップＳ５でＮＯ）、上記ステップＳ６の処理はスキップされる。そのため、上記暫定回避位置が回避位置として確定されることになる。
【００５６】
次に、ステップＳ７において、プロセッサ１３は、仮想カメラ１０３が時間の経過と共に上記確定した回避位置に徐々に移動するような移動制御を行う。また、この際、仮想カメラ１０３の向きについても、注視点を向き続けるように適宜変化させる制御も行う。つまり、上記回避位置の算出については毎フレームの処理で算出されるが、その位置への仮想カメラ１０３の移動については、例えば数十フレームかけて徐々に移動させるような制御が行われることになる。例えば、回避位置と現在の仮想カメラ１０３の位置との距離を算出し、予め定義された割合で近づいていくように、１フレーム分の移動距離を算出する等してもよい。また、既に回避位置に到達していれば、それ以上の移動は行われない。
【００５７】
なお、上記の回避位置へ向けて仮想カメラ１０３の移動（姿勢）制御に関し、特に、回転角度が上限に達したため、仮想カメラ１０３を寄せる制御も行う場合は（つまり、ステップＳ６が実行されるような場合は）次のいずれの制御を用いても良い。まず、上記判断の順序と同じく、まず仮想カメラ１０３を回転させ、上限の回転角度まで回転し終わってから、寄せていくような制御にしてもよい。あるいは、この「回転」と「寄せ」を同時に行うような制御を行ってもよい。
【００５８】
次に、ステップＳ８において、プロセッサ１３は、仮想カメラ１０３で仮想ゲーム空間を撮像し、ゲーム画面として描画するための処理を実行する。
【００５９】
次に、上記ステップＳ３の判定の結果、コリジョン状態となっている仮想カメラ１０３およびダミーカメラ１０４が１つも存在しないときの処理（ステップＳ３でＮＯ）について説明する。この場合は、仮想カメラ１０３の位置を調整する必要が無い状態と考えられる。この場合は、まず、ステップＳ９において、プロセッサ１３は、プレイヤキャラクタ１０１と仮想カメラ１０３の位置関係が上記基準位置関係となっているか否かを判定する。これは、上記のように仮想カメラ１０３の位置が回避位置に基づいた位置に調整されている状態であるか否かを判定するものである。すなわち、調整した仮想カメラ１０３の位置を元の状態に戻す必要があるか否かを判定するものである。当該判定の結果、基準位置関係ではないときは（ステップＳ９でＮＯ）、ステップＳ１０において、プロセッサ１３は、時間の経過と共に上記基準位置関係に戻るように仮想カメラ１０３の位置を徐々に移動させる移動制御を行う。一方、基準位置関係となっていれば、上記ステップＳ１０の処理はスキップされる。その後、上記ステップＳ８の処理に進む。
【００６０】
なお、上記ステップＳ１０における仮想カメラ１０３の移動（姿勢）制御に関して、特に、回転角度が上限に達したため仮想カメラ１０３を寄せる制御も行っていた場合は、ここから基準位置関係に戻すために、仮想カメラ１０３を寄せていた位置を戻した後、回転させるような制御としてもよいし、「寄せていた位置を戻す」ことと「回転」を同時に行うような制御としてもよい。
【００６１】
以上で、本実施形態に係るカメラ制御処理の説明を終了する。
【００６２】
このように、本実施形態では、例えば仮想カメラ１０３の近傍に障害物が存在するような場合、当該障害物を回避するような位置を事前に算出する。そして、その位置に仮想カメラを徐々に移動させている。これにより、仮想カメラと障害物が接触することによってプレイヤキャラクタ１０１が見えなくなってしまうことを防ぐことができ、また、違和感のない画面遷移も提供できる。
【００６３】
なお、上記実施形態では、ダミーカメラ１０４については仮想カメラ１０３の両脇に配置するようにし、これを移動させるような処理を例に挙げた。この他、他の実施形態では、毎フレームにかかる処理においてダミーカメラ１０４を仮想カメラ１０３の両脇となる位置に配置し、上記のようなコリジョン判定を行うようにしても良い。つまり、ダミーカメラ１０４を事前に配置して毎フレームの処理で移動させるのではなく、毎フレームダミーカメラを配置し直すような処理としても良い。
【００６４】
また、上記の実施形態では、ダミーカメラ１０４が障害物と接触する際の回避位置の算出手法として、注視点を中心にしてダミーカメラ１０４を回転させることで回避位置を算出する手法（上記図１２参照）を例としてあげていた。この他、他の実施形態では、次のような手法で回避位置を算出するようにしてもよい。例えば、ダミーカメラ１０４の位置から、上方向（図１２でいうと、ｙ軸正方向）に向けて回避位置を求めていくようにしてもよい。つまり、図１５に示すように、ダミーカメラ１０４を上に上げていくことで（注視点はそのまま）、障害物と接触しなくなる高さを求めるようにしてもよい。更には、このように上方向に回避位置を求めたが、あらかじめ定められている上限位置に達しても、そこからの視線が遮られるような場合は、図１６に示すように、高さは変更せずに、注視点側に近づく方向に向けて回避位置を求めるようにしてもよい。
【００６５】
また、仮想カメラ１０３の移動制御に関して、他の実施形態では、上記回避位置と仮想カメラ１０３の現在位置とに基づいて回避位置へ徐々に向かうような移動経路を算出し、これに沿って仮想カメラ１０３を移動させるような処理としてもよい。
【００６６】
また、上述した例では、ダミーカメラの数については仮想カメラの進行方向となる左右に１つずつ配置するという例を挙げた。他の実施形態では、ダミーカメラを仮想カメラの進行方向にのみ、１つだけ配置するような構成としても良い。当該進行方向、すなわち、プレイヤの指示方向は、操作データ２０２に基づいて判別すれば良い。また、更に他の実施形態では、３つ以上のダミーカメラを配置するように構成しても良い。これは、例えば、図１７で示すように、仮想カメラの左右に１つずつダミーカメラを配置した場合、仮想カメラとダミーカメラの間の間隔によっては、その隙間に薄い壁等の障害物が位置してしまい、当該障害物の存在を見落としてしまう場合が考えられる。そのため、図１８に示すように、ダミーカメラを仮想カメラの左右にそれぞれ複数配置することで、このような障害物を検出する精度を高めることが可能となる。
【００６７】
また、ダミーカメラ１０４を複数用いる場合（仮想カメラの進行方向の前後に配置する場合）、操作データ２０２に基づき進行方向（プレイヤの指示方向）を判別し、その進行方向側に係るダミーカメラ１０４のみを上述した回避位置算出等の処理対象としてもよい。
【００６８】
また、ダミーカメラ１０４と仮想カメラ１０３との間隔については、上記の例では予め定められた固定間隔である場合を例に挙げた。他の実施形態では、プレイヤの操作、例えばキー入力の大きさ（押下時間等）や、プレイヤキャラクタ１０１の移動速度等に応じて、当該間隔を広げたり狭めたりするよう構成してもよい。
【００６９】
また、他の実施形態では、仮想カメラの進行方向が奥行き方向であるような場合は（例えばレースゲーム等）、仮想カメラの前後方向に配置するようにしてもよいし、進行方向が上下方向となるゲーム処理（縦スクロールのゲーム等）であれば、その進行方向に沿って仮想カメラの上下方向にダミーカメラを配置するようにしても良いことはいうまでもない。
【００７０】
また、上記実施形態では、仮想カメラの移動態様の例として、プレイヤキャラクタの移動（特に２次元的な移動）に伴って仮想カメラ１０３も移動するような態様を例として挙げていた。このような移動態様の他、例えば図１９に示すように、仮想カメラ１０３を、プレイヤキャラクタ１０１を中心としてその周囲を円状に移動させるような場合にも、上記実施形態で説明したような処理は適用可能である。なお、この仮想カメラの移動は、プレイヤの入力にかかる操作データに基づいて移動させても良いし、あらかじめ仮想カメラの軌道を定義しておき、当該定義に基づいて移動させてもよい（例えば、ゲーム中に挿入されるイベントシーン等での仮想カメラの移動にこのような定義を利用してもよい）。その他、仮想カメラ１０３の今後の移動経路（進行経路）が把握できるようなカメラ移動制御を行う処理全般に、上述したようなダミーカメラを利用した制御は適用可能である。また、このような場合、ダミーカメラの配置位置についても、上記のような仮想カメラの左右への配置に限らず、上下方向や前後方向等、仮想カメラの周囲（３６０度）に配置してもよい。そして、操作データ等から仮想カメラの進行方向を判別し、その方向にかかるダミーカメラについて上記のようなコリジョン状態となるか否かを判定するようにすればよい。
【００７１】
また、他の実施形態では、プレイヤキャラクタは動かさずに、仮想カメラ１０３のほうをプレイヤが操作するような場合（例えば視点変化させる操作）にも上述したような処理は適用可能である。
【００７２】
また、ダミーカメラ１０４の向き（撮像方向）に関して、上記実施形態では仮想カメラ１０３の向き（撮像方向）を流用する場合を例に挙げた。この他、他の実施形態では、ダミーカメラの向きもプレイヤキャラクタ１０１を向くように構成してもよい。例えば、仮想カメラの注視点もダミーカメラ１０４の注視点も共にプレイヤキャラクタ１０１の位置に設定するようにしてもよい。そして、ダミーカメラ１０４の位置からプレイヤキャラクタ１０１までの撮像範囲内に上記障害物となるようなオブジェクトが存在するか否かを判定するようにしてもよい。
【００７３】
また、上記実施形態ではコリジョン判定について仮想カメラとダミーカメラの双方共に行っていたが、他の実施形態では、ダミーカメラのついてのみコリジョン判定を行うようにしてもよい。
【００７４】
また、上記実施形態ではゲーム処理に適用した場合を例に挙げたが、ゲーム処理に限らず、仮想カメラを仮想３次元空間内で移動させ、その撮像画像を表示するような処理全般について本実施形態の処理は適用可能である。
【００７５】
また、上記実施形態においては、障害物との接触を避けるように仮想カメラを移動制御するための一連の処理が単一の装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【００７６】
１０    ゲーム装置
１１    入力装置
１２    表示装置
１３    プロセッサ
１４    内部記憶装置
１５    メインメモリ
【図１】
2014235596.tif 000003
【図２】
2014235596.tif 000004
【図３】
2014235596.tif 000005
【図４】
2014235596.tif 000006
【図５】
2014235596.tif 000007
【図６】
2014235596.tif 000008
【図７】
2014235596.tif 000009
【図８】
2014235596.tif 000010
【図９】
2014235596.tif 000011
【図１０】
2014235596.tif 000012
【図１１】
2014235596.tif 000013
【図１２】
2014235596.tif 000014
【図１３】
2014235596.tif 000015
【図１４】
2014235596.tif 000016
【図１５】
2014235596.tif 000017
【図１６】
2014235596.tif 000018
【図１７】
2014235596.tif 000019
【図１８】
2014235596.tif 000020
【図１９】
2014235596.tif 000021
【図２０】
2014235596.tif 000022
【図２１】
2014235596.tif 000023