以下、添付図面を参照しながら各実施例について詳細に説明する。
(ゲームシステムの概要)
図1を参照して、本発明の一実施形態に係るゲームシステム1の概要について説明する。図1は、本実施形態に係るゲームシステム1のブロック図である。図2は、フィールド画像の一例を示す図である。ゲームシステム1は、サーバ装置10と、1つ以上の端末装置20と、を備える。図1では簡便のため、3つの端末装置20を図示しているが、端末装置20の数は2つ以上であればよい。
サーバ装置10は、例えばゲーム運営者が管理するサーバ等の情報処理装置である。端末装置20は、例えば携帯電話、スマートフォン、タブレット端末、PC(Personal Computer)、又はゲーム装置等の、ユーザによって使用される情報処理装置である。端末装置20は、本実施形態に係るゲームのアプリケーションを実行可能である。ゲームのアプリケーションは、ネットワーク30を介してサーバ装置10や所定のアプリケーション配信サーバから端末装置20に受信されてもよく、あるいは端末装置20に備えられた記憶装置又は端末装置20が読取可能なメモリカード等の記憶媒体に予め記憶されていてもよい。サーバ装置10及び端末装置20は、ネットワーク30を介して通信可能に接続される。例えば、サーバ装置10及び端末装置20が協動して、ゲームに関する多様な処理を実行する。
なお、ネットワーク30は、無線通信網や、インターネット、VPN(Virtual Private Network)、WAN(Wide Area Network)、有線ネットワーク、又はこれらの任意の組み合わせ等を含んでよい。
ここで、本実施形態に係るゲームの概要について説明する。本実施形態に係るゲームは、例えばロールプレイングゲーム又はシミュレーションゲーム等であって、ゲームの実行に伴い、ゲーム媒体が用いられる。例えば、本実施形態に係るゲームは、3次元の仮想空間内のフィールド上でゲーム媒体を移動させるゲームである。
ゲーム媒体は、ゲームに使用される電子データであり、例えば、カード、アイテム、ポイント、サービス内通貨(又はゲーム内通貨)、チケット、キャラクタ、アバタ、パラメータ等、任意の媒体を含む。また、ゲーム媒体は、レベル情報、ステータス情報、ゲームパラメータ情報(体力値及び攻撃力等)又は能力情報(スキル、アビリティ、呪文、ジョブ等)のような、ゲーム関連情報であってもよい。また、ゲーム媒体は、ユーザによってゲーム内で取得、所有、使用、管理、交換、合成、強化、売却、廃棄、又は贈与等され得る電子データであるが、ゲーム媒体の利用態様は本明細書で明示されるものに限られない。
以下、特に明示した場合を除き、「ユーザが所有するゲーム媒体」とは、ユーザのユーザIDに対応付けられたゲーム媒体を示す。また、「ゲーム媒体をユーザに付与する」とは、ゲーム媒体をユーザIDに対応付けることを示す。また、「ユーザが所有するゲーム媒体を破棄する」とは、ユーザIDとゲーム媒体との対応付けを解消することを示す。また、「ユーザが所有するゲーム媒体を消費する」とは、ユーザIDとゲーム媒体との対応付けの解消に応じて、何らかの効果又は影響をゲーム内で発生させ得ることを示す。また、「ユーザが所有するゲーム媒体を売却する」とは、ユーザIDと当該ゲーム媒体との対応付けを解消し、且つ、ユーザIDに他のゲーム媒体(例えば、仮想通貨又はアイテム等)を対応付けることを示す。また、「あるユーザが所有するゲーム媒体を他のユーザに譲渡する」とは、あるユーザのユーザIDとゲーム媒体との対応付けを解消し、且つ、他のユーザのユーザIDに当該ゲーム媒体を対応付けることを示す。
本実施形態に係るゲームは、概略として、第1ゲームパートと、第2ゲームパートと、第3ゲームパートと、を含む。
第1ゲームパートにおいて、ユーザは、ユーザキャラクタを操作して、仮想空間内のフィールドを探索しながら、ゲームを進行させる。具体的には、ユーザ操作に応じてユーザキャラクタがフィールド上を移動する。フィールドには、例えば町及びダンジョン等の多様なエリアが設けられており、例えば町の住人キャラクタとの会話、及びダンジョン内で遭遇する敵キャラクタとの対戦等、エリアに応じた多様なイベントが発生する。イベントが実行されることによって、ゲームのメインストーリーが進行する。また第1ゲームパートにおいて、例えば敵キャラクタとの対戦に勝利すると、例えばアイテム、仮想通貨、又はキャラクタ等のゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
第2ゲームパートにおいて、ユーザは、ゲーム媒体の保有状況を変更する。ユーザは、例えばアイテム、仮想通貨、及びキャラクタ等の多様なゲーム媒体を収集する。具体的には、フィールド上に設けられた採掘場及び釣り堀等の特定のエリアにユーザキャラクタを移動させ、又は特定のキャラクタ等のゲーム媒体を選択(例えば、画面に対するタッチ操作)すると、ゲーム媒体が取得可能なサブイベントが発生する。サブイベントは、例えばサブストーリーの進行、及びミニゲームの実行等を含むが、サブイベントの内容はこれらに限られない。サブイベントの実行結果に応じて、多様なゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
第3ゲームパートにおいて、ユーザは、ゲーム媒体に関するパラメータを変更する。ユーザは、例えばユーザキャラクタの強化を行う。具体的には、上述したように第1ゲームパート及び第2ゲームパートにおいてユーザに付与されたゲーム媒体が消費されることによって、ユーザキャラクタの多様なゲームパラメータが変化する。ゲームパラメータは、例えばユーザキャラクタのレベル、HP、攻撃力、防御力、属性、及びスキル等を含むが、これらに限られない。ユーザキャラクタのゲームパラメータの変化に応じて、ユーザキャラクタが強化される。ユーザキャラクタの強化によって、第1ゲームパートにおける敵キャラクタとの対戦でユーザキャラクタが勝利できる蓋然性が高まる。
このように、本実施形態に係るゲームにおいて、ユーザは第1ゲームパート、第2ゲームパート、及び第3ゲームパートを繰り返し行う。
(サーバ装置の構成)
サーバ装置10の構成について具体的に説明する。サーバ装置10は、サーバコンピュータにより構成される。サーバ装置10は、複数台のサーバコンピュータにより協動して実現されてもよい。
サーバ装置10は、サーバ通信部11と、サーバ記憶部12と、サーバ制御部13と、を備える。
サーバ通信部11は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。サーバ通信部11は、例えば無線LAN(Local Area Network)通信モジュール又は有線LAN通信モジュール等を含んでもよい。サーバ通信部11は、ネットワーク30を介して、端末装置20との間で情報を送受信可能である。
サーバ記憶部12は、例えば記憶装置であって、ゲームの処理に必要な種々の情報及びプログラムを記憶する。例えばサーバ記憶部12は、ゲームのアプリケーションを記憶する。
また、サーバ記憶部12は、3次元の仮想空間内に配置された種々のオブジェクトに投影(テクスチャマッピング)するための種々の画像(テクスチャ画像)を記憶する。
例えば、サーバ記憶部12は、ユーザキャラクタの画像を記憶する。以下、ユーザキャラクタを第1ゲーム媒体と称し、第1ゲーム媒体の画像に基づきフィールドオブジェクト(後述)上に描画(配置)されるオブジェクトを第1オブジェクトとも称する。なお、本実施形態では、仮想空間内では、第1オブジェクトは1つだけ表現されるが、2つ以上の第1オブジェクトが表現されてもよい。なお、第1オブジェクトは、複数の第1ゲーム媒体のグループであってもよい。また、仮想空間内で利用される第1ゲーム媒体(及びそれに基づく第1オブジェクト)は、ユーザにより適宜交換可能とされてもよい。
また、サーバ記憶部12は、例えば建物、壁、樹木、又はNPC(Non Player Character)等のような、ゲーム媒体に係る画像を記憶する。以下、第1ゲーム媒体とは異なる任意のゲーム媒体(例えば建物、壁、樹木、又はNPC等)であって、後述するフィールドオブジェクトに配置されうるゲーム媒体を第2ゲーム媒体と称し、第2ゲーム媒体が投影されたオブジェクトを第2オブジェクトとも称する。なお、本実施形態では、第2オブジェクトは、後述するフィールドオブジェクトに対して固定されたオブジェクトや、後述するフィールドオブジェクトに対して移動可能なオブジェクト等を含んでもよい。また、第2オブジェクトは、後述するフィールドオブジェクトに常に配置されるオブジェクトや、所定の条件が満たされた場合にだけ配置されるオブジェクト等を含んでもよい。
また、サーバ記憶部12は、例えば空又は遠景等の背景の画像(背景画像)を記憶する。以下、背景画像が投影されたオブジェクトを背景オブジェクトともいう。なお、背景画像は複数種類用意され、使い分けられてもよい。
また、サーバ記憶部12は、フィールド(例えば、地面)の画像(フィールド画像)を記憶する。フィールド画像は、後述するフィールド面に投影される。以下、フィールド画像がフィールド面に投影されたオブジェクトを、フィールドオブジェクトとも称する。なお、フィールドオブジェクトは、仮想空間内における仮想のフィールド(地面)として用いられる。
ここで、フィールド画像には、例えば図2に示すように、互いに直交するu軸及びv軸を有するテクスチャ座標系が設定されている。本実施形態において、フィールド画像には、横通路14と、縦通路15と、カーブ路17とが定められている。横通路14、縦通路15、及びカーブ路17は、フィールドオブジェクトにおける第1オブジェクト等が移動可能な通路を形成する。なお、図2では、特定の通路構成が示されるが、通路構成は任意である。また、図2では、フィールド画像は、矩形であるが、他の形態であってもよい。また、フィールド画像は複数種類用意され、使い分けられてもよい。
また、サーバ記憶部12は、第2オブジェクトと、フィールド画像のテクスチャ座標と、を対応付けた対応情報を記憶する。対応情報は、第2オブジェクトをフィールドオブジェクト上に配置する処理を実行するサーバ制御部13によって用いられる。
サーバ制御部13は、専用のマイクロプロセッサ又は特定のプログラムを読み込むことにより特定の機能を実現するCPUである。例えばサーバ制御部13は、表示部23に対するユーザ操作に応じてゲームのアプリケーションを実行する。また、サーバ制御部13は、ゲームに関する多様な処理を実行する。
例えば、サーバ制御部13は、フィールドオブジェクト及び第1オブジェクト等が表示されるフィールド画像を表示部23に表示させる。また、サーバ制御部13は、所定のユーザ操作に応じて、仮想空間内において第1オブジェクトを、フィールドオブジェクトに対して相対的に、フィールドオブジェクト上で移動させる。サーバ制御部13の具体的な処理の詳細は後述する。
(端末装置の構成)
端末装置20の構成について具体的に説明する。図1に示すように、端末装置20は、端末通信部21と、端末記憶部22と、表示部23と、入力部24と、端末制御部25とを備える。
端末通信部21は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。端末通信部21は、例えばLTE(Long Term Evolution)(登録商標)等のモバイル通信規格に対応する無線通信モジュール、無線LAN通信モジュール、又は有線LAN通信モジュール等を含んでもよい。端末通信部21は、ネットワーク30を介して、サーバ装置10との間で情報を送受信可能である。
端末記憶部22は、例えば一次記憶装置及び二次記憶装置を含む。例えば端末記憶部22は、半導体メモリ、磁気メモリ、又は光メモリ等を含んでもよい。端末記憶部22は、サーバ装置10から受信する、ゲームの処理に用いられる種々の情報及びプログラムを記憶する。ゲームの処理に用いられる情報及びプログラムは、端末通信部21を介して外部装置から取得されてもよい。例えば、ゲームのアプリケーションプログラムが、所定のアプリケーション配信サーバから取得されてもよい。以下、アプリケーションプログラムを、単にアプリケーションともいう。また例えば、上述したユーザに関する情報及び対戦相手であるゲーム媒体に関する情報等の一部又は全部が、サーバ装置10から取得されてもよい。
表示部23は、例えば液晶ディスプレイ又は有機EL(Electro-Luminescence)ディスプレイ等の表示デバイスを含む。表示部23は、多様な画像を表示可能である。表示部23は、例えばタッチパネルで構成され、多様なユーザ操作を検出するインタフェースとして機能する。
入力部24は、例えば表示部23と一体的に設けられたタッチパネルを含む入力インタフェースを含む。入力部24は、端末装置20に対するユーザ入力を受付可能である。また、入力部24は、物理キーを含んでもよいし、マウス等のようなポインティングデバイスをはじめとする任意の入力インタフェースを更に含んでもよい。
端末制御部25は、1つ以上のプロセッサを含む。端末制御部25は、端末装置20全体の動作を制御する。
端末制御部25は、端末通信部21を介して情報の送受信を行う。例えば、端末制御部25は、ゲームの処理に用いられる種々の情報及びプログラムを、サーバ装置10及び他の外部サーバの少なくとも一方から受信する。端末制御部25は、受信された情報及びプログラムを、端末記憶部22に記憶する。
端末制御部25は、ユーザの操作に応じてゲームのアプリケーションを起動する。端末制御部25は、サーバ装置10と協動して、ゲームを実行する。例えば、端末制御部25は、ゲームに用いられる種々の画像(例えば後述する各種のフィールド画像)を表示部23に表示させる。画面上には、例えばユーザ操作を検出するGUI(Graphic User Interface)が表示されてもよい。端末制御部25は、入力部24を介して、画面に対するユーザ操作を検出可能である。例えば端末制御部25は、ユーザのタップ操作、ロングタップ操作、フリック操作、及びスワイプ操作等を検出可能である。タップ操作は、ユーザが指で表示部23に触れ、その後に指を離す操作である。端末制御部25は、操作情報をサーバ装置10に送信する。
(ゲームにおける描画機能)
サーバ制御部13は、端末装置20と協動して、表示部23上にフィールド画像を表示し、ゲームの進行に応じてフィールド画像を更新していく。本実施形態では、サーバ制御部13は、端末装置20と協動して、3次元の仮想空間に配置されるオブジェクトを、仮想空間に配置された仮想カメラから視た表現で描画する。
なお、以下で説明する描画処理は、サーバ制御部13により実現されるが、他の実施形態では、以下で説明する描画処理の一部又は全部がサーバ制御部13により実現されてもよい。例えば、以下の説明において、端末装置20に表示されるフィールド画像の少なくとも一部を、サーバ装置10が生成したデータに基づいて端末装置20に表示させるウェブ表示とし、画面の少なくとも一部を、端末装置20にインストールされているネイティブアプリケーションによって表示させるネイティブ表示としてもよい。
図3及び図4は、フィールドオブジェクトと背景オブジェクトの一例の説明図である。図3は、フィールドオブジェクトを形成するフィールド面70と背景オブジェクトを形成する背景面72の全体を示す平面図であり、図4は、図3の矢印R0の方向成分を含む斜め方向に視たときの、フィールド面70と背景面72の一部を示す斜視図である。図4には、仮想カメラ60についても模式的に図示されている。また、図4では、背景面72は雲や太陽の絵を含む背景画像が投影された背景オブジェクトの形態で示されている。
以下の説明において、各種オブジェクトの移動とは、仮想空間内の移動を表す。また、各種オブジェクトの可視範囲とは、仮想カメラ60から視て可視の範囲(すなわち仮想カメラ60の画角62内の範囲)を表す。
図3には、仮想空間の空間座標系としてのx、y、z座標系(以下、「グローバル座標系」とも称する)が示される。なお、グローバル座標系の原点は、任意の位置に固定されてよい。以下では、z方向の正側を仮想空間の上側とし、負側を仮想空間の下側とする。なお、本実施形態では、x軸は、第1軸の一例であり、y軸は、第2軸の一例であり、z軸は、第3軸の一例である。以下で、x方向、y方向、及びz方向の各用語は、x軸に平行な方向、y軸に平行な方向、及びz軸に平行な方向をそれぞれ意味する。例えば、z方向は、特に言及しない限り、xy平面内の任意の点を通るz軸に平行な方向を表す。
フィールド面70は、仮想空間のxy平面に対応付けて配置される。本実施形態では、一例として、フィールド面70は、投影されたフィールド画像のテクスチャ座標系のu軸、v軸及び原点が、グローバル座標系のx軸、y軸及び原点と一致するように、xy平面に対応付けて配置される。なお、図3では、対応付けられる前の状態として、テクスチャ座標系のu軸、v軸及び原点は、グローバル座標系のx軸、y軸及び原点から離れて示されている。フィールド面70は、x方向、y方向、及びz方向の各方向で、並進移動(直線状に移動)が不能とされる。ただし、他の実施形態では、フィールド面70は、グローバル座標系で並進移動が可能とされてもよい。
フィールド面70は、xy平面に平行な平面を正規の状態としたとき、正規の状態から変形可能である。このように、本実施形態では、フィールドオブジェクトは、変形可能なフィールド面70に基づいて形状付けられる。すなわち、フィールドオブジェクトは、正規の状態から変形したフィールド面70に基づいて形状付けられることで、xy平面に平行な平面に対して変形する。以下、フィールド面70及びフィールドオブジェクトに関する変形とは、特に言及しない限り、xy平面に平行な平面を正規の形状(状態)とした場合の変形を意味する。なお、変形状態のフィールドオブジェクトは、変形状態のフィールド面70にフィールド画像を投影することで実現されてもよいし、正規の状態のフィールド面70にフィールド画像を投影させてからフィールド面70を変形させることで実現されてもよい。
なお、フィールド面70は、フィールド画像が投影されると、正規の状態では、投影されたフィールド画像のテクスチャ座標を引き継ぐことができる。すなわち、フィールド画像が投影されたフィールド面70上の各位置は、実質的に、フィールド画像のテクスチャ座標系(図2参照)で特定できる。以下では、フィールド面70上の各位置を特定するための座標系は、当該フィールド面70に投影されたフィールド画像のテクスチャ座標系と一致し、「フィールド座標系」とも称する。
背景面72は、背景オブジェクトのz方向に延在する。ただし、他の実施形態では、背景面72は、z方向に対して傾斜して配置されてもよい。図3では、背景面72は、フィールド面70を取り囲むように配置される。この場合、背景面72は、グローバル座標系に対して固定であってもよいし、後述するようにz方向にだけ移動可能であってもよい。ただし、他の実施形態では、背景面72は、フィールド面70の一部だけを取り囲むように配置されてもよい。この場合、背景面72は、後述する仮想カメラ60の回転に応じて回転移動されてもよい。また、更なる他の実施形態では、背景面72は、フィールド面70と同様、変形可能とされてもよい。
図5は、図4に示した仮想カメラ60の視線方向Vとz方向とを含む平面(以下、「Vz平面」とも称する)を垂直に視たときの、各種の位置関係を示す説明図である。図5には、仮想カメラ60の画角内のフィールドオブジェクトの領域に位置する第1オブジェクト3が模式的に示されている。図6は、仮想カメラ60から視た表現で描画して得られたフィールド画像の一例を示す概略図である。
図5には、仮想カメラ60の画角62(z方向に垂直な方向に視た際の画角)が境界線6211、6212の間に模式的に示される。なお、本実施形態では、仮想カメラ60の画角は一定であるが、他の実施形態では、仮想カメラ60の画角が可変とされてもよい。
図5に示す例では、画角62は、上側の境界線6211が背景面72と交わり(点P2参照)、下側の境界線6212がフィールド面70と交わる(点P1参照)。この場合、図6に示すように、フィールド画像G60は、背景面72(及びそれに伴い背景オブジェクト)と、フィールド面70(及びそれに伴いフィールドオブジェクト)とを含む。なお、図5では、仮想カメラ60の画角内のフィールドオブジェクトの領域に第1オブジェクト3が位置するので、フィールド画像G60は、第1オブジェクト3の表現を含む。
ここで、本実施形態では、フィールド面70(及びそれに伴いフィールドオブジェクト)により仮想的な地平線HL(図6)が表現されるように、図5に示すように、フィールド面70が曲げ変形される。具体的には、フィールド面70は、視線方向Vで遠方に向かうほど(すなわち背景面72に向かうにつれて)下側に向かう方向で変形する。なお、このような変形は、仮想カメラ60の画角内の範囲内だけで実現されてもよいし、フィールド面70の全体で実現されてもよい。
フィールド面70の全体が変形される場合は、Vz平面で切断した際のフィールド面70の形状(図5のような線で表現される形状)がどの断面位置でも略同じであってよい(すなわち略等断面であってよい)。なお、略同じとは、10%以内の誤差を許容する概念である。なお、フィールドオブジェクトは、上述したように、フィールド面70に基づいて形状付けられるので、Vz平面で切断した際のフィールドオブジェクトの形状は、Vz平面で切断した際のフィールド面70の形状と同じであるが、フィールド面70の形状に対してわずかに異なる形状(例えば微細な凹凸等)を有してもよい。
このような表現の地平線HLは、図5に示すように、フィールド面70に対する仮想カメラ60からの接線6213(画角62内の接線)の交点P3により形成される。なお、図6では、地平線HLよりも手前に第1オブジェクト3が位置するので、地平線HLの表現の一部が第1オブジェクト3により隠れることになる。逆に、第1オブジェクト3が地平線HLよりも奥側(背景面72に近い側)に位置する場合は、第1オブジェクト3の一部又は全部がフィールドオブジェクトにより隠れることになる。
ここで、地平線HLの高さH1(図6参照)は、境界線6212に対する接線6213のなす角度αに依存する。角度αは、フィールド面70の曲げ態様に応じて変化しうる。例えば、図5に一点鎖線で示すフィールド面70’の場合、境界線6212に対する接線6213’のなす角度α’が角度αよりも小さくなり、それ故に、地平線HLの高さH1は小さくなる(図示せず)。このようにしてフィールド面70の曲げ態様を変化させることで、地平線HLの高さを変化させることができることがわかる。なお、地平線HLの高さが変化すると、仮想カメラ60の画角内に収まる背景面72の範囲もそれに伴い変化する。
このようにして本実施形態では、視線方向Vに視てフィールド面70が背景面72に近づくにつれて下方に向かう向きで曲げ変形されることで、地平線HLを適切に表現できる。また、曲げ変形の変形態様(変形度合い等)を変化させることで、地平線HLの高さH1(及びそれに伴いフィールドオブジェクトや背景オブジェクト等の可視範囲)を自由に変化させることができる。以下では、視線方向Vに視てフィールド面70が背景面72に近づくにつれて下方に向かう向きで変形される態様の曲げ変形を、単に「フィールド面70の曲げ変形」とも称する。
図7は、フィールド面70の曲げ変形を実現するための変形パラメータの一例の説明図である。
図7には、Vz平面内の2次元座標系Xc、Yc(以下、「ローカル座標系」とも称する)が定義されている。XcYc平面は、Vz平面に平行な平面であり、Yc軸は、z軸に平行な軸であり、Yc軸の正側は、仮想空間の上側に対応する。図7では、フィールド面70の変形態様を決める関数F1が示される。
関数F1は、Xc座標の値の絶対値が大きくなるほどYc座標の値が非線形に単調減少する関数である。また、関数F1は、Yc軸に関して対称である。ただし、他の実施形態では、関数F1は、Xc座標の値の絶対値が大きくなるほどYc座標の値が線形に単調減少してもよいし、及び/又は、Yc軸に関して非対称であってもよい。本実施形態では、一例として、関数F1は、2次関数であり、以下で表される。
yc=-A1×(xc)2
ここで、xcは、Xc座標の値であり、ycはYc座標の値であり、A1は、変形度合いを決める係数(以下、「変形パラメータA1」と称する)である。
なお、上記の関数F1はあくまで一例であり、例えば以下のような異なる関数が利用されてもよい。
xc>aのとき、yc=-A1×(xc-a)2
xc≦-aのとき、yc=-A1×(xc+a)2
-a≦xc≦aのとき、yc=0
この場合、aは正の定数であり、-a≦xc≦aの範囲では平らな平面が実現される。
あるいは、xc>-a1のとき、yc=-A1×(xc)2
xc≦-a1のとき、yc=0
この場合、a1は、正の固定値であってもよく、xc=-a1の位置が、画角62の下側の境界線6212とフィールド面70の交点(図5の点P1)と一致するように設定されてよい。
また、他の実施形態では、複数種類の関数が用意され、各種条件に応じて異なる関数が選択されてもよい。
図7Aは、関数F1に基づくフィールド面70の曲げ変形の説明図である。
フィールド面70は、関数F1にしたがって変形される。従って、変形パラメータA1の値が大きいほどフィールド面70の変形度合いが大きくなる。図7Aでは、フィールド面70は、上述したように、略等断面で曲げ変形される。
ここで、図8から図8Cを参照して、フィールド面70の曲げ変形の適用場面の一例を説明する。
図8は、フィールドオブジェクト77の平面図であり、図8Aは、位置M1に係るフィールド面の曲げ変形の状態の説明図であり、図8Bは、位置M2に係るフィールド面の曲げ変形の状態の説明図であり、図8Cは、位置M3に係るフィールド面の曲げ変形の状態の説明図である。図8では、フィールドオブジェクト77は、フィールド画像が正規状態のフィールド面70に投影された表現で示されている。図8では、位置M1から位置M3が例示されており、位置M2及び位置M3は、カーブ路17の開始位置付近と終了位置付近である。なお、図8Aから図8Cでは、作図の都合上、カーブ路17等がフィールド面70から離れた部分(仮想カメラ60の画角62の外側の部分)を有するが、全体がフィールド面70上に投影されてもよい。
ここでは、位置M1及び位置M3は、それぞれ、仮想カメラ60の視線方向Vとxy平面(又は変形前のフィールド面70)との間の交点位置に対応する。図8には、位置M2であるときの、仮想カメラ60の投影ベクトルV’(視線方向Vのxy平面上の投影ベクトルV’)が示される。また、位置M1及び位置M3は、第1オブジェクト3の位置に対応するものとする。すなわち、第1オブジェクト3が位置M1から位置M3までカーブ路17に沿って移動したときの仮想カメラ60の動きに伴うフィールド面70の曲げ変形を説明する。
仮想カメラ60の視線方向Vとフィールド面70との間の交点位置が位置M1に位置するとき、図8Aに示すようなフィールド面70の曲げ変形が実現される。仮想カメラ60の視線方向Vとフィールド面70との間の交点位置が位置M2に位置するとき、図8Bに示すようなフィールド面70の曲げ変形が実現される。仮想カメラ60の視線方向Vとフィールド面70との間の交点位置が位置M3に位置するとき、図8Cに示すようなフィールド面70の曲げ変形が実現される。
このようにして、第1オブジェクト3が位置M1から位置M3に移動するのに伴い仮想カメラ60の視線方向Vが変化した場合に、変化した視線方向Vに応じたフィールドオブジェクト77の曲げ変形(仮想カメラ60の視線方向Vに視て同じ変形態様の曲げ変形)が実現される。
ところで、仮想空間における仮想カメラ60の位置(フィールドオブジェクトに対する位置)が変化すると、仮想空間における仮想カメラ60の画角内の領域(例えばフィールドオブジェクトの領域)が変化するので、フィールド画像の多様化を図ることができる。ただし、この場合でも、仮想カメラ60の位置(フィールドオブジェクトに対する位置)が変化しても、仮想カメラ60の画角内の領域の状態が単調であると、フィールド画像の多様化を図ることができない。従って、仮想空間における仮想カメラ60の位置(フィールドオブジェクトに対する位置)を変化可能としつつ、フィールドオブジェクト上に配置される第2オブジェクトの数や種類等を増やすことで、フィールド画像の多様化を効果的に図ることができる。以下、仮想カメラ60の位置とは、特に言及しない限り、フィールドオブジェクトに対する位置(相対的な位置)を意味する。
しかしながら、本実施形態では、上述したように、フィールド面70(及びそれに伴いフィールドオブジェクト)は曲げ変形されるが、曲げ変形の際の変形度合いが常に一定であると仮想カメラ60から視た表現で描画して得られるフィールド画像が単調化しやすい。
なお、仮想カメラ60の位置が変化可能とされると、仮想カメラ60の位置の変化に伴い、フィールドオブジェクトにおける仮想カメラ60の画角内の領域が変化するので、フィールドオブジェクト上に多様な第2オブジェクトを多様な態様で配置すれば、ユーザの操作対象の第1オブジェクトの写り方や複数の第2オブジェクトの重なり具合が変化するので、仮想カメラ60から視た表現で描画して得られるフィールド画像を多様化できる。
ここで、ゲームフィールドを多様化させるメリットとして、ゲームフィールドの一部を際立たせることが可能になり、ユーザのオブジェクトに対する視認性の向上し、更に、操作対象となるオブジェクトや、操作箇所が明確になることにより操作性が向上します。また、限られた画面内で、複数のオブジェクトが存在したとしても視認性を損なうことなく(情報量を制限することなく)、仮想空間内の状況を表現することができる。このような効果は特にスマートフォンのような狭い画面において顕著である。
また、地平線の表現等は、フィールドオブジェクトの曲げ変形という単純な処理で実現することができるため、処理負荷も抑えることができる。また、フィールドオブジェクトにおける仮想カメラ60の画角外の(隠れた)オブジェクトを描画しなくてもよいので、その点でも処理負荷を抑えることができる。
この点、本実施形態では、仮想カメラ60の位置が変化可能とされるだけなく、フィールド面70(及びそれに伴いフィールドオブジェクト)の曲げ変形に係る変形度合いも変化可能とされる。フィールド面70(及びそれに伴いフィールドオブジェクト)の曲げ変形に係る変形度合いが変化すると、同じフィールドオブジェクトの領域であっても仮想カメラ60から視たときの見え方が異なるので、仮想カメラ60から視た表現で描画して得られるフィールド画像の更なる多様化を図ることができる。
また、本実施形態では、フィールドオブジェクト用の一の素材(フィールド画像及びフィールド面70)を用いて、フィールド面70の曲げ変形に係る変形度合いを変化させることで、多様な形態のフィールドオブジェクトを実現する。これにより、多様なフィールドオブジェクト(変形不能な固定の形態のフィールドオブジェクト)を事前に用意しておく場合に比べて、フィールドオブジェクト用の記憶領域の効率化を図ることができる。すなわち、記憶領域を効率的に利用して多様な形態のフィールドオブジェクトを実現できる。
なお、上述のように、フィールド面70の変形度合いが変化されると、地平線HLの高さH1が変化することに起因して、ユーザに違和感を与えるおそれがある。例えば、仮想カメラ60の位置が固定されたまま、フィールド面70の変形度合いが変化されると、違和感を与えやすい。
そこで、本実施形態では、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域が変化する場合に、当該変化に合わせて、フィールド面70の変形度合いが変化される。例えば、仮想カメラ60の位置が変化する場合に、当該変化に合わせて、フィールド面70の変形度合いが変化される。これにより、フィールド面70の変形度合いが変化されることで生じうる不都合(すなわちユーザに与えうる違和感)を低減できる。
例えば、仮想カメラ60の位置が1つ以上の特定位置又は特定範囲内にある場合に、そうでない場合よりもフィールド面70の変形度合いが大きくなるようにしてもよい。これにより、仮想カメラ60の位置が特定位置又は特定範囲内にあるときのフィールド画像(すなわち仮想カメラ60の画角内の各種オブジェクトの表現)を、他の位置にあるときのフィールド画像とは異なる態様で表現できる。例えば、特定位置に係るフィールド画像を他の位置に係るフィールド画像よりも目立たせたり、特定位置に係るフィールド画像に特定の意味を持たせたりするといった効果を与えることができる。なお、特定位置又は特定範囲は、例えば第1オブジェクトが移動しながら曲がる位置等(例えば図2に示す横通路14と縦通路15との交差位置)に対応して設定されてもよいし、強調したいオブジェクト(例えば出現確率が低いゲーム媒体に係るオブジェクト)が配置される位置に対応して設定されてもよい。この場合、例えば、特定位置は、当該オブジェクトの位置に対して所定関係を有する位置であってよい。また、特定位置は、動的に変化されてもよい。例えば、1つ以上の特定位置は、出現確率が低いゲーム媒体に係るオブジェクトが配置される場合だけ、当該オブジェクトが配置される位置に対応して設定される特定位置を含んでもよい。
ここで、仮想カメラ60の位置が変化可能とされると、仮想カメラ60の位置の変化に伴い、フィールドオブジェクトにおける仮想カメラ60の画角内の領域が変化する。この場合、フィールドオブジェクト上に多様な第2オブジェクトを多様な態様で配置すれば、ユーザの操作対象の第1オブジェクトの写り方や複数の第2オブジェクトの重なり具合が変化するので、仮想カメラ60から視た表現で描画して得られるフィールド画像を多様化できる。また、第2オブジェクト及び/又は第1オブジェクトの間で重複(重なり)が生じた場合でも、上述したように、フィールド面70の変形度合いを調整することで、重複するオブジェクトは、上下に互いにずれた位置に配置される。したがって、重複するオブジェクトのうちの、個々のオブジェクト又は着目させた1つ以上のオブジェクトの視認性を高めることができる。
また、仮想カメラ60から視た表現で描画して得られるフィールド画像を多様化させることで、かかるフィールド画像の一部を際立たせることが可能になり、ユーザのオブジェクトに対する視認性が向上する。更に、操作対象となるオブジェクトや、操作箇所が明確になることにより操作性が向上する。また、限られた画面内で、複数のオブジェクトが存在したとしても視認性を損なうことなく(情報量を制限することなく)、仮想空間内の状況を表現することができる。このような効果は特にスマートフォンのような狭い画面において顕著である。
また、地平線の表現等は、フィールドオブジェクトの曲げ変形という単純な処理で実現することができるため、処理負荷も抑えることができる。また、フィールドオブジェクトにおける仮想カメラ60の画角外の(隠れた)オブジェクトを描画しなくてもよいので、その点でも処理負荷を抑えることができる。
図9は、仮想カメラ60の位置の変化の自由度の説明図である。仮想カメラ60の位置の変化は、図9に示すように、視線方向Vに沿った変化V1と、視線方向Vに交差する方向の変化V2、V3と、これらの組み合わせとを含む。変化V2は、Vz平面内の変化であり、V3は、Vz平面に対して垂直な方向の変化である。なお、仮想カメラ60の位置の変化は、グローバル座標系での仮想カメラ60の変位(移動)により実現されてもよいし、グローバル座標系でのフィールドオブジェクトの変位(移動)により実現されてもよいし、これらの組み合わせにより実現されてもよい。
このように、本実施形態では、仮想カメラ60の位置(相対的な位置)が変化する態様は、視線方向Vに交差する方向(V2、V3)でフィールドオブジェクトに対する位置(相対的な位置)が変化する態様(以下、「第1変化態様」と称する)と、視線方向Vに沿った方向(V1)でフィールドオブジェクトに対する位置(相対的な位置)が変化する態様(以下、「第2変化態様」と称する)と、を含む。
この点、フィールド面70の変形度合いの変化は、第1変化態様及び第2変化態様のいずれか一方に伴って実現されてもよいし、第1変化態様及び第2変化態様の双方に伴って実現されてもよい。例えば、仮想カメラ60の位置が、視線方向Vに交差する方向に変化しつつ、視線方向Vに沿って変化する。
なお、フィールド面70の変形度合いの変化の際に、同時に実現される変化(すなわち、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域の変化)は、フィールドオブジェクトに対する位置(相対的な位置)の変化に限らず、仮想カメラ60の視線方向Vの回転(図10参照)によっても実現されてもよい。また、仮想カメラ60の光学パラメータを可変値とし、仮想カメラ60の光学パラメータの値を変化させることで、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域を変化させることも可能である。かかる光学パラメータは、例えば、焦点距離や画角等のような、仮想カメラ60のズーム量に関連する光学パラメータであってよい。
本実施形態では、一例として、仮想カメラ60は、フィールドオブジェクトに対する位置(相対的な位置)が変化可能とされるだけなく、仮想カメラ60の視線方向Vも変化可能とされる。具体的には、仮想カメラ60の視線方向Vは、z方向に平行な軸(以下、「公転軸Pc」と称する)まわりの回転が可能とされる。なお、仮想カメラ60の視線方向Vは、公転軸Pcまわりの回転のみが可能とされてもよいし、他の軸まわりの回転(後述する自転)も可能とされてもよい。例えば、仮想カメラ60の視線方向Vは、Vz平面に垂直な軸まわりの回転が可能とされてもよい。すなわち、仮想カメラ60の迎角(後述する迎角パラメータψ)が変化する態様で、仮想カメラ60の視線方向Vが回転されてもよい。この場合、回転中心は、仮想カメラ60の位置に対して所定関係となる位置であってよく、所定関係は、固定であってもよいし、変化されてもよい。
以下、仮想カメラ60の回転とは、特に言及しない限り、視線方向Vが公転軸Pcまわりに回転する態様の回転を意味する。仮想カメラ60の向きとは、仮想カメラ60の視線方向Vの向きを意味する。
図10は、仮想カメラ60の視線方向Vの回転(変化)の説明図であり、z方向に視た仮想カメラ60及びその画角62を模式的に示す図である。図10には、回転中における2つの位置で仮想カメラ60が模式的に示されている。
図10では、仮想カメラ60の視線方向Vに係る公転軸Pcは、z方向に視て、仮想カメラ60の視線方向Vを通りかつ仮想カメラ60から視線方向V後方側にオフセットされている。この場合、仮想カメラ60が360度回転すると、仮想カメラ60は、z方向に視て、公転軸Pcまわりの円形の軌跡C70を描く。ただし、公転軸Pcの位置は、任意であり、仮想カメラ60に対して所定関係となる位置であってよく、所定関係は、固定であってもよいし、変化されてもよい。ただし、本明細書では、公転軸Pcは、仮想カメラ60を通る場合の自転軸とは区別され、従って、自転軸とは異なるように設定される。
なお、図10では、視線方向Vは、z方向に視て、仮想カメラ60の回転中は常に、公転軸Pcを通りかつ公転軸Pcから離れる向きであるが、これに限られない。例えば、視線方向Vは、z方向に視て、仮想カメラ60の回転中は常に、公転軸Pcを通りかつ公転軸Pcに向かう向きであってもよい。すなわち、公転軸Pcは、z方向に視て、仮想カメラ60の視線方向Vを通りかつ仮想カメラ60から視線方向V前方側(遠方側)にオフセットされてもよい。この場合、公転軸Pcは、例えば、全方位からユーザに見せたい所定のオブジェクト(例えば後述する所定オブジェクト)を通るように設定されてもよい。また、他の実施形態では、視線方向Vは、z方向に視て、仮想カメラ60の回転(公転)中に、自転してもよい。すなわち、仮想カメラ60は、自転軸61まわりに回転(自転)可能とされてもよい。あるいは、視線方向Vは、公転とは独立して自転可能とされてもよい。
ところで、上述したように、地平線HLは、フィールド面70が曲げ変形されることで、形成される。したがって、仮想カメラ60の回転に伴い視線方向Vが変化すると、それに伴い、フィールド面70の曲げ変形の変形態様が変化される。すなわち、仮想カメラ60の回転に伴い視線方向Vが変化すると、それに伴い、変化後の視線方向Vに基づくVz平面内にローカル座標系のXc軸が位置するようにフィールド面70の曲げ変形の変形態様が変化される。これにより、仮想カメラ60の回転に伴い視線方向Vが変化しても、違和感のない態様で仮想空間内の地平線HLを実現できる。
次に、図11以降を参照して、サーバ装置10の描画機能の更なる詳細を説明する。
ここでは、まず、図11を参照して、図12以降の説明で用いるカメラパラメータについて説明してから、サーバ装置10の詳細を説明する。
図11は、カメラパラメータの説明図である。図11には、グローバル座標系に位置付けられたフィールド面70(正規の状態)が示されている。なお、フィールド面70は、上述のように、曲げ変形が可能であるが、グローバル座標系におけるフィールド面70全体の並進や回転が不能である。従って、フィールド座標系でのフィールド面70の各位置の座標は、所定の変換式で、グローバル座標系の各座標に変換可能であり、また、逆の変換も可能である。なお、以下では、説明上、フィールド座標系の原点は、グローバル座標系の原点と同じであり、フィールド座標系のu軸(=テクスチャ座標系のu軸)は、グローバル座標系のx軸に一致し、フィールド座標系のv軸(=テクスチャ座標系のv軸)は、グローバル座標系のy軸に一致するものとする。なお、以下では、フィールド面70とは、特に言及しない限り、フィールド画像が投影された状態のフィールド面70(フィールドオブジェクトのフィールド面70)を表す。
本実施形態では、カメラパラメータは、2つの位置パラメータ(X、Y)と、距離パラメータA2と、向きパラメータθと、迎角パラメータψとを含む。これらのすべてのパラメータの値が決まると、グローバル座標系に対して、仮想カメラ60を一意に位置付けることができる。
位置パラメータXは、視線方向Vのxy平面上の交点のx座標であり、位置パラメータYは、視線方向Vのxy平面上の交点のy座標であり、距離パラメータA2は、視線方向Vのxy平面上の交点から仮想カメラ60までの距離(視線方向Vに沿った距離)である。向きパラメータθは、視線方向Vのxy平面上の投影ベクトルV’と、x軸とのなす角度である。迎角パラメータψは、視線方向Vとxy平面とのなす角度である。なお、本実施形態では、迎角パラメータψが利用されるが、迎角パラメータψは省略されてもよい。すなわち、迎角パラメータψは、値が一定値(固定値)であってもよい。
なお、このようなカメラパラメータは、以下の説明用であり、実際の処理では、異なるパラメータが等価的に使用されてもよい。
図12は、サーバ装置10の描画機能に関する機能ブロック図の一例である。図13は、変形パラメータデータの説明図である。なお、図13において、“-”は任意であることを表し、“・・・”は同様の繰り返しを表す。図14は、距離パラメータデータの説明図である。同様に、図14(図15も同様)において、“・・・”は同様の繰り返しを表す。図15は、向きパラメータデータの説明図である。
サーバ装置10は、描画情報記憶部130と、操作情報取得部132と、描画データ送信部134と、描画処理部140とを含む。なお、描画情報記憶部130は、図1に示したサーバ記憶部12により実現でき、操作情報取得部132及び描画データ送信部134は、図1に示したサーバ通信部11により実現でき、描画処理部140は、図1に示したサーバ制御部13により実現できる。以下、各部の処理に関して、“算出”とは、データとして記憶された算出値や設定値等を読み出すだけの処理を含む概念である。
描画情報記憶部130は、描画処理部140により用いられる各種情報及びデータが記憶される。
描画情報記憶部130に記憶されるデータは、上述した特定位置に係る変形パラメータデータ13Aを含む。以下では、特定位置は、後述する所定オブジェクトが位置できる位置であるとする。すなわち、特定位置は、後述する所定オブジェクトの位置と一致しうる位置であるとする。
変形パラメータデータ13Aにおいては、上述した特定位置に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、通常値β0とは異なる変形パラメータA1の値が対応付けられる。なお、変形パラメータA1の通常値β0は一定値であるが、フィールド画像G60が複数種類用意される場合はフィールド画像ごとに異なりうる可変値であってもよい。また、特定位置に係る仮想カメラ60の位置パラメータ(X、Y)には、更に、向きパラメータθの値が対応付けられてもよい。例えば図13に示す例では、特定位置に係る位置パラメータ(X、Y)の各値(XA、YA)、(XB、YB)、(XC、YC)等に対して、特定位置ごとに、向きパラメータθの値に応じた変形パラメータA1の値が対応付けられている。例えば、図13の変形パラメータデータ13Aでは、特定位置A=(XA、YA)には、仮想カメラ60の向きがどのような向きでも、変形パラメータA1の値β1が対応付けられている。他方、特定位置C=(XC、YC)には、仮想カメラ60の向きが向きパラメータθ=θC1のときは変形パラメータA1の値β3が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC2のときは変形パラメータA1の値β4が対応付けられている。以下では、このように特定位置Cのように、仮想カメラ60の向きに応じて変形パラメータA1の値が変化する特定位置を、「仮想カメラ60の公転中に変形度合いが変化する特定位置」とも称し、変形パラメータデータ13A上で値β3や値β4のような、通常値β0とは異なる値が対応付けられる向き(向きパラメータθ=θC1やθC2となる向き)を「特定向き」と称する。特定向きは固定であるが、変化されてもよい。なお、他の実施形態では、仮想カメラ60の公転中に変形度合いが変化する特定位置は、設定されなくてもよい。また、特定位置Cは、特定向きが2つ設定されているが、1つだけ設定されてもよいし、3つ以上設定されてもよい。
また、描画情報記憶部130に記憶されるデータは、特定オブジェクトに係る変形パラメータデータ13Bを含む。変形パラメータデータ13Bにおいては、特定オブジェクトに、通常値β0とは異なる変形パラメータA1の値が対応付けられる。特定オブジェクトは、後述する所定オブジェクトとは異なる任意のオブジェクトである。例えば、特定オブジェクトは、第2オブジェクトのうちの、ユーザに注視させたいオブジェクトであることが好適である。例えば、特定オブジェクトは、移動物(例えばキャラクタ)に係るオブジェクトであってもよいし、固定物に係るオブジェクトであってもよい。図13の変形パラメータデータ13Bでは、特定オブジェクトG1には、変形パラメータA1の値βG1が対応付けられ、特定オブジェクトG2には、変形パラメータA1の値βG2が対応付けられている。他方、特定オブジェクトG3には、仮想カメラ60の向きが向きパラメータθ=θC3のときは変形パラメータA1の値βG3が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC4のときは変形パラメータA1の値βG4が対応付けられている。変形パラメータデータ13Aの場合と同様、以下では、このように特定オブジェクトG3のように、仮想カメラ60の向きに応じて変形パラメータA1の値が変化する特定オブジェクトを、「仮想カメラ60の公転中に変形度合いが変化する特定オブジェクト」とも称し、変形パラメータデータ13B上で値βG3や値βG4のような、通常値β0とは異なる値が対応付けられる向き(向きパラメータθ=θC3やθC4となる向き)を「特定向き」と称する。特定向きは固定であるが、変化されてもよい。例えば、特定オブジェクトG3が正面方向を有する場合、特定向きは、特定オブジェクトG3の正面方向の向きが変化することに応じて変化されてもよい。
また、描画情報記憶部130に記憶されるデータは、上述した特定位置に係る距離パラメータデータ14Aを含む。距離パラメータデータ14Aにおいては、特定位置に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、通常値γ0とは異なる距離パラメータA2の値が対応付けられる。なお、距離パラメータA2の通常値γ0は一定値であるが、フィールド画像G60が複数種類用意される場合はフィールド画像ごとに異なりうる可変値であってもよい。ある一の仮想カメラ60の特定位置に係る距離パラメータA2の値は、当該特定位置に位置付けられた仮想カメラ60により、対応する領域(及び当該領域内に位置するオブジェクト)が所望の距離感で捕捉されるように決定されてよい。例えば、特定の第2オブジェクトを近距離でユーザに見せたい場合、当該特定の第2オブジェクトが仮想カメラ60により近距離で捕捉されるような距離パラメータA2の値が、当該特定位置に係る位置パラメータ(X、Y)の各値に対応付けられてもよい。例えば、図14では、特定位置A=(XA、YA)には、距離パラメータA2の値γ1が対応付けられ、特定位置B=(XB、YB)には、距離パラメータA2の値γ2が対応付けられており、以下同様である。なお、本実施形態では、一例として、値γ1や値γ2のような、距離パラメータデータ14Aで定義される距離パラメータA2の値は、通常値γ0よりも有意に小さいものとする。なお、距離パラメータA2の値が小さくなるほど、仮想カメラ60とフィールドオブジェクトとの間の距離が短くなる。
また、描画情報記憶部130に記憶されるデータは、特定オブジェクトに係る距離パラメータデータ14Bを含む。距離パラメータデータ14Bにおいては、各特定オブジェクトに、通常値γ0よりも小さい距離パラメータA2の値が対応付けられる。図14の距離パラメータデータ14Bでは、特定オブジェクトG1には、距離パラメータA2の値γG1が対応付けられ、特定オブジェクトG2には、距離パラメータA2の値γG2が対応付けられている。
なお、本実施形態では、特定位置に係る距離パラメータデータ14Aにおいては、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定位置が定義されていないが、上述した変形パラメータデータ13Aのように、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定位置が定義されてもよい。すなわち、仮想カメラ60の公転中に距離パラメータA2の値が変化する特定位置が定義されてもよい。この場合、好ましくは、仮想カメラ60の公転中に変形度合いが変化する特定位置に対して、当該特定位置に係る特定向きに対して距離パラメータA2の値が対応付けられる。例えば、特定位置C=(XC、YC)には、仮想カメラ60の向きが向きパラメータθ=θC1のときは距離パラメータA2の値γ31が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC2のときは距離パラメータA2の値γ32が対応付けられてもよい。これにより、仮想カメラ60の公転中に曲げ変形度合いが変化する際に距離パラメータA2の値を変化させることができる。
また、同様に、本実施形態では、特定オブジェクトに係る距離パラメータデータ14Bにおいては、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定オブジェクトが定義されていないが、上述した変形パラメータデータ13Bのように、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定オブジェクトが定義されてもよい。すなわち、仮想カメラ60の公転中に距離パラメータA2の値が変化する特定オブジェクトが定義されてもよい。この場合も、好ましくは、仮想カメラ60の公転中に変形度合いが変化する特定オブジェクトに対して、当該特定オブジェクトに係る特定向きに対して距離パラメータA2の値が対応付けられる。例えば、特定オブジェクトG3には、仮想カメラ60の向きが向きパラメータθ=θC3のときは距離パラメータA2の値γG31が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC4のときは距離パラメータA2の値γG32が対応付けられてもよい。これにより、仮想カメラ60の公転中に曲げ変形度合いが変化する際に距離パラメータA2の値を変化させることができる。
また、描画情報記憶部130に記憶されるデータは、向きパラメータデータを含む。向きパラメータデータにおいては、向き変化位置に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、向きパラメータθの値が対応付けられる。ある一の仮想カメラ60の位置に係る向きパラメータθの値は、当該位置の仮想カメラ60の画角内に所望の領域が収まるように決定されてよい。例えば、特定の第2オブジェクトをユーザに見せたい場合、当該特定の第2オブジェクトが画角内に収まる領域に位置するように向きパラメータθの値が、当該位置に係る位置パラメータ(X、Y)の各値に対応付けられてもよい。向き変化位置は、例えば第1オブジェクトが移動しながら向きを変える位置等(例えば図2に示すカーブ路17の開始位置及び終了位置や、横通路14と縦通路15との交差位置等)に対応して設定されてもよい。例えば、図15では、向き変化位置T1(XP1、YP1)には、向きパラメータθの値θ1が対応付けられ、向き変化位置T2(XP2、YP2)には、向きパラメータθの値θ2が対応付けられており、以下同様である。向き変化位置T1、T2は、特定位置A、Bのような、通常値β0とは異なる変形パラメータA1の値が対応付けられた位置であってもよいし、及び/又は、通常値γ0とは異なる距離パラメータA2の値が対応付けられた位置であってもよい。
また、描画情報記憶部130に記憶されるデータは、迎角パラメータデータを含む。迎角パラメータデータにおいては、図示しないが、向きパラメータデータと同様、迎角変化位置に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、迎角パラメータψの値が対応付けられてよい。ある一の仮想カメラ60の位置に係る迎角パラメータψの値は、当該位置の仮想カメラ60の画角内に所望の領域が収まるように決定されてよい。例えば、特定の第2オブジェクトをユーザに見せたい場合、当該特定の第2オブジェクトが画角内に収まる領域に位置するように迎角パラメータψの値が、当該位置に係る位置パラメータ(X、Y)の各値に対応付けられてもよい。
なお、描画情報記憶部130に記憶されるデータは、図13、図14及び図15に示すような区分けで管理される必要はなく、適宜、統合して管理されてもよい。
操作情報取得部132は、ユーザの操作情報を取得する。なお、ユーザの操作情報は、端末装置20におけるユーザによる各種操作に応じて生成される。なお、操作情報は、ジェスチャーや音声入力等により生成されてもよい。本実施形態では、操作情報は、所定オブジェクトの移動指示、及び、仮想カメラ60の回転指示を含む。所定オブジェクトの移動指示は、フィールドオブジェクトに対する所定オブジェクトの位置(以下、単に「所定オブジェクトの位置」とも称する)を変化させるために指示であり、移動方向や移動量等の指示を含んでもよい。仮想カメラ60の回転指示は、上述した仮想カメラ60の回転を実現するための指示であり、回転の種別(公転軸Pcまわりの回転、即ち公転、又は、自転軸61まわりの回転、すなわち自転、若しくは、迎角パラメータψの値を変化させる回転)、回転方向等の指示を含んでもよい。所定オブジェクトは、任意であるが、本実施形態では、好ましくは、第1オブジェクトである。操作情報は、その他、仮想カメラ60の移動指示等を含んでもよい。
描画データ送信部134は、描画処理部140により生成されるフィールド画像用の描画データを端末装置20に送信する。なお、上述したように、他の実施形態では、描画処理部140の描画処理の一部又は全部が端末装置20側で実現されてもよい。例えば、描画処理部140が端末装置20により実現される場合は、描画データ送信部134は省略されてよい。
描画処理部140は、描画情報記憶部130内の各種データや端末装置20からの操作情報等に基づいて、フィールド画像用の描画データを生成する。
描画処理部140は、変化処理部142と、第2移動処理部144と、変形処理部145と、投影処理部146と、背景処理部147と、描画データ生成部148とを含む。
変化処理部142は、操作情報等に応じて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域を変化させる。例えば、変化処理部142は、仮想カメラ60の位置パラメータ(X、Y)の各値を変化させるとともに、位置パラメータ(X、Y)の各値を変化させる場合に、当該変化に応じた各種処理を実行する。
本実施形態では、フィールドオブジェクト77には特定オブジェクトが配置されるので、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域を変化させると、当該領域内に特定オブジェクトが位置する場合が生じうる。換言すると、フィールドオブジェクトにおける仮想カメラ60の画角62内に収まる領域は、実質的にカメラパラメータの値の取りうる全組み合わせ通りの数があり、その中には、特定オブジェクトが位置する領域(以下、「特定オブジェクト領域」とも称する)もあれば、当該特定オブジェクト領域の周辺の領域(所定オブジェクト領域の一例)等が存在する。また、本実施形態では、カメラパラメータの値が比較的に小さい分解能で変化できるため、特定オブジェクト領域は、特定オブジェクトが中央部に位置する第1オブジェクト領域と、特定オブジェクトが端部に位置する第2オブジェクト領域とを含む。
ここで、図11Aを参照して、特定オブジェクト等について説明する。図11Aには、互いに異なる3種類のカメラパラメータ(ここでは、カメラパラメータ1、2、3とする)のそれぞれであるときの、フィールドオブジェクト77における仮想カメラ60の画角62内に収まる領域R1、R2、R3が示される。カメラパラメータ1、2、3は、上述したカメラパラメータの各要素(X、Y、A2、θ、ψ)のうちの、少なくとも1つの値が異なる。従って、図11Aに示す3つの領域は、それぞれ異なる領域である。そして、図11Aに示す3つの領域R1、R2、R3のうちの、領域R1、R3には、特定オブジェクトG5、G7が配置されている。従って、この場合、領域R1、R3は、特定オブジェクト領域の一例である。他方、領域R2には、特定オブジェクトが配置されていない。従って、この場合、領域R2は、特定オブジェクトが位置しない所定オブジェクト領域の一例である。なお、特定オブジェクトが移動するオブジェクトである場合は、ある時点で特定オブジェクト領域であった領域が、他の時点では、特定オブジェクト領域ではなくなる場合もありうる。例えば、領域R2の場合、当該時点では画角62外に位置していた特定オブジェクトG6が移動して領域R2に位置する状態になると、領域R2は、特定オブジェクト領域となる。
変化処理部142は、第1移動処理部1420と、距離変更部1421と、向き変更部1422と、迎角変更部1423と、更新反映部1424と、回転処理部1425と、を含む。
第1移動処理部1420は、所定の第1移動条件が成立すると、仮想カメラ60の位置パラメータ(X、Y)の各値を更新する。所定の第1移動条件は、任意であるが、例えば操作情報の所定オブジェクトの移動指示に基づく所定オブジェクトの移動により満たされてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。
距離変更部1421は、更新後の位置パラメータ(X、Y)の各値に、距離パラメータA2の値を対応付ける。本実施形態では、距離変更部1421は、描画情報記憶部130内の距離パラメータデータを参照して、更新後の位置パラメータ(X、Y)の各値に対応付ける距離パラメータA2の値を算出する。この際、距離パラメータデータ14A上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合は、当該更新後の位置パラメータ(X、Y)の各値には、補間値が対応付けられてよい。この補間値の算出方法の例については、後述する。なお、他の実施形態では、距離パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合、距離変更部1421は、補間値に代えて通常値γ0をそのまま対応付けてもよい。
距離変更部1421は、第1距離変更部14211と、第2距離変更部14212とを含む。なお、図14に示す例とは異なり特定位置が設定されない他の実施形態では、第1距離変更部14211は省略されてよい。
第1距離変更部14211は、仮想カメラ60の位置と特定位置との関係に基づいて、距離パラメータA2の値を算出する(第1距離パラメータ算出処理)。本実施形態では、第1距離変更部14211は、図14を参照して上述したような特定位置に係る距離パラメータデータ14Aを参照して、仮想カメラ60の位置に基づいて、距離パラメータA2の値を算出する。第1距離変更部14211による第1距離パラメータ算出処理の一例は、図17を参照して後述する。
第2距離変更部14212は、更新後の位置パラメータ(X、Y)の各値に、当該特定オブジェクトに対応付けられた距離パラメータA2の値を対応付ける(第2距離パラメータ算出処理)。本実施形態では、第2距離変更部14212は、フィールドオブジェクトにおける仮想カメラ60の画角62内に収まる領域に特定オブジェクトが位置する場合に、図14を参照して上述したような特定位置に係る距離パラメータデータ14Bを参照して、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置する特定オブジェクトに基づいて、距離パラメータA2の値を算出する。
また、第2距離変更部14212は、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に特定オブジェクトが位置する場合に、当該領域における特定オブジェクトの位置に応じて、距離パラメータA2の値を算出してもよい。この場合、第2距離変更部14212は、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域のうちの、中央部に特定オブジェクトが位置する場合と、その両側の端部に特定オブジェクトが位置する場合とで、距離パラメータA2の値を変化させてもよい。具体的には、第2距離変更部14212は、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域のうちの、中央部に特定オブジェクトが位置する場合には、その両側の端部に特定オブジェクトが位置する場合よりも、距離パラメータA2の値を小さくしてよい。これにより、仮想カメラ60の画角内の中心付近に特定オブジェクトが位置する際に、当該特定オブジェクトを効果的に目立たせることができる。なお、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域のうちの、中央部とは、例えば図11Aの上側の特定オブジェクト領域においては、その中心線CTを中心とした距離L0内の範囲771の部分であってよい。この場合、距離L0は、当該特定オブジェクト領域の全体の距離L1よりも有意に小さければ任意であり、例えば、L1/2程度であってよい。この場合、範囲771の両側の範囲772、773に係る部分が、中央部の領域の端部に対応する。第2距離パラメータ算出処理の一例は、図27を参照して後述する。
向き変更部1422は、更新後の位置パラメータ(X、Y)の各値に、向きパラメータθの値を対応付ける。本実施形態では、向き変更部1422は、描画情報記憶部130内の向きパラメータデータを参照して、位置パラメータ(X、Y)の各値に応じた向きパラメータθの値を算出する。この際、向きパラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して向きパラメータθの値が対応付けられていない場合は、向き変更部1422は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、向き変更部1422は、算出した向きパラメータθの値を、更新後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、向きパラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して向きパラメータθの値が対応付けられていない場合は、向き変更部1422は、通常値θ0をそのまま対応付けてもよい。通常値θ0は、視線方向Vが所定オブジェクトの移動方向に対してz方向視で直角になるように設定されてよい。
迎角変更部1423は、更新後の位置パラメータ(X、Y)の各値に、迎角パラメータψの値を対応付ける。本実施形態では、迎角変更部1423は、描画情報記憶部130内の迎角パラメータデータを参照して、位置パラメータ(X、Y)の各値に応じた迎角パラメータψの値を算出する。この際、迎角パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して迎角パラメータψの値が対応付けられていない場合は、迎角変更部1423は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、迎角変更部1423は、算出した迎角パラメータψの値を、変化後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、迎角パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して迎角パラメータψの値が対応付けられていない場合は、迎角変更部1423は、通常値ψ0をそのまま対応付けてもよい。
更新反映部1424は、更新後の位置パラメータ(X、Y)の各値と、当該更新後の位置パラメータ(X、Y)の各値に対応付けられた各種パラメータ(距離パラメータA2、向きパラメータθ、及び迎角パラメータψ)の各値に基づいて、仮想カメラ60をグローバル座標系に対して位置付ける。これにより、仮想カメラ60が、フィールド面70(及びそれに伴いフィールドオブジェクト)に対して位置付けられる。
回転処理部1425は、所定の回転条件が成立すると、仮想カメラ60の回転処理を実行する。所定の回転条件は、例えば操作情報(仮想カメラ60の回転指示)に基づいて判定されてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。
回転処理部1425は、公転処理部14251と、自転処理部14252と、迎角処理部14253とを含んでよい。なお、他の実施形態では、公転処理部14251、自転処理部14252、及び迎角処理部14253の一部や全部が省略されてもよい。
公転処理部14251は、仮想カメラ60から離れた公転軸Pc(図10参照)まわりの視線方向Vの回転を実現する。なお、公転処理部14251は、仮想カメラ60の位置や所定オブジェクトの位置等に応じて、公転軸Pcの位置を適宜設定してよい。
自転処理部14252は、仮想カメラ60を通るz方向に平行な軸である自転軸61(図10参照)まわりの、視線方向Vの回転を実現する。
迎角処理部14253は、仮想カメラ60の視線方向Vの、xy平面とのなす角度である迎角パラメータψ(図5参照)の変化(すなわち仮想カメラ60を通るVz平面に垂直な軸まわりの回転)を実現する。
なお、一の処理周期で、公転処理部14251、自転処理部14252、及び迎角処理部14253のうちの2つ以上の処理部が同時に処理を実現してもよい。
第2移動処理部144は、所定の第2移動条件が成立すると、フィールドオブジェクトに対する所定オブジェクトの位置を更新する。なお、所定オブジェクトは、フィールドオブジェクトに対する位置が変化しうるオブジェクトであれば任意であるが、好ましくは、上述したように、第1オブジェクトである。所定の第2移動条件は、任意であるが、例えば操作情報(所定オブジェクトの移動指示)により満たされてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。なお、所定オブジェクトの位置は、例えばフィールド画像のテクスチャ座標系で定義されてよい。
変形処理部145は、仮想カメラ60の位置及び向きに基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形する曲げ変形処理を実行する。フィールド面70の曲げ変形は、上述したとおりである。図13に示す変形パラメータデータ13Aでは、例えば、位置パラメータ(X、Y)の各値が特定位置A(XA、YA)に対応する場合、変形処理部145は、仮想カメラ60の向きがどのような向きでも、変形パラメータA1の値β1に基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形する。また、位置パラメータ(X、Y)の各値が特定位置C(XC、YC)に対応する場合、変形処理部145は、仮想カメラ60の向きが“θC1”のときは変形パラメータA1の値β3に基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形し、また、仮想カメラ60の向きが“θC2”のときは変形パラメータA1の値β4に基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形する。
本実施形態では、変形処理部145は、第1変形パラメータ算出部1451と、第2変形パラメータ算出部1452と、変形パラメータ調整部1453と、原点設定処理部1454と、変形関数適用部1455と、を含む。なお、図13に示す例とは異なり特定位置が設定されない他の実施形態では、第1変形パラメータ算出部1451及び変形パラメータ調整部1453は省略されてよい。
第1変形パラメータ算出部1451は、図13を参照して上述したような特定位置に係る変形パラメータデータ13Aを参照して、仮想カメラ60の位置及び向きに基づいて、変形パラメータA1の値を算出する(第1変形パラメータ算出処理)。第1変形パラメータ算出部1451による第1変形パラメータ算出処理の一例は、図23を参照して後述する。
第2変形パラメータ算出部1452は、図13を参照して上述したような特定オブジェクトに係る変形パラメータデータ13Bを参照して、仮想カメラ60の位置及び向きに基づいて、変形パラメータA1の値を算出する(第2変形パラメータ算出処理)。第2変形パラメータ算出部1452による第2変形パラメータ算出処理の一例は、図24を参照して後述する。
変形パラメータ調整部1453は、第1変形パラメータ算出部1451により算出された変形パラメータA1の値と、第2変形パラメータ算出部1452により算出された変形パラメータA1の値とが一致しない場合は、補間処理により補間値を算出する。変形パラメータに係る補間処理の一例は、後述する。なお、他の実施形態では、変形パラメータ調整部1453は、第1変形パラメータ算出部1451により算出された変形パラメータA1の値と、第2変形パラメータ算出部1452により算出された変形パラメータA1の値とが一致しない場合は、一方(例えば第2変形パラメータ算出部1452により算出された変形パラメータA1の値)を優先的に利用してもよい。
原点設定処理部1454は、仮想カメラ60の位置及び向きに基づいて、フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置(以下、「原点位置」とも称する)を設定する。原点設定処理部1454は、2種類以上の設定態様で、原点位置を設定する。本実施形態では、一例として、原点設定処理部1454は、1種類目の設定態様として、所定オブジェクトの位置に基づいて原点位置を設定し、2種類目の設定態様として、所定オブジェクトとは異なる特定オブジェクトの位置に基づいて原点位置を設定する。例えば、原点設定処理部1454は、仮想カメラ60の画角内に収まる領域に特定オブジェクトが位置するか否かを判定し、仮想カメラ60の画角内に収まる領域に特定オブジェクトが位置すると判定した場合、当該特定オブジェクトの位置に基づいて原点位置を設定する。他方、原点設定処理部1454は、仮想カメラ60の画角内に収まる領域に特定オブジェクトが位置しないと判定した場合、所定オブジェクトの位置に基づいて原点位置を設定する。なお、他の実施形態では、原点設定処理部1454は、仮想カメラ60の画角内に収まる領域に特定オブジェクトが位置するか否かに無関係に、所定オブジェクトの位置等に基づいて原点位置を設定してもよいし、他の因子に基づいて原点位置を設定してもよい。
変形関数適用部1455は、原点設定処理部1454により設定された原点位置と、変形パラメータ調整部1453により算出(設定)された変形パラメータA1の値と、仮想カメラ60の向きとに基づいて、図7を参照して上述した関数F1に基づいて、フィールド面70を曲げ変形させる。
投影処理部146は、変形処理部145により曲げ変形されたフィールド面70に対して、背景オブジェクト以外の各種オブジェクト(第2オブジェクト等)を配置する。各種オブジェクトの配置は、上述した対応情報に基づいて実現できる。この際、投影処理部146は、所定オブジェクトについては、第2移動処理部144により算出された移動後の位置に所定オブジェクトを配置する。なお、フィールド画像は、上述したように、フィールド面70を曲げ変形させた後に投影されてもよい。
背景処理部147は、変形処理部145により曲げ変形されたフィールド面70に対して、背景オブジェクトを配置する。背景処理部147は、フィールド面70の曲げ変形度合いに基づいて、背景オブジェクトのz方向の位置を決定する。具体的には、背景処理部147は、フィールドオブジェクトで表現される仮想的な地平線HLの高さH1(図6参照)に基づいて、フィールドオブジェクトに対する背景オブジェクトの、z方向に沿った位置を決定する。例えば、背景処理部147は、フィールド面70の曲げ変形度合いの変化に起因して地平線HLの高さH1が小さくなる場合は、背景オブジェクトのz方向の位置を下方に移動させる。例えば図5に示す例では、角度αから角度α’に変化する場合、背景処理部147は、背景オブジェクトのz方向の位置を距離Δ1だけ下方に移動させてよい。距離Δ1は、図5に示すように、フィールド面70に対する仮想カメラ60からの接線6213(画角62内の接線)の、背景面72との交点P4と、接線6213’の同交点P5との間の距離である。この場合、曲げ変形の曲げ変形度合いの変化に起因して地平線HLの高さH1が変化した場合でも、当該変化に起因した違和感が生じがたい態様で背景オブジェクトを配置できる。
なお、背景処理部147は、所定の場合に、フィールドオブジェクトに対する背景オブジェクトの、z方向に沿った位置を変化させないこととしてもよい。例えば、変形処理部145による曲げ変形の曲げ変形度合いの変化量が比較的小さい場合、フィールドオブジェクトに対する背景オブジェクトの、z方向に沿った位置を変化させないこととしてもよい。
描画データ生成部148は、仮想カメラ60から視た各種オブジェクトの表現を含むフィールド画像(描画データ)を生成する。
次に、図16以降を参照して、描画機能に係るサーバ制御部13の動作を更に説明する。以降の処理フロー図(フローチャート)においては、各ステップの入力と出力の関係を損なわない限り、各ステップの処理順序を入れ替えてもよい。
図16は、サーバ制御部13により実現される処理の流れを示す概略フローチャートである。
図16に示す処理は、所定の処理周期ごとに実行されてよい。所定の処理周期は、フィールド画像のフレーム周期(更新周期)と同じであってよい。なお、以下で、「更新前」の値とは、ある処理周期(k+1)を基準とした前回値(前回の処理周期(k)で導出した値)に対応し、「更新後」の値とは、当該処理周期(k+1)で導出した今回値に対応する。なお、ここでは、一例として、初回の処理周期では、更新後の所定オブジェクトの位置(u(0)、v(0))は、所定の初期位置に設定され、仮想カメラ60の更新後の位置パラメータ(X、Y)の各値(X(0)、Y(0))は、所定オブジェクトの位置(u(0)、v(0))と同じに設定され、カメラパラメータの各値(X(0)、Y(0)、γ(0)、θ(0)、ψ(0))は、それぞれの通常値に設定される。
ステップS1600では、操作情報取得部132は、操作情報を取得する。なお、操作情報は、割り込み処理で端末装置20から受信されて、サーバ記憶部12のうちの所定の記憶部に記憶されてよい。この場合、操作情報取得部132は、順次、操作情報を所定の記憶部から読み出す。
ステップS1602では、第2移動処理部144は、ステップS1600で得た操作情報に所定オブジェクトの移動指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS1604に進み、それ以外の場合は、ステップS1616に進む。
ステップS1604では、第2移動処理部144は、ステップS1600で得た操作情報の所定オブジェクトの移動指示に基づいて、移動後の所定オブジェクトの位置を算出する。ここでは、移動後の所定オブジェクトの位置は、フィールド座標で(u(k+1)、v(k+1))であるとする。なお、移動前の所定オブジェクトの位置は、フィールド座標で(u(k)、v(k))であるとする。この場合、フィールド座標系での移動ベクトルは、(u(k+1)-u(k)、v(k+1)-v(k))である。なお、所定オブジェクトの移動指示は、このような移動ベクトル(移動方向)を表す指示であってよい。
ステップS1606では、第1移動処理部1420は、ステップS1604で得られた移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に基づいて、仮想カメラ60の更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))を算出する。なお、更新前の位置パラメータ(X、Y)の各値は、(X(k)、Y(k))であるとする。この場合、位置パラメータ(X、Y)の各値の変化ベクトルは、(X(k+1)-X(k)、Y(k+1)-Y(k))である。この場合、(X(k+1)、Y(k+1))は、(X(k+1)-X(k)、Y(k+1)-Y(k))=(u(k+1)-u(k)、v(k+1)-v(k))となるように算出されてよい。
ステップS1608では、距離変更部1421の第1距離変更部14211は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける更新後の距離パラメータA2の値γ(k+1)を算出する(第1距離パラメータ算出処理)。この第1距離パラメータ算出処理の具体例は、図17及び図18を参照して後述する。
ステップS1610では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける向きパラメータθの値θ(k+1)を算出する(向きパラメータ算出処理)。この向きパラメータ算出処理の具体例は、図19を参照して後述する。
ステップS1612では、迎角変更部1423は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける迎角パラメータψの値ψ(k+1)を算出する(迎角パラメータ算出処理)。この迎角パラメータ算出処理の具体例は、図20を参照して後で概説する。
ステップS1615では、変形処理部145は、所定オブジェクトの移動に伴う変形処理を実行する。所定オブジェクトの移動に伴う変形処理の具体例は、図21を参照して後述する。
ステップS1616では、第2移動処理部144は、更新後の所定オブジェクトの位置(u(k+1)、v(k+1))を、更新前の所定オブジェクトの位置(u(k)、v(k))に設定する。すなわち、今回値は前回値と同じにする。
ステップS1617では、回転処理部1425は、ステップS1600で得た操作情報に仮想カメラ60の回転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS1618に進み、それ以外の場合は、今回の処理周期はそのまま終了する。
ステップS1618では、回転処理部1425は、ステップS1600で得た操作情報に基づいて、仮想カメラ60の回転処理を実行する。回転処理は、上述したとおりである。
ステップS1619では、変形処理部145は、ステップS1618の回転処理後の仮想カメラ60の視線方向Vに基づいて、図7及び図7A等を参照して上述したフィールド面70(及びそれに伴いフィールドオブジェクト)の曲げ変形を実行する。
ステップS1620では、背景処理部147は、今回の処理周期で用いられた変形パラメータA1の今回値β(k+1)が前回値β(k)に対して変化したか否かを判定する。判定結果が“YES”の場合、ステップS1622に進み、それ以外の場合は、ステップS1623に進む。なお、変形例では、ステップS1620において、背景処理部147は、今回の処理周期で用いられた変形パラメータA1の今回値β(k+1)の、前回値β(k)に対する変化量が所定量以上であるか否かを判定してもよい。これにより、変化量が所定量以下である場合にステップS1622をスキップできるので、背景オブジェクトのz方向の位置の算出のための処理負荷を低減できる。また、別の変形例では、ステップS1620において、変形パラメータA1の今回値β(k+1)と前回値β(k)とを直接的に比較しない場合があってもよい。例えば、本実施形態とは異なり、上述した特定位置Cのような、仮想カメラ60の公転中に変形度合いが変化する特定位置が、設定されていない別の実施形態において、今回の処理周期のステップS1619までの処理内容が公転である場合、変形パラメータA1の今回値β(k+1)と前回値β(k)とを直接的に比較せずに、本ステップS1620の判定結果が“否定判定(NO)”とされてもよい。
ステップS1623では、距離変更部1421の第2距離変更部14212は、第2距離パラメータ算出処理を実行する。第2距離パラメータ算出処理の具体例は、図27を参照して後述する。
ステップS1624では、更新反映部1424は、ステップS1606からステップS1612で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))、又は、ステップS1606、ステップS1610からステップS1612及びステップS1623で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))、に基づいて、仮想カメラ60をグローバル座標系に位置付ける。
ステップS1625では、描画データ生成部148は、今回の処理周期での各種更新後の描画データ(フィールド画像の描画データ)を生成する。
ステップS1626では、描画データ送信部134は、ステップS1625で生成された描画データを端末通信部21に送信する。なお、端末通信部21は、描画データを受信すると、当該描画データに基づいて、表示部23上にフィールド画像の表示を更新する。
このようにして、図16に示す処理によれば、端末装置20から受信される操作情報に基づいて、当該操作情報を反映した描画データを生成し、生成した描画データを端末装置20に送信できる。従って、ゲームの進行に伴うフィールド画像の更新をリアルタイムに実現できる。
図17は、第1距離パラメータ算出処理(ステップS1608)の一例を示す概略フローチャートである。図18は、補間処理範囲の説明図であり、フィールド面70を示す斜視図である。
ステップS1700では、第1距離変更部14211は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、距離パラメータデータ14A(図14参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS1702に進み、それ以外の場合は、ステップS1704に進む。
ステップS1702では、第1距離変更部14211は、更新後の距離パラメータA2の値γ(k+1)に、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に対応する特定位置に対応付けられた距離パラメータA2の値を、対応付ける。例えば、図14に示す例では、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が特定位置A(XA、YA)に対応する場合、距離パラメータA2の値γ(k+1)=γ1とする。
ステップS1704では、第1距離変更部14211は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、距離パラメータデータ14A(図14参照)に設定された任意の特定位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、特定位置ごとに、テクスチャ座標系(=フィールド座標系)に対応付けて設定されてもよい。本実施形態では、簡易的に、補間処理範囲は、図18に示すように、特定位置を中心として半径rの円形領域内であるとする。この場合、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、特定位置を中心として半径rの円形領域内であるか否かが判定されてよい。ただし、他の実施形態では、補間処理範囲は、他の形態の領域で規定されてもよい。例えば、補間処理範囲は、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ距離パラメータA2及び迎角パラメータの各値が通常値γ0、ψ0である場合に、任意の向きパラメータθの値のときにも、仮想カメラ60の画角内に収まる領域に当該補間処理範囲に係る特定位置が位置するように、設定されてもよい。これは、後述する他の補間処理範囲についても同様である。図18には、フィールド面70上に、3つの特定位置Ps(1)からPs(3)が模式的に示され、それぞれに対応付けられた補間処理範囲Rs(1)からRs(3)が模式的に示されている。なお、図18では、補間処理範囲Rs(2)と補間処理範囲Rs(3)とは、互いに重複しており、重複領域Rs’がハッチング領域で示されている。なお、各特定位置Ps(1)、Ps(2)、Ps(3)は、特定位置A、B等のように、距離パラメータデータ14A(図14参照)に設定される。なお。補間処理範囲(後述する他のパラメータに係る補間処理範囲も同様)についても、距離パラメータデータ14A等で予め定義されてよい。
ステップS1706では、第1距離変更部14211は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲Rsに係る特定位置との間の距離(補間用の距離)を算出する。例えば、図18に示す例において、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が補間処理範囲Rs(1)内に位置する場合、(X(k+1)、Y(k+1))と、補間処理範囲Rs(1)に係る特定位置Ps(1)との間の距離d(1)を算出する。他方、図18に示す例において、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が重複領域Rs’内に位置する場合、(X(k+1)、Y(k+1))と補間処理範囲Rs(2)に係る特定位置Ps(2)との間の距離d(2)とともに、(X(k+1)、Y(k+1))と補間処理範囲Rs(3)に係る特定位置Ps(3)との間の距離d(3)を、算出する。
ステップS1708では、第1距離変更部14211は、ステップS1706で得た距離に基づいて、距離パラメータA2の補間値を算出する。例えば、上述した距離d(1)に係る距離パラメータA2の補間値γ(1)は、以下の式で算出されてもよい。
γ(1)=(γ1-γ0)/r×(r-d(1))+γ0
値γ1は、特定位置Ps(1)に対応付けられた値であり、上述のように通常値γ0より小さい。
他方、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が重複領域Rs’内に位置する場合は、補間値γ(Rs’)は、上述した距離d(2)に係る距離パラメータA2の補間値γ(2)と、上述した距離d(3)に係る距離パラメータA2の補間値γ(3)とに基づいて、以下の式で算出されてもよい。
γ(Rs’)=B0×γ(2)+(1-B0)×γ(3)
ここで、γ(2)、γ(3)は、以下のとおりである
γ(2)=(γ2-γ0)/r×(r-d(2))+γ0
γ(3)=(γ3-γ0)/r×(r-d(3))+γ0
値γ2、γ3は、特定位置Ps(2)、Ps(3)にそれぞれ対応付けられた値であり、上述のように通常値γ0より小さい。B0は、0から1の範囲内で変化する係数であり、更新後の位置パラメータ(X、Y)の各値が特定位置Ps(2)に近づくほど1に近づき、重複領域Rs’における特定位置Ps(2)側の境界位置で1となる。また、係数B0は、更新後の位置パラメータ(X、Y)の各値が特定位置Ps(3)に近づくほど0に近づき、重複領域Rs’における特定位置Ps(3)側の境界位置で0となる。例えば、B0は、以下の通りであってよい。
B0=(r-d(2))/{(r-d(2))+(r-d(3))}
ステップS1710では、第1距離変更部14211は、更新後の距離パラメータA2の値γ(k+1)に、ステップS1708で算出した補間値を設定する。
ステップS1712では、第1距離変更部14211は、更新後の距離パラメータA2の値γ(k+1)に通常値γ0を設定する。
このようにして、図17に示す処理によれば、位置パラメータ(X、Y)の各値の所定の処理周期ごとの変化に連動して、距離パラメータA2の値を徐々に変更できるので、例えば、特定位置に至った処理周期で通常値γ0から値γ1等に急変させる場合に比べて、穏やかな距離の変化を実現できる。この結果、ユーザに与えうる違和感を低減しつつ、距離パラメータA2の値を変化させることができる。
図19は、向きパラメータ算出処理(ステップS1610)の一例を示す概略フローチャートである。
ステップS1900では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、向きパラメータデータ(図15参照)に設定された任意の向き変化位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS1902に進み、それ以外の場合は、ステップS1904に進む。
ステップS1902では、向き変更部1422は、向きパラメータθの値θ(k+1)に、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に対応する向き変化位置に対応付けられた向きパラメータθの値を設定する。例えば、図15に示す例では、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が向き変化位置T1(XP1、YP1)に対応する場合、向きパラメータθの値θ(k+1)=θ1とする。
ステップS1904では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、向きパラメータデータ(図15参照)に設定された任意の向き変化位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、向き変化位置ごとに設定されてもよい。本実施形態では、補間処理範囲は、距離パラメータA2に係る補間処理範囲と同様、簡易的に、向き変化位置を中心として半径rの円形領域内(図18参照)であるとする。ただし、他の実施形態では、補間処理範囲は、他の形態の領域で規定されてもよい。また、他の実施形態では、向き変化位置の一部又はすべてに対しては、補間処理範囲は設定されなくてもよい。判定結果が“YES”の場合、ステップS1906に進み、それ以外の場合は、ステップS1912に進む。
ステップS1906では、向き変更部1422は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲Rsに係る特定位置との間の距離を算出する。当該距離の算出方法は、上述したステップS1706と同様であってよい。
ステップS1908では、向き変更部1422は、ステップS1906で得た距離に基づいて、向きパラメータθの補間値を算出する。補間値の算出方法は、上述したステップS1708と同様であってよい。
ステップS1910では、向き変更部1422は、向きパラメータθの値θ(k+1)に、ステップS1908で算出した補間値を設定する。
ステップS1912では、向き変更部1422は、向きパラメータθの値θ(k+1)に通常値θ0を設定する。通常値θ0は、所定オブジェクトの移動ベクトル(u(k+1)-u(k)、v(k+1)-v(k))に投影ベクトルV’が垂直をなすように設定されてよい。
このようにして、図19に示す処理によれば、位置パラメータ(X、Y)の各値の所定の処理周期ごとの変化に連動して、向きパラメータθの値を徐々に変更できるので、例えば、向き変化位置に至った処理周期で通常値θ0から値θ1等に急変させる場合に比べて、ユーザに与えうる違和感を低減できる穏やかな向きの変化を実現できる。
図20は、迎角パラメータ算出処理(ステップS1612)の一例を示す概略フローチャートである。図20に示す処理は、上述した図19に示す向きパラメータ算出処理とパラメータが異なるだけで実質的に同一であるので、説明は省略する。
図21は、所定オブジェクトの移動に伴う変形処理(ステップS1615)の一例を示す概略フローチャートである。図22は、曲げ変形処理の説明図であり、図2に示したフィールド画像が投影されたフィールド面70上に、ローカル座標系を対応付けた斜視図である。
ステップS2102では、第1変形パラメータ算出部1451は、特定位置に係る変形パラメータデータ13A(図13)を参照して、更新後の変形パラメータA1の値β(k+1)を算出する(第1変形パラメータ算出処理)。以下では、第1変形パラメータ算出処理で得られる更新後の変形パラメータA1の値β(k+1)を、区別のため、更新後の変形パラメータA1の第1値β’(k+1)と称する。第1変形パラメータ算出処理の具体例は、図23を参照して後述する。
ステップS2104では、第2変形パラメータ算出部1452は、特定オブジェクトに係る変形パラメータデータ13B(図13)を参照して、更新後の変形パラメータA1の値β(k+1)を算出する(第2変形パラメータ算出処理)。以下では、第2変形パラメータ算出処理で得られる更新後の変形パラメータA1の値β(k+1)を、区別のため、更新後の変形パラメータA1の第2値β”(k+1)と称する。第2変形パラメータ算出処理の具体例は、図24を参照して後述する。
ステップS2106では、変形パラメータ調整部1453は、ステップS2102で得た更新後の変形パラメータA1の第1値β’(k+1)と、ステップS2104で得た更新後の変形パラメータA1の第2値β”(k+1)とに基づいて、最終的な更新後の変形パラメータA1の値β(k+1)を設定する(変形パラメータ調整処理)。この変形パラメータ調整処理の具体例は、図25を参照して後述する。
ステップS2108では、原点設定処理部1454は、原点位置(フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置)(所定位置の一例)を設定する原点設定処理を実行する。原点設定処理の具体例は、図26を参照して後で概説する。
ステップS2110では、変形関数適用部1455は、ステップS2108で設定した原点位置に対応付けられる原点Oと、向きパラメータθの値θ(k+1)とに基づいて、フィールド面70のフィールド座標系(フィールド画像のテクスチャ座標系)にローカル座標系(図7、図22参照)を対応付ける。具体的には、ステップS2108で設定した原点を通り、x方向に対して向きパラメータθの値θ(k+1)をなす軸を、Xc軸とする。なお、図22に示す例では、フィールド面70上の(u(k+1)、v(k+1))を原点位置としてローカル座標系が対応付けられている状態が示される。
ステップS2112では、変形関数適用部1455は、ステップS2106で設定した更新後の変形パラメータA1の値β(k+1)と、ステップS2110でフィールド面70のフィールド座標系に対応付けたローカル座標系とに基づいて、フィールド面70を曲げ変形させる。この場合、例えば、変形関数適用部1455は、図7を参照して上述した関数F1に基づいて、フィールド面70を曲げ変形させることができる。
図23は、第1変形パラメータ算出部1451による第1変形パラメータ算出処理(ステップS2102)を示す概略フローチャートである。
ステップS2300では、第1変形パラメータ算出部1451は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ13A(図13参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS2302に進み、それ以外の場合は、ステップS2304に進む。
ステップS2302では、第1変形パラメータ算出部1451は、更新後の変形パラメータA1の第1値β’(k+1)に、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に対応する特定位置に対応付けられた変形パラメータA1の値を設定する。例えば、図13に示す変形パラメータデータ13Aでは、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が特定位置A(XA、YA)に対応する場合、更新後の変形パラメータA1の値β(k+1)=β1とする。
ステップS2304では、第1変形パラメータ算出部1451は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ(図13参照)に設定された任意の特定位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、特定位置ごとに設定されてもよい。本実施形態では、補間処理範囲は、距離パラメータA2に係る特定位置に対応付けられた補間処理範囲と同様、簡易的に、特定位置を中心として半径rの円形領域内(図18参照)であるとする。ただし、他の実施形態では、補間処理範囲は、上述したように、他の形態の領域で規定されてもよい。
ステップS2306では、第1変形パラメータ算出部1451は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲に係る特定位置との間の距離d(k+1)を算出する。当該距離の算出方法は、上述したステップS1706と同様であってよい。
ステップS2308では、第1変形パラメータ算出部1451は、ステップS2306で得た距離d(k+1)に基づいて、変形パラメータA1の補間値を算出する。補間値の算出方法は、上述したステップS1708と同様であってよい。
ただし、図13の変形パラメータデータ13Aの特定位置Cのような、仮想カメラ60の公転中に変形度合いが変化する特定位置の場合は、向きパラメータθの値θ(k+1)に基づいて、次のようにして算出されてよい。ここでは、特定位置Cに関して説明する。まず、特定位置Cに対応付けられる変形パラメータA1の値β(C0)は、θC1-Δθ1≦θ(k+1)≦θC1+Δθ1のときは、以下の式(1)により、θC2-Δθ1≦θ(k+1)≦θC2+Δθ1のときは、以下の式(2)により、算出されてよく、それ以外の範囲では、値β(C0)=通常値β0とされてよい。
β(C0)=-(β3-β0)/Δθ1×|(θ(k+1)-θC1)|+β3 式(1)
β(C0)=-(β4-β0)/Δθ1×|(θ(k+1)-θC2)|+β4 式(2)
例えば、式(1)では、(θ(k+1)-θC1)の絶対値に(β3-β0)/Δθ1を乗算した値を、β3から引いた値が、β(C0)とされる。ここで、Δθ1は、補間角度範囲を定める値であり、β3、β4は、特定位置Cの特定向きに対応付けられた変形パラメータA1の値であり、上述のように、通常値β0よりも大きい。なお、ここで、式(1)及び式(2)において、同じΔθ1が使用されているが、異なるΔθ1が使用されてもよい。
そして、特定位置Cと(X(k+1)、Y(k+1))との間の距離を距離d(dC)とすると、距離d(dC)に係る変形パラメータA1の補間値β(dC)は、上述したβ(C0)を用いて、以下の式で算出されてもよい。
β(dC)=(β(C0)-β0)/r×(r-d(dC))+β0
また、例えば特定位置Aと特定位置Bのそれぞれに係る補間処理範囲が重複領域Rs’を有する場合も、距離パラメータA2の場合と同様である。具体的には、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が重複領域Rs’内に位置する場合は、特定位置Aと(X(k+1)、Y(k+1))との間の距離を距離d(dA)とし、特定位置Bと(X(k+1)、Y(k+1))との間の距離を距離d(dB)とすると、補間値β(Rs’)は、距離d(dA)に係る変形パラメータA1の補間値β(dA)と、距離d(dB)に係る変形パラメータA1の補間値β(dB)とに基づいて、以下の式で算出されてもよい。
β(Rs’)=B1×β(dA)+(1-B1)×β(dB)
ここで、β(dA)、β(dB)は、以下のとおりである
β(dA)=(β1-β0)/r×(r-d(dA))+β0
β(dB)=(β2-β0)/r×(r-d(dB))+β0
B1は、0から1の範囲内で変化する係数であり、更新後の位置パラメータ(X、Y)の各値が特定位置Aに近づくほど1に近づき、重複領域Rs’における特定位置A側の境界位置で1となる。また、係数B1は、更新後の位置パラメータ(X、Y)の各値が特定位置Bに近づくほど0に近づき、重複領域Rs’における特定位置B側の境界位置で0となる。例えば、B1は、以下の通りであってよい。
B1=(r-d(dA))/{(r-d(dA))+(r-d(dB))}
ステップS2310では、第1変形パラメータ算出部1451は、更新後の変形パラメータA1の第1値β’(k+1)に、ステップS2308で算出した補間値を設定する。
ステップS2312では、第1変形パラメータ算出部1451は、更新後の変形パラメータA1の第1値β’(k+1)に通常値β0を設定する。
図24は、第2変形パラメータ算出部1452による第2変形パラメータ算出処理(ステップS2104)を示す概略フローチャートである。
ステップS2400では、第2変形パラメータ算出部1452は、フィールドオブジェクトにおける領域であって、ステップS1608からステップS1612で得たカメラパラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))に基づき絶対座標系に位置付けられた仮想カメラ60の画角内に位置する領域(以下、単に「フィールドオブジェクトにおける仮想カメラ60の画角内領域」又は単に「画角内領域」とも称する)に、特定オブジェクトが位置するか否かを判定する。なお、フィールドオブジェクトにおける仮想カメラ60の画角内領域は、カメラパラメータの各値に基づいて、一義的に定まる。
なお、正規状態のフィールドオブジェクトにおける仮想カメラ60の画角内領域の横方向の距離(例えば、フィールド座標系での距離)は、距離パラメータA2の値に応じて決まる。従って、例えば、フィールドオブジェクトにおける仮想カメラ60の画角内領域の横方向の距離をL1とすると、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の、投影ベクトルV’に垂直な方向(以下、単に「横方向」とも称する)の距離dL(k+1)に基づいて、L1/2≦dL(k+1)であるか否かを判定してもよい。この場合、L1/2≦dL(k+1)である場合、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定してもよい。
本実施形態では、特定オブジェクトに対応付けられた補間処理範囲に、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が位置する場合に、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定する。この場合、一の特定オブジェクトに対応付けられた補間処理範囲は、上述したように、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置する場合に、仮想カメラ60の画角内に収まる領域に当該一の特定オブジェクトが位置するように、設定されてよい。
本ステップS2400において、判定結果が“YES”の場合、ステップS2402に進み、それ以外の場合は、ステップS2410に進む。
ステップS2402では、第2変形パラメータ算出部1452は、フィールドオブジェクトにおける仮想カメラ60の画角内領域のうちの、中央部に特定オブジェクトが位置するか否かを判定する。例えば、第2変形パラメータ算出部1452は、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の横方向の距離dL(k+1)が0である場合に、フィールドオブジェクトにおける仮想カメラ60の画角内領域のうちの、中央部に特定オブジェクトが位置すると判定してもよい。あるいは、第2変形パラメータ算出部1452は、横方向の距離dL(k+1)が所定距離(L1/2よりも有意に小さい距離、例えばL1/4)以下である場合に、フィールドオブジェクトにおける仮想カメラ60の画角内領域のうちの、中央部に特定オブジェクトが位置すると判定してもよい。なお、仮想カメラ60の投影ベクトルV’は、ステップS1608及びステップS1610で得た位置パラメータ及び向きパラメータの更新後の各値(X(k+1)、Y(k+1)、θ(k+1))に基づいて導出できる。判定結果が“YES”の場合、ステップS2404に進み、それ以外の場合は、ステップS2406に進む。
ステップS2404では、第2変形パラメータ算出部1452は、更新後の変形パラメータA1の第2値β”(k+1)に、フィールドオブジェクトにおける仮想カメラ60の画角内領域の中央部に位置する特定オブジェクトに対応付けられた変形パラメータA1の値を設定する。例えば、図13に示す変形パラメータデータ13Bの場合、フィールドオブジェクトにおける仮想カメラ60の画角内領域の中央部に特定オブジェクトG1が位置する場合、更新後の変形パラメータA1の第2値β”(k+1)に、特定オブジェクトG1に対応付けられた変形パラメータA1の値βG1が対応付けられる。
ステップS2406では、第2変形パラメータ算出部1452は、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の横方向の距離dL(k+1)に基づいて、変形パラメータA1の補間値を算出する。例えば、上述した横方向の距離dL(k+1)を用いて、補間値β(dL)は、以下の式で算出されてもよい。
β(dL)=(βG*-β0)/L1/2×(L1/2-d(dL))+β0
値βG*は、フィールドオブジェクトにおける仮想カメラ60の画角内領域に位置する特定オブジェクトに対応付けられた変形パラメータA1の値であり、特定オブジェクトG1の場合、値βG1である。L1/2は、フィールドオブジェクトにおける仮想カメラ60の画角内領域の横方向の距離L1の半分である。
ステップS2408では、第2変形パラメータ算出部1452は、更新後の変形パラメータA1の第2値β”(k+1)に、ステップS2406で得た変形パラメータA1の補間値を設定する。
ステップS2410では、第2変形パラメータ算出部1452は、更新後の変形パラメータA1の第2値β”(k+1)に通常値β0を設定する。
図25は、変形パラメータ調整部1453による変形パラメータ調整処理(ステップS2106)を示す概略フローチャートである。
ステップS2500では、変形パラメータ調整部1453は、ステップS2102で得た第1値β’(k+1)とステップS2104で得た第2値β”(k+1)とがともに通常値β0であるか否かを判定する。判定結果が“YES”の場合、ステップS2502に進み、それ以外の場合は、ステップS2506に進む。
ステップS2502では、変形パラメータ調整部1453は、パラメータ状態を「通常状態」に設定する。通常状態は、変形パラメータA1の値が通常値β0である状態に対応する。
ステップS2504では、変形パラメータ調整部1453は、更新後の変形パラメータA1の値β(k+1)に、通常値β0を対応付ける。この場合、変形パラメータ調整部1453による調整は実現されない。
ステップS2506では、変形パラメータ調整部1453は、ステップS2104で得た第2値β”(k+1)が通常値β0であるか否かを判定する。判定結果が“YES”の場合、ステップS2508に進み、それ以外の場合は、ステップS2512に進む。
ステップS2508では、変形パラメータ調整部1453は、パラメータ状態を「第1状態」に設定する。第1状態は、変形パラメータA1の値が第1値β’(k+1)である状態に対応する。
ステップS2510では、変形パラメータ調整部1453は、更新後の変形パラメータA1の値β(k+1)に、ステップS2102で得た第1値β’(k+1)を対応付ける。
ステップS2512では、変形パラメータ調整部1453は、ステップS2102で得た第1値β’(k+1)が通常値β0であるか否かを判定する。判定結果が“YES”の場合、ステップS2514に進み、それ以外の場合(すなわち双方ともに通常値でない場合)は、ステップS2518に進む。
ステップS2514では、変形パラメータ調整部1453は、パラメータ状態を「第2状態」に設定する。第2状態は、変形パラメータA1の値が第2値β”(k+1)である状態に対応する。以下、この第2状態において、第2値β”(k+1)に係る特定オブジェクトを、「注視対象の特定オブジェクト」とも称する。
ステップS2516では、変形パラメータ調整部1453は、更新後の変形パラメータA1の値β(k+1)に、ステップS2104で得た第2値β”(k+1)を対応付ける。
ステップS2518では、変形パラメータ調整部1453は、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の横方向の距離dL(k+1)と、ステップS2306で得た補間用の距離d(k+1)とに基づいて、dL(k+1)>d(k+1)であるか否かを判定する。なお、ステップS2102で得た第1値β’(k+1)が特定位置に対応付けられた変形パラメータA1の値である場合(ステップS2302参照)は、補間用の距離d(k+1)=0とされる。同様に、ステップS2104で得た第2値β”(k+1)が特定オブジェクトに対応付けられた変形パラメータA1の値である場合(ステップS2404参照)は、横方向の距離dL(k+1)=0とされる。判定結果が“YES”の場合、ステップS2508に進み、それ以外の場合は、ステップS2514に進む。
このようにして図25に示す処理によれば、ステップS2102で得た第1値β’(k+1)とステップS2104で得た第2値β”(k+1)とがともに通常値β0でない場合(例えば、画角内領域に特定位置と特定オブジェクトの位置が同時に属する場合)は、上述した距離d(k+1)と横方向の距離dL(k+1)のうちの小さい方が優先される態様で、第1値β’(k+1)と第2値β”(k+1)のうちの一方が選択される。従って、フィールドオブジェクトにおける仮想カメラ60の画角内領域のうちの、中央部に特定オブジェクトが位置するときは、当該特定オブジェクトに対応付けられた変形パラメータA1の値が優先して利用される。
ただし、変形例では、ステップS2102で得た第1値β’(k+1)とステップS2104で得た第2値β”(k+1)とがともに通常値β0でない場合(例えば、画角内領域に特定位置と特定オブジェクトの位置が同時に属する場合)は、平均値や、重み付けされた合成値が利用されてもよい。重み付けの場合、例えば、重み付け係数w1、w2を用いて、更新後の合成値βcom(k+1)は、以下の通り算出されてもよい。
βcom(k+1)={w1×β’(k+1)+w2×β”(k+1)}/(w1+w2)
この場合、例えば、重み付け係数w1、w2は、以下の通りであってよい。
w1=1/d(k+1)、ただし、d(k+1)=0のときは、βcom(k+1)=β’(k+1)
w2=1/dL(k+1)、ただし、dL(k+1)=0のときは、βcom(k+1)=β”(k+1)
図26は、原点設定処理部1454による原点設定処理(ステップS2108)の一例を示す概略フローチャートである。図26Aは、内分点Piの説明図である。
ステップS2600では、原点設定処理部1454は、フィールドオブジェクトにおける仮想カメラ60の画角内領域に、特定オブジェクトが位置するか否かを判定する。なお、判定方法は、上述した図24のステップS2400と同様であってよい。判定結果が“YES”の場合、ステップS2602に進み、それ以外の場合は、ステップS2610に進む。なお、以下では、特定オブジェクトとは、ステップS2600でフィールドオブジェクトにおける仮想カメラ60の画角内領域に位置すると判定された特定オブジェクトを指す。
ステップS2602では、原点設定処理部1454は、フィールドオブジェクトにおける仮想カメラ60の画角内領域のうちの、中央部に特定オブジェクトが位置するか否かを判定する。なお、判定方法は、上述した図24のステップS2402と同様であってよい。判定結果が“YES”の場合、ステップS2604に進み、それ以外の場合は、ステップS2606に進む。
ステップS2604では、原点設定処理部1454は、原点位置に、特定オブジェクトの位置を設定する。すなわち、原点設定処理部1454は、フィールド面70(フィールド画像が投影されたフィールド面70)において、特定オブジェクトの位置に、ローカル座標系の原点Oを対応付ける。従って、この場合、曲げ変形に用いる関数F1の原点Oは、特定オブジェクトの位置に対応付けられる。ただし、曲げ変形に用いる関数F1の原点Oは、特定オブジェクトの位置に厳密に一致する必要はなく、その近傍であってもよい。
ステップS2606では、原点設定処理部1454は、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の横方向の距離dL(k+1)に基づいて、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、特定オブジェクトの位置との間の内分点Piの位置(XPi(k+1)、YPi(k+1))を算出する。内分点Piは、図26Aに示すように、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、特定オブジェクトの位置との間を、m:(1-m)での内分したときの位置である。このとき、mは、横方向の距離dL(k+1)が大きいほど0に近づき、横方向の距離dL(k+1)=L1/2のときに、m=0となる。なお、m=0のとき、内分点Piは、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と一致する。L1は上述したとおりであり、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置するときに取りうる横方向の距離dL(k+1)の最大値である。また、mは、横方向の距離dL(k+1)が小さいほど1に近づき、横方向の距離dL(k+1)=0のときに、m=1となる。なお、m=1のとき、内分点Piは、特定オブジェクトの位置と一致する。
ステップS2608では、原点設定処理部1454は、原点位置に、ステップS2606で得た内分点Piの位置を設定する。すなわち、原点設定処理部1454は、フィールド面70(フィールド画像が投影されたフィールド面70)において、ステップS2606で得た内分点Piの位置(XPi(k+1)、YPi(k+1))に、ローカル座標系の原点Oを対応付ける。従って、この場合、曲げ変形に用いる関数F1の原点Oは、内分点Piの位置(XPi(k+1)、YPi(k+1))に対応付けられる。ただし、曲げ変形に用いる関数F1の原点Oは、内分点Piの位置(XPi(k+1)、YPi(k+1))に厳密に一致する必要はなく、その近傍であってもよい。
ステップS2610では、原点設定処理部1454は、原点位置に、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))を設定する。すなわち、原点設定処理部1454は、フィールド面70(フィールド画像が投影されたフィールド面70)において、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に、ローカル座標系の原点Oを対応付ける。従って、この場合、曲げ変形に用いる関数F1の原点Oは、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に対応付けられる。ただし、曲げ変形に用いる関数F1の原点Oは、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に厳密に一致する必要はなく、その近傍であってもよい。
このように図26に示す処理によれば、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定された場合には、当該特定オブジェクトの位置に基づいて原点位置が設定される。これにより、特定オブジェクト全体が可視となりやすくなり、特定オブジェクトを効果的に強調できる。このため、特定オブジェクトは、ユーザに注視させたいオブジェクトであることが好適である。
また、図26に示す処理によれば、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置しないと判定された場合には、所定オブジェクトの位置(u(k+1)、v(k+1))に基づいて原点位置が設定される。これにより、所定オブジェクト全体が可視となりやすくなり、所定オブジェクトを効果的に強調できる。また、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置しないと判定された状態から、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定された状態へと遷移すると、原点位置が所定オブジェクトの位置から特定オブジェクトの位置に向かって変化するので、当該変化に起因したフィールド画像の見た目の変化(効果)を生むことができる。これにより、特定オブジェクトを効果的に強調できる。
また、図26に示す処理によれば、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置しないと判定された状態から、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定された状態へと遷移する処理周期で、原点位置が、所定オブジェクトの位置から特定オブジェクトの位置へと急変されることはない。すなわち、フィールドオブジェクトにおける仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定されると、その後、補間用の距離d(k+1)が減少するにつれて、原点位置が、所定オブジェクトの位置から特定オブジェクトの位置へと徐々に変化していく(ステップS2608参照)。これにより、上述したような原点位置の変化が比較的少ない数の処理周期(例えば1処理周期)で実現される場合に比べて、当該変化に起因してユーザに与えうる違和感を低減できる。
図27は、第2距離パラメータ算出処理(ステップS1623)の一例を示す概略フローチャートである。
ステップS2700では、第2距離変更部14212は、パラメータ状態が第2状態であるか否かを判定する。上述したように、第2状態は、更新後の変形パラメータA1の値β(k+1)が第2値β”(k+1)である状態に対応する。判定結果が“YES”の場合、ステップS2702に進み、それ以外の場合は、そのまま終了する。なお、そのまま終了する場合は、距離パラメータA2の値は、上述した第1距離変更部14211により算出された値(ステップS1608)で確定する。
ステップS2702では、第2距離変更部14212は、第2値β”(k+1)が、注視対象の特定オブジェクトに対応付けられた変形パラメータA1の値を用いて算出された補間値(ステップS2408で対応付けられた補間値)であるか否かを判定する。判定結果が“YES”の場合、ステップS2704に進み、それ以外の場合(すなわち、第2値β”(k+1)が、注視対象の特定オブジェクトに対応付けられた変形パラメータA1の値である場合)は、ステップS2703に進む。
ステップS2703では、第2距離変更部14212は、更新後の距離パラメータA2の値γ(k+1)に、注視対象の特定オブジェクトに対応付けられた距離パラメータA2の値(正規の値)をγG*を対応付ける。この場合、更新後の距離パラメータA2の値γ(k+1)には、上述した第1距離変更部14211により算出された値(ステップS1608)に代えて、注視対象の特定オブジェクトに対応付けられた距離パラメータA2の値(正規の値)γG*が対応付けられることになる。この場合、更新反映部1424は、ステップS1606、ステップS1610からステップS1612、及びステップS1623で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))に基づいて、仮想カメラ60をグローバル座標系に位置付ける(ステップS1624参照)。
ステップS2704では、第2距離変更部14212は、第2値β”(k+1)と、注視対象の特定オブジェクトに対応付けられた変形パラメータA1の値との比を算出する。すなわち、注視対象の特定オブジェクトに対応付けられた変形パラメータA1の値をβG*とすると、比=β”(k+1)/βG*を算出する。なお、図13の変形パラメータデータ13Bでは、注視対象の特定オブジェクトが特定オブジェクトG1である場合、比=β”(k+1)/βG1が算出される。
ここで、比=β”(k+1)/βG*は、注視対象の特定オブジェクトの位置の、画角内領域の中央部に対する近さを表す。β”(k+1)/βG*=1のときは、注視対象の特定オブジェクトが画角内領域の中央部に位置する状態に対応し、β”(k+1)/βG*が小さくなるにつれて、注視対象の特定オブジェクトが画角内領域の端部(横方向の端部)に近くなる。
ステップS2706では、第2距離変更部14212は、ステップS2704で得た比=β”(k+1)/βG*に基づいて、補間値γ’G*を算出する。具体的には、注視対象の特定オブジェクトに対応付けられた距離パラメータA2の値(正規の値)をγG*とすると、補間値γ’G*は、以下のとおりであってよい。
γ’G*=β”(k+1)/βG*×γG*
この場合、補間値γ’G*は、β”(k+1)/βG*が1に近づくにつれて(すなわち注視対象の特定オブジェクトが画角内領域の中央部に近づくにつれて)、注視対象の特定オブジェクトに対応付けられた値γG*に近づく。なお、図14の距離パラメータデータ14Bでは、注視対象の特定オブジェクトが特定オブジェクトG1である場合、値γG*=γG1である。
ステップS2708では、第2距離変更部14212は、更新後の距離パラメータA2の値γ(k+1)に、ステップS2706で得た補間値γ’G*を対応付ける。この場合、距離パラメータA2の値は、上述した第1距離変更部14211により算出された値(ステップS1608)に代えて、第2距離変更部14212により算出された値が対応付けられることになる。この場合、更新反映部1424は、ステップS1606、ステップS1610からステップS1612、及びステップS1623で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))に基づいて、仮想カメラ60をグローバル座標系に位置付ける(ステップS1624参照)。
なお、図27に示す処理では、比=β”(k+1)/βG*に応じて正規の値γGrから補間値γ’G*を算出しているが、これに限られない。例えば、上述した横方向の距離dL(k+1)とL1/2との比に応じて、正規の値γG*から補間値γ’G*を算出してもよい。具体的には、以下のとおりである。
γ’G*=dL(k+1)/L1/2×γG*
また、図27に示す処理では、ステップS2700でパラメータ状態が第2状態であると判定された場合に、ステップS2702に進むが、これに限られない。例えば、ステップS2700では、画角内領域に注視対象の特定オブジェクトが位置するか否かが判定され、画角内領域に注視対象の特定オブジェクトが位置すると判定された場合に、ステップS2702に進むこととしてもよい。
また、図27に示す処理では、例えば、画角内領域に特定位置と特定オブジェクトの位置が同時に属する場合に、パラメータ状態が第1状態から第2状態へと遷移する際に、距離パラメータA2の値が比較的大きく変化しうる。かかる比較的大きな変化は、適宜、補正されてもよい(変化が小さくなるように、フィルタリングされてもよい)。これにより、かかる比較的大きな変化(及びそれに伴うフィールド画像の急激な変化)に起因してユーザに与えうる違和感等を低減できる。例えば、パラメータ状態が第1状態から第2状態へと遷移する場合は、更新後の距離パラメータA2の値γ(k+1)と、更新前の距離パラメータA2の値γ(k)との間の差分が所定閾値を超える場合は、更新後の距離パラメータA2の値γ(k+1)が、更新前の距離パラメータA2の値γ(k)に近づく方向に更に補正されてもよい。また、更新後の距離パラメータA2の値γ(k+1)が更新前の距離パラメータA2の値γ(k)よりも大きくならないように、更新前の距離パラメータA2の値γ(k)が更新前の距離パラメータA2の値γ(k)よりも大きい場合は、更新前の距離パラメータA2の値γ(k)が維持されてもよい。この場合、距離パラメータの値が小さくなってから大きくなって再び小さくなるような不安定な態様となること(及びそれに伴うフィールド画像の不安定な変化)に起因してユーザに与えうる違和感等を低減できる。
次に、図28から図29Cを参照して、図16から図27を参照して説明した動作例の適用場面の一例を説明する。
図28から図29Cは、図16から図28を参照して説明した動作例の適用場面の説明図であり、図28は、フィールドオブジェクト77の平面図であり、図29Aは、位置E1に係るフィールド画像G24Aの一例を示し、図29Bは、位置E2に係るフィールド画像G24Bの一例を示す。図29Cは、位置E3に係るフィールド画像G24Cの一例を示す。図28では、フィールドオブジェクト77は、フィールド画像が正規状態のフィールド面70に投影された表現で示されている。図28では、位置E1から位置E3が例示されており、位置E3は、横通路14と縦通路15とが交差する位置に対応し、縦通路15の両側には、第2オブジェクトである複数の街路樹オブジェクト16が配置される。複数の街路樹オブジェクト16は、フィールドオブジェクト77に立設され、z方向に延在する。また、縦通路15には、バルーンのような浮遊物オブジェクト19が配置される。ここでは、浮遊物オブジェクト19が特定オブジェクトG2であるとする。図28では、浮遊物オブジェクト19は、v方向で街路樹オブジェクト16よりも位置E3から遠い側に配置されている。位置E2は、位置E1から位置E3に至る手前位置に対応し、仮想カメラ60の投影ベクトルV’と特定オブジェクトとの間の横方向の距離dLが上述したL1/2以下であるが0よりも有意に大きい位置である。なお、L1は、上述したように、フィールドオブジェクト77における仮想カメラ60の画角内領域の横方向の距離である。なお、図28では、一例として、複数の街路樹オブジェクト16は、v方向に沿って直線状に配置されているが、u方向にわずかにオフセットする態様で千鳥配置されてもよいし、縦通路15の片側だけに配置されてもよいし、2列以上で配置されてもよい。
ここでは、第1オブジェクト3がフィールドオブジェクト77上の位置E1から位置E3へと移動する際の描画機能について説明する。なお、この種の移動は、ユーザによる操作により実現されてもよいし、デモンストレーション画像の出力として実現されてもよい。なお、位置E1、E2は、特定位置ではなく、位置E1から位置E3までの間には、特定位置が存在せず、位置E1、E2は、他の特定位置や特定オブジェクトに係る補間処理範囲内に位置しないものとする。また、浮遊物オブジェクト19(特定オブジェクトG2)には、図13及び図14に示すように、変形パラメータA1の値βG2、距離パラメータA2の値γG2がそれぞれ対応付けられている。
第1オブジェクト3が位置E1に位置する状態における仮想カメラ60の位置パラメータ(X、Y)の各値は、第1オブジェクト3の位置に対応し、仮想カメラ60の向きパラメータθの値は、通常値θ0、すなわち投影ベクトルV’(図11参照)が第1オブジェクト3の移動方向(この場合、u方向)に垂直になるように設定される。このとき、フィールドオブジェクト77における仮想カメラ60の画角内領域には、第1オブジェクト3が位置し、図29Aに示すフィールド画像G24Aが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の通常値β0に応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の通常値β0に応じた表示サイズを有する。
第1オブジェクト3が位置E1から位置E3に向かって横通路14(u方向)に沿って処理周期ごとに移動量Δuだけ移動されると、仮想カメラ60の位置パラメータ(X、Y)の各値は、u方向に沿って処理周期ごとに移動量Δuだけ移動される。なお、この間、仮想カメラ60の向きパラメータθの値は固定される。
第1オブジェクト3が位置E2に到達した状態における仮想カメラ60の位置パラメータ(X、Y)の各値は、位置E2に到達した第1オブジェクト3の位置に対応し、向きパラメータθの値は、第1オブジェクト3が位置E1に位置する状態と同じである。このとき、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部(右側端部)には、浮遊物オブジェクト19が位置し、図29Bに示すフィールド画像G24Bが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の第2値β”(第2変形パラメータ算出処理(ステップS2104)で得られる更新後の変形パラメータA1の値β)に応じた高さを有し、第1オブジェクト3等は、第2距離変更部14212により算出される距離パラメータA2の値γ’G*(補間値γ’G*)に応じた表示サイズを有する。なお、補間値γ’G*は、通常値γ0よりも小さいので、図29Bに示すように、第1オブジェクト3の表示サイズは、図29Aに示すフィールド画像G24Aよりも大きい。
第1オブジェクト3が位置E3に到達した状態における仮想カメラ60の位置パラメータ(X、Y)の各値は、位置E3に到達した第1オブジェクト3の位置に対応し、向きパラメータθの値は、第1オブジェクト3が位置E1に位置する状態と同じである。このとき、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部には、浮遊物オブジェクト19が位置し、図29Cに示すフィールド画像G24Cが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の値βG2(浮遊物オブジェクト19に対応付けられた変形パラメータA1の値)に応じた高さを有し、距離パラメータA2の値γG2(浮遊物オブジェクト19に対応付けられた距離パラメータA2の値)応じた表示サイズを有する。
ここでは、上述したように、変形パラメータA1の値βG2は、通常値β0よりも大きい。従って、フィールド画像G24Cにおいては、フィールド画像G24Aにおいてよりも、フィールドオブジェクト77の曲げ変形の変形度合いが大きくなる。このため、図29A及び図29Cに模式的に示すように、地平線HLの画像内の位置が有意に変化する。また、距離パラメータA2の値γG2は、通常値γ0よりも大きい。従って、フィールド画像G24Cにおいては、浮遊物オブジェクト19の表示サイズが大きくなる。
ここで、図29Dは、他の動作例に係る位置E3に係るフィールド画像G24Dの一例を示す。図29Dに示す他の動作例では、上述した動作例とは異なり、位置E3に対応付けられた距離パラメータA2の値が位置E1に対応付けられた距離パラメータA2の値と同じ通常値γ0である。この場合は、フィールド画像G24Aとフィールド画像G24Dとの間で、地平線HLの高さH1が変化するものの、第1オブジェクト3等の表示サイズは同じままである。従って、街路樹オブジェクト16よりも奥側に位置する浮遊物オブジェクト19は、表示サイズが比較的小さく、目立ちにくい。
これに対して、図16から図28を参照して説明した動作例によれば、上述したように、フィールド画像G24Cにおいては、浮遊物オブジェクト19の表示サイズが比較的大きくなるので、浮遊物オブジェクト19を効果的に目立たせることができる。これにより、ユーザの浮遊物オブジェクト19への関心を誘引できる。
また、図29Dに示すようなフィールド画像G24Dを描画するような他の動作例は、変形パラメータA1の値を常に一定とする比較例による動作例(図示せず)に比べると、仮想カメラ60から視た仮想空間内の多様な表現を実現できるものの、変形度合いの変化量(地平線HLの高さH1の変化量)が比較的大きくなると、ユーザに違和感を与える可能性がある。
これに対して、図16から図28を参照して説明した動作例によれば、フィールド画像G24Aとフィールド画像G24Bとの間では、地平線HLの高さH1が変化しつつ、第1オブジェクト3等の表示サイズも変化する。これにより、変形度合いの変化(地平線HLの高さH1の変化)に起因してユーザに与えうる違和感を低減できる。すなわち、第1オブジェクト3等の表示サイズの変化がユーザの目を引きやすく印象的となることで、地平線HLの高さH1の変化に起因して生じうる違和感がかき消される。このようにして、位置E1と位置E3との間で、対応付ける変形パラメータA1の値を異ならせるとともに、対応付ける距離パラメータA2の値をも異ならせることで、仮想カメラ60から視た仮想空間内の多様な表現を実現しつつ、変形度合いの変化(地平線HLの高さH1の変化)に起因して生じうる違和感を低減できる。このような効果に関連して、距離パラメータA2の値の変化と、変形パラメータA1の値の変化の間に所定の関係をもたせることで、より違和感をなくすこともできる。例えば、距離パラメータA2の値の変化が急峻であれば、変形パラメータA1の値の変化が急峻であっても違和感を低減できるといった具合である。
また、位置E1と位置E3との間で、対応付ける変形パラメータA1の値を異ならせるとともに、対応付ける距離パラメータA2の値をも異ならせることで、フィールド画像の遷移態様が斬新となり、ゲームの興趣も高めることができる。また、縦通路15の存在を強調することもでき、特定オブジェクトである浮遊物オブジェクト19とともに、縦通路15やその周辺に配置される第2オブジェクト(例えば街路樹オブジェクト16)を目立たせることができる。この効果は、特に、端末装置20が例えばスマートフォンの画面のような、比較的小さい画面にフィールド画像が出力される場合に顕著である。また、目立たせる特定オブジェクトのために他の第2オブジェクトを配置しないなどの制限が緩和されるので、フィールドオブジェクト上における第2オブジェクト配置の自由度が増す。また、同様の理由から、フィールドオブジェクト上の第1オブジェクトの移動可能な領域の自由度も増しうる。
また、例えば図28に示すように、視線方向Vに沿って重複する街路樹オブジェクト16のような第2オブジェクトが配置される場合、フィールドオブジェクト77の曲げ変形の曲げ度合いを大きくすることで、奥行き感を高め、印象的な表現を実現できる。これにより、ユーザに、例えば縦通路15に沿って第1オブジェクト3を移動させたくなるような動機付けを与えることも可能となりうる。
ここで、図29Eは、更なる他の動作例に係る位置E3に係るフィールド画像G24Eの一例を示す。更なる他の動作例では、上述した動作例(図16から図28を参照して説明した動作例)とは異なり、原点位置(フィールドオブジェクト77におけるローカル座標系の原点Oが対応付けられる位置)が第1オブジェクト3の位置に設定される。この場合は、第1オブジェクト3は、フィールドオブジェクト77の最も高い位置に位置することで全体が可視となるのに対して、浮遊物オブジェクト19は、地平線HLよりも奥側に一部(下部)が隠れてしまう。すなわち、浮遊物オブジェクト19は、全体が可視とならずに比較的に目立ちにくい。
これに対して、図16から図28を参照して説明した動作例によれば、原点位置が第1オブジェクト3の位置に代えて、特定オブジェクである浮遊物オブジェクト19の位置に設定される。この場合、第1オブジェクト3は、フィールドオブジェクト77の最も高い位置に位置することで全体が可視となる。これにより、特定オブジェクトである浮遊物オブジェクト19を効果的に目立たせることができるともに、浮遊物オブジェクト19の全体(例えば浮遊している状態)を可視とすることができる。また、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部の範囲を比較的広くした場合は、原点位置が浮遊物オブジェクト19の位置に設定される状態が比較的長く継続されやすくなるので、注目させたい浮遊物オブジェクト19を効果的に目立たせることができる。
また、例えば、画角内領域の中央部に特定オブジェクトが位置するときに仮想カメラ60の視線方向Vで特定オブジェクトと第1オブジェクト及び/又は第2オブジェクトの間で重複(重なり)が生じうる場合でも、上述したように、原点位置が浮遊物オブジェクト19の位置に設定されるので、重複しうる各オブジェクトは、上下に互いに離間されやすくなる。すなわち、重複する第1オブジェクト及び/又は第2オブジェクトは、特定オブジェクトに対して相対的に画角内の下方向にスライドするため、特定オブジェクトと重複するオブジェクトを少なくすることができる。これにより、注目させたい浮遊物オブジェクト19を効果的に目立たせることができる。
そして、特定オブジェクトが強調されることにより、特定オブジェクトがユーザの操作に関連するオブジェクト(例えば移動目標)である場合、特定オブジェクトへの入力が行いやすくなるため操作性が向上する。また、特定オブジェクトの前後の第2オブジェクトの存在の影響をある程度、軽減できるので、第2オブジェクトの配置の自由度が増し、多様なフィールド画像を実現できる。
このようにして図16から図28を参照して説明した動作例によれば、フィールドオブジェクト77における仮想カメラ60の画角内領域に特定オブジェクトが位置しないと判定された場合と、フィールドオブジェクト77における仮想カメラ60の画角内領域に特定オブジェクトが位置すると判定された場合とで、変形パラメータA1の値や原点位置の設定態様を変化させることで、フィールドオブジェクト77の変形態様が異ならせることができる。これにより、フィールド画像の多様化を図りつつ、特定オブジェクトを目立たせる等、特定オブジェクトを効果的に強調できるような表現を実現できる。
また、図16から図28を参照して説明した動作例によれば、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部(第2範囲の一例)に浮遊物オブジェクト19が位置する場合と、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部(第1範囲の一例)に浮遊物オブジェクト19が位置する場合とで、変形パラメータA1の値が変化される。これにより、フィールドオブジェクト77における仮想カメラ60の画角内領域に浮遊物オブジェクト19が位置する間も、フィールドオブジェクト77の変形度合いを変化させることで、浮遊物オブジェクト19の見え方を変える等の表示効果を生むことができる。
また、図16から図28を参照して説明した動作例によれば、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部(第1範囲の一例)(中央部については、図11Aの範囲771参照)に浮遊物オブジェクト19が位置する場合に、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部(第2範囲の一例)(端部については、図11Aの範囲772、773参照)に浮遊物オブジェクト19が位置する場合よりも、変形パラメータA1の値が大きくされる。これにより、浮遊物オブジェクト19がフィールド画像上の比較的視認しやすい位置(中央部)に至った際に、フィールドオブジェクト77の曲げ変形の度合いを大きくして浮遊物オブジェクト19を更に効果的に目立たせることができる。
また、図16から図28を参照して説明した動作例によれば、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部から中央部へと浮遊物オブジェクト19の位置が変化するにつれて、変形パラメータA1の値は、通常値β0(所定設定値の一例)よりも大きい補間値(第2設定値の一例)から値βG2(第1設定値の一例)へと、1つ以上の補間値(第2設定値の一例)を介して変化(増加)する。これにより、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部に浮遊物オブジェクト19が到達した処理周期で、変形パラメータA1の通常値β0から値βG2への変化が実現される場合に比べて、穏やかな変化が実現される。これにより、かかる変形度合いの変化に起因してユーザに与えうる違和感を効果的に低減できる。これは、距離パラメータA2の通常値γ0から値γG2への変化や、原点位置の変化についても同様である。また、仮に、上記の補間を用いない場合、急激な変化を避けるため特定位置や特定オブジェクトを近接させないなどの制限が生じやすくなる。この点、上記の補間を用いることで、特定位置や特定オブジェクトの配置の自由度を高めることができる。この結果、フィールド画像の更なる多様化を図ることができる。
また、図16から図28を参照して説明した動作例によれば、例えば位置E2と位置E3との間の各位置に、補間により適切な変形パラメータA1の値を対応付けることができるので、当該各位置に変形パラメータデータ上で変形パラメータA1の各値を対応付ける場合に比べて、変形パラメータデータ用の記憶容量の効率的な利用を図ることができる。これは、距離パラメータのような他のパラメータについても同様である。
なお、図28では、位置E1から位置E3への第1オブジェクト3の移動について説明したが、位置E3から位置E1への第1オブジェクト3の移動についてはその逆が実現されてもよい。また、図28では、位置E1から位置E3への第1オブジェクト3の移動について説明したが、特定位置から位置E3への第1オブジェクト3の移動についても同様に実現されてもよい。
なお、特定位置と位置E3(フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部に浮遊物オブジェクト19が位置するときの、仮想カメラ60の位置)とが比較的近い場合、図16から図28を参照して説明した動作例によれば、上述したように、当該特定位置に対応付けられた変形パラメータA1の値や距離パラメータA2の値に基づき算出された同パラメータの補間値と、当該位置E3に係る特定オブジェクトに対応付けられた変形パラメータA1の値や距離パラメータA2の値に基づき算出された同パラメータの補間値とが、dL(k+1)>d(k+1)であるか否かに応じて調整されることになる(ステップS2518参照)。
また、本実施形態では、フィールドオブジェクト77における仮想カメラ60の画角内領域に2つ以上の特定オブジェクトが位置する場合についても、特定位置と特定オブジェクトとが比較的近い場合と同様の考え方で処理されてもよい。例えば、ここでは、特定オブジェクトが、第1特定オブジェクトと第2特定オブジェクトとを含み、上述した特定オブジェクト領域が、第1特定オブジェクト及び第2特定オブジェクトの双方が位置するオブジェクト領域を含む場合を想定する。このとき、オブジェクト領域は、第1特定オブジェクトが中央部に位置する第1オブジェクト領域と、第1特定オブジェクト及び第2特定オブジェクトのいずれもが中央部に位置しない第2オブジェクト領域と、第2特定オブジェクトが中央部に位置する第3オブジェクト領域と、を含むものとする。
ここで、図11Bを参照して、第1から第3特定オブジェクト領域について説明する。図11Bには、互いに異なる3種類のカメラパラメータ(ここでは、カメラパラメータ4、5、6とする)のそれぞれであるときの、フィールドオブジェクト77における仮想カメラ60の画角62内に収まる領域R4、R5、R6が示される。カメラパラメータ4、5、6は、上述したカメラパラメータの各要素(X、Y、A2、θ、ψ)のうちの、少なくとも1つの値が異なる。従って、図11Bに示す3つの領域は、それぞれ異なる領域である。そして、図11Bに示す3つの領域R4、R5、R6のうちの、領域R4には、その中央部(範囲771参照)に第1特定オブジェクトG11が配置されている。従って、この場合、領域R4は、第1オブジェクト領域の一例である。他方、領域R5には、その中央部(範囲771参照)には第1特定オブジェクト及び第2オブジェクトのいずれも配置されていない。すなわち、第1特定オブジェクト及び第2オブジェクトは、それぞれ、領域R5の中央部の両側の端部(範囲772、773参照)に配置されている。従って、この場合、領域R5は、第2オブジェクト領域の一例である。領域R6には、その中央部(範囲771参照)に第2特定オブジェクトG12が配置されている。従って、この場合、領域R6は、第3オブジェクト領域の一例である。
この場合、第1特定オブジェクト(及びそれに伴い第1オブジェクト領域)に対応付けられた変形パラメータA1の値(第1設定値の一例)や距離パラメータA2の値に基づき算出された同パラメータの補間値と、第2特定オブジェクト(及びそれに伴い第3オブジェクト領域)に対応付けられた変形パラメータA1の値(第1設定値の一例)や距離パラメータA2の値に基づき算出された同パラメータの補間値とが、dL1(k+1)>dL2(k+1)であるか否かに応じて調整されることになる。この場合、dL1(k+1)は、第1特定オブジェクトに係る横方向の距離であり、dL2(k+1)は、第2特定オブジェクトに係る横方向の距離である。具体的には、dL1(k+1)>dL2(k+1)である場合、第2特定オブジェクトに対応付けられた変形パラメータA1の値や距離パラメータA2の値に基づき算出された同パラメータの補間値(第2設定値の一例)が採用され、dL1(k+1)≦dL2(k+1)である場合、第1特定オブジェクトに対応付けられた変形パラメータA1の値や距離パラメータA2の値に基づき算出された同パラメータの補間値(第2設定値の一例)が採用されてよい。これは、図26に示した原点設定処理や図27に示した第2距離パラメータ算出処理について同様である。具体的には、dL1(k+1)>dL2(k+1)である場合、第2特定オブジェクトが、図26及び図27で説明した“特定オブジェクト”として扱われ、dL1(k+1)≦dL2(k+1)である場合、第1特定オブジェクトが、図26及び図27で説明した“特定オブジェクト”として扱われることで、同様の効果を2つの特定オブジェクト間で調整しながら実現できる。なお、このような変形例は、特定オブジェクトが移動する場合にも好適である。例えば、第1特定オブジェクト及び/又は第2特定オブジェクトが移動するオブジェクトである場合、第1特定オブジェクトと第2特定オブジェクトとの間の距離が変化して、上述した第2オブジェクト領域が発生する場合があるためである。
また、この場合も、画角内領域に第1特定オブジェクトの位置と第2特定オブジェクトの位置が同時に属する場合は、平均値や、重み付けされた合成値が利用されてもよい。重み付けの場合、例えば、重み付け係数w3、w4を用いて、更新後の合成値βcom’(k+1)は、第1特定オブジェクトに基づき算出された変形パラメータA1の値βをβA1’(k+1)とし、第2特定オブジェクトに基づき算出された変形パラメータA1の値βをβA2”(k+1)としたとき、以下の通り算出されてもよい。
βcom’(k+1)={w3×βA1’(k+1)+w4×βA2”(k+1)}/(w3+w4)
この場合、例えば、重み付け係数w3、w4は、以下の通りであってよい。
w3=1/dL1(k+1)、ただし、dL1(k+1)=0のときは、βcom’(k+1)=βA1’(k+1)
w4=1/dL2(k+1)、ただし、dL2(k+1)=0のときは、βcom’(k+1)=βA2”(k+1)
また、図16から図28を参照して説明した動作例によれば、フィールドオブジェクト77における仮想カメラ60の画角内領域に特定オブジェクトが位置しないと判定された場合でも、特定位置と仮想カメラ60の位置パラメータの各値(X、Y)との関係に基づいて、変形パラメータA1の値及び/又は距離パラメータA2の値が変化される。すなわち、位置パラメータの各値(X、Y)が特定位置に対応するような仮想カメラ60の位置(第1位置の一例)にあると判定した場合(例えば図17のステップS1700の“YES”及び/又は図23のステップS2300の“YES”)と、位置パラメータの各値(X、Y)が特定位置に対応しないような仮想カメラ60の位置(第2位置の一例)にあると判定した場合(例えば図17のステップS1700の“NO”及び/又は図23のステップS2300の“NO”)とで、変形パラメータA1の値及び/又は距離パラメータA2の値を異ならせる。これにより、フィールドオブジェクト77における仮想カメラ60の画角内領域に特定オブジェクトが位置しない場合においても、フィールド画像の更なる多様化を図ることができる。なお、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が特定位置に対応するような仮想カメラ60の位置(第1位置の一例)にあると判定した場合(例えば図17のステップS1700の“YES”)は、更新後の距離パラメータA2の値γ(k+1)は、当該特定位置に対応付けられた値とされる(ステップS1702)のに対して、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が特定位置に対応しないような仮想カメラ60の位置(第2位置の一例)にあると判定した場合(例えば図17のステップS1700の“NO”)は、更新後の距離パラメータA2の値γ(k+1)は、通常値γ0又は補間値とされる(ステップS1712、ステップS1710)。従って、等価的には、図13及び図14に示す特定位置A、B等のような、変形パラメータA1の値と距離パラメータA2の値の双方が対応付けられた特定位置の場合、更新後の距離パラメータA2の値γ(k+1)に基づいて、更新後の変形パラメータA1の値β(k+1)が設定されてもよい。例えば、更新後の距離パラメータA2の値γ(k+1)が、比較的大きい距離(第1距離の一例)に対応する値である場合、比較的小さい距離(第2距離の一例)に対応する値である場合に比べて変形度合いが小さくなるように、更新後の変形パラメータA1の値β(k+1)が設定されてもよい。また、他の実施形態として、距離パラメータA2の値に応じて変形パラメータA1の値を連動させてもよい。例えば、更新後の変形パラメータA1の値β(k+1)=通常値β0×通常値γ0/更新後の距離パラメータA2の値γ(k+1)、の関係で更新後の距離パラメータA2の値γ(k+1)に応じた更新後の変形パラメータA1の値β(k+1)が算出されてもよい。この場合、更新後の距離パラメータA2の値γ(k+1)が、比較的大きい距離(第1距離の一例)に対応する値である場合、比較的小さい距離(第2距離の一例)に対応する値である場合に比べて変形度合いが小さくなるように、更新後の変形パラメータA1の値β(k+1)が連動する。これにより、変形パラメータA1の各値と距離パラメータA2の各値とを個別に記憶しておく場合に比べて、記憶領域の節約を図ることができる。また、距離パラメータA2の値を、通常値γ0と、距離パラメータデータ14Aで定義される距離パラメータA2の値(例えば値γ1等)との間で、上述したように補間値を介して変化させることで、変形パラメータA1の値についても同様に変化できるので、これらの双方のパラメータの値の急激な変化による違和感の低減を同時に図ることができる。
次に、図30を参照して、上述した実施形態に対する変形例について説明する。
図30は、変形例によるサーバ装置10Aの描画機能に関する機能ブロック図の一例である。変形例によるサーバ装置10Aは、上述した実施形態によるサーバ装置10に対して、描画処理部140が描画処理部140Aで置換された点が異なる。
本変形例による描画処理部140Aは、上述した実施形態による描画処理部140に対して、距離変更部1421がズーム量変更部1421A(パラメータ値変化部の一例)で置換された点が異なる。
ズーム量変更部1421Aは、焦点距離や画角等のような、仮想カメラ60のズーム量に関連する光学パラメータの値を変更する。ズーム量変更部1421Aは、距離変更部1421と同様の効果が実現されるように、光学パラメータの値を変更してよい。例えば、距離変更部1421が距離パラメータA2の値を低減させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が大きくなるように光学パラメータの値を変化させることで実現されてもよい。同様に、距離変更部1421が距離パラメータA2の値を増加させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が小さくなるように光学パラメータの値を変化させることで実現されてもよい。このようにして、距離変更部1421による機能を、ズーム量変更部1421Aにより実現できる。
なお、他の変形例では、距離変更部1421とズーム量変更部1421Aとが同時に機能してもよい。また、上述した実施形態による距離変更部1421の第1距離変更部14211及び第2距離変更部14212のうちのいずれか一方だけがズーム量変更部1421Aにより実現されてもよい。
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
例えば、上述した実施形態では、フィールドオブジェクトにおける仮想カメラ60の画角内領域と特定オブジェクトとの位置関係に基づいて、変形パラメータA1の値、距離パラメータA2の値、及び、原点位置を設定する処理は、所定オブジェクトの移動に伴う変形処理(図16のステップS1615)において実行されるが、これに代えて又は加えて、回転処理後のフィールドオブジェクトの曲げ変形処理(図16のステップS1619)において実行されてもよい。この場合、回転処理後のフィールドオブジェクトにおける仮想カメラ60の画角内領域と特定オブジェクトとの位置関係に基づいて、変形パラメータA1の値、距離パラメータA2の値、及び、原点位置が同様に設定されてもよい。
具体的には、例えば公転及び/又は自転に係る回転処理において処理周期ごとに仮想カメラ60が所定角度ずつ回転される場合、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域は、当該所定角度ごとに1周分の数(迎角に係る回転処理の場合は、その可変範囲の応じた数)があり、以下では、所定領域と称する。1周分の複数の所定領域の中には、特定オブジェクトが位置する領域(特定オブジェクト領域)(第2の所定領域の一例)もあれば、特定オブジェクトが位置しない領域(第1の所定領域の一例)もある。なお、特定オブジェクト領域は、仮想カメラ60の位置によっては存在しない状況もある。1周分の複数の所定領域の中に特定オブジェクト領域が存在する状況下では、公転及び/又は自転に係る回転処理に基づいて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域間で変化する場合、変形パラメータA1の値が変化されない一方、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域と、特定オブジェクト領域との間で遷移する場合、変形パラメータA1の値が変化されてもよい。この場合、公転及び/又は自転に係る回転処理に基づいて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域間で変化する場合は、変化した視線方向Vに応じたフィールドオブジェクト77の曲げ変形(仮想カメラ60の視線方向Vに視て同じ変形態様の曲げ変形)が実現されるので、地平線HLの高さH1が変化しない。これにより、第1オブジェクト3の曲線状の動きに対しても仮想カメラ60を追従させつつ、地平線HLの高さH1を一定に保つことができる。ただし、変形例では、地平線HLの高さH1は、ユーザにとって違和感のないレベル内で変化されてもよい。例えばユーザにとって違和感のないレベルとは、フィールドオブジェクトが有しうる微細な凹凸等(すなわちフィールド面70の形状に対してわずかに異なる形状)に対応するレベルであってよい。このようなレベル内の変化であれば、地平線HLの高さH1が略同じとなる。
他方、変形パラメータA1の値が変化されない一方、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域と、特定オブジェクト領域との間で遷移する場合は、変形度合いが大きくされることで、上述したように特定オブジェクトを効果的に目立たせることができる。この場合も、上述した場合と同様に、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部(第2範囲の一例)に特定オブジェクトが位置する場合と、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部(第1範囲の一例)に特定オブジェクトが位置する場合とで、変形パラメータA1の値が変化されてもよい。また、公転及び/又は自転に係る回転処理に基づいて、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部から中央部へと特定オブジェクトの位置が変化するにつれて、変形パラメータA1の値は、通常値β0(所定設定値の一例)よりも大きい補間値(第2設定値の一例)から値βG*(第1設定値の一例)へと、1つ以上の補間値(第2設定値の一例)を介して変化(増加)されてもよい。
また、上述した実施形態では、フィールドオブジェクトにおける仮想カメラ60の画角内領域と特定オブジェクトとの位置関係に基づいて、変形パラメータA1の値、距離パラメータA2の値、及び、原点位置を設定する処理は、所定オブジェクトの移動に伴う変形処理(図16のステップS1615)において実行されるが、これに代えて又は加えて、所定オブジェクトの移動を伴わない距離変更処理(例えばユーザからの操作情報に含まれてよい距離変更指示に応じた距離変更処理)(図示せず)において実行されてもよい。これは、仮想カメラ60の位置パラメータの各値(X、Y)が変化しない場合でも、距離パラメータA2の値が変化することで、フィールドオブジェクト77における仮想カメラ60の画角内領域に特定オブジェクトが位置する状態と、特定オブジェクトが位置しない状態との間で遷移する場合があるためである。これは、上述した変形例によるズーム量変更部1421Aによる処理(仮想カメラ60のズーム量に関連する光学パラメータの値を変更する処理)の場合も同様である。
具体的には、例えばユーザからの距離変更指示に応じた距離変更処理において処理周期ごとに仮想カメラ60の距離パラメータA2の値が所定距離ずつ変化する場合、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域は、当該所定距離ごとに、距離の可変範囲に応じた数があり、これらの複数の領域の中には、特定オブジェクトが位置する領域(特定オブジェクト領域)もあれば、特定オブジェクトが位置しない領域もある。なお、特定オブジェクト領域は、仮想カメラ60の位置によっては存在しない状況もある。これらの複数の領域の中に特定オブジェクト領域が存在する状況下では、距離変更指示に応じた距離変更処理に基づいて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域間で変化する場合、変形パラメータA1の値が変化されない一方、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置しない領域と、特定オブジェクト領域との間で遷移する場合、変形パラメータA1の値が変化されてもよい。この場合、距離変更指示に応じた距離変更処理に基づいて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域が、特定オブジェクトが位置する領域に変化すると、変形度合いが大きくされることで、上述したように特定オブジェクトを効果的に目立たせることができる。この場合も、上述した場合と同様に、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部(第2範囲の一例)に特定オブジェクトが位置する場合と、フィールドオブジェクト77における仮想カメラ60の画角内領域の中央部(第1範囲の一例)に特定オブジェクトが位置する場合とで、変形パラメータA1の値が変化されてもよい。また、距離変更指示に応じた距離変更処理に基づいて、フィールドオブジェクト77における仮想カメラ60の画角内領域の端部から中央部へと特定オブジェクトの位置が変化するにつれて、変形パラメータA1の値は、通常値β0(所定設定値の一例)よりも大きい補間値(第2設定値の一例)から値βG*(第1設定値の一例)へと、1つ以上の補間値(第2設定値の一例)を介して変化(増加)されてもよい。
また、上述した実施形態では、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体を曲げ変形することで実現されるが、これに限られない。例えば、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域だけ又は当該領域を包含する一部領域だけに対して実行されてもよい。
また、上述した実施形態では、所定オブジェクトの移動の際に仮想カメラ60の位置パラメータ(X、Y)の各値に対応付けられる各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値は、位置パラメータ(X、Y)の各値が同じであるときは、毎回、同じである。例えば、所定オブジェクトの移動の際に、所定オブジェクトがある一の位置に位置するとき、当該一の位置に対しては同一の各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値が実現される。しかしながら、これに限られない。例えば、所定オブジェクトの移動の際に仮想カメラ60の位置パラメータ(X、Y)の各値に対応付けられる各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値は、位置パラメータ(X、Y)の各値が同じであるときでも、ゲームの進行状況や他の因子(例えば所定オブジェクトの移動方向等)に応じて変化されてもよい。例えば、特定位置Aに対応付けられる変形パラメータA1の値は、ゲームの進行状況や他の因子に基づき所定条件が成立した場合に値β1に設定され、それ以外の場合は、通常値β0に設定されてもよい。また、このような変化は、例えば、所定のイベントの発生や、移動する第2オブジェクトが、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に入った(画面内に配置された)場合や、ユーザによる画角変更のための手動操作に応じて実行されてもよい
また、上述した実施形態では、特定位置A、Bのような各特定位置は、フィールドオブジェクト上の固定位置であったが、フィールドオブジェクト上で移動可能な位置であってよい。例えば、特定位置の一部は、第2オブジェクトのうちの、移動する所定の第2オブジェクトの位置に対応して設定されてもよい。この場合、一の特定位置は、移動する所定の一の第2オブジェクトの位置に対して所定関係を有する位置であってよい。
また、上述した実施形態において、特定位置に係る補間処理範囲(以下、特定オブジェクトに係る補間処理範囲についても同様)が動的に変化されずに固定される場合として、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、任意の向きパラメータθの値のときにも、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に当該補間処理範囲に係る特定位置が位置するように、設定されてもよい点は、上述した。例えば、図31には、特定位置Aに関する補間処理範囲Rs(A)が平面視で示され、図32には、図31のラインJ1-J1に沿った断面視とラインJ2-J2に沿った断面視とが重ねて示されている。この場合、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P260に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、図32に示すように、パラメータθの値が図31に示すようなθ(P260)であるとき、特定位置Aは、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置する。なお、図32における境界線6211は、仮想カメラ60の画角62(z方向に垂直な方向に視た際の画角)(図5参照)の上側の境界線である。従って、この場合、位置P260は、補間処理範囲Rs(A)内に属する。他方、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P261に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、図32に示すように、パラメータθの値が図31に示すようなθ(P261)であるときでも、特定位置Aは、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置しない。従って、この場合、位置P260は、補間処理範囲Rs(A)内に属さない。しかしながら、更なる別の設定態様として、補間処理範囲は、そのときのカメラパラメータの各値に基づいて、動的に変化するように設定されてもよい。例えば、一の特定位置に係る補間処理範囲は、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ更新後(又は更新前)の距離パラメータA2及び迎角パラメータψの各値(通常値γ0、ψ0とは異なる値であるうる)が適用される場合に、任意の向きパラメータθの値のときにも、仮想カメラ60の画角内に収まる領域に当該一の特定位置が位置するように、動的に設定されてもよい。これは、仮想カメラ60の位置パラメータ(X、Y)の各値が、ある一の補間処理範囲外である場合でも、他の一の補間処理範囲内に位置することにより、距離パラメータA2等の値が通常値でない補間値である可能性があるためである。なお、ここでは、仮想カメラ60の公転や自転が任意の位置で可能である仕様を想定しているが、仮想カメラ60の公転や自転が、限定された位置でのみ可能である仕様や公転や自転自体が不能である仕様では、上述した説明における“任意の向きパラメータθの値のときにも”は、“その時点の向きパラメータθの値のときに”と読み替えて適用されてよい。
また、仮想カメラ60の位置パラメータ(X、Y)の各値の変化速度(時間あたりの変化量)が大きいほど補間処理範囲が広くなる態様で、当該変化速度に応じて補間処理範囲の広さが動的に変化されてもよい。あるいは、同様の考え方に基づいて、変化速度とは無関係に、所定のマージンを補間処理範囲に対して設定してもよい。これにより、例えば、仮想カメラ60の位置パラメータ(X、Y)の各値の変化速度(時間あたりの変化量)が大きいまま仮想カメラ60の位置パラメータ(X、Y)の各値が特定位置(又は特定オブジェクト)に対応する各値へと変化する場合に生じうる不都合(フィールド画像の比較的急激な変化に起因してユーザに与えうる違和感)を低減できる。
また、仮想カメラ60の画角が可変である場合、画角が小さいほど補間処理範囲が広くなる態様で、仮想カメラ60の画角に応じて補間処理範囲の広さが動的に変化されてもよい。これにより、例えば、仮想カメラ60の画角が小さいまま仮想カメラ60の位置パラメータ(X、Y)の各値が特定位置(特定オブジェクト)に対応する各値へと変化する場合に生じうる不都合(フィールド画像の比較的急激な変化に起因してユーザに与えうる違和感)を低減できる。
また、上述した実施形態では、補間処理範囲に更新後の位置パラメータ(X、Y)の各値が位置するか否かに基づいて、補間処理を実行するか否かが決定されているが、これに限られない。例えば、等価的に、更新後の仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ更新後の距離パラメータA2及び迎角パラメータψの各値に基づいて、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域(すなわち上述した画角内領域)を導出し、当該画角内領域に、特定位置や特定オブジェクトが位置するか否かが判定されてもよい。この場合、当該画角内領域に、特定位置や特定オブジェクトが位置するが、更新後の仮想カメラ60の位置パラメータ(X、Y)の各値が特定位置や特定オブジェクトの位置に対応しない場合に、補間処理が実行されてもよい。
また、上述した各実施形態において、第1移動処理部1420は省略されてもよい。
なお、以上の実施例に関し、さらに以下の付記を開示する。
[付記1]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに配置される特定オブジェクトとを含み、
前記フィールドオブジェクトにおける前記仮想カメラの画角内に収まる領域を変化させる変化処理部と、
前記フィールドオブジェクトを変形させる変形処理部とを含み、
前記変形処理部は、前記変化処理部により前記領域が変化させられる場合に、変化後の前記領域に前記特定オブジェクトが位置するか否かを判定し、変化後の前記領域に前記特定オブジェクトが位置すると判定した場合と、変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合とで、前記フィールドオブジェクトの変形態様を異ならせる、情報処理装置。
[付記2]
前記変形処理部は、更に、前記変化処理部により前記領域が変化させられる場合に、変化後の前記領域における第1範囲内に前記特定オブジェクトが位置するか又は前記領域における前記第1範囲に隣接する第2範囲内に前記特定オブジェクトが位置するかを判定し、前記第1範囲内に前記特定オブジェクトが位置すると判定した場合と、前記第2範囲内に前記特定オブジェクトが位置すると判定した場合とで、前記フィールドオブジェクトの変形度合いを異ならせる、付記1に記載の情報処理装置。
[付記3]
前記第2範囲は、前記仮想カメラの画角の横方向で前記第1範囲の両側に位置し、
前記変形処理部は、前記第1範囲内に前記特定オブジェクトが位置すると判定した場合に、前記第2範囲内に前記特定オブジェクトが位置すると判定した場合に比べて、前記フィールドオブジェクトの変形度合いを大きくする、付記2に記載の情報処理装置。
[付記4]
前記変化処理部により前記領域が変化させられるごとに、変化後の前記領域における前記特定オブジェクトの位置が、変化後の前記領域における横方向の一端側から中央部に向けて変化する場合に、前記変形処理部は、前記変化処理部により前記領域が変化させられるごとに、前記フィールドオブジェクトの変形度合いを大きくする、付記1に記載の情報処理装置。
[付記5]
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記仮想カメラの視線方向と前記第3軸を含む平面上において、所定位置を原点とし、前記原点を通り前記第3軸に平行な軸をY軸とし、前記フィールドオブジェクトに対して上側に向かう向きをY軸の正側とし、かつ、前記原点を通り前記Y軸に垂直な軸をX軸とした場合に、前記変形処理部は、X座標の値の絶対値が大きくなるほどY座標の値が線形又は非線形に単調減少する関数にしたがって、前記基本面を変形させる、付記1に記載の情報処理装置。
[付記6]
前記変形処理部は、前記領域の変化に応じて値が変化しうる変形パラメータであって、前記フィールドオブジェクトの変形度合いを定める変形パラメータの値に基づいて、前記基本面を変形させ、
前記変形パラメータは、前記関数において、前記X座標の値に係る項に割り当てられる係数を含む、付記5に記載の情報処理装置。
[付記7]
前記領域は、前記特定オブジェクトが位置しない所定オブジェクト領域と、前記特定オブジェクトが中央部に位置する第1オブジェクト領域と、前記特定オブジェクトが端部に位置する第2オブジェクト領域とを含み、
前記変形パラメータの値は、前記所定オブジェクト領域において設定される所定設定値と、前記第1オブジェクト領域において設定される第1設定値と、前記第2オブジェクト領域において設定される第2設定値とを含み、
前記第1設定値は、前記第2設定値よりも大きい前記フィールドオブジェクトの変形度合いを実現し、かつ、前記第2設定値は、前記所定設定値よりも大きい前記フィールドオブジェクトの変形度合いを実現する、付記6に記載の情報処理装置。
[付記8]
前記変形処理部は、前記変化処理部により前記領域が前記所定オブジェクト領域と前記第1オブジェクト領域との間で前記第2オブジェクト領域を介して変化させられる場合に、前記変形パラメータの値を、前記第2設定値を介して、前記第1設定値又は前記所定設定値へと変化させる、付記7に記載の情報処理装置。
[付記9]
前記特定オブジェクトは、第1特定オブジェクトと第2特定オブジェクトとを含み、
前記領域は、前記第1特定オブジェクト及び前記第2特定オブジェクトの双方が位置しない所定オブジェクト領域と、前記第1特定オブジェクト及び前記第2特定オブジェクトの双方が位置するオブジェクト領域とを含み、
前記オブジェクト領域は、前記第1特定オブジェクトが中央部に位置する第1オブジェクト領域と、前記第1特定オブジェクト及び前記第2特定オブジェクトのいずれもが中央部に位置しない第2オブジェクト領域と、前記第2特定オブジェクトが中央部に位置する第3オブジェクト領域と、を含み、
前記変形パラメータの値は、前記所定オブジェクト領域において設定される所定設定値と、前記第1オブジェクト領域及び前記第3オブジェクト領域において設定される第1設定値と、前記第2オブジェクト領域において設定される第2設定値とを含み、
前記第1設定値は、前記第2設定値よりも大きい前記フィールドオブジェクトの変形度合いを実現し、かつ、前記第2設定値は、前記所定設定値よりも大きい前記フィールドオブジェクトの変形度合いを実現し、
前記変形処理部は、前記変化処理部により前記領域が前記所定オブジェクト領域と前記第1オブジェクト領域又は前記第3オブジェクト領域との間で前記第2オブジェクト領域を介して変化させられる場合に、前記変形パラメータの値を、前記第2設定値を介して、前記第1設定値又は前記所定設定値へと変化させる、付記6に記載の情報処理装置。
[付記10]
前記変形処理部は、変化後の前記領域に前記特定オブジェクトが位置すると判定した場合に、前記所定位置を前記特定オブジェクトの位置に基づいて決定する、付記5から9のうちのいずれか1項に記載の情報処理装置。
[付記11]
前記変化処理部は、前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部を含み、
前記領域は、前記第1移動処理部により前記フィールドオブジェクトに対する前記仮想カメラの位置が変化させられることで変化する、付記1から10のうちのいずれか1項に記載の情報処理装置。
[付記12]
前記特定オブジェクトは、前記フィールドオブジェクトに対して固定されており、
前記オブジェクトは、前記フィールドオブジェクトに対して配置される所定オブジェクトを更に含み、
前記第1軸及び前記第2軸で規定される2次元平面内において前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させる第2移動処理部を更に含み、
前記変形処理部は、変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合に、前記所定位置を前記所定オブジェクトの位置に基づいて決定する、付記5から10のうちのいずれか1項に記載の情報処理装置。
[付記13]
前記変形処理部は、更に、変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合に、前記フィールドオブジェクトに対する前記仮想カメラの位置が第1位置にあるか、又は、前記仮想カメラの視線方向に交差する方向で前記第1位置とは異なる第2位置にあるかを判定し、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置にあると判定した場合と、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあると判定した場合とで、前記フィールドオブジェクトの変形度合いを異ならせる、付記1から12のうちのいずれか1項に記載の情報処理装置。
[付記14]
前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置である場合と、前記第2位置である場合とで、前記仮想カメラの視線方向での前記仮想カメラと前記フィールドオブジェクトとの間の距離を異ならせる距離変更部を更に含む、付記13に記載の情報処理装置。
[付記15]
前記変化処理部は、前記仮想カメラの視線方向での前記仮想カメラと前記フィールドオブジェクトとの間の距離を変化させる距離変更部を更に含み、
前記領域は、前記距離変更部により前記フィールドオブジェクトに対する前記仮想カメラの距離が変化させられることで変化する、付記1から12のうちのいずれか1項に記載の情報処理装置。
[付記16]
前記変形処理部は、更に、変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合に、前記フィールドオブジェクトに対する前記仮想カメラの距離が第1距離であるか又は前記第1距離とは異なる第2距離であるかを判定し、前記フィールドオブジェクトに対する前記仮想カメラの距離が前記第1距離であると判定した場合と、前記フィールドオブジェクトに対する前記仮想カメラの距離が前記第2距離であると判定した場合とで、前記フィールドオブジェクトの変形度合いを異ならせる、付記15に記載の情報処理装置。
[付記17]
前記変化処理部は、前記フィールドオブジェクトに対する前記仮想カメラの視線方向を前記第3軸まわりで変化させる回転処理部を更に含み、
前記領域は、前記回転処理部により前記フィールドオブジェクトに対する前記仮想カメラの視線方向が変化させられることで変化する、付記1から16のうちのいずれか1項に記載の情報処理装置。
[付記18]
前記領域は、前記回転処理部により前記第3軸まわりで前記視線方向が所定角度だけ変化させられるごとにそれぞれが順に前記仮想カメラの画角内に収まる複数の所定領域を含み、
前記複数の所定領域は、前記特定オブジェクトが位置しない複数の第1の所定領域と、前記特定オブジェクトが位置する第2の所定領域とを含み、
前記変形処理部は、前記回転処理部により前記第3軸まわりで前記視線方向が変化させられる場合に、前記領域が前記複数の第1の所定領域のうちの1つから他の1つへと変化するか否かを判定し、前記領域が前記複数の第1の所定領域のうちの1つから他の1つへと変化すると判定した場合は、変化前の前記視線方向に視たときと変化後の前記視線方向にみたときとで同じ変形態様となるように前記フィールドオブジェクトを曲げ変形させる、付記17に記載の情報処理装置。
[付記19]
前記オブジェクトは、背景オブジェクトを更に含み、
前記変形処理部により変形される前記フィールドオブジェクトの変形度合いが変化するか否かを判定し、前記フィールドオブジェクトの変形度合いが変化すると判定した場合に、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を変化させる背景処理部を更に含む、付記1から18のうちのいずれか1項に記載の情報処理装置。
[付記20]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理方法であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに配置される特定オブジェクトとを含み、
前記フィールドオブジェクトにおける前記仮想カメラの画角内に収まる領域を変化させる場合に、変化後の前記領域に前記特定オブジェクトが位置するか否かを判定し、
変化後の前記領域に前記特定オブジェクトが位置すると判定した場合に、前記フィールドオブジェクトを第1の変形態様で変形させ、
変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合に、前記フィールドオブジェクトを、前記第1の変形態様とは異なる第2の変形態様で変形させることを含む、コンピュータにより実行される情報処理方法。
[付記21]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理方法であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに配置される特定オブジェクトとを含み、
前記フィールドオブジェクトにおける前記仮想カメラの画角内に収まる領域を変化させる場合に、変化後の前記領域に前記特定オブジェクトが位置するか否かを判定し、
変化後の前記領域に前記特定オブジェクトが位置すると判定した場合に、前記フィールドオブジェクトを第1の変形態様で変形させ、
変化後の前記領域に前記特定オブジェクトが位置しないと判定した場合に、前記フィールドオブジェクトを、前記第1の変形態様とは異なる第2の変形態様で変形させる、
処理をコンピュータに実行させる情報処理プログラム。