プログラム、情報記憶媒体、及び、画像生成装置
【課題】入力情報により仮想空間でプレーヤキャラクタの自由移動が可能なゲームの画像を生成する画像生成装置において、注目対象対となる移動体オブジェクトを画面内にとらえやすいサポート機能を提供すること。
【解決手段】本プログラムは、仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、オートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部としてコンピュータを機能させ、前記仮想カメラ配置制御部は、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行う。
【解決手段】本プログラムは、仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、オートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部としてコンピュータを機能させ、前記仮想カメラ配置制御部は、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、及び、画像生成装置に関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成装置(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
例えば、プレーヤが入力部を用いて、オブジェクト空間(3次元空間)において、弾を発射させて敵キャラクタを射撃するシューティングゲームの画像を生成する画像生成装置が存在する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許3538285
【発明の概要】
【発明が解決しようとする課題】
【0005】
このような画像生成装置では、プレーヤの入力操作に基づいてプレーヤキャラクタをゲーム空間内で自由に移動させることをできるものがあり、人気が高い。
【0006】
かかる画像生成装置においては、プレーヤの入力に基づいてプレーヤキャラクタの位置や向きとともに仮想カメラの位置や向き等も変化するため、プレーヤの移動中に標的とする敵キャラクタを画面内に捕らえることが難しいという問題があった。
【0007】
本発明は、以上のような課題を解決するためになされたものである。本発明のいくつかの態様によれば、入力情報により仮想空間でプレーヤキャラクタの自由移動が可能なゲームの画像を生成する画像生成装置において、注目対象となる移動体オブジェクトを画面内にとらえやすいサポート機能を提供することができる。
【課題を解決するための手段】
【0008】
(1)本発明は、
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転(旋回)させるルック回転(旋回)制御を行うことを特徴とする。
【0009】
本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部として、コンピュータを機能させるプログラムを記憶した情報記憶媒体、上記各部を含む画像生成装置に関係する。
【0010】
移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラの向きを回転(旋回)させてもよい。なおルック範囲の位置は、生成された画像の固定位置でもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化する位置でもよい。またルック範囲の大きさは、固定でもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化してもよい。またルック範囲の数は、生成された画像に対して1つ設定されてもよいし、複数設定されてもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化させてもよい。
【0011】
ルック回転(旋回)制御は、プレーヤによるオートルック発動指示入力を受け付けた場合に行うようにしてもよい。オートルック対象が設定されていても、プレーヤによるオートルック発動指示入力があるまでは、ルック回転(旋回)制御を行わない構成も本発明の範囲内である。
【0012】
仮想カメラの位置はオートルック対象の設定の有無に関わらず、入力情報に基づき演算してもよい。入力情報によって移動するプレーヤキャラクタが存在する場合には、仮想カメラをプレーヤキャラクタに追従させるようにしてもよい。また 仮想カメラの位置が固定されていて、入力情報に基づき仮想カメラの向きだけを変化させる画像生成装置にも適用可能である。
【0013】
本発明はプレーヤキャラクタが存在するが1人称視点の画像が生成される場合(FPSの場合)プレーヤキャラクタが存在し3人称視点の画像が生成される場合(TPSの場合)のいずれの場合にも適用可能である。またプレーヤキャラクタは、入力情報によって仮想空間内を自由に移動する制御が行われる構成でもよい。仮想カメラはプレーヤキャラクタに追従して移動する構成でもよく、この場合プレーヤキャラクタを移動させるための入力情報に基づき仮想カメラの移動や配置制御が行われる。
【0014】
本発明によれば、入力情報により仮想空間でプレーヤキャラクタの自由移動が可能なゲームの画像を生成する画像生成装置において、注目対象となる移動体オブジェクトを画面内にとらえやすいサポート機能を提供することができる。
【0015】
(2)このプログラム、情報記憶媒体、画像生成装置は、
指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算する指示位置又は指示方向演算部をさらに含み、
前記オートルック対象設定部は、
移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定してもよい。
【0016】
(3)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定してもよい。
【0017】
オートルック条件として複数の条件を設定し、すべての条件を満たした場合にオートルック条件を満たすと判定する場合でもよいし、複数の条件の1つでも満たした場合にオートルック条件を満たすと判定する場合でもよい。
【0018】
例えばオートルック条件として、プレーヤキャラクタが攻撃を行ってヒットした敵キャラクタの移動体オブジェクトであることを条件としてもよい。この様にするとプレーヤキャラクタが一度弾を当てた敵キャラクタはオートルック対象となるので、弾を複数発当てなければ倒せないという設定の場合に、最初の一発を当てることが出来れば、2発目以降はより当て易くすることが出来るようになる。
【0019】
(4)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないでもよい。
【0020】
プレーヤの入力によってオートルックモードになり、プレーヤのオートルック解除入力によりオートルックモードが解除される場合には、プレーヤのオートルック解除入力はキャンセルイベントとなる。オートルックモードが発動されていない場合にはオートルックモードを変更できるようにし、オートルックモードが発動されている場合には、キャンセルイベントが発生するまでは、オートルック対象を変更しないようにしてもよい。
【0021】
また例えばオートルック対象の移動体オブジェクトがライフ0になった場合や消滅した場合、画面外(FPSの場合にはプレーヤキャラクタの視野外、TPSの場合には表示範囲外でもよい)になった場合等もキャンセルイベントとしてもよい。
【0022】
このようにするとオートルック対象が煩雑に切り替えられることにより生じる仮想カメラの回転(旋回)を減らすことができるので、オートルック中も見やすい画像を提供することができる。
【0023】
(5)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断してもよい。
【0024】
仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分は、例えば直線でもよいし、所与の起動を描く曲線(弾道曲線や弓なりの曲線や放物線等)でもよい。この様にすると見えているオブジェクトを優先的にオートルック対象とすることができる。
【0025】
(6)このプログラム、情報記憶媒体、画像生成装置は、
移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする有効時間演算部をさらに含み、
前記オートルック対象設定部は、
有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断してもよい。
【0026】
例えば所定の条件を満たす移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定してもよい。例えば移動体オブジェクトが敵か味方かのいずれかの属性情報を有する場合、敵属性を有することを所定の条件としてもよい。
【0027】
(7)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断してもよい。
【0028】
(8)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させてもよい。
【0029】
(9)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させる追尾制御を行ってもよい。
【0030】
(10)このプログラム、情報記憶媒体、画像生成装置は、
移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定するフラグ設定部をさらに含み、
前記オートルック対象設定部は、
有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。
【0031】
(11)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させてもよい。
【0032】
(12)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転(旋回)制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御してもよい。
【0033】
所与のイベントとはプレーヤからのオートルックモード移行指示入力でもよい。
【0034】
(13)このプログラム、情報記憶媒体、画像生成装置は、
オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行う表示制御部とを、さらに含んでもよい。
【0035】
通常モードからオートルックモードに移行すると、特別表示を中止してもよい。特別表示とはプレーヤキャラクタの側にマーカー等のマーク画像表示を行うことでもよいし、プレーヤキャラクタ自体の輝度や色を特別状態にしたり、ブリンク表示したりすることでもよい。
【0036】
また特別表示として通常状態でマーカー画像を表示している場合には、オートルックモードに移行した場合には、マーカー画像を表示はしているが、目立ないように(プレーヤキャラクタ自体の表示の邪魔にならないように)変化させてもよい。
【0037】
(14)このプログラム、情報記憶媒体、画像生成装置は、
入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部をさらに含み、
前記プレーヤキャラクタ移動制御部は、
オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御してもよい。
【0038】
オートルック中は、仮想カメラは、敵キャラクタをそのカメラの画角内に収めるように追尾しているが、本願ではプレーヤキャラクタはプレーヤが自由に移動させることが可能となっている。そのため、プレーヤがプレーヤキャラクタをまっすぐに移動させる操作を行うと、オートルック対象が設定されていない場合には、プレーヤキャラクタの向いている方向まっすぐな方向として移動させ、オートルック中はプレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向をまっすぐな方向として、オートルック対象キャラクタの位置に向かうように移動させる。
【0039】
(15)このプログラム、情報記憶媒体、画像生成装置は、
攻撃情報に基づきプレーヤキャラクタにダメージを与えるダメージを演算するダメージ演算部をさらに含み、
前記ダメージ演算部は、
オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行ってもよい。
【0040】
例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べてプレーヤキャラクタが攻撃を受けた場合のダメージ量を減らす処理を行ってもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて敵キャラクタが受けるダメージ量を減らす処理を行ってもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べてプレーヤキャラクタの攻撃能力や防御能力に関するパラメータをアップさせてもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて敵キャラクタの攻撃能力や防御能力に関するパラメータをアップさせてもよいし、その逆でもよい。
【0041】
この様に、オートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて、プレーヤキャラクタに有利にパラメータを設定してもよいし、プレーヤキャラクタに不利にパラメータを設定してもよい。
【図面の簡単な説明】
【0042】
【図1】本実施形態の画像生成装置の機能ブロック図の例。
【図2】図2(A)(B)は、オートルックを行うにあたっての画面範囲の設定について説明するための図。
【図3】移動体オブジェクトの代表点への有効/無効フラグの設定について説明するための図。
【図4】オートルック対象の移動体オブジェクトに対する仮想カメラの回転(旋回)動作について説明するための図。
【図5】図5(A)(B)(C)は追尾中の仮想カメラの動作について説明するための図。
【図6】オートルック中の仮想カメラの回転(旋回)動作について説明するための図。
【図7】移動体オブジェクトに対するレイチェックについて説明するための図。
【図8】仮想カメラの視界範囲と移動体オブジェクトの位置関係を示す図。
【図9】図9(A)(B)は、オートルック条件について説明するための図。
【図10】図10(A)(B)は、オートルック条件について説明するための図。
【図11】オートルック対象候補の除外条件について説明するための図。
【図12】オートルック対象候補の除外条件について説明するための図。
【図13】オートルック対象候補の除外条件について説明するための図。
【図14】図14(A)(B)(C)は、照準位置に最も近い移動体オブジェクトを検索する処理について説明するための図。
【図15】視野範囲内にオートルック対象候補が存在しない場合のオートルック対象の設定について説明するための図。
【図16】オートルック対象となる移動体オブジェクトに対するマーカー表示例。
【図17】オートルック対象切り替え時のマーカー移動について説明するための図。
【図18】図18(A)は照準位置の求め方を説明するための図、図18(B)は照準方向が与えられている場合のオートルック対象の選び方について説明するための図。
【図19】移動体オブジェクトに関連づけて設定されている各種情報の一例について説明するための図。
【図20】図20はオートルックモードの処理の流れ示すフローチャート。
【図21】オートルックの対象を決定する処理の流れを示すフローチャート。
【図22】マルチプレーヤモードのプレイ例を示す図。
【発明を実施するための形態】
【0043】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0044】
1.構成
図1に本実施形態の画像生成装置(コンピュータ、端末、ゲーム装置)の機能ブロック図の例を示す。なお本実施形態の画像生成装置は図1の構成要素(各部)の一部を省略した構成としてもよい。
【0045】
入力部160は、プレーヤからの入力情報を入力するための機器であり、プレーヤの入力情報を処理部に出力する。本実施形態の入力部160は、プレーヤの入力情報(入力信号)を検出する検出部162を備える。入力部160は、例えば、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイなどがある。
【0046】
また、入力部160は、3軸の加速度を検出する加速度センサや、角速度を検出するジャイロセンサ、撮像部を備えた入力機器でもよい。例えば、入力機器は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力機器には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力機器には、入力機器と一体化されている画像生成装置、携帯型画像生成装置、携帯電話なども含まれる。
【0047】
検出部162は、入力部160からの入力情報を検出する処理を行う。例えば、検出部162は、入力部160の引き金(トリガ)が引かれることによって発生する入力信号を、入力情報(攻撃入力情報)として検出する。例えば、検出部162は、入力部160から照準(ガンサイト)の位置を指示する入力情報(指示入力情報)を検出する。
【0048】
例えば、入力部160が、液晶ディスプレイと、プレーヤの接触位置を検出するためのタッチパネルとが積層されたタッチパネル型ディスプレイである場合には、タッチペンなどの指示入力機器や指先の接触位置情報を入力情報として検出する。
【0049】
また、入力部160が撮像部を備える入力機器である場合には、撮像画像におおける指示位置情報を入力情報として検出する。より具体的に説明すると、撮像部は、赤外線フィルタ、レンズ、撮像素子(イメージセンサ)、画像処理回路を含む。ここで、赤外線フィルタは、入力機器の前方に配置され、表示部190に関連付けられて配置されている光源(2つの光源)から入射する光から赤外線のみを通過させる。また、レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。また、撮像素子は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。そして、撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像部を備える入力機器は、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(指示位置情報)を入力情報として検出する。
【0050】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM、VRAMなどにより実現できる。
【0051】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0052】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0053】
通信部196は外部(例えば他の画像生成装置)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0054】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成装置を機能させる場合も本発明の範囲内に含む。
【0055】
処理部100(プロセッサ)は、入力部160からの入力情報やプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。
【0056】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、GPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0057】
処理部100は、オブジェクト空間設定部110、仮想カメラ配置制御部111、オートルック対象設定部112、演算処理部113(指示位置又は指示方向演算部113−1、ダメージ演算部113−2、有効時間演算部113−3を含む)、移動・動作処理部114、ゲーム演算部115、表示制御部116、フラグ設定部118、画像生成部(描画部)120、音処理部130を含む。なおこれらの一部を省略する構成としてもよい。
【0058】
オブジェクト空間設定部110は、キャラクタ(敵オブジェクト)の他に、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を、オブジェクト空間に配置設定する処理を行う。
【0059】
ここでオブジェクト空間とは、仮想的なゲーム空間であり、2次元空間、3次元空間の両方を含む。2次元空間とは、例えば2次元座標(X,Y)においてオブジェクトが配置される空間であり、3次元空間とは、例えば3次元座標(X,Y,Z)においてオブジェクトが配置される空間である。
【0060】
例えば、オブジェクト空間設定部110は、オブジェクト空間を3次元空間とした場合には、ワールド座標系にオブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)を配置する。また、例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0061】
仮想カメラ配置制御部111は、仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行うもので、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行う。
【0062】
オートルック対象設定部112は、仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定する。
【0063】
指示位置又は指示方向演算部113−1は、指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算し、オートルック対象設定部112は、移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定してもよい。
【0064】
またオートルック対象設定部112は、仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定してもよい。
【0065】
またオートルック対象設定部112は、いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないようにしてもよい。
【0066】
またオートルック対象設定部112は、前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断してもよい。
【0067】
有効時間演算部113−3は、移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする処理を行い、オートルック対象設定部112は、有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断してもよい。
【0068】
またオートルック対象設定部112は、プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断してもよい。
【0069】
またオートルック対象設定部112は、プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させてもよい。
【0070】
また仮想カメラ配置制御部111は、オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させる追尾制御を行ってもよい。
【0071】
またフラグ設定部118は、移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定する処理を行い、オートルック対象設定部は、有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。
【0072】
また仮想カメラ配置制御部111は、オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させてもよい。
【0073】
また仮想カメラ配置制御部111は、所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御してもよい。
【0074】
表示制御部116は、オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行うようにしてもよい。
【0075】
ダメージ演算部113−2は、オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行う。
【0076】
移動・動作処理部114は、オブジェクト空間において、オブジェクトを移動・動作させる処理を行う。すなわち入力部160から入力された入力情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、移動速度、加速度、移動量、移動方向などの移動パラメータ)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(例えば、1/60秒)毎に順次求める処理を行う。なおフレームは、オブジェクトの移動・動作処理や画像生成処理を行う時間の単位である。
【0077】
移動・動作処理部114は、入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部として機能し、オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御してもよい。
【0078】
ゲーム演算部115は、種々のゲーム処理を行う。例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、最終ステージをクリアした場合にはエンディングを進行させる処理などがある。
【0079】
また、ゲーム演算部115は、プレーヤキャラクタの所与のパラメータ(体力値)が所定値(0)に達したか否かを判断する処理を行い、プレーヤキャラクタの所与のパラメータ(体力値)が所定値(0)に達した場合に、ゲーム終了と判定する処理を行う。
【0080】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。画像生成部120が生成する画像は、いわゆる2次元画像であってもよいし、いわゆる3次元画像であってもよい。
【0081】
2次元画像を生成する場合には、例えば、オブジェクト(スプライト)毎に優先度を設定し、設定された優先度が低いオブジェクトから順に描画する。オブジェクト同士が重なる場合には、優先度が低いオブジェクトの上に、優先度の高いオブジェクトを描画する。
【0082】
いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値
等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0083】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、透視変換(投影変換)、ビューポート変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。
【0084】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、ピクセルデータ、ボクセルデータなどの画素データ(色(RGB)、α値、Z値、輝度等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を生成することができる。
【0085】
仮想カメラ配置制御部111は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、3次元の画像を生成する場合には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。また、仮想カメラ制御部110は、仮想カメラを、予め決められた回転角度で回転させてもよい。この場合には、仮想カメラの位置又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0086】
本実施形態では、プレーヤキャラクタの視点(一人称視点)に基づいて画像を生成するFPS(First Person Shooting)でもよいし、画面に主人公が登場して、これをユーザが操作するタイプのTPS(Third Person Shooting)でもよい。また、本実施形態では、仮想カメラの移動、向き、画角はプログラム又は入力部160の入力情報に基づいて仮想カメラの移動、向き、画角を制御される。
【0087】
例えば仮想カメラによりオブジェクト(例えば、プレーヤキャラクタ)を後方から撮影する場合には、オブジェクトの位置、向きの変化に仮想カメラが追従するように、仮想カメラの位置、仮想カメラの向きを制御する。この場合には、移動・動作処理部114で得られたオブジェクトの位置、向き又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた向きに設定したり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は向きを特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0088】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0089】
そして画像生成部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0090】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、記憶部170に保存される。
【0091】
テクスチャマッピングは、記憶部170に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0092】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0093】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。 なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0094】
音処理部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0095】
なお、本実施形態の画像生成装置は、1人のプレーヤのみがプレイできるシングルプレーヤモード用の装置にしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードを備える装置にしてもよい。
【0096】
例えば、図22に示すように、マルチプレーヤモードの場合には、プレーヤそれぞれの入力部160−1、160−2を用意し、各入力部160−1、160−2が指示する照準位置に基づいて敵キャラクタ等のヒット処理を行う。また、本実施形態では、マルチプレーヤモードの場合には、複数のプレーヤに提供するデータ、表示出力用画像、演算処理用画像、ゲーム音を、1つの画像生成装置を用いて生成している。なお、画像生成装置が他の画像生成装置とネットワークを介して入力情報などのデータを送受信し、受信したデータと入力部160からの入力情報とに基づいて、画像生成処理を行うようにしてもよい。
【0097】
2.本実施の形態の手法
(1)オートルックモード
オートルック機能はプレーヤのターゲッティングの補助を行うことを目的とした機能である。オートルック条件を満たす移動体オブジェクト(例えばプレーヤが認識している敵オブジェクト)を選択し、その移動体オブジェクトのルック基準点が画面中央に来るように仮想カメラをルックさせ、追尾する。
【0098】
入力部に設けられたオートルックボタンを押すとオートルックモードが発動し、離すとオートルックモードは終了する。ここではオートルックモード以外の状態を通常モードと呼ぶ。オートルックボタンを押し続けることにより、オートルックモードを継続することができる。
【0099】
本実施の形態では、通常モードにおいてはプレーヤの入力操作による仮想カメラの旋回操作ができるようにし、オートルックモードにおいてはプレーヤの入力によるカメラ旋回操作はできないようにしてもよい。
【0100】
(2)画面範囲の設定
図2(A)(B)は、オートルックを行うにあたっての画面範囲の設定について説明するための図である。
【0101】
図2(A)は、描画領域(画面と考えてもよい)240に対する第1の判定ライン210、第2の判定ライン220、画面外判定ライン230を示している。第1の判定ライン310は、オートルックを発動させた場合に、オートルック対象の移動体オブジェクトのルック基準点(移動体オブジェクトの位置や移動体オブジェクトの代表点の位置)がこの範囲内に入るまでカメラを自動で追従させるための境界線である。本実施の形態では、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定されたルック範囲に入るまで、仮想カメラを回転(旋回)させるルック回転(旋回)制御を行う。すなわち生成される画像は描画領域240に描画され、ルック範囲がこの第1の判定ライン210で囲まれたエリアである。
【0102】
また第2の判定ライン220は、オートルックモードにおいてルック回転(旋回)制御が行われた後に追尾のためのカメラの回転(旋回)を始める境界線であり、移動体オブジェクトのルック基準点がこれより外に出ると追尾のためのカメラの回転(旋回)が行われる。本実施の形態では、オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させる追尾制御を行う。
【0103】
画面外判定ライン230は、これより外は画面外と判定する境界線である。各範囲については長方形の上、下、左、右の各ボーダーラインを設定できる。
【0104】
図2(B)の250−1と250−2は第1の画角との画像と第2の画角の画像(画角の異なる画像)を示している。本実施の形態では第1の画角において上記各ラインで設定される範囲210−1,220−1、230−1と、 第2の画角において上記各ラインで設定される範囲210−2,220−2、230−2とは、描画領域(画面と考えてもよい)240に対して同じ範囲を保っている。
【0105】
(3)各移動体オブジェクトの設定
図19は、本実施の形態の移動体オブジェクトに関連づけて設定されている各種情報の一例について説明するための図である。なおここでは、本実施の形態の処理に関連のある情報について説明している。
【0106】
本実施の形態では、各移動体オブジェクトの属性情報(普遍的に設定されている属性でもよいし、ゲーム状況に応じて変化する属性でもよい)520や、パラメータ(位置情報530や回転情報540やルック有効時間550や代表点の有効/無効フラグ560等)を各移動体オブジェクトの識別IDであるオブジェクトID510に関連づけて記憶している。属性情報520は、例えば性別、種類、敵味方等の各移動体オブジェクトの属性に関する情報であり、普遍的に設定されている属性でもよいし、ゲーム状況に応じて変化する属性でもよい。位置情報530は、移動体オブジェクトの仮想空間における位置座標(x1、y1,z1)である。回転情報540は、移動体オブジェクトの向きを3軸方向の回転で表したものである。ルック有効時間550は、オートルック対象候補であると判断された移動体オブジェクトに設定される有効時間であり、有効時間が0(設定されていない場合を含む)であると、オートルック対象候補にならないことを示している。代表点の有効/無効フラグ560は、移動体オブジェクトの代表点に対応づけて設定された有効/無効を示すフラグであり、オートルック対象候補にするかしないかを判断するために使用されるフラグ情報である。移動体オブジェクトは少なくとも1つの代表点を有している。有効/無効フラグは代表点毎に有しているため、移動体オブジェクトOB1のように代表点が1つのものは有効/無効フラグは1つ有しており、移動体オブジェクトOB2のように複数の代表点を持つものは有効/無効フラグも複数有している。代表点が複数ある場合には構造体の配列構造でデータを持たせるようにしてもよい。すなわち予め代表点の配列を定めておき、その配列に応じた配列で有効/無効フラグを格納すればよい。代表点として移動体オブジェクトの関節点を用いてもよい。
【0107】
本実施の形態ではオートルックを行うにあたって、移動体オブジェクトの複数の代表点(例えば関節)を基準点とし、ONになっている関節に対してオートルックを行うようにしてもよい。
【0108】
例えば図3(A)に示すように移動体オブジェクト310に対して、複数の代表点312−1〜312−15を設定し、各代表点に対応させて、有効/無効フラグを設定してもよい。有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。またオートルック対象の移動体オブジェクトの有効フラグの設定されている代表点のスクリーン座標系における位置が生成される画像内のルック有効範囲内に含まれるように仮想カメラの向き制御してもよい。
【0109】
図3(A)では代表点312−4に対応する有効/無効フラグが、有効となっており、それ以外の代表点の有効/無効フラグは無効となっている。
【0110】
図3(B)では代表点312−4、312−14,312−15に対応する有効/無効フラグが、有効となっており、それ以外の代表点の有効/無効フラグは無効となっている。
【0111】
これらの有効フラグを有する移動体オブジェクトをオートルック対象候補として選択してもよい。
【0112】
すべての代表点(関節)の有効/無効フラグが無効の移動体オブジェクトは、オートルック対象としない。また複数の代表点(関節)が有効フラグを有する移動体オブジェクトに対しては、例えば照準位置との距離が最も近い代表点(関節)をオートルック対象としてもよい。
【0113】
移動体オブジェクトの代表点の有効/無効フラグの設定は、所定の規則に従って行うようにしてもよい。
【0114】
例えば大型の移動体オブジェクトに複数の代表点(関節)を設けるようにしてもよい。この様にすると大型のオブジェクトの目標位置を部分毎に設定できる。
【0115】
(4)オートルックや追尾の動作
図4は、オートルック対象の移動体オブジェクトに対する仮想カメラの回転(旋回)動作について説明するための図である。
【0116】
オートルックモード中、オートルック条件を満たす移動体オブジェクト310がいる場合は、当該移動体オブジェクト310がルック範囲320に収まるように仮想カメラの回転(旋回)動作を行う。なおオートルックモード中でもオートルック条件を満たす対象がいない場合は、仮想カメラの回転(旋回)動作は行われず、カメラ固定状態で対象が現れるのをその場で待っている状態になる。
【0117】
画像330−1、320−2に示すように、オートルック対象となる移動体オブジェクト310が決まったら当該移動体オブジェクト310のルック基準点312(移動体オブジェクトの代表点、代表点が複数ある場合にはいずれかの代表点)が仮想カメラの中心に来るように仮想カメラを回転(旋回)させる。なおルック範囲320の中央が仮想カメラの中心となるようにしてもよい。そして画像330−3に示すように、ルック基準点312がルック範囲(ルック判定ライン)320内に入った時点で、カメラの回転(旋回)動作は終了する。
【0118】
このときの仮想カメラの回転(旋回)速度のパラメータは外部から調整可能にしてもよい。
【0119】
オートルック対象となる移動体オブジェクト310のルック基準点312がルック範囲(ルック判定ライン)320内に入った後は追尾制御を行う。追尾に移行しなかった場合、その移動体オブジェクト310に対するオートルックは終了してもよい。
【0120】
なおルック開始から時間をカウントして、カウントした時間がルック限界時間を超えた場合、対象LOST扱いとし、ルックをキャンセルしてもよい。またオートルック対象が死亡した場合にもオートルックや追尾は解除する。
【0121】
またプレーヤの入力によりオートルックモードが発動されている場合には、オートルック対象を固定し、オートルック対象が死亡する、追尾可能範囲から出るなどしない限りオートルック対象を切り替えることは行わないようにする。例えばオートルック対象を最も近い場所のオートルック対象候補を切り替える制御が頻繁に行われると、オートルック対象に近い場所に別のオートルック対象候補がいた場合に、対象切り替えに伴い仮想カメラの回転(旋回)が行われ、画面が激しく振動する現象が発生する可能性がある。しかし本実施の形態のようにオートルック対象を固定することで、かかる現象を防止することができる。
【0122】
ズーム時は、ズーム倍率に応じて、画面のスクロールが通常時と同じ程度になるように、オートロック時の仮想カメラの旋回速度に倍率をかけるようにしてもよい。ズーム倍率が高くなるほど、仮想カメラの旋回速度は遅くなるように、オートロック時の仮想カメラの旋回速度に倍率をかけるようにしてもよい。
【0123】
図5は(A)(B)(C)は追尾中の仮想カメラの動作について説明するための図である。
【0124】
図5(A)の画像330−3は、オートルックが完了した時点の画像であり、この時点から追尾制御が行われる。図5(B)の画像330−4、330−5に示すように、追尾制御中は、オートルック対象となる移動体オブジェクト310のルック基準点312が第2の判定ラインで囲まれた第2のエリア340より外に出ると、その移動体オブジェクト310を仮想カメラ中央へ収めるようにオートロック時の旋回速度でカメラを回転(旋回)させて追尾し、移動体オブジェクト310が第2のエリア340に入った時点でカメラの回転(旋回)を中止してもよい。
【0125】
図5(C)に示すように、追尾中に、移動体オブジェクト310のルック基準点312ユニットが画面外に出てしまった場合、追尾を解除し、対象LOST扱いにする。
【0126】
オートルック制御中や追尾制御中に仮想カメラの旋回限界にきた場合、カメラの旋回限界に従い旋回しないようにする。例えば図6に示すように、オートルック対象となる移動体オブジェクト310を追尾中に、仮想カメラ360の向きが旋回可能範囲350の旋回限界352に来た場合には、たとえ前記移動体オブジェクト310を第2の判定ラインで囲まれた第2のエリア340内にとらえることができなくても、旋回動作を中止させる。
【0127】
(5)オートルック条件とオートルック対象候補の選出
オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選出し、選出されたオートルック対象候補から、オートルック対象を決定してもよい。以下オートルック条件とオートルック候補の選出手法について説明する。
【0128】
例えば所定時間毎に移動体オブジェクトがオートルック条件を満たすか否か判断し、オートルック条件を満たす移動体オブジェクトに、ルック有効時間を設定するようにしてもよい。この様にするとルック有効時間が設定されているか否かでオートルック条件を満たしているかいなか判断することができる。従って、ルック有効時間がセットされている移動体オブジェクトの中からオートルック対象を決定することができる。この様にするとオートルック条件判断のタイミングとオートルック対象決定のタイミングが異なってもよいので、処理負荷を分散させることができる。
【0129】
ルック有効時間は、移動体オブジェクト毎に設定されるようにしてもよい。オートルック条件は、例えば以下のような条件でもよい。
【0130】
例えばオンライン対戦では、味方の移動体オブジェクトはオートルックの対象外にしてもよい。すなわち移動体オブジェクトの属性が味方でないことをオートルック条件としてもよい。そして移動体オブジェクトの属性が味方である場合にはオートルック条件を満たさないとして、ルック有効時間をセットしない、又は数値0をセットしてもよい。
【0131】
またプレーヤの視界範囲内に存在する移動体オブジェクト以外はオートルックの対象外にしてもよい。例えば所定時間毎に、プレーヤの視界範囲内に存在する移動体オブジェクトについて、ルック有効時間がセットされていない移動体オブジェクトについては、移動体オブジェクトと仮想カメラ360の間にレイを飛ばして、その移動体オブジェクトが見えているかの判定をし(レイ判定)、見えているオブジェクトにルック有効時間を設定する処理を行ってもよい。すでにルック有効時間がセットされている移動体オブジェクトやプレーヤの視界範囲外の移動体オブジェクトについてはレイ判定は行わない。
【0132】
図7は、移動体オブジェクトに対するレイチェックについて説明するための図である。
【0133】
移動体オブジェクトの代表点が1つの場合には1つの代表点に対して仮想カメラからレイをとばし、レイ上に障害物がなければ、見えていると判断する。
【0134】
移動体オブジェクトの代表点が複数ある場合、例えば図7に示すように有効フラグを有する代表点312−4,312−14、312−15が複数ある場合、複数の代表点に対してレイ370−4,370−14、370−15を飛ばして、レイチェックを行う。
【0135】
レイチェックでレイが貫通する障害物があれば、その代表点は見えないと判断する。移動体オブジェクトに複数の代表点がある場合は、すべての代表点が見える場合にルック有効時間をセットしてもよいし、一つでも見える代表点があればルック有効時間をセットしてもよいし、見える代表点が所定割合以上あればルック有効時間をセットしてもよい。
【0136】
図8は仮想カメラの視界範囲と移動体オブジェクトの位置関係を示す図である。
【0137】
プレーヤの視界範囲とは可能カメラ360の視界範囲370と考えてよいので、仮想空間内に存在する移動体オブジェクト390、392,394,396をその位置情報に基づき可能カメラ360の視界範囲370にあるか否か判断する。ここでは、移動体オブジェクト390,392は可能カメラ360の視界範囲370にあるので、ルック有効時間がセットされ、移動体オブジェクト394,396は可能カメラ360の視界範囲370外なので、ルック有効時間がセットされない、又は数値0がセットされる。
【0138】
図9(A)は、移動体オブジェクト398がプレーヤキャラクタ300に攻撃を行う様子を示す図であり、図9(B)は、移動体オブジェクト398がプレーヤキャラクタ300にダメージを与える様子を示す図である。
【0139】
オンラインゲームの場合には、図9(A)に示すように、プレーヤキャラクタ300を攻撃対象として攻撃を行った移動体オブジェクト398をオートルックの対象候補としてもよい。従ってプレーヤキャラクタ300を攻撃対象として攻撃を行った移動体オブジェクト398にルック有効時間がセットされていない場合、攻撃時にルック有効時間をセットしてもよい。この条件に関しては、攻撃がヒットしたしないに関わらずルック有効時間をセットしてもよい。またこの条件に関しては、レイチェックは行わないでもよい。
【0140】
また図9(B)に示すように、プレーヤキャラクタ300にダメージを与えた移動体オブジェクト398にレイが通ればオートルックの対象候補としてもよい。従ってプレーヤキャラクタ300にダメージを与えた移動体オブジェクト398にルック有効時間がセットされていない場合、レイチェックを行い、レイが通ればルック有効時間をセットしてもよい。
【0141】
ルック有効時間のセットは有効フラグがセットされている代表点に対して行うものであるから、そもそもオートルックの対象外である場合には当該移動体オブジェクトの代表点に無効フラグをセットしておいてもよい。
【0142】
セットされたルック有効時間は、以下の条件で時間の制御を行うようにしてもよい。図10(A)に示すように、仮想カメラ360の視界範囲370外にいる移動体オブジェクト404、406については、セットされているルック有効時間をカウントダウン(デクリメント)する。
【0143】
また視界範囲内の移動体オブジェクトについても、レイが通らないものについてはカウントダウンしてもよい。例えば図10(B)に示すように、仮想カメラ360の視界範囲370内にいる移動体オブジェクト412、414に対して、それぞれレイ422、424を飛ばしてレイチェックを行う。そして移動体オブジェクト414のように障害物430がありレイ424が通らないものについてもセットされているルック有効時間をカウントダウン(デクリメント)する。
【0144】
また仮想カメラ360の視界範囲370でレイが通っているユニットのルック有効時間が所定の値(例えば見えている場合の最低値として予定している値)以下になっていた場合には所定の値に再設定する。
【0145】
またオートルックモード発動開始時、オートルック対象のルック有効時間のタイマーが所定の値(例えばルック時の最低値)以下であった場合には、所定の値(例えばルック時の最低値)に再設定する。この様にするとオートルックモード発動開始したときに、障害物に隠れてすぐに有効時間が0になるのを防止することができる。
【0146】
またプレーヤキャラクタが攻撃対象になって発砲されたり、ダメージを受けた時、それを行った移動体オブジェクトに対して、ルック有効時間を所定の値(例えば攻撃時にセットするタイマー値)をセットしなおしてもよい。
【0147】
移動体オブジェクト死亡時には、その移動体オブジェクトに対して設定されたルック有効時間をリセットしてもよい(数値0を設定する)。
【0148】
(6)オートルック対象の決定
オートルック対象の決定は、オートルックボタンが押されていない間(オートルックモードが発動されていない間)も定期的に随時行い、オートルック対象の移動体オブジェクトの識別ID等をオートルック対象情報として記憶しておく。
【0149】
図20はオートルックモードの処理の流れ示すフローチャートである。
【0150】
オートルックモード移行入力があると以下の処理を行う(ステップS10)。
【0151】
キャンセルイベントが発生すれば処理を終了する(ステップS20でYの場合)。
【0152】
オートルック対象情報がセットされている場合には(ステップS30)、オートルック対象情報に設定されている移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラを旋回させる(ステップS40)。
【0153】
キャンセルイベントが発生すれば処理を終了する(ステップS50)
オートルック対象情報に設定されている移動体オブジェクトのルック基準点が第2の範囲外になった場合(ステップS60)、オートルック対象情報に設定されている移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラを旋回させる制御を行い(ステップS70)、ステップS50に戻って再び移行のステップを実行する。
【0154】
図21は、オートルックの対象を決定する処理の流れを示すフローチャートである。
【0155】
まず移動体オブジェクトのルック有効時間のチェックを行い、ルック有効時間が0の(又はセットされていない)移動体オブジェクトをオートルック対象候補から除外する(ステップS110)。例えば図11に示すように、移動体オブジェクト610,620、630のルック有効時間が、それぞれ5sec(612参照)、0sec(622参照)、3sec(624参照)である場合、ルック有効時間が0secである移動体オブジェクト620(622参照)をオートルック対象候補から除外する。なおオートルック対象候補は、初期設定としてプレーヤキャラクタを除くすべての移動体オブジェクトを設定しておいてもよい。
【0156】
次に代表点(関節)の有効状況をチェックし、有効な代表点(関節)が1つもない移動体オブジェクトをオートルック対象候補から除外する(ステップS120)。例えば図12に示すように、移動体オブジェクト640は有効な代表点(関節)が1つもなく、移動体オブジェクト650は有効な代表点(関節)が1つ(652)、移動体オブジェクト660は有効な代表点が3つ(662,664,666)ある場合には、有効な代表(関節)が1つもない移動体オブジェクト640をオートルック候補から除外する。
【0157】
次にプレーヤキャラクタからの距離をチェックして、プレーヤキャラクタから一定距離(ルック有効距離と呼ぶ)より離れた移動体オブジェクトをオートルック対象候補から除外する(ステップS130)。図13は、ルック有効距離について説明するための図である。ルック有効距離はプレーヤキャラクタ670からの距離であり、例えばルック有効距離がr1とするとプレーヤキャラクタの位置から半径r1のエリアをルック有効エリア680として、そのルック有効エリア680内に入っていない(位置座表がない)移動体オブジェクトはオートルック対象候補から除外する。例えば移動体オブジェクト720、730はルック有効エリア680内に入っていない(位置座表がない)ので、オートルック対象候補から除外する。
【0158】
なおこのルック有効距離は、プレーヤキャラクタのアイテム、属性等により変化させてもよい。例えば、プレーヤの使用中の武器が通常のピストルである場合とライフルである場合には、射程距離が長いライフルの場合のほうがピストルの場合に比べてルック有効距離が長くなるようにしてもよい。例えばピストルの場合のルック有効距離がr1の場合、ライフルの場合のルック有効距離r2(r2>r1)としてもよい。この場合、例えば移動体オブジェクト730はルック有効エリア680内に入っていない(位置座表がない)ので、オートルック対象候補から除外されることになる。
【0159】
上記除外処理によりオートルック対象候補が存在しない場合には(ステップS140でNの場合)、対象なしで処理を終了する。
【0160】
オートルック対象候補の移動体オブジェクトが存在する場合(ステップS140でYの場合)には、視野範囲内にオートルック対象候補の移動体オブジェクトが存在するか否か判断する(ステップS150)。存在する場合には照準位置に最も近いオートルック対象候補の移動体オブジェクトを検索して、オートルック対象として設定する(ステップS160)。図14(A)(B)(C)は、照準位置に最も近い移動体オブジェクトを検索する処理について説明するための図である。オートルック対象候補の移動体オブジェクトの中から、視野範囲内にいる移動体オブジェクトに対して検索を行う。視野範囲内にいるかどうかは、各移動体オブジェクト820、830、840,850のルック基準点822、832、842、852が画面外判定ライン230より内側にあるか否かで判定する。3次元的な位置関係で判断してもよいし、スクリーン座標系へ投影変換後の2次元的な位置関係に基づき判断してもよい。
【0161】
図14(A)では移動体オブジェクト820、830、840のルック基準点822、832、842が画面外判定ライン230より内側にあるので、移動体オブジェクト820、830、840は視野範囲内にいると判断する。
【0162】
そして照準位置が仮想空間内の位置座標で与えられる場合には、図14(B)に示すように、仮想空間(3次元空間)内における各移動体オブジェクト820、830、840のルック基準点822、832、842と照準の中心位置810との距離824、834、844を測り、この距離が最も近い移動体オブジェクトをオートルック対象とする。ここでは移動体オブジェクト820のルック基準点822と照準位置810の距離824が最も短いので、移動体オブジェクト820がオートルック対象となっている。
【0163】
図18(A)は照準位置の求め方を説明するための図である。照準位置810は、照準方向860と、銃口の位置(仮想カメラの位置又はプレーヤキャラクタの位置)850、飛距離Lにより求めることができる。
【0164】
図18(B)は照準方向860が与えられている場合のオートルック対象の選び方について説明するための図である。照準方向860が与えられている場合には、仮想空間(3次元空間)内における各移動体オブジェクト820、830、840のルック基準点822、832、842と仮想カメラ(プレーヤキャラクタ)850を結ぶ方向824、834、844と照準方向860とのなす角度θ1、θ2、θ3を測り、この角度が最も小さい(鋭角な)移動体オブジェクトをオートルック対象とする。ここでは移動体オブジェクト820のルック基準点822と仮想カメラ(プレーヤキャラクタ)850を結ぶ方向824と照準方向との那須角度θ1が最も鋭角であるので移動体オブジェクト820がオートルック対象となっている。
【0165】
ステップS150で視野範囲内にオートルック対象候補が存在しない場合にはプレーヤキャラクタに最も近いオートルック対象候補の移動体オブジェクトを検索して、オートルック対象として設定する(ステップS170)。図15に示すようにプレーヤキャラクタの視野範囲内750に移動体オブジェクトが存在しない場合には、視野範囲外に存在する移動体オブジェクト770、780,790とプレーヤキャラクタ670との距離l1,l2,l3を比較し、l1<l2<l3なので、プレーヤキャラクタに最も近い移動体オブジェクト770をオートルック対象として設定する。
【0166】
(7)オートルック対象へのマーカー表示
図16は、オートルック対象となる移動体オブジェクトに対するマーカー表示例を示す図である。本実施の形態では、オートルック対象となる移動体オブジェクト820には、2Dでマーカー表示890を行う。2Dのマーカーは、マーカーの中心が、ルック基準点822になるように表示してもよい。
【0167】
なおオートルック対象へのマーカー表示は、オートルックモードを発動していないときに表示することが好ましい。そしてオートルックモード中は表示を消し、オートルックモードを解除した場合は、画面外に出現させてから対象に移動するようにしてもよい。オートルック対象が変わった場合は、マーカーはそちらへ移動する。
【0168】
図17は、オートルック対象切り替え時のマーカー移動について説明するための図である。オートルック対象が変わった場合は、マーカーはそちらへ移動するように動かす。すなわち、オートルック対象が移動体オブジェクト820から移動体オブジェクト830に切り替わった場合にはマーカー画像890も併せて瞬時に切り替わるのではなく、移動体オブジェクト820から移動体オブジェクト830に移動する表示制御が行われる。
【0169】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0170】
例えば上記実施の形態は、複数のプレーヤが参加するマルチプレーヤゲームとして構成することができる。マルチプレーヤゲームは、ネットワークで接続された他のゲーム装置又はサーバと接続されたゲーム装置で実行され、他のゲーム装置又はサーバとゲームデータのやりとりを行うようにして実現してもよい。
【0171】
この様なマルチプレーヤゲームの場合、所与のプレーヤのプレーヤキャラクタが、他のプレーヤのプレーヤキャラクタのオートルック対象となった場合に、その旨を通知するための警告メッセージや警告表示を行うようにしてもよい。例えばオートルック対象である所与のプレーヤキャラクタに対応するプレーヤのゲーム画面に「ねらわれています」等の警告メッセージの表示を行うようにしてもよい。
【0172】
上記実施の形態では、ゲーム装置が撮影装置である場合を例にとり説明したがこれに限られない。例えばゲーム装置は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム等のいずれのタイプでも構成可能であり、ゲームの種類もシューティングゲームやレースゲームやロールプレイングゲームやパズルゲーム等の種々のゲームシステムに適用できる。
【符号の説明】
【0173】
100 処理部、110 オブジェクト空間設定部、111 仮想カメラ配置制御部、
112 オートルック対象設定部、113 演算処理部、113−1 指示位置又は指示方向演算部、113−2 ダメージ演算部、113−3 有効時間演算部、114 移動・動作処理部、115 ゲーム演算部、116 表示制御部、120 画像生成部、130 音処理部、160 入力部、162 検出部、180 情報記憶媒体、190 表示部、170 記憶部、172 主記憶部、192 音出力部、196 通信部
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、及び、画像生成装置に関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成装置(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
例えば、プレーヤが入力部を用いて、オブジェクト空間(3次元空間)において、弾を発射させて敵キャラクタを射撃するシューティングゲームの画像を生成する画像生成装置が存在する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許3538285
【発明の概要】
【発明が解決しようとする課題】
【0005】
このような画像生成装置では、プレーヤの入力操作に基づいてプレーヤキャラクタをゲーム空間内で自由に移動させることをできるものがあり、人気が高い。
【0006】
かかる画像生成装置においては、プレーヤの入力に基づいてプレーヤキャラクタの位置や向きとともに仮想カメラの位置や向き等も変化するため、プレーヤの移動中に標的とする敵キャラクタを画面内に捕らえることが難しいという問題があった。
【0007】
本発明は、以上のような課題を解決するためになされたものである。本発明のいくつかの態様によれば、入力情報により仮想空間でプレーヤキャラクタの自由移動が可能なゲームの画像を生成する画像生成装置において、注目対象となる移動体オブジェクトを画面内にとらえやすいサポート機能を提供することができる。
【課題を解決するための手段】
【0008】
(1)本発明は、
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転(旋回)させるルック回転(旋回)制御を行うことを特徴とする。
【0009】
本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部として、コンピュータを機能させるプログラムを記憶した情報記憶媒体、上記各部を含む画像生成装置に関係する。
【0010】
移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラの向きを回転(旋回)させてもよい。なおルック範囲の位置は、生成された画像の固定位置でもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化する位置でもよい。またルック範囲の大きさは、固定でもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化してもよい。またルック範囲の数は、生成された画像に対して1つ設定されてもよいし、複数設定されてもよいし、外部からの設定や内部のパラメータによって、又はランダムに変化させてもよい。
【0011】
ルック回転(旋回)制御は、プレーヤによるオートルック発動指示入力を受け付けた場合に行うようにしてもよい。オートルック対象が設定されていても、プレーヤによるオートルック発動指示入力があるまでは、ルック回転(旋回)制御を行わない構成も本発明の範囲内である。
【0012】
仮想カメラの位置はオートルック対象の設定の有無に関わらず、入力情報に基づき演算してもよい。入力情報によって移動するプレーヤキャラクタが存在する場合には、仮想カメラをプレーヤキャラクタに追従させるようにしてもよい。また 仮想カメラの位置が固定されていて、入力情報に基づき仮想カメラの向きだけを変化させる画像生成装置にも適用可能である。
【0013】
本発明はプレーヤキャラクタが存在するが1人称視点の画像が生成される場合(FPSの場合)プレーヤキャラクタが存在し3人称視点の画像が生成される場合(TPSの場合)のいずれの場合にも適用可能である。またプレーヤキャラクタは、入力情報によって仮想空間内を自由に移動する制御が行われる構成でもよい。仮想カメラはプレーヤキャラクタに追従して移動する構成でもよく、この場合プレーヤキャラクタを移動させるための入力情報に基づき仮想カメラの移動や配置制御が行われる。
【0014】
本発明によれば、入力情報により仮想空間でプレーヤキャラクタの自由移動が可能なゲームの画像を生成する画像生成装置において、注目対象となる移動体オブジェクトを画面内にとらえやすいサポート機能を提供することができる。
【0015】
(2)このプログラム、情報記憶媒体、画像生成装置は、
指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算する指示位置又は指示方向演算部をさらに含み、
前記オートルック対象設定部は、
移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定してもよい。
【0016】
(3)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定してもよい。
【0017】
オートルック条件として複数の条件を設定し、すべての条件を満たした場合にオートルック条件を満たすと判定する場合でもよいし、複数の条件の1つでも満たした場合にオートルック条件を満たすと判定する場合でもよい。
【0018】
例えばオートルック条件として、プレーヤキャラクタが攻撃を行ってヒットした敵キャラクタの移動体オブジェクトであることを条件としてもよい。この様にするとプレーヤキャラクタが一度弾を当てた敵キャラクタはオートルック対象となるので、弾を複数発当てなければ倒せないという設定の場合に、最初の一発を当てることが出来れば、2発目以降はより当て易くすることが出来るようになる。
【0019】
(4)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないでもよい。
【0020】
プレーヤの入力によってオートルックモードになり、プレーヤのオートルック解除入力によりオートルックモードが解除される場合には、プレーヤのオートルック解除入力はキャンセルイベントとなる。オートルックモードが発動されていない場合にはオートルックモードを変更できるようにし、オートルックモードが発動されている場合には、キャンセルイベントが発生するまでは、オートルック対象を変更しないようにしてもよい。
【0021】
また例えばオートルック対象の移動体オブジェクトがライフ0になった場合や消滅した場合、画面外(FPSの場合にはプレーヤキャラクタの視野外、TPSの場合には表示範囲外でもよい)になった場合等もキャンセルイベントとしてもよい。
【0022】
このようにするとオートルック対象が煩雑に切り替えられることにより生じる仮想カメラの回転(旋回)を減らすことができるので、オートルック中も見やすい画像を提供することができる。
【0023】
(5)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断してもよい。
【0024】
仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分は、例えば直線でもよいし、所与の起動を描く曲線(弾道曲線や弓なりの曲線や放物線等)でもよい。この様にすると見えているオブジェクトを優先的にオートルック対象とすることができる。
【0025】
(6)このプログラム、情報記憶媒体、画像生成装置は、
移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする有効時間演算部をさらに含み、
前記オートルック対象設定部は、
有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断してもよい。
【0026】
例えば所定の条件を満たす移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定してもよい。例えば移動体オブジェクトが敵か味方かのいずれかの属性情報を有する場合、敵属性を有することを所定の条件としてもよい。
【0027】
(7)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断してもよい。
【0028】
(8)このプログラム、情報記憶媒体、画像生成装置は、
前記オートルック対象設定部は、
プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させてもよい。
【0029】
(9)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させる追尾制御を行ってもよい。
【0030】
(10)このプログラム、情報記憶媒体、画像生成装置は、
移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定するフラグ設定部をさらに含み、
前記オートルック対象設定部は、
有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。
【0031】
(11)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させてもよい。
【0032】
(12)このプログラム、情報記憶媒体、画像生成装置は、
前記仮想カメラ配置制御部は、
所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転(旋回)制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御してもよい。
【0033】
所与のイベントとはプレーヤからのオートルックモード移行指示入力でもよい。
【0034】
(13)このプログラム、情報記憶媒体、画像生成装置は、
オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行う表示制御部とを、さらに含んでもよい。
【0035】
通常モードからオートルックモードに移行すると、特別表示を中止してもよい。特別表示とはプレーヤキャラクタの側にマーカー等のマーク画像表示を行うことでもよいし、プレーヤキャラクタ自体の輝度や色を特別状態にしたり、ブリンク表示したりすることでもよい。
【0036】
また特別表示として通常状態でマーカー画像を表示している場合には、オートルックモードに移行した場合には、マーカー画像を表示はしているが、目立ないように(プレーヤキャラクタ自体の表示の邪魔にならないように)変化させてもよい。
【0037】
(14)このプログラム、情報記憶媒体、画像生成装置は、
入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部をさらに含み、
前記プレーヤキャラクタ移動制御部は、
オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御してもよい。
【0038】
オートルック中は、仮想カメラは、敵キャラクタをそのカメラの画角内に収めるように追尾しているが、本願ではプレーヤキャラクタはプレーヤが自由に移動させることが可能となっている。そのため、プレーヤがプレーヤキャラクタをまっすぐに移動させる操作を行うと、オートルック対象が設定されていない場合には、プレーヤキャラクタの向いている方向まっすぐな方向として移動させ、オートルック中はプレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向をまっすぐな方向として、オートルック対象キャラクタの位置に向かうように移動させる。
【0039】
(15)このプログラム、情報記憶媒体、画像生成装置は、
攻撃情報に基づきプレーヤキャラクタにダメージを与えるダメージを演算するダメージ演算部をさらに含み、
前記ダメージ演算部は、
オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行ってもよい。
【0040】
例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べてプレーヤキャラクタが攻撃を受けた場合のダメージ量を減らす処理を行ってもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて敵キャラクタが受けるダメージ量を減らす処理を行ってもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べてプレーヤキャラクタの攻撃能力や防御能力に関するパラメータをアップさせてもよいし、その逆でもよい。また例えばオートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて敵キャラクタの攻撃能力や防御能力に関するパラメータをアップさせてもよいし、その逆でもよい。
【0041】
この様に、オートルック対象が設定されている場合には、オートルック対象が設定されていない場合に比べて、プレーヤキャラクタに有利にパラメータを設定してもよいし、プレーヤキャラクタに不利にパラメータを設定してもよい。
【図面の簡単な説明】
【0042】
【図1】本実施形態の画像生成装置の機能ブロック図の例。
【図2】図2(A)(B)は、オートルックを行うにあたっての画面範囲の設定について説明するための図。
【図3】移動体オブジェクトの代表点への有効/無効フラグの設定について説明するための図。
【図4】オートルック対象の移動体オブジェクトに対する仮想カメラの回転(旋回)動作について説明するための図。
【図5】図5(A)(B)(C)は追尾中の仮想カメラの動作について説明するための図。
【図6】オートルック中の仮想カメラの回転(旋回)動作について説明するための図。
【図7】移動体オブジェクトに対するレイチェックについて説明するための図。
【図8】仮想カメラの視界範囲と移動体オブジェクトの位置関係を示す図。
【図9】図9(A)(B)は、オートルック条件について説明するための図。
【図10】図10(A)(B)は、オートルック条件について説明するための図。
【図11】オートルック対象候補の除外条件について説明するための図。
【図12】オートルック対象候補の除外条件について説明するための図。
【図13】オートルック対象候補の除外条件について説明するための図。
【図14】図14(A)(B)(C)は、照準位置に最も近い移動体オブジェクトを検索する処理について説明するための図。
【図15】視野範囲内にオートルック対象候補が存在しない場合のオートルック対象の設定について説明するための図。
【図16】オートルック対象となる移動体オブジェクトに対するマーカー表示例。
【図17】オートルック対象切り替え時のマーカー移動について説明するための図。
【図18】図18(A)は照準位置の求め方を説明するための図、図18(B)は照準方向が与えられている場合のオートルック対象の選び方について説明するための図。
【図19】移動体オブジェクトに関連づけて設定されている各種情報の一例について説明するための図。
【図20】図20はオートルックモードの処理の流れ示すフローチャート。
【図21】オートルックの対象を決定する処理の流れを示すフローチャート。
【図22】マルチプレーヤモードのプレイ例を示す図。
【発明を実施するための形態】
【0043】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0044】
1.構成
図1に本実施形態の画像生成装置(コンピュータ、端末、ゲーム装置)の機能ブロック図の例を示す。なお本実施形態の画像生成装置は図1の構成要素(各部)の一部を省略した構成としてもよい。
【0045】
入力部160は、プレーヤからの入力情報を入力するための機器であり、プレーヤの入力情報を処理部に出力する。本実施形態の入力部160は、プレーヤの入力情報(入力信号)を検出する検出部162を備える。入力部160は、例えば、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイなどがある。
【0046】
また、入力部160は、3軸の加速度を検出する加速度センサや、角速度を検出するジャイロセンサ、撮像部を備えた入力機器でもよい。例えば、入力機器は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力機器には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力機器には、入力機器と一体化されている画像生成装置、携帯型画像生成装置、携帯電話なども含まれる。
【0047】
検出部162は、入力部160からの入力情報を検出する処理を行う。例えば、検出部162は、入力部160の引き金(トリガ)が引かれることによって発生する入力信号を、入力情報(攻撃入力情報)として検出する。例えば、検出部162は、入力部160から照準(ガンサイト)の位置を指示する入力情報(指示入力情報)を検出する。
【0048】
例えば、入力部160が、液晶ディスプレイと、プレーヤの接触位置を検出するためのタッチパネルとが積層されたタッチパネル型ディスプレイである場合には、タッチペンなどの指示入力機器や指先の接触位置情報を入力情報として検出する。
【0049】
また、入力部160が撮像部を備える入力機器である場合には、撮像画像におおける指示位置情報を入力情報として検出する。より具体的に説明すると、撮像部は、赤外線フィルタ、レンズ、撮像素子(イメージセンサ)、画像処理回路を含む。ここで、赤外線フィルタは、入力機器の前方に配置され、表示部190に関連付けられて配置されている光源(2つの光源)から入射する光から赤外線のみを通過させる。また、レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。また、撮像素子は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。そして、撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像部を備える入力機器は、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(指示位置情報)を入力情報として検出する。
【0050】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM、VRAMなどにより実現できる。
【0051】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0052】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0053】
通信部196は外部(例えば他の画像生成装置)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0054】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成装置を機能させる場合も本発明の範囲内に含む。
【0055】
処理部100(プロセッサ)は、入力部160からの入力情報やプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。
【0056】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、GPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0057】
処理部100は、オブジェクト空間設定部110、仮想カメラ配置制御部111、オートルック対象設定部112、演算処理部113(指示位置又は指示方向演算部113−1、ダメージ演算部113−2、有効時間演算部113−3を含む)、移動・動作処理部114、ゲーム演算部115、表示制御部116、フラグ設定部118、画像生成部(描画部)120、音処理部130を含む。なおこれらの一部を省略する構成としてもよい。
【0058】
オブジェクト空間設定部110は、キャラクタ(敵オブジェクト)の他に、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を、オブジェクト空間に配置設定する処理を行う。
【0059】
ここでオブジェクト空間とは、仮想的なゲーム空間であり、2次元空間、3次元空間の両方を含む。2次元空間とは、例えば2次元座標(X,Y)においてオブジェクトが配置される空間であり、3次元空間とは、例えば3次元座標(X,Y,Z)においてオブジェクトが配置される空間である。
【0060】
例えば、オブジェクト空間設定部110は、オブジェクト空間を3次元空間とした場合には、ワールド座標系にオブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)を配置する。また、例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0061】
仮想カメラ配置制御部111は、仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行うもので、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行う。
【0062】
オートルック対象設定部112は、仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定する。
【0063】
指示位置又は指示方向演算部113−1は、指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算し、オートルック対象設定部112は、移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定してもよい。
【0064】
またオートルック対象設定部112は、仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定してもよい。
【0065】
またオートルック対象設定部112は、いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないようにしてもよい。
【0066】
またオートルック対象設定部112は、前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断してもよい。
【0067】
有効時間演算部113−3は、移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする処理を行い、オートルック対象設定部112は、有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断してもよい。
【0068】
またオートルック対象設定部112は、プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断してもよい。
【0069】
またオートルック対象設定部112は、プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させてもよい。
【0070】
また仮想カメラ配置制御部111は、オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させる追尾制御を行ってもよい。
【0071】
またフラグ設定部118は、移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定する処理を行い、オートルック対象設定部は、有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。
【0072】
また仮想カメラ配置制御部111は、オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させてもよい。
【0073】
また仮想カメラ配置制御部111は、所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御してもよい。
【0074】
表示制御部116は、オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行うようにしてもよい。
【0075】
ダメージ演算部113−2は、オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行う。
【0076】
移動・動作処理部114は、オブジェクト空間において、オブジェクトを移動・動作させる処理を行う。すなわち入力部160から入力された入力情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、移動速度、加速度、移動量、移動方向などの移動パラメータ)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(例えば、1/60秒)毎に順次求める処理を行う。なおフレームは、オブジェクトの移動・動作処理や画像生成処理を行う時間の単位である。
【0077】
移動・動作処理部114は、入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部として機能し、オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御してもよい。
【0078】
ゲーム演算部115は、種々のゲーム処理を行う。例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、最終ステージをクリアした場合にはエンディングを進行させる処理などがある。
【0079】
また、ゲーム演算部115は、プレーヤキャラクタの所与のパラメータ(体力値)が所定値(0)に達したか否かを判断する処理を行い、プレーヤキャラクタの所与のパラメータ(体力値)が所定値(0)に達した場合に、ゲーム終了と判定する処理を行う。
【0080】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。画像生成部120が生成する画像は、いわゆる2次元画像であってもよいし、いわゆる3次元画像であってもよい。
【0081】
2次元画像を生成する場合には、例えば、オブジェクト(スプライト)毎に優先度を設定し、設定された優先度が低いオブジェクトから順に描画する。オブジェクト同士が重なる場合には、優先度が低いオブジェクトの上に、優先度の高いオブジェクトを描画する。
【0082】
いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値
等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0083】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、透視変換(投影変換)、ビューポート変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。
【0084】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、ピクセルデータ、ボクセルデータなどの画素データ(色(RGB)、α値、Z値、輝度等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を生成することができる。
【0085】
仮想カメラ配置制御部111は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、3次元の画像を生成する場合には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。また、仮想カメラ制御部110は、仮想カメラを、予め決められた回転角度で回転させてもよい。この場合には、仮想カメラの位置又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0086】
本実施形態では、プレーヤキャラクタの視点(一人称視点)に基づいて画像を生成するFPS(First Person Shooting)でもよいし、画面に主人公が登場して、これをユーザが操作するタイプのTPS(Third Person Shooting)でもよい。また、本実施形態では、仮想カメラの移動、向き、画角はプログラム又は入力部160の入力情報に基づいて仮想カメラの移動、向き、画角を制御される。
【0087】
例えば仮想カメラによりオブジェクト(例えば、プレーヤキャラクタ)を後方から撮影する場合には、オブジェクトの位置、向きの変化に仮想カメラが追従するように、仮想カメラの位置、仮想カメラの向きを制御する。この場合には、移動・動作処理部114で得られたオブジェクトの位置、向き又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた向きに設定したり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は向きを特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0088】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0089】
そして画像生成部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0090】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、記憶部170に保存される。
【0091】
テクスチャマッピングは、記憶部170に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0092】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0093】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。 なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0094】
音処理部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0095】
なお、本実施形態の画像生成装置は、1人のプレーヤのみがプレイできるシングルプレーヤモード用の装置にしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードを備える装置にしてもよい。
【0096】
例えば、図22に示すように、マルチプレーヤモードの場合には、プレーヤそれぞれの入力部160−1、160−2を用意し、各入力部160−1、160−2が指示する照準位置に基づいて敵キャラクタ等のヒット処理を行う。また、本実施形態では、マルチプレーヤモードの場合には、複数のプレーヤに提供するデータ、表示出力用画像、演算処理用画像、ゲーム音を、1つの画像生成装置を用いて生成している。なお、画像生成装置が他の画像生成装置とネットワークを介して入力情報などのデータを送受信し、受信したデータと入力部160からの入力情報とに基づいて、画像生成処理を行うようにしてもよい。
【0097】
2.本実施の形態の手法
(1)オートルックモード
オートルック機能はプレーヤのターゲッティングの補助を行うことを目的とした機能である。オートルック条件を満たす移動体オブジェクト(例えばプレーヤが認識している敵オブジェクト)を選択し、その移動体オブジェクトのルック基準点が画面中央に来るように仮想カメラをルックさせ、追尾する。
【0098】
入力部に設けられたオートルックボタンを押すとオートルックモードが発動し、離すとオートルックモードは終了する。ここではオートルックモード以外の状態を通常モードと呼ぶ。オートルックボタンを押し続けることにより、オートルックモードを継続することができる。
【0099】
本実施の形態では、通常モードにおいてはプレーヤの入力操作による仮想カメラの旋回操作ができるようにし、オートルックモードにおいてはプレーヤの入力によるカメラ旋回操作はできないようにしてもよい。
【0100】
(2)画面範囲の設定
図2(A)(B)は、オートルックを行うにあたっての画面範囲の設定について説明するための図である。
【0101】
図2(A)は、描画領域(画面と考えてもよい)240に対する第1の判定ライン210、第2の判定ライン220、画面外判定ライン230を示している。第1の判定ライン310は、オートルックを発動させた場合に、オートルック対象の移動体オブジェクトのルック基準点(移動体オブジェクトの位置や移動体オブジェクトの代表点の位置)がこの範囲内に入るまでカメラを自動で追従させるための境界線である。本実施の形態では、オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定されたルック範囲に入るまで、仮想カメラを回転(旋回)させるルック回転(旋回)制御を行う。すなわち生成される画像は描画領域240に描画され、ルック範囲がこの第1の判定ライン210で囲まれたエリアである。
【0102】
また第2の判定ライン220は、オートルックモードにおいてルック回転(旋回)制御が行われた後に追尾のためのカメラの回転(旋回)を始める境界線であり、移動体オブジェクトのルック基準点がこれより外に出ると追尾のためのカメラの回転(旋回)が行われる。本実施の形態では、オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転(旋回)させる追尾制御を行う。
【0103】
画面外判定ライン230は、これより外は画面外と判定する境界線である。各範囲については長方形の上、下、左、右の各ボーダーラインを設定できる。
【0104】
図2(B)の250−1と250−2は第1の画角との画像と第2の画角の画像(画角の異なる画像)を示している。本実施の形態では第1の画角において上記各ラインで設定される範囲210−1,220−1、230−1と、 第2の画角において上記各ラインで設定される範囲210−2,220−2、230−2とは、描画領域(画面と考えてもよい)240に対して同じ範囲を保っている。
【0105】
(3)各移動体オブジェクトの設定
図19は、本実施の形態の移動体オブジェクトに関連づけて設定されている各種情報の一例について説明するための図である。なおここでは、本実施の形態の処理に関連のある情報について説明している。
【0106】
本実施の形態では、各移動体オブジェクトの属性情報(普遍的に設定されている属性でもよいし、ゲーム状況に応じて変化する属性でもよい)520や、パラメータ(位置情報530や回転情報540やルック有効時間550や代表点の有効/無効フラグ560等)を各移動体オブジェクトの識別IDであるオブジェクトID510に関連づけて記憶している。属性情報520は、例えば性別、種類、敵味方等の各移動体オブジェクトの属性に関する情報であり、普遍的に設定されている属性でもよいし、ゲーム状況に応じて変化する属性でもよい。位置情報530は、移動体オブジェクトの仮想空間における位置座標(x1、y1,z1)である。回転情報540は、移動体オブジェクトの向きを3軸方向の回転で表したものである。ルック有効時間550は、オートルック対象候補であると判断された移動体オブジェクトに設定される有効時間であり、有効時間が0(設定されていない場合を含む)であると、オートルック対象候補にならないことを示している。代表点の有効/無効フラグ560は、移動体オブジェクトの代表点に対応づけて設定された有効/無効を示すフラグであり、オートルック対象候補にするかしないかを判断するために使用されるフラグ情報である。移動体オブジェクトは少なくとも1つの代表点を有している。有効/無効フラグは代表点毎に有しているため、移動体オブジェクトOB1のように代表点が1つのものは有効/無効フラグは1つ有しており、移動体オブジェクトOB2のように複数の代表点を持つものは有効/無効フラグも複数有している。代表点が複数ある場合には構造体の配列構造でデータを持たせるようにしてもよい。すなわち予め代表点の配列を定めておき、その配列に応じた配列で有効/無効フラグを格納すればよい。代表点として移動体オブジェクトの関節点を用いてもよい。
【0107】
本実施の形態ではオートルックを行うにあたって、移動体オブジェクトの複数の代表点(例えば関節)を基準点とし、ONになっている関節に対してオートルックを行うようにしてもよい。
【0108】
例えば図3(A)に示すように移動体オブジェクト310に対して、複数の代表点312−1〜312−15を設定し、各代表点に対応させて、有効/無効フラグを設定してもよい。有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断してもよい。またオートルック対象の移動体オブジェクトの有効フラグの設定されている代表点のスクリーン座標系における位置が生成される画像内のルック有効範囲内に含まれるように仮想カメラの向き制御してもよい。
【0109】
図3(A)では代表点312−4に対応する有効/無効フラグが、有効となっており、それ以外の代表点の有効/無効フラグは無効となっている。
【0110】
図3(B)では代表点312−4、312−14,312−15に対応する有効/無効フラグが、有効となっており、それ以外の代表点の有効/無効フラグは無効となっている。
【0111】
これらの有効フラグを有する移動体オブジェクトをオートルック対象候補として選択してもよい。
【0112】
すべての代表点(関節)の有効/無効フラグが無効の移動体オブジェクトは、オートルック対象としない。また複数の代表点(関節)が有効フラグを有する移動体オブジェクトに対しては、例えば照準位置との距離が最も近い代表点(関節)をオートルック対象としてもよい。
【0113】
移動体オブジェクトの代表点の有効/無効フラグの設定は、所定の規則に従って行うようにしてもよい。
【0114】
例えば大型の移動体オブジェクトに複数の代表点(関節)を設けるようにしてもよい。この様にすると大型のオブジェクトの目標位置を部分毎に設定できる。
【0115】
(4)オートルックや追尾の動作
図4は、オートルック対象の移動体オブジェクトに対する仮想カメラの回転(旋回)動作について説明するための図である。
【0116】
オートルックモード中、オートルック条件を満たす移動体オブジェクト310がいる場合は、当該移動体オブジェクト310がルック範囲320に収まるように仮想カメラの回転(旋回)動作を行う。なおオートルックモード中でもオートルック条件を満たす対象がいない場合は、仮想カメラの回転(旋回)動作は行われず、カメラ固定状態で対象が現れるのをその場で待っている状態になる。
【0117】
画像330−1、320−2に示すように、オートルック対象となる移動体オブジェクト310が決まったら当該移動体オブジェクト310のルック基準点312(移動体オブジェクトの代表点、代表点が複数ある場合にはいずれかの代表点)が仮想カメラの中心に来るように仮想カメラを回転(旋回)させる。なおルック範囲320の中央が仮想カメラの中心となるようにしてもよい。そして画像330−3に示すように、ルック基準点312がルック範囲(ルック判定ライン)320内に入った時点で、カメラの回転(旋回)動作は終了する。
【0118】
このときの仮想カメラの回転(旋回)速度のパラメータは外部から調整可能にしてもよい。
【0119】
オートルック対象となる移動体オブジェクト310のルック基準点312がルック範囲(ルック判定ライン)320内に入った後は追尾制御を行う。追尾に移行しなかった場合、その移動体オブジェクト310に対するオートルックは終了してもよい。
【0120】
なおルック開始から時間をカウントして、カウントした時間がルック限界時間を超えた場合、対象LOST扱いとし、ルックをキャンセルしてもよい。またオートルック対象が死亡した場合にもオートルックや追尾は解除する。
【0121】
またプレーヤの入力によりオートルックモードが発動されている場合には、オートルック対象を固定し、オートルック対象が死亡する、追尾可能範囲から出るなどしない限りオートルック対象を切り替えることは行わないようにする。例えばオートルック対象を最も近い場所のオートルック対象候補を切り替える制御が頻繁に行われると、オートルック対象に近い場所に別のオートルック対象候補がいた場合に、対象切り替えに伴い仮想カメラの回転(旋回)が行われ、画面が激しく振動する現象が発生する可能性がある。しかし本実施の形態のようにオートルック対象を固定することで、かかる現象を防止することができる。
【0122】
ズーム時は、ズーム倍率に応じて、画面のスクロールが通常時と同じ程度になるように、オートロック時の仮想カメラの旋回速度に倍率をかけるようにしてもよい。ズーム倍率が高くなるほど、仮想カメラの旋回速度は遅くなるように、オートロック時の仮想カメラの旋回速度に倍率をかけるようにしてもよい。
【0123】
図5は(A)(B)(C)は追尾中の仮想カメラの動作について説明するための図である。
【0124】
図5(A)の画像330−3は、オートルックが完了した時点の画像であり、この時点から追尾制御が行われる。図5(B)の画像330−4、330−5に示すように、追尾制御中は、オートルック対象となる移動体オブジェクト310のルック基準点312が第2の判定ラインで囲まれた第2のエリア340より外に出ると、その移動体オブジェクト310を仮想カメラ中央へ収めるようにオートロック時の旋回速度でカメラを回転(旋回)させて追尾し、移動体オブジェクト310が第2のエリア340に入った時点でカメラの回転(旋回)を中止してもよい。
【0125】
図5(C)に示すように、追尾中に、移動体オブジェクト310のルック基準点312ユニットが画面外に出てしまった場合、追尾を解除し、対象LOST扱いにする。
【0126】
オートルック制御中や追尾制御中に仮想カメラの旋回限界にきた場合、カメラの旋回限界に従い旋回しないようにする。例えば図6に示すように、オートルック対象となる移動体オブジェクト310を追尾中に、仮想カメラ360の向きが旋回可能範囲350の旋回限界352に来た場合には、たとえ前記移動体オブジェクト310を第2の判定ラインで囲まれた第2のエリア340内にとらえることができなくても、旋回動作を中止させる。
【0127】
(5)オートルック条件とオートルック対象候補の選出
オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選出し、選出されたオートルック対象候補から、オートルック対象を決定してもよい。以下オートルック条件とオートルック候補の選出手法について説明する。
【0128】
例えば所定時間毎に移動体オブジェクトがオートルック条件を満たすか否か判断し、オートルック条件を満たす移動体オブジェクトに、ルック有効時間を設定するようにしてもよい。この様にするとルック有効時間が設定されているか否かでオートルック条件を満たしているかいなか判断することができる。従って、ルック有効時間がセットされている移動体オブジェクトの中からオートルック対象を決定することができる。この様にするとオートルック条件判断のタイミングとオートルック対象決定のタイミングが異なってもよいので、処理負荷を分散させることができる。
【0129】
ルック有効時間は、移動体オブジェクト毎に設定されるようにしてもよい。オートルック条件は、例えば以下のような条件でもよい。
【0130】
例えばオンライン対戦では、味方の移動体オブジェクトはオートルックの対象外にしてもよい。すなわち移動体オブジェクトの属性が味方でないことをオートルック条件としてもよい。そして移動体オブジェクトの属性が味方である場合にはオートルック条件を満たさないとして、ルック有効時間をセットしない、又は数値0をセットしてもよい。
【0131】
またプレーヤの視界範囲内に存在する移動体オブジェクト以外はオートルックの対象外にしてもよい。例えば所定時間毎に、プレーヤの視界範囲内に存在する移動体オブジェクトについて、ルック有効時間がセットされていない移動体オブジェクトについては、移動体オブジェクトと仮想カメラ360の間にレイを飛ばして、その移動体オブジェクトが見えているかの判定をし(レイ判定)、見えているオブジェクトにルック有効時間を設定する処理を行ってもよい。すでにルック有効時間がセットされている移動体オブジェクトやプレーヤの視界範囲外の移動体オブジェクトについてはレイ判定は行わない。
【0132】
図7は、移動体オブジェクトに対するレイチェックについて説明するための図である。
【0133】
移動体オブジェクトの代表点が1つの場合には1つの代表点に対して仮想カメラからレイをとばし、レイ上に障害物がなければ、見えていると判断する。
【0134】
移動体オブジェクトの代表点が複数ある場合、例えば図7に示すように有効フラグを有する代表点312−4,312−14、312−15が複数ある場合、複数の代表点に対してレイ370−4,370−14、370−15を飛ばして、レイチェックを行う。
【0135】
レイチェックでレイが貫通する障害物があれば、その代表点は見えないと判断する。移動体オブジェクトに複数の代表点がある場合は、すべての代表点が見える場合にルック有効時間をセットしてもよいし、一つでも見える代表点があればルック有効時間をセットしてもよいし、見える代表点が所定割合以上あればルック有効時間をセットしてもよい。
【0136】
図8は仮想カメラの視界範囲と移動体オブジェクトの位置関係を示す図である。
【0137】
プレーヤの視界範囲とは可能カメラ360の視界範囲370と考えてよいので、仮想空間内に存在する移動体オブジェクト390、392,394,396をその位置情報に基づき可能カメラ360の視界範囲370にあるか否か判断する。ここでは、移動体オブジェクト390,392は可能カメラ360の視界範囲370にあるので、ルック有効時間がセットされ、移動体オブジェクト394,396は可能カメラ360の視界範囲370外なので、ルック有効時間がセットされない、又は数値0がセットされる。
【0138】
図9(A)は、移動体オブジェクト398がプレーヤキャラクタ300に攻撃を行う様子を示す図であり、図9(B)は、移動体オブジェクト398がプレーヤキャラクタ300にダメージを与える様子を示す図である。
【0139】
オンラインゲームの場合には、図9(A)に示すように、プレーヤキャラクタ300を攻撃対象として攻撃を行った移動体オブジェクト398をオートルックの対象候補としてもよい。従ってプレーヤキャラクタ300を攻撃対象として攻撃を行った移動体オブジェクト398にルック有効時間がセットされていない場合、攻撃時にルック有効時間をセットしてもよい。この条件に関しては、攻撃がヒットしたしないに関わらずルック有効時間をセットしてもよい。またこの条件に関しては、レイチェックは行わないでもよい。
【0140】
また図9(B)に示すように、プレーヤキャラクタ300にダメージを与えた移動体オブジェクト398にレイが通ればオートルックの対象候補としてもよい。従ってプレーヤキャラクタ300にダメージを与えた移動体オブジェクト398にルック有効時間がセットされていない場合、レイチェックを行い、レイが通ればルック有効時間をセットしてもよい。
【0141】
ルック有効時間のセットは有効フラグがセットされている代表点に対して行うものであるから、そもそもオートルックの対象外である場合には当該移動体オブジェクトの代表点に無効フラグをセットしておいてもよい。
【0142】
セットされたルック有効時間は、以下の条件で時間の制御を行うようにしてもよい。図10(A)に示すように、仮想カメラ360の視界範囲370外にいる移動体オブジェクト404、406については、セットされているルック有効時間をカウントダウン(デクリメント)する。
【0143】
また視界範囲内の移動体オブジェクトについても、レイが通らないものについてはカウントダウンしてもよい。例えば図10(B)に示すように、仮想カメラ360の視界範囲370内にいる移動体オブジェクト412、414に対して、それぞれレイ422、424を飛ばしてレイチェックを行う。そして移動体オブジェクト414のように障害物430がありレイ424が通らないものについてもセットされているルック有効時間をカウントダウン(デクリメント)する。
【0144】
また仮想カメラ360の視界範囲370でレイが通っているユニットのルック有効時間が所定の値(例えば見えている場合の最低値として予定している値)以下になっていた場合には所定の値に再設定する。
【0145】
またオートルックモード発動開始時、オートルック対象のルック有効時間のタイマーが所定の値(例えばルック時の最低値)以下であった場合には、所定の値(例えばルック時の最低値)に再設定する。この様にするとオートルックモード発動開始したときに、障害物に隠れてすぐに有効時間が0になるのを防止することができる。
【0146】
またプレーヤキャラクタが攻撃対象になって発砲されたり、ダメージを受けた時、それを行った移動体オブジェクトに対して、ルック有効時間を所定の値(例えば攻撃時にセットするタイマー値)をセットしなおしてもよい。
【0147】
移動体オブジェクト死亡時には、その移動体オブジェクトに対して設定されたルック有効時間をリセットしてもよい(数値0を設定する)。
【0148】
(6)オートルック対象の決定
オートルック対象の決定は、オートルックボタンが押されていない間(オートルックモードが発動されていない間)も定期的に随時行い、オートルック対象の移動体オブジェクトの識別ID等をオートルック対象情報として記憶しておく。
【0149】
図20はオートルックモードの処理の流れ示すフローチャートである。
【0150】
オートルックモード移行入力があると以下の処理を行う(ステップS10)。
【0151】
キャンセルイベントが発生すれば処理を終了する(ステップS20でYの場合)。
【0152】
オートルック対象情報がセットされている場合には(ステップS30)、オートルック対象情報に設定されている移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラを旋回させる(ステップS40)。
【0153】
キャンセルイベントが発生すれば処理を終了する(ステップS50)
オートルック対象情報に設定されている移動体オブジェクトのルック基準点が第2の範囲外になった場合(ステップS60)、オートルック対象情報に設定されている移動体オブジェクトのルック基準点がルック範囲に入るまで仮想カメラを旋回させる制御を行い(ステップS70)、ステップS50に戻って再び移行のステップを実行する。
【0154】
図21は、オートルックの対象を決定する処理の流れを示すフローチャートである。
【0155】
まず移動体オブジェクトのルック有効時間のチェックを行い、ルック有効時間が0の(又はセットされていない)移動体オブジェクトをオートルック対象候補から除外する(ステップS110)。例えば図11に示すように、移動体オブジェクト610,620、630のルック有効時間が、それぞれ5sec(612参照)、0sec(622参照)、3sec(624参照)である場合、ルック有効時間が0secである移動体オブジェクト620(622参照)をオートルック対象候補から除外する。なおオートルック対象候補は、初期設定としてプレーヤキャラクタを除くすべての移動体オブジェクトを設定しておいてもよい。
【0156】
次に代表点(関節)の有効状況をチェックし、有効な代表点(関節)が1つもない移動体オブジェクトをオートルック対象候補から除外する(ステップS120)。例えば図12に示すように、移動体オブジェクト640は有効な代表点(関節)が1つもなく、移動体オブジェクト650は有効な代表点(関節)が1つ(652)、移動体オブジェクト660は有効な代表点が3つ(662,664,666)ある場合には、有効な代表(関節)が1つもない移動体オブジェクト640をオートルック候補から除外する。
【0157】
次にプレーヤキャラクタからの距離をチェックして、プレーヤキャラクタから一定距離(ルック有効距離と呼ぶ)より離れた移動体オブジェクトをオートルック対象候補から除外する(ステップS130)。図13は、ルック有効距離について説明するための図である。ルック有効距離はプレーヤキャラクタ670からの距離であり、例えばルック有効距離がr1とするとプレーヤキャラクタの位置から半径r1のエリアをルック有効エリア680として、そのルック有効エリア680内に入っていない(位置座表がない)移動体オブジェクトはオートルック対象候補から除外する。例えば移動体オブジェクト720、730はルック有効エリア680内に入っていない(位置座表がない)ので、オートルック対象候補から除外する。
【0158】
なおこのルック有効距離は、プレーヤキャラクタのアイテム、属性等により変化させてもよい。例えば、プレーヤの使用中の武器が通常のピストルである場合とライフルである場合には、射程距離が長いライフルの場合のほうがピストルの場合に比べてルック有効距離が長くなるようにしてもよい。例えばピストルの場合のルック有効距離がr1の場合、ライフルの場合のルック有効距離r2(r2>r1)としてもよい。この場合、例えば移動体オブジェクト730はルック有効エリア680内に入っていない(位置座表がない)ので、オートルック対象候補から除外されることになる。
【0159】
上記除外処理によりオートルック対象候補が存在しない場合には(ステップS140でNの場合)、対象なしで処理を終了する。
【0160】
オートルック対象候補の移動体オブジェクトが存在する場合(ステップS140でYの場合)には、視野範囲内にオートルック対象候補の移動体オブジェクトが存在するか否か判断する(ステップS150)。存在する場合には照準位置に最も近いオートルック対象候補の移動体オブジェクトを検索して、オートルック対象として設定する(ステップS160)。図14(A)(B)(C)は、照準位置に最も近い移動体オブジェクトを検索する処理について説明するための図である。オートルック対象候補の移動体オブジェクトの中から、視野範囲内にいる移動体オブジェクトに対して検索を行う。視野範囲内にいるかどうかは、各移動体オブジェクト820、830、840,850のルック基準点822、832、842、852が画面外判定ライン230より内側にあるか否かで判定する。3次元的な位置関係で判断してもよいし、スクリーン座標系へ投影変換後の2次元的な位置関係に基づき判断してもよい。
【0161】
図14(A)では移動体オブジェクト820、830、840のルック基準点822、832、842が画面外判定ライン230より内側にあるので、移動体オブジェクト820、830、840は視野範囲内にいると判断する。
【0162】
そして照準位置が仮想空間内の位置座標で与えられる場合には、図14(B)に示すように、仮想空間(3次元空間)内における各移動体オブジェクト820、830、840のルック基準点822、832、842と照準の中心位置810との距離824、834、844を測り、この距離が最も近い移動体オブジェクトをオートルック対象とする。ここでは移動体オブジェクト820のルック基準点822と照準位置810の距離824が最も短いので、移動体オブジェクト820がオートルック対象となっている。
【0163】
図18(A)は照準位置の求め方を説明するための図である。照準位置810は、照準方向860と、銃口の位置(仮想カメラの位置又はプレーヤキャラクタの位置)850、飛距離Lにより求めることができる。
【0164】
図18(B)は照準方向860が与えられている場合のオートルック対象の選び方について説明するための図である。照準方向860が与えられている場合には、仮想空間(3次元空間)内における各移動体オブジェクト820、830、840のルック基準点822、832、842と仮想カメラ(プレーヤキャラクタ)850を結ぶ方向824、834、844と照準方向860とのなす角度θ1、θ2、θ3を測り、この角度が最も小さい(鋭角な)移動体オブジェクトをオートルック対象とする。ここでは移動体オブジェクト820のルック基準点822と仮想カメラ(プレーヤキャラクタ)850を結ぶ方向824と照準方向との那須角度θ1が最も鋭角であるので移動体オブジェクト820がオートルック対象となっている。
【0165】
ステップS150で視野範囲内にオートルック対象候補が存在しない場合にはプレーヤキャラクタに最も近いオートルック対象候補の移動体オブジェクトを検索して、オートルック対象として設定する(ステップS170)。図15に示すようにプレーヤキャラクタの視野範囲内750に移動体オブジェクトが存在しない場合には、視野範囲外に存在する移動体オブジェクト770、780,790とプレーヤキャラクタ670との距離l1,l2,l3を比較し、l1<l2<l3なので、プレーヤキャラクタに最も近い移動体オブジェクト770をオートルック対象として設定する。
【0166】
(7)オートルック対象へのマーカー表示
図16は、オートルック対象となる移動体オブジェクトに対するマーカー表示例を示す図である。本実施の形態では、オートルック対象となる移動体オブジェクト820には、2Dでマーカー表示890を行う。2Dのマーカーは、マーカーの中心が、ルック基準点822になるように表示してもよい。
【0167】
なおオートルック対象へのマーカー表示は、オートルックモードを発動していないときに表示することが好ましい。そしてオートルックモード中は表示を消し、オートルックモードを解除した場合は、画面外に出現させてから対象に移動するようにしてもよい。オートルック対象が変わった場合は、マーカーはそちらへ移動する。
【0168】
図17は、オートルック対象切り替え時のマーカー移動について説明するための図である。オートルック対象が変わった場合は、マーカーはそちらへ移動するように動かす。すなわち、オートルック対象が移動体オブジェクト820から移動体オブジェクト830に切り替わった場合にはマーカー画像890も併せて瞬時に切り替わるのではなく、移動体オブジェクト820から移動体オブジェクト830に移動する表示制御が行われる。
【0169】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0170】
例えば上記実施の形態は、複数のプレーヤが参加するマルチプレーヤゲームとして構成することができる。マルチプレーヤゲームは、ネットワークで接続された他のゲーム装置又はサーバと接続されたゲーム装置で実行され、他のゲーム装置又はサーバとゲームデータのやりとりを行うようにして実現してもよい。
【0171】
この様なマルチプレーヤゲームの場合、所与のプレーヤのプレーヤキャラクタが、他のプレーヤのプレーヤキャラクタのオートルック対象となった場合に、その旨を通知するための警告メッセージや警告表示を行うようにしてもよい。例えばオートルック対象である所与のプレーヤキャラクタに対応するプレーヤのゲーム画面に「ねらわれています」等の警告メッセージの表示を行うようにしてもよい。
【0172】
上記実施の形態では、ゲーム装置が撮影装置である場合を例にとり説明したがこれに限られない。例えばゲーム装置は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム等のいずれのタイプでも構成可能であり、ゲームの種類もシューティングゲームやレースゲームやロールプレイングゲームやパズルゲーム等の種々のゲームシステムに適用できる。
【符号の説明】
【0173】
100 処理部、110 オブジェクト空間設定部、111 仮想カメラ配置制御部、
112 オートルック対象設定部、113 演算処理部、113−1 指示位置又は指示方向演算部、113−2 ダメージ演算部、113−3 有効時間演算部、114 移動・動作処理部、115 ゲーム演算部、116 表示制御部、120 画像生成部、130 音処理部、160 入力部、162 検出部、180 情報記憶媒体、190 表示部、170 記憶部、172 主記憶部、192 音出力部、196 通信部
【特許請求の範囲】
【請求項1】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算する指示位置又は指示方向演算部をさらに含み、
前記オートルック対象設定部は、
移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記オートルック対象設定部は、
仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記オートルック対象設定部は、
いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないことを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記オートルック対象設定部は、
前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする有効時間演算部をさらに含み、
前記オートルック対象設定部は、
有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記オートルック対象設定部は、
プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項8】
請求項7において、
前記オートルック対象設定部は、
プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させることを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させる追尾制御を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定するフラグ設定部をさらに含み、
前記オートルック対象設定部は、
有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項11】
請求項10おいて、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させることを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記仮想カメラ配置制御部は、
所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御することを特徴とするプログラム。
【請求項13】
請求項1乃至11のいずれかにおいて、
オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行う表示制御部とを、さらに含むことを特徴とするプログラム。
【請求項14】
請求項1乃至13のいずれかにおいて、
入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部をさらに含み、
前記プレーヤキャラクタ移動制御部は、
オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御することを特徴とするプログラム。
【請求項15】
請求項1乃至14のいずれかにおいて、
攻撃情報に基づきプレーヤキャラクタにダメージを与えるダメージを演算するダメージ演算部をさらに含み、
前記ダメージ演算部は、
オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行うことを特徴とするプログラム。
【請求項16】
請求項1乃至15のいずれかのプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項17】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成する画像生成装置であって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、を含み、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行うことを特徴とする画像生成装置。
【請求項1】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
指示位置又は指示方向を指示する入力情報に基づき、仮想空間における指示位置又は指示方向を演算する指示位置又は指示方向演算部をさらに含み、
前記オートルック対象設定部は、
移動体オブジェクトの位置と指示位置又は指示方向に基づきオートルック条件を満たす1つの移動体オブジェクトをオートルック対象として決定することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記オートルック対象設定部は、
仮想空間に配置された移動体オブジェクトについてオートルック条件を満たすか否か判定し、オートルック条件を満たす移動体オブジェクトをオートルック対象候補として選択し、選択されたオートルック対象候補からオートルック対象を決定することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記オートルック対象設定部は、
いずれかの移動体オブジェクトがオートルック対象として設定されている場合は、キャンセルイベントが発生するまでは、オートルック対象を変更しないことを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記オートルック対象設定部は、
前記仮想空間内において仮想カメラ又はプレーヤキャラクタと移動体オブジェクトを結ぶ線分上に障害物があるか否かを判断し、障害物がある場合には当該移動体オブジェクトはオートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
移動体オブジェクトまたはその少なくとも1つの代表点に有効時間を設定し、設定されている有効時間がなくなるまで有効時間をデクリメントする有効時間演算部をさらに含み、
前記オートルック対象設定部は、
有効時間が残っていない移動体オブジェクトまたは代表点はオートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記オートルック対象設定部は、
プレーヤキャラクタと移動体オブジェクトの距離が有効範囲内にないものは、オートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項8】
請求項7において、
前記オートルック対象設定部は、
プレーヤキャラクタのアイテム、属性、発生するイベントの種類、ゲームステージの種類の少なくとも1つに基づき、前記有効範囲を変化させることを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの画像が、生成される画像の所定の位置に設定され前記ルック範囲を内包する第2の範囲に含まれなくなった場合には、前記オートルック対象の移動体オブジェクトの画像が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させる追尾制御を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
移動体オブジェクトを構成する少なくとも1つの代表点に対して有効/無効フラグを設定するフラグ設定部をさらに含み、
前記オートルック対象設定部は、
有効フラグの設定されている代表点がない移動体オブジェクトは、オートルック条件を満たさないと判断することを特徴とするプログラム。
【請求項11】
請求項10おいて、
前記仮想カメラ配置制御部は、
オートルック対象の移動体オブジェクトの有効フラグの設定されている代表点が前記ルック範囲又は前記第2の範囲に含まれるように仮想カメラを回転させることを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記仮想カメラ配置制御部は、
所与のイベントに基づきオートルックモードが発動されると、オートルック対象が設定されている場合にはルック回転制御が行なわれ、オートルックモードが発動されていない場合には入力情報に基づき仮想カメラの向きを制御することを特徴とするプログラム。
【請求項13】
請求項1乃至11のいずれかにおいて、
オートルックモードが発動されていない場合に、オートルック対象の移動体オブジェクトに対して、オートルック対象であることを示す特別表示を行う表示制御部とを、さらに含むことを特徴とするプログラム。
【請求項14】
請求項1乃至13のいずれかにおいて、
入力情報に基づきプレーヤキャラクタの移動を制御するプレーヤキャラクタ移動制御部をさらに含み、
前記プレーヤキャラクタ移動制御部は、
オートルック対象が設定されていない場合には、プレーヤキャラクタの向きを基準方向としてプレーヤキャラクタの移動方向を制御し、オートルック対象が設定されている場合には、プレーヤキャラクタと前記オートルック対象の移動体オブジェクトを結ぶ方向を基準方向としてプレーヤキャラクタの移動方向を制御することを特徴とするプログラム。
【請求項15】
請求項1乃至14のいずれかにおいて、
攻撃情報に基づきプレーヤキャラクタにダメージを与えるダメージを演算するダメージ演算部をさらに含み、
前記ダメージ演算部は、
オートルック対象が設定されている場合には、プレーヤキャラクタや敵キャラクタが受けるダメージ量や、プレーヤキャラクタや敵キャラクタの攻撃能力や防御能力に関するパラメータを、オートルック対象が設定されていない場合に比べて変化させる処理を行うことを特徴とするプログラム。
【請求項16】
請求項1乃至15のいずれかのプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項17】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成する画像生成装置であって、
仮想カメラ又はプレーヤキャラクタを制御する制御情報に基づき仮想カメラの配置制御を行う仮想カメラ配置制御部と、
仮想空間に存在する移動体オブジェクトの中にオートルック条件を満たす移動体オブジェクトが存在するか否か検索し、オートルック条件を満たす1つの移動体オブジェクトをオートルック対象として設定するオートルック対象設定部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、を含み、
前記仮想カメラ配置制御部は、
オートルック対象が設定されていない場合には、前記移動入力情報に基づき仮想カメラの向きを制御し、オートルック対象が設定されている場合には、当該オートルック対象の移動体オブジェクトの画像が、生成される画像の所与の位置に設定されたルック範囲に入るまで、仮想カメラを回転させるルック回転制御を行うことを特徴とする画像生成装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図7】
【図9】
【図11】
【図12】
【図14】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図6】
【図8】
【図10】
【図13】
【図15】
【図2】
【図3】
【図4】
【図5】
【図7】
【図9】
【図11】
【図12】
【図14】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図6】
【図8】
【図10】
【図13】
【図15】
【公開番号】特開2011−215886(P2011−215886A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−83446(P2010−83446)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]