説明

情報記憶媒体及びゲーム装置

【課題】 仮想カメラの位置や視線方向の変化に対して、矛盾のない雲の表現を実現すること。
【解決手段】 初期設定部616がゲーム開始時に初期データ950を設定し、小雲描画部632が仮想カメラ100のピッチ角Xに基づいて、雲パーツA(122)、雲パーツB(124)、気流テクスチャ104を合成して小雲テクスチャ102を生成する。中雲生成部612及び中雲描画部634は、初期データ950及び小雲テクスチャ102に基づいて、中雲テクスチャを生成する。そして、雲海生成部618及び雲海描画部640は初期データ950及び中雲テクスチャに基づいて、雲設定領域R内に中雲ビルボードを配置して雲海を含む1フレーム分の画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オブジェクト空間を仮想カメラから見た画像を生成し、当該生成画像を表示させることによって所与のゲームを実行するためのゲーム情報、情報記憶媒体及びゲーム装置に関する。
【背景技術】
【0002】
従来、テレビゲーム装置等の画像において、雲を表現する際には、処理を軽減するために、一枚の平面状のポリゴンに雲のテクスチャをマッピングした雲オブジェクトをオブジェクト空間に複数水平に設定して、雲を表現していた。しかしながら、例えば、飛行機を操縦するゲームなどにおいて、操縦者の視点から見た画像を生成する場合には、仮想カメラ(視点)が雲と水平となることもあり、雲に厚味がないことが分かってしまうといった問題があった。そのため、雲オブジェクトを常に仮想カメラの視線方向に垂直に対向させるいわゆるビルボード処理を行なっていた。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7−254072号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来においては、雲のテクスチャをマッピングさせた1枚のポリゴンを、常に、仮想カメラに対する上下左右位置を固定し、かつ、仮想カメラの視線方向に垂直に配置する方法が採られていた。そのため、仮想カメラの位置や視線方向等が変化しても雲は全く変化しないため、違和感が生じるといった問題があった。またさらに、例えば視線方向の仰角あるいは俯角が大きくなると、±90°の角度を境にして、雲が反転して表現されてしまうといった問題があった。そのため、仮想カメラの位置や視線方向等の変化に対しても、違和感のない雲の表現が望まれていた。特にゲームにおいては、各フレームに係る処理を所与の時間内に行なわなければならないため、仮想カメラの位置や視線方向の変化に対して違和感のない雲を表現する際の、処理負担の増大を抑えなければならないといった問題もあった。
【0005】
本発明の課題は、仮想カメラの位置や視線方向の変化に対して、矛盾のない雲の表現を実現することである。
【課題を解決するための手段】
【0006】
以下、上記課題を解決するための手段を説明するが、その前に、本明細書を通じて使用する重要な用語である「雲素」および「雲状オブジェクト」について、その解釈を説明する。
【0007】
本明細書開示の技術は「雲」を如何に表現するかを主眼においた技術である。しかし、現実社会においては、「雲」の性質上、1つの「雲」は通常1つの「雲」であって、「小さい雲」が寄り集まって1つの「雲」を構成するとは考えないのが一般的である。コンピュータグラフィックスの分野においては、「雲」を粒子系(いわゆるパーティクル)により表現する手法が知られているが、この手法によれば、「雲」は「粒子(パーティクル)」の集合であって、「小さい雲」の集合ではない。しかし、本技術は粒子(パーティクル)1つ1つを制御するものではないため、「雲」を構成する単位が「粒子(パーティクル)」とは言い得ない。そこで、「雲」を構成する要素であり、単位であることを表すため「雲素」という言葉を用いている。
【0008】
上記趣旨より、本明細書を通じて雲素とは、雲状オブジェクトを構成する要素を特定するための言葉である。したがって、雲素の意には雲状オブジェクトも含まれる。即ち、雲状オブジェクト(例えば、小さい雲や、一側面のみを表した雲状オブジェクト)の集合体や、複数の雲状オブジェクトの択一的選択物等が1つの雲状オブジェクト(例えば、大きい雲や、一側面の側から見た雲状オブジェクト)であってもよいからである。また、雲素の意には、複数の粒子(パーティクル)の集合体も含まれる。即ち、雲状オブジェクトの構成要素には、複数の粒子を1つの単位とする場合も含まれるからである。
【0009】
また、「雲状オブジェクト」とは、次のことを意味する。即ち、本明細書開示の技術は「雲」を主眼においてはいるが、「雲」のみに本技術が適用可能であるのではないことを意味する。「雲状オブジェクト」とは、「煙」や「霧」、「もや」といった、そのあり方を「雲」と共通にするオブジェクトを含む意味である。
【0010】
第1の発明は、
プロセッサによる演算・制御により、第1の仮想カメラ(例えば、図2に示す仮想カメラ100)から見た第1のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第1の装置に対して、
前記第1の仮想カメラの所与の角度パラメータ(例えば、図2に示すピッチ角X)の値に応じて予め用意された複数種類の第1の雲素(例えば、図3に示す雲パーツA(122),雲パーツB(124))を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することにより、前記第1のオブジェクト空間に前記第1の仮想カメラに向けて配置される板状体の第1の雲状オブジェクト(例えば、実施の形態における小雲ビルボード)に反映させるテクスチャ情報(例えば、図4に示す小雲テクスチャ102)を生成する第1の生成手段(例えば、図31に示す小雲描画部632)、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0011】
ここで、第1の装置は、コンピュータ装置であってもよいし、携帯用/家庭用/業務用のゲーム装置であってもよい。所与の角度パラメータとは、第1の仮想カメラを第1のオブジェクト空間に設定する上で必要となる、第1の仮想カメラに係る角度パラメータのことであり、例えば、第1の仮想カメラのロール角やピッチ角、ヨー角といった角度のことである。また、所与の割合での合成処理には、例えば、第1の雲素が2つであって、1:0や0:1の割合で合成処理する場合、即ち、第1の雲素を切り換える場合も含む。
【0012】
この第1の発明によれば、例えば、第1の雲状オブジェクトの一側面(例えば、正面)と他側面(例えば、裏面)を表す2つの第1の雲素を用意し、第1の仮想カメラの視線方向に応じて、その第1の雲素を切り換えること等が可能である。即ち、第1の雲状オブジェクトは第1の仮想カメラに向けて配置されるため、例えば、第1の雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【0013】
また更に、第1の仮想カメラの「角度パラメータの現在値に応じ」て、第1の雲状オブジェクトに反映されるテクスチャ情報が生成されるため、第1のオブジェクト空間に第1の雲状オブジェクトを配置する際、第1の雲状オブジェクトの上下左右方向を考慮する必要がない。即ち、例えば、第1の仮想カメラのロール角が変化する場合には、第1の雲状オブジェクトを、当該ロール角に応じて回転させる必要が生じるが、そのロール角に応じてテクスチャ情報が生成されるため、第1の雲状オブジェクトは、単に、第1のオブジェクト空間に配置するだけ(より正確には、第1のオブジェクト空間には、第1の雲状オブジェクトを配置する位置を決定するだけ)で済む。
【0014】
第2の発明は、第1の発明のゲーム情報であって、
前記第1の雲素は少なくとも透明度情報(例えば、実施の形態におけるα値)を含む色情報を有するテクスチャ情報であり、
前記第1の生成手段に対して、前記複数種類の第1の雲素の色情報を、前記所与の割合で合算することにより前記複数種類の第1の雲素を合成処理する、ように機能させるための情報(例えば、実施の形態における式(2)、(3))を含むことを特徴としている。
【0015】
この第2の発明によれば、第1の雲素の合成処理は、色情報の合算で済む。また、色情報が透明度情報だけの場合には、色情報の合算演算をさらに容易に済ませることができる。即ち、例えば、第1の雲状オブジェクトの色を「白色」として予め設定しておけば、透明度情報の演算のみで、簡単に、描画される第1の雲状オブジェクトの色を決定することができる。
【0016】
第3の発明は、第2の発明のゲーム情報であって、
前記第1の装置に対して、所与のアニメーション(例えば、図7に示す気流テクスチャ104)を前記第1の雲素の色情報に反映させるアニメーション反映手段、を機能させるための情報を含むことを特徴とする。
【0017】
この第3の発明によれば、第1の雲素の色情報が時間経過に従って変化するため、気流の様子を表現することができる。
【0018】
この場合、さらに第4の発明のように、第3の発明のゲーム情報に、
前記アニメーション反映手段に対して、前記第1の雲素に反映させる前記所与のアニメーションの向き、縮尺、及び部分の内少なくとも1つを変更する、ように機能させるための情報を含ませることとしてもよい。
【0019】
この第4の発明によれば、第1の雲素は複数種類あるため、その種類によって、アニメーションを反映させる向きや縮尺、部分(例えば、アニメーションを第1の雲素にマッピングする場合には、第1の雲素に対するマッピングの向きなど)を変更することにより、1つのアニメーションであっても様々な気流を表現することが可能となる。
【0020】
また、第5の発明のように、第3または第4の発明のゲーム情報であって、
前記所与のアニメーションは、少なくとも透明度情報を含む色情報の時間的変化を表すアニメーションであり、
前記アニメーション反映手段に対して、前記所与のアニメーションに基づいて前記第1の雲素の色情報を決定する、ように機能させるための情報を含むこととしてもよい。
【0021】
この第5の発明によれば、所与のアニメーションを、例えば、周期的に色情報が変化したり、透明度情報のみが変化するといったものとすることができる。例えば、第1の雲素の色を「白色」と予め決定されている場合には、第1の雲素が描画される際の色を、「透明度情報」のみによって決定することができるため、第1の雲素の色情報を決定する処理を簡便化することが可能である。
【0022】
第6の発明は、第1から第5の発明のいずれかのゲーム情報であって、
前記第1の生成手段に対して、
前記所与の角度パラメータを前記第1の仮想カメラのピッチ角及び/又はヨー角の角度パラメータとする手段と、
前記第1の仮想カメラの、ピッチ角及び/又はヨー角の角度パラメータの値に応じて予め用意された複数種類の第1の雲素を、対応する前記第1の仮想カメラの角度パラメータの現在値に応じた所与の割合で合成処理する手段と、
を機能させるための情報を含むことを特徴としている。
【0023】
この第6の発明によれば、仮想カメラに向けて配置される板状体の第1の雲状オブジェクトの欠点を補うことができる。即ち、例えば、第1の雲状オブジェクトの右側面と左側面の、2つの第1の雲素を用意しておけば、第1の仮想カメラのヨー角に応じて、第1の雲状オブジェクトの右側面と左側面を矛盾無く表現することができる。また同様に、例えば、第1の雲状オブジェクトの上面と下面の、2つの第1の雲素を用意しておけば、第1の仮想カメラのピッチ角に応じて、第1の雲状オブジェクトの上面と下面を矛盾無く表現することができる。
【0024】
第7の発明は、第1から第6の発明のいずれかのゲーム情報であって、
前記第1の生成手段に対して、前記ピッチ角に応じて予め用意された第1の雲素がある場合には、その第1の雲素を前記第1の仮想カメラのロール角或いはヨー角に応じて回転させるとともに、前記ヨー角に応じて予め用意された第1の雲素がある場合には、その第1の雲素を前記第1の仮想カメラのロール角或いはピッチ角に応じて回転させて前記合成処理を行う、ように機能させるための情報を含むことを特徴としている。
【0025】
この第7の発明によれば、第1の仮想カメラに係る角度パラメータの内、一の角度パラメータに応じて用意された第1の雲素であったとしても、他の角度パラメータに応じて回転させて、合成処理される。例えば、ヨー角に応じて、第1の雲状オブジェクトの右側面と左側面の2つの第1の雲素が用意されていた場合、勿論、ヨー角に応じてその2つの第1の雲素が合成処理されるが、ロール角に応じて回転された上で、合成処理される。即ち、第1の発明の効果として上述した通り、第1の雲状オブジェクトは、単に、第1のオブジェクト空間に配置されるのみであるため、第1の仮想カメラがロールした場合にも矛盾のないテクスチャ情報を生成する必要がある。このため、ヨー角やピッチ角に応じて用意された第1の雲素に対して、ロール角に応じて回転させることによって、第1の仮想カメラがロールした場合にも、第1の生成手段は、矛盾のないテクスチャ情報を生成することができる。
【0026】
第8の発明は、第1から第7の発明のいずれかのゲーム情報であって、
前記第1の生成手段に対して、前記第1の仮想カメラのピッチ角が水平方向用と垂直方向用の少なくとも2種類の予め用意された第1の雲素を、前記第1の仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記第1の仮想カメラのピッチ角に応じて予め用意された複数種類の第1の雲素を合成処理する、ように機能させるための情報を含むことを特徴としている。
【0027】
この第8の発明によれば、一の第1の雲状オブジェクトに対する第1の仮想カメラの視線方向が変化した場合、即ち、第1の仮想カメラのピッチ角が変化した場合であっても、その形状等に矛盾のない第1の雲状オブジェクトを表現することが可能となる。
【0028】
そしてこの場合、第9の発明のように、第8の発明のゲーム情報であって、
前記第1の生成手段に対して、前記第1の仮想カメラのロール角に応じて前記水平方向用および前記垂直方向用の第1の雲素を回転させて前記合成処理を行う、ように機能させるための情報を含むように構成してもよい。
【0029】
この第9の発明によれば、第1の仮想カメラがロールした場合においても、第1の雲状オブジェクト自体を回転させることなく、矛盾のない第1の雲状オブジェクトを表現することができる。
【0030】
さらにこの場合、第10の発明のように、第8または第9の発明のゲーム情報であって、
前記垂直方向用の第1の雲素には、前記第1の仮想カメラのピッチ角が仰角および俯角の場合に対応する、更に2種類の第1の雲素があり、
前記第1の生成手段に対して、前記垂直方向用の第1の雲素に含まれる前記2種類の第1の雲素を、前記第1の仮想カメラのピッチ角に応じて切り換えることにより、前記垂直方向用の第1の雲素とする、ように機能させるための情報を含むように構成してもよい。
【0031】
この第10の発明によれば、垂直方向用の第1の雲素には、ピッチ角が仰角の場合と俯角の場合の第1の雲素があり、ピッチ角によって切り換えられるため、一の第1の雲状オブジェクトの上面と下面とを、その形状等に矛盾なく、容易に表現することができる。
【0032】
第11の発明は、第8から第10の発明のいずれかのゲーム情報であって、
前記水平方向用の第1の雲素には、前記第1の仮想カメラのヨー角の角度範囲を等分した各角度範囲に対応する、更に複数種類の第1の雲素があり、
前記第1の生成手段に対して、前記水平方向用の第1の雲素に含まれる前記複数種類の第1の雲素を、前記第1の仮想カメラのヨー角に応じて切り換えることにより、前記水平方向用の第1の雲素とする、ように機能させるための情報を含むことを特徴としている。
【0033】
この第11の発明によれば、一の第1の雲状オブジェクトに対する第1の仮想カメラの視線方向が変化した場合、即ち、第1の仮想カメラのヨー角が変化した場合であっても、その形状等に矛盾のない第1の雲状オブジェクトを表現することが可能となる。
【0034】
第12の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ(例えば、図2に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記オブジェクト空間に配置される雲状オブジェクト(例えば、図2に示す小雲テクスチャ102)を複数種類の雲素(例えば、図3に示す雲パーツA(122)、雲パーツB(124))から生成するとともに、前記仮想カメラの位置または視線方向が変化する場合に、前記複数種類の雲素を所与の処理により切り換えることにより前記雲状オブジェクトを生成する手段(例えば、図31に示す小雲描画部632)、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0035】
この第12の発明によれば、例えば、雲状オブジェクトの一側面(例えば、正面)と他側面(例えば、裏面)を表す2つの雲素を用意し、仮想カメラの視線方向に応じて、その雲素を切り換えること等が可能である。即ち、仮想カメラの視線方向が変化した場合であっても雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【0036】
第13の発明は、
プロセッサによる演算・制御により、第2の仮想カメラ(例えば、図14に示す仮想カメラ100)から見た第2のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第2の装置に対して、
雲モデル空間(例えば、図14に示す中雲座標系)に第2の雲素(例えば、図14に示す小雲ビルボード24−1〜32)を複数配置する第2の配置手段(例えば、図31に示す中雲生成部612)と、
前記雲モデル空間を透視変換することにより、前記第2のオブジェクト空間に前記第2の仮想カメラに向けて配置される板状体の第2の雲状オブジェクトに反映させるテクスチャ情報(例えば、実施の形態における中雲テクスチャ)を生成する第2の生成手段(例えば、図31に示す中雲描画部634)と、
を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0037】
この第13の発明によれば、第2のオブジェクト空間に配置される第2の雲状オブジェクトは板状体ではあるが、様々な態様の第2の雲状オブジェクトを表現することができる。なぜならば、第2の雲状オブジェクトに反映される、第2の生成手段によって生成されるテクスチャ情報は、第2の雲素が複数配置された雲モデル空間を透視変換したものであるため、透視変換の仕方によって、種々のテクスチャ情報を生成することが可能だからである。また本発明により、第2のオブジェクト空間に係る処理と、テクスチャ情報を生成する処理とを区別して処理することが可能となり、第2のオブジェクト空間に係る処理負荷を軽減させることができる。なおここで、第2の装置は、コンピュータ装置であってもよいし、携帯用/家庭用/業務用のゲーム装置であってもよい。また第2の雲素を板状体により構成してもよい。
【0038】
第14の発明は、第13の発明のゲーム情報であって、
前記第2の生成手段に対して、前記第2の仮想カメラと、前記雲モデル空間を透視変換するための雲モデル用仮想カメラ(例えば、図14に示す雲視点220)とを連動させ、前記雲モデル用仮想カメラに基づいて前記雲モデル空間を透視変換する、ように機能させるための情報を含むことを特徴としている。
【0039】
この第14の発明によれば、雲モデル用仮想カメラと、第2の仮想カメラとが連動するため、第2のオブジェクト空間に配置される、板状体の第2の雲状オブジェクトであっても、形状等において矛盾なく表現することが可能である。
【0040】
第15の発明は、第13または第14の発明のゲーム情報であって、
前記第2の配置手段に対して、前記複数の第2の雲素の配置を、前記雲モデル空間の所与の範囲に偏った分布とする、ように機能させるための情報(例えば、実施の形態における式(4))を含むことを特徴としている。
【0041】
この第15の発明によれば、例えば、第2の雲素の色が「薄い白色」である場合、第2の雲素の配置位置の偏りによって、その偏った所与の範囲においては「濃い白色」として表現することができる。即ち、雲モデル空間における配置位置に偏りを持たせることによって、第2の雲状オブジェクトの色の濃淡に変化をつけることができる。
【0042】
第16の発明は、第13から第15の発明のいずれかのゲーム情報であって、
前記第2の配置手段に対して、前記雲モデル空間に配置する前記各第2の雲素の大きさを変更する、ように機能させるための情報(例えば、実施の形態における式(5))を含むことを特徴とする。
【0043】
この第16の発明によれば、雲モデル空間における第2の雲素の配置位置が同じであっても、第2の雲素の大きさを異ならしめることができるため、生成するテクスチャ情報を異ならしめる、即ち、種々の形態の第2の雲状オブジェクトを容易に表現することができる。
【0044】
第17の発明は、第13から第16のいずれかのゲーム情報であって、
前記第2の装置に対して、前記第2のオブジェクト空間の光源と、前記第2の雲状オブジェクトとに基づいて、前記第2の生成手段により生成されたテクスチャ情報の色情報を決定する色情報決定手段(例えば、図31に示す色決定部638)、を機能させるための情報を含むことを特徴とする。
【0045】
この第17の発明によれば、第2のオブジェクト空間における、光源に係るシェーディング処理をテクスチャ情報に施すことにより、最終的に、第2の雲状オブジェクトの色情報を矛盾なく表現させることができる。即ち、第2のオブジェクト空間においては、光源と、第2の雲状オブジェクトとは存在するが、第2の雲状オブジェクトに反映されるテクスチャ情報は別途生成される。このため、第2のオブジェクト空間における光源と、第2の雲状オブジェクトの配置状況等に応じて、テクスチャ情報の色情報を決定することにより、最終的に、色において矛盾のない、リアリスティックな第2の雲状オブジェクトを表現することが可能である。
【0046】
第18の発明は、第17の発明のゲーム情報であって、
前記色情報決定手段に対して、前記第2の雲状オブジェクトにおける少なくとも2つの特定点(例えば、図16に示す特定点22−1〜9)の色情報を、前記第2のオブジェクト空間における光源に基づいて決定し、この特定点の色情報に基づいて前記テクスチャ情報の色情報を決定する、ように機能させるための情報を含むことを特徴とする。
【0047】
例えば、「雲」を真横から見た場合、通常、太陽光線の当たる上側は明るく、下側は暗い。しかし、「雲」が1つである場合ならまだしも、複数の「雲」が存在する場合、単に、上側を明るく、下側を暗くするといった、一様な表現手法では、リアルな雲を表現することができない。そこで、この第18の発明によれば、例えば、第2の雲状オブジェクトの複数の特定点における色情報をまず求め、この特定点の色情報に基づいて、テクスチャ情報(即ち、終局的には第2の雲状オブジェクト)の色情報を決定することとすれば、第2のオブジェクト空間における、第2の雲状オブジェクトの配置状況等に応じた色を表現することができる。
【0048】
またこの場合、第19の発明のように、第18の発明のゲーム情報であって、
前記色情報決定手段に対して、前記光源の光線方向の角度に応じて予め用意された複数の色情報を、当該特定点における前記光源の光線方向の角度に応じた所与の割合で合成処理することにより、前記各特定点の色情報を決定する、ように機能させるための情報(例えば、図31に示す関数データ930)を含むこととしてもよい。
【0049】
従来、光源に係る輝度計算は、輝度値を加算する処理が一般的であった。即ち、ある輝度値を加算することによって、明るい状態の色を表現することが可能ではあったが、最大輝度である「白色」のRGB値が、R=255、G=255、B=255であるため、段々と「白色」に近づかざるを得なかった。従って、もともと「白色」である「雲」に対する輝度計算は、困難なものであった。この第19の発明によれば、複数の色情報(例えば、オレンジ色と白色と灰色)を予め用意し、特定点における色情報が光源の光線方向に応じて決定されるため、例えば、様々な色に染められた「雲」(例えば、上側をオレンジ色にする等)を容易に表現することができる。
【0050】
第20の発明は、第1から第11のいずれかの発明のゲーム情報と、第13から第19の発明のいずれかのゲーム情報とを含むゲーム情報であって、
前記第1の装置と前記第2の装置は同一の装置であり、
当該装置に対して、
前記第1の仮想カメラを前記第2の仮想カメラとする手段と、
前記第1の生成手段により生成されたテクスチャ情報を前記第1の雲状オブジェクトに反映させる手段と、
前記第1の雲状オブジェクトを前記第2の雲素とする手段と、
を機能させるための情報を含むことを特徴とする。
【0051】
この第20の発明によれば、第1から第11の発明のいずれかの発明の効果と、第13から第19の発明のいずれかの発明の効果とを備えるゲーム情報を実現することができる。具体的には、例えば、第1の仮想カメラ(第2の仮想カメラ)の視線方向に対して矛盾のない、板状体の第1の雲状オブジェクト(第2の雲素)を生成することができ、かつ、様々な態様の第2の雲状オブジェクトを表現することができる。
【0052】
第21の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ(例えば、図14に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
所与のアニメーションが施された複数種類の雲素(例えば、図3に示す小雲テクスチャ102)を重ね合わせて、前記オブジェクト空間に配置される雲状オブジェクト(例えば、実施の形態における中雲ビルボード)を生成する手段(例えば、図31に示す中雲生成部612及び中雲描画部634)、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0053】
この第21の発明によれば、雲素には所与のアニメーションが施されているため、気流を表現することができる。ただし、雲素が複数重ね合わされた部分においては、所与のアニメーションも重ね合わされているため、当該部分においては気流を明確に表現できないが、雲素が重なっていない部分や、重なる数の少ない部分においては、気流が表現される。即ち、例えば、雲状オブジェクトの中央付近に偏りを持たせて雲素を重ねて表現した場合、中央付近の気流は視認できないが、周縁における気流を視認することができ、よりリアリスティックな雲を表現することができる。
【0054】
第22の発明のゲーム情報は、プロセッサによる演算・制御により、第3の仮想カメラ(例えば、図20に示す仮想カメラ100)から見た第3のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第3の装置に対して、
所与の配置位置繰り返しパターンを展開することにより前記第3のオブジェクト空間に複数配置する第3の雲素(例えば、実施の形態における中雲ビルボード)の配置位置を決定する配置位置決定手段(例えば、図31に示す中雲配置部614)と、
前記配置位置決定手段により決定された配置位置に、板状体の前記第3の雲素を配置する第3の配置手段(例えば、図31に示す中雲配置部614)と、
前記第3の雲素を、前記第3の仮想カメラに対する所与の方向に向ける対向配置手段(例えば、図31に示す中雲配置部614)と、
を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0055】
ここで、第3の装置は、コンピュータ装置であってもよいし、携帯用/家庭用/業務用のゲーム装置であってもよい。また所与の配置位置繰り返しパターンとは、第3の雲素の配置位置が決定されたある単位領域における、配置位置のパターンのことであり、例えばこのパターンを縦2×横2×高さ2に配置(展開)することによって、単位領域の8倍(=2×2×2)の大きさの領域における第3の雲素の配置位置を決定することができる。
【0056】
換言すれば、第3のオブジェクト空間の、任意の領域における第3の雲素の配置位置が、このパターンの展開によって決定しうる。即ち、この第22の発明によれば、第3のオブジェクト空間における、第3の雲素の配置位置を容易に決定することができる。例えば、配置位置繰り返しパターンの大きさ(上記の単位領域の大きさ)を第3の仮想カメラの視界と略同一とし、第3の仮想カメラを右方向へパンさせた場合、視野の左側から見えなくなった第3の雲素が、視野の右側から表出することとなる。即ち、配置位置繰り返しパターンのみで、第3の雲素の、第3のオブジェクト空間全ての配置位置を決定することができる。また、第3の雲素は板状体の雲素であるため、第3のオブジェクト空間の画像生成に係る処理負荷を軽減することができる。
【0057】
第23の発明は、第22の発明のゲーム情報であって、
前記第3の装置に対して、前記第3のオブジェクト空間内の所与の高度に、雲素配置層を設定する手段(例えば、図31に示す中雲配置部614)、を機能させるための情報(例えば、図31に示す雲層データ926)と、
前記第3の配置手段に対して、前記雲素配置層内に前記第3の雲素を配置する、ように機能させるための情報(例えば、実施の形態における式(11))と、
を含むことを特徴とする。
【0058】
この第23の発明によれば、第3の雲素を配置する雲素配置層を第3のオブジェクト空間内に設定することができ、この雲素配置層以外に第3の雲素が配置されることがない。したがって、第3のオブジェクト空間において、第3の雲素を配置する高度を制御することができる。なお、さらに雲素配置層の厚さを設定可能なよう構成してもよい。その場合には、例えば、層を薄くすることによっていわし雲を表現したり、層を厚くすることによって積乱雲を表現したりすることができる。
【0059】
第24の発明は、第22または第23の発明のゲーム情報であって、
前記第3の装置に対して、前記第3の仮想カメラからの距離(例えば、実施の形態における距離d)に基づいて、第3の雲素配置領域(例えば、図20に示す雲設定領域R)を設定する第3の雲素領域設定手段(例えば、図31に示す雲設定領域決定部620)、を機能させるための情報と、
前記第3の配置手段に対して、前記第3の雲素配置領域内に前記第3の雲素を配置する、ように機能させるための情報と、
を含むことを特徴とする。
【0060】
この第24の発明によれば、例えば、仮想カメラの視野内にのみ第3の雲素配置領域を設定することにより、視野外の第3の雲素に対する処理を削減することが可能である。
【0061】
第25の発明は、第22から第24の発明のいずれかのゲーム情報であって、
前記第3の装置に対して、前記第3のオブジェクト空間における前記第3の雲素の配置位置に応じて、前記各第3の雲素の透明度を設定する第3の雲素透明度設定手段(例えば、図31に示す不透明度設定部622)、を機能させるための情報を含むことを特徴とする。
【0062】
この第25の発明によれば、例えば、雲の濃淡を、その雲の配置位置に応じて変更することができる。本発明をより具体化する手法としては例えば第26の発明や第27の発明がある。
【0063】
例えば、第26の発明のように、第25の発明のゲーム情報であって、
前記第3の雲素透明度設定手段に対して、前記第3のオブジェクト空間における雲の存在可否を表す雲分布図(例えば、図30に示す雲分布マップ924)に基づいて、前記各第3の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【0064】
この第26の発明によれば、雲分布図に従って、第3の雲素の透明度が設定されるため、第3のオブジェクト空間全体に渡る雲の表示/非表示を管理することができる。即ち、第3の雲素の配置位置は、第22の発明によって決定されるが、実際に表現されるか否か(より正確には、第3の雲素の色が描画されるか否か)は雲分布図に従って決定される。
【0065】
また、第27の発明のように、第25または第26の発明のゲーム情報であって、
前記第3の雲素透明度設定手段に対して、前記第3の仮想カメラから前記各第3の雲素までの距離に基づいて、前記各第3の雲素の透明度を設定する、ように機能させるための情報(例えば、実施の形態における式(12))を含むこととしてもよい。
【0066】
この第27の発明によれば、例えば、第3の仮想カメラに近接配置される第3の雲素の透明度を上げるよう設定することにより、第3の仮想カメラからの視認性が向上し、ゲームにおける操作性を向上させることができる。
【0067】
第28の発明は、第24の発明のゲーム情報であって、
前記第3の装置に対して、
前記第3の仮想カメラからの距離が前記第3の雲素配置領域より遠方に、第4の雲素配置領域(例えば、実施の形態における遠景雲設定領域Rf)を設定する第4の雲素領域設定手段(例えば、図31に示す雲設定領域決定部620)と、
前記第4の雲素配置領域に、板状体の第4の雲素を略水平状に複数配置する第4の配置手段(例えば、図31に示す中雲配置部614)と、
を機能させるための情報を含むことを特徴とする。
【0068】
第24の発明により第3の雲素配置領域が設定されるが、第3の仮想カメラの視野内に、第3の雲素配置領域の周縁が含まれる場合には、矛盾が生じ得る。即ち、第3の仮想カメラの視野内において、第3の雲素配置領域内には第3の雲素が配置されているが、その範囲を超えた所には雲素が配置されていないため、第3の雲素配置領域の周縁がユーザーに分かってしまい、ゲームに対する没入感が損なわれ得る。そのため、第28の発明のように、第3の雲素配置領域の遠方に第4の雲素配置領域を設定することにより、上記問題を解決できる。ここで、第3の仮想カメラにおいて、第4の雲素配置領域は第3の雲素配置領域よりも遠方であるため、雲素を簡略化した表現としてもユーザーには認知され難い。そのため、第4の雲素配置領域においては、板状体の第4の雲素を、略水平状に配置するのみで、処理を簡略化させることが可能である。
【0069】
またこの場合、第29の発明のように、第28の発明のゲーム情報であって、
前記第3の装置に対して、前記配置位置決定手段が用いる前記所与の配置位置繰り返しパターンを展開することにより、前記第4の雲素の配置位置を決定する手段、を機能させるための情報と、
前記第4の配置手段に対して、前記決定された第4の雲素の配置位置に、前記第4の雲素を略水平状に配置する、ように機能させるための情報と、
を含むこととしてもよい。
【0070】
この第29の発明によれば、第3の雲素を配置する際に基準とした、配置位置繰り返しパターンを、第4の雲素の配置位置へも適用することができる。したがって、第22の発明の効果を、第4の雲素に対しても得ることができる。
【0071】
さらに第30の発明のように、
第28または第29の発明のゲーム情報であって、
前記第3の装置に対して、前記第4の雲素の配置位置に応じて、前記各第4の雲素の透明度を設定する第4の雲素透明度設定手段、を機能させるための情報を含むこととしてもよい。
【0072】
この第30の発明によれば、例えば、雲の濃淡を、配置位置に応じて変更することができる。本発明をより具体化する手法としては例えば第31の発明や第32の発明がある。
【0073】
例えば、第31の発明のように、第30の発明のゲーム情報であって、
前記第4の雲素透明度設定手段に対して、前記第3のオブジェクト空間における雲の存在可否を表す雲分布図に基づいて、前記各第4の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【0074】
この第31の発明によれば、雲分布図に従って、第4の雲素の透明度が設定されるため、第3のオブジェクト空間全体に渡る雲の表示/非表示を管理することができる。即ち、第4の雲素の配置位置は、第30の発明によって決定されるが、実際に表現されるか否か(より正確には、第4の雲素の色が描画されるか否か)は雲分布図に従って決定される。なお、この雲分布図を、第3の雲素と共有してもよいことは勿論である。
【0075】
また、第32の発明のように、第30または第31の発明のゲーム情報であって、
前記第4の雲素透明度設定手段に対して、前記第3の仮想カメラから前記各第4の雲素までの距離に基づいて、前記各第4の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【0076】
この第32の発明によれば、例えば、第3の仮想カメラからより遠方に配置される第4の雲素の透明度を、徐々に上げるよう設定することにより、第3の仮想カメラからの遠方における視認性を向上させ、また、第4の雲素が遙か遠くまで続いているかのように表現することができる。
【0077】
第33の発明は、第13から第20の発明のいずれかのゲーム情報と、第22から第32の発明のいずれかのゲーム情報とを含むゲーム情報であって、
前記第2の装置と前記第3の装置は同一の装置であり、
当該装置に対して、
前記第2の仮想カメラを前記第3の仮想カメラとする手段と、
前記第2のオブジェクト空間を前記第3のオブジェクト空間とする手段と、
前記第2の生成手段により生成されたテクスチャ情報を前記第2の雲状オブジェクトに反映させる手段と、
前記第2の雲状オブジェクトを前記第3の雲素とする手段と、
を機能させるための情報を含むことを特徴とする。
【0078】
この第33の発明によれば、第13から第20の発明のいずれかの発明の効果と、第22から第32の発明のいずれかの発明の効果とを備えるゲーム情報を実現することができる。具体的には、例えば、第2の雲素によって、板状体ではあるが様々な態様を有する第2の雲状オブジェクト(第3の雲素)を表現することができ、かつ、第2の雲状オブジェクト(第3の雲素)の第3のオブジェクト空間における配置位置計算を簡略化することができる。
【0079】
第34の発明は、第33の発明のゲーム情報であって、
前記第2の生成手段に対して、複数種類のテクスチャ情報を生成する、ように機能させるための情報と、
前記装置に対して、前記第2の生成手段により生成される複数種類のテクスチャ情報を反映させることにより、テクスチャ情報の異なる複数種類の第2の雲状オブジェクトを生成する手段、を機能させるための情報と、
前記第3の配置手段に対して、前記複数種類の第2の雲状オブジェクトを配置する、ように機能させるため情報と、
を含むことを特徴としている。
【0080】
この第34の発明によれば、複数種類の第2の雲状オブジェクトを生成する、即ち、複数種類の第3の雲素とすることができるため、第3のオブジェクト空間において表現する雲状物の表現を多様化することができる。
【0081】
第35の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ(例えば、図20に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記仮想カメラの位置または視線方向が変化する場合に、視界から外れた領域に存在していた雲状オブジェクト(例えば、実施の形態における中雲ビルボード)を新たに視界となる領域に表現することにより、雲状オブジェクトが存する空間が続いていることを擬似的に表現する手段(例えば、図31に示す雲海生成部618及び雲海描画部640)、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0082】
この第35の発明によれば、仮想カメラの位置の変化などによって、視界から外れた雲状オブジェクトを新たに視界となる領域に表現することによって、オブジェクト空間において、雲状オブジェクトが連続的に配置されているかのような表現をすることができ、雲状オブジェクトの画像生成に係る処理を軽減させることができる。
【0083】
第36の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ(例えば、図20に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記仮想カメラの位置の変化に応じて、前記仮想カメラの視界の略中央付近から仮想カメラに接近する雲状オブジェクト(例えば、実施の形態における中雲ビルボード)に対する透明度を上げて、視界の遠方から視界の略中央付近に移動する雲状オブジェクトに対する透明度を下げる手段(例えば、図31に示す不透明度設定部622)、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【0084】
この第36の発明によれば、仮想カメラの視界の略中央付近における雲状オブジェクトの透明度が高く、仮想カメラの近方および遠方に位置する透明度が低いため、視認性が高く、操作性のよいオブジェクト空間の画像(ゲーム画像)とすることができる。
【0085】
また、第37の発明のように、第1から第36の発明のいずれかのゲーム情報を記憶する情報記憶媒体を実現することとしてもよい。
【0086】
第38の発明は、仮想カメラ(例えば、図2に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラの所与の角度パラメータの値(例えば、図2に示すピッチ角X)に応じて予め用意された複数種類の雲素(例えば、図3に示す雲パーツA(122)、雲パーツB(124))を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクト(例えば、実施の形態における小雲ビルボード)に反映させるテクスチャ情報(例えば、図4に示す小雲テクスチャ102)を生成する生成手段(例えば、図31に示す小雲描画部632)、を備えるゲーム装置である。
【0087】
この第38の発明によれば、例えば、雲状オブジェクトの一側面(例えば、正面)と他側面(例えば、裏面)を表す2つの雲素を用意し、仮想カメラの視線方向に応じて、その雲素を切り換えること等が可能である。即ち、雲状オブジェクトは仮想カメラに向けて配置されるため、例えば、雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【0088】
また更に、仮想カメラの「角度パラメータの現在値に応じ」て、雲状オブジェクトに反映されるテクスチャ情報が生成されるため、オブジェクト空間に雲状オブジェクトを配置する際、雲状オブジェクトの上下左右方向を考慮する必要がない。即ち、例えば、仮想カメラのロール角が変化する場合には、雲状オブジェクトを、当該ロール角に応じて回転させる必要が生じるが、そのロール角に応じてテクスチャ情報が生成されるため、雲状オブジェクトは、単に、オブジェクト空間に配置するだけ(より正確には、オブジェクト空間には、雲状オブジェクトを配置する位置を決定するだけ)で済む。
【0089】
第39の発明は、仮想カメラ(例えば、図14に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
雲モデル空間(例えば、図14に示す中雲座標系)に雲素(例えば、図14に示す小雲ビルボード24−1〜32)を複数配置する配置手段(例えば、図31に示す中雲生成部612)と、
前記雲モデル空間を透視変換することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクト(例えば、実施の形態における中雲ビルボード)に反映させるテクスチャ情報(例えば、実施の形態における中雲テクスチャ)を生成する生成手段(例えば、図31に示す中雲描画部634)と、
を備えるゲーム装置である。
【0090】
この第39の発明によれば、オブジェクト空間に配置される雲状オブジェクトは板状体ではあるが、様々な態様の雲状オブジェクトを表現することができる。なぜならば、雲状オブジェクトに反映される、生成手段によって生成されるテクスチャ情報は、雲素が複数配置された雲モデル空間を透視変換したものであるため、透視変換の仕方によって、種々のテクスチャ情報を生成することが可能だからである。また本発明により、オブジェクト空間に係る処理と、テクスチャ情報を生成する処理とを区別して処理することが可能となり、オブジェクト空間に係る処理負荷を軽減させることができる。なお、第2の雲素を板状体により構成してもよい。
【0091】
第40の発明は、仮想カメラ(例えば、図14に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラの所与の角度パラメータの値(例えば、図2に示すピッチ角X)に応じて予め用意された複数種類の雲素(例えば、図3に示す雲パーツA(122)、雲パーツB(124))を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することによりテクスチャ情報(例えば、図4に示す小雲テクスチャ102)を生成する第1の生成手段(例えば、図31に示す小雲描画部632)と、
前記第1の生成手段により生成されたテクスチャ情報を、板状体の第1の雲状オブジェクト(例えば、実施の形態における小雲ビルボード)に反映させる手段(例えば、中雲描画部634)と、
雲モデル空間(例えば、実施の形態における中雲座標系)に前記第1の雲状オブジェクトを複数配置する配置手段(例えば、図31に示す中雲生成部612)と、
前記雲モデル空間を透視変換することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の第2の雲状オブジェクト(例えば、実施の形態における中雲ビルボード)に反映させるテクスチャ情報(例えば、実施の形態における中雲テクスチャ)を生成する第2の生成手段(例えば、図31に示す中雲描画部634)と、
を備えるゲーム装置である。
【0092】
この第40の発明によれば、例えば、仮想カメラの視線方向に対して矛盾のない、板状体の第1の雲状オブジェクトを生成することができ、かつ、様々な態様の第2の雲状オブジェクトを表現することができる。
【0093】
第41の発明は、仮想カメラ(例えば、図20に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
所与の配置位置繰り返しパターンを展開することにより前記オブジェクト空間に複数配置する雲素(例えば、実施の形態における中雲ビルボード)の配置位置を決定する配置位置決定手段(例えば、図31に示す中雲配置部614)と、
前記配置位置決定手段により決定された配置位置に、板状体の前記雲素を配置する配置手段(例えば、図31に示す中雲配置部614)と、
前記雲素を前記仮想カメラに対する所与の方向に向ける対向配置手段(例えば、図31に示す中雲配置部614)と、
を備えるゲーム装置である。
【0094】
ここで、所与の配置位置繰り返しパターンとは、雲素の配置位置が決定されたある単位領域における、配置位置のパターンのことであり、例えばこのパターンを縦2×横2×高さ2に配置(展開)することによって、単位領域の8倍(=2×2×2)の大きさの領域における雲素の配置位置を決定することができる。
【0095】
換言すれば、オブジェクト空間の、任意の領域における雲素の配置位置が、このパターンの展開によって決定しうる。即ち、この第41の発明によれば、オブジェクト空間における、雲素の配置位置を容易に決定することができる。例えば、配置位置繰り返しパターンの大きさ(上記の単位領域の大きさ)を仮想カメラの視界と略同一とし、仮想カメラを右方向へパンさせた場合、視野の左側から見えなくなった雲素が、視野の右側から表出することとなる。即ち、配置位置繰り返しパターンのみで、雲素の、オブジェクト空間全ての配置位置を決定することができる。また、雲素は板状体の雲素であるため、オブジェクト空間の画像生成に係る処理負荷を軽減することができる。
【0096】
第42の発明は、仮想カメラ(例えば、図20に示す仮想カメラ100)から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
雲モデル空間(例えば、実施の形態における中雲座標系)に雲素(例えば、実施の形態における小雲ビルボード)を複数配置する雲素配置手段(例えば、図31に示す中雲生成部612)と、
前記雲モデル空間を透視変換することにより、テクスチャ情報を生成する生成手段(例えば、図31に示す中雲描画部634)と、
前記生成手段により生成されるテクスチャ情報を板状体の雲状オブジェクト(例えば、実施の形態における中雲ビルボード)に反映させる手段(例えば、図31に示す雲海描画部640)と、
所与の配置位置繰り返しパターンを展開することにより前記オブジェクト空間に複数配置する前記雲状オブジェクトの配置位置を決定する配置位置決定手段(例えば、図31に示す中雲配置部614)と、
前記配置位置決定手段により決定された配置位置に、前記雲状オブジェクトを配置する雲状オブジェクト配置手段(例えば、図31に示す中雲配置部614)と、
前記雲状オブジェクトを前記仮想カメラに対する所与の方向に向ける対向配置手段(例えば、図31に示す中雲配置部614)と、
を備えるゲーム装置である。
【0097】
この第42の発明によれば、例えば、雲素によって、板状体ではあるが様々な態様を有する雲状オブジェクトを表現することができ、かつ、雲状オブジェクトのオブジェクト空間における配置位置計算を簡略化することができる。
【図面の簡単な説明】
【0098】
【図1】本発明を家庭用のゲーム装置に適用した場合の一例を示す図である。
【図2】(a)仮想カメラと小雲テクスチャとの関係、(b)仮想カメラ角度、を説明する図である。
【図3】小雲テクスチャの合成の概念を示す図である。
【図4】小雲テクスチャの一例を示す図である。
【図5】雲パーツA及び雲パーツA用マスクの一例を示す図である。
【図6】雲パーツB及び雲パーツB用マスクの一例を示す図である。
【図7】気流テクスチャの一例を示す図である。
【図8】(a)雲パーツA、(b)雲パーツB、(c)気流テクスチャの画像の一例を示す図である。
【図9】仮想カメラのピッチ角Xが(a)X=0°、(b)X=45°、(c)X=90°の場合の小雲テクスチャの一例を示す図である。
【図10】小雲テクスチャの反転する原理を示す図である。
【図11】中雲の画像例を示す図である。
【図12】中雲座標系の一例を示す斜視図である。
【図13】小雲分布データの一例を示す図である。
【図14】(a)中雲座標系における仮想カメラと中雲座標系の原点と投影スクリーンとの位置関係、(b)ワールド座標系と中雲座標系との関係、を示す図である。
【図15】中雲バッファの一例を示す模式図である。
【図16】特定点と特定ベクトルとを説明する図である。
【図17】関数f(ω)のグラフを示す図である。
【図18】(a)FL(ω)、(b)FB(ω)、(c)FS(ω)、の各関数のグラフを示す図である。
【図19】色決定テーブルの一例を示す図である。
【図20】仮想カメラと雲設定領域との関係を示す図である。
【図21】ワールド座標系における雲設定領域の一例を示す図である。
【図22】雲海座標系における雲設定領域の一例を示す図である。
【図23】雲設定領域の移動に伴い中雲ビルボードの配置位置の変化を説明する図である。
【図24】雲設定領域の移動に伴い中雲ビルボードの配置位置の変化を説明する図である。
【図25】雲を含む表示画面の一例を示す図である。
【図26】仮想カメラの視界と雲設定領域との関係の一例を示す図である。
【図27】雲設定領域内の不透明度の分布例を示す図である。
【図28】遠景雲設定領域の一例を示す図である。
【図29】遠景雲設定領域に設定される雲を含む画像の一例を示す図である。
【図30】雲分布マップの一例を示す図である。
【図31】本実施の形態における機能ブロックの一例を示すブロック図である。
【図32】特定点色データ806のデータ構成の一例を示す図である。
【図33】中雲分布データのデータ構成の一例を示す図である。
【図34】雲層データのデータ構成の一例を示す図である。
【図35】描画対象設定データのデータ構成の一例を示す図である。
【図36】本実施の形態における雲生成処理の動作の一例を示すフローチャートである。
【図37】本実施の形態における初期設定処理の動作の一例を示すフローチャートである。
【図38】本実施の形態における小雲生成処理の動作の一例を示すフローチャートである。
【図39】本実施の形態における中雲生成処理の動作の一例を示すフローチャートである。
【図40】本実施の形態における雲海生成処理の動作の一例を示すフローチャートである。
【図41】本実施の形態を実現できるハードウェアの構成の一例を示す図である。
【図42】ホスト装置と通信回線を介して接続されるゲーム端末に本実施の形態を適用した場合の一例を示す図である。
【図43】小雲ビルボードの分布例を示す図である。
【図44】小雲ビルボードの分布例を示す図である。
【発明を実施するための形態】
【0099】
以下、本発明の好適な実施形態について図面を参照して説明する。なお、以下、飛行機ゲームを例にとって説明するが、本発明の適用は、これに限るものではない。
【0100】
図1は、本発明を家庭用ゲーム装置に適用した場合の一例を示す図である。図1において、プレーヤは、ディスプレイ1200に写し出されたゲーム画像を見ながら、ゲームコントローラ1202、1204を操作して、飛行機を操縦し、飛行機ゲームを楽しむ。この場合、ゲームプログラム等のゲームを行なうために必要な情報は、本体装置に着脱自在な情報記憶媒体であるCD−ROM1206、ICカード1208、メモリカード1212等に格納されている。
【0101】
このような飛行機ゲームにおいては、プレーヤの操作に応じて、飛行機の位置、向きが様々に変化するため、ゲーム画像を生成する際の仮想カメラの位置、角度等が様々に変化する。本発明は、このように、仮想カメラの位置、角度の変化に対してゲーム画像に含まれる雲を矛盾なく表現するものである。以下、本発明に係る、1.原理、2.機能、3.動作について詳細に説明する。
【0102】
1.原理
まず、本発明の原理について説明する。本発明では、オブジェクト空間に設定される雲(雲海を)生成する際に、まず、一片の小さい雲である小雲を生成し、その小雲の集合である中雲を生成し、その中雲の集合として雲海を生成、表現する。以下、小雲、中雲、雲海の生成原理について説明する。
【0103】
1−(1)小雲生成原理
以下、図2〜図10を参照して小雲(小雲を表現するテクスチャ(以下、小雲テクスチャ102という。))の生成に係る原理について説明する。尚、生成される小雲テクスチャ102は、透明度(不透明度α)のみを有するテクスチャ(以下、αテクスチャという。)であるが、後述する処理との関連を分かり易くするため、便宜上1枚のポリゴン(以下、仮想ペラポリゴンという。)として生成されるかのように図示・説明する。
【0104】
図2(a)は、オブジェクト空間(ワールド座標系に基づく)内において、仮想カメラ100と、この生成される小雲テクスチャ102と、を表す図である。同図に示すように、小雲テクスチャ102は、常に仮想カメラ100の視線方向に垂直に対向するように設定される。
【0105】
仮想カメラ100に関するパラメータの種別としては、仮想カメラ位置と、仮想カメラ角度とがある。仮想カメラ位置は、ワールド座標系における仮想カメラ100の位置(Xw,Yw,Zw)を表すパラメータである。仮想カメラ角度は、同図(b)に示すように、仮想カメラ100のピッチ角(鉛直方向の首振り角であり仰角および俯角)を表す角度X(以下、ピッチ角X)、ヨー角(水平方向の首振り角)を表す角度Y(以下、ヨー角Y)、ロール角(視線方向を中心とした回転角(ねじれ))を表す角度Z(以下、ロール角Z)、により表されるパラメータである。
【0106】
ただし、ピッチ角Xの取り得る値の範囲は−90°≦X≦90°であり、仰角を正、俯角を負とする。
【0107】
また、上記パラメータ以外に、必要に応じて、視野範囲(ズーム率)を表す画角などの各種パラメータが用いられる。
【0108】
小雲テクスチャ102は、図3に示す概念図のように、1)気流テクスチャ104の不透明度(以下、α値という。)を雲パーツA(122)に設定、2)気流テクスチャ104のα値を雲パーツB(124)に設定、3)雲パーツA(122)と雲パーツB(124)のα値を合成、することにより生成される。これらの雲パーツA(122)、B(124)、及び気流テクスチャ104は、α値のみを持つαテクスチャであり、上述したように小雲テクスチャ102もまたαテクスチャである。尚、α値は、不透明度を表すパラメータであり"0"以上"1"以下の数であり、"0"であれば完全な透明を、"1.0"であれば不透明な状態を表す。
【0109】
また、雲パーツA(122)は、仮想カメラ100のピッチ角Xが0°、即ち、仮想カメラ100の視線方向が水平方向の場合を想定したαテクスチャであり、雲パーツB(124)は、仮想カメラ100のピッチ角Xが±90°、即ち、仮想カメラ100の視線方向が鉛直方向の場合を想定したαテクスチャである。
【0110】
気流テクスチャ104とは、アニメーションによりα値の時間的変化を表したテクスチャであって、所定方向への気流を表現しているものである。但し、気流テクスチャ104を瞬間的にとらえた場合には、静止したα値の分布を表したものと考えられる。
【0111】
図4は小雲テクスチャ102の一例を示す図、図5は雲パーツA(122)(同図(a))及び雲パーツA用マスク112(同図(b))の一例を示す図、図6は雲パーツB(124)(同図(a))及び雲パーツB用マスク114(同図(b))の一例を示す図、図7は気流テクスチャ104の一例を示す図である。
【0112】
ここで、小雲テクスチャ102、雲パーツA(122),雲パーツB(124)、雲パーツA用マスク112、雲パーツB用マスク114および気流テクスチャ104は、それぞれ36(=6×6)テクセルで構成されていることとし、各テクセルの座標を[n,m]と表現する。ただし、n,m=0,1,2,3,4,5である。また、気流テクスチャ104のテクセル[n,m]のα値をα[n,m]、雲パーツA(122)のテクセル[n,m]のα値をαA[n,m]、雲パーツB(124)のテクセル[n,m]のα値をαB[n,m]、小雲テクスチャ102のテクセル[n,m]のα値をCα[n,m]と表現する。
【0113】
雲パーツA用マスク112とは、雲パーツA(122)の形状を特定するためのビットパターンであり、雲パーツB用マスク114とは、雲パーツB(124)の形状を特定するためのビットパターンであって、共に、各テクセル[n,m]に"0"または"1"の値が予め設定されている。
【0114】
まず、雲パーツA(122)の各テクセル[n,m]に雲パーツA用マスク112の値を設定し、雲パーツB(124)の各テクセル[n,m]に雲パーツB用マスク114の値を設定する。即ち、
αA[n,m]=MA[n,m]
αB[n,m]=MB[n,m] ・・・(1)
とする。ここで、MA[n,m]は、雲パーツA用マスク112の各テクセルのビット値を表し、MB[n,m]は、雲パーツB用マスク114の各テクセルのビット値を表す。
【0115】
この式(1)により、雲パーツA(122)と雲パーツB(124)には、値"0"または"1"による雲の形状が設定されることとなる。
【0116】
次に、仮想カメラ100のピッチ角Xに応じて、雲パーツA(122)の各テクセル[n,m]に対応する気流テクスチャ104のテクセル[n,m]のα値を設定するとともに、雲パーツB(124)の各テクセル[n,m]に対応する気流テクスチャ104のテクセル[n,m]のα値を設定する。即ち、
αA[n,m]←α[n,m]×cosX ×αA[n,m]
αB[n,m]←α[n,m]×sin|X|×αB[n,m] ・・・(2)
とする。ここで、←は、代入を意味する演算子であり、右辺の演算結果を左辺の変数に代入することを意味する。
【0117】
即ち、例えば、雲パーツA(122)に値"1"が格納されているテクセル[n,m]には、気流テクスチャ104のα値が反映されることとなり、逆に、値"0"が格納されているテクセル[n,m]には、気流テクスチャ104のα値が反映されないこととなる。従い、式(1)の雲パーツA用マスク112及び雲パーツB用マスク114により、雲パーツA(122)及び雲パーツB(124)の形状が形作られるとともに、気流テクスチャ104のアニメーションによって、雲パーツA(122)及び雲パーツB(124)内の雲の粒子が時間経過に従って流れていく様を表現することができる。
【0118】
さらに、式(2)では、仮想カメラ100のピッチ角Xによって、雲パーツA(122),雲パーツB(124)に反映される気流テクスチャ104のα値が変化することとなる。
【0119】
例えば、仮想カメラ100の視線方向が水平面と平行になった場合、即ち、ピッチ角X=0°となった場合には、
αA[n,m]←α[n,m]×αA[n,m]
αB[n,m]←0 ×αB[n,m]
となり、雲パーツA(122)のαA[n,m]には、気流テクスチャ104のα[n,m]が設定されることとなる。また、雲パーツB(124)のαB[n,m]には、気流テクスチャ104のα[n,m]が反映されないこととなる。
【0120】
同様に、ピッチ角X=45°となった場合には、
αA[n,m]←α[n,m]×(1/√2)×αA[n,m]
αB[n,m]←α[n,m]×(1/√2)×αB[n,m]
となる。
【0121】
また、仮想カメラ100の視線方向が真上あるいは真下となった場合、即ち、ピッチ角X=90°あるいは−90°となった場合には、
αA[n,m]←0 ×αA[n,m]
αB[n,m]←α[n,m]×αB[n,m]
となり、雲パーツB(124)のαB[n,m]には、気流テクスチャ104のα[n,m]が設定されることとなるが、雲パーツA(122)のαA[n,m]には、気流テクスチャ104のα[n,m]が反映されないこととなる。
【0122】
またここで、雲パーツA(122)と雲パーツB(124)とで、反映させる気流テクスチャ104の気流の方向を変更することとしてもよい。例えば、式(2)を以下のように変形する。
αA[n,m]←α[n,m]×cosX×αA[n,m]
αB[n,m]←α[(5−n),(5−m)]×sin|X|×αB[n,m]
このような式とすることにより、同一の気流テクスチャ104を用いているが、簡単に、雲パーツA(122)と雲パーツB(124)とで、気流の方向を変えることが可能である。また更に式(2)を変形することにより、気流テクスチャ104の一部分を拡大して、雲パーツA(122)と雲パーツB(124)とに反映させることとしても良い。
【0123】
次に、雲パーツA(122)の各テクセル[n,m]のα値と、雲パーツB(124)の各テクセル[n,m]のα値とを合算することにより、小雲テクスチャ102の各テクセル[n,m]のα値を決定する。即ち、
Cα[n,m]=αA[n,m]+αB[n,m] ・・・(3)
として決定される。但し、式(3)においては、α値が"1.0"を超える場合が起こり得、この場合には、そのテクセルのα値は"1.0"とする。
【0124】
図8(c)は気流テクスチャ104の一例を示す図であり、同図(a)、(b)はこの気流テクスチャ104の不透明度(α値)が反映された、雲パーツA(122)(同図(a))、雲パーツB(124)(同図(b))の一例を示す図である。また、図9は、上記雲パーツA(122)、雲パーツB(124)の合成により生成された小雲テクスチャ102の一例を示す図である。同図(a)は、ピッチ角X=90°の場合を、同図(b)は、ピッチ角X=45°の場合を、同図(c)は、ピッチX=0°の場合を、それぞれ表す図である。尚、図8及び図9においては、α値を視覚的に把握しやすくするために、α値が"1"の部分を"白色"に、またα値が"0"に近づくにつれ"黒色"に近づくように表現されている。即ち、図8及び図9は、α値を色の濃淡として表した図である。
【0125】
以上のように、本原理においては、雲パーツA(122)と雲パーツB(124)とを仮想カメラ100のピッチ角Xに応じて合成することとしたため、単純な手法ながらも立体感のある雲を表現することができる。
【0126】
即ち、従来においては、雲のテクスチャをマッピングさせた1枚のポリゴン(以下、ペラポリゴンという。)を、常に、仮想カメラ100に対する上下左右位置を固定し、かつ、仮想カメラ100の視線方向に垂直に配置する方法が採られていた。しかしこの方法によると、仮想カメラ100の位置や視線方向等が変化しても雲は全く変化しないため、違和感のある表現であった。またさらに、仮想カメラ100の視線方向の変化に対して、雲のペラポリゴンが意図しない変化をする事象が発生する。即ち、例えば視線方向の仰角あるいは俯角が大きくなると、±90°の角度を境にして、雲が反転して表現されてしまう。
【0127】
これは、仮想カメラ100のピッチ角(仰角あるいは俯角)として取り得る角度範囲が−90°〜90°であるため、±90゜を超えたピッチ角θ2は、図10に示すように、θ2'(<90゜)と設定されることに起因する。
【0128】
本原理はこの意図しない小雲テクスチャ102の反転表現をも解決するものである。即ち、2枚の雲パーツA(122),雲パーツB(124)を用意し、仮想カメラ100のピッチ角に応じて合成することにより、ある角度で雲が反転するという事象は発生し得ない。
【0129】
また、ピッチ角Xの変化に応じて、徐々に2枚の雲パーツA(122),雲パーツB(124)の合成比率を変化させることにより(即ち、2枚の雲パーツA(122),雲パーツB(124)の不透明度αを決定することに該当する)、仮想カメラ100のピッチ角の変化に応じて、なめらかに雲の形状を変化させて、表現することができる。
【0130】
更に、各雲パーツA(122),雲パーツB(124)それぞれに気流テクスチャ104が合成されるため、2枚の雲パーツA(122),雲パーツB(124)の雲縁を曖昧にすることができ、より自然な雲を表現することができる。
【0131】
次に、小雲生成原理のみで雲を実現する場合について説明する。
上記説明においては、小雲テクスチャ102をαテクスチャとして生成する方法について説明したが、以下の処理を追加することにより、雲としての表現を実現することができる。
【0132】
第1の方法は、生成された小雲テクスチャ102を構成する各テクセルに、そのテクセルのα値に応じたRGB値を決定し、雲を表現する方法である。
【0133】
具体的には、例えば、小雲テクスチャ102の色をモノクロで表現する場合、"白色"のRGB値は(255,255,255)であり、"黒色"のRGB値は(0,0,0)である。従い、生成された小雲テクスチャ102において、α値が"1"であるテクセルに対しては、"白色"となるようにRGB値(255,255,255)を設定し、α値が"0"に近づくにつれて、段々と白色が薄くなっていくように、そのテクセルのRGB値を設定する(例えば、RGB値=255×α値)。
【0134】
このことにより、図9に示すような、濃淡がある雲の表現を容易に実現することができる。
【0135】
第2の方法は、雲パーツA(122),雲パーツB(124)を構成する各テクセルに予めRGB値を設定しておく方法である。
【0136】
具体的には、雲パーツA(122),雲パーツB(124)の各テクセルにRGB値を予め設定しておき、各テクセルのα値を気流テクスチャ104により決定する。そして、雲パーツA(122),雲パーツB(124)をαブレンディングすることにより小雲テクスチャ102を生成する。
【0137】
このことにより、例えば、雲パーツA(122)に予め設定する色を"黒色"のみ、雲パーツB(124)に予め設定する色を"白色"のみとすると、水平方向から小雲テクスチャ102を見た場合(ピッチ角X=0゜の場合)には、小雲テクスチャ102の色は"黒色"となる。そして、徐々にピッチ角Xが変化することにより、次第に"灰色"("黒色"に"白色"が混じった色)に見え、更にピッチ角Xを大きくすると、"白色"の混じる割合が大きくなり、ついには上方あるいは下方から見ると(ピッチ角X=90゜の場合) "白色"に見える雲の表現を実現することができる。
【0138】
尚、各雲パーツA(122),雲パーツB(124)に予め設定する雲の色(RGB値)を任意に変更することにより、仮想カメラ100の視線のピッチ角Xによって、様々に色が異なる雲の表現を実現することができる。
【0139】
また、例えば、雲パーツB(124)として、仮想カメラ100のピッチ角Xが俯角の場合に用いる雲パーツB−1と、仮想カメラ100のピッチ角Xが仰角の場合に用いる雲パーツB−2との2種類の雲パーツBを設定しておき、仮想カメラのピッチ角Xに応じて、雲パーツB−1と雲パーツB−2とを切り換えることとしても良い。例えば、1種類の雲パーツB(124)を用いて小雲テクスチャ102を生成する場合には、小雲の上面を見た場合と下面を見た場合とで同じ小雲テクスチャが生成されるが、雲パーツB−1と雲パーツB−2とを切り換えることにより、小雲の上面を見た場合の小雲テクスチャ102と小雲の下面を見た場合の小雲テクスチャ102とで、小雲の形状が異なるようにすることができ、より矛盾のない雲の形状を実現できる。
【0140】
同様に、雲パーツA(122)として、仮想カメラ100のヨー角Yに対応する複数種類の雲パーツA(122)を設定しておき、仮想カメラ100のヨー角Yに応じて雲パーツAを切り換えることとしても良い。
【0141】
なお、上記小雲生成原理において生成した各雲パーツA(122),雲パーツB(124)には、気流テクスチャのα値が反映されており、この2種類の雲パーツA(122),雲パーツB(124)を合成して小雲テクスチャ102を生成している。このため、小雲テクスチャ102は、全体に気流がかかった雲として表現されることとなり、雲の粒子が雲全体に渡って動いているように表現される。リアリスティックな雲を表現する場合には、このような現象は必ずしも良いとはいえない。
【0142】
しかしながら、後述する中雲生成原理に基づいて、この小雲テクスチャ102を複数使用して中雲を生成することにより、ある範囲に小雲テクスチャ102を集中させて中雲テクスチャを生成するため、中心の透明度が低く、周辺に近づくにつれて透明度が高くなる中雲テクスチャが生成される。そのため、中雲の縁にのみに気流が表現される、リアルな雲を表現することができる。
【0143】
1−(2)中雲生成原理
次に中雲生成原理について説明する。
ここで、中雲とは、小さな雲(小雲)を寄せ集めた集合体を意味する。また、小雲とは、前述の方法により生成した不透明度(α値)のみを有する小雲テクスチャ102の意であり、これを32個複製し、中雲モデル空間に3次元的に分布させることにより中雲を生成する。中雲モデル空間とは、中雲を生成するためのローカル座標系のことである(以下、この中雲モデル空間を中雲座標系という。)。そして、3次元的に配置された各小雲テクスチャ102の不透明度を、仮想カメラ100に基づいて描画するとともに、仮想カメラ100と光源との位置関係に応じた色を着色することにより、中雲テクスチャを生成する。
【0144】
具体的には、1つの中雲を、32枚のペラポリゴンにより構成する。ただし、各ペラポリゴンの表面(ただし、仮想カメラ100に面する側)には、小雲テクスチャ102のαテクスチャがマッピングされる。また、各ペラポリゴンは、中雲座標系における代表点の座標と大きさのみが定義されたものであり、ゲーム実行中においては、その面が仮想カメラ100の視線方向に対して垂直に交わるように回転するビルボードである。
【0145】
以下では、この中雲を構成する個々のペラポリゴンを、小雲ビルボードという。そして、中雲テクスチャを生成する際には、まず、小雲テクスチャ102により指定された各小雲ビルボードのα値を、仮想カメラ100に基づいて所与の平面座標上に描画する。また一方では、中雲に与える色情報を、オブジェクト空間における仮想カメラ100と光源との位置関係に応じて決定し、描画されたα値に従って着色することにより中雲テクスチャを生成する。
【0146】
なお、小雲テクスチャ102を生成する際に、雲パーツA(122)、雲パーツB(124)は、仮想カメラ100のロール角Zに応じて回転させるため、生成される小雲テクスチャ102は、仮想カメラ100のロール角Zに応じて上下左右位置が変化する。そのため、その小雲テクスチャ102をマッピングした小雲ビルボード102は、上下左右位置が仮想カメラ100のロール角Zに応じたものとなるため、代表点に配置するだけで良い。
【0147】
図11は、本発明を適用することによって生成した4種の中雲202、204、206、208の画像例を示す図である。同図に示した各中雲は、32個の小雲ビルボードをそれぞれ異なる分布で配置し、それ以外の全ての条件を同一に設定して生成したものである。即ち、各中雲の画像生成において、各小雲ビルボードにマッピングしたαテクスチャ(即ち、小雲テクスチャ102)は全て同一であり、また、各中雲と仮想カメラ100との位置関係や、オブジェクト空間における仮想カメラ100と光源との位置関係等の設定も全て等しくした。同図によれば、各中雲は、形状や透明さ、立体感等の見え方が異なる。このように、本発明では、32個の小雲ビルボードの分布を変化させるだけで、複数の異なる中雲を生成する。また、オブジェクト空間における仮想カメラ100と光源の位置関係に基づいて色情報を決定することとしたため、各画像から類推される光源の方向が等しいものとして認識できる。
【0148】
以下では、図11に示すような4つの中雲202、204、206、208のテクスチャ(以下、中雲テクスチャ)を生成する方法について、詳細に説明する。なお、以下では、1)初期設定として、各中雲を構成する小雲ビルボードを分布させる方法について説明した後、2)小雲ビルボードの描画として、小雲ビルボードの集合体を描画する方法、即ち、各小雲ビルボードの不透明度αを描画し、着色する方法について説明する。
【0149】
1)初期設定
初期設定では、小雲ビルボードの分布と、各小雲ビルボードの大きさについて設定する。具体的には、中雲1つ1つに対して、中雲座標系を定義し、32個の小雲ビルボードの座標を設定するとともに、各小雲ビルボードの大きさを決定し、各中雲のデータとして記憶する。なお、小雲ビルボードの大きさや分布の設定については、より自然体に近い中雲を生成するために、乱数を用いて行う。即ち、各小雲ビルボードの座標および大きさを乱数により決定する。
【0150】
小雲ビルボードの座標を決定する際には、座標における各成分毎に乱数を発生する。ただし、乱数を無制限に発生させた場合、不必要に大きい値が得られる可能性がある。このため、生成する乱数に下限と上限を設け、所定の範囲内の値が得られるように設定する。ただし、乱数を発生したとき、下限から上限に至る範囲内の全ての値について出現確立が等しい。従って、得られた乱数を小雲ビルボードの座標成分として直接採用した場合、32個の小雲ビルボードは、所与の立方体内に満遍なく分布されることとなり、図11に示す中雲のような一部に寄り集まった雲を表現することができない。そこで、分布に偏りを持たせるために、1つの小雲ビルボードの座標を決定する際に、各座標の1成分につき複数の乱数を発生して、その平均の値を採用する。
【0151】
具体的には、各成分の値を次の式により決定する。
n=(R1+R2+R3+R4)/4−(Rmax−Rmin)/2
n=(R5+R6+R7+R8)/4−(Rmax−Rmin)/2
n=(R9+R10+R11+R12)/4−(Rmax−Rmin)/2 ・・・(4)
ここに、(xn、yn、zn)は、1つの中雲を構成するn番目のビルボードの座標を意味し、R1〜R12は、それぞれ独立に発生した乱数を示す。また、Rmaxは、発生させる乱数の最大値(上限)を、Rminは、最小値(下限)をそれぞれ意味する。例えば、Rmax=100、Rmin=0として設定すれば、乱数の発生範囲は、中雲座標系における原点を中心とし、一辺の長さが"100"の立方体となる。
【0152】
図12は、中雲座標系(x、y、z)の斜視図であり、式(4)に基づいて小雲ビルボードの代表点を分布させた一例を示すものである。同図における破線は、乱数の発生範囲を示す。また、各小雲ビルボードの代表点の座標を点により示した。このように、式(4)を用いて、複数の乱数により小雲ビルボードの座標を決定することによって、原点に偏った分布をする小雲ビルボードの集合体を構成することができる。
【0153】
なお、式(4)では、1成分につき、4つの乱数を用いることとして説明したが、この数に限定する必要はない。例えば、採用する乱数の数を増やせば、小雲ビルボードが原点の近くに配置される可能性がより高くなり、更に偏った分布を実現できる。逆に、採用する乱数の数を少なく設定すれば、偏りが小さい分布を施すことができる。このことは、式(4)において、乱数の発生範囲を操作することによっても同様の効果が認められる。即ち、乱数の発生範囲を大きく設定すれば、分布の偏りが小さくなり、発生範囲を小さく設定すれば、分布の偏りを大きくすることができる。従って、生成する中雲の形状や大きさ、立体感等に応じて採用する乱数の数や範囲を変更してもよい。
【0154】
一方、小雲ビルボードの大きさは、次のようにして決定する。即ち、1つ1つの小雲ビルボードを正方形として定義し、その一辺の長さwsを乱数により決定する。
ws=1.0+Rw ・・・(5)
ここに、Rwは、乱数を意味し、その発生範囲を0.0≦Rw≦1.0とする。即ち、各中雲を、一辺の長さwsが1.0≦ws≦2.0を満たす、様々な大きさの小雲ビルボードの集合体により構成することができる。
【0155】
図13は、上記初期設定により決定された各小雲ビルボードの座標と大きさを記憶する4つの小雲分布データ210a〜dの一例を示す図である。同図によれば、4つの小雲分布データ210a〜dには、それぞれの中雲を構成する小雲ビルボードのコード(NO.)と、各小雲ビルボードを配置する座標の各成分、および、一辺の長さwsが記憶される。ゲーム実行中においては、小雲分布データ210a〜dに記憶されたデータに基づいて、各小雲ビルボードを制御する。なお、同図においては、4つの中雲に対応する小雲分布データ210a〜dをそれぞれ独立して記憶することとして示したが、4つの中雲の小雲ビルボードをまとめて記憶させてもよい。即ち、128個の小雲ビルボードを1つの小雲分布データとして記憶してもよい。また、上記初期設定は、ゲームを実行する直前に行い、毎回異なる中雲を生成する構成にしてもよい。
【0156】
2)小雲ビルボードの描画
続いて、ゲーム実行中において、小雲ビルボードを描画する処理について説明する。
【0157】
図14(a)は、中雲座標系(x、y、z)を模式的に描いたものであり、小雲ビルボード24−1〜32を描画するための仮想カメラ(以下、雲視点220という)と、中雲座標系の原点と、投影スクリーン22との位置関係を説明するための図である。ここに、投影スクリーン22とは、小雲ビルボード24−1〜32の集合体を投影するための投影面であり、その面は、ワールド座標系における仮想カメラ100の視線ベクトル34に対して垂直に交わる関係にある。また、同図に示すように、雲視点220と、中雲座標系の原点と、投影スクリーン22の中心点22aとは、ワールド座標系における仮想カメラ100の視線ベクトル34と平行な1つの直線26上に配置される。従って、雲視点220の視線ベクトルは、ワールド座標系における仮想カメラ100の視線ベクトル34と等しくなる。なお、中雲座標系において、原点に対する雲視点220と投影スクリーン22の距離を、それぞれ一定とする。
【0158】
図14(b)は、オブジェクト空間を定義するワールド座標系(Xw、Yw、Zw)と、(a)に示す中雲座標系(x、y、z)とを示した図である。同図によれば、オブジェクト空間を映し出すためのスクリーン32と仮想カメラ100とを結ぶ直線36と、中雲座標系の原点を経由した雲視点220と、投影スクリーン22の中心点22aとを結ぶ直線26とが平行である。即ち、ゲーム実行中において、ワールド座標系における仮想カメラ100とスクリーン32の座標を決定すると、仮想カメラ100からスクリーン32に向かう視線ベクトル34を算出する。そして、この視線ベクトル34の傾きに基づいて、中雲座標系における雲視点220と投影スクリーン22の座標を決定する。なお、図14(b)において、位置関係を説明するために、ワールド座標系内に中雲座標系を配置したが、実際に配置するものではない。従って、小雲ビルボード24の分布は、ワールド座標系における他のオブジェクトの配置・描画を妨げるものではない。
【0159】
このように、仮想カメラ100の視線ベクトル34と平行になるように、雲視点220と投影スクリーン22との位置を決定し、雲視点220に基づいて、各小雲ビルボードを投影スクリーン22上に投影変換する。但し、このとき、中雲座標系における32個の小雲ビルボード24−1〜32の面がそれぞれ仮想カメラ100の視線ベクトル34に対して垂直に交わるように、各小雲ビルボードの頂点の座標を決定する。そして、各頂点について、投影スクリーン22への投影変換を行う。即ち、1つの小雲ビルボードを投影スクリーン22上に投影する際には、初期設定において生成した小雲分布データ210a〜dの中から該当する小雲ビルボードの代表点の座標と一辺の長さwsを読み出し、その読み出した値に基づいて視線ベクトル34の方向を法線方向とし、且つ、代表点の座標を中心とする面の4つの頂点を算出する。そして、算出した4つの頂点を投影スクリーン22上に投影することにより、小雲ビルボードの投影処理を行う。
【0160】
あるいは、小雲ビルボード24の投影処理において、中雲座標系における小雲ビルボード24と投影スクリーン22とが常に平行であることを利用して、投影処理を次のように短絡化してもよい。まず、中雲座標系における小雲ビルボードの代表点の座標を、投影スクリーン22上に投影する。一方で、該当する小雲ビルボード24の一辺の長さwsを、投影スクリーン22の座標系における長さws´に変換する(即ち、長さwsに対して透視変換の演算を施す)。そして、投影スクリーン22の座標系において、投影された小雲ビルボード24の代表点の座標を中心とする、一辺の長さws´の正方形の頂点を求める。このように、小雲ビルボード24の各頂点の座標を、投影スクリーン22の座標系において直接求めることによって、複数の小雲ビルボード24−1〜32の描画処理を軽減することができる。
【0161】
図15は、1つの中雲テクスチャの画像データを記憶するための中雲バッファ40を模式的に描いた図である。同図によれば、中雲バッファ40は、100×100テクセル分のRGBの色情報と、α値を記憶するメモリであり、それぞれRGBプレーン42とαプレーン44とに分けて記憶する。また、中雲バッファ40における各テクセルは、投影スクリーン22の座標系(XS,YS)と対応する。即ち、中雲座標系における小雲ビルボード24を投影スクリーン22上に投影すると、投影スクリーン22の座標系における小雲ビルボード24の各頂点の座標に対応する中雲バッファ40のテクセルを決定できる。そして、決定されたテクセルによって囲まれた範囲のテクセルのαプレーン44に対して、小雲テクスチャ102により指定されたα値(Cα)を与える。ただし、各テクセルのαプレーン44に対して、α値を加算的に与えることとする。即ち、中雲バッファ40内の1つのテクセルに対して、複数の小雲ビルボード24が重なって投影された場合には、全てのα値を加算して記憶させる。なお、α値を加算することによって、α>1となる場合には、1を超える値を切り捨てることとする。
【0162】
このように、3次元的に配置した小雲ビルボード24−1〜32をオブジェクト空間における仮想カメラ100の視線方向に応じて描画することによって、仮想カメラ100の位置が変化する度に見え方が変化することとなる。従って、生成される中雲テクスチャは、平面であるにもかかわらず、立体的な印象を与えることができる。また、中雲の見え方が、3次元空間における分布に従って秩序正しく変化するため、違和感を与えることなく雲を表現することができる。
【0163】
また、図15に示す中雲バッファ40のRGBプレーン42に与える色情報は、オブジェクト空間における光源と、仮想カメラ100の視線方向および、中雲座標系における投影スクリーン22(より正確には、投影スクリーン22に対応するオブジェクト空間上の「中雲ビルボード」であるが、本原理は、「中雲」に係る原理を説明しているため、以下、「投影スクリーン」として説明する。)との位置関係に応じて決定する。より具体的には、投影スクリーン22(対応するオブジェクト空間上の中雲ビルボード。以下同じ。)と光源との位置関係を判定するための特定点を、投影スクリーン22上に設定する。例えば、投影スクリーン22の頂点、投影スクリーン22の各辺の中点、および、投影スクリーン22の中心点といった複数箇所の点を特定点として設定する。ゲーム実行中においては、投影スクリーン22上に設定した各特定点と光源との位置関係を判定し、光源に近いと判定される特定点には明るい色を、光源から離れた位置に該当する特定点には暗い色を決定する。そして、投影スクリーン22上の各特定点に対して決定した色情報を、中雲バッファ40上の対応するテクセルのRGBプレーン42に記憶させる。また、中雲バッファ40上の他のテクセルに対しては、グローシェーディングの方法、即ち、各特定点に与えられた色の中間色を算出して与える。
【0164】
投影スクリーン22上の各特定点と光源との位置関係を判定する処理は、ベクトル演算により行う。即ち、投影スクリーン22上に設定した各特定点に特定のベクトルを持たせ、ゲーム実行中の投影スクリーン22の回転に合わせて各特定点の特定ベクトルを回転させる。そして、オブジェクト空間における光源の光線ベクトル38と、投影スクリーン22の各特定ベクトルとの成す角を計算し、その角度に応じた色を該当する特定点の色として決定する。なお、以下では、簡単の為に、光源を無限光源とする。即ち、図14(b)に示すように、光のベクトル38(以下、光線ベクトル38という)は、オブジェクト空間の全体を均等に照らし、且つ、至るところで平行なベクトルとする。
【0165】
図16は、投影スクリーン22に設けた9ヶ所の特定点22−1〜9と、各特定点の特定ベクトルを説明するための図である。(a)は、中雲座標系における投影スクリーン22の正面図を、(b)は、投影スクリーン22の断面図をそれぞれ示す。(a)および(b)によれば、各特定点が、投影スクリーン22の各頂点22−2,4,6,8、投影スクリーン22の各辺における中点22−3,5,7,9、および、投影スクリーン22の中心点22−1に設定され、特定ベクトルとして、各点における法線ベクトルが与えられる。なお、(b)には、投影スクリーン22の中心点22−1における法線ベクトル22−1a、および、仮想カメラ100の視線ベクトル34を示した。即ち、中心点22−1の特定ベクトルは、仮想カメラ100の視線ベクトル34に対して常に逆向きとなる。
【0166】
また、図16(c)は、各特定ベクトル(即ち、法線ベクトル)が指す向きの関係を示す図であり、投影スクリーン22を、x−z平面に対して水平に、且つ、各辺がx軸とz軸に対して平行あるいは垂直に交わるように配置したときの各特定ベクトルの成分を表示したものである。(c)に示すように、各特定ベクトルが互いに成す角の関係は、ゲーム実行中における投影スクリーン22の回転にかかわらず等しい。従って、仮想カメラ100の視線ベクトル34が決定すれば、視線ベクトル34に基づく回転行列を生成して、(c)に示す各特定ベクトルに作用させることにより、投影スクリーン22における各点の法線ベクトルを簡単に算出することができる。
【0167】
このように、投影スクリーン22の各点における特定ベクトルの向きを決定すると、光線ベクトル38との成す角を算出する。しかし、3次元空間における各ベクトルの成す角を算出して、座標系における3つの成分の角度を比較する処理は煩雑であるため、以下では、成す角を算出せずに、内積により色を決定することとする。また、内積を算出する際には、各ベクトルを単位ベクトル化し、内積の結果ωが−1≦ω≦1の範囲を取るように設定する。そして、該当する点に与える色を、ωの値および符号に応じて一意的に決定する。
【0168】
なお、内積ωの値と中雲に与える色との関係は、投影スクリーン22の各特定点が光源に対して近いか遠いかといった関係と対応させる。具体的には、図16(a)に示した投影スクリーン22において、特定点22−2の法線ベクトルは光線ベクトル38に対して逆向きを示し、特定点22−6の法線ベクトルは同方向を指す。即ち、投影スクリーン22において、より光源に近い点の法線ベクトルは、光線ベクトル38と逆向きを示し、光源に対して影となる部分の法線ベクトルは、光線ベクトル38と同方向を示す。こうした関係に基づき、光線ベクトル38と各点の法線ベクトルとの内積ωが、負である場合には、該当する点が光源に近いものと判断して、明るい色を与える。また、内積ωが正である場合には、光源からやや遠い、影となる部分に対応する点であると判断し、暗い色を与える。
【0169】
更に詳細には、内積ωが負である場合には雲の色として白を、内積ωが正である場合には灰色を(極端には、黒を)、といった具合に、色の濃淡を内積ωの値に応じて決定する。例えば、RGB各色の出力Iの範囲を0≦I≦255と定義する。ここに、I=0のとき、RGB全ての色が出力されずに黒となり、逆にI=255のとき白となる。そして、内積ωを変数とする関数f(ω)を乗算することにより、全色の出力の割合を決定する。関数f(ω)は、0≦f(ω)≦1の範囲を取り、ωの増加に伴って増加する関数であればいずれのものであってもかまわないが、例えば、
f(ω)=0 (−1≦ω<0)
=√ω (0≦ω≦1) ・・・(6)
といった関数を定義する(ただし、0≦f(ω))。図17は、関数f(ω)のグラフを示すものであり、横軸がωを、縦軸が関数f(ω)の値を示す。式(6)によれば、関数f(ω)の値は、内積ωが負のとき"1"から"0"の値を持ち、内積ωが正のとき値が"0"となる。従って、法線ベクトルと光線ベクトル38とが互いに等しい方向を向くとき(ω>0)には、f(ω)=0となり、出力される色は黒となり、雲における影の部分を表現することができる。一方、法線ベクトルと光線ベクトル38とが向き合う関係にあるとき(ω<0)には、f(ω)>0となり、ωの値が"−1"に近づくにつれて白に近い色となる。
【0170】
このように、投影スクリーン22における複数箇所の法線ベクトルを算出し、光線ベクトル38との内積を取ることによって、よりもっともらしく雲の陰影を表現することができる。しかしながら、式(6)によれば、雲の陰影を表現することができるものの、様々な色のグラデーションを表現することができない。例えば、朝日や夕日を浴びて金色に輝く部分から、夜空の色を受けて暗く陰る部分までを持つ1つの雲を、立体感を維持し、且つ、グラデーションを付けて表現したい場合がある。しかし、光線ベクトル38と法線ベクトルの内積ωという、1つの値の変化に基づいて、RGBの3つの色を様々に、且つ、もっともらしく変化させることは困難である。
【0171】
そこで、光が当って雲が明るく輝くときの色味(明色IL=RL、GL、BL)と、雲のベースとなる色味(ベース色IB=RB、GB、BB)と、光が当らない影となる部分の色味(影色IS=RS、GS、BS)の、3色の色を予め設定する。そして、内積ωの値に応じて、各色を採用する割合を決定することとする。例えば、明色の割合を決定するための関数FL(ω)と、ベース色の割合を決定するための関数FB(ω)と、影色の割合を決定するための関数FS(ω)とをそれぞれ独立して設定する。即ち、出力する色Iを、
I=IL・FL(ω)+IB・FB(ω)+IS・FS(ω) ・・・(7)
により決定する。
【0172】
また、各関数F(ω)を次のように設定する。
L(ω) =cos2{(ω+1)・π/2} (−1≦ω≦0)
=0 (0<ω)
B(ω) =sin2{(ω+1)・π/2} (−1≦ω≦1)
S(ω) =0 (ω<0)
=cos2{(ω+1)・π/2} (0≦ω≦1) ・・・(8)
図18(a)〜(c)は、各関数のグラフを示す図である。それぞれのグラフにおいて、横軸はωの値を、縦軸は関数F(ω)の値を示す。なお、式(8)からわかるように、各関数の和は、常に1となる。従って、不自然な色味を出力することなく、合理的に各色を合成することができる。また、ω=−1,1の場合を除き、ベース色が常に合成されることとなる。従って、例えば、ベース色として白を適用した場合、白を基調とし、滑らかに色の変化する雲を表現することができる。
【0173】
以上のように、小雲テクスチャ102のαテクスチャをマッピングした小雲ビルボード24を、中雲座標系に3次元的に配置し、ワールド座標系における仮想カメラ100の向きに応じて回転させることとしたため、中雲を観察する仮想カメラ100の位置に対応して形状が変化する立体的な中雲を表現することができる。そのため、例えば、プレーヤの操縦する飛行機(視点)の高低の変更に伴い中雲を見る角度が変化しても、中雲の形状に矛盾が生じず、見ていて違和感のない画像を生成することができる。
【0174】
また、中雲テクスチャを生成する際には、全体に気流がかかった雲である小雲テクスチャ102を中心付近に集中させて中雲テクスチャを生成するので、中心が濃く(透明度が低く)、周辺に近づくにつれ薄く(透明度が高く)なる中雲テクスチャが作成される。そのため、結果として、中雲テクスチャの縁のみに気流が表現され、よりリアルな雲を表現することができる。
【0175】
また、中雲を構成する雲パーツ1つ1つに対して色を決定せずに、中雲全体のα値について描画した後、色を決定することとしたため、より迅速に中雲テクスチャを生成することができる。更に、予め3種類の色を設定し、各色を採用する割合を、中雲を描画するためのスクリーン(実際には、対応するオブジェクト上の中雲ビルボード)と光源との位置関係に応じて決定することとしたため、日の光によって色を微妙に変化させる雲を表現することが可能となった。
【0176】
なお、上記説明では、生成する中雲の数を4個、1つの中雲を構成する小雲ビルボードの数を32個として説明したが、これらの数に限定する必要はなく、1つの小雲ビルボードの規模に応じて様々に変更してもよいことは勿論である。また、色の濃淡や予め設定した色の合成割合を決定する式は、式(6)や式(8)に限定する必要はなく、雲の色として違和感の生じない色合いを算出するものであれば、いかなる式であってもかまわない。また、上記説明では、3色を合成することとして説明したが、2色や4色、・・・、n色であってもかまわない。この場合には、例えば、式(8)内の(ω+1)に乗算する値を、合成する色の数に合わせて変更することにより可能となる。
【0177】
あるいは、図19に示すような色決定テーブル290を予め生成し、このテーブルに基づいて色を決定することとしてもよい。図19によれば、色決定テーブル290には、法線ベクトルと光線ベクトル38との内積ωの範囲と、各内積ωの範囲と対応付けて色情報(RGBの各値)が記憶される。ゲーム実行中においては、投影スクリーン22の各特定点の法線ベクトルと光線ベクトル38との内積ωを計算し、色決定テーブル290を読み出して該当する色情報を判定し、中雲バッファ内の該当するテクセルのRGBプレーンに与える。ただし、このような色決定テーブル290を採用した場合には、予め記憶すべき情報が増えるとともに、雲の微妙な色の変化を表現することができない。従って、上記説明のように、予め特定した色を合成する割合をその都度計算する方法が最も好ましいものといえる。
【0178】
また、4つの中雲のテクスチャを生成することとして説明したが、これに限定する必要はなく、例えば、オブジェクト空間に各小雲ビルボードを実際に配置し、オブジェクト空間における仮想カメラ100に基づいて描画することとしてもよい。あるいは、オブジェクト空間全体に渡る雲を、1つの中雲のテクスチャによって表現することとしてもよい。
【0179】
しかし、このように、仮想カメラ100や雲視点の位置に基づいて描画すべき小雲ビルボードの数が多ければ多いほど、各小雲ビルボードの座標や向きを算出する処理や、描画処理等の負担が増大し、ゲーム画像の生成処理全体を遅延化させるといった問題が生じる。なお、この問題は、仮想カメラ100に基づいて描画する際の中雲や小雲ビルボードの大きさを調節することにより解決されるように思われる。例えば、オブジェクト空間に直接小雲ビルボードを配置する場合であっても、小雲ビルボードの大きさを比較的大きく設定すれば、描画等の処理を軽減することができる。しかし、飛行機ゲームのような雲を間近で観察し得るタイプのゲームにあっては、1種類のαテクスチャをマッピングしただけの比較的大きな小雲ビルボードをオブジェクト空間に直接配置した場合には、仮想カメラ位置の変化に伴う雲の微妙な変化を表現することができない。また、中雲を構成する各小雲ビルボードを大きくし、その数を少なくした場合、仮想カメラ100の位置の変化に伴う中雲の形状の変化が乏しくなり、立体感に欠けたものとなる。
【0180】
そのため、本実施の形態においては、以下に述べる雲海生成原理に基づいて、オブジェクト空間に中雲ビルボードを配置することにより、仮想カメラ100の位置の変化に伴う雲の変化を表現するとともに、立体感を有する雲を表現する。
【0181】
1−(3)雲海生成原理
次に、中雲生成原理により生成された中雲テクスチャをマッピングしたビルボード(以下、中雲ビルボードという。)を複数オブジェクト空間に設定することにより雲海を生成する原理を説明する。
【0182】
図20に示すような、仮想カメラ100(視線方向が図中矢印で示す方向で、視野角φ)から見た画像を生成する際には、図20に示した雲設定領域R内のみに、中雲ビルボードを配置する。雲設定領域R外部の雲については、仮想カメラ100の視界に入らず、描画されないため、配置しない。
【0183】
また、中雲ビルボードは、上述したように、常に仮想カメラ100の視線方向に垂直に対向し、配置位置(一点)と、大きさを設定することによりオブジェクト空間に配置される。即ち、仮想カメラ100が移動したり、視線方向を変えても雲が平面であることは露見しない。
【0184】
図20に示した雲設定領域Rについてより具体的に説明する。雲設定領域Rは、図21に示すように、オブジェクト空間(ワールド座標系)において設定された仮想カメラ100の位置から視線方向(図中矢印表示)に距離dの位置に中心点FPW(FPW.x,FPW.y,FPW.z)を有する一辺長2Lの立方体内の領域である。即ち、雲設定領域Rの位置は、仮想カメラ100の位置や視線方向に応じて変化する。但し、雲設定領域Rの各辺の方向は、ワールド座標系のXw軸、Yw軸、Zw軸の方向を向くように設定される。
【0185】
この雲設定領域Rに中雲の配置位置(中雲ビルボードの配置位置座標)を設定する際には、雲設定領域Rの中心点FPWを原点とするローカル座標系(xL,yL,zL)(以下、雲海座標系という。)における雲設定領域R内の位置座標を決定する。即ち、雲設定領域Rの中心点FPWに相対する位置として中雲ビルボードの配置位置を決定する。ここで、雲海座標系における雲設定領域Rは、図22に示すように中心点を点FPL(0,0,0)とし、一辺長2Lの立方体となる。
【0186】
雲海座標系に配置される中雲ビルボードの座標CL[i](CL[i].x,CL[i].y,CL[i].z)は、
CL[i].x={Ct[i].x+{2L−(FPW.x mod2L)}}mod 2L−L ・・・(9)
CL[i].z={Ct[i].z+{2L−(FPW.z mod2L)}}mod 2L−L ・・・(10)
CL[i].y=(Alt−FPW.y)+Ct[i].y×Altw ・・・(11)
で設定される。ここで、i=1、2、・・・、nであり、nは設定される雲(中雲ビルボード)の数である。また、「mod」とは、剰余を示す演算子である。Altは、雲層のy座標の中心であり、例えば、地面のy座標が"0"である場合には、地面からの雲層の中心までの高さを示すこととなる。Altwは、雲層の中心から雲層の端までの最大幅である。
【0187】
また、初期設定として初期分布Ct[i](Ct[i].x,Ct[i].y,Ct[i].z)(i=1,2,・・・,n)が設定されている。初期分布とは、雲海における中雲ビルボードの配置位置の分布状態を決めるために初めに(例えば、ゲームの開始時等に)、一度決定されるものであり、その後ゲーム実行中には、この初期分布は変更されない。そして、Ct[i].x=rand(randは0〜(2L−1)の乱数)、Ct[i].y=rand(randは−1〜1の乱数)、Ct[i].z=rand(randは0〜(2L−1)の乱数)として初めに決定されるものである。
【0188】
式(9)によれば、{Ct[i].x+{2L−(FPW.x mod2L)}}mod2Lのとり得る値は"0"〜"2L−1"の範囲となるため、雲海座標系における中雲の配置位置のx座標CL[i].xのとり得る値は、"−L"〜"L−1"の範囲となる。また、{2L−(FPW.x mod2L)}の値は、例えば、FPW.xの値が増加する場合には、"2L"〜"1"の範囲で減少し、"1"になった後、更にFPW.xの値が増加すると"2L"に戻る。
【0189】
そのため、例えば、雲設定領域Rの中心点のx座標FPW.xの値が増加していく場合には、中雲の配置位置のx座標CL[i].xの値は"L−1"から"−L"の範囲でFPW.xの値が増加した分だけ減少し、"−L"になった後は、また"L−1"に戻り、"L−1"から"−L"の値が繰り返されることとなる。即ち、雲設定領域Rの中心点のx座標FPW.xが増加した分だけ、雲海座標系における中雲ビルボードの配置位置のx座標CL[i].xは減少し、雲設定領域Rの外部になると、逆側に現れることになり、必ず雲設定領域R内"−L"〜"L−1"の値となる。雲海座標系における中雲ビルボードの配置位置のz座標CL[i].zについても式(10)により同様である。
【0190】
図23(a)は、ワールド座標系において、Zw軸方向から見た雲設定領域Rを示す図である。同図に示すように、例えば、雲設定領域Rのワールド座標系における中心位置がFPW1(FPW1.x,FPW1.y,FPW1.z)とすると、雲海座標系における中雲ビルボードの配置位置CL[i]のx座標CL[i].xは、式(9)に従って、
CL[i].x={Ct[i].x+{2L−(FPW1.x mod2L)}}mod 2L−L
で設定される。
【0191】
ここで、例えば、図23(a)に示すように、Ct[1].x=110、FPW1.x=100、L=100であったとすると、中雲ビルボードの配置位置CL[1]の雲海座標系におけるx座標の値は、
CL[1].x={110+{200−(100 mod200)}}mod 200−100=−90
となる(図23(b))。図23(b)は、FPL1(=FPW1)を原点とした雲海座標系において、zL軸方向から見た雲設定領域Rの一例を示す図である。
【0192】
そして、仮想カメラ100の位置が図23(a)に示すようにワールド座標系のx軸方向に(図中点V1から点V2へ)移動し(視線方向は変化しない)、それに伴い、ワールド座標系における雲設定領域Rの中心点FPWの位置も点FPW1から点FPW2(FPW2.x,FPW2.y,FPW2.z)(FPW2.y=FPW1.y、FPW2.z=FPW1.z)に移動した場合、例えば、図23(a)に示すようにFPW2.x=190であるとすると、中雲ビルボードの配置位置CL[1]の雲海座標系におけるx座標の値は、
CL[1].x={110+{200−(190 mod200)}}mod 200−100=+20
となる(図23(c))。図23(c)は、FPL2(=FPW2)を原点とした雲海座標系において、zL軸方向から見た雲設定領域Rの一例を示す図である。
【0193】
即ち、図23(a)に示すように、ワールド座標系において、仮想カメラ100の変更による雲設定領域Rの移動に伴い、雲設定領域Rから外れた領域RP1が、新たに雲設定領域Rに含まれる領域RP2として現れることになる。即ち、一の分布パターンを繰り返して使用することができる。
【0194】
また、例えば、Ct[2].x=50であるとすると、雲設定領域Rの中心点FPWがFPW1である場合には、中雲ビルボードの配置位置CL[2]の雲海座標系におけるx座標CL[2].xは、
CL[2].x={50+{200−(100 mod200)}}mod 200−100=+50
となる。この場合、ワールド座標系におけるCL[2]のx座標は、中心点FPW1のx座標FPW1.x("100")から"+50"の座標"150"である。
【0195】
雲設定領域Rの中心点FPWが点FPW1から点FPW2に移動すると、中雲ビルボードの配置位置CL[2]の雲海座標系におけるx座標CL[2].xは、
CL[2].x={50+{200−(190 mod200)}}mod 200−100=−40
となる。この場合、ワールド座標系における中雲ビルボードの配置位置CL[2]のx座標は、中心点FPW2のx座標FPW2.x("190")から"−40"の座標"150"である。
【0196】
即ち、移動前(中心点を点FPW1とする)雲設定領域Rと、移動後(中心点を点FPW2とする)雲設定領域Rとの重なる領域PR3内の中雲ビルボードの配置位置は、ワールド座標系において同じ位置に設定されることとなる。
【0197】
雲設定領域Rの中心点FPWがZw軸方向に移動した場合は、上述したXw軸方向の移動と同様である。
【0198】
図24は、雲設定領域Rの中心点FPWがYw軸方向に移動する場合について説明する図である。図24(a)に示すように、雲設定領域Rの中心点FPWが点FPW1(FPW1.y=300)、Alt=240、Altw=20であり、初期分布においてCt[1].y=0であるとすると、中雲ビルボードの配置位置CL[1]の雲海座標系におけるy座標CL[1].yは、
CL[1].y=(240−300)+0×20="−60"
となり、図24(b)に示すような位置となる。図24(b)は、FPL1(=FPW1)を原点とした雲海座標系において、zL軸方向から見た雲設定領域Rの一例を示す図である。
【0199】
また、雲設定領域Rの中心点FPWが、例えば、図24(a)に示すように点FPW1(FPW1.y=300)から点FPW3(FPW3.y=350)に移動した場合、中雲ビルボードの配置位置CL[1]のy座標CL[1].yは、CL[1].y=−60から、CL[1].y=(240−350)+0×20=−110、に変更される(図24(c))。図24(c)は、FPL3(=FPW3)を原点とした雲海座標系において、zL軸方向から見た雲設定領域Rの一例を示す図である。
【0200】
仮想カメラ100の変更に伴い雲設定領域Rの位置が変わっても、ワールド座標系における雲の高さ(雲層の高さ)が変わることはないため、Xw軸方向に雲設定領域Rが移動した場合のように、雲設定領域Rの外部になった領域が新たに雲設定領域Rに含まれる領域として現れるといったことはなく、図24(c)に示すように雲設定領域R外部の座標位置に中雲ビルボードの配置位置が設定される。勿論、配置位置が雲設定領域R外部になった場合には、雲を配置しない。
【0201】
このように、式(9)〜(11)に従ってn個の中雲ビルボードの配置位置CL[i]を設定し、雲設定領域R内の中心点FPLがワールド座標系におけるFPWになるように、雲設定領域Rをワールド座標系に配置することにより、ワールド座標系における雲設定領域R内の雲(中雲ビルボード)の配置位置を設定することができる。そして、これらの配置位置CL[i]に大きさW[i]=1.0+rand(randは、0.0〜1.0の範囲の乱数)でそれぞれ中雲ビルボードを配置する。ここで、大きさW[i]は、例えば、中雲ビルボードの一辺の長さを示すものであっても良いし、また、例えば、中雲生成原理に基づいて生成される中雲テクスチャの大きさを"1"とした場合に、その中雲テクスチャに対する大きさを示すものであっても良い。
【0202】
ここで、上記式(9)〜(11)に基づいて、雲設定領域R内に設定するのは、中雲ビルボードの「配置位置」のみである。即ち、上下左右方向については、考慮に入れていない。これは、上述したように中雲を構成する小雲ビルボードが既に上下左右方向を考慮して生成されており、中雲テクスチャも同様に上下左右方向を考慮して生成されている(即ち、仮想カメラ100のロール角Zに応じた中雲テクスチャが生成される。)。そのため、雲海生成時には、雲設定領域R内に「配置位置」のみを決定すれば良い。
【0203】
従って、オブジェクト空間全体に雲を配置することなく、雲設定領域R内にのみ雲を設定すれば良いため、雲の設定に係る処理を軽減することが可能となる。また、雲を中雲ビルボードで表現するため、従来のように、仮想カメラ100の方向によっては、厚みの無さが露見するといったことがなく、例えば、雲層を水平方向からみた場合であっても、図25に示すような立体感のある雲の画像を生成することができる。図25は、本原理を適用した雲を含む表示画面の一例を示す図である。
【0204】
しかしながら、図26に示すような位置、視線方向の仮想カメラ100から見た場合には、雲設定領域Rの境界が視界内に入る。このため、図26に示すように仮想カメラ100の移動に伴い雲設定領域Rを矢印方向に移動させると、仮想カメラ100が少しx軸方向(図中右方向)に移動した時点で、雲設定領域Rの左端境界付近に設定された配置位置CL[m]が消滅して雲設定領域Rの右端境界付近に変わることとなる。
【0205】
従って、仮想カメラ100から見た場合には、視界内の配置位置CL[m]に配置された雲が視界の端から消えるのではなく、視界の中で消滅することになってしまう。また、同様に仮想カメラ100の移動に伴い、視界の中で急に雲が現れることもあり、違和感を生じる。そのため、視界内の雲設定領域Rの境界付近の雲をより透明にするため、
α=1.0−|(Sz[i]−d)|/L ・・・(12)
に基づいて、不透明度を示すパラメータであるα値(0≦α≦1)を設定する。
【0206】
ここで、Sz[i]は、仮想カメラ100から中雲ビルボードの配置位置CL[i]までの距離である。また、α値は"0"で完全に透明となり、α値が"1"の場合に不透明となる。即ち、仮想カメラ100から中雲ビルボードの配置位置までの距離Sz[i]と仮想カメラ100から雲設定領域Rの中心点FPWまでの距離dとの差が小さい位置に配置位置を持つ雲ほどαの値が大きくなり(不透明となり)、仮想カメラ100から中雲ビルボードの配置位置までの距離Sz[i]と、仮想カメラ100から雲設定領域Rの中心点FPWまでの距離dとの差が大きい位置に配置位置を持つ中雲ビルボードほどα値が小さくなる(透明になる)。
【0207】
式(12)によれば、雲設定領域Rの境界付近の配置位置CL[m]と仮想カメラ100との距離Sz[i]は、距離dとの差が大きいため、この配置位置CL[m]に配置される中雲ビルボードは透明度の高いものとなる。従って、急に消えてもわかりにくい。同様に、視界の中の雲設定領域Rの境界に現れる場合には、透明度の高い雲が現れることとなる。
【0208】
なお、仮想カメラ100から中雲ビルボードの配置位置CL[i]までの距離Sz[i]と、仮想カメラ100から雲設定領域Rの中心点FPWまでの距離dとの差に応じてα値を変更するのではなく、例えば、図27(a)に示すように、配置位置CL[i]が雲設定領域Rの中心点FPWから離れる雲ほど透明度が高くなる(αの値が小さくなる)こととし、中心点FPWからの距離がLで(α=0)になることとしても良い。その場合には、図27(a)に示した半径Lの球P1の内側においては、中心点FPWから離れるほど不透明度が低くなり(透明になり)、球P1の外の領域に配置位置を持つ雲は完全に透明となる(見えない)。
【0209】
また、例えば、図27(b)に示すように、仮想カメラ100からの中雲ビルボードの配置位置までの距離Sz[i]が所与の範囲となる領域を不透明(α=1.0)の領域とし、その領域から離れるほど徐々にα値を低くしていく(透明にしていく)ようにしても良い。
【0210】
また、例えば、図28に示すような仮想カメラ100の位置、視線方向、視野角の場合には、雲設定領域Rの外部の雲も視界に入る。そのため、更に遠景雲設定領域Rfを設定し、この遠景雲設定領域Rfに、平面状の雲オブジェクトを水平に配置する。この遠景雲設定領域Rfは、例えば、仮想カメラ100からdf(df>d)の距離に中心点FfPWを有し、一辺長Lf(Lf>L)(遠景雲設定領域Rfは仮想カメラ100から遠くに設定されるため、より広い範囲が視界内に入ることとなるため)の立方体の領域である。
【0211】
この遠景雲設定領域Rfに雲オブジェクトを配置する際には、上述した雲設定領域Rにおいて中雲ビルボードの配置位置を決定する場合と同様の初期分布Ct[i]に基づいて、式(9)〜(11)における"L"を"Lf"とし、"FPW"を"FfPW"として配置位置を決定する。また、雲設定領域Rと同様に、中心点FfPWから離れるほど雲が透明となるようにα値が設定される。そのため、雲設定領域Rと遠景雲設定領域Rfとの境界や重なる部分の雲はα値の低い(透明度の高い(見え難い))ものとなる。そのため、雲設定領域Rと遠景雲設定領域Rfとの境界をわかりにくくし、自然に連なる雲海を表現することができる。
【0212】
図29は、視界内に、遠景雲設定領域Rfと雲設定領域Rとが存在する場合の表示画像の一例を示す図である。このように、遠景雲設定領域Rf内の雲オブジェクトの場合には、仮想カメラ100から遠い位置に配置され、また、仮想カメラ100と遠景雲設定領域Rf内の雲オブジェクトとの間に雲設定領域R内の中雲ビルボードが配置されたりするため、遠景雲設定領域Rf内の雲オブジェクトは、仮想カメラ100の視線方向に垂直に向いていなくても厚みの無さが露見し難い。そのため、遠景雲設定領域Rf内に設定する雲オブジェクトは、仮想カメラ100の位置、視線方向に関わらず水平に配置するだけで良く、ビルボード処理に係る負担を軽減することができる。
【0213】
また、例えば、図30に示すようなオブジェクト空間全体の雲の分布を示す雲分布マップ924に従って、雲のある部分に配置位置を持つ中雲ビルボードのα値に"1"を掛け(設定されているα値をそのまま反映させ)、雲のない部分に配置位置を持つ中雲ビルボードのα値に"0"を掛ける(透明にする)ことにより、雲のない部分に配置される中雲ビルボードを見えなくして、雲がないようにする。
【0214】
即ち、図30に示す雲分布マップ924は、α値の分布を示すマップである。白い(雲がある)部分はα値が"1"に、黒い(雲がない)部分はα値が"0"に設定されている。そして、この雲分布マップ924の位置に応じたα値を中雲ビルボードに設定されているα値に掛け合わせたα値が描画を行なう際の不透明度に反映されることとなる。
【0215】
なお、雲分布マップ924における雲がある部分と雲がない部分との境界付近の部分のα値を、例えば"0.5"に設定しておくこととしても良い。その場合には、例えば、雲の切れ目(雲海の端部など)、即ち雲がある部分と雲がない部分との境界をはっきりさせずにぼかすことができる。
【0216】
2.機能
次に本実施の形態における各機能について説明する。
【0217】
図31は、本実施の形態における機能ブロックの一例を示すブロック図である。同図に示すように、本実施の形態の機能ブロックは、操作部500と、処理部600と、表示部700と、一時記憶部800と、記憶部900とから構成される。
【0218】
操作部500は、ゲームにおけるオブジェクトの操作等を指示入力するためのものである。プレーヤは、図1に示すゲームコントローラ1202、1204等を用いて操作データを入力する。操作部10にて得られた操作データは処理部600に出力される。
【0219】
処理部600は、主に、ゲーム演算部610と画像生成部630とから構成される。ゲーム演算部610は、操作部500から入力される操作データ及び記憶部900から読み出したゲームプログラム910に従って、所与のゲームを実行する処理、仮想カメラ100の位置、視線方向、画角(視野角)等を設定する処理、オブジェクト空間にオブジェクト、光源等を設定する処理等の処理を行なう。
【0220】
また、ゲーム演算部610には、中雲生成部612、初期設定部616、雲海生成部618が含まれる。
【0221】
画像生成部630は、仮想カメラ100から見た画像を生成する処理を行なう。画像生成部630には、小雲描画部632、中雲描画部634、雲海描画部640が含まれる。
【0222】
これら処理部600の機能は、CISC型やRISC型のCPU、DSP、画像生成専用のIC、メモリ、などのハードウェアにより実現される。
【0223】
表示部700は、画像生成部630により生成された画像(即ち、フレームバッファ808に設定された画像)等を表示するものであり、例えば、CRT、LCD、プラズマディスプレイ等によって実現され、図1のディスプレイ1200がこれに該当する。
【0224】
一時記憶部800は、小雲バッファ802、中雲バッファ804、特定点色データ806、フレームバッファ808、描画対象設定データ810が格納される。この一時記憶部800の機能は、RAMにより実現できる。
【0225】
記憶部900は、ゲームプログラム910、気流テクスチャ104、初期データ950、雲分布マップ924、雲層データ926、色データ928、関数データ930を記憶している。この記憶部900の機能は、CD−ROM、ゲームカセット、ICカード、MO、FD、DVD、メモリ、ハードディスクなどのハードウェアにより実現できる。
【0226】
次に図31に示した各機能部の機能について各処理毎に詳細に説明する。
2−(1)小雲生成処理機能
初期設定部616は、初期データ950を設定する処理を行なう。具体的には、ゲーム開始時に、雲パーツデータ952と、2−(2)中雲生成処理機能において小雲ビルボードを分布するための初期データである小雲分布データ210と、2−(3)雲海生成処理機能において中雲ビルボードを分布するための初期データである中雲分布データ956とを設定する。
【0227】
雲パーツデータ952は、上述した雲パーツA用マスク112(図5(b))、雲パーツB用マスク114(図6(b))、を含む雲パーツに係るデータである。この雲パーツデータ952は、ゲーム開始時に初期設定部616により、設定される。なお、予め、記憶部500に初期データ950として記憶されていることとしても良い。
【0228】
画像生成部630の小雲描画部632は、ゲームプログラム910に含まれる小雲生成プログラム912に従って、上述した1−(1)小雲生成原理を実行する処理部であり、仮想カメラ100のピッチ角Xと、初期データ950に含まれる雲パーツデータ952、気流テクスチャ104に基づいて雲パーツA(122)(図5(a))、雲パーツB(124)(図6(a))の各テクセルのα値を設定し、αテクスチャである小雲テクスチャ102を生成し、一時記憶部800内の小雲バッファ802に格納する処理を行う機能部である。
【0229】
2−(2)中雲生成処理機能
中雲生成部612は、中雲作成プログラム914に従って、中雲座標系における雲視点220と投影スクリーン22の配置位置を決定する処理を実行する。即ち、中雲生成部612は、ゲーム演算部610からワールド座標系における仮想カメラ100の視線ベクトルが入力されると、中雲座標系における雲視点220と投影スクリーン22の配置位置を決定する。そして、決定した雲視点220と投影スクリーン22の座標データを画像生成部630の中雲描画部634に出力する。
【0230】
中雲描画部634は、雲視点220と投影スクリーン22の座標データが中雲生成部612から入力されると、中雲座標系における各小雲ビルボードの代表点の座標を雲視点220の視点座標系に変換するための回転行列と、雲視点220に基づいて投影スクリーン22上に投影変換するための透視変換行列とを生成する。そして、初期設定部616によりゲーム開始時に設定され記憶部900に記憶された各中雲の小雲分布データ210(図13)を読み出して、各小雲ビルボードの座標データに対して生成した行列を作用させることによって、各小雲ビルボードを投影スクリーン22上に投影する。
【0231】
また、中雲描画部634には、α値描画部636、色決定部638が含まれる。α値描画部636は、各中雲を構成する32個の小雲ビルボードのα値を描画する処理を実行する。即ち、投影スクリーン22における各小雲ビルボードの各頂点の座標を決定すると、中雲バッファ804上の対応するテクセルを判定し、各頂点によって囲まれた範囲内のテクセルのαプレーンに対して、小雲テクスチャ102のαテクスチャを描画する。
【0232】
色決定部638は、中雲に与える色を決定する処理を実行する。即ち、色決定部638は、投影スクリーン22(実際には、対応するオブジェクト空間上の中雲ビルボード)上の9つの特定点に与える色を決定すると共に、中雲バッファ804の全てのテクセルに対して与える色を各特定点の色に基づいて決定する処理を行う。具体的には、色決定部638は、図32に示すような、特定点色データ806を生成する。特定点色データ806とは、各特定点と対応付けて色情報を記憶するためのものであり、一時記憶部800内に格納される。
【0233】
即ち、色決定部638は、投影スクリーン22(実際には、対応するオブジェクト空間上の中雲ビルボード)における9つの特定点の法線ベクトルを算出すると、光線ベクトルとの内積ωを計算する。そして、算出した内積ωの値を関数データ930に格納されている式(8)に代入して色データ928に格納された明色、ベース色、影色の3色の輝度を決定し、決定した輝度を関数データ930に格納されている式(7)に代入することにより、該当する特定点の色を決定する。そして、決定した各特定点の色情報を特定点色データ806として一時記憶部800に記憶する。また、α値描画部636が32個の小雲ビルボードのα値を描画終了後、生成した特定点色データ806に基づいて、中雲バッファ804内の各テクセルのRGBプレーンに与える色情報を決定する。なお、各テクセルに与える色を決定する処理は、各特定点間の色を線形補間することにより決定する。
【0234】
2−(3)雲海生成処理機能
雲海生成部618は、雲海作成プログラム916に基づいて雲海をオブジェクト空間に生成する処理を行なうものであり、雲設定領域決定部620と、中雲配置部614と、不透明度設定部622と、描画対象設定部624とを含む。雲設定領域決定部620は、ゲーム演算部210により設定された仮想カメラ100の位置、視線方向に基づいて、仮想カメラ100の位置から視線方向に距離dの位置を決定し、その位置を中心点FPWとする一辺長2Lの立方体を雲設定領域Rとして決定する。また、雲設定領域決定部620は、仮想カメラ100の位置から視線方向に距離dfの位置を決定し、その位置を中心点FfPWとする一辺長2Lfの立方体を遠景雲設定領域Rfとして決定する。
【0235】
図33は、中雲分布データ956のデータ構成の一例を示す図である。同図に示すように、雲設定領域R内に設定する雲の数n分の"i"に対する初期分布Ct[i].x、Ct[i].y、Ct[i].zの値と、中雲ビルボードの大きさW[i]と、中雲生成処理機能により生成される4種類の中雲ビルボードに付された中雲ビルボード種類番号b1〜b4の内のいずれかがビルボード種類番号として設定されている。
【0236】
Ct[i].x、Ct[i].zは、それぞれ"0"から"2L−1"までの乱数が設定され、Ct[i].yは、"−1"から"+1"までの乱数が設定されている。例えば、図33においては、"i"が"1"に対するCt[i].x(即ちCt[1].x)は"110"、Ct[i].y(即ちCt[1].y)は"0"、Ct[i].z(即ちCt[1].z)は"124"である。また、"i"が"1"に対する大きさW[i](即ちW[1])は、"1.1"に設定されており、ビルボード種類番号として"b1"が設定されている。即ち、後述する中雲配置部614がi=1に対して設定する配置位置CL[1]には中雲ビルボード種類番号b1の中雲ビルボードが大きさ"1.1"で配置されることとなる。
【0237】
図34は、雲層データ926のデータ構成の一例を示す図である。同図に示すように、雲層データ926は、オブジェクト空間に設定される雲層のそれぞれの層に対する高さ(ワールド座標系における雲層の中心のy座標の値)Alt、幅Altwが設定されている。本実施の形態においては、層1、層2の2つの雲層をオブジェクト空間に設定することとしているため、図34に示す雲層データ926においては、層1、層2に対する高さAlt、幅Altwが設定されているが、オブジェクト空間に設定される雲層の数は、1つでも良く、また3つ以上であっても良い。その場合には、雲層データ926には、オブジェクト空間に設定される雲層それぞれに対する高さAlt、幅Altwが設定される。
【0238】
中雲配置部614は、記憶部900に記憶された雲層データ926、初期設定部616により設定された中雲分布データ956に基づいて、上述した、式(9)、(10)、(11)に従って雲設定領域Rの中心点FPWを原点とする雲海座標系における雲の配置位置CL[i](i=1〜n)の座標を設定する。また、遠景雲設定領域Rfの中心点FfPWを原点とする遠景雲海座標系における雲の配置位置CL[i](i=1〜n)の座標も同様に設定する。
【0239】
また、中雲配置部614は、設定した(雲海座標系の)配置位置CL[i]の値に基づいて、オブジェクト空間(ワールド座標系)に中雲ビルボードを配置する。即ち、雲設定領域Rの中心点をワールド座標系の点FPWとした場合の座標位置に、配置位置CL[i]を変換する。そして、初期分布データに設定されているビルボードの種類に従った中雲ビルボードを大きさW[i]で、視点方向に正対させて配置する。また、設定した配置位置CL[i]が雲設定領域R外であった場合には、その配置位置には、中雲ビルボードを配置しない。
【0240】
また、中雲配置部614は、遠景雲設定領域Rfに対して設定した配置位置CL[i]の値に基づいて、雲オブジェクトをワールド座標系において水平に配置する。雲オブジェクトとしては、例えば、中雲ビルボードのビルボード処理を省いたもの、即ち、ビルボードではなく、通常の(ビルボード処理を行なわない)平面状の1枚のポリゴンに中雲生成処理において生成された中雲テクスチャをマッピングしたものである。
【0241】
このように、中雲配置部614は、中雲ビルボードを配置するが、配置する中雲ビルボードの上下左右の向きは固定的で良い。何故ならば、中雲生成部612及び中雲描画部634により、仮想カメラ100のロール角Zに応じた中雲テクスチャが生成されるため、中雲配置部614はその生成された中雲テクスチャの配置位置のみを設定して配置すれば良い。
【0242】
不透明度設定部622は、中雲配置部614が設定した中雲ビルボードの配置位置と仮想カメラ100との距離Sz[i]に基づいて、上述した式(12)に従って、中雲ビルボードの配置位置それぞれに対するα値を設定し、描画対象設定データ810に格納する。
【0243】
更に、不透明度設定部622は、記憶部900に記憶された雲分布マップ924に基づいて、中雲ビルボードの配置位置(中雲配置部614によりワールド座標系に変換された配置位置)に対応する雲分布マップ924(図30)に設定されているα値を描画対象設定データ810に設定されているα値に掛け合わせ、描画対象設定データ810のα値を更新する。
【0244】
図35は、描画対象設定データ810のデータ構成の一例を示す図である。ここでは、説明を簡明にするため、雲設定領域Rに配置する雲に対する描画対象設定データ932のみを図示するが、描画対象設定データ810としては、同様に、遠景雲設定領域Rfに配置される雲に対する描画対象設定データ810も設定される。
【0245】
図35に示すように、中雲配置部614により決定された配置位置CL[i]に対してα値及び描画フラグが設定されている。α値は、不透明度設定部622が設定したα値が格納される。描画フラグは、各フレームに対する処理開始時に"0"にリセットされ、描画対象となるもののみ後述する描画対象設定部624により"1"に設定される。また、この描画対象設定データ810の配置位置CL[i]には、雲設定領域Rまたは遠景雲設定領域Rfの内部に存在する配置位置のみが設定されている。即ち、中雲配置部614により配置される中雲ビルボードまたは雲オブジェクトに対してのみ、α値及び描画フラグが設定されることとなる。
【0246】
雲分布マップ924は、図30に示すようなオブジェクト空間全体の雲の分布を示すマップであり、記憶部900は、雲層それぞれに対する雲分布マップ924を格納している。また、この雲分布マップ924は、雲の不透明度αの分布を示すものでもあり、雲のある(図中白い)部分はα値が"1"に設定されており、雲のない(図中黒い)部分は、α値が"0"に設定されている。
【0247】
描画対象設定部624は、描画対象設定データ810に不透明度設定部622が設定したα値が"0"でない中雲ビルボードを描画対象として設定する。即ち、透明な中雲ビルボードは描画されないこととなる。具体的には、描画対象設定データ810において、α値が"0"でない配置位置CL[i]に対する描画フラグを"1"に設定する。即ち、画像生成部は、オブジェクト空間に配置された中雲ビルボードの内、描画フラグが"1"に設定された配置位置CL[i]に配置された中雲ビルボードのみを描画する。
【0248】
雲海描画部640は、ワールド座標系に配置された中雲ビルボード及び雲オブジェクトをスクリーン座標系に座標変換し、不透明度設定部622により設定された描画対象設定データ810に設定された不透明度α及び中雲バッファ804のαプレーンに設定されているα値、中雲バッファ804のRGBプレーンに設定された輝度(色)、等に基づいて、色情報等を決定して画像を生成する、(即ちフレームバッファ808の各画素の値を設定する)。その際に、描画対象設定データ810において描画フラグが"1"に設定されている配置位置CL[i]に配置される中雲ビルボードと雲オブジェクトに対してのみ処理を行なう。
【0249】
3.動作
次に本実施の形態における雲生成処理の動作について説明する。図36は、雲生成処理の動作の一例を示すフローチャートである。
【0250】
まず、初期設定部616がゲーム開始時に初期データ950を設定する初期設定処理を実行する(ステップS0)。そして、小雲描画部632がステップS0において設定された初期データ950に基づいて小雲生成処理を行ない、小雲テクスチャ102を生成する(ステップS1)。
【0251】
中雲生成部612及び中雲描画部634はステップS0において設定された初期データ950及びステップS1において生成された小雲テクスチャ102に基づいて中雲生成処理を行い、中雲テクスチャを生成する(ステップS2)。そして、雲海生成部618及び雲海描画部640は、ステップS0において設定された初期データ950及びステップS2において生成された中雲テクスチャに基づいて雲海生成処理を行ない、雲海を含む1フレーム分の画像を生成する(ステップS3)。そして、ステップS1に戻り、ステップS1〜S3の処理を毎フレーム行ない、ゲーム画像(動画)を生成することとなる。
【0252】
図37は、初期設定処理(図36;ステップS0)の動作の一例を示すフローチャートである。
【0253】
まず、初期設定部616は、初期データ950として雲パーツデータ952を生成し、雲の形状を決定する(ステップS0−1)。そして、初期設定部616は、中雲生成処理において、小雲を配置する際の分布データである小雲分布データ210を生成する。(ステップS0−2)。そして、雲海生成処理において中雲を配置する際の分布データとなる中雲分布データ956を生成して(ステップS0−3)、処理を終了する。
【0254】
図38は、本実施の形態における小雲生成処理(図36;ステップS1)の動作について説明するフローチャートである。
【0255】
図38において、まず、小雲描画部632は、小雲テクスチャ102のCα[n,m]をクリアする("0"に戻す)とともに、式(1)を用いて雲パーツA(122),B(124)に雲パーツデータ952に設定されている雲パーツA用マスク112と雲パーツB用マスク114のビットパターンの値を加算して、雲パーツA(122)、Bのα値を初期状態に戻す(ステップS1−1)。
【0256】
次に、小雲描画部632は、現時点の仮想カメラのピッチ角Xを取得すると(ステップS1−2)、雲パーツA(122)または雲パーツB(124)を特定して以下の処理を行う(以下雲パーツA(122)を特定したこととする。)。即ち、特定した雲パーツA(122)を構成するテクセル[n,m]について、α値が"0"であるか否かを判別する(ステップS1−3)。α値が"0"でなければ(ステップS1−3:YES)、気流テクスチャ104の対応するテクセルのα[n,m]と上記取得したピッチ角Xとを式(2)に代入することにより、αA[n,m]の値を求める(ステップS1−4)。
【0257】
そして、この求めたαA[n,m]の値を、小雲テクスチャ102の対応するテクセル[n,m]のα値に加算する(ステップS4)。この加算の結果、小雲テクスチャ102のα値が"1"を超えた場合には、そのテクセルのα値は"1"とする。
【0258】
また、上記雲パーツA(122)のテクセル[n,m]のα値が"0"である場合には(ステップS1−3:NO)、ステップS1−4およびステップS1−5の処理をスキップして、ステップS1−6に移行する。
【0259】
このように、小雲描画部632は、雲パーツA(122)を構成する全てのテクセルについて、上記ステップS1−3〜S1−5の処理を実行して、小雲テクスチャ102の対応するテクセルの不透明度αを決定すると(ステップS1−6:YES)、続いて、雲パーツB(124)についても、同様の処理(ステップS1−3〜S1−6)を行う。
【0260】
そして、雲パーツA(122)及びB(124)について、上記ステップS1−3〜S1−6の処理を実行したことを確認すると(ステップS1−7:YES)、小雲描画部632は、本処理を終了する。
【0261】
以上の処理により、雲パーツA(122),B(124)、及び気流テクスチャ104を合成し、小雲テクスチャ102が生成されることとなる。
【0262】
尚、気流テクスチャ104は、上述した通りアニメーションであるため、時間の経過に応じて、気流テクスチャ104を構成する各テクセルの不透明度の値α[n,m]が変化する。このため、小雲テクスチャ102には気流の様子が表現されることとなる。
【0263】
図39は、中雲生成処理(図36;ステップS2)の動作の一例を示すフローチャートである。
【0264】
中雲生成部612は、ワールド座標系における仮想カメラ100の視線ベクトルに基づいて、中雲座標系における雲視点220と投影スクリーン22の配置位置を決定する(ステップS2−1)。中雲描画部634は、中雲座標系に配置された投影スクリーン22(実際には、対応するオブジェクト空間上の中雲ビルボード)における9つの特定点の法線ベクトルを算出し、各特定点の色を決定して、特定点色データ806を生成する(ステップS2−2)。また、中雲描画部634は、中雲座標系における雲視点220の座標に基づいて、ローカルマトリクスを生成する(ステップS2−3)。即ち、各小雲ビルボードを雲視点220の視点座標系に変換するための回転行列と、雲視点220と投影スクリーン22との距離に基づく透視変換行列を生成する。
【0265】
そして、中雲描画部634は、初期設定処理(図37)により設定された小雲分布データ210内に記憶された128(32×4)個の小雲ビルボードのコードの中から1つを選択し(ステップS2−4)、ステップS2−3で生成した行列を作用することによって、投影スクリーン22上に投影変換する。そして、α値描画部636が当該小雲ビルボードのα値を中雲バッファ804上のαプレーンに描画する(ステップS2−5)。中雲描画部634は、当該中雲バッファ804の描画処理が終了すると、32個の小雲ビルボードについて処理を実行したか否かを判別する(ステップS2−6)。終了していない場合には、ステップS2−4に戻り、次の小雲ビルボードのコードを選択してα値を描画する(ステップS2−4〜S2−5)。
【0266】
一方、ステップS2−6において、32個の小雲ビルボードの処理が終了したものと判別した場合には、色決定部638が、ステップS2−2において生成された特定点色データ806に基づいて、中雲バッファ804のRGBプレーンに色を描画する処理を実行する(ステップS2−7)。中雲バッファ804の全てのテクセルについて色を与える処理が終了した後、中雲描画部634は、4つの中雲について処理が終了したかを判別し(ステップS2−8)、終了していない場合には、ステップS2−4に移行して、次の中雲の描画処理を実行する。ステップS2−8において、4つの中雲について処理が終了した場合には、本処理を終了する。
【0267】
次に、雲海生成処理(図36;ステップS3)の動作について説明する。図40は、本実施の形態における雲海生成処理の動作の一例を示すフローチャートである。
【0268】
まず、雲設定領域決定部620が仮想カメラ100の位置、視線方向に基づいて雲設定領域Rを設定する(ステップS3−1)。次いで、雲海描画部640が仮想カメラ100の位置、視線方向に基づいて、ワールド座標系からスクリーン座標系への座標変換のためのマトリクスを生成しておく(ステップS3−2)。
【0269】
そして、中雲配置部614がi=1について式(9)〜(11)に従って、雲層データ926、中雲分布データ956に基づいて雲設定領域Rの中心点を原点とした雲海座標系における座標として中雲ビルボードの配置位置CL[i]を設定し(ステップS3−3,S3−4)、その配置位置CL[i]に対応する、ワールド座標系における配置位置にサイズW[i]の中雲ビルボードを配置する(ステップS3−5)。そして、配置された中雲ビルボードをステップS3−2において生成されたマトリクスに従って、雲海描画部640がスクリーン座標に座標変換する(ステップS3−6)。
【0270】
また、不透明度設定部622が式(12)に従って、仮想カメラ100から配置位置までの距離Sz[i]に応じた中雲ビルボードのα値を設定し(ステップS3−7)、雲分布マップ924に従って、更に中雲ビルボードのα値を設定する(ステップS3−8)。そして、描画対象設定部624が中雲ビルボードが透明(α=0)か否かを判別し(ステップS3−9)、透明である場合には、描画対象設定データ810の描画フラグを"0"のままにしてステップS3−11に移行する。
【0271】
透明でない場合には、描画対象として設定し、即ち、ステップS3−5において設定された配置位置CL[i]に対する描画フラグを"1"に設定し(ステップS3−10)、ステップS3−11に移行する。
【0272】
ステップS3−11において、中雲配置部614は、i≧nか否かを判別する。"i"がnより小さい場合には、"i"の値を"i+1"に更新して(ステップS3−12)、ステップS3−4に戻り、以降ステップS3−11までの処理を繰り返す。"i"がn以上になったと判別した場合には、雲層データ926に設定されている全ての雲層に対して中雲ビルボードの配置位置の設定を行なったか否かを判別し(ステップS3−13)、行なっていない雲層がある場合には、ステップS3−3に戻り、行なっていない雲層に対して、ステップS3−3〜S3−13までの処理を繰り返す。
【0273】
そして、オブジェクト空間に設定されている全ての雲層に対して処理が終了した場合には、遠景雲設定領域Rfに対してもステップS3−2〜S3−14と同様の処理を行なう。即ち、雲設定領域Rを設定し、配置する雲オブジェクト数分、雲オブジェクトの配置位置を設定して配置し、配置された雲オブジェクトをスクリーン座標系に変換し、不透明度αを設定し、透明でないもののみを描画対象とする処理を繰り返し、更に、オブジェクト空間に設定されている全ての雲層に対して処理を行なう(ステップS3−14)。
【0274】
そして、雲海描画部640が描画対象設定データ810において描画フラグが"1"に設定されている配置位置に配置される中雲ビルボード、雲オブジェクトのみを中雲バッファ804に設定されている色、不透明度等に基づいて描画して(ステップS3−16)、処理を終了する。
【0275】
次に、本実施の形態を実現できるハードウェアの構成の一例について図41を用いて説明する。同図に示す装置では、CPU1000、ROM1002、RAM1004、情報記憶媒体1006、音生成IC1008、画像生成IC1010、I/Oポート1012、1014が、システムバス1016により相互にデータ入出力可能に接続されている。そして画像生成IC1010には表示装置1018が接続され、音生成IC1008にはスピーカ1020が接続され、I/Oポート1012にはコントロール装置1022が接続され、I/Oポート1014には通信装置1024が接続されている。
【0276】
情報記憶媒体1006は、プログラム、表示物を表現するための画像データ、音データ、プレイデータ等が主に格納されるものであり、図31における記憶部900に相当する。例えば本実施の形態を実現するものがコンピュータである場合には、ゲームプログラム等を格納する情報記憶媒体としてCD−ROM、DVD等が、家庭用ゲーム装置である場合には、これらの他にゲームカセット等が用いられる。また業務用ゲーム装置として実現する場合には、ROM等のメモリやハードディスクが用いられ、この場合には情報記憶媒体1006はROM1002になる。
【0277】
コントロール装置1022はゲームコントローラ、操作パネル等に相当するものであり、ユーザーがゲームの進行に応じて行なう判断の結果を装置本体に入力するための装置である。このコントロール装置1022は、図31における操作部500に相当する。
【0278】
情報記憶媒体1006に格納されるプログラム、ROM1002に格納されるシステムプログラム(装置本体の初期化情報等)、コントロール装置1022から入力される信号等に従って、CPU1000は装置全体の制御や各種データ処理を行う。RAM1004はこのCPU1000の作業領域等として用いられる記憶手段であり、情報記憶媒体1006やROM1002の所与の内容、あるいはCPU1000の演算結果等が格納される。
【0279】
更に、この装置には音生成IC1008と画像生成IC1010とが設けられていてゲーム音やゲーム画像の好適な出力が行えるようになっている。音生成IC1008は情報記憶媒体1006やROM1002に記憶される情報に基づいて効果音やBGM音楽等のゲーム音を生成する集積回路であり、生成されたゲーム音はスピーカ1020によって出力される。また、画像生成IC1010は、RAM1004、ROM1002、情報記憶媒体1006等から送られる画像情報に基づいて表示装置1018に出力するための画素情報を生成する集積回路である。また表示装置1018は、CRT、LCD、TV、プラズマディスプレイ、液晶プラズマディスプレイ、プロジェクター等により実現される。この表示装置1018は、図31に示す表示部700に相当する。
【0280】
また、通信装置1024は装置内部で利用される各種の情報を外部とやりとりするものであり、他の装置と接続されてゲームプログラム等に応じた所与の情報を送受したり、通信回線を介してゲームプログラム等の情報を送受すること等に利用される。
【0281】
そして、図1〜図35を参照して説明した種々の処理は、図36〜図40のフローチャートに示した処理等を行うプログラムを格納した情報記憶媒体1006と、該プログラムに従って動作するCPU1000、画像生成IC1010、音生成IC1008等によって実現される。なお画像生成IC1010等で行われる処理は、CPU1000あるいは汎用のDSP等によりソフトウェア的に行うこととしてもよい。
【0282】
図42に、ホスト装置1300と、このホスト装置1300と通信回線1302を介して接続される端末1304−1〜1304−nとを含むゲーム装置に本実施の形態を適用した場合の例を示す。
【0283】
この場合、ゲームプログラム510、気流テクスチャ104、初期データ952、雲分布マップ924、雲層データ926、色データ928、関数データ930は、例えば、ホスト装置1300が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体1306に格納されている。以下、この情報記憶媒体1306に格納されている情報を格納情報という。端末1304−1〜1304−nが、CPU、画像生成IC、音生成ICを有し、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置1300からは、格納情報が通信回線1302を介して端末1304−1〜1304−nに配信される。一方、スタンドアロンで生成できない場合には、ホスト装置1300がゲーム画像、ゲーム音を生成し、これを端末1304−1〜1304−nに伝送し、端末において出力することになる。
【0284】
以上のように、本発明によれば、小雲生成処理により、雲パーツA(122)と雲パーツB(124)とを仮想カメラ100のピッチ角Xに応じて合成することとしたため、単純な手法ながらも立体感のある雲を表現することができる。
【0285】
更に中雲生成処理により、中雲を観察する仮想カメラ100の位置に対応して形状が変化する立体的な中雲を表現することができる。即ち、仮想カメラ100から中雲を見る角度が変化しても、中雲の形状に矛盾が生じず、見ていて違和感のない画像を生成することができる。
【0286】
また、小雲テクスチャ102に施された気流の表現は、結果的に、中雲テクスチャの縁のみに反映されるように見えるため、よりリアルな雲を表現することができる。
【0287】
また、更に雲海生成処理により、雲海を違和感なく、立体的に表現することができる。また、仮想カメラ100の視界内(雲設定領域R内)のみ中雲ビルボードを配置すれば良いため、雲海の画像生成に係る処理の軽減を図ることができる。
【0288】
なお、本発明は、上記実施の形態で説明したものに限らず、種々の変形実施が可能である。例えば、上記実施の形態においては、中雲生成時の初期設定において、中雲座標系における原点に偏らせて小雲ビルボードを分布することとして説明したが、他の位置であってもかまわない。すなわち、式(5)において、各4つの乱数の平均から(Rmax−Rmin)/2を減算することとして説明したが、各成分毎に適当な値を減算(あるいは、加算)することによって、中雲座標系における小雲ビルボードの集合体の分布位置を変更してもよい。
【0289】
あるいは、図43に示すように、小雲ビルボードの分布をいくつかに分散してもよい。すなわち、32個の小雲ビルボードをいくつかに分割し、各集合体毎に異なる分布の中心点の座標(すなわち、分布の偏りの位置)を与えることとしてもよい。このように、1つの中雲における小雲ビルボードの分布をいくつかに分散させることによって、図44(a)に示すような横長な中雲や、(b)に示すような複雑な形状の中雲等を生成することができる。
【0290】
また、例えば、上記実施の形態においては、遠景雲設定処理においても、雲設定領域R内と同数nの雲を設定することとしたが、遠景雲設定領域Rfに配置される雲は仮想カメラ100から遠いため、あまり精細なモデルである必要がないため、例えば、設定する雲の数を少なくし、一つ一つの雲オブジェクトを大きくして配置することにより、処理の軽減を図ることとしても良い。
【0291】
また、雲オブジェクトを中雲テクスチャをマッピングしたペラポリゴンとしたが、遠景であるため、より単純な雲テクスチャをマッピングして雲オブジェクトを生成することとしても良い。その場合、予め、遠景用の雲テクスチャを記憶部900に格納しておくこととしても良い。
【0292】
また、例えば、図30に示した雲分布マップ924は、時間経過とともに、雲のある部分とない部分との分布を変化させることとしても良い。その場合には、時間経過とともに雲が流れ、分布が変化する様子を表現することができる。
【0293】
また、層の幅ALtwを雲層毎に固定値として設定していたが、例えば、層の幅ALtwを位置的に変化させることとしても良い。即ち、雲層の厚い部分と薄い部分とを設定することとしても良い。また、例えば、積乱雲のように時間経過とともに発達していくような雲の場合には、雲層の一部の厚みが時間経過とともに厚くなるため、更に時間的に層の幅ALtwを変化させることとしても良い。
【0294】
また、上記実施の形態においては、飛行機ゲームを例にとって説明したが、プレーヤが操作(操縦)するものは、飛行機に限らず、例えば、ヘリコプターなどであっても勿論良い。
【0295】
また、上記実施の形態においては、家庭用ゲーム装置を例にとって説明したが、本発明の適用は、これに限らず、例えば、携帯型のゲーム装置や業務用ゲーム装置であっても良い。また、例えば、パーソナル・コンピュータ、PDA、携帯型電話機等のゲーム装置以外のコンピュータ装置であっても良い。
【符号の説明】
【0296】
500 操作部
600 処理部
610 ゲーム演算部
612 中雲生成部
616 初期設定部
618 雲海生成部
630 画像生成部
632 小雲描画部
634 中雲描画部
640 雲海描画部
700 表示部
800 一時記憶部
802 小雲バッファ
804 中雲バッファ
806 特定点色データ
808 フレームバッファ
810 描画対象設定データ
900 記憶部
910 ゲームプログラム
950 初期データ
924 雲分布マップ
926 雲層データ
928 色データ
930 関数データ
104 気流テクスチャ

【特許請求の範囲】
【請求項1】
プロセッサによる演算・制御により、仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置を、
座標軸を前記オブジェクト空間と対応付けて定めた雲モデル空間に複数の雲素を3次元的に離散配置して前記雲モデル空間を設定する雲モデル空間設定手段、
視線方向を前記仮想カメラと連動させて変化させる雲モデル用仮想カメラを前記雲モデル空間に設定する雲モデル用仮想カメラ設定手段、
前記雲モデル用仮想カメラから見た前記雲モデル空間の画像を生成する生成手段、
前記生成手段により生成された前記雲モデル空間の画像を反映させた雲状オブジェクトを前記オブジェクト空間に配置する配置手段、
として機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項2】
請求項1に記載の情報記憶媒体であって、前記プログラムは、
前記生成手段が、前記雲モデル空間の画像を生成する際に用いる投影スクリーン上の前記雲素の投影される位置と、前記オブジェクト空間に設定された光源との位置関係に基づいて当該雲素の色を決定して描画する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項3】
請求項2に記載の情報記憶媒体であって、前記プログラムは、
前記生成手段が、少なくとも、雲が明るく輝く色と、雲のベース色と、雲の影色との3色の色割合を決定することで当該雲素の色を決定する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項4】
請求項1〜3の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、中央部分に前記雲素の分布が偏るように配置して前記複数の雲素でなる雲素集合体を設定する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項5】
請求項4に記載の情報記憶媒体であって、前記プログラムは、
前記雲素それぞれに、気流を表現するための所与のアニメーションを施すアニメーション反映手段として更に機能させるとともに、
前記雲モデル用仮想カメラ設定手段が、前記雲素集合体の前記中央部分に視線方向が向くように前記雲モデル用仮想カメラを設定する、ように機能させることで、
中央部を濃く、周辺部を薄く、更に周縁部分の気流の視認性を高めた前記雲状オブジェクトの画像を生成する、
情報記憶媒体。
【請求項6】
請求項1〜5の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、前記雲素を板状体の雲素オブジェクトで構成し、前記雲モデル用仮想カメラの視線方向に対向させる向き制御手段を有する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項7】
請求項1〜6の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記配置手段が、前記雲モデル空間の画像を板状体のオブジェクトにマッピングして前記雲状オブジェクトを構成して前記オブジェクト空間に配置する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項8】
プロセッサによる演算・制御により、仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置を、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも2種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクトに反映させるテクスチャ情報を生成する生成手段、
として機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項9】
請求項1〜7の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも2種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記雲素オブジェクトに反映させるテクスチャ情報を生成する雲素テクスチャ情報生成手段、
として更に機能させ、
前記雲モデル空間設定手段が、前記雲素テクスチャ情報生成手段によりテクスチャ情報を前記雲素に反映する、
ように機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項10】
請求項1〜9の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、前記雲素としてパーティクルの集合体を配置する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項11】
仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
座標軸を前記オブジェクト空間と対応付けて定めた雲モデル空間に複数の雲素を3次元的に離散配置して前記雲モデル空間を設定する雲モデル空間設定手段と、
視線方向を前記仮想カメラと連動させて変化させる雲モデル用仮想カメラを前記雲モデル空間に設定する雲モデル用仮想カメラ設定手段と、
前記雲モデル用仮想カメラから見た前記雲モデル空間の画像を生成する生成手段と、
前記生成手段により生成された前記雲モデル空間の画像を反映させた雲状オブジェクトを前記オブジェクト空間に配置する配置手段と、
を備えたゲーム装置。
【請求項12】
仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも2種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段と、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクトに反映させるテクスチャ情報を生成する生成手段と、
を備えたゲーム装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate


【公開番号】特開2011−14164(P2011−14164A)
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願番号】特願2010−225169(P2010−225169)
【出願日】平成22年10月4日(2010.10.4)
【分割の表示】特願2003−124237(P2003−124237)の分割
【原出願日】平成12年12月11日(2000.12.11)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】