IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グリー株式会社の特許一覧

特許7507458情報処理装置、情報処理方法、情報処理プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-20
(45)【発行日】2024-06-28
(54)【発明の名称】情報処理装置、情報処理方法、情報処理プログラム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20240621BHJP
   A63F 13/525 20140101ALI20240621BHJP
   A63F 13/5258 20140101ALI20240621BHJP
   A63F 13/55 20140101ALI20240621BHJP
【FI】
G06T19/00 A
A63F13/525
A63F13/5258
A63F13/55
【請求項の数】 9
(21)【出願番号】P 2023021490
(22)【出願日】2023-02-15
(62)【分割の表示】P 2020110737の分割
【原出願日】2020-06-26
(65)【公開番号】P2023063309
(43)【公開日】2023-05-09
【審査請求日】2023-02-15
(73)【特許権者】
【識別番号】504437801
【氏名又は名称】グリー株式会社
(74)【代理人】
【識別番号】110002871
【氏名又は名称】弁理士法人坂本国際特許商標事務所
(72)【発明者】
【氏名】西田 綾佑
【審査官】中田 剛史
(56)【参考文献】
【文献】特開2020-080007(JP,A)
【文献】特開2009-148466(JP,A)
【文献】特開2017-093929(JP,A)
【文献】特開2017-131523(JP,A)
【文献】特開2013-168022(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/525
A63F 13/5258
A63F 13/55
(57)【特許請求の範囲】
【請求項1】
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに対して配置される所定オブジェクトとを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部と、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させる第2移動処理部と、
前記フィールドオブジェクトを変形させる変形処理部とを含み、
前記第1移動処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置を、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化させ、
前記変形処理部は、前記仮想カメラの位置に基づいて、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が第1位置にあるときと、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が、前記視線方向に交差する方向で前記第1位置とは異なる第2位置にあるときとで、前記フィールドオブジェクトの変形度合いを異ならせる、情報処理装置。
【請求項2】
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記変形処理部は、前記視線方向と前記第3軸を含む平面で切断した際の前記基本面の形状が、前記平面に垂直な方向に沿って略同じとなるように、前記基本面を変形させる、請求項1に記載の情報処理装置。
【請求項3】
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記視線方向と前記第3軸を含む平面上において、所定位置を原点とし、前記原点を通り前記第3軸に平行な軸をY軸とし、前記フィールドオブジェクトに対して上側に向かう向きをY軸の正側とし、かつ、前記原点を通り前記Y軸に垂直な軸をX軸とした場合に、前記変形処理部は、X座標の値の絶対値が大きくなるほどY座標の値が線形又は非線形に単調減少する関数にしたがって、前記基本面を変形させる、請求項1に記載の情報処理装置。
【請求項4】
前記変形処理部は、前記所定位置を、前記所定オブジェクトの位置に基づいて決定する、請求項3に記載の情報処理装置。
【請求項5】
前記オブジェクトは、背景オブジェクトを更に含み、
前記フィールドオブジェクトで表現される仮想的な地平線の高さに基づいて、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を決定する背景処理部を更に含む、請求項1から4のうちのいずれか1項に記載の情報処理装置。
【請求項6】
前記オブジェクトは、背景オブジェクトを更に含み、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置が前記第1位置にあるときと、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が前記第2位置にあるときとで、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を異ならせる背景処理部を更に含む、請求項に記載の情報処理装置。
【請求項7】
前記背景処理部は、前記フィールドオブジェクトで表現される仮想的な地平線の高さに基づいて、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を決定する、請求項に記載の情報処理装置。
【請求項8】
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理方法であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに対して配置される所定オブジェクトとを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させ、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させ、
前記フィールドオブジェクトを変形させることを含み、
前記フィールドオブジェクトに対する前記仮想カメラの位置は、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化され、
前記フィールドオブジェクトは、前記仮想カメラの位置に基づいて、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が第1位置にあるときと、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が、前記視線方向に交差する方向で前記第1位置とは異なる第2位置にあるときとで、変形度合いが変化される、コンピュータにより実行される情報処理方法。
【請求項9】
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理プログラムであって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに対して配置される所定オブジェクトとを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させ、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させ、
前記フィールドオブジェクトを変形させる、
処理をコンピュータに実行させ、
前記フィールドオブジェクトに対する前記仮想カメラの位置は、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化され、
前記フィールドオブジェクトは、前記仮想カメラの位置に基づいて、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が第1位置にあるときと、前記フィールドオブジェクトに対する前記所定オブジェクトの位置が、前記視線方向に交差する方向で前記第1位置とは異なる第2位置にあるときとで、変形度合いが変化される、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理方法、情報処理プログラムに関する。
【背景技術】
【0002】
3次元の仮想空間に配置されるオブジェクトを、仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置が知られている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2013-208269号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような従来技術では、仮想カメラから視た仮想空間内のフィールドオブジェクトの多様な表現を生成することが難しい。
【0005】
そこで、1つの側面では、本発明は、仮想カメラから視た仮想空間内の多様な表現を生成することを目的とする。
【課題を解決するための手段】
【0006】
1つの側面では、互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトと、前記フィールドオブジェクトに対して配置される所定オブジェクトとを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部と、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させる第2移動処理部と、
前記フィールドオブジェクトを変形させる変形処理部とを含み、
前記第1移動処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置を、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化させ、
前記変形処理部は、前記仮想カメラの位置に基づいて、前記フィールドオブジェクトを変形させる、情報処理装置が提供される。
【発明の効果】
【0007】
1つの側面では、本発明によれば、仮想カメラから視た仮想空間内の多様な表現を生成することが可能となる。
【図面の簡単な説明】
【0008】
図1】本実施形態に係るゲームシステムのブロック図である。
図2】フィールド画像の一例を示す図である。
図3】フィールドオブジェクトを形成するフィールド面と背景オブジェクトを形成する背景面の全体を示す平面図である。
図4】フィールド面と背景面の一部を示す斜視図である。
図5】各種の位置関係を示す説明図である。
図6】仮想カメラから視た表現で描画して得られたフィールド画像の一例を示す概略図である。
図7】フィールド面の曲げ変形を実現するための変形パラメータの一例の説明図である。
図8】関数に基づくフィールド面の曲げ変形の説明図である。
図9】仮想カメラの位置の変化の自由度の説明図である。
図10】仮想カメラの視線方向の回転の説明図である。
図11】カメラパラメータの説明図である。
図12】サーバ装置の描画機能に関する機能ブロック図の一例である。
図13】変形パラメータデータの説明図である。
図14】距離パラメータデータの説明図である。
図15】向きパラメータデータの説明図である。
図16】サーバ制御部により実現される処理の流れを示す概略フローチャートである。
図17】距離パラメータ算出処理(ステップS1608)の一例を示す概略フローチャートである。
図18】補間処理範囲の説明図である。
図19】向きパラメータ算出処理(ステップS1610)の一例を示す概略フローチャートである。
図20】迎角パラメータ算出処理(ステップS1612)の一例を示す概略フローチャートである。
図21】所定オブジェクトの移動に伴う変形処理(ステップS1615)の一例を示す概略フローチャートである。
図22】曲げ変形処理の説明図である。
図23】回転指示に基づく回転処理(ステップS1618)の一例を示す概略フローチャートである。
図24】回転指示に基づく回転処理(ステップS1618)後の、変形処理(ステップS1619)の一例を示す概略フローチャートである。
図25】補間角度範囲の説明図である。
図26】動作例の適用場面の説明図である。
図26A】仮想カメラとフィールド面の曲げ変形との関係を示す説明図(その1)である。
図26B】仮想カメラとフィールド面の曲げ変形との関係を示す説明図(その2)である。
図26C】仮想カメラとフィールド面の曲げ変形との関係を示す説明図(その3)である。
図27A】フィールド画像の例を示す図である。
図27B】フィールド画像の例を示す図である。
図27C】フィールド画像の例を示す図である。
図28】他のサーバ装置の描画機能に関する機能ブロック図の一例である。
図29】補間処理範囲の設定方法の説明図(その1)である。
図30】補間処理範囲の設定方法の説明図(その2)である。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら各実施形態について詳細に説明する。
【0010】
(ゲームシステムの概要)
図1を参照して、本発明の一実施形態に係るゲームシステム1の概要について説明する。図1は、本実施形態に係るゲームシステム1のブロック図である。図2は、フィールド画像の一例を示す図である。ゲームシステム1は、サーバ装置10と、1つ以上の端末装置20と、を備える。図1では簡便のため、3つの端末装置20を図示しているが、端末装置20の数は2つ以上であればよい。
【0011】
サーバ装置10は、例えばゲーム運営者が管理するサーバ等の情報処理装置である。端末装置20は、例えば携帯電話、スマートフォン、タブレット端末、PC(Personal Computer)、又はゲーム装置等の、ユーザによって使用される情報処理装置である。端末装置20は、本実施形態に係るゲームのアプリケーションを実行可能である。ゲームのアプリケーションは、ネットワーク30を介してサーバ装置10や所定のアプリケーション配信サーバから端末装置20に受信されてもよく、あるいは端末装置20に備えられた記憶装置又は端末装置20が読取可能なメモリカード等の記憶媒体に予め記憶されていてもよい。サーバ装置10及び端末装置20は、ネットワーク30を介して通信可能に接続される。例えば、サーバ装置10及び端末装置20が協動して、ゲームに関する多様な処理を実行する。
【0012】
なお、ネットワーク30は、無線通信網や、インターネット、VPN(Virtual Private Network)、WAN(Wide Area Network)、有線ネットワーク、又はこれらの任意の組み合わせ等を含んでよい。
【0013】
ここで、本実施形態に係るゲームの概要について説明する。本実施形態に係るゲームは、例えばロールプレイングゲーム又はシミュレーションゲーム等であって、ゲームの実行に伴い、ゲーム媒体が用いられる。例えば、本実施形態に係るゲームは、3次元の仮想空間内のフィールド上でゲーム媒体を移動させるゲームである。
【0014】
ゲーム媒体は、ゲームに使用される電子データであり、例えば、カード、アイテム、ポイント、サービス内通貨(又はゲーム内通貨)、チケット、キャラクタ、アバタ、パラメータ等、任意の媒体を含む。また、ゲーム媒体は、レベル情報、ステータス情報、ゲームパラメータ情報(体力値及び攻撃力等)又は能力情報(スキル、アビリティ、呪文、ジョブ等)のような、ゲーム関連情報であってもよい。また、ゲーム媒体は、ユーザによってゲーム内で取得、所有、使用、管理、交換、合成、強化、売却、廃棄、又は贈与等され得る電子データであるが、ゲーム媒体の利用態様は本明細書で明示されるものに限られない。
【0015】
以下、特に明示した場合を除き、「ユーザが所有するゲーム媒体」とは、ユーザのユーザIDに対応付けられたゲーム媒体を示す。また、「ゲーム媒体をユーザに付与する」とは、ゲーム媒体をユーザIDに対応付けることを示す。また、「ユーザが所有するゲーム媒体を破棄する」とは、ユーザIDとゲーム媒体との対応付けを解消することを示す。また、「ユーザが所有するゲーム媒体を消費する」とは、ユーザIDとゲーム媒体との対応付けの解消に応じて、何らかの効果又は影響をゲーム内で発生させ得ることを示す。また、「ユーザが所有するゲーム媒体を売却する」とは、ユーザIDと当該ゲーム媒体との対応付けを解消し、且つ、ユーザIDに他のゲーム媒体(例えば、仮想通貨又はアイテム等)を対応付けることを示す。また、「あるユーザが所有するゲーム媒体を他のユーザに譲渡する」とは、あるユーザのユーザIDとゲーム媒体との対応付けを解消し、且つ、他のユーザのユーザIDに当該ゲーム媒体を対応付けることを示す。
【0016】
本実施形態に係るゲームは、概略として、第1ゲームパートと、第2ゲームパートと、第3ゲームパートと、を含む。
【0017】
第1ゲームパートにおいて、ユーザは、ユーザキャラクタを操作して、仮想空間内のフィールドを探索しながら、ゲームを進行させる。具体的には、ユーザ操作に応じてユーザキャラクタがフィールド上を移動する。フィールドには、例えば町及びダンジョン等の多様なエリアが設けられており、例えば町の住人キャラクタとの会話、及びダンジョン内で遭遇する敵キャラクタとの対戦等、エリアに応じた多様なイベントが発生する。イベントが実行されることによって、ゲームのメインストーリーが進行する。また第1ゲームパートにおいて、例えば敵キャラクタとの対戦に勝利すると、例えばアイテム、仮想通貨、又はキャラクタ等のゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
【0018】
第2ゲームパートにおいて、ユーザは、ゲーム媒体の保有状況を変更する。ユーザは、例えばアイテム、仮想通貨、及びキャラクタ等の多様なゲーム媒体を収集する。具体的には、フィールド上に設けられた採掘場及び釣り堀等の特定のエリアにユーザキャラクタを移動させ、又は特定のキャラクタ等のゲーム媒体を選択(例えば、画面に対するタッチ操作)すると、ゲーム媒体が取得可能なサブイベントが発生する。サブイベントは、例えばサブストーリーの進行、及びミニゲームの実行等を含むが、サブイベントの内容はこれらに限られない。サブイベントの実行結果に応じて、多様なゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
【0019】
第3ゲームパートにおいて、ユーザは、ゲーム媒体に関するパラメータを変更する。ユーザは、例えばユーザキャラクタの強化を行う。具体的には、上述したように第1ゲームパート及び第2ゲームパートにおいてユーザに付与されたゲーム媒体が消費されることによって、ユーザキャラクタの多様なゲームパラメータが変化する。ゲームパラメータは、例えばユーザキャラクタのレベル、HP、攻撃力、防御力、属性、及びスキル等を含むが、これらに限られない。ユーザキャラクタのゲームパラメータの変化に応じて、ユーザキャラクタが強化される。ユーザキャラクタの強化によって、第1ゲームパートにおける敵キャラクタとの対戦でユーザキャラクタが勝利できる蓋然性が高まる。
【0020】
このように、本実施形態に係るゲームにおいて、ユーザは第1ゲームパート、第2ゲームパート、及び第3ゲームパートを繰り返し行う。
【0021】
(サーバ装置の構成)
サーバ装置10の構成について具体的に説明する。サーバ装置10は、サーバコンピュータにより構成される。サーバ装置10は、複数台のサーバコンピュータにより協動して実現されてもよい。
【0022】
サーバ装置10は、サーバ通信部11と、サーバ記憶部12と、サーバ制御部13と、を備える。
【0023】
サーバ通信部11は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。サーバ通信部11は、例えば無線LAN(Local Area Network)通信モジュール又は有線LAN通信モジュール等を含んでもよい。サーバ通信部11は、ネットワーク30を介して、端末装置20との間で情報を送受信可能である。
【0024】
サーバ記憶部12は、例えば記憶装置であって、ゲームの処理に必要な種々の情報及びプログラムを記憶する。例えばサーバ記憶部12は、ゲームのアプリケーションを記憶する。
【0025】
また、サーバ記憶部12は、3次元の仮想空間内に配置された種々のオブジェクトに投影(テクスチャマッピング)するための種々の画像(テクスチャ画像)を記憶する。
【0026】
例えば、サーバ記憶部12は、ユーザキャラクタの画像を記憶する。以下、ユーザキャラクタを第1ゲーム媒体と称し、第1ゲーム媒体の画像に基づきフィールドオブジェクト(後述)上に描画(配置)されるオブジェクトを第1オブジェクトとも称する。なお、本実施形態では、仮想空間内では、第1オブジェクトは1つだけ配置されるが、2つ以上の第1オブジェクトが配置されてもよい。なお、第1オブジェクトは、複数の第1ゲーム媒体のグループであってもよい。また、仮想空間内で利用される第1ゲーム媒体(及びそれに基づく第1オブジェクト)は、ユーザにより適宜交換可能とされてもよい。
【0027】
また、サーバ記憶部12は、例えば建物、壁、樹木、又はNPC(Non Player Character)等のような、ゲーム媒体に係る画像を記憶する。以下、第1ゲーム媒体とは異なる任意のゲーム媒体(例えば建物、壁、樹木、又はNPC等)であって、後述するフィールドオブジェクトに配置されうるゲーム媒体を第2ゲーム媒体と称し、第2ゲーム媒体が投影されたオブジェクトを第2オブジェクトとも称する。なお、本実施形態では、第2オブジェクトは、後述するフィールドオブジェクトに対して固定されたオブジェクトや、後述するフィールドオブジェクトに対して移動可能なオブジェクト等を含んでもよい。また、第2オブジェクトは、後述するフィールドオブジェクトに常に配置されるオブジェクトや、所定の条件が満たされた場合にだけ配置されるオブジェクト等を含んでもよい。
【0028】
また、サーバ記憶部12は、例えば空又は遠景等の背景の画像(背景画像)を記憶する。以下、背景画像が投影されたオブジェクトを背景オブジェクトともいう。なお、背景画像は複数種類用意され、使い分けられてもよい。
【0029】
また、サーバ記憶部12は、フィールド(例えば、地面)の画像(フィールド画像)を記憶する。フィールド画像は、後述するフィールド面に投影される。以下、フィールド画像がフィールド面に投影されたオブジェクトを、フィールドオブジェクトとも称する。なお、フィールドオブジェクトは、仮想空間内における仮想のフィールド(地面)として用いられる。
【0030】
ここで、フィールド画像には、例えば図2に示すように、互いに直交するu軸及びv軸を有するテクスチャ座標系が設定されている。本実施形態において、フィールド画像には、横通路14と、縦通路15と、カーブ路17とが定められている。横通路14、縦通路15、及びカーブ路17は、フィールドオブジェクトにおける第1オブジェクト等が移動可能な通路を形成する。なお、図2では、特定の通路構成が示されるが、通路構成は任意である。また、図2では、フィールド画像は、矩形であるが、他の形態であってもよい。また、フィールド画像は複数種類用意され、使い分けられてもよい。
【0031】
また、サーバ記憶部12は、第2オブジェクトと、フィールド画像のテクスチャ座標と、を対応付けた対応情報を記憶する。対応情報は、第2オブジェクトをフィールドオブジェクト上に配置する処理を実行するサーバ制御部13によって用いられる。
【0032】
サーバ制御部13は、専用のマイクロプロセッサ又は特定のプログラムを読み込むことにより特定の機能を実現するCPUである。例えばサーバ制御部13は、表示部23に対するユーザ操作に応じてゲームのアプリケーションを実行する。また、サーバ制御部13は、ゲームに関する多様な処理を実行する。
【0033】
例えば、サーバ制御部13は、フィールドオブジェクト及び第1オブジェクト等が表示されるフィールド画像を表示部23に表示させる。また、サーバ制御部13は、所定のユーザ操作に応じて、仮想空間内において第1オブジェクトを、フィールドオブジェクトに対して相対的に、フィールドオブジェクト上で移動させる。サーバ制御部13の具体的な処理の詳細は後述する。
【0034】
(端末装置の構成)
端末装置20の構成について具体的に説明する。図1に示すように、端末装置20は、端末通信部21と、端末記憶部22と、表示部23と、入力部24と、端末制御部25とを備える。
【0035】
端末通信部21は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。端末通信部21は、例えばLTE(Long Term Evolution)(登録商標)等のモバイル通信規格に対応する無線通信モジュール、無線LAN通信モジュール、又は有線LAN通信モジュール等を含んでもよい。端末通信部21は、ネットワーク30を介して、サーバ装置10との間で情報を送受信可能である。
【0036】
端末記憶部22は、例えば一次記憶装置及び二次記憶装置を含む。例えば端末記憶部22は、半導体メモリ、磁気メモリ、又は光メモリ等を含んでもよい。端末記憶部22は、サーバ装置10から受信する、ゲームの処理に用いられる種々の情報及びプログラムを記憶する。ゲームの処理に用いられる情報及びプログラムは、端末通信部21を介して外部装置から取得されてもよい。例えば、ゲームのアプリケーションプログラムが、所定のアプリケーション配信サーバから取得されてもよい。以下、アプリケーションプログラムを、単にアプリケーションともいう。また例えば、上述したユーザに関する情報及び対戦相手であるゲーム媒体に関する情報等の一部又は全部が、サーバ装置10から取得されてもよい。
【0037】
表示部23は、例えば液晶ディスプレイ又は有機EL(Electro-Luminescence)ディスプレイ等の表示デバイスを含む。表示部23は、多様な画像を表示可能である。表示部23は、例えばタッチパネルで構成され、多様なユーザ操作を検出するインタフェースとして機能する。
【0038】
入力部24は、例えば表示部23と一体的に設けられたタッチパネルを含む入力インタフェースを含む。入力部24は、端末装置20に対するユーザ入力を受付可能である。また、入力部24は、物理キーを含んでもよいし、マウス等のようなポインティングデバイスをはじめとする任意の入力インタフェースを更に含んでもよい。
【0039】
端末制御部25は、1つ以上のプロセッサを含む。端末制御部25は、端末装置20全体の動作を制御する。
【0040】
端末制御部25は、端末通信部21を介して情報の送受信を行う。例えば、端末制御部25は、ゲームの処理に用いられる種々の情報及びプログラムを、サーバ装置10及び他の外部サーバの少なくとも一方から受信する。端末制御部25は、受信された情報及びプログラムを、端末記憶部22に記憶する。
【0041】
端末制御部25は、ユーザの操作に応じてゲームのアプリケーションを起動する。端末制御部25は、サーバ装置10と協動して、ゲームを実行する。例えば、端末制御部25は、ゲームに用いられる種々の画像(例えば後述する各種のフィールド画像)を表示部23に表示させる。画面上には、例えばユーザ操作を検出するGUI(Graphic User Interface)が表示されてもよい。端末制御部25は、入力部24を介して、画面に対するユーザ操作を検出可能である。例えば端末制御部25は、ユーザのタップ操作、ロングタップ操作、フリック操作、及びスワイプ操作等を検出可能である。タップ操作は、ユーザが指で表示部23に触れ、その後に指を離す操作である。端末制御部25は、操作情報をサーバ装置10に送信する。
【0042】
(ゲームにおける描画機能)
サーバ制御部13は、端末装置20と協動して、表示部23上にフィールド画像を表示し、ゲームの進行に応じてフィールド画像を更新していく。本実施形態では、サーバ制御部13は、端末装置20と協動して、3次元の仮想空間に配置されるオブジェクトを、仮想空間に配置された仮想カメラから視た表現で描画する。
【0043】
なお、以下で説明する描画処理は、サーバ制御部13により実現されるが、他の実施形態では、以下で説明する描画処理の一部又は全部がサーバ制御部13により実現されてもよい。例えば、以下の説明において、端末装置20に表示されるフィールド画像の少なくとも一部を、サーバ装置10が生成したデータに基づいて端末装置20に表示させるウェブ表示とし、画面の少なくとも一部を、端末装置20にインストールされているネイティブアプリケーションによって表示させるネイティブ表示としてもよい。
【0044】
図3及び図4は、フィールドオブジェクトと背景オブジェクトの一例の説明図である。図3は、フィールドオブジェクトを形成するフィールド面70と背景オブジェクトを形成する背景面72の全体を示す平面図であり、図4は、図3の矢印R0の方向成分を含む斜め方向に視たときの、フィールド面70と背景面72の一部を示す斜視図である。図4には、仮想カメラ60についても模式的に図示されている。また、図4では、背景面72は雲や太陽の絵を含む背景画像が投影された背景オブジェクトの形態で示されている。
【0045】
以下の説明において、各種オブジェクトの移動とは、仮想空間内の移動を表す。また、各種オブジェクトの可視範囲とは、仮想カメラ60から視て可視の範囲(すなわち仮想カメラ60の画角62内の範囲)を表す。
【0046】
図3には、仮想空間の空間座標系としてのx、y、z座標系(以下、「グローバル座標系」とも称する)が示される。なお、グローバル座標系の原点は、任意の位置に固定されてよい。以下では、z方向の正側を仮想空間の上側とし、負側を仮想空間の下側とする。なお、本実施形態では、x軸は、第1軸の一例であり、y軸は、第2軸の一例である。以下で、x方向、y方向、及びz方向の各用語は、x軸に平行な方向、y軸に平行な方向、及びz軸に平行な方向をそれぞれ意味する。例えば、z方向は、特に言及しない限り、xy平面内の任意の点を通るz軸に平行な方向を表す。
【0047】
フィールド面70は、仮想空間のxy平面に対応付けて配置される。本実施形態では、一例として、フィールド面70は、投影されたフィールド画像のテクスチャ座標系のu軸、v軸及び原点が、グローバル座標系のx軸、y軸及び原点と一致するように、xy平面に対応付けて配置される。なお、図3では、対応付けられる前の状態として、テクスチャ座標系のu軸、v軸及び原点は、グローバル座標系のx軸、y軸及び原点から離れて示されている。フィールド面70は、x方向、y方向、及びz方向の各方向で、並進移動(直線状に移動)が不能とされる。ただし、他の実施形態では、フィールド面70は、グローバル座標系で並進移動が可能とされてもよい。
【0048】
フィールド面70は、xy平面に平行な平面を正規の状態としたとき、正規の状態から変形可能である。このように、本実施形態では、フィールドオブジェクトは、変形可能なフィールド面70に基づいて形状付けられる。すなわち、フィールドオブジェクトは、正規の状態から変形したフィールド面70に基づいて形状付けられることで、xy平面に平行な平面に対して変形する。以下、フィールド面70及びフィールドオブジェクトに関する変形とは、特に言及しない限り、xy平面に平行な平面を正規の形状(状態)とした場合の変形を意味する。なお、変形状態のフィールドオブジェクトは、変形状態のフィールド面70にフィールド画像を投影することで実現されてもよいし、正規の状態のフィールド面70にフィールド画像を投影させてからフィールド面70を変形させることで実現されてもよい。
【0049】
なお、フィールド面70は、フィールド画像が投影されると、正規の状態では、投影されたフィールド画像のテクスチャ座標を引き継ぐことができる。すなわち、フィールド画像が投影されたフィールド面70上の各位置は、実質的に、フィールド画像のテクスチャ座標系(図2参照)で特定できる。以下では、フィールド面70上の各位置を特定するための座標系は、当該フィールド面70に投影されたフィールド画像のテクスチャ座標系と一致し、「フィールド座標系」とも称する。
【0050】
背景面72は、背景オブジェクトのz方向に延在する。ただし、他の実施形態では、背景面72は、z方向に対して傾斜して配置されてもよい。図3では、背景面72は、フィールド面70を取り囲むように配置される。この場合、背景面72は、グローバル座標系に対して固定であってもよいし、後述するようにz方向にだけ移動可能であってもよい。ただし、他の実施形態では、背景面72は、フィールド面70の一部だけを取り囲むように配置されてもよい。この場合、背景面72は、後述する仮想カメラ60の回転に応じて回転移動されてもよい。また、更なる他の実施形態では、背景面72は、フィールド面70と同様、変形可能とされてもよい。
【0051】
図5は、図4に示した仮想カメラ60の視線方向Vとz方向とを含む平面(以下、「Vz平面」とも称する)を垂直に視たときの、各種の位置関係を示す説明図である。図5には、仮想カメラ60の画角内のフィールドオブジェクトの領域に位置する第1オブジェクト3が模式的に示されている。図6は、仮想カメラ60から視た表現で描画して得られたフィールド画像の一例を示す概略図である。
【0052】
図5には、仮想カメラ60の画角62(z方向に垂直な方向に視た際の画角)が境界線6211、6212の間に模式的に示される。なお、本実施形態では、仮想カメラ60の画角は一定であるが、他の実施形態では、仮想カメラ60の画角が可変とされてもよい。
【0053】
図5に示す例では、画角62は、上側の境界線6211が背景面72と交わり(点P2参照)、下側の境界線6212がフィールド面70と交わる(点P1参照)。この場合、図6に示すように、フィールド画像G60は、背景面72(及びそれに伴い背景オブジェクト)と、フィールド面70(及びそれに伴いフィールドオブジェクト)とを含む。なお、図5では、仮想カメラ60の画角内のフィールドオブジェクトの領域に第1オブジェクト3が位置するので、フィールド画像G60は、第1オブジェクト3の表現を含む。
【0054】
ここで、本実施形態では、フィールド面70(及びそれに伴いフィールドオブジェクト)により仮想的な地平線HL(図6)が表現されるように、図5に示すように、フィールド面70が曲げ変形される。具体的には、フィールド面70は、視線方向Vで遠方に向かうほど(すなわち背景面72に向かうにつれて)下側に向かう方向で変形する。なお、このような変形は、仮想カメラ60の画角内の範囲内だけで実現されてもよいし、フィールド面70の全体で実現されてもよい。
【0055】
フィールド面70の全体が変形される場合は、Vz平面で切断した際のフィールド面70の形状(図5のような線で表現される形状)がどの断面位置でも略同じであってよい(すなわち略等断面であってよい)。なお、略同じとは、10%以内の誤差を許容する概念である。なお、フィールドオブジェクトは、上述したように、フィールド面70に基づいて形状付けられるので、Vz平面で切断した際のフィールドオブジェクトの形状は、Vz平面で切断した際のフィールド面70の形状と同じであるが、フィールド面70の形状に対してわずかに異なる形状(例えば微細な凹凸等)を有してもよい。
【0056】
このような表現の地平線HLは、図5に示すように、フィールド面70に対する仮想カメラ60からの接線6213(画角62内の接線)の交点P3により形成される。なお、図6では、地平線HLよりも手前に第1オブジェクト3が位置するので、地平線HLの表現の一部が第1オブジェクト3により隠れることになる。逆に、第1オブジェクト3が地平線HLよりも奥側(背景面72に近い側)に位置する場合は、第1オブジェクト3の一部又は全部がフィールドオブジェクトにより隠れることになる。
【0057】
ここで、地平線HLの高さH1(図6参照)は、境界線6212に対する接線6213のなす角度αに依存する。角度αは、フィールド面70の曲げ態様に応じて変化しうる。例えば、図5に一点鎖線で示すフィールド面70’の場合、境界線6212に対する接線6213’のなす角度α’が角度αよりも小さくなり、それ故に、地平線HLの高さH1は小さくなる(図示せず)。このようにしてフィールド面70の曲げ態様を変化させることで、地平線HLの高さを変化させることができることがわかる。なお、地平線HLの高さが変化すると、仮想カメラ60の画角内に収まる背景面72の範囲もそれに伴い変化する。
【0058】
このようにして本実施形態では、視線方向Vに視てフィールド面70が背景面72に近づくにつれて下方に向かう向きで曲げ変形されることで、地平線HLを適切に表現できる。また、曲げ変形の変形態様(変形度合い等)を変化させることで、地平線HLの高さH1(及びそれに伴いフィールドオブジェクトや背景オブジェクト等の可視範囲)を自由に変化させることができる。以下では、視線方向Vに視てフィールド面70が背景面72に近づくにつれて下方に向かう向きで変形される態様の曲げ変形を、単に「フィールド面70の曲げ変形」とも称する。
【0059】
図7は、フィールド面70の曲げ変形を実現するための変形パラメータの一例の説明図である。
【0060】
図7には、Vz平面内の2次元座標系Xc、Yc(以下、「ローカル座標系」とも称する)が定義されている。XcYc平面は、Vz平面に平行な平面であり、Yc軸は、z軸に平行な軸であり、Yc軸の正側は、仮想空間の上側に対応する。図7では、フィールド面70の変形態様を決める関数F1が示される。
【0061】
関数F1は、Xc座標の値の絶対値が大きくなるほどYc座標の値が非線形に単調減少する関数である。また、関数F1は、Yc軸に関して対称である。ただし、他の実施形態では、関数F1は、Xc座標の値の絶対値が大きくなるほどYc座標の値が線形に単調減少してもよいし、及び/又は、Yc軸に関して非対称であってもよい。本実施形態では、一例として、関数F1は、2次関数であり、以下で表される。
yc=-A1×(xc)
ここで、xcは、Xc座標の値であり、ycはYc座標の値であり、A1は、変形度合いを決める係数(以下、「変形パラメータA1」と称する)である。
【0062】
なお、上記の関数F1はあくまで一例であり、例えば以下のような異なる関数が利用されてもよい。
xc>aのとき、yc=-A1×(xc-a)
xc≦-aのとき、yc=-A1×(xc+a)
-a≦xc≦aのとき、yc=0
この場合、aは正の定数であり、-a≦xc≦aの範囲では平らな平面が実現される。
【0063】
あるいは、xc>-a1のとき、yc=-A1×(xc)
xc≦-a1のとき、yc=0
この場合、a1は、正の固定値であってもよく、xc=-a1の位置が、画角62の下側の境界線6212とフィールド面70の交点(図5の点P1)と一致するように設定されてよい。
【0064】
また、他の実施形態では、複数種類の関数が用意され、各種条件に応じて異なる関数が選択されてもよい。
【0065】
図8は、関数F1に基づくフィールド面70の曲げ変形の説明図である。
【0066】
フィールド面70は、関数F1にしたがって変形される。従って、変形パラメータA1の値が大きいほどフィールド面70の変形度合いが大きくなる。図8では、フィールド面70は、上述したように、略等断面で曲げ変形される。
【0067】
ところで、仮想空間における仮想カメラ60の位置(フィールドオブジェクトに対する位置)が変化すると、仮想空間における仮想カメラ60の画角内の領域(例えばフィールドオブジェクトの領域)が変化するので、フィールド画像の多様化を図ることができる。ただし、この場合でも、仮想カメラ60の位置(フィールドオブジェクトに対する位置)が変化しても、仮想カメラ60の画角内の領域の状態が単調であると、フィールド画像の多様化を図ることができない。従って、仮想空間における仮想カメラ60の位置(フィールドオブジェクトに対する位置)を変化可能としつつ、フィールドオブジェクト上に配置される第2オブジェクトの数や種類等を増やすことで、フィールド画像の多様化を効果的に図ることができる。以下、仮想カメラ60の位置とは、特に言及しない限り、フィールドオブジェクトに対する位置(相対的な位置)を意味する。
【0068】
しかしながら、本実施形態では、上述したように、フィールド面70(及びそれに伴いフィールドオブジェクト)は曲げ変形されるが、曲げ変形の際の変形度合いが常に一定であると仮想カメラ60から視た表現で描画して得られるフィールド画像が単調化しやすい。
【0069】
この点、本実施形態では、仮想カメラ60の位置が変化可能とされるだけなく、フィールド面70(及びそれに伴いフィールドオブジェクト)の曲げ変形に係る変形度合いも変化可能とされる。フィールド面70(及びそれに伴いフィールドオブジェクト)の曲げ変形に係る変形度合いが変化すると、同じフィールドオブジェクトの領域であっても仮想カメラ60から視たときの見え方が異なるので、仮想カメラ60から視た表現で描画して得られるフィールド画像の更なる多様化を図ることができる。
【0070】
また、本実施形態では、フィールドオブジェクト用の一の素材(フィールド画像及びフィールド面70)を用いて、フィールド面70の曲げ変形に係る変形度合いを変化させることで、多様な形態のフィールドオブジェクトを実現する。これにより、多様なフィールドオブジェクト(変形不能な固定の形態のフィールドオブジェクト)を事前に用意しておく場合に比べて、フィールドオブジェクト用の記憶領域の効率化を図ることができる。すなわち、記憶領域を効率的に利用して多様な形態のフィールドオブジェクトを実現できる。
【0071】
なお、上述のように、フィールド面70の変形度合いが変化されると、地平線HLの高さH1が変化することに起因して、ユーザに違和感を与えるおそれがある。例えば、仮想カメラ60の位置が固定されたまま、フィールド面70の変形度合いが変化されると、違和感を与えやすい。
【0072】
そこで、本実施形態では、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域が変化する場合に、当該変化に合わせて、フィールド面70の変形度合いが変化される。例えば、仮想カメラ60の位置が変化する場合に、当該変化に合わせて、フィールド面70の変形度合いが変化される。これにより、フィールド面70の変形度合いが変化されることで生じうる不都合(すなわちユーザに与えうる違和感)を低減できる。
【0073】
例えば、仮想カメラ60の位置が1つ以上の特定位置又は特定範囲内にある場合に、そうでない場合よりもフィールド面70の変形度合いが大きくなるようにしてもよい。これにより、仮想カメラ60の位置が特定位置又は特定範囲内にあるときのフィールド画像(すなわち仮想カメラ60の画角内の各種オブジェクトの表現)を、他の位置にあるときのフィールド画像とは異なる態様で表現できる。例えば、特定位置に係るフィールド画像を他の位置に係るフィールド画像よりも目立たせたり、特定位置に係るフィールド画像に特定の意味を持たせたりするといった効果を与えることができる。なお、特定位置又は特定範囲は、例えば第1オブジェクトが移動しながら曲がる位置等(例えば図2に示す横通路14と縦通路15との交差位置)に対応して設定されてもよいし、強調したいオブジェクト(例えば出現確率が低いゲーム媒体に係るオブジェクト)が配置される位置に対応して設定されてもよい。この場合、例えば、特定位置は、当該オブジェクトの位置に対して所定関係を有する位置であってよい。また、特定位置は、動的に変化されてもよい。例えば、1つ以上の特定位置は、出現確率が低いゲーム媒体に係るオブジェクトが配置される場合だけ、当該オブジェクトが配置される位置に対応して設定される特定位置を含んでもよい。
【0074】
ここで、仮想カメラ60の位置が変化可能とされると、仮想カメラ60の位置の変化に伴い、フィールドオブジェクトにおける仮想カメラ60の画角内の領域が変化する。この場合、フィールドオブジェクト上に多様な第2オブジェクトを多様な態様で配置すれば、ユーザの操作対象の第1オブジェクトの写り方や複数の第2オブジェクトの重なり具合が変化するので、仮想カメラ60から視た表現で描画して得られるフィールド画像を多様化できる。また、第2オブジェクト及び/又は第1オブジェクトの間で重複(重なり)が生じた場合でも、上述したように、フィールド面70の変形度合いを調整することで、重複するオブジェクトは、上下に互いにずれた位置に配置される。したがって、重複するオブジェクトのうちの、個々のオブジェクト又は着目させた1つ以上のオブジェクトの視認性を高めることができる。
【0075】
また、仮想カメラ60から視た表現で描画して得られるフィールド画像を多様化させることで、かかるフィールド画像の一部を際立たせることが可能になり、ユーザのオブジェクトに対する視認性が向上する。更に、操作対象となるオブジェクトや、操作箇所が明確になることにより操作性が向上する。また、限られた画面内で、複数のオブジェクトが存在したとしても視認性を損なうことなく(情報量を制限することなく)、仮想空間内の状況を表現することができる。このような効果は特にスマートフォンのような狭い画面において顕著である。
【0076】
また、地平線の表現等は、フィールドオブジェクトの曲げ変形という単純な処理で実現することができるため、処理負荷も抑えることができる。また、フィールドオブジェクトにおける仮想カメラ60の画角外の(隠れた)オブジェクトを描画しなくてもよいので、その点でも処理負荷を抑えることができる。
【0077】
図9は、仮想カメラ60の位置の変化の自由度の説明図である。仮想カメラ60の位置の変化は、図9に示すように、視線方向Vに沿った変化V1と、視線方向Vに交差する方向の変化V2、V3と、これらの組み合わせとを含む。変化V2は、Vz平面内の変化であり、V3は、Vz平面に対して垂直な方向の変化である。なお、仮想カメラ60の位置の変化は、グローバル座標系での仮想カメラ60の変位(移動)により実現されてもよいし、グローバル座標系でのフィールドオブジェクトの変位(移動)により実現されてもよいし、これらの組み合わせにより実現されてもよい。
【0078】
このように、本実施形態では、仮想カメラ60の位置(相対的な位置)が変化する態様は、視線方向Vに交差する方向(V2、V3)でフィールドオブジェクトに対する位置(相対的な位置)が変化する態様(以下、「第1変化態様」と称する)と、視線方向Vに沿った方向(V1)でフィールドオブジェクトに対する位置(相対的な位置)が変化する態様(以下、「第2変化態様」と称する)と、を含む。
【0079】
この点、フィールド面70の変形度合いの変化は、第1変化態様及び第2変化態様のいずれか一方に伴って実現されてもよいし、第1変化態様及び第2変化態様の双方に伴って実現されてもよい。例えば、仮想カメラ60の位置が、視線方向Vに交差する方向に変化しつつ、視線方向Vに沿って変化する。
【0080】
なお、フィールド面70の変形度合いの変化の際に、同時に実現される変化(すなわち、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域の変化)は、フィールドオブジェクトに対する位置(相対的な位置)の変化に限らず、仮想カメラ60の視線方向Vの回転(図10参照)によっても実現されてもよい。また、仮想カメラ60の光学パラメータを可変値とし、仮想カメラ60の光学パラメータの値を変化させることで、フィールドオブジェクトのうちの、仮想カメラ60の画角内に収まる領域を変化させることも可能である。かかる光学パラメータは、例えば、焦点距離や画角等のような、仮想カメラ60のズーム量に関連する光学パラメータであってよい。
【0081】
本実施形態では、一例として、仮想カメラ60は、フィールドオブジェクトに対する位置(相対的な位置)が変化可能とされるだけなく、仮想カメラ60の視線方向Vも変化可能とされる。具体的には、仮想カメラ60の視線方向Vは、z方向に平行な軸(第3軸の一例)(以下、「公転軸Pc」と称する)まわりの回転が可能とされる。なお、仮想カメラ60の視線方向Vは、公転軸Pcまわりの回転のみが可能とされてもよいし、他の軸まわりの回転(後述する自転)も可能とされてもよい。例えば、仮想カメラ60の視線方向Vは、Vz平面に垂直な軸まわりの回転が可能とされてもよい。すなわち、仮想カメラ60の迎角(後述する迎角パラメータψ)が変化する態様で、仮想カメラ60の視線方向Vが回転されてもよい。この場合、回転中心は、仮想カメラ60の位置に対して所定関係となる位置であってよく、所定関係は、固定であってもよいし、変化されてもよい。
【0082】
以下、仮想カメラ60の回転とは、特に言及しない限り、視線方向Vが公転軸Pcまわりに回転する態様の回転を意味する。仮想カメラ60の向きとは、仮想カメラ60の視線方向Vの向きを意味する。
【0083】
図10は、仮想カメラ60の視線方向Vの回転(変化)の説明図であり、z方向に視た仮想カメラ60及びその画角62を模式的に示す図である。図10には、回転中における2つの位置で仮想カメラ60が模式的に示されている。
【0084】
図10では、仮想カメラ60の視線方向Vに係る公転軸Pcは、z方向に視て、仮想カメラ60の視線方向Vを通りかつ仮想カメラ60から視線方向V後方側にオフセットされている。この場合、仮想カメラ60が360度回転すると、仮想カメラ60は、z方向に視て、公転軸Pcまわりの円形の軌跡C70を描く。ただし、公転軸Pcの位置は、任意であり、仮想カメラ60に対して所定関係となる位置であってよく、所定関係は、固定であってもよいし、変化されてもよい。ただし、本明細書では、公転軸Pcは、仮想カメラ60を通る場合の自転軸とは区別され、従って、自転軸とは異なるように設定される。
【0085】
なお、図10では、視線方向Vは、z方向に視て、仮想カメラ60の回転中は常に、公転軸Pcを通りかつ公転軸Pcから離れる向きであるが、これに限られない。例えば、視線方向Vは、z方向に視て、仮想カメラ60の回転中は常に、公転軸Pcを通りかつ公転軸Pcに向かう向きであってもよい。すなわち、公転軸Pcは、z方向に視て、仮想カメラ60の視線方向Vを通りかつ仮想カメラ60から視線方向V前方側(遠方側)にオフセットされてもよい。この場合、公転軸Pcは、例えば、全方位からユーザに見せたい所定のオブジェクト(例えば後述する所定オブジェクト)を通るように設定されてもよい。また、他の実施形態では、視線方向Vは、z方向に視て、仮想カメラ60の回転(公転)中に、自転してもよい。すなわち、仮想カメラ60は、自転軸61(z軸に平行な軸(第3軸の他の一例))まわりに回転(自転)可能とされてもよい。あるいは、視線方向Vは、公転とは独立して自転可能とされてもよい。
【0086】
ところで、上述したように、地平線HLは、フィールド面70が曲げ変形されることで、形成される。従って、仮想カメラ60の回転に伴い視線方向Vが変化すると、それに伴い、フィールド面70の曲げ変形の変形態様が変化される。すなわち、仮想カメラ60の回転に伴い視線方向Vが変化すると、それに伴い、変化後の視線方向Vに基づくVz平面内にローカル座標系のXc軸が位置するようにフィールド面70の曲げ変形の変形態様が変化される。これにより、仮想カメラ60の回転に伴い視線方向Vが変化しても、違和感のない態様で仮想空間内の地平線HLを実現できる。
【0087】
次に、図11以降を参照して、サーバ装置10の描画機能の更なる詳細を説明する。
【0088】
ここでは、まず、図11を参照して、図12以降の説明で用いるカメラパラメータについて説明してから、サーバ装置10の詳細を説明する。
【0089】
図11は、カメラパラメータの説明図である。図11には、グローバル座標系に位置付けられたフィールド面70(正規の状態)が示されている。なお、フィールド面70は、上述のように、曲げ変形が可能であるが、グローバル座標系におけるフィールド面70全体の並進や回転が不能である。従って、フィールド座標系でのフィールド面70の各位置の座標は、所定の変換式で、グローバル座標系の各座標に変換可能であり、また、逆の変換も可能である。なお、以下では、説明上、フィールド座標系の原点は、グローバル座標系の原点と同じであり、フィールド座標系のu軸(=テクスチャ座標系のu軸)は、グローバル座標系のx軸に一致し、フィールド座標系のv軸(=テクスチャ座標系のv軸)は、グローバル座標系のy軸に一致するものとする。なお、以下では、フィールド面70とは、特に言及しない限り、フィールド画像が投影された状態のフィールド面70(フィールドオブジェクトのフィールド面70)を表す。
【0090】
本実施形態では、カメラパラメータは、2つの位置パラメータ(X、Y)と、距離パラメータA2と、向きパラメータθと、迎角パラメータψとを含む。これらのすべてのパラメータの値が決まると、グローバル座標系に対して、仮想カメラ60を一意に位置付けることができる。
【0091】
位置パラメータXは、視線方向Vのxy平面上の交点のx座標であり、位置パラメータYは、視線方向Vのxy平面上の交点のy座標であり、距離パラメータA2は、視線方向Vのxy平面上の交点から仮想カメラ60までの距離(視線方向Vに沿った距離)である。向きパラメータθは、視線方向Vのxy平面上の投影ベクトルV’と、x軸とのなす角度である。迎角パラメータψは、視線方向Vとxy平面とのなす角度である。なお、本実施形態では、迎角パラメータψが利用されるが、迎角パラメータψは省略されてもよい。すなわち、迎角パラメータψは、値が一定値(固定値)であってもよい。
【0092】
なお、このようなカメラパラメータは、以下の説明用であり、実際の処理では、異なるパラメータが等価的に使用されてもよい。
【0093】
図12は、サーバ装置10の描画機能に関する機能ブロック図の一例である。図13は、変形パラメータデータの説明図である。なお、図13において、“-”は任意であることを表し、“・・・”は同様の繰り返しを表す。図14は、距離パラメータデータの説明図である。同様に、図14図15も同様)において、“・・・”は同様の繰り返しを表す。図15は、向きパラメータデータの説明図である。
【0094】
サーバ装置10は、描画情報記憶部130と、操作情報取得部132と、描画データ送信部134と、描画処理部140とを含む。なお、描画情報記憶部130は、図1に示したサーバ記憶部12により実現でき、操作情報取得部132及び描画データ送信部134は、図1に示したサーバ通信部11により実現でき、描画処理部140は、図1に示したサーバ制御部13により実現できる。以下、各部の処理に関して、“算出”とは、データとして記憶された算出値や設定値等を読み出すだけの処理を含む概念である。
【0095】
描画情報記憶部130は、描画処理部140により用いられる各種情報及びデータが記憶される。
【0096】
描画情報記憶部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つ以上設定されてもよい。
【0097】
また、描画情報記憶部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とフィールドオブジェクトとの間の距離が短くなる。
【0098】
なお、本実施形態では、特定位置に係る距離パラメータデータ14Aにおいては、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定位置が定義されていないが、上述した変形パラメータデータ13Aのように、向きパラメータθの値に応じて距離パラメータA2の値が変化するような特定位置が定義されてもよい。すなわち、仮想カメラ60の公転中に距離パラメータA2の値が変化する特定位置が定義されてもよい。この場合、好ましくは、仮想カメラ60の公転中に変形度合いが変化する特定位置に対して、当該特定位置に係る特定向きに対して距離パラメータA2の値が対応付けられる。例えば、特定位置C=(XC、YC)には、仮想カメラ60の向きが向きパラメータθ=θC1のときは距離パラメータA2の値γ31が対応付けられ、仮想カメラ60の向きが向きパラメータθ=θC2のときは距離パラメータA2の値γ32が対応付けられてもよい。これにより、仮想カメラ60の公転中に曲げ変形度合いが変化する際に距離パラメータA2の値を変化させることができる。
【0099】
また、描画情報記憶部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の値が対応付けられた位置であってもよい。
【0100】
また、描画情報記憶部130に記憶されるデータは、迎角パラメータデータを含む。迎角パラメータデータにおいては、図示しないが、向きパラメータデータと同様、迎角変化位置に係る仮想カメラ60の位置パラメータ(X、Y)の各値に、迎角パラメータψの値が対応付けられてよい。ある一の仮想カメラ60の位置に係る迎角パラメータψの値は、当該位置の仮想カメラ60の画角内に所望の領域が収まるように決定されてよい。例えば、特定の第2オブジェクトをユーザに見せたい場合、当該特定の第2オブジェクトが画角内に収まる領域に位置するように迎角パラメータψの値が、当該位置に係る位置パラメータ(X、Y)に対応付けられてもよい。
【0101】
なお、描画情報記憶部130に記憶されるデータは、図13図14及び図15に示すような区分けで管理される必要はなく、適宜、統合して管理されてもよい。
【0102】
操作情報取得部132は、ユーザの操作情報を取得する。なお、ユーザの操作情報は、端末装置20におけるユーザによる各種操作に応じて生成される。なお、操作情報は、ジェスチャーや音声入力等により生成されてもよい。本実施形態では、操作情報は、所定オブジェクトの移動指示、及び、仮想カメラ60の回転指示を含む。所定オブジェクトの移動指示は、フィールドオブジェクトに対する所定オブジェクトの位置(以下、単に「所定オブジェクトの位置」とも称する)を変化させるために指示であり、移動方向や移動量等の指示を含んでもよい。仮想カメラ60の回転指示は、上述した仮想カメラ60の回転を実現するための指示であり、回転の種別(公転軸Pcまわりの回転、即ち公転、又は、自転軸61まわりの回転、すなわち自転、若しくは、迎角パラメータψの値を変化させる回転)、回転方向等の指示を含んでもよい。所定オブジェクトは、任意であるが、本実施形態では、好ましくは、第1オブジェクトである。操作情報は、その他、仮想カメラ60の移動指示等を含んでもよい。
【0103】
描画データ送信部134は、描画処理部140により生成されるフィールド画像用の描画データを端末装置20に送信する。なお、上述したように、他の実施形態では、描画処理部140の描画処理の一部又は全部が端末装置20側で実現されてもよい。例えば、描画処理部140が端末装置20により実現される場合は、描画データ送信部134は省略されてよい。
【0104】
描画処理部140は、描画情報記憶部130内の各種データや端末装置20からの操作情報等に基づいて、フィールド画像用の描画データを生成する。
【0105】
描画処理部140は、変化処理部142と、第2移動処理部144と、変形処理部145と、投影処理部146と、背景処理部147と、描画データ生成部148とを含む。
【0106】
変化処理部142は、操作情報等に応じて仮想カメラ60の位置パラメータ(X、Y)の各値を変化させるとともに、位置パラメータ(X、Y)の各値を変化させる場合に、当該変化に応じた各種処理を実行する。
【0107】
変化処理部142は、第1移動処理部1420と、距離変更部1421と、向き変更部1422と、迎角変更部1423と、更新反映部1424と、回転処理部1425と、を含む。
【0108】
第1移動処理部1420は、所定の第1移動条件が成立すると、仮想カメラ60の位置パラメータ(X、Y)の各値を更新する。所定の第1移動条件は、任意であるが、例えば操作情報の所定オブジェクトの移動指示に基づく所定オブジェクトの移動により満たされてもよいし、ゲームの進行状況や他の因子に基づいてに満たされてもよい。
【0109】
距離変更部1421は、更新後の位置パラメータ(X、Y)の各値に、距離パラメータA2の値を対応付ける。本実施形態では、距離変更部1421は、描画情報記憶部130内の距離パラメータデータを参照して、更新後の位置パラメータ(X、Y)の各値に応じた距離パラメータA2の値を算出する。この際、距離パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、距離変更部1421は、算出した距離パラメータA2の値を、更新後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、距離パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して距離パラメータA2の値が対応付けられていない場合、距離変更部1421は、通常値γ0をそのまま対応付けてもよい。
【0110】
向き変更部1422は、更新後の位置パラメータ(X、Y)の各値に、向きパラメータθの値を対応付ける。本実施形態では、向き変更部1422は、描画情報記憶部130内の向きパラメータデータを参照して、位置パラメータ(X、Y)の各値に応じた向きパラメータθの値を算出する。この際、向きパラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して向きパラメータθの値が対応付けられていない場合は、向き変更部1422は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、向き変更部1422は、算出した向きパラメータθの値を、更新後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、向きパラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して向きパラメータθの値が対応付けられていない場合は、向き変更部1422は、通常値θ0をそのまま対応付けてもよい。通常値θ0は、視線方向Vが所定オブジェクトの移動方向に対してz方向視で直角になるように設定されてよい。
【0111】
迎角変更部1423は、更新後の位置パラメータ(X、Y)の各値に、迎角パラメータψの値を対応付ける。本実施形態では、迎角変更部1423は、描画情報記憶部130内の迎角パラメータデータを参照して、位置パラメータ(X、Y)の各値に応じた迎角パラメータψの値を算出する。この際、迎角パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して迎角パラメータψの値が対応付けられていない場合は、迎角変更部1423は、補間値を算出してもよい。この補間値の算出方法の例については、後述する。そして、迎角変更部1423は、算出した迎角パラメータψの値を、変化後の位置パラメータ(X、Y)の各値に対応付ける。なお、他の実施形態では、迎角パラメータデータ上で、更新後の位置パラメータ(X、Y)の各値に対して迎角パラメータψの値が対応付けられていない場合は、迎角変更部1423は、通常値ψ0をそのまま対応付けてもよい。
【0112】
更新反映部1424は、更新後の位置パラメータ(X、Y)の各値と、当該更新後の位置パラメータ(X、Y)の各値に対応付けられた各種パラメータ(距離パラメータA2、向きパラメータθ、及び迎角パラメータψ)の各値に基づいて、仮想カメラ60をグローバル座標系に対して位置付ける。これにより、仮想カメラ60が、フィールド面70(及びそれに伴いフィールドオブジェクト)に対して位置付けられる。
【0113】
回転処理部1425は、所定の回転条件が成立すると、仮想カメラ60の回転処理を実行する。所定の回転条件は、例えば操作情報(仮想カメラ60の回転指示)に基づいて判定されてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。
【0114】
回転処理部1425は、公転処理部14251と、自転処理部14252と、迎角処理部14253とを含んでよい。なお、他の実施形態では、公転処理部14251、自転処理部14252、及び迎角処理部14253の一部や全部が省略されてもよい。
【0115】
公転処理部14251は、仮想カメラ60から離れた公転軸Pc(図10参照)まわりの視線方向Vの回転を実現する。なお、公転処理部14251は、仮想カメラ60の位置や所定オブジェクトの位置等に応じて、公転軸Pcの位置を適宜設定してよい。
【0116】
自転処理部14252は、仮想カメラ60を通るz方向に平行な軸である自転軸61(図10参照)まわりの、視線方向Vの回転を実現する。
【0117】
迎角処理部14253は、仮想カメラ60の視線方向Vの、xy平面とのなす角度である迎角パラメータψ(図5参照)の変化(すなわち仮想カメラ60を通るVz平面に垂直な軸まわりの回転)を実現する。
【0118】
なお、一の処理周期で、公転処理部14251、自転処理部14252、及び迎角処理部14253のうちの2つ以上の処理部が同時に処理を実現してもよい。
【0119】
第2移動処理部144は、所定の第2移動条件が成立すると、フィールドオブジェクトに対する所定オブジェクトの位置を更新する。なお、所定オブジェクトは、フィールドオブジェクトに対する位置が変化しうるオブジェクトであれば任意であるが、好ましくは、上述したように、第1オブジェクトである。所定の第2移動条件は、任意であるが、例えば操作情報(所定オブジェクトの移動指示)により満たされてもよいし、ゲームの進行状況や他の因子に基づいて満たされてもよい。なお、所定オブジェクトの位置は、例えばフィールド画像のテクスチャ座標系で定義されてよい。
【0120】
変形処理部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(及びそれに伴いフィールドオブジェクト)を曲げ変形する。
【0121】
投影処理部146は、変形処理部145により曲げ変形されたフィールド面70に対して、背景オブジェクト以外の各種オブジェクト(第2オブジェクト等)を配置する。各種オブジェクトの配置は、上述した対応情報に基づいて実現できる。この際、投影処理部146は、所定オブジェクトについては、第2移動処理部144により算出された移動後の位置に所定オブジェクトを配置する。なお、フィールド画像は、上述したように、フィールド面70を曲げ変形させた後に投影されてもよい。
【0122】
背景処理部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が変化した場合でも、当該変化に起因した違和感が生じがたい態様で背景オブジェクトを配置できる。
【0123】
なお、背景処理部147は、所定の場合に、フィールドオブジェクトに対する背景オブジェクトの、z方向に沿った位置を変化させないこととしてもよい。例えば、変形処理部145による曲げ変形の曲げ変形度合いの変化量が比較的小さい場合、フィールドオブジェクトに対する背景オブジェクトの、z方向に沿った位置を変化させないこととしてもよい。
【0124】
描画データ生成部148は、仮想カメラ60から視た各種オブジェクトの表現を含むフィールド画像(描画データ)を生成する。
【0125】
次に、図16以降を参照して、描画機能に係るサーバ制御部13の動作を更に説明する。以降の処理フロー図(フローチャート)においては、各ステップの入力と出力の関係を損なわない限り、各ステップの処理順序を入れ替えてもよい。
【0126】
図16は、サーバ制御部13により実現される処理の流れを示す概略フローチャートである。
【0127】
図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))は、それぞれの通常値に設定される。
【0128】
ステップS1600では、操作情報取得部132は、操作情報を取得する。なお、操作情報は、割り込み処理で端末装置20から受信されて、サーバ記憶部12のうちの所定の記憶部に記憶されてよい。この場合、操作情報取得部132は、順次、操作情報を所定の記憶部から読み出す。
【0129】
ステップS1602では、第2移動処理部144は、ステップS1600で得た操作情報に所定オブジェクトの移動指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS1604に進み、それ以外の場合は、ステップS1616に進む。
【0130】
ステップS1604では、第2移動処理部144は、ステップS1600で得た操作情報の所定オブジェクトの移動指示に基づいて、移動後の所定オブジェクトの位置を算出する。ここでは、移動後の所定オブジェクトの位置は、フィールド座標で(u(k+1)、v(k+1))であるとする。なお、移動前の所定オブジェクトの位置は、フィールド座標で(u(k)、v(k))であるとする。この場合、フィールド座標系での移動ベクトルは、(u(k+1)-u(k)、v(k+1)-v(k))である。なお、所定オブジェクトの移動指示は、このような移動ベクトル(移動方向)を表す指示であってよい。
【0131】
ステップ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))となるように算出されてよい。
【0132】
ステップS1608では、距離変更部1421は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける距離パラメータA2の値γ(k+1)を算出する(距離パラメータ算出処理)。この距離パラメータ算出処理の具体例は、図17及び図18を参照して後述する。
【0133】
ステップS1610では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける向きパラメータθの値θ(k+1)を算出する(向きパラメータ算出処理)。この向きパラメータ算出処理の具体例は、図19を参照して後述する。
【0134】
ステップS1612では、迎角変更部1423は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))に基づいて、当該(X(k+1)、Y(k+1))に対応付ける迎角パラメータψの値ψ(k+1)を算出する(迎角パラメータ算出処理)。この迎角パラメータ算出処理の具体例は、図20を参照して後で概説する。
【0135】
ステップS1614では、更新反映部1424は、ステップS1606からステップS1612で得た各種パラメータの更新後の各値(X(k+1)、Y(k+1)、γ(k+1)、θ(k+1)、ψ(k+1))に基づいて、仮想カメラ60をグローバル座標系に位置付ける。
【0136】
ステップS1615では、変形処理部145は、所定オブジェクトの移動に伴う変形処理を実行する。所定オブジェクトの移動に伴う変形処理の具体例は、図21を参照して後述する。
【0137】
ステップS1616では、第2移動処理部144は、更新後の所定オブジェクトの位置(u(k+1)、v(k+1))を、更新前の所定オブジェクトの位置(u(k)、v(k))に設定する。すなわち、今回値は前回値と同じにする。
【0138】
ステップS1617では、回転処理部1425は、ステップS1600で得た操作情報に仮想カメラ60の回転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS1618に進み、それ以外の場合は、今回の処理周期はそのまま終了する。
【0139】
ステップS1618では、回転処理部1425は、ステップS1600で得た操作情報に基づいて、仮想カメラ60の回転処理(以下、「回転指示に基づく回転処理」とも称する)を実行する。回転指示に基づく回転処理の具体例は、図23を参照して後述する。
【0140】
ステップS1619では、変形処理部145は、回転指示に基づく回転処理後の、フィールドオブジェクトの曲げ変形処理(以下、「回転指示に基づく回転処理後の、変形処理」とも称する)を実行する。回転指示に基づく回転処理後の、変形処理の具体例は、図24及び図25を参照して後述する。
【0141】
ステップ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)”とされてもよい。
【0142】
ステップS1622では、背景処理部147は、変形パラメータA1の今回値β(k+1)と前回値β(k)との間の差分(すなわち曲げ変形の曲げ度合いの差分)に基づいて、背景オブジェクトのz方向の位置を変更する。なお、このような、曲げ変形の曲げ度合いの変化に基づく背景オブジェクトのz方向の位置の変更処理は、上述したとおりであってよい。
【0143】
ステップS1624では、描画データ生成部148は、今回の処理周期での各種更新後の描画データ(フィールド画像の描画データ)を生成する。
【0144】
ステップS1626では、描画データ送信部134は、ステップS1624で生成された描画データを端末装置20に送信する。なお、端末装置20は、描画データを受信すると、当該描画データに基づいて、表示部23上にフィールド画像の表示を更新する。
【0145】
このようにして、図16に示す処理によれば、端末装置20から受信される操作情報に基づいて、当該操作情報を反映した描画データを生成し、生成した描画データを端末装置20に送信できる。従って、ゲームの進行に伴うフィールド画像の更新をリアルタイムに実現できる。
【0146】
図17は、距離パラメータ算出処理(ステップS1608)の一例を示す概略フローチャートである。図18は、補間処理範囲の説明図であり、フィールド面70を示す斜視図である。
【0147】
ステップS1700では、距離変更部1421は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、距離パラメータデータ(図14参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS1702に進み、それ以外の場合は、ステップS1704に進む。
【0148】
ステップ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とする。
【0149】
ステップ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参照)に設定される。また、補間処理範囲(後述する他のパラメータに係る補間処理範囲も同様)についても、距離パラメータデータ等で予め定義されてよい。
【0150】
ステップ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)との間の距離d(2)とともに、(X(k+1)、Y(k+1))と、補間処理範囲Rs(3)に係る特定位置Ps(3)との間の距離d(3)を算出する。
【0151】
ステップ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で算出した補間値を設定する。
【0152】
ステップS1712では、距離変更部1421は、距離パラメータA2の値γ(k+1)に通常値γ0を設定する。
【0153】
このようにして、図17に示す処理によれば、位置パラメータ(X、Y)の各値の所定の処理周期ごとの変化に連動して、距離パラメータA2の値を徐々に変更できるので、例えば、特定位置に至った処理周期で通常値γ0から値γ1等に急変させる場合に比べて、穏やかな距離の変化を実現できる。この結果、ユーザに与えうる違和感を低減しつつ、距離パラメータA2を変化させることができる。
【0154】
図19は、向きパラメータ算出処理(ステップS1610)の一例を示す概略フローチャートである。
【0155】
ステップS1900では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、向きパラメータデータ(図15参照)に設定された任意の向き変化位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS1902に進み、それ以外の場合は、ステップS1904に進む。
【0156】
ステップ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とする。
【0157】
ステップS1904では、向き変更部1422は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、向きパラメータデータ(図15参照)に設定された任意の向き変化位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、向き変化位置ごとに設定されてもよい。本実施形態では、補間処理範囲は、距離パラメータA2に係る補間処理範囲と同様、簡易的に、向き変化位置を中心として半径rの円形領域内(図18参照)であるとする。ただし、他の実施形態では、補間処理範囲は、他の形態の領域で規定されてもよい。また、他の実施形態では、向き変化位置の一部又はすべてに対しては、補間処理範囲は設定されなくてもよい。判定結果が“YES”の場合、ステップS1906に進み、それ以外の場合は、ステップS1912に進む。
【0158】
ステップS1906では、向き変更部1422は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲Rsに係る特定位置との間の距離を算出する。当該距離の算出方法は、上述したステップS1706と同様であってよい。
【0159】
ステップS1908では、向き変更部1422は、ステップS1906で得た距離に基づいて、向きパラメータθの補間値を算出する。補間値の算出方法は、上述したステップS1708と同様であってよい。
【0160】
ステップS1910では、向き変更部1422は、向きパラメータθの値θ(k+1)に、ステップS1908で算出した補間値を設定する。
【0161】
ステップS1912では、向き変更部1422は、向きパラメータθの値θ(k+1)に通常値θ0を設定する。通常値θ0は、所定オブジェクトの移動ベクトル(u(k+1)-u(k)、v(k+1)-v(k))に投影ベクトルV’が垂直をなすように設定されてよい。
【0162】
このようにして、図19に示す処理によれば、位置パラメータ(X、Y)の各値の所定の処理周期ごとの変化に連動して、向きパラメータθの値を徐々に変更できるので、例えば、向き変化位置に至った処理周期で通常値θ0から値θ1等に急変させる場合に比べて、ユーザに与えうる違和感を低減できる穏やかな向きの変化を実現できる。
【0163】
図20は、迎角パラメータ算出処理(ステップS1612)の一例を示す概略フローチャートである。図20に示す処理は、上述した図19に示す向きパラメータ算出処理とパラメータが異なるだけで実質的に同一であるので、説明は省略する。
【0164】
図21は、所定オブジェクトの移動に伴う変形処理(ステップS1615)の一例を示す概略フローチャートである。図22は、曲げ変形処理の説明図であり、図2に示したフィールド画像が投影されたフィールド面70上に、ローカル座標系を対応付けた斜視図である。
【0165】
ステップS2100では、変形処理部145は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ(図13参照)に設定された任意の特定位置に対応するか否かを判定する。判定結果が“YES”の場合、ステップS2102に進み、それ以外の場合は、ステップS2104に進む。
【0166】
ステップ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とする。
【0167】
ステップS2104では、変形処理部145は、ステップS1606で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、変形パラメータデータ(図13参照)に設定された任意の特定位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、特定位置ごとに設定されてもよい。本実施形態では、補間処理範囲は、距離パラメータA2に係る特定位置に対応付けられた補間処理範囲と同様、簡易的に、特定位置を中心として半径rの円形領域内(図18参照)であるとする。ただし、他の実施形態では、補間処理範囲は、上述したように、他の形態の領域で規定されてもよい。
【0168】
ステップS2106では、変形処理部145は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、当該各値が属する補間処理範囲Rsに係る特定位置との間の距離を算出する。当該距離の算出方法は、上述したステップS1706と同様であってよい。
【0169】
ステップS2108では、変形処理部145は、ステップS2106で得た距離に基づいて、変形パラメータA1の補間値を算出する。補間値の算出方法は、上述したステップS1708と同様であってよい。
【0170】
ただし、図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(d))/{(r-d(d))+(r-d(d))}
ステップS2110では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)に、ステップS2108で算出した補間値を設定する。
【0171】
ステップS2112では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)に通常値β0を設定する。
【0172】
ステップ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))に厳密に一致する必要はなく、その近傍であってもよい。
【0173】
ステップS2116では、変形処理部145は、ステップS2114で設定した原点Oと、向きパラメータθの値θ(k+1)とに基づいて、フィールド面70のフィールド座標系(フィールド画像のテクスチャ座標系)にローカル座標系(図7図22参照)を対応付ける。具体的には、ステップS2114で設定した原点Oを通り、x方向に対して向きパラメータθの値θ(k+1)をなす軸を、Xc軸とする。
【0174】
ステップS2118では、変形処理部145は、ステップS2102、ステップS2110、又はステップS2112で設定した更新後の変形パラメータA1の値β(k+1)と、ステップS2116でフィールド面70のフィールド座標系に対応付けたローカル座標系とに基づいて、フィールド面70を曲げ変形させる。この場合、例えば、変形処理部145は、図7を参照して上述した関数F1に基づいて、フィールド面70を曲げ変形させることができる。
【0175】
図21に示す例によれば、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域とは無関係に、フィールド面70全体が略等断面で曲げ変形される。この場合、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域に応じて曲げ変形する範囲を可変する場合に比べて、処理負荷を低減できる。
【0176】
図23は、回転指示に基づく回転処理(ステップS1618)の一例を示す概略フローチャートである。なお、図23では、仮想カメラ60の回転指示には、公転指示及び自転指示の双方が同時に含まれることはないものとする。
【0177】
ステップS2300では、回転処理部1425は、仮想カメラ60の更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))を、更新前の位置パラメータ(X、Y)の各値(X(k)、Y(k))と同じに設定する。すなわち、今回値は前回値と同じにする。
【0178】
ステップS2301では、回転処理部1425は、仮想カメラ60の回転指示に公転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS2302に進み、それ以外の場合は、ステップS2303に進む。
【0179】
ステップS2302では、公転処理部14251は、更新前の向きパラメータθの値θ(k)に基づいて、更新後の向きパラメータθの値θ(k+1)を算出する。例えば、公転処理部14251は、更新前の向きパラメータθの値θ(k)を、所定角度Δθだけ、公転指示に含まれる回転方向に応じて増減することで、更新後の向きパラメータθの値θ(k+1)を算出する。
【0180】
ステップS2303では、自転処理部14252は、仮想カメラ60の回転指示に自転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS2304に進み、それ以外の場合は、ステップS2307に進む。
【0181】
ステップS2304では、自転処理部14252は、更新前の向きパラメータθの値θ(k)に基づいて、更新後の向きパラメータθの値θ(k+1)を算出する。例えば、自転処理部14252は、更新前の向きパラメータθの値θ(k)を、所定角度Δθだけ、自転指示に含まれる回転方向に応じて増減することで、更新後の向きパラメータθの値θ(k+1)を算出する。
【0182】
ステップS2306では、自転処理部14252は、ステップS2300で設定した更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))を、自転分の移動量だけ補正する。具体的には、自転処理部14252は、uv平面内で、自転軸61(図10図11参照)まわりに、更新前の位置パラメータ(X、Y)の各値(X(k)、Y(k))に係る点を、所定角度Δθだけ、自転指示に含まれる回転方向に応じて回転することで、補正を実現する。この場合、当該回転後の当該点の位置が、補正後の、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))となる。
【0183】
ステップS2307では、自転処理部14252は、更新後の向きパラメータθの値θ(k+1)を、更新前の向きパラメータθの値θ(k)と同じに設定する。すなわち、今回値は前回値と同じにする。
【0184】
ステップS2308では、迎角処理部14253は、仮想カメラ60の回転指示に迎角変更指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS2310に進み、それ以外の場合は、ステップS2312に進む。
【0185】
ステップS2310では、迎角処理部14253は、更新前の迎角パラメータψの値ψ(k)に基づいて、更新後の迎角パラメータψの値ψ(k+1)を算出する。例えば、迎角処理部14253は、更新前の迎角パラメータψの値ψ(k)を、所定角度Δψだけ、迎角変更指示に含まれる回転方向に応じて増減することで、更新後の迎角パラメータψの値ψ(k+1)を算出する。なお、迎角パラメータψの変化範囲は、例えば0度から60度の範囲内のように所定範囲内に限定されてもよい。
【0186】
ステップS2312では、迎角処理部14253は、更新後の迎角パラメータψの値ψ(k+1)を、更新前の迎角パラメータψの値ψ(k)と同じに設定する。すなわち、今回値は前回値と同じにする。
【0187】
図23に示す処理によれば、回転指示に含まれる各種の指示に応じて仮想カメラ60の向きを変化させることができる。なお、図23では、回転指示に公転指示及び自転指示のいずれか一方と迎角変更指示とが同時に含まれうる場合が想定されているが、これに限られない。例えば、一の処理周期での回転指示には、公転指示、自転指示、及び迎角変更指示のいずれか1つだけしか含まれないこととしてもよい。なお、この場合、ステップS2302及びステップS2306が終了すると、図23の処理が終了することとしてよい。また、自転及び/又は迎角の変更が不能な構成の場合は、それに応じた処理は省略されてよい。
【0188】
図24は、回転指示に基づく回転処理(ステップS1618)後の、変形処理(ステップS1619)の一例を示す概略フローチャートである。図25は、補間角度範囲の説明図である。
【0189】
ステップS2400では、変形処理部145は、仮想カメラ60の回転指示に自転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS2402に進み、それ以外の場合は、ステップS2404に進む。
【0190】
ステップS2402では、変形処理部145は、更新後の変形パラメータA1の値β(k+1)を、更新前の変形パラメータA1の値β(k)と同じに設定する。すなわち、今回値は前回値と同じにする。ただし、他の実施形態では、更新後の変形パラメータA1の値β(k+1)は、ステップS2306で得た、補正後の、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))と、更新後の向きパラメータθの値θ(k+1)とに基づいて、図21に示した変形処理と同じ態様で、算出されてもよい。この場合、補正後の、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、特定位置に対応するか否かが判定され(ステップS2100)、以後、図21の処理に従ってステップS2102、ステップS2110又はステップS2112により、更新後の変形パラメータA1の値β(k+1)が設定される。
【0191】
ステップS2404では、変形処理部145は、仮想カメラ60の回転指示に公転指示が含まれているか否かを判定する。判定結果が“YES”の場合、ステップS2406に進み、それ以外の場合は、ステップS2402に進む。
【0192】
ステップS2406では、変形処理部145は、ステップS1618の回転指示に基づく回転処理(図23参照)で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、仮想カメラ60の公転中に変形度合いが変化する任意の特定位置(図13の特定位置C参照)であるか、又は、当該特定位置に対応付けられた補間処理範囲内であるか否かを判定する。補間処理範囲は、上述のとおり、本実施形態では、簡易的に、特定位置を中心として半径rの円形領域内であるとする。ただし、他の実施形態では、補間処理範囲は、他の形態の領域で規定されてもよい。判定結果が“YES”の場合、ステップS2408に進み、それ以外の場合(すなわち、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が、仮想カメラ60の公転中に変形度合いが変化する任意の特定位置でなく、かつ、当該特定位置に対応付けられた補間処理範囲内でない場合)は、ステップS2402に進む。
【0193】
ステップS2408では、変形処理部145は、ステップS1618の回転指示に基づく回転処理(図23参照)で得た更新後の向きパラメータθの値θ(k+1)が、特定向きに係る値θ(例えば、図13の特定位置Cの場合、θC1やθC2)であるか、又は、特定向きに係る補間角度範囲内であるか否かを判定する。補間角度範囲は、図13の特定位置Cのような、仮想カメラ60の公転中に変形度合いが変化する特定位置に係る特定向きに対して設定される。なお、図25では、特定位置Cに関する補間角度範囲が模式的に示される。図25では、補間角度範囲は、特定向きに係る値θ(θC1やθC2)を中心として、±Δθの角度範囲内である。判定結果が“YES”の場合、ステップS2410に進み、それ以外の場合は、ステップS2402に進む。
【0194】
ステップS2410では、変形処理部145は、ステップS1618の回転指示に基づく回転処理(図23参照)で得た更新後の向きパラメータθの値θ(k+1)と、特定向きに係る値θとの関係に基づいて、更新後の変形パラメータA1の値β(k+1)を算出する。具体的には、更新後の変形パラメータA1の値β(k+1)は、次のようにして算出されてよい。ここでは、特定位置Cに関して説明する。まず、θC1-Δθ≦θ(k+1)≦θC1+Δθのときは、以下の式(3)により、θC2-Δθ≦θ(k+1)≦θC2+Δθのときは、以下の式(4)により、算出されてよく、それ以外の範囲では、β(k+1)=通常値βとされてよい。
β(k+1)=-(β-β)/Δθ×|(θ(k+1)-θC1)|+β 式(3)
β(k+1)=-(β-β)/Δθ×|(θ(k+1)-θC2)|+β 式(4)
例えば、式(3)では、(θ(k+1)-θC1)の絶対値に(β-β)/Δθを乗じた値を、βから引いた値が、更新後の変形パラメータA1の値β(k+1)とされる。
【0195】
なお、図25では、2つの特定向きのそれぞれに係る補間角度範囲は、重複していないが、重複してもよい。重複する場合(すなわち2つの特定向きのそれぞれに係る補間角度範囲が重複角度範囲を有する場合)は、それぞれ式(3)及び式(4)で算出した2つの値β(k+1)に基づいて、最終的な値β(k+1)を導出してよい。具体的には、以下の式により、最終的な値β(k+1)が算出されてもよい。
最終的な値β(k+1)=B2×β(k+1)’+(1-B2)×β(k+1)”
ここで、β(k+1)’は、式(3)による算出値を表し、β(k+1)”は、式(4)による算出値を表し、B2は、0から1の範囲内で変化する係数である。係数B2は、θ(k+1)が値θC1に近づくほど1に近づき、重複角度範囲におけるθC1側の境界位置で1となる。また、係数B2は、θ(k+1)が値θC2に近づくほど0に近づき、重複角度範囲におけるθC2側の境界位置で0となる。例えば、B2は、以下の通りであってよい。
B2=(θ(k+1)-θC2)/{(θ(k+1)-θC1)+(θ(k+1)-θC2)}
ステップS2412では、変形処理部145は、フィールド面70(フィールド画像が投影されたフィールド面70)において、ステップS1618の回転指示に基づく回転処理(図23参照)で得た更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))(所定位置の一例)に、ローカル座標系の原点Oを対応付ける。なお、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))が更新前の位置パラメータ(X、Y)の各値(X(k)、Y(k))と同じである場合(例えば公転指示の場合)は、更新後の位置パラメータ(X、Y)の各値(X(k+1)、Y(k+1))は、所定オブジェクトの位置に対応することになる。
【0196】
ステップS2414では、変形処理部145は、ステップS2412で対応付けた原点Oと、ステップS1618の回転指示に基づく回転処理(図23参照)で得た更新後の向きパラメータθの値θ(k+1)とに基づいて、フィールド面70のフィールド座標系(フィールド画像のテクスチャ座標系)にローカル座標系(図7図22参照)を対応付ける。具体的には、ステップS2114で設定した原点Oを通り、x方向に対して向きパラメータθの値θ(k+1)をなす軸を、Xc軸とする。
【0197】
ステップS2416では、変形処理部145は、ステップS1618の回転指示に基づく回転処理(図23参照)で設定した更新後の変形パラメータA1の値β(k+1)と、ステップS2414でフィールド面70のフィールド座標系に対応付けたローカル座標系とに基づいて、フィールド面70を曲げ変形させる。この場合、例えば、変形処理部145は、図7を参照して上述した関数F1に基づいて、フィールド面70を曲げ変形させることができる。
【0198】
次に、図26から図27Cを参照して、図16から図25を参照して説明した動作例の適用場面の一例を説明する。
【0199】
図26から図27Cは、図16から図25を参照して説明した動作例の適用場面の説明図であり、図26は、フィールドオブジェクト77の平面図であり、図26Aは、位置M1に係るフィールド面の曲げ変形の状態の説明図であり、図26Bは、位置M2に係るフィールド面の曲げ変形の状態の説明図であり、図26Cは、位置M3に係るフィールド面の曲げ変形の状態の説明図である。また、図27Aは、位置M1に係るフィールド画像G24Aの一例を示し、図27Bは、位置M2に係るフィールド画像G24Bの一例を示し、図27Cは、位置M3に係るフィールド画像G24Cの一例を示す。図26では、フィールドオブジェクト77は、フィールド画像が正規状態のフィールド面70に投影された表現で示されている。図26では、位置M1から位置M3が例示されており、位置M2及び位置M3は、カーブ路17の開始位置付近と終了位置付近である。なお、図26Aから図26Cでは、作図の都合上、カーブ路17等がフィールド面70から離れた部分(仮想カメラ60の画角62の外側の部分)を有するが、全体がフィールド面70上に投影されてもよい。
【0200】
ここでは、第1オブジェクト3がフィールドオブジェクト77上の位置M1から位置M3へと移動する際の描画機能について説明する。なお、この種の移動は、ユーザによる操作により実現されてもよいし、デモンストレーション画像の出力として実現されてもよい。なお、ここでは、位置M1から位置M3の間には、向き変化位置が存在しないものとする。また、位置M1及び位置M3は、向き変化位置の補間処理範囲内や特定位置の補間処理範囲内にも位置しないものとする。
【0201】
第1オブジェクト3が位置M1に位置する状態における仮想カメラ60の位置パラメータ(X、Y)の各値(第1位置の一例)は、第1オブジェクト3の位置に対応し、仮想カメラ60の向きパラメータθの値は、通常値θ、すなわち投影ベクトルV’(図11参照)が第1オブジェクト3の移動方向(この場合、u方向)に垂直になるように設定される。なお、図26では、第1オブジェクト3が位置M2に位置する状態における仮想カメラ60の投影ベクトルV’が示されている。このとき、仮想カメラ60の画角内に収まる領域には、第1オブジェクト3が位置し、図26Aに示すようなフィールド面70の曲げ変形が実現されることで図27Aに示すフィールド画像G24Aが生成されてよい。なお、この場合、地平線HLは、変形パラメータA1の通常値βに応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の通常値γに応じた表示サイズを有する。
【0202】
第1オブジェクト3が位置M2に位置する状態における仮想カメラ60の位置パラメータ(X、Y)の各値は、第1オブジェクト3の位置に対応し、仮想カメラ60の向きパラメータθの値は、通常値θ、すなわち投影ベクトルV’(図11参照)が第1オブジェクト3の移動方向(この場合、第1オブジェクト3の位置を通るカーブ路17の接線方向)に垂直になるように設定される。このとき、仮想カメラ60の画角内に収まる領域には、第1オブジェクト3が位置し、図26Bに示すようなフィールド面70の曲げ変形が実現されることで図27Bに示すフィールド画像G24Bが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の通常値βに応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の通常値γに応じた表示サイズを有する。
【0203】
第1オブジェクト3が位置M1から位置M3に向かってカーブ路17に沿って処理周期ごとに移動量Δuだけ移動されると、仮想カメラ60の位置パラメータ(X、Y)の各値は、カーブ路17に沿って処理周期ごとに移動量Δuだけ移動される。なお、この間、仮想カメラ60の向きパラメータθの値は、通常値θに維持される。なお、第1オブジェクト3がカーブ路17(例えば曲率半径が一定のカーブ路17)に沿って移動する場合は、仮想カメラ60は、カーブ路17の曲率中心を通る自転軸61まわりに自転されてもよい。この場合、自転開始前の状態(例えば第1オブジェクト3が位置M1に位置する状態)から自転状態への遷移は、距離パラメータA2の値や迎角パラメータψの値を変化させることで実現されてもよい。この場合、例えば、距離パラメータA2の値や迎角パラメータψの値は、カーブ路17の曲率半径=A2×cosψとなるように設定されてよい。そして、仮想カメラ60の自転中は、仮想カメラ60の位置パラメータ(X、Y)の各値は、第1オブジェクト3の位置に対応し、自転状態から自転終了後の状態(例えば第1オブジェクト3が位置M3に位置する状態)への遷移は、距離パラメータA2の値や迎角パラメータψの値を元の各値(例えば通常値γ0、ψ0)に戻すこととしてよい。なお、このような距離パラメータA2の値や迎角パラメータψの値の変化についても、補間値を介して実現されてもよい。
【0204】
第1オブジェクト3が位置M3に到達した状態における仮想カメラ60の位置パラメータ(X、Y)の各値(第2位置の一例)は、位置M3に到達した第1オブジェクト3の位置に対応し、向きパラメータθの値は、通常値θ、すなわち投影ベクトルV’(図11参照)が第1オブジェクト3の移動方向(この場合、第1オブジェクト3の位置を通るカーブ路17の接線方向)に垂直になるように設定される。このとき、図26Cに示すようなフィールド面70の曲げ変形が実現されることで、図27Cに示すフィールド画像G24Cが描画されてよい。なお、この場合、地平線HLは、変形パラメータA1の通常値βに応じた高さを有し、第1オブジェクト3等は、距離パラメータA2の通常値γに応じた表示サイズを有する。
【0205】
このようにして、図16から図25を参照して説明した動作例によれば、第1オブジェクト3が位置M1から位置M3に移動する間、フィールド画像G24A、G24B、G24Cに示すように、地平線HLの高さH1が変化しない。すなわち、第1オブジェクト3が位置M1から位置M3に移動するのに伴い仮想カメラ60の視線方向Vが、第1オブジェクト3が位置M1に位置するときの向き(「第1方向」の一例)から、第1オブジェクト3が位置M3に位置するときの向き(「第2方向」の一例)へと変化した場合に、変化した視線方向Vに応じたフィールドオブジェクト77の曲げ変形(仮想カメラ60の視線方向Vに視て同じ変形態様の曲げ変形)が実現されるので、地平線HLの高さH1が変化しない。これにより、第1オブジェクト3の曲線状の動きに対しても仮想カメラ60を追従させつつ、地平線HLの高さH1を一定に保つことができる。ただし、変形例では、地平線HLの高さH1は、ユーザにとって違和感のないレベル内で変化されてもよい。例えばユーザにとって違和感のないレベルとは、フィールドオブジェクトが有しうる微細な凹凸等(すなわちフィールド面70の形状に対してわずかに異なる形状)に対応するレベルであってよい。このようなレベル内の変化であれば、地平線HLの高さH1が略同じとなる。
【0206】
ここで、図16から図25を参照して説明した動作例によれば、図8に示したようなフィールド面70の変形態様は、仮想カメラ60の視線方向Vに視て同じ変形態様の曲げ変形となるように、視線方向Vの動的な変化に連動して動的に変化している(図26Aから図26C参照)。具体的には、第1オブジェクト3が位置M1から位置M3に移動する間、当該移動に応じて動的に変化する。すなわち、当該第1オブジェクト3の移動に応じた原点Oの移動、及び、当該第1オブジェクト3の移動に応じた仮想カメラ60の視線方向Vの変化に起因したXc軸の変化(図21のステップS2116及び図24のステップS2414参照)によって、フィールド面70及びそれに伴うフィールドオブジェクト77の変形態様が動的に変化する。このようなフィールドオブジェクト77の変化態様の動的な変化にもかかわらず、ユーザにとって違和感(地平線の変化等による違和感)を覚えないフィールド画像の描画が可能となる。また、道路(例えばカーブ路17)に合わせて、予め曲げ変形されたフィールドオブジェクトを一つ(または複数を重ね合わせて)用意する場合よりも、その時々の状況に対応した柔軟な表現でのフィールド画像の描画が可能となり、フィールド画像の視認性が向上する。例えば、第1オブジェクト3が位置M1から位置M3に移動する間、第1オブジェクト3がN1個の位置を経由しかつ当該N1個の位置のそれぞれのフィールド画像を描画する場合、本実施形態では、N1通りの曲げ変形が実行される。これに対して、N1個よりも少ないN2個しかフィールドオブジェクト(予め曲げ変形されたフィールドオブジェクト)を用意できない場合は、その分だけフィールド画像の変化がぎこちなくなり(滑らかさが不足し)、視認性が低下しやすくなる。なお、N1個のフィールドオブジェクト(予め曲げ変形されたフィールドオブジェクト)を用意できる場合は、かかる不都合を回避できるが、上述したようにフィールドオブジェクト用の記憶領域が過大となりやすい。このようにして、本実施形態によれば、フィールドオブジェクト用の記憶領域を効率的に利用しつつ、視認性を高めることができる。
【0207】
なお、図26から図27Cは、第1オブジェクト3の移動に伴い仮想カメラ60の視線方向Vが変化する場面であるが、第1オブジェクト3が移動せずに仮想カメラ60が自転や公転するような場面(すなわち回転指示に基づく回転処理(ステップS1618)が実現される場面)についても同様である。この場合も、仮想カメラ60の視線方向Vが、自転又は公転により、ある一の方向(「第1方向]の一例」から他の一の方向(「第2方向」の一例)へと変化した場合に、変化した視線方向Vに応じたフィールドオブジェクト77の曲げ変形(仮想カメラ60の視線方向Vに視て同じ変形態様の曲げ変形)が実現されるので、地平線HLの高さH1が変化しない。これにより、仮想カメラ60の動きの自由度を高めつつ、地平線HLの高さH1を一定に保つことができる。なお、この場合も、変形例では、仮想カメラ60の自転や公転中に、地平線HLの高さH1は、ユーザにとって違和感のないレベル内で変化されてもよい。
【0208】
次に、図28を参照して、上述した実施形態に対する変形例について説明する。
【0209】
図28は、変形例によるサーバ装置10Aの描画機能に関する機能ブロック図の一例である。変形例によるサーバ装置10Aは、上述した実施形態によるサーバ装置10に対して、描画処理部140が描画処理部140Aで置換された点が異なる。
【0210】
本変形例による描画処理部140Aは、上述した実施形態による描画処理部140に対して、距離変更部1421がズーム量変更部1421Aで置換された点が異なる。
【0211】
ズーム量変更部1421Aは、焦点距離や画角等のような、仮想カメラ60のズーム量に関連する光学パラメータの値を変更する。ズーム量変更部1421Aは、距離変更部1421と同様の効果が実現されるように、光学パラメータの値を変更してよい。例えば、距離変更部1421が距離パラメータA2の値を低減させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が大きくなるように光学パラメータの値を変化させることで実現されてもよい。同様に、距離変更部1421が距離パラメータA2の値を増加させることで得られる効果は、ズーム量変更部1421Aが、ズーム量が小さくなるように光学パラメータの値を変化させることで実現されてもよい。このようにして、距離変更部1421による機能を、ズーム量変更部1421Aにより実現できる。
【0212】
なお、他の変形例では、距離変更部1421とズーム量変更部1421Aとが同時に機能してもよい。
【0213】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【0214】
例えば、上述した実施形態では、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体を曲げ変形することで実現されるが、これに限られない。例えば、フィールドオブジェクトの曲げ変形は、フィールドオブジェクトの全体のうちの、仮想カメラ60の画角内に収まる領域だけ又は当該領域を包含する一部領域だけに対して実行されてもよい。
【0215】
また、上述した実施形態では、フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置は、基本的に、第1オブジェクトの位置に対応するが、これに限られない。所定条件が成立した場合に、フィールドオブジェクトにおけるローカル座標系の原点Oが対応付けられる位置は、特定オブジェクトの位置に対応するように変更されてもよい。この場合、特定オブジェクトは、第1オブジェクトのような、フィールドオブジェクトに対して位置が変化しうるオブジェクトであってもよいし、第2オブジェクトのような、フィールドオブジェクトに対して位置が固定されたオブジェクトであってもよい。
【0216】
また、上述した実施形態では、所定オブジェクトの移動の際に仮想カメラ60の位置パラメータ(X、Y)の各値に対応付けられる各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値は、位置パラメータ(X、Y)の各値が同じであるときは、毎回、同じである。例えば、所定オブジェクトの移動の際に、所定オブジェクトがある一の位置に位置するとき、当該一の位置に対しては同一の各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値が実現される。しかしながら、これに限られない。例えば、所定オブジェクトの移動の際に仮想カメラ60の位置パラメータ(X、Y)の各値に対応付けられる各種パラメータ(例えば、距離パラメータA2、向きパラメータθ、迎角パラメータψ等)の値は、位置パラメータ(X、Y)の各値が同じであるときでも、ゲームの進行状況や他の因子(例えば所定オブジェクトの移動方向等)に応じて変化されてもよい。例えば、特定位置Aに対応付けられる変形パラメータA1の値は、ゲームの進行状況や他の因子に基づき所定条件が成立した場合に値β1に設定され、それ以外の場合は、通常値β0に設定されてもよい。また、このような変化は、例えば、所定のイベントの発生や、移動する第2オブジェクトが、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に入った(画面内に配置された)場合や、ユーザによる画角変更のための手動操作に応じて実行されてもよい。
【0217】
また、上述した実施形態では、特定位置A、Bのような各特定位置は、フィールドオブジェクト上の固定位置であったが、フィールドオブジェクト上で移動可能な位置であってよい。例えば、特定位置の一部は、第2オブジェクトのうちの、移動する所定の第2オブジェクトの位置に対応して設定されてもよい。この場合、一の特定位置は、移動する所定の一の第2オブジェクトの位置に対して所定関係を有する位置であってよい。
【0218】
また、上述した実施形態において、補間処理範囲が動的に変化されずに固定される場合として、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ距離パラメータA2及び迎角パラメータψの各値が通常値γ0、ψ0である場合に、任意の向きパラメータθの値のときにも、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に当該補間処理範囲に係る特定位置が位置するように、設定されてもよい点は、上述した。例えば、図29には、特定位置Aに関する補間処理範囲Rs(A)が平面視で示され、図30には、図29のラインJ1-J1に沿った断面視とラインJ2-J2に沿った断面視とが重ねて示されている。この場合、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P260に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ、ψである場合に、図30に示すように、パラメータθの値が図29に示すようなθ(P260)であるとき、特定位置Aは、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置する。なお、図30における境界線6211は、仮想カメラ60の画角62(z方向に垂直な方向に視た際の画角)(図5参照)の上側の境界線である。従って、この場合、位置P260は、補間処理範囲Rs(A)内に属する。他方、仮想カメラ60の位置パラメータ(X、Y)の各値が位置P261に対応し、かつ距離パラメータA2及び迎角パラメータψの各値が通常値γ、ψである場合に、図30に示すように、パラメータθの値が図29に示すようなθ(P261)であるときでも、特定位置Aは、フィールドオブジェクトにおける仮想カメラ60の画角内に収まる領域に位置しない。従って、この場合、位置P260は、補間処理範囲Rs(A)内に属さない。しかしながら、更なる別の設定態様として、補間処理範囲は、そのときのカメラパラメータの各値に基づいて、動的に変化するように設定されてもよい。例えば、一の特定位置に係る補間処理範囲は、当該補間処理範囲内に仮想カメラ60の位置パラメータ(X、Y)の各値が位置しかつ更新後(又は更新前)の距離パラメータA2及び迎角パラメータψの各値(通常値γ0、ψ0とは異なる値であるうる)が適用される場合に、任意の向きパラメータθの値のときにも、仮想カメラ60の画角内に収まる領域に当該一の特定位置が位置するように、動的に設定されてもよい。これは、仮想カメラ60の位置パラメータ(X、Y)の各値が、ある一の補間処理範囲外である場合でも、他の一の補間処理範囲内に位置することにより、距離パラメータA2等の値が通常値でない補間値である可能性があるためである。なお、ここでは、仮想カメラ60の公転や自転が任意の位置で可能である仕様を想定しているが、仮想カメラ60の公転や自転が、限定された位置でのみ可能である仕様や公転や自転自体が不能である仕様では、上述した説明における“任意の向きパラメータθの値のときにも”は、“その時点の向きパラメータθの値のときに”と読み替えて適用されてよい。
【0219】
また、仮想カメラ60の位置パラメータ(X、Y)の各値の変化速度(時間あたりの変化量)が大きいほど補間処理範囲が広くなる態様で、当該変化速度に応じて補間処理範囲の広さが動的に変化されてもよい。あるいは、同様の考え方に基づいて、変化速度とは無関係に、所定のマージンを補間処理範囲に対して設定してもよい。これにより、例えば、仮想カメラ60の位置パラメータ(X、Y)の各値の変化速度(時間あたりの変化量)が大きいまま仮想カメラ60の位置パラメータ(X、Y)の各値が特定位置(又は特定オブジェクト)に対応する各値へと変化する場合に生じうる不都合(フィールド画像の比較的急激な変化に起因してユーザに与えうる違和感)を低減できる。
【0220】
また、仮想カメラ60の画角が可変である場合、画角が小さいほど補間処理範囲が広くなる態様で、仮想カメラ60の画角に応じて補間処理範囲の広さが動的に変化されてもよい。これにより、例えば、仮想カメラ60の画角が小さいまま仮想カメラ60の位置パラメータ(X、Y)の各値が特定位置(特定オブジェクト)に対応する各値へと変化する場合に生じうる不都合(フィールド画像の比較的急激な変化に起因してユーザに与えうる違和感)を低減できる。
【0221】
なお、以上の実施例に関し、さらに以下の付記を開示する。
【0222】
[付記1]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理装置であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向を前記第3軸まわりで変化させる回転処理部と、
前記回転処理部により前記視線方向が変化される場合に、変化後の前記視線方向に基づいて、前記フィールドオブジェクトを変形させる変形処理部とを含む、情報処理装置。
【0223】
[付記2]
前記変形処理部は、前記視線方向が第1方向であるときと、前記視線方向が前記第1方向とは異なる第2方向であるときとで、前記視線方向に視て同じ変形態様で前記フィールドオブジェクトを曲げ変形させる、付記1に記載の情報処理装置。
【0224】
[付記3]
前記変形処理部は、前記視線方向が第1方向であるときと、前記視線方向が前記第1方向とは異なる第2方向であるときとで、前記視線方向に視て前記フィールドオブジェクトで表現される仮想的な地平線の高さが略同じになるように、前記フィールドオブジェクトを曲げ変形させる、付記1に記載の情報処理装置。
【0225】
[付記4]
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記変形処理部は、前記視線方向と前記第3軸を含む平面で切断した際の前記基本面の形状が、前記平面に垂直な方向に沿って略同じとなるように、前記基本面を変形させる、付記1から3のうちのいずれか1項に記載の情報処理装置。
【0226】
[付記5]
前記フィールドオブジェクトは、変形可能な基本面に基づいて形状付けられ、
前記視線方向と前記第3軸を含む平面上において、所定位置を原点とし、前記原点を通り前記第3軸に平行な軸をY軸とし、前記フィールドオブジェクトに対して上側に向かう向きをY軸の正側とし、かつ、前記原点を通り前記Y軸に垂直な軸をX軸とした場合に、前記変形処理部は、X座標の値の絶対値が大きくなるほどY座標の値が線形又は非線形に単調減少する関数にしたがって、前記基本面を変形させる、付記1から3のうちのいずれか1項に記載の情報処理装置。
【0227】
[付記6]
前記オブジェクトは、前記フィールドオブジェクトに対して配置される所定オブジェクトを更に含み、
前記視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部と、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させる第2移動処理部とを更に含み、
前記第1移動処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置を、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化させる、付記4又は5に記載の情報処理装置。
【0228】
[付記7]
前記オブジェクトは、前記フィールドオブジェクトに対して配置される所定オブジェクトを更に含み、
前記視線方向に交差する方向で、前記フィールドオブジェクトに対する前記仮想カメラの位置を相対的に変化させる第1移動処理部と、
前記フィールドオブジェクトに対する前記所定オブジェクトの位置を相対的に変化させる第2移動処理部とを更に含み、
前記第1移動処理部は、前記フィールドオブジェクトに対する前記仮想カメラの位置を、前記フィールドオブジェクトに対する前記所定オブジェクトの位置の変化に連動して変化させ、
前記変形処理部は、前記所定位置を、前記所定オブジェクトの位置に基づいて決定する、付記5に記載の情報処理装置。
【0229】
[付記8]
前記回転処理部は、前記視線方向を、前記フィールドオブジェクトに対する前記所定オブジェクトの位置に基づいて決定する、付記6又は7に記載の情報処理装置。
【0230】
[付記9]
前記オブジェクトは、背景オブジェクトを更に含み、
前記フィールドオブジェクトで表現される仮想的な地平線の高さに基づいて、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を決定する背景処理部を更に含む、付記1から8のうちのいずれか1項に記載の情報処理装置。
【0231】
[付記10]
前記変形処理部は、更に、前記フィールドオブジェクトに対する前記仮想カメラの位置が第1位置にあるときと、前記フィールドオブジェクトに対する前記仮想カメラの位置が、前記視線方向に交差する方向で前記第1位置とは異なる第2位置にあるときとで、前記フィールドオブジェクトの変形度合いを異ならせる、付記1から9のうちのいずれか1項に記載の情報処理装置。
【0232】
[付記11]
前記オブジェクトは、背景オブジェクトを更に含み、
前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第1位置にあるときと、前記フィールドオブジェクトに対する前記仮想カメラの位置が前記第2位置にあるときとで、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を異ならせる背景処理部を更に含む、付記10に記載の情報処理装置。
【0233】
[付記12]
前記背景処理部は、前記フィールドオブジェクトで表現される仮想的な地平線の高さに基づいて、前記フィールドオブジェクトに対する前記背景オブジェクトの、前記第3軸の方向に沿った位置を決定する、付記11に記載の情報処理装置。
【0234】
[付記13]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理方法であって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向を前記第3軸まわりで変化させ、
前記視線方向が変化される場合に、変化後の前記視線方向に基づいて、前記フィールドオブジェクトを変形させることを含む、コンピュータにより実行される情報処理方法。
【0235】
[付記14]
互いに直交する第1軸、第2軸及び第3軸で規定される3次元の仮想空間に配置されるオブジェクトを、前記仮想空間に配置された仮想カメラから視た表現で描画するための情報処理プログラムであって、
前記オブジェクトは、前記第1軸及び前記第2軸で規定される2次元平面に対応付けられるフィールドオブジェクトを含み、
前記フィールドオブジェクトに対する前記仮想カメラの視線方向を前記第3軸まわりで変化させ、
前記視線方向が変化される場合に、変化後の前記視線方向に基づいて、前記フィールドオブジェクトを変形させる、
処理をコンピュータに実行させる情報処理プログラム。
【符号の説明】
【0236】
1 ゲームシステム
3 第1オブジェクト
10 サーバ装置
11 サーバ通信部
12 サーバ記憶部
13 サーバ制御部
14 横通路
15 縦通路
16 街路樹オブジェクト
20 端末装置
21 端末通信部
22 端末記憶部
23 表示部
24 入力部
25 端末制御部
30 ネットワーク
60 仮想カメラ
62 画角
70 フィールド面
72 背景面
77 フィールドオブジェクト
130 描画情報記憶部
132 操作情報取得部
134 描画データ送信部
140 描画処理部
142 変化処理部
1420 第1移動処理部
1421 距離変更部
1421A ズーム量変更部
1422 向き変更部
1423 迎角変更部
1424 更新反映部
1425 回転処理部
14251 公転処理部
14252 自転処理部
14253 迎角処理部
144 第2移動処理部
145 変形処理部
146 投影処理部
147 背景処理部
148 描画データ生成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図26A
図26B
図26C
図27A
図27B
図27C
図28
図29
図30