【文献】
“マリオカート7”,ファミ通ディーエスプラスウィー,株式会社エンターブレイン,2011年10月21日,第13巻, 第12号,p.14-25
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
図面を参照して本発明の映像生成方法が実施されるゲームシステム200および3Dゲームにおけるゲーム画像の視点である仮想カメラの位置制御について説明する。
【0016】
[ゲームシステムの構成]
図1は、ゲームシステム200の構成を示すブロック図である。ゲームシステム200は、コントローラ20等の周辺機器を含むゲーム装置本体(コンピュータ)10、および、記憶媒体15によって供給されるゲームプログラムによって実現される複数の機能部の組み合わせである。機能部は、カメラ位置制御部を含むゲーム画像生成部、コントローラ20の操作を検出する操作検出部等が含まれる。これら複数の機能部によりゲーム機能が実現される。ゲーム画像生成部は、主にゲームプログラムを実行するCPU31の機能によって実現される。操作検出部は、CPU31およびコントローラ20の操作子群22等によって実現される。以下、ゲームシステム200の構成について詳細に説明する。
【0017】
ゲーム装置本体10は、装置全体の動作を制御するCPU31を有している。このCPU31に対してRAM32およびバス33が接続される。RAM32には、ゲームの進行に応じて各種のデータが記憶される。
【0018】
バス33には、グラフィック・プロセッサ・ユニット(GPU)34、インプット・アウトプット(I/O)ポート39が接続される。GPU34には、デジタル映像信号をNTSCテレビジョン方式やPALテレビジョン方式に変換するためのデコーダ37を介して、VRヘッドセット38が接続される。
【0019】
I/Oポート39には、記録媒体15に記録されているデータを再生し、デコードするためのドライバ(DRV)40、サウンド・プロセッサ(S.P)42、外部メモリ45、コントローラ20およびROM46が接続される。
【0020】
記録媒体15は、たとえばDVD(Digital Versatile Disc)である。ゲーム装置本体10は、セットされた記録媒体15からゲームプログラムを読み取って、このプログラムを実行する。なお、記録媒体15は、DVD以外であってもよく、例えばCD、Blu−rayDisc(登録商標)、または、内蔵のハードディスクなどを用いることができる。
【0021】
ROM46には、ゲーム装置本体10を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。外部メモリ45には、ユーザの情報や実行しているゲームの途中経過等が記憶される。ユーザは、ゲームプログラムを記憶した記憶媒体15と自己の外部メモリ45をセットすることにより、途中で中断したゲームを、その中断したタイミングから再開することができる。
【0022】
サウンド・プロセッサ42は、増幅器43を介して、外部機器であるスピーカ44に接続される。スピーカ44は、VRヘッドセット38と一体のスピーカである。
【0023】
コントローラ20は、操作子群22を備えている。ユーザは、コントローラ20の操作子群22を操作して、ゲーム中に登場するプレイヤキャラクタ100や、VRヘッドセット38のディスプレイに表示されるゲーム空間の視点(以下、「カメラ位置」と呼ぶ)を制御することが可能である。操作子群22は、プレイヤキャラクタ100の移動方向や移動速度を操作するための操作子、プレイヤキャラクタ100に特定の動作をさせるための操作子、カメラ110の位置を制御するための操作子などを含んでいる。操作子は、例えば、方向キー、スティック、あるいはボタンである。操作子群22に含まれる操作子22Aは、プレイヤキャラクタ100をジャンプさせるための操作子として設定されているものとする。操作子群22は、I/Oポート21に接続されている。コントローラ20のI/Oポート21は、ゲーム装置本体10のI/Oポート39に接続されている。
【0024】
[カメラ位置の制御]
次に、図面を参照して、ゲームシステム200のカメラ位置制御部によって実行されるカメラ位置の制御について説明する。
図2から
図6は、プレイヤキャラクタ100の移動とカメラ位置の移動の様子を側面視した模式図である。
図2から
図6に設定したX軸、Y軸、Z軸(紙面奥行き方向)は、それぞれ直交するものとし、Y+方向(紙面上方)を上方向、Y−方向(紙面下方)を下方向とする。Y+方向は本発明の第1方向に相当し、Y−方向は本発明の第2方向に相当する。
【0025】
図2に示すように、3Dゲームを実行するゲームシステム200は、仮想の三次元空間であるゲーム空間内に仮想のカメラ110を設け、このカメラ110がゲーム空間を撮影した画像をゲーム画像としてVRヘッドセット38のディスプレイに出力する。このゲーム画像の生成は、ゲーム空間の風景及びキャラクタの姿等をレンダリングする描画処理部とカメラ位置を制御するカメラ位置制御部とを含むゲーム画像生成部によって実行される。
【0026】
カメラ位置制御部は、ゲーム空間内にカメラ110の向き先である注視点101を設定する。注視点101は、ゲーム空間内でプレイヤキャラクタ100の活動が展開されているエリアの中心点であり、例えば、プレイヤキャラクタ100の上方に設定される。また、注視点101には、その位置を示す三次元座標のみならず、その注視点101に向けて設置されるカメラ110の位置を指示する情報が付属している。すなわち、注視点101は、ベクトルの始点のような性質を持っている。注視点101の情報に基づき、カメラ110は、注視点101から所定の方向、所定の距離、所定の仰角または俯角の位置であるカメラ位置に、注視点101向きに設置される。
【0027】
カメラ110は、一般的に、プレイヤキャラクタ100の背後から、プレイヤキャラクタ100の全身像を写しながら、プレイヤキャラクタ100が活動する方向が画面に入るカメラ位置、すなわち、
図2に+印で示す位置に設定される。カメラ110から伸びる境界線110A,110Bで挟まれる領域は、カメラ110で写される仮想の撮影範囲を示している。カメラ位置制御部は、カメラ110の位置および向きを、プレイヤキャラクタ100が撮影範囲に含まれるように制御する。また、カメラ位置制御部は、カメラ110の位置および向きを、ユーザによるコントローラ20の操作に基づいた位置および向きにも制御する。尚、カメラ位置制御は、プレイヤキャラクタ100の全身が撮影範囲に含まれるような制御に限定されない。カメラ位置制御は、少なくともプレイヤキャラクタ100の頭部が仮想の撮影範囲から外れないようにすればよい。
【0028】
図2は、プレイヤキャラクタ100のジャンプ動作を実行する前の状態を示している。カメラ110は、注視点101を基準とした所定の位置に配置されている。本実施形態では、地面120に対するプレイヤキャラクタ100の原点座標を接地点121とし、プレイヤキャラクタ100の頭頂部の高さHP1より高い位置に注視点101が設けられている。そして、カメラ110の初期位置は、注視点101を通る水平線に対して所定の角度A3を成し、かつ注視点101から所定距離だけ離れた位置に設定されている。地面120からカメラ110の初期位置までの高さをHC1とする。
【0029】
プレイヤキャラクタ100のジャンプ動作は、ユーザがコントローラ20の操作子22Aに対して操作を行うことで実行される。本実施形態のジャンプ動作は、プレイヤキャラクタ100が地面120の接地点121から最高地点まで上昇し、最高地点から地面120の接地点121まで下降を行う動作であるとする。つまり、Y軸に沿った動作であり、X軸方向及びZ軸方向の移動は含まれていない。尚、ジャンプ動作はこれに限定されず、X軸方向、Y軸方向、及びZ軸方向の移動が含まれていてもよい。また、出発点と着地点が異なっていてもよい。すなわち、停止した状態のジャンプのみならず、移動しながら(歩きながら、走りながら)のジャンプにも適用可能である。
【0030】
図2に示した状態では、ゲーム画像生成部は、ジャンプ動作前には、高さHC1のカメラ110からプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0031】
図3は、ユーザがコントローラ20の操作子22Aに対して操作を行い、プレイヤキャラクタ100がジャンプ動作を開始した直後の状態を示している。
図3では、プレイヤキャラクタ100は、上方に向けて移動(キャラクタ上昇動作)している。プレイヤキャラクタ100は、地面120から頭頂部までの高さがHP2となる位置に移動している。この高さHP2は、カメラ110の初期位置の高さHC1と等しい高さとする。
【0032】
一方、プレイヤキャラクタ100がカメラ110の初期位置の高さHP2(=HC1)に到達しても、カメラ110は移動していない。カメラ110は、初期位置の高さHC1からプレイヤキャラクタ100を撮影している。
【0033】
図3に示した状態では、ゲーム画像生成部は、高さ一定(HC1)のカメラ110からキャラクタ上昇動作を行うプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0034】
図4は、プレイヤキャラクタ100が、キャラクタ上昇動作を継続している状態を示している。プレイヤキャラクタ100は、地面120から頭頂部までの高さがHP3となる位置に移動している。
【0035】
図4では、プレイヤキャラクタ100が上方に向けて移動するのに伴って、カメラ110も初期位置から上方に移動(視点上昇動作)している。カメラ110は、高さHC2まで移動している。この位置は、ジャンプ動作におけるカメラ110の最高地点である。つまり、カメラ110は、プレイヤキャラクタ100が上方へ移動(キャラクタ上昇動作)を開始した後、遅れて上方への移動(視点上昇動作)を開始する。また、プレイヤキャラクタ100がキャラクタ上昇動作を継続中でも、カメラ110は、最高地点の高さHC2まで到達すると視点上昇動作を終了する。カメラ110が初期位置の高さHC1から最高地点の高さHC2まで移動する速度は、その期間におけるプレイヤキャラクタ100の上昇速度よりも遅く設定されている(
図7参照)。尚、カメラ110は注視点101の位置に基づいて設置される。このため、カメラ110を移動させるには、まず注視点101を移動させ、移動した注視点101の位置に基づいてカメラ110の新たな位置を設定する。
【0036】
カメラ110が初期位置の高さHC1から視点上昇動作を開始した後、最高地点の高さHC2まで移動する間、ゲーム画像生成部は、上昇するカメラ110から、同じく上昇するプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0037】
図5は、プレイヤキャラクタ100がジャンプ動作の最高地点に到達した状態を示している。プレイヤキャラクタ100は、地面120から頭頂部までの高さがHP4となる位置に移動している。
【0038】
一方、カメラ110は、最高地点の高さHC2から徐々に下降(視点復帰動作)して、高さHC3まで移動している。
【0039】
従って、プレイヤキャラクタ100が高さHP3にある状態(
図4)から最高地点であるHP4に到達(
図5)するまでの間、カメラ110は最高地点の高さHC2から高さHC3まで徐々に下降している。つまり、プレイヤキャラクタ100が(視点上昇動作)を終了させる前に、カメラ110は視点上昇動作を終了させ視点復帰動作を開始する。この間、ゲーム画像生成部は、上昇するプレイヤキャラクタ100を徐々に下降するカメラ110から撮影し、この仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。尚、カメラ110が下降する速度の絶対値は、プレイヤキャラクタ100が上昇する速度の絶対値よりも小さく設定されている。つまり、カメラ110はプレイヤキャラクタ100の動作に比べてゆっくりと移動する。例えば、カメラ110の下降する速度の絶対値は、カメラ110が上昇する平均速度の絶対値の1/10よりも小さく設定されている。尚、カメラ110が上昇する平均速度は、カメラ110が初期位置の高さHC1から最高地点の高さHC2まで移動する距離を移動に要する時間で除することで得られる。
【0040】
図6は、プレイヤキャラクタ100がジャンプ動作の最高地点から地面120まで下降(キャラクタ下降動作)して着地した状態を示している。
図6では、プレイヤキャラクタ100は、地面120から頭頂部までの高さがHP1となる元の位置に移動している(
図2参照)。
【0041】
一方、カメラ110は、徐々に下降(視点復帰動作)を継続しており、高さHC4まで移動している。高さHC4は、プレイヤキャラクタ100が最高地点に到達した時点でのカメラ110の高さHC3よりも低い高さである。
【0042】
つまり、プレイヤキャラクタ100が高さHP4の最高地点から高さHP1の元の位置に到達するまでの間、カメラ110は高さHC3から高さHC4まで徐々に下降している。この間、ゲーム画像生成部は、徐々に下降するカメラ110から同じく下降するプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。尚、カメラ110は、プレイヤキャラクタ100が元の高さHP4に到達した後も、徐々に下降する(
図7参照)。
【0043】
次に、
図2から
図6を用いて説明したカメラ位置の制御について、タイミングチャートを用いて説明する。
図7は、プレイヤキャラクタ100の移動とカメラ位置の移動の関係を示すタイミングチャートである。
図7の縦軸(Y軸)は、
図2から
図6における地面120からの高さに相当する。横軸(T軸)は、時刻(t)を表す。実線はカメラ110の地面120からの高さを表し、破線は、プレイヤキャラクタ100の高さを表す。
【0044】
図7に示すように、時刻t1よりも前は、プレイヤキャラクタ100のジャンプ動作を実行する前の状態を示している。プレイヤキャラクタ100(破線)は、地面120に立った高さHP1の位置にあり、カメラ110(実線)は、初期位置である高さHC1の位置にある。
【0045】
時刻t1において、ユーザがコントローラ20の操作子22Aに対して操作を行い、プレイヤキャラクタ100のジャンプ動作を実行したとする。プレイヤキャラクタ100(破線)は、時刻t1から時刻t5の間、上方に向けて移動(キャラクタ上昇動作)し、Y軸方向の高さが増加する。
【0046】
一方、時刻t1においてプレイヤキャラクタ100が上方に向けて移動(キャラクタ上昇動作)を開始しても、時刻t1から時刻t3までカメラ110(実線)は移動しない。カメラ110は、初期位置の高さHC1の状態を維持する。
【0047】
時刻t2において、プレイヤキャラクタ100(破線)は、上方に向けて移動(キャラクタ上昇動作)を継続しており、高さはHP2に到達する。この高さHP2は、カメラ110の初期位置の高さHC1と等しい高さである。
【0048】
時刻t3において、カメラ110(実線)は上方への移動(視点上昇動作)を開始する。つまり、時刻t1から時刻t3までは、ゲーム画像生成部は、高さ一定(HC1)のカメラ110からキャラクタ上昇動作を行うプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0049】
時刻t4では、プレイヤキャラクタ100(破線)は上方に向けて移動(キャラクタ上昇動作)を継続している。時刻t4においては、プレイヤキャラクタ100は、地面120からの高さHP3となる位置に移動している。
【0050】
一方、時刻t4においては、カメラ110(実線)は、ジャンプ動作におけるカメラ110の最高地点である高さHC2に到達している。つまり、カメラ110は、時刻t3から時刻t4の間に初期位置の高さHC1から最高地点の高さHC2まで移動する。つまり、時刻t3から時刻t4までは、ゲーム画像生成部は、上昇するカメラ110からキャラクタ上昇動作を行うプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0051】
尚、カメラ110(実線)が初期位置の高さHC1から最高地点の高さHC2まで移動する速度は、その期間におけるプレイヤキャラクタ100(破線)の上昇速度よりも遅く設定されている。つまり、時刻t3から時刻t4の区間において、カメラ110の移動速度を表す実線の傾きは、プレイヤキャラクタ100の移動速度を表す破線の傾きよりも傾斜が緩やかになっている。
【0052】
時刻t5においては、プレイヤキャラクタ100(破線)は、ジャンプ動作の最高地点である高さHP4に到達している。
【0053】
一方、カメラ110(実線)は、最高地点の高さHC2から徐々に下降(視点復帰動作)して、高さHC3まで移動している。つまり、時刻t4から時刻t5までは、ゲーム画像生成部は、ゆっくりと下降するカメラ110からキャラクタ上昇動作を行うプレイヤキャラクタ100を撮影し、その仮想ゲーム空間40内の様子をVRヘッドセット38のディスプレイに表示する。
【0054】
時刻t5から時刻t6においては、プレイヤキャラクタ100(破線)は、ジャンプ動作の最高地点から地面120まで下降(キャラクタ下降動作)している。時刻t6においては、プレイヤキャラクタ100は、高さHP1となる元の位置に移動している。
【0055】
一方、カメラ110(実線)は、時刻t5から時刻t6において徐々に下降(視点復帰動作)して、高さHC4まで移動している。カメラ110は、プレイヤキャラクタ100が元の高さHP4に到達した後も、徐々に下降し、時刻t7において、初期位置である高さHC1に復帰する。
【0056】
[ジャンプ動作を連続して行う場合のカメラ位置の制御]
次に、ジャンプ動作を連続して行う場合のカメラ位置の制御について説明する。
図7では、プレイヤキャラクタ100は時刻t6において着地し、カメラ110は時刻t7において初期位置(高さHC1)に復帰している。
図8は、カメラ110が初期位置(高さHC1)に復帰していない時刻t6から時刻t7の間に、ユーザがコントローラ20の操作子22Aに対して操作を行った場合のタイミングチャートである。
図8の縦軸(Y軸)は、
図2から
図6における地面120からの高さに相当する。横軸(T軸)は、時刻(t)を表す。実線はカメラ110の地面120からの高さを表し、破線は、プレイヤキャラクタ100の高さを表す。
【0057】
図8に示すように、時刻t1から時刻t6の間にプレイヤキャラクタ100がキャラクタ上昇動作及びキャラクタ下降動作を行うジャンプ動作を第1ジャンプ動作150Aとし、時刻t11から時刻t14の間にプレイヤキャラクタ100がキャラクタ上昇動作及びキャラクタ下降動作を行うジャンプ動作を第2ジャンプ動作150Bとする。時刻t11は、第1ジャンプ動作150Aにおいてプレイヤキャラクタ100が着地する時刻t6と、カメラ110が初期位置(高さHC1)に復帰する時刻t7の間の時刻であるとする。
【0058】
時刻t11においてユーザがコントローラ20の操作子22Aに対して操作を行った場合、第2ジャンプ動作150Bが開始され、プレイヤキャラクタ100は、上方に向けて移動(キャラクタ上昇動作)を開始する。
【0059】
一方、時刻t11の時点では、カメラ110はまだ初期位置(高さHC1)に復帰していない。そこで、カメラ位置制御部は、カメラ110を初期位置(高さHC1)に即時復帰させる。
【0060】
時刻t11でカメラ110を初期位置(高さHC1)に即時復帰させる以外、第2ジャンプ動作150Bの動作は、第1ジャンプ動作150Aの動作は共通している。すなわち、以下の動作を行う。
時刻t12:カメラ110(実線)は、上方への移動(視点上昇動作)を開始する(第1ジャンプ動作150Aの時刻t3に対応)。
時刻t13:カメラ110(実線)は、ジャンプ動作におけるカメラ110の最高地点である高さHC2に到達する(第1ジャンプ動作150Aの時刻t4に対応)。
時刻t14:プレイヤキャラクタ100(破線)は、ジャンプ動作の最高地点である高さHP4に到達する(第1ジャンプ動作150Aの時刻t5に対応)。
時刻t15:プレイヤキャラクタ100は、高さHP1となる元の位置に移動する(第1ジャンプ動作150Aの時刻t6に対応)。
時刻t15以降:カメラ110は、時刻t15以降も初期位置である高さHC1に向けて徐々に下降する。
【0061】
図9のフローチャートを参照して、ジャンプ動作を行う場合のプレイヤキャラクタ100及びカメラ位置の制御について説明する。
【0062】
ゲームシステム200の動作がスタートすると(スタート)、操作検出部は、コントローラ20の操作子22Aに対する操作の有無を判定する(S1)。操作検出部がコントローラ20の操作子22Aに対する操作を検出すると(S1でYES)、カメラ位置制御部は、カメラ110が初期位置にあるか(復帰しているか)どうかを判定する(S2)。カメラ110が初期位置にある場合(S2でYES)、ゲーム画像生成部は、プレイヤキャラクタ100を上方に向けて移動(キャラクタ上昇動作)を開始させる(S4)。
【0063】
一方、カメラ110が初期位置にない場合(S2でNO)、カメラ位置制御部は、カメラ110を初期位置に即時復帰させ(S5)、ゲーム画像生成部は、プレイヤキャラクタ100を上方に向けて移動(キャラクタ上昇動作)を開始させる(S4)。
【0064】
以上説明した実施形態では、(VR対応の)3Dゲームについて説明したが、他の形式のゲームに適用することも可能であり、また、ゲーム以外の映像生成装置、映像生成プログラムに適用することも可能である。
【0065】
本実施形態では、カメラ110の位置を移動する場合、注視点101との位置関係を一定に保った状態、つまりカメラ110の位置が注視点101を通る水平線に対して所定の角度A3を保った状態(
図2参照)で上昇及び下降させたが、これに限定されない。例えば、カメラ110と注視点101の位置関係を変化(角度A3を変化)させながら、すなわち、カメラ110をチルトさせながら、カメラ110の位置を移動させてもよい。
【0066】
また、本実施形態では、第1方向を上、第2方向を下とする「ジャンプ」を例にあげて説明したが、視線を揺動させる移動であれば上下でなくても本発明を適用可能である。
【0067】
本実施形態では、カメラ110が上昇する場合、初期位置(高さHC1)から上昇することとしたが、これに限定されない。例えば、カメラ110が上昇する前に初期位置(高さHC1)よりも低い位置まで瞬時に下降させてから上昇を開始するようにしてもよい。
【0068】
また、本実施形態では、カメラ110を上昇させるタイミングは、プレイヤキャラクタ100が上方に向けて移動(キャラクタ上昇動作)を開始してから所定時間経過後としたが、これに限定されない。カメラ110を上昇させるタイミングは、例えば、プレイヤキャラクタ100が上方に向けて移動(キャラクタ上昇動作)を開始するタイミングと同時でもよい。