画像生成システム、プログラム及び情報記憶媒体
【課題】複雑な要因が絡みあって変化する月の位置や見え方を少ない処理付加で効果的に表現すること。
【解決手段】オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部116と、軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部120と、としてコンピュータを機能させることを特徴とするプログラムである。
【解決手段】オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部116と、軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部120と、としてコンピュータを機能させることを特徴とするプログラムである。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
さてこのようなゲームシステムでは、プレーヤの仮想現実向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。
【0004】
ここにおいて、例えばゲーム空間内で月等の自然の景色を時刻に応じて変化させると、画像を通じて時間の流れを感じさせることができる。
【特許文献1】特開2000−176166号公報
【特許文献2】特開2005−319106号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし月の見え方は地球の自転や公転及び月の公転及び月を見ている位置の緯度や地軸の傾き等の要素に応じて変化するものであり、厳密なシミュレーションを行うと演算負荷が大きくなるという問題点があった。
【0006】
また月の見え方(例えば大きさ)等は、月の位置や時刻等の条件によって左右されるものであり、これをシミュレーションすることは困難であった。
【0007】
このように複雑な要因が絡みあって変化する月の位置や見え方をシミュレーションすると演算付加が増大し、限られたハードウエア資源でリアルタイムに画像生成を行うことが必要なゲーム装置等では処理が困難であるという問題点があった。
【0008】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、複雑な要因が絡みあって変化する月の位置や見え方を少ない処理付加で効果的に表現することが可能な画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0009】
(1)本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0010】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0011】
ここで軌道運行物とはゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行するものであり、例えば月、太陽、星(火星や金星等の惑星を含む)や衛星(人工衛星等を含む)である。
【0012】
またゲーム時刻とはゲームのなかで進行するゲーム時間によって決まる時刻であり、例えば現実世界の実時間と同じに設定されていてもよいし、実時間より早く進行するゲーム時間に応じた時刻やその逆でもよい。
【0013】
また軌道運行物の大きさは軌道運行物の位置に応じて決定される構成でもよいし、ゲーム時刻に応じて決定される構成でもよい。
【0014】
現実世界では月等の軌道運行物が天上にあるときよりも、地平線に近いところにあるときのほうが大ききくみえる。かかる見掛け上の軌道運行物の大きさの変化を正確にシミュレートしようとすると、演算負荷が増大する。
【0015】
本発明によれば、ゲーム時刻に応じて軌道運行物オブジェクトの位置と大きさが決定されて、それに従って軌道運行物の画像が生成される。
【0016】
したがって少ない演算負荷でゲーム時刻に応じて大きさの変化する軌道運行物の画像を生成することができる。
【0017】
(2)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、軌道運行物オブジェクトの位置を設定することを特徴とする。
【0018】
軌道運行物の運動モデルは、天空上の軌道運行物の移動を特定するための情報であり、例えば移動軌跡を特定するための情報でもよいし、ゲーム時刻をパラメータとして位置情報を求める関数でもよいし、ゲーム時刻と対応する位置情報が格納されたテーブルデータ(この場合データ間は補完するようにしてもよい)でもよい。
【0019】
前記運動モデルは、所定の軌道や移動軌跡(少なくとも1つの円または楕円軌道)上にゲーム時刻に対応する位置が一義的に決定されるような情報でもよい。
【0020】
なお軌道運行物の運動モデルは現実世界の月等の軌道運行物の運行をシミュレートするものでもよいし、ゲーム世界独自の軌道運行物の動きを設定してもよい。
【0021】
軌道運行物の運動モデルに基づいて軌道運行物の位置を設定し、軌道運行物の位置に基づいて軌道運行物の大きさを設定するようにしてもよい。
【0022】
また軌道運行物の運動モデルの中にゲーム時刻に対応した軌道運行物の大きさを設定するための情報を含ませておいてもよい。
【0023】
軌道運行物状態決定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物(月)の運動モデルを設定し、設定した軌道運行物(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の大きさを設定し、軌道運行物(月)の画像を生成する際に必要な軌道運行物(月)オブジェクトの位置情報と軌道運行物(月)オブジェクトの大きさ制御情報を含む軌道運行物画像生成用情報を演算し、
前記描画部は、
前記軌道運行物画像生成用情報に基づきオブジェクト空間に軌道運行物(月)オブジェクトを配置して、オブジェクト空間を仮想カメラから見た画像を描画するようにしてもよい。
【0024】
運動モデルはプログラムに命令コードの一部として組み込まれるの形で記憶されていてもよいし(例えば軌道運行物の軌道の演算式がプログラムコードに組み込まれているような場合)、プログラムが使用する関数として記憶されていてもよいし、プログラムから読み出し可能なデータとして記憶されていてもよい。
【0025】
(3)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定することを特徴とする。
【0026】
このようにすると地平線に近いときに大きく、天上付近に行くほど小さくなる月の表現を行うことができる。
【0027】
(4)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、
前記描画部は、
決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を描画することを特徴とする。
【0028】
なお月の明るさの制御は、月のα値を変化させ、月を加算半透明で描画させることにより実現してもよい。
【0029】
例えば基準値または設定値をα、あるゲーム時刻におけるα値をα’として、ゲーム時刻または軌道運行物(月)の位置に応じてα’=kαとなるkの値を求めるようにしてもよい。
【0030】
α値はオブジェクト単位に設定されていてもよいし、ポリゴンの頂点単位に設定されていてもよいし、画素単位に設定されていてもよい。
【0031】
(5)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定することを特徴とする。
【0032】
このようにすると地平線に近いときにうすく、天上付近に行くほど明るく輝く月の表現を行うことができる。
【0033】
(6)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、
前記軌道運行物オブジェクト設定部は、
ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定することを特徴とする。
【0034】
実際の月等の運動をみると、同じ場所(緯度、経度が同じ)であっても例えば季節によって移動軌跡が異なってくる。
【0035】
本発明によれば移動軌跡の異なる複数の運動モデルを用意して、仮想カメラの位置や日付や季節の設定に応じて運行モデルを選択するので、仮想カメラの位置や日付や季節の設定に応じて天空における移動軌跡が変化する軌道運行物(月等)の画像を生成することができる。
【0036】
(7)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定し、
前記描画部は、
前記テクスチャ制御情報に基づいて軌道運行物テクスチャを設定し、軌道運行物オブジェクトにマッピングする処理を行うことを特徴とする。
【0037】
軌道運行物オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、軌道運行物の見かけの形状を変化させるように軌道運行物オブジェクトに対してマッピングするテクスチャの色分布(テクセルパターン)を軌道運行物の見かけの形状を変化させるように動的に変化させるようにしてもよい。
【0038】
この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
【0039】
(8)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報の設定し、
前記描画部は、
設定された制御情報に基づいて、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理を行い見かけの形状が変化した軌道運行物オブジェクトを描画することを特徴とする。
【0040】
描画部行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。
【0041】
本発明によれば、頂点シェーダやピクセルシェーダに対して軌道運行物の見かけの形状を変化させるように制御情報の設定を行うことで、所定のタイミングで軌道運行物の見かけの形状を変化させることができる。
【0042】
(9)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うことを特徴とする。
【0043】
(10)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うことを特徴とする。
【0044】
(11)また本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0045】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0046】
(12)また本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0047】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【発明を実施するための最良の形態】
【0048】
以下、本実施形態について説明する。
【0049】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0050】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図1の構成要素(各部)の一部を省略した構成としてもよい。
【0051】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0052】
記憶部170は、描画バッファ172やZバッファ174やテクスチャ記憶部176を含み、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどにより実現できる。
【0053】
テクスチャ記憶部176は、軌道運行物の見かけの形状の変化に対応した見かけの形状の異なる複数の軌道運行物テクスチャを記憶する。
【0054】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶(記録、格納)される。
【0055】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0056】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。
【0057】
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0058】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0059】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。また処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は、各種プロセッサ(CPU、DSP等)やASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0060】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、軌道運行物オブジェクト設定部116、描画部120、音生成部130を含む。なおこれらの一部を省略してもよい。
【0061】
オブジェクト空間設定部110は、キャラクタ、樹木、車、柱、壁、建物、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を設定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0062】
移動・動作処理部112は、オブジェクト(車、飛行機、又はキャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。即ち、操作部160によりプレーヤが入力した操作データ、プログラム(移動・動作アルゴリズム)、或いは各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。ここでフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0063】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点での画像を生成するための仮想カメラを制御する処理を行う。即ち、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
【0064】
例えば仮想カメラによりオブジェクトを後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた回転角度で回転させるようにしてもよい。この場合には、仮想カメラの位置(移動経路)や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0065】
軌道運行物オブジェクト設定部116は、ゲーム時刻に基づいて軌道運行物オブジェクトの位置と軌道運行物オブジェクトの大きさを含む軌道運行物の状態を設定する。
【0066】
軌道運行物オブジェクト設定部116は、ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、オブジェクトの位置を設定するようにしてもよい。
【0067】
軌道運行物オブジェクト設定部116は、ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定するようにしてもよい。
【0068】
軌道運行物オブジェクト設定部116は、ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、描画部120は、決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を生成するようにしてもよい。
【0069】
前記軌道運行物オブジェクト設定部116は、軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定するようにしてもよい。
【0070】
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、前記軌道運行物オブジェクト設定部116は、ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定するようにしてもよい。
【0071】
軌道運行物オブジェクト設定部116は、所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定するようにしてもよい。
【0072】
前記軌道運行物オブジェクト設定部116は、所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報の設定するようにしてもよい。
【0073】
前記軌道運行物オブジェクト設定部116は、仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うするようにしてもよい。
【0074】
前記軌道運行物オブジェクト設定部116は、仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うするようにしてもよい。
【0075】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0076】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0077】
描画部120は、軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画部として機能する。
【0078】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0079】
なお描画部120が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0080】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0081】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、主記憶部172に保存される。
【0082】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0083】
特に本実施形態では、月オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、月オブジェクトに対してマッピングされるテクスチャの色分布(テクセルパターン)を動的に変化させることができる。この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
【0084】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0085】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。
【0086】
RQ=(1−α)×R1+α×R2 (1)
GQ=(1−α)×G1+α×G2 (2)
BQ=(1−α)×B1+α×B2 (3)
また合成処理が加算αブレンディングである場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0087】
RQ=R1+α×R2 (4)
GQ=G1+α×G2 (5)
BQ=B1+α×B2 (6)
また合成処理がα乗算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0088】
RQ=α×R1 (7)
GQ=α×G1 (8)
BQ=α×B1 (9)
また合成処理がα乗加算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0089】
RQ=α×R1+R2 (7)
GQ=α×G1+G2 (8)
BQ=α×B1+B2 (9)
ここで、R1、G1、B1は、描画バッファ172に既に描画されている画像(背景画像)の色(輝度)のR、G、B成分であり、R2、G2、B2は、描画バッファ172に描画するオブジェクト(プリミティブ)の色のR、G、B成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像の色のR、G、B成分である。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0090】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0091】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0092】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0093】
2.月の位置、大きさ、明るさの制御
地球上からみれば月は天空上を1日にほぼ1回転しているようにみえるが、これは地球の自転によるもである。しかし図2に示すように地球は太陽の回りを公転しており、月もまた地球の周りを公転している。そして地球の地軸は地球の公転面に対して傾いているため、天球上における実際の月の運動(月の移動軌跡)は観測位置(緯度)や日時によって変化する。
【0094】
図3は、本実施の形態の特徴について説明するための図である。
【0095】
210−1〜210−5は、本ゲームにおいて生成される月の画像の時間的な遷移をあらわしている。220は地平線である。
【0096】
本実施の形態のオブジェクト空間では月オブジェクトが配置されるが、その位置をゲーム時刻の進行に従って変化させ、時間の経過と共に天空上を東から西に移動する月の画像を生成する。例えば210−1に示すように18:00頃(ゲーム時刻)に東の空の地平線付近に出現し、天空上を東から西に移動して6:00頃(ゲーム時刻)であるに西の地平付近に沈んでいく。
【0097】
また本実施の形態では、ゲーム時刻の進行に従って、見かけ上の月の大きさも変化させる。見かけ上の月の大きさは、図2に示すように、地平線に近いときのほうが地平線から遠いとときに比べて大きくなるように変化させる。
【0098】
すなわち東又は西の地平付近で見かけ上の大きさは最も大きくなり(210−1、210−5参照)、地平線から最も離れた南中時に見かけ上の月の大きさは最も小さくなる(210−3参照)。
【0099】
図4は、本実施の形態の月の位置と見かけ上の大きさの決定手法の一例について説明するための図である。
【0100】
250はゲーム時刻の進行に従って天空を移動する軌道運行物(月)の運動モデルである。軌道運行物(月)の運動モデル250は、例えば所定の位置Oを中心とした半径をrとする円軌道として設定することができる。そして、予め軌道上の点とゲーム時刻の対応づけを行っておく。例えば軌道上の点P0を0:00時と設定して、24ゲーム時刻で軌道を1周(360度回転)して24:00には再びP0に戻ってくると設定しておいてもよい。すなわち1ゲーム時刻で15度回転する。
【0101】
ここで月は3:00時には軌道上のP1に来て、21:00時には軌道上のP2にくるとして、OとP0をむすぶベクトルP0ベクトル、OとP1をむすぶベクトルP1ベクトル、OとP2をむすぶベクトルP2ベクトルとする。例えばゲーム時刻として3:00が与えられると、3ゲーム時刻分回転することになりP0ベクトルとP1ベクトルのなす角θ1が45度となる。従って軌道250と基準点(例えば開始点)P0及び基準点に対応した基準時刻(例えば開始時刻0:00)が設定されていると、現在のゲーム時刻に対応した回転角θ1が決定され、θ1に対応した軌道250上の位置P1が求まる。
【0102】
このようにしてゲーム時刻に対応した月の位置を求めることができる。そして月の位置に対応したオブジェクト空間上の位置を求める。軌道の半径がオブジェクト空間の天球と同じに設定している場合には求めた位置の座標がそのまま月オブジェクトの配置座標として使用することができる。
【0103】
また軌道の半径がオブジェクト空間の天球と一致しない場合には、例えばP1ベクトルやP2又はその延長線とオブジェクト空間の天球が交わる位置を月オブジェクトの位置座標とすることができる。
【0104】
また軌道250上の基準点(例えば開始点)P0及び基準点に対応した基準時刻(例えば開始時刻0:00)が設定されていると、現在のゲーム時刻に対応した軌道上の位置が一義的に決定される。すなわち、0:00時には月はP0の位置になり、3:00時には月はP1の位置にあり、21:00には月はP2の位置に来ることが一義的に決定される。
【0105】
本実施の形態では月の位置と月の大きさに所定の関係を持たせている。例えば南中するP0において月の大きさが最も小さくなり、地平線にP3、P4で月の大きさが最も大きくなるように、見かけ上の月の大きさを制御する
図5は月画像生成の一例について説明するための図である。
【0106】
月の画像を生成する場合には例えば320に示すような月オブジェクト320と月テクスチャ(月の形状や模様の2次元画像)320を用意しておき、月オブジェクト320に月テクスチャをマッピングすることにより月画像を生成するようにしてもよい。ここにおいて月オブジェクトは複数のポリゴンを用いて球を模した多面体として構成してもよいし、四角形のオブジェクト(板ポリゴンやビルボード)として構成してもよい。四角形のオブジェクトは、1枚の四角形のポリゴンで形成してもよいし、複数の3角形のポリゴンを組み合わせて形成してもよい。
【0107】
図6は本実施の形態の見かけ上の月の大きさの制御について説明するための図である。
【0108】
本実施の形態では、軌道運行物(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の見かけの大きさを設定する。ここでゲーム時刻と軌道運行物(月)の見かけ上の大きさの関係は、ゲームの内容やどのような画像を生成するとより効果的であるか等に基づいて適宜設定することができる。
【0109】
その一つとして、軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の見掛け上の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定してもよい。
【0110】
例えば天球上の月の運行軌道とゲーム時刻が図3に示すように一義的に対応づけられているとすると、ゲーム時刻に応じて月の大きさを設定することで、月の位置に応じた月の見かけ上の大きさの変化を実現することができる。
【0111】
例えば軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の見掛け上の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定するとした場合、図3の210−1、210−2、210−3について210−1>210−2>210−3のように月の大きさを設定する。
【0112】
そして設定した大きさの画像が生成できるように、画像生成の際の星(月)オブジェクトの大きさ制御情報を演算する。本実施の形態では、ゲーム時刻に応じて月オブジェクトのスケールを情報(軌道運行物画像生成用情報の一例である)を変化させることにより月の大きさの異なる画像を生成する。
【0113】
図6の310−1、310−2、310−3、310−4、310−5は、図3の月の運行に対応したゲーム時刻18:00、21:00、24:00、3:00、6:00の月オブジェクトを示したものである。
【0114】
K1は、18:00の月画像を生成するための月オブジェクトのスケール値であり、K2は、21:00の月画像を生成するための月オブジェクトのスケール値であり、K3は、24:00の月画像を生成するための月オブジェクトのスケール値であり、K4は、3:00の月画像を生成するための月オブジェクトのスケール値であり、K5は、6:00の月画像を生成するための月オブジェクトのスケール値である。
【0115】
スケール値とは基準となる月オブジェクトに対する大きさの比率であり、例えば基準値がLとして、生成される大きさがL’とするとL’=KLとなる。
【0116】
本実施の形態では18:00や6:00頃(月が地平線の近くにあるとき)に月の見かけ上の大きさが最も大きくなり、24:00頃(月が最も南に来るとき)に月の見かけ上の大きさが最も小さくなる。従ってスケール値はK1>K2>K3、K5>K4>K3となる。
【0117】
図7は、本実施の形態の月の明るさの制御について説明するための図である。
【0118】
星(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の見かけの大きさを設定するようにしてもよい。ここでゲーム時刻と軌道運行物(月)の明るさの関係は、ゲームの内容やどのような画像を生成するとより効果的であるか等に基づいて適宜設定することができる。
【0119】
その一つとして、軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定してもよい。
【0120】
例えば軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定するようにしてもよい。
【0121】
このような場合、図7の410−1、410−2、410−3、410−4、410−5について410−1<410−2<410−3、410−5<410−4<410−3となるように月の明るさを設定する。
【0122】
そして設定した大きさの画像が生成できるように、画像生成の際の星(月)オブジェクトの明るさ制御情報を演算する。本実施の形態では、ゲーム時刻に応じて月オブジェクトのα値(軌道運行物画像生成用情報の一例である)を変化させることにより月の明るさの異なる画像を生成する。
【0123】
なお月の明るさを変更するための制御は、月を描画する際のα値を変化させることで実現することができる。例えば加算半透明で月を描画する場合には、α値が1に近くなるほど明るくすることができる。
【0124】
α1を18:00の月画像を生成するためのα値、α2を21:00の月画像を生成するためのα値、α3を24:00の月画像を生成するためのα値、α4を3:00の月画像を生成するためのα値、α5を6:00の月画像を生成するためのα値とすると、月が図7のような移動軌跡をとる場合には、α1<α2<α3、α5<α4<α3となるようにα値を設定して加算半透明で描画することにより、地平線に近いところにいる月を薄く、天上に上がるほどはっきりとした月(高く上るほど煌々と輝く月)の表現を行うことができる。
【0125】
本実施の形態で生成される明るさ制御情報は例えば月オブジェクトに与えられるα値そのものでもよいし、月オブジェクトに本来与えれられているα値(オブジェクト単位で与えられている場合でもよいし、頂点単位で与えられている場合でもよいし、画素単位に与えられている場合でもよい。)に対する変更情報(例えばαにかける係数)等でもよい。
【0126】
ここで天球上の月の運行軌道とゲーム時刻が図7に示すように一義的に対応づけられているとすると、ゲーム時刻に応じて月の明るさ(月オブジェクトを加算半透明で描画する際のα値)を設定することで、月の位置に応じた明るさの変化を実現することができる。
【0127】
図8は月の季節によって異なる移動軌跡を示した図である
実際の月の運動をみると、同じ場所(緯度、経度が同じ)であっても例えば季節によって510−1、510−2、510−3移動軌跡が異なってくる。
【0128】
図9は季節によって変化する月の運行モデルを模式的にあらわしたものである。600は天球、650は仮想的な地面(画像生成を行う際には仮想カメラから所定の範囲内に地形オブジェクトを配置するようにしてもよい。)
、Oは仮想カメラの位置であるとする。
【0129】
610−1は図8の移動軌跡510−1の運行モデルであり、610−2は図8の移動軌跡510−2の運行モデルであり、610−3は図8の移動軌跡510−3の運行モデルである。
【0130】
運行モデルはゲーム時刻を変数としてゲーム時刻に応じて、少なくとも1つの円または楕円軌道上の位置が一義的に決定されるような関数等で設定してもよい。
【0131】
このように運行軌道の異なる複数の運行モデル610−1、610−2、610−3を用意して、ゲーム日時にや季節の設定に応じて運行モデルを選択して、選択した運行モデルに従って軌道運行物画像生成用情報を演算するようにしてもよい。
【0132】
例えばゲーム上の(年月日)や月や季節に対応付けて運行軌道の異なる複数の運行モデルを用意しておいてもよい。
【0133】
図10(A)(B)は、月の移動軌跡とゲーム時刻の関係を示す図である。
【0134】
また軌道がほぼ同じであっても図10(A)(B)に示すように、移動上の各位置を通過する時刻が異なってくる場合もある。このような場合図10(A)(B)で同じ軌道関数を使い、基準時刻(例えば24:00)の位置を変更させて、月の位置を設定するようにしてもよい。
【0135】
また図10(A)(B)で、それぞれゲーム時刻から位置を求める関数を設定してもよい。
【0136】
図11(A)(B)は、ゲーム時刻と月オブジェクトの明るさの関係の他の例について説明するための図である。
【0137】
図11(A)では21:00時ごろ東の空に現れた月が3:00ごろ南中して9:00頃に西の空に沈むように移動する。このような場合、9:00頃に月は西の空に存在するが、既に日がのぼって周りの空は明るいので薄くしかみえない。従って710−5の月を描画する際のα値を低くして加算半透明で(月の透明度を高くして)薄い月を表現するようにしてもよい。
【0138】
図11(B)では12:00時ごろ東の空に現れた月が18:00ごろ南中して24:00頃に西の空に沈むように移動する。このような場合、12:00頃から15:00ごろに月は東〜南の空に存在するが、日中で周りの空は明るいのでしかみえない。従って720−1、720−2の月を描画する際のα値を0または0に近い値にして加算半透明で(月の透明度を高くして)月を見えないようにしてもよい。
【0139】
このようにゲーム時刻が日中であることを示している場合は、月を透明にして見えないようにしてもよい。
【0140】
図12は、本実施の月テクスチャについて説明するための図である。太陽と地球と月の位置関係によって、つきは満ち欠けして見える。本実施の形態では、月の満ち欠けを表現するために、810−0から810−7に示すような満月、半月、上限の月、下限の月、新月等を表現するための月テクスチャを用意する。そして、オブジェクト空間における太陽と地球と月の位置関係によって月テクスチャを選択して月オブジェクトにマッピングするようにしてもよい。
【0141】
また予めゲーム日時と月テクスチャを関連付けておいて、与えられたゲーム日時に関連付けられた月テクスチャを選択すちようにしてもよい。
【0142】
またゲーム内の日付の進行に応じて月テクスチャを月の満ち欠けの順に順番に用いるようにしてもよい。
【0143】
3.本実施形態の処理
図13は、本実施の形態の軌道運行物(月)の画像生成処理の流れを示すフローチャート図である。
【0144】
ゲーム日時及び仮想カメラの位置又は緯度の情報に基づき、軌道運行物(月)運動モデルを選択する(ステップS10)。たとえば、ゲーム日時や仮想カメラの緯度に応じて異なる移動軌跡を描く軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0145】
また例えば同緯度の地点から季節に応じて変化する軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0146】
また例えば同季節で緯度に応じて変化する軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0147】
また例えばゲーム空間に対して時刻に応じて変化する軌道運行物(月)の運動モデルを1つ用意しておいてそれを用いるようにしてもよいが、この場合は運動モデルは決まっているので、選択する処理は必要ない。
【0148】
次に選択した運動モデルに基づいて、与えられたゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の大きさと、軌道運行物(月)の明るさを設定して、軌道運行物(月)の位置情報と、軌道運行物(月)の大きさ制御情報(スケール値)と、軌道運行物(月)の明るさ制御情報(透明度情報のα値)を演算する(ステップS20)。
【0149】
ここで月の大きさは、地平面との位置関係におうじて定めても良い。例えば図1で説明したように地平線に近い場合ほど大きく見えるようにしても良い。なお地平面と月の位置関係が一義的に設定されている場合には、ゲーム時刻から直接月の大きさを設定するようにしてもよい。また地平線と月の位置関係がゲーム時刻によって変化する場合には、ゲーム時刻に応じて地平線と月の位置関係を求め、その位置関係に応じて月の大きさを設定するようにしてもよい。
【0150】
また月の位置情報とは、例えばオブジェクト空間に月を配置するときに用いる位置座標等であり、例えばワールド座標系における月の代表点の(X、Y、Z9値でもよい。また月の大きさ情報とは月を拡大縮小する際のスケール値でもよい。また軌道運行物(月)の明るさ制御情報(透明度情報のα値)とは、月を加算半透明で描画する際のα値でもよい。
【0151】
次に軌道運行物(月)の大きさ制御情報(スケール値)に基づき軌道運行物(月)オブジェクトのサイズを変更する(拡大または縮小する)(ステップS30)
次に軌道運行物(月)オブジェクトの位置情報に基づき拡大または縮小した軌道運行物(月)オブジェクトをオブジェクト空間に配置する(ステップS40)。
【0152】
次に透視変換を行う(ステップS50)。
【0153】
次に月テクスチャを選択して透視変換後の月オブジェクトにマッピングする
(ステップS60)。例えば月テクスチャをゲーム日時に関連づけて記憶させておき、ゲーム日時に応じて月テクスチャを選択するようにしてもよい。また月テクスチャに順番付けを行え置き、順番に月テクスチャを選択するようにしてもよい。
【0154】
そして軌道運行物(月)の明るさ制御情報(透明度情報のα値に基づき月オブジェクトを加算半透明で描画する(ステップS70)。
【0155】
4.ハードウェア構成
図14に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0156】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0157】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0158】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0159】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納される。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0160】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0161】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0162】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0163】
例えば、明細書又は図面中の記載において広義や同義な用語(テクセル値、テクセル値パターン、プリミティブ面等)として引用された用語(α値・輝度、グラディエーションパターン、ポリゴン等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0164】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0165】
またテクスチャのマッピング処理も、本実施形態で説明したものに限定されず、これらと均等な変換処理も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯端末等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0166】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】地球、太陽、月の位置関係を示す図。
【図3】本実施の形態の特徴について説明するための図である。
【図4】月の位置と見かけ上の大きさの決定手法について説明するための図。
【図5】月画像生成の一例について説明するための図である。
【図6】見かけ上の月の大きさの制御について説明するための図。
【図7】月の明るさの制御について説明するための図。
【図8】月の季節によって異なる移動軌跡を示した図
【図9】季節によって変化する月の運行モデルを模式的にあらわした図。
【図10】図10(A)(B)は、月の移動軌跡とゲーム時刻の関係を示す図。
【図11】図11(A)(B)は、ゲーム時刻と月オブジェクトの明るさの関係の他の例について説明するための図。
【図12】本実施の月テクスチャについて説明するための図。
【図13】本実施の形態の軌道運行物(月)の画像生成処理の流れを示すフローチャート図。
【図14】ハードウェア構成例である。
【符号の説明】
【0167】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、114 仮想カメラ制御部、116 軌道運行物オブジェクト設定部、120 描画部、122 隠面消去部、124 テクスチャマッピング部、126 α合成部、130 音生成部、160 操作部、170 記憶部、172 描画バッファ、174 Zバッファ、176 テクスチャ記憶部、180 情報記憶媒体、190 表示部、192 音出力部、194 携帯型情報記憶装置、196 通信部
【技術分野】
【0001】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
さてこのようなゲームシステムでは、プレーヤの仮想現実向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。
【0004】
ここにおいて、例えばゲーム空間内で月等の自然の景色を時刻に応じて変化させると、画像を通じて時間の流れを感じさせることができる。
【特許文献1】特開2000−176166号公報
【特許文献2】特開2005−319106号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし月の見え方は地球の自転や公転及び月の公転及び月を見ている位置の緯度や地軸の傾き等の要素に応じて変化するものであり、厳密なシミュレーションを行うと演算負荷が大きくなるという問題点があった。
【0006】
また月の見え方(例えば大きさ)等は、月の位置や時刻等の条件によって左右されるものであり、これをシミュレーションすることは困難であった。
【0007】
このように複雑な要因が絡みあって変化する月の位置や見え方をシミュレーションすると演算付加が増大し、限られたハードウエア資源でリアルタイムに画像生成を行うことが必要なゲーム装置等では処理が困難であるという問題点があった。
【0008】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、複雑な要因が絡みあって変化する月の位置や見え方を少ない処理付加で効果的に表現することが可能な画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0009】
(1)本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0010】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0011】
ここで軌道運行物とはゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行するものであり、例えば月、太陽、星(火星や金星等の惑星を含む)や衛星(人工衛星等を含む)である。
【0012】
またゲーム時刻とはゲームのなかで進行するゲーム時間によって決まる時刻であり、例えば現実世界の実時間と同じに設定されていてもよいし、実時間より早く進行するゲーム時間に応じた時刻やその逆でもよい。
【0013】
また軌道運行物の大きさは軌道運行物の位置に応じて決定される構成でもよいし、ゲーム時刻に応じて決定される構成でもよい。
【0014】
現実世界では月等の軌道運行物が天上にあるときよりも、地平線に近いところにあるときのほうが大ききくみえる。かかる見掛け上の軌道運行物の大きさの変化を正確にシミュレートしようとすると、演算負荷が増大する。
【0015】
本発明によれば、ゲーム時刻に応じて軌道運行物オブジェクトの位置と大きさが決定されて、それに従って軌道運行物の画像が生成される。
【0016】
したがって少ない演算負荷でゲーム時刻に応じて大きさの変化する軌道運行物の画像を生成することができる。
【0017】
(2)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、軌道運行物オブジェクトの位置を設定することを特徴とする。
【0018】
軌道運行物の運動モデルは、天空上の軌道運行物の移動を特定するための情報であり、例えば移動軌跡を特定するための情報でもよいし、ゲーム時刻をパラメータとして位置情報を求める関数でもよいし、ゲーム時刻と対応する位置情報が格納されたテーブルデータ(この場合データ間は補完するようにしてもよい)でもよい。
【0019】
前記運動モデルは、所定の軌道や移動軌跡(少なくとも1つの円または楕円軌道)上にゲーム時刻に対応する位置が一義的に決定されるような情報でもよい。
【0020】
なお軌道運行物の運動モデルは現実世界の月等の軌道運行物の運行をシミュレートするものでもよいし、ゲーム世界独自の軌道運行物の動きを設定してもよい。
【0021】
軌道運行物の運動モデルに基づいて軌道運行物の位置を設定し、軌道運行物の位置に基づいて軌道運行物の大きさを設定するようにしてもよい。
【0022】
また軌道運行物の運動モデルの中にゲーム時刻に対応した軌道運行物の大きさを設定するための情報を含ませておいてもよい。
【0023】
軌道運行物状態決定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物(月)の運動モデルを設定し、設定した軌道運行物(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の大きさを設定し、軌道運行物(月)の画像を生成する際に必要な軌道運行物(月)オブジェクトの位置情報と軌道運行物(月)オブジェクトの大きさ制御情報を含む軌道運行物画像生成用情報を演算し、
前記描画部は、
前記軌道運行物画像生成用情報に基づきオブジェクト空間に軌道運行物(月)オブジェクトを配置して、オブジェクト空間を仮想カメラから見た画像を描画するようにしてもよい。
【0024】
運動モデルはプログラムに命令コードの一部として組み込まれるの形で記憶されていてもよいし(例えば軌道運行物の軌道の演算式がプログラムコードに組み込まれているような場合)、プログラムが使用する関数として記憶されていてもよいし、プログラムから読み出し可能なデータとして記憶されていてもよい。
【0025】
(3)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定することを特徴とする。
【0026】
このようにすると地平線に近いときに大きく、天上付近に行くほど小さくなる月の表現を行うことができる。
【0027】
(4)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、
前記描画部は、
決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を描画することを特徴とする。
【0028】
なお月の明るさの制御は、月のα値を変化させ、月を加算半透明で描画させることにより実現してもよい。
【0029】
例えば基準値または設定値をα、あるゲーム時刻におけるα値をα’として、ゲーム時刻または軌道運行物(月)の位置に応じてα’=kαとなるkの値を求めるようにしてもよい。
【0030】
α値はオブジェクト単位に設定されていてもよいし、ポリゴンの頂点単位に設定されていてもよいし、画素単位に設定されていてもよい。
【0031】
(5)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定することを特徴とする。
【0032】
このようにすると地平線に近いときにうすく、天上付近に行くほど明るく輝く月の表現を行うことができる。
【0033】
(6)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、
前記軌道運行物オブジェクト設定部は、
ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定することを特徴とする。
【0034】
実際の月等の運動をみると、同じ場所(緯度、経度が同じ)であっても例えば季節によって移動軌跡が異なってくる。
【0035】
本発明によれば移動軌跡の異なる複数の運動モデルを用意して、仮想カメラの位置や日付や季節の設定に応じて運行モデルを選択するので、仮想カメラの位置や日付や季節の設定に応じて天空における移動軌跡が変化する軌道運行物(月等)の画像を生成することができる。
【0036】
(7)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定し、
前記描画部は、
前記テクスチャ制御情報に基づいて軌道運行物テクスチャを設定し、軌道運行物オブジェクトにマッピングする処理を行うことを特徴とする。
【0037】
軌道運行物オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、軌道運行物の見かけの形状を変化させるように軌道運行物オブジェクトに対してマッピングするテクスチャの色分布(テクセルパターン)を軌道運行物の見かけの形状を変化させるように動的に変化させるようにしてもよい。
【0038】
この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
【0039】
(8)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報の設定し、
前記描画部は、
設定された制御情報に基づいて、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理を行い見かけの形状が変化した軌道運行物オブジェクトを描画することを特徴とする。
【0040】
描画部行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。
【0041】
本発明によれば、頂点シェーダやピクセルシェーダに対して軌道運行物の見かけの形状を変化させるように制御情報の設定を行うことで、所定のタイミングで軌道運行物の見かけの形状を変化させることができる。
【0042】
(9)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うことを特徴とする。
【0043】
(10)また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うことを特徴とする。
【0044】
(11)また本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0045】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0046】
(12)また本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
とを含む画像生成システムに関係する。
【0047】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【発明を実施するための最良の形態】
【0048】
以下、本実施形態について説明する。
【0049】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0050】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図1の構成要素(各部)の一部を省略した構成としてもよい。
【0051】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0052】
記憶部170は、描画バッファ172やZバッファ174やテクスチャ記憶部176を含み、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどにより実現できる。
【0053】
テクスチャ記憶部176は、軌道運行物の見かけの形状の変化に対応した見かけの形状の異なる複数の軌道運行物テクスチャを記憶する。
【0054】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶(記録、格納)される。
【0055】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0056】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。
【0057】
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0058】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0059】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。また処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は、各種プロセッサ(CPU、DSP等)やASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0060】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、軌道運行物オブジェクト設定部116、描画部120、音生成部130を含む。なおこれらの一部を省略してもよい。
【0061】
オブジェクト空間設定部110は、キャラクタ、樹木、車、柱、壁、建物、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を設定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0062】
移動・動作処理部112は、オブジェクト(車、飛行機、又はキャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。即ち、操作部160によりプレーヤが入力した操作データ、プログラム(移動・動作アルゴリズム)、或いは各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。ここでフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0063】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点での画像を生成するための仮想カメラを制御する処理を行う。即ち、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
【0064】
例えば仮想カメラによりオブジェクトを後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた回転角度で回転させるようにしてもよい。この場合には、仮想カメラの位置(移動経路)や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0065】
軌道運行物オブジェクト設定部116は、ゲーム時刻に基づいて軌道運行物オブジェクトの位置と軌道運行物オブジェクトの大きさを含む軌道運行物の状態を設定する。
【0066】
軌道運行物オブジェクト設定部116は、ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、オブジェクトの位置を設定するようにしてもよい。
【0067】
軌道運行物オブジェクト設定部116は、ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定するようにしてもよい。
【0068】
軌道運行物オブジェクト設定部116は、ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、描画部120は、決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を生成するようにしてもよい。
【0069】
前記軌道運行物オブジェクト設定部116は、軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定するようにしてもよい。
【0070】
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、前記軌道運行物オブジェクト設定部116は、ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定するようにしてもよい。
【0071】
軌道運行物オブジェクト設定部116は、所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定するようにしてもよい。
【0072】
前記軌道運行物オブジェクト設定部116は、所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報の設定するようにしてもよい。
【0073】
前記軌道運行物オブジェクト設定部116は、仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うするようにしてもよい。
【0074】
前記軌道運行物オブジェクト設定部116は、仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うするようにしてもよい。
【0075】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0076】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0077】
描画部120は、軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画部として機能する。
【0078】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0079】
なお描画部120が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0080】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0081】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、主記憶部172に保存される。
【0082】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0083】
特に本実施形態では、月オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、月オブジェクトに対してマッピングされるテクスチャの色分布(テクセルパターン)を動的に変化させることができる。この場合において、色分布が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよいし、オブジェクト単位でテクスチャの色分布を変化させるようにしてもよい。
【0084】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0085】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。
【0086】
RQ=(1−α)×R1+α×R2 (1)
GQ=(1−α)×G1+α×G2 (2)
BQ=(1−α)×B1+α×B2 (3)
また合成処理が加算αブレンディングである場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0087】
RQ=R1+α×R2 (4)
GQ=G1+α×G2 (5)
BQ=B1+α×B2 (6)
また合成処理がα乗算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0088】
RQ=α×R1 (7)
GQ=α×G1 (8)
BQ=α×B1 (9)
また合成処理がα乗加算である場合を例にとれば、色合成部126は下式に従ったα合成処理を行う。
【0089】
RQ=α×R1+R2 (7)
GQ=α×G1+G2 (8)
BQ=α×B1+B2 (9)
ここで、R1、G1、B1は、描画バッファ172に既に描画されている画像(背景画像)の色(輝度)のR、G、B成分であり、R2、G2、B2は、描画バッファ172に描画するオブジェクト(プリミティブ)の色のR、G、B成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像の色のR、G、B成分である。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0090】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0091】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0092】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0093】
2.月の位置、大きさ、明るさの制御
地球上からみれば月は天空上を1日にほぼ1回転しているようにみえるが、これは地球の自転によるもである。しかし図2に示すように地球は太陽の回りを公転しており、月もまた地球の周りを公転している。そして地球の地軸は地球の公転面に対して傾いているため、天球上における実際の月の運動(月の移動軌跡)は観測位置(緯度)や日時によって変化する。
【0094】
図3は、本実施の形態の特徴について説明するための図である。
【0095】
210−1〜210−5は、本ゲームにおいて生成される月の画像の時間的な遷移をあらわしている。220は地平線である。
【0096】
本実施の形態のオブジェクト空間では月オブジェクトが配置されるが、その位置をゲーム時刻の進行に従って変化させ、時間の経過と共に天空上を東から西に移動する月の画像を生成する。例えば210−1に示すように18:00頃(ゲーム時刻)に東の空の地平線付近に出現し、天空上を東から西に移動して6:00頃(ゲーム時刻)であるに西の地平付近に沈んでいく。
【0097】
また本実施の形態では、ゲーム時刻の進行に従って、見かけ上の月の大きさも変化させる。見かけ上の月の大きさは、図2に示すように、地平線に近いときのほうが地平線から遠いとときに比べて大きくなるように変化させる。
【0098】
すなわち東又は西の地平付近で見かけ上の大きさは最も大きくなり(210−1、210−5参照)、地平線から最も離れた南中時に見かけ上の月の大きさは最も小さくなる(210−3参照)。
【0099】
図4は、本実施の形態の月の位置と見かけ上の大きさの決定手法の一例について説明するための図である。
【0100】
250はゲーム時刻の進行に従って天空を移動する軌道運行物(月)の運動モデルである。軌道運行物(月)の運動モデル250は、例えば所定の位置Oを中心とした半径をrとする円軌道として設定することができる。そして、予め軌道上の点とゲーム時刻の対応づけを行っておく。例えば軌道上の点P0を0:00時と設定して、24ゲーム時刻で軌道を1周(360度回転)して24:00には再びP0に戻ってくると設定しておいてもよい。すなわち1ゲーム時刻で15度回転する。
【0101】
ここで月は3:00時には軌道上のP1に来て、21:00時には軌道上のP2にくるとして、OとP0をむすぶベクトルP0ベクトル、OとP1をむすぶベクトルP1ベクトル、OとP2をむすぶベクトルP2ベクトルとする。例えばゲーム時刻として3:00が与えられると、3ゲーム時刻分回転することになりP0ベクトルとP1ベクトルのなす角θ1が45度となる。従って軌道250と基準点(例えば開始点)P0及び基準点に対応した基準時刻(例えば開始時刻0:00)が設定されていると、現在のゲーム時刻に対応した回転角θ1が決定され、θ1に対応した軌道250上の位置P1が求まる。
【0102】
このようにしてゲーム時刻に対応した月の位置を求めることができる。そして月の位置に対応したオブジェクト空間上の位置を求める。軌道の半径がオブジェクト空間の天球と同じに設定している場合には求めた位置の座標がそのまま月オブジェクトの配置座標として使用することができる。
【0103】
また軌道の半径がオブジェクト空間の天球と一致しない場合には、例えばP1ベクトルやP2又はその延長線とオブジェクト空間の天球が交わる位置を月オブジェクトの位置座標とすることができる。
【0104】
また軌道250上の基準点(例えば開始点)P0及び基準点に対応した基準時刻(例えば開始時刻0:00)が設定されていると、現在のゲーム時刻に対応した軌道上の位置が一義的に決定される。すなわち、0:00時には月はP0の位置になり、3:00時には月はP1の位置にあり、21:00には月はP2の位置に来ることが一義的に決定される。
【0105】
本実施の形態では月の位置と月の大きさに所定の関係を持たせている。例えば南中するP0において月の大きさが最も小さくなり、地平線にP3、P4で月の大きさが最も大きくなるように、見かけ上の月の大きさを制御する
図5は月画像生成の一例について説明するための図である。
【0106】
月の画像を生成する場合には例えば320に示すような月オブジェクト320と月テクスチャ(月の形状や模様の2次元画像)320を用意しておき、月オブジェクト320に月テクスチャをマッピングすることにより月画像を生成するようにしてもよい。ここにおいて月オブジェクトは複数のポリゴンを用いて球を模した多面体として構成してもよいし、四角形のオブジェクト(板ポリゴンやビルボード)として構成してもよい。四角形のオブジェクトは、1枚の四角形のポリゴンで形成してもよいし、複数の3角形のポリゴンを組み合わせて形成してもよい。
【0107】
図6は本実施の形態の見かけ上の月の大きさの制御について説明するための図である。
【0108】
本実施の形態では、軌道運行物(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の見かけの大きさを設定する。ここでゲーム時刻と軌道運行物(月)の見かけ上の大きさの関係は、ゲームの内容やどのような画像を生成するとより効果的であるか等に基づいて適宜設定することができる。
【0109】
その一つとして、軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の見掛け上の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定してもよい。
【0110】
例えば天球上の月の運行軌道とゲーム時刻が図3に示すように一義的に対応づけられているとすると、ゲーム時刻に応じて月の大きさを設定することで、月の位置に応じた月の見かけ上の大きさの変化を実現することができる。
【0111】
例えば軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の見掛け上の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定するとした場合、図3の210−1、210−2、210−3について210−1>210−2>210−3のように月の大きさを設定する。
【0112】
そして設定した大きさの画像が生成できるように、画像生成の際の星(月)オブジェクトの大きさ制御情報を演算する。本実施の形態では、ゲーム時刻に応じて月オブジェクトのスケールを情報(軌道運行物画像生成用情報の一例である)を変化させることにより月の大きさの異なる画像を生成する。
【0113】
図6の310−1、310−2、310−3、310−4、310−5は、図3の月の運行に対応したゲーム時刻18:00、21:00、24:00、3:00、6:00の月オブジェクトを示したものである。
【0114】
K1は、18:00の月画像を生成するための月オブジェクトのスケール値であり、K2は、21:00の月画像を生成するための月オブジェクトのスケール値であり、K3は、24:00の月画像を生成するための月オブジェクトのスケール値であり、K4は、3:00の月画像を生成するための月オブジェクトのスケール値であり、K5は、6:00の月画像を生成するための月オブジェクトのスケール値である。
【0115】
スケール値とは基準となる月オブジェクトに対する大きさの比率であり、例えば基準値がLとして、生成される大きさがL’とするとL’=KLとなる。
【0116】
本実施の形態では18:00や6:00頃(月が地平線の近くにあるとき)に月の見かけ上の大きさが最も大きくなり、24:00頃(月が最も南に来るとき)に月の見かけ上の大きさが最も小さくなる。従ってスケール値はK1>K2>K3、K5>K4>K3となる。
【0117】
図7は、本実施の形態の月の明るさの制御について説明するための図である。
【0118】
星(月)の運動モデルに基づいて、所与のゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の見かけの大きさを設定するようにしてもよい。ここでゲーム時刻と軌道運行物(月)の明るさの関係は、ゲームの内容やどのような画像を生成するとより効果的であるか等に基づいて適宜設定することができる。
【0119】
その一つとして、軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定してもよい。
【0120】
例えば軌道運行物(月)の運行軌道上の位置がオブジェクト空間の地平線に遠い場合には近い場合に比べて軌道運行物(月)の明るさが明るくなるようにオブジェクトの明るさ制御情報を設定するようにしてもよい。
【0121】
このような場合、図7の410−1、410−2、410−3、410−4、410−5について410−1<410−2<410−3、410−5<410−4<410−3となるように月の明るさを設定する。
【0122】
そして設定した大きさの画像が生成できるように、画像生成の際の星(月)オブジェクトの明るさ制御情報を演算する。本実施の形態では、ゲーム時刻に応じて月オブジェクトのα値(軌道運行物画像生成用情報の一例である)を変化させることにより月の明るさの異なる画像を生成する。
【0123】
なお月の明るさを変更するための制御は、月を描画する際のα値を変化させることで実現することができる。例えば加算半透明で月を描画する場合には、α値が1に近くなるほど明るくすることができる。
【0124】
α1を18:00の月画像を生成するためのα値、α2を21:00の月画像を生成するためのα値、α3を24:00の月画像を生成するためのα値、α4を3:00の月画像を生成するためのα値、α5を6:00の月画像を生成するためのα値とすると、月が図7のような移動軌跡をとる場合には、α1<α2<α3、α5<α4<α3となるようにα値を設定して加算半透明で描画することにより、地平線に近いところにいる月を薄く、天上に上がるほどはっきりとした月(高く上るほど煌々と輝く月)の表現を行うことができる。
【0125】
本実施の形態で生成される明るさ制御情報は例えば月オブジェクトに与えられるα値そのものでもよいし、月オブジェクトに本来与えれられているα値(オブジェクト単位で与えられている場合でもよいし、頂点単位で与えられている場合でもよいし、画素単位に与えられている場合でもよい。)に対する変更情報(例えばαにかける係数)等でもよい。
【0126】
ここで天球上の月の運行軌道とゲーム時刻が図7に示すように一義的に対応づけられているとすると、ゲーム時刻に応じて月の明るさ(月オブジェクトを加算半透明で描画する際のα値)を設定することで、月の位置に応じた明るさの変化を実現することができる。
【0127】
図8は月の季節によって異なる移動軌跡を示した図である
実際の月の運動をみると、同じ場所(緯度、経度が同じ)であっても例えば季節によって510−1、510−2、510−3移動軌跡が異なってくる。
【0128】
図9は季節によって変化する月の運行モデルを模式的にあらわしたものである。600は天球、650は仮想的な地面(画像生成を行う際には仮想カメラから所定の範囲内に地形オブジェクトを配置するようにしてもよい。)
、Oは仮想カメラの位置であるとする。
【0129】
610−1は図8の移動軌跡510−1の運行モデルであり、610−2は図8の移動軌跡510−2の運行モデルであり、610−3は図8の移動軌跡510−3の運行モデルである。
【0130】
運行モデルはゲーム時刻を変数としてゲーム時刻に応じて、少なくとも1つの円または楕円軌道上の位置が一義的に決定されるような関数等で設定してもよい。
【0131】
このように運行軌道の異なる複数の運行モデル610−1、610−2、610−3を用意して、ゲーム日時にや季節の設定に応じて運行モデルを選択して、選択した運行モデルに従って軌道運行物画像生成用情報を演算するようにしてもよい。
【0132】
例えばゲーム上の(年月日)や月や季節に対応付けて運行軌道の異なる複数の運行モデルを用意しておいてもよい。
【0133】
図10(A)(B)は、月の移動軌跡とゲーム時刻の関係を示す図である。
【0134】
また軌道がほぼ同じであっても図10(A)(B)に示すように、移動上の各位置を通過する時刻が異なってくる場合もある。このような場合図10(A)(B)で同じ軌道関数を使い、基準時刻(例えば24:00)の位置を変更させて、月の位置を設定するようにしてもよい。
【0135】
また図10(A)(B)で、それぞれゲーム時刻から位置を求める関数を設定してもよい。
【0136】
図11(A)(B)は、ゲーム時刻と月オブジェクトの明るさの関係の他の例について説明するための図である。
【0137】
図11(A)では21:00時ごろ東の空に現れた月が3:00ごろ南中して9:00頃に西の空に沈むように移動する。このような場合、9:00頃に月は西の空に存在するが、既に日がのぼって周りの空は明るいので薄くしかみえない。従って710−5の月を描画する際のα値を低くして加算半透明で(月の透明度を高くして)薄い月を表現するようにしてもよい。
【0138】
図11(B)では12:00時ごろ東の空に現れた月が18:00ごろ南中して24:00頃に西の空に沈むように移動する。このような場合、12:00頃から15:00ごろに月は東〜南の空に存在するが、日中で周りの空は明るいのでしかみえない。従って720−1、720−2の月を描画する際のα値を0または0に近い値にして加算半透明で(月の透明度を高くして)月を見えないようにしてもよい。
【0139】
このようにゲーム時刻が日中であることを示している場合は、月を透明にして見えないようにしてもよい。
【0140】
図12は、本実施の月テクスチャについて説明するための図である。太陽と地球と月の位置関係によって、つきは満ち欠けして見える。本実施の形態では、月の満ち欠けを表現するために、810−0から810−7に示すような満月、半月、上限の月、下限の月、新月等を表現するための月テクスチャを用意する。そして、オブジェクト空間における太陽と地球と月の位置関係によって月テクスチャを選択して月オブジェクトにマッピングするようにしてもよい。
【0141】
また予めゲーム日時と月テクスチャを関連付けておいて、与えられたゲーム日時に関連付けられた月テクスチャを選択すちようにしてもよい。
【0142】
またゲーム内の日付の進行に応じて月テクスチャを月の満ち欠けの順に順番に用いるようにしてもよい。
【0143】
3.本実施形態の処理
図13は、本実施の形態の軌道運行物(月)の画像生成処理の流れを示すフローチャート図である。
【0144】
ゲーム日時及び仮想カメラの位置又は緯度の情報に基づき、軌道運行物(月)運動モデルを選択する(ステップS10)。たとえば、ゲーム日時や仮想カメラの緯度に応じて異なる移動軌跡を描く軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0145】
また例えば同緯度の地点から季節に応じて変化する軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0146】
また例えば同季節で緯度に応じて変化する軌道運行物(月)の運動モデルを複数用意しておいて、そのなかから選択するようにしてもよい。
【0147】
また例えばゲーム空間に対して時刻に応じて変化する軌道運行物(月)の運動モデルを1つ用意しておいてそれを用いるようにしてもよいが、この場合は運動モデルは決まっているので、選択する処理は必要ない。
【0148】
次に選択した運動モデルに基づいて、与えられたゲーム時刻に対応した軌道運行物(月)の位置と、軌道運行物(月)の大きさと、軌道運行物(月)の明るさを設定して、軌道運行物(月)の位置情報と、軌道運行物(月)の大きさ制御情報(スケール値)と、軌道運行物(月)の明るさ制御情報(透明度情報のα値)を演算する(ステップS20)。
【0149】
ここで月の大きさは、地平面との位置関係におうじて定めても良い。例えば図1で説明したように地平線に近い場合ほど大きく見えるようにしても良い。なお地平面と月の位置関係が一義的に設定されている場合には、ゲーム時刻から直接月の大きさを設定するようにしてもよい。また地平線と月の位置関係がゲーム時刻によって変化する場合には、ゲーム時刻に応じて地平線と月の位置関係を求め、その位置関係に応じて月の大きさを設定するようにしてもよい。
【0150】
また月の位置情報とは、例えばオブジェクト空間に月を配置するときに用いる位置座標等であり、例えばワールド座標系における月の代表点の(X、Y、Z9値でもよい。また月の大きさ情報とは月を拡大縮小する際のスケール値でもよい。また軌道運行物(月)の明るさ制御情報(透明度情報のα値)とは、月を加算半透明で描画する際のα値でもよい。
【0151】
次に軌道運行物(月)の大きさ制御情報(スケール値)に基づき軌道運行物(月)オブジェクトのサイズを変更する(拡大または縮小する)(ステップS30)
次に軌道運行物(月)オブジェクトの位置情報に基づき拡大または縮小した軌道運行物(月)オブジェクトをオブジェクト空間に配置する(ステップS40)。
【0152】
次に透視変換を行う(ステップS50)。
【0153】
次に月テクスチャを選択して透視変換後の月オブジェクトにマッピングする
(ステップS60)。例えば月テクスチャをゲーム日時に関連づけて記憶させておき、ゲーム日時に応じて月テクスチャを選択するようにしてもよい。また月テクスチャに順番付けを行え置き、順番に月テクスチャを選択するようにしてもよい。
【0154】
そして軌道運行物(月)の明るさ制御情報(透明度情報のα値に基づき月オブジェクトを加算半透明で描画する(ステップS70)。
【0155】
4.ハードウェア構成
図14に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0156】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0157】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0158】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0159】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納される。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0160】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0161】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0162】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0163】
例えば、明細書又は図面中の記載において広義や同義な用語(テクセル値、テクセル値パターン、プリミティブ面等)として引用された用語(α値・輝度、グラディエーションパターン、ポリゴン等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0164】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0165】
またテクスチャのマッピング処理も、本実施形態で説明したものに限定されず、これらと均等な変換処理も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯端末等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0166】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】地球、太陽、月の位置関係を示す図。
【図3】本実施の形態の特徴について説明するための図である。
【図4】月の位置と見かけ上の大きさの決定手法について説明するための図。
【図5】月画像生成の一例について説明するための図である。
【図6】見かけ上の月の大きさの制御について説明するための図。
【図7】月の明るさの制御について説明するための図。
【図8】月の季節によって異なる移動軌跡を示した図
【図9】季節によって変化する月の運行モデルを模式的にあらわした図。
【図10】図10(A)(B)は、月の移動軌跡とゲーム時刻の関係を示す図。
【図11】図11(A)(B)は、ゲーム時刻と月オブジェクトの明るさの関係の他の例について説明するための図。
【図12】本実施の月テクスチャについて説明するための図。
【図13】本実施の形態の軌道運行物(月)の画像生成処理の流れを示すフローチャート図。
【図14】ハードウェア構成例である。
【符号の説明】
【0167】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、114 仮想カメラ制御部、116 軌道運行物オブジェクト設定部、120 描画部、122 隠面消去部、124 テクスチャマッピング部、126 α合成部、130 音生成部、160 操作部、170 記憶部、172 描画バッファ、174 Zバッファ、176 テクスチャ記憶部、180 情報記憶媒体、190 表示部、192 音出力部、194 携帯型情報記憶装置、196 通信部
【特許請求の範囲】
【請求項1】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、軌道運行物オブジェクトの位置を設定することを特徴とするプログラム。
【請求項3】
請求項1乃至2のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、
前記描画部は、
決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を描画することを特徴とするプログラム。
【請求項5】
請求項4において、
前記軌道運行物オブジェクト設定部は、
軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定することを特徴とするプログラム。
【請求項6】
請求項2、または請求項2に従属する請求項3乃至5のいずれかにおいて、
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、
前記軌道運行物オブジェクト設定部は、
ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定することを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定し、
前記描画部は、
前記テクスチャ制御情報に基づいて軌道運行物テクスチャを設定し、軌道運行物オブジェクトにマッピングする処理を行うことを特徴とするプログラム。
【請求項8】
請求項1乃至6のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報を設定し、
前記描画部は、
設定された制御情報に基づいて、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理を行い見かけの形状が変化した軌道運行物オブジェクトを描画することを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うことを特徴とするプログラム。
【請求項11】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項12】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項13】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至12のいずれかのプログラムを記憶することを特徴とする情報記憶媒体。
【請求項14】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【請求項15】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【請求項16】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【請求項1】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻の進行に従って天空を移動する軌道運行物の運動モデルに基づいて、軌道運行物オブジェクトの位置を設定することを特徴とするプログラム。
【請求項3】
請求項1乃至2のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻に基づき求めた軌道運行物の位置が、オブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の大きさが小さくなるように軌道運行物オブジェクトの大きさを設定することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
ゲーム時刻または軌道運行物の位置に基づき、軌道運行物の明るさ又は透明度を設定し、
前記描画部は、
決定された軌道運行物オブジェクトの明るさ又は透明度に基づき、オブジェクト空間に配置された軌道運行物オブジェクトの画像を描画することを特徴とするプログラム。
【請求項5】
請求項4において、
前記軌道運行物オブジェクト設定部は、
軌道運行物の位置がオブジェクト空間の地平面から遠い場合には近い場合に比べて軌道運行物の明るさが明るくなるように、または透明度が低くなるように軌道運行物オブジェクトの明るさまたは透明度を設定することを特徴とするプログラム。
【請求項6】
請求項2、または請求項2に従属する請求項3乃至5のいずれかにおいて、
前記軌道運行物の運動モデルとして、天空上の移動軌跡の異なる複数の運動モデルを用意しておき、
前記軌道運行物オブジェクト設定部は、
ゲーム上想定されている日付、仮想カメラの位置または緯度の少なくともひとつにもとづいて運動モデルを選択し、選択した運動モデルに従って、前記軌道運行物状態を設定することを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるようにテクスチャ制御情報を設定し、
前記描画部は、
前記テクスチャ制御情報に基づいて軌道運行物テクスチャを設定し、軌道運行物オブジェクトにマッピングする処理を行うことを特徴とするプログラム。
【請求項8】
請求項1乃至6のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
所定のタイミングで軌道運行物の見かけの形状を変化させるように、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理の制御情報を設定し、
前記描画部は、
設定された制御情報に基づいて、軌道運行物オブジェクトの頂点処理又は軌道運行物オブジェクト画像のピクセル処理を行い見かけの形状が変化した軌道運行物オブジェクトを描画することを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの大きさを変化させる処理を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記軌道運行物オブジェクト設定部は、
仮想カメラと軌道運行物オブジェクトの距離に基づき、軌道運行物オブジェクトの明るさを変化させる処理を行うことを特徴とするプログラム。
【請求項11】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項12】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
してコンピュータを機能させることを特徴とするプログラム。
【請求項13】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至12のいずれかのプログラムを記憶することを特徴とする情報記憶媒体。
【請求項14】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの位置と大きさをゲーム時刻に基づいて変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【請求項15】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの大きさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【請求項16】
オブジェクト空間において仮想カメラから見える画像を生成する画像生成システムであって、
ゲーム空間に設定された所与の空間又は天球に設定された所与の軌道を運行する軌道運行物オブジェクトの明るさを仮想カメラと軌道運行物オブジェクトの距離に基づき変化させるための処理を行う軌道運行物オブジェクト設定部と、
軌道運行物オブジェクトが配置されたオブジェクト空間を仮想カメラから見た画像を描画する描画部と、
含むことを特徴とする画像生成システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2007−164729(P2007−164729A)
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2005−363976(P2005−363976)
【出願日】平成17年12月16日(2005.12.16)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願日】平成17年12月16日(2005.12.16)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]