以下、添付図面を参照しながら各実施形態について詳細に説明する。
(ゲームシステムの概要)
図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の位置が変化可能とされるだけなく、フィールド面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(z軸に平行な軸まわりに回転(自転)可能とされてもよい。あるいは、視線方向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に記憶されるデータは、変形パラメータデータを含む。変形パラメータデータにおいては、特定位置(上述)に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、通常値β0とは異なる変形パラメータA1の値が対応付けられる。なお、変形パラメータA1の通常値β0は一定値であるが、フィールド画像G60が複数種類用意される場合はフィールド画像ごとに異なりうる可変値であってもよい。また、特定位置に係る仮想カメラ60の位置パラメータ(X、Y)には、更に、向きパラメータθの値が対応付けられてもよい。例えば図13に示す例では、特定位置に係る位置パラメータ(X、Y)の各値(XA、YA)、(XB、YB)、(XC、YC)等に対して、特定位置ごとに、向きパラメータθの値に応じた変形パラメータA1の値が対応付けられている。例えば、図13では、特定位置A=(XA、YA)には、仮想カメラ60の向きがどのような向きでも、変形パラメータA1の値β1が対応付けられている。他方、特定位置C=(XC、YC)には、仮想カメラ60の向きが向きパラメータθ=θC1のときは変形パラメータA1の値β3が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC2のときは変形パラメータA1の値β4が対応付けられている。以下では、このように特定位置Cのように、仮想カメラ60の向きに応じて変形パラメータA1の値が変化する特定位置を、「仮想カメラ60の公転中に変形度合いが変化する特定位置」とも称し、変形パラメータデータ上で値β3や値β4のような、通常値β0とは異なる値が対応付けられる向き(向きパラメータθ=θC1やθC2となる向き)を「特定向き」と称する。なお、他の実施形態では、仮想カメラ60の公転中に変形度合いが変化する特定位置は、設定されなくてもよい。また、特定位置Cは、特定向きが2つ設定されているが、1つだけ設定されてもよいし、3つ以上設定されてもよい。
また、描画情報記憶部130に記憶されるデータは、距離パラメータデータを含む。距離パラメータデータにおいては、特定位置に係る仮想カメラ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のような、距離パラメータデータで定義される距離パラメータA2の値は、通常値γ0よりも有意に小さいものとする。なお、距離パラメータA2の値が小さくなるほど、仮想カメラ60とフィールドオブジェクトとの間の距離が短くなる。
また、描画情報記憶部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の位置パラメータ(X、Y)の各値を変化させるとともに、位置パラメータ(X、Y)の各値を変化させる場合に、当該変化に応じた各種処理を実行する。
変化処理部142は、第1移動処理部1420と、距離変更部1421と、向き変更部1422と、迎角変更部1423と、更新反映部1424と、回転処理部1425と、を含む。
第1移動処理部1420は、所定の第1移動条件が成立すると、仮想カメラ60の位置パラメータ(X、Y)の各値を更新する。所定の第1移動条件は、任意であるが、例えば操作情報の所定オブジェクトの移動指示に基づく所定オブジェクトの移動により満たされてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。
距離変更部1421は、更新後の位置パラメータ(X、Y)の各値に、距離パラメータA2の値を対応付ける。本実施形態では、距離変更部1421は、描画情報記憶部130内の距離パラメータデータを参照して、更新後の位置パラメータ(X、Y)の各値に応じた距離パラメータA2の値を算出する。この際、距離パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、距離変更部1421は、算出した距離パラメータA2の値を、更新後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、距離パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合、距離変更部1421は、通常値γ0をそのまま対応付けてもよい。
向き変更部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に示す例では、例えば、位置パラメータ(X、Y)の各値が(XA、YA)である場合、変形処理部145は、仮想カメラ60の向きがどのような向きでも、仮想カメラ60の視線方向Vと変形パラメータA1の値β1とに基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形する。また、位置パラメータ(X、Y)の各値が(XC、YC)である場合、変形処理部145は、仮想カメラ60の向きが“θC1”のときは変形パラメータA1の値β3と視線方向Vとに基づいて、フィールド面70(及びそれに伴いフィールドオブジェクト)を曲げ変形し、また、仮想カメラ60の向きが“θC2”のときは変形パラメータA1の値β4と視線方向Vとに基づいて、フィールド面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は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける距離パラメータA2の値γ(k+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を参照して後で概説する。
ステップS1614では、更新反映部1424は、ステップS1606からステップS1612で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))に基づいて、仮想カメラ60をグローバル座標系に位置付ける。
ステップ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に進み、それ以外の場合は、ステップS1624に進む。なお、変形例では、ステップS1620において、背景処理部147は、今回の処理周期で用いられた変形パラメータA1の今回値β(k+1)の、前回値β(k)に対する変化量が所定量以上であるか否かを判定してもよい。これにより、変化量が所定量以下である場合にステップS1622をスキップできるので、背景オブジェクトのz方向の位置の算出のための処理負荷を低減できる。また、別の変形例では、ステップS1620において、変形パラメータA1の今回値β(k+1)と前回値β(k)とを直接的に比較しない場合があってもよい。例えば、本実施形態とは異なり、上述した特定位置Cのような、仮想カメラ60の公転中に変形度合いが変化する特定位置が、設定されていない別の実施形態において、今回の処理周期のステップS1619までの処理内容が公転である場合、変形パラメータA1の今回値β(k+1)と前回値β(k)とを直接的に比較せずに、本ステップS1620の判定結果が“否定判定(NO)”とされてもよい。
ステップS1622では、背景処理部147は、変形パラメータA1の今回値β(k+1)と前回値β(k)との間の差分(すなわち曲げ変形の曲げ度合いの差分)に基づいて、背景オブジェクトのz方向の位置を変更する。なお、このような、曲げ変形の曲げ度合いの変化に基づく背景オブジェクトのz方向の位置の変更処理は、上述したとおりであってよい。
ステップS1624では、描画データ生成部148は、今回の処理周期での各種更新後の描画データ(フィールド画像の描画データ)を生成する。
ステップS1626では、描画データ送信部134は、ステップS1624で生成された描画データを端末装置20に送信する。なお、端末装置20は、描画データを受信すると、当該描画データに基づいて、表示部23上にフィールド画像の表示を更新する。
このようにして、図16に示す処理によれば、端末装置20から受信される操作情報に基づいて、当該操作情報を反映した描画データを生成し、生成した描画データを端末装置20に送信できる。従って、ゲームの進行に伴うフィールド画像の更新をリアルタイムに実現できる。
図17は、距離パラメータ算出処理(ステップS1608)の一例を示す概略フローチャートである。図18は、補間処理範囲の説明図であり、フィールド面70を示す斜視図である。
ステップS1700では、距離変更部1421は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、距離パラメータデータ(図14参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS1702に進み、それ以外の場合は、ステップS1704に進む。
ステップS1702では、距離変更部1421は、距離パラメータ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では、距離変更部1421は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、距離パラメータデータ(図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等のように、距離パラメータデータ(図14参照)に設定される。また、補間処理範囲(後述する他のパラメータに係る補間処理範囲も同様)についても、距離パラメータデータ等で予め定義されてよい。
ステップS1706では、距離変更部1421は、更新後の位置パラメータ(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)との間の(2)とともに、(X(k+1)、Y(k+1))と、補間処理範囲Rs(3)に係る特定位置Ps(3)との間の距離d(3)を算出する。
ステップS1708では、距離変更部1421は、ステップ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では、距離変更部1421は、距離パラメータA2の値γ(k+1)に、ステップS1708で算出した補間値を設定する。
ステップS1712では、距離変更部1421は、距離パラメータ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上に、ローカル座標系を対応付けた斜視図である。
ステップS2100では、変形処理部145は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ(図13参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS2102に進み、それ以外の場合は、ステップS2104に進む。
ステップS2102では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)に、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に対応する特定位置に対応付けられた変形パラメータA1の値を設定する。例えば、図13に示す例では、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が特定位置A(XA、YA)に対応する場合、更新後の変形パラメータA1の値β(k+1)=β1とする。
ステップS2104では、変形処理部145は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ(図13参照)に設定された任意の特定位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、特定位置ごとに設定されてもよい。本実施形態では、補間処理範囲は、距離パラメータA2に係る特定位置に対応付けられた補間処理範囲と同様、簡易的に、特定位置を中心として半径rの円形領域内(図18参照)であるとする。ただし、他の実施形態では、補間処理範囲は、上述したように、他の形態の領域で規定されてもよい。
ステップS2106では、変形処理部145は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲Rsに係る特定位置との間の距離を算出する。当該距離の算出方法は、上述したステップS1706と同様であってよい。
ステップS2108では、変形処理部145は、ステップS2106で得た距離に基づいて、変形パラメータA1の補間値を算出する。補間値の算出方法は、上述したステップS1708と同様であってよい。
ただし、図13の特定位置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は、通常値β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))}
ステップS2110では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)に、ステップS2108で算出した補間値を設定する。
ステップS2112では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)に通常値β0を設定する。
ステップS2114では、変形処理部145は、フィールド面70(フィールド画像が投影されたフィールド面70)において、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))(所定位置の一例)に、ローカル座標系の原点Oを対応付ける。すなわち、曲げ変形に用いる関数F1の原点Oは、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に対応付けられる。図22に示す例では、フィールド面70上の(u(k+1)、v(k+1))にローカル座標系の原点Oが対応付けられている状態が示される。なお、他の実施形態では、ローカル座標系の原点Oを対応付ける位置(フィールド面70上の位置)は、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))以外の位置であってもよい。また、ローカル座標系の原点Oを対応付ける位置(フィールド面70上の位置)は、移動後の所定オブジェクトの位置(u(k+1)、v(k+1))に厳密に一致する必要はなく、その近傍であってもよい。
ステップS2116では、変形処理部145は、ステップS2114で設定した原点Oと、向きパラメータθの値θ(k+1)とに基づいて、フィールド面70のフィールド座標系(フィールド画像のテクスチャ座標系)にローカル座標系(図7、図22参照)を対応付ける。具体的には、ステップS2114で設定した原点Oを通り、x方向に対して向きパラメータθの値θ(k+1)をなす軸を、Xc軸とする。
ステップS2118では、変形処理部145は、ステップS2102、ステップS2110、又はステップS2112で設定した更新後の変形パラメータA1の値β(k+1)と、ステップS2116でフィールド面70のフィールド座標系に対応付けたローカル座標系とに基づいて、フィールド面70を曲げ変形させる。この場合、例えば、変形処理部145は、図7を参照して上述した関数F1に基づいて、フィールド面70を曲げ変形させることができる。
図21に示す例によれば、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域とは無関係に、フィールド面70全体が略等断面で曲げ変形される。この場合、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域に応じて曲げ変形する範囲を可変する場合に比べて、処理負荷を低減できる。
次に、図23から図24Cを参照して、図16から図22を参照して説明した動作例の適用場面の一例を説明する。
図23から図24Bは、図16から図22を参照して説明した動作例の適用場面の説明図であり、図23は、フィールドオブジェクト77の平面図であり、図24Aは、特定位置Aに係るフィールド画像G24Aの一例を示し、図24Bは、特定位置Bに係るフィールド画像G24Bの一例を示す。図24Cは、他の動作例に係る特定位置Bに係るフィールド画像G24Cの一例を示す。図23では、フィールドオブジェクト77は、フィールド画像が正規状態のフィールド面70に投影された表現で示されている。図23では、特定位置A、Bが例示されており、特定位置Bは、横通路14と縦通路15とが交差する位置に対応し、縦通路15の両側には、第2オブジェクトである複数の街路樹オブジェクト16が配置される。複数の街路樹オブジェクト16は、フィールドオブジェクトに立設され、z方向に延在する。なお、図23では、一例として、複数の街路樹オブジェクト16は、v方向に沿って直線状に配置されているが、u方向にわずかにオフセットする態様で千鳥配置されてもよいし、縦通路15の片側だけに配置されてもよいし、2列以上で配置されてもよい。
ここでは、第1オブジェクト3がフィールドオブジェクト77上の特定位置Aから特定位置Bへと移動する際の描画機能について説明する。なお、この種の移動は、ユーザによる操作により実現されてもよいし、デモンストレーション画像の出力として実現されてもよい。なお、特定位置A、Bには、図13及び図14に示すように、変形パラメータA1の値β1、β2と、距離パラメータA2の値γ1、γ2とがそれぞれ対応付けられている。ここでは、値β1は、値β2よりも小さく、値γ1は、値γ2よりも大きいものとする。
第1オブジェクト3が特定位置Aに位置する状態における仮想カメラ60の位置パラメータ(X、Y)の各値(第1位置の一例)は、第1オブジェクト3の位置に対応し、仮想カメラ60の向きパラメータθの値は、通常値θ0、すなわち投影ベクトルV’(図11参照)が第1オブジェクト3の移動方向(この場合、u方向)に垂直になるように設定される。このとき、仮想カメラ60の画角内に収まる領域には、第1オブジェクト3が位置し、図24Aに示すフィールド画像G24Aが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の値β1に応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の値γ1に応じた表示サイズを有する。
第1オブジェクト3が特定位置Aから特定位置Bに向かって横通路14(u方向)に沿って処理周期ごとに移動量Δuだけ移動されると、仮想カメラ60の位置パラメータ(X、Y)の各値は、u方向に沿って処理周期ごとに移動量Δuだけ移動される。なお、この間、仮想カメラ60の向きパラメータθの値は固定される。
第1オブジェクト3が特定位置Bに到達した状態における仮想カメラ60の位置パラメータ(X、Y)の各値(第2位置の一例)は、特定位置Bに到達した第1オブジェクト3の位置に対応し、向きパラメータθの値は、第1オブジェクト3が特定位置Aに位置する状態と同じである。このとき、仮想カメラ60の画角内に収まる領域には、第1オブジェクト3や街路樹オブジェクト16が位置し、図24Bに示すフィールド画像G24Bが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の値β2に応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の値γ2に応じた表示サイズを有する。
ここでは、上述したように、値β1は、値β2よりも小さく、値γ1は、値γ2よりも大きい。従って、フィールド画像G24Bにおいては、フィールド画像G24Aにおいてよりも、フィールドオブジェクト77の曲げ変形の変形度合いが大きくなる。このため、図24A及び図24Bに模式的に示すように、地平線HLの画像内の位置が有意に変化する。
ここで、図24Cは、他の動作例に係る特定位置Bに係るフィールド画像G24Cの一例を示す。他の動作例では、上述した動作例とは異なり、特定位置Bに対応付けられた距離パラメータA2の値が特定位置Aに対応付けられた距離パラメータA2の値と同じである。この場合は、フィールド画像G24Aとフィールド画像G24Cとの間で、地平線HLの位置が変化するものの、第1オブジェクト3等の表示サイズは同じままである。このような他の動作例は、変形パラメータA1の値を常に一定とする比較例による動作例(図示せず)に比べると、仮想カメラ60から視た仮想空間内の多様な表現を実現できるものの、変形度合いの変化量(地平線HLの高さH1の変化量)が比較的大きくなると、ユーザに違和感を与える可能性がある。
これに対して、図16から図22を参照して説明した動作例によれば、フィールド画像G24Aとフィールド画像G24Bとの間では、地平線HLの位置が変化しつつ、第1オブジェクト3等の表示サイズも変化する。これにより、変形度合いの変化(地平線HLの高さH1の変化)に起因してユーザに与えうる違和感を低減できる。すなわち、第1オブジェクト3等の表示サイズの変化がユーザの目を引きやすく印象的となることで、地平線HLの高さH1の変化に起因して生じうる違和感がかき消される。このようにして、特定位置Aと特定位置Bとの間で、対応付ける変形パラメータA1の値を異ならせるとともに、対応付ける距離パラメータA2の値をも異ならせることで、仮想カメラ60から視た仮想空間内の多様な表現を実現しつつ、変形度合いの変化(地平線HLの高さH1の変化)に起因して生じうる違和感を低減できる。このような効果に関連して、距離パラメータA2の値の変化と、変形パラメータA1の値の変化の間に所定の関係をもたせることで、より違和感をなくすこともできる。例えば、距離パラメータA2の値の変化が比較的急峻であれば、変形パラメータA1の値の変化が比較的急峻であっても違和感を低減できるといった具合である。
また、特定位置Aと特定位置Bとの間で、対応付ける変形パラメータA1の値を異ならせるとともに、対応付ける距離パラメータA2の値をも異ならせることで、フィールド画像の遷移態様が斬新となり、ゲームの興趣も高めることができる。また、縦通路15の存在を強調することもでき、縦通路15やその周辺に配置される第2オブジェクト(例えば街路樹オブジェクト16)を目立たせることができる。この効果は、特に、端末装置20が例えばスマートフォンの画面のような、比較的小さい画面にフィールド画像が出力される場合に顕著である。また、目立たせる第2オブジェクトのために他の第2オブジェクトを配置しないなどの制限が緩和されるので、フィールドオブジェクト上における第2オブジェクト配置の自由度が増す。また、同様の理由から、フィールドオブジェクト上の第1オブジェクトの移動可能な領域の自由度も増しうる。
また、例えば図23に示すように、視線方向Vに沿って重複する街路樹オブジェクト16のような第2オブジェクトが配置される場合、フィールドオブジェクト77の曲げ変形の曲げ度合いを大きくすることで、奥行き感を高め、印象的な表現を実現できる。これにより、ユーザに、例えば縦通路15に沿って第1オブジェクト3を移動させたくなるような動機付けを与えることも可能となりうる。
ところで、ここでは、街路樹オブジェクト16が固定であるので、街路樹オブジェクト16が視線方向Vに沿って重複するときの仮想カメラ60の位置パラメータ(X、Y)の各値の範囲はあらかじめ既知である。しかしながら、多様な第2オブジェクト(移動可能な第2オブジェクトを含んでよい)が配置される場合、複数の第2オブジェクトが視線方向Vに沿って重複するようなカメラパラメータの各値は、ゲームの進行状況や他の因子に応じて変化しうる。従って、このような場合、フィールドオブジェクトにおける仮想カメラ60の画角内の領域に配置される複数の第2オブジェクトについて、視線方向に沿って重複するか否かが判定されてもよい。そして、重複する場合は、そうでない場合に比べて、曲げ変形度合いを大きくすることとしてもよい。なお、このような変形例は、カメラパラメータの各値が多様に変化できる場合にも好適である。これは、複数の第2オブジェクトが視線方向Vで重複するか否かは、仮想カメラ60の位置パラメータ(X、Y)の各値が同一であっても、迎角パラメータψの値や向きパラメータθの値に応じて変化しうるためである。
また、図16から図22を参照して説明した動作例によれば、変形パラメータA1の値は、値β1から値β2へと、1つ以上の補間値(中間値の一例)を介して変化する。これにより、第1オブジェクト3が特定位置Bに到達した処理周期で、変形パラメータA1の値β1から値β2の変化が実現される場合に比べて、穏やかな変化が実現され、変形度合いの変化に起因してユーザに与えうる違和感を効果的に低減できる。これは、距離パラメータA2の値γ1から値γ2への変化についても同様である。また、仮に、上記の補間を用いない場合、急激な変化を避けるため特定位置を近接させないなどの制限が生じやすくなる。この点、上記の補間を用いることで、特定位置の配置の自由度を高めることができる。この結果、フィールド画像の更なる多様化を図ることができる。
また、図16から図22を参照して説明した動作例によれば、例えば特定位置Aと特定位置Bとの間の各位置に、補間により適切な変形パラメータA1の値を対応付けることができるので、当該各位置に変形パラメータデータ上で変形パラメータA1の各値を対応付ける場合に比べて、変形パラメータデータ用の記憶容量の効率的な利用を図ることができる。これは、距離パラメータのような他のパラメータについても同様である。
また、図16から図22を参照して説明した動作例は、フィールドオブジェクト用の一の素材(フィールド画像及びフィールド面70)を用いて、フィールド面70の曲げ変形に係る変形度合いを変化させることで、多様な形態のフィールドオブジェクトを実現する。これにより、多様なフィールドオブジェクト(変形不能な固定の形態のフィールドオブジェクト)を事前に用意しておく場合に比べて、記憶容量の削減や、読み込み処理の低減を図ることができる。
なお、図23では、特定位置Aから特定位置Bへの第1オブジェクト3の移動について説明したが、特定位置Bから特定位置Aへの第1オブジェクト3の移動についてはその逆が実現されてもよい。また、図23では、特定位置Aから特定位置Bへの第1オブジェクト3の移動について説明したが、通常位置のような他の属性の位置から特定位置Bへの第1オブジェクト3の移動についても同様に実現されてもよい。この場合、通常位置とは、変形パラメータA1の通常値β0が設定され、かつ、距離パラメータA2の通常値γ0が設定される位置である。また、特定位置Aから特定位置Bへの距離が比較的長いことで、特定位置Aと特定位置Bとの間に、通常位置が実現されてもよい。
次に、図25を参照して、上述した実施形態に対する変形例について説明する。
図25は、変形例によるサーバ装置10Aの描画機能に関する機能ブロック図の一例である。変形例によるサーバ装置10Aは、上述した実施形態によるサーバ装置10に対して、描画処理部140が描画処理部140Aで置換された点が異なる。
本変形例による描画処理部140Aは、上述した実施形態による描画処理部140に対して、距離変更部1421がズーム量変更部1421A(パラメータ値変化部の一例)で置換された点が異なる。
ズーム量変更部1421Aは、焦点距離や画角等のような、仮想カメラ60のズーム量に関連する光学パラメータの値を変更する。ズーム量変更部1421Aは、距離変更部1421と同様の効果が実現されるように、光学パラメータの値を変更してよい。例えば、距離変更部1421が距離パラメータA2の値を低減させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が大きくなるように光学パラメータの値を変化させることで実現されてもよい。同様に、距離変更部1421が距離パラメータA2の値を増加させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が小さくなるように光学パラメータの値を変化させることで実現されてもよい。このようにして、距離変更部1421による機能を、ズーム量変更部1421Aにより実現できる。
なお、他の変形例では、距離変更部1421とズーム量変更部1421Aとが同時に機能してもよい。
以上、各実施形態について詳述したが、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施形態の構成要素を全部又は複数を組み合わせることも可能である。
例えば、上述した実施形態では、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体を曲げ変形することで実現されるが、これに限られない。例えば、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域だけ又は当該領域を包含する一部領域だけに対して実行されてもよい。
また、上述した実施形態では、フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置は、基本的に、第1オブジェクトの位置に対応するが、これに限られない。所定条件が成立した場合に、フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置は、特定オブジェクトの位置に対応するように変更されてもよい。この場合、特定オブジェクトは、第1オブジェクトのような、フィールドオブジェクトに対して位置が変化しうるオブジェクトであってもよいし、第2オブジェクトのような、フィールドオブジェクトに対して位置が固定されたオブジェクトであってもよい。
また、上述した実施形態では、所定オブジェクトの移動の際に仮想カメラ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の画角内に収まる領域に当該補間処理範囲に係る特定位置が位置するように、設定されてもよい点は、上述した。例えば、図26には、特定位置Aに関する補間処理範囲Rs(A)が平面視で示され、図27には、図26のラインJ1-J1に沿った断面視とラインJ2-J2に沿った断面視とが重ねて示されている。この場合、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P260に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、図27に示すように、パラメータθの値が図26に示すようなθ(P260)であるとき、特定位置Aは、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置する。なお、図27における境界線6211は、仮想カメラ60の画角62(z方向に垂直な方向に視た際の画角)(図5参照)の上側の境界線である。従って、この場合、位置P260は、補間処理範囲Rs(A)内に属する。他方、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P261に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、図27に示すように、パラメータθの値が図26に示すようなθ(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は省略されてもよい。この場合、上述したように、距離変更部1421又はズーム量変更部1421Aにより距離パラメータA2又は光学パラメータの値が変化される場合に、当該変化に連動して曲げ変形処理が実行されてもよい。
なお、以上の実施形態に関し、さらに以下の付記を開示する。
[付記1]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部と、
前記フィールドオブジェクトに対する前記仮想カメラの位置に基づいて、前記フィールドオブジェクトを変形させる変形処理部とを含み、
前記変形処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置が第1位置にあるときと、前記フィールドオブジェクトに対する前記仮想カメラの位置が、前記仮想カメラの視線方向に交差する方向で前記第1位置とは異なる第2位置にあるときとで、前記フィールドオブジェクトの変形度合いを異ならせる、情報処理装置。
[付記2]
前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置である場合と、前記第2位置である場合とで、前記仮想カメラの視線方向での前記仮想カメラと前記フィールドオブジェクトとの間の距離を異ならせる距離変更部を更に含む、付記1に記載の情報処理装置。
[付記3]
前記距離変更部は、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置から前記第2位置に変化する場合に、前記距離を小さくする、付記2に記載の情報処理装置。
[付記4]
前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置と前記第2位置との間で変化する場合に、前記仮想カメラのズーム量に関連する光学パラメータの値を変化させるパラメータ値変化部を更に含む、付記1から3のうちのいずれか1項に記載の情報処理装置。
[付記5]
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記変形処理部は、前記仮想カメラの視線方向と前記第3軸を含む平面で切断した際の前記基本面の形状が、前記平面に垂直な方向に沿って略同じとなるように、前記基本面を変形させる、付記1から4のうちのいずれか1項に記載の情報処理装置。
[付記6]
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記仮想カメラの視線方向と前記第3軸を含む平面上において、所定位置を原点とし、前記原点を通り前記第3軸に平行な軸をY軸とし、前記フィールドオブジェクトに対して上側に向かう向きをY軸の正側とし、かつ、前記原点を通り前記Y軸に垂直な軸をX軸とした場合に、前記変形処理部は、X座標の値の絶対値が大きくなるほどY座標の値が線形又は非線形に単調減少する関数にしたがって、前記基本面を変形させる、付記1から4のうちのいずれか1項に記載の情報処理装置。
[付記7]
前記変形処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置に対応付けられた変形パラメータであって、前記フィールドオブジェクトの変形度合いを定める変形パラメータの値に基づいて、前記基本面を変形させ、
前記変形パラメータは、前記関数において、前記X座標の値に係る項に割り当てられる係数を含む、付記6に記載の情報処理装置。
[付記8]
前記変形パラメータの値は、前記第1位置に対応付けられた第1の値と、前記第2位置に対応付けられた第2の値とを含み、
前記変形処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置と前記第2位置との間で変化する場合に、前記変形パラメータの値を、前記第1の値と前記第2の値との間の1つ以上の中間値を介して、前記第1の値又は前記第2の値へと変化させる、付記7に記載の情報処理装置。
[付記9]
前記オブジェクトは、前記フィールドオブジェクトに対して配置される第1オブジェクトを更に含み、
前記フィールドオブジェクトに対する前記第1オブジェクトの位置を相対的に変化させる第2移動処理部を更に含み、
前記第1移動処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置を、前記フィールドオブジェクトに対する前記第1オブジェクトの位置の変化に連動して変化させる、付記6から8のうちのいずれか1項に記載の情報処理装置。
[付記10]
前記変形処理部は、前記関数に係る前記所定位置を、前記フィールドオブジェクトに対する前記第1オブジェクトの位置に基づいて決定する、付記9に記載の情報処理装置。
[付記11]
前記フィールドオブジェクトの変形度合いは、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置にあるときよりも、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあるときのほうが大きい、付記1から10のうちのいずれか1項に記載の情報処理装置。
[付記12]
前記オブジェクトは、前記フィールドオブジェクトに対して配置される複数の第2オブジェクトを更に含み、
前記複数の第2オブジェクトは、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあるときに前記仮想カメラの画角内に位置する、付記11記載の情報処理装置。
[付記13]
前記複数の第2オブジェクトは、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあるときに前記仮想カメラの視線方向で互いに重複する、付記12に記載の情報処理装置。
[付記14]
前記オブジェクトは、背景オブジェクトを更に含み、
前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置にあるときと、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあるときとで、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を異ならせる背景処理部を更に含む、付記1から13のうちのいずれか1項に記載の情報処理装置。
[付記15]
前記背景処理部は、前記フィールドオブジェクトで表現される仮想的な地平線の高さに基づいて、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を決定する、付記14に記載の情報処理装置。
[付記16]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理方法であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させ、
前記フィールドオブジェクトに対する前記仮想カメラの位置が第1位置にある場合に、第1の変形度合いで前記フィールドオブジェクトを変形させ、
前記フィールドオブジェクトに対する前記仮想カメラの位置が、前記仮想カメラの視線方向に交差する方向で前記第1位置とは異なる第2位置にある場合に、前記第1の変形度合いとは異なる第2の変形度合いで前記フィールドオブジェクトを変形させることを含む、コンピュータにより実行される情報処理方法。
[付記17]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理プログラムであって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させ、
前記フィールドオブジェクトに対する前記仮想カメラの位置が第1位置にある場合に、第1の変形度合いで前記フィールドオブジェクトを変形させ、
前記フィールドオブジェクトに対する前記仮想カメラの位置が、前記仮想カメラの視線方向に交差する方向で前記第1位置とは異なる第2位置にある場合に、前記第1の変形度合いとは異なる第2の変形度合いで前記フィールドオブジェクトを変形させる、
処理をコンピュータに実行させる情報処理プログラム。