(57)【要約】【課題】  仮想カメラの位置や視線方向の変化に対して、矛盾のない雲の表現を実現すること。【解決手段】  初期設定部６１６がゲーム開始時に初期データ９５０を設定し、小雲描画部６３２が仮想カメラ１００のピッチ角Ｘに基づいて、雲パーツＡ（１２２）、雲パーツＢ（１２４）、気流テクスチャ１０４を合成して小雲テクスチャ１０２を生成する。中雲生成部６１２及び中雲描画部６３４は、初期データ９５０及び小雲テクスチャ１０２に基づいて、中雲テクスチャを生成する。そして、雲海生成部６１８及び雲海描画部６４０は初期データ９５０及び中雲テクスチャに基づいて、雲設定領域Ｒ内に中雲ビルボードを配置して雲海を含む１フレーム分の画像を生成する。【選択図】      図３１
2011014164.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによる演算・制御により、仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置を、
座標軸を前記オブジェクト空間と対応付けて定めた雲モデル空間に複数の雲素を３次元的に離散配置して前記雲モデル空間を設定する雲モデル空間設定手段、
視線方向を前記仮想カメラと連動させて変化させる雲モデル用仮想カメラを前記雲モデル空間に設定する雲モデル用仮想カメラ設定手段、
前記雲モデル用仮想カメラから見た前記雲モデル空間の画像を生成する生成手段、
前記生成手段により生成された前記雲モデル空間の画像を反映させた雲状オブジェクトを前記オブジェクト空間に配置する配置手段、
として機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項２】
請求項１に記載の情報記憶媒体であって、前記プログラムは、
前記生成手段が、前記雲モデル空間の画像を生成する際に用いる投影スクリーン上の前記雲素の投影される位置と、前記オブジェクト空間に設定された光源との位置関係に基づいて当該雲素の色を決定して描画する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項３】
請求項２に記載の情報記憶媒体であって、前記プログラムは、
前記生成手段が、少なくとも、雲が明るく輝く色と、雲のベース色と、雲の影色との３色の色割合を決定することで当該雲素の色を決定する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項４】
請求項１〜３の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、中央部分に前記雲素の分布が偏るように配置して前記複数の雲素でなる雲素集合体を設定する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項５】
請求項４に記載の情報記憶媒体であって、前記プログラムは、
前記雲素それぞれに、気流を表現するための所与のアニメーションを施すアニメーション反映手段として更に機能させるとともに、
前記雲モデル用仮想カメラ設定手段が、前記雲素集合体の前記中央部分に視線方向が向くように前記雲モデル用仮想カメラを設定する、ように機能させることで、
中央部を濃く、周辺部を薄く、更に周縁部分の気流の視認性を高めた前記雲状オブジェクトの画像を生成する、
情報記憶媒体。
【請求項６】
請求項１〜５の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、前記雲素を板状体の雲素オブジェクトで構成し、前記雲モデル用仮想カメラの視線方向に対向させる向き制御手段を有する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項７】
請求項１〜６の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記配置手段が、前記雲モデル空間の画像を板状体のオブジェクトにマッピングして前記雲状オブジェクトを構成して前記オブジェクト空間に配置する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項８】
プロセッサによる演算・制御により、仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置を、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも２種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクトに反映させるテクスチャ情報を生成する生成手段、
として機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項９】
請求項１〜７の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも２種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記雲素オブジェクトに反映させるテクスチャ情報を生成する雲素テクスチャ情報生成手段、
として更に機能させ、
前記雲モデル空間設定手段が、前記雲素テクスチャ情報生成手段によりテクスチャ情報を前記雲素に反映する、
ように機能させるための、前記プロセッサによる演算可能なプログラムを記憶した情報記憶媒体。
【請求項１０】
請求項１〜９の何れか一項に記載の情報記憶媒体であって、前記プログラムは、
前記雲モデル空間設定手段が、前記雲素としてパーティクルの集合体を配置する、ように機能させるためのプログラムである、情報記憶媒体。
【請求項１１】
仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
座標軸を前記オブジェクト空間と対応付けて定めた雲モデル空間に複数の雲素を３次元的に離散配置して前記雲モデル空間を設定する雲モデル空間設定手段と、
視線方向を前記仮想カメラと連動させて変化させる雲モデル用仮想カメラを前記雲モデル空間に設定する雲モデル用仮想カメラ設定手段と、
前記雲モデル用仮想カメラから見た前記雲モデル空間の画像を生成する生成手段と、
前記生成手段により生成された前記雲モデル空間の画像を反映させた雲状オブジェクトを前記オブジェクト空間に配置する配置手段と、
を備えたゲーム装置。
【請求項１２】
仮想カメラから見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラのピッチ角が仰角用と俯角用の少なくとも２種類の予め用意された雲素のうち、垂直方向用の雲素を前記仮想カメラのピッチ角に基づいて選択する垂直方向用雲素選択手段と、
前記垂直方向用雲素選択手段により選択された垂直方向用の雲素と、予め用意された水平方向用の雲素とを、前記仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクトに反映させるテクスチャ情報を生成する生成手段と、
を備えたゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト空間を仮想カメラから見た画像を生成し、当該生成画像を表示させることによって所与のゲームを実行するためのゲーム情報、情報記憶媒体及びゲーム装置に関する。
【背景技術】
【０００２】
従来、テレビゲーム装置等の画像において、雲を表現する際には、処理を軽減するために、一枚の平面状のポリゴンに雲のテクスチャをマッピングした雲オブジェクトをオブジェクト空間に複数水平に設定して、雲を表現していた。しかしながら、例えば、飛行機を操縦するゲームなどにおいて、操縦者の視点から見た画像を生成する場合には、仮想カメラ（視点）が雲と水平となることもあり、雲に厚味がないことが分かってしまうといった問題があった。そのため、雲オブジェクトを常に仮想カメラの視線方向に垂直に対向させるいわゆるビルボード処理を行なっていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２５４０７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来においては、雲のテクスチャをマッピングさせた１枚のポリゴンを、常に、仮想カメラに対する上下左右位置を固定し、かつ、仮想カメラの視線方向に垂直に配置する方法が採られていた。そのため、仮想カメラの位置や視線方向等が変化しても雲は全く変化しないため、違和感が生じるといった問題があった。またさらに、例えば視線方向の仰角あるいは俯角が大きくなると、±９０°の角度を境にして、雲が反転して表現されてしまうといった問題があった。そのため、仮想カメラの位置や視線方向等の変化に対しても、違和感のない雲の表現が望まれていた。特にゲームにおいては、各フレームに係る処理を所与の時間内に行なわなければならないため、仮想カメラの位置や視線方向の変化に対して違和感のない雲を表現する際の、処理負担の増大を抑えなければならないといった問題もあった。
【０００５】
本発明の課題は、仮想カメラの位置や視線方向の変化に対して、矛盾のない雲の表現を実現することである。
【課題を解決するための手段】
【０００６】
以下、上記課題を解決するための手段を説明するが、その前に、本明細書を通じて使用する重要な用語である「雲素」および「雲状オブジェクト」について、その解釈を説明する。
【０００７】
本明細書開示の技術は「雲」を如何に表現するかを主眼においた技術である。しかし、現実社会においては、「雲」の性質上、１つの「雲」は通常１つの「雲」であって、「小さい雲」が寄り集まって１つの「雲」を構成するとは考えないのが一般的である。コンピュータグラフィックスの分野においては、「雲」を粒子系（いわゆるパーティクル）により表現する手法が知られているが、この手法によれば、「雲」は「粒子（パーティクル）」の集合であって、「小さい雲」の集合ではない。しかし、本技術は粒子（パーティクル）１つ１つを制御するものではないため、「雲」を構成する単位が「粒子（パーティクル）」とは言い得ない。そこで、「雲」を構成する要素であり、単位であることを表すため「雲素」という言葉を用いている。
【０００８】
上記趣旨より、本明細書を通じて雲素とは、雲状オブジェクトを構成する要素を特定するための言葉である。したがって、雲素の意には雲状オブジェクトも含まれる。即ち、雲状オブジェクト（例えば、小さい雲や、一側面のみを表した雲状オブジェクト）の集合体や、複数の雲状オブジェクトの択一的選択物等が１つの雲状オブジェクト（例えば、大きい雲や、一側面の側から見た雲状オブジェクト）であってもよいからである。また、雲素の意には、複数の粒子（パーティクル）の集合体も含まれる。即ち、雲状オブジェクトの構成要素には、複数の粒子を１つの単位とする場合も含まれるからである。
【０００９】
また、「雲状オブジェクト」とは、次のことを意味する。即ち、本明細書開示の技術は「雲」を主眼においてはいるが、「雲」のみに本技術が適用可能であるのではないことを意味する。「雲状オブジェクト」とは、「煙」や「霧」、「もや」といった、そのあり方を「雲」と共通にするオブジェクトを含む意味である。
【００１０】
第１の発明は、
プロセッサによる演算・制御により、第１の仮想カメラ（例えば、図２に示す仮想カメラ１００）から見た第１のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第１の装置に対して、
前記第１の仮想カメラの所与の角度パラメータ（例えば、図２に示すピッチ角Ｘ）の値に応じて予め用意された複数種類の第１の雲素（例えば、図３に示す雲パーツＡ（１２２），雲パーツＢ（１２４））を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することにより、前記第１のオブジェクト空間に前記第１の仮想カメラに向けて配置される板状体の第１の雲状オブジェクト（例えば、実施の形態における小雲ビルボード）に反映させるテクスチャ情報（例えば、図４に示す小雲テクスチャ１０２）を生成する第１の生成手段（例えば、図３１に示す小雲描画部６３２）、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００１１】
ここで、第１の装置は、コンピュータ装置であってもよいし、携帯用／家庭用／業務用のゲーム装置であってもよい。所与の角度パラメータとは、第１の仮想カメラを第１のオブジェクト空間に設定する上で必要となる、第１の仮想カメラに係る角度パラメータのことであり、例えば、第１の仮想カメラのロール角やピッチ角、ヨー角といった角度のことである。また、所与の割合での合成処理には、例えば、第１の雲素が２つであって、１：０や０：１の割合で合成処理する場合、即ち、第１の雲素を切り換える場合も含む。
【００１２】
この第１の発明によれば、例えば、第１の雲状オブジェクトの一側面（例えば、正面）と他側面（例えば、裏面）を表す２つの第１の雲素を用意し、第１の仮想カメラの視線方向に応じて、その第１の雲素を切り換えること等が可能である。即ち、第１の雲状オブジェクトは第１の仮想カメラに向けて配置されるため、例えば、第１の雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【００１３】
また更に、第１の仮想カメラの「角度パラメータの現在値に応じ」て、第１の雲状オブジェクトに反映されるテクスチャ情報が生成されるため、第１のオブジェクト空間に第１の雲状オブジェクトを配置する際、第１の雲状オブジェクトの上下左右方向を考慮する必要がない。即ち、例えば、第１の仮想カメラのロール角が変化する場合には、第１の雲状オブジェクトを、当該ロール角に応じて回転させる必要が生じるが、そのロール角に応じてテクスチャ情報が生成されるため、第１の雲状オブジェクトは、単に、第１のオブジェクト空間に配置するだけ（より正確には、第１のオブジェクト空間には、第１の雲状オブジェクトを配置する位置を決定するだけ）で済む。
【００１４】
第２の発明は、第１の発明のゲーム情報であって、
前記第１の雲素は少なくとも透明度情報（例えば、実施の形態におけるα値）を含む色情報を有するテクスチャ情報であり、
前記第１の生成手段に対して、前記複数種類の第１の雲素の色情報を、前記所与の割合で合算することにより前記複数種類の第１の雲素を合成処理する、ように機能させるための情報（例えば、実施の形態における式（２）、（３））を含むことを特徴としている。
【００１５】
この第２の発明によれば、第１の雲素の合成処理は、色情報の合算で済む。また、色情報が透明度情報だけの場合には、色情報の合算演算をさらに容易に済ませることができる。即ち、例えば、第１の雲状オブジェクトの色を「白色」として予め設定しておけば、透明度情報の演算のみで、簡単に、描画される第１の雲状オブジェクトの色を決定することができる。
【００１６】
第３の発明は、第２の発明のゲーム情報であって、
前記第１の装置に対して、所与のアニメーション（例えば、図７に示す気流テクスチャ１０４）を前記第１の雲素の色情報に反映させるアニメーション反映手段、を機能させるための情報を含むことを特徴とする。
【００１７】
この第３の発明によれば、第１の雲素の色情報が時間経過に従って変化するため、気流の様子を表現することができる。
【００１８】
この場合、さらに第４の発明のように、第３の発明のゲーム情報に、
前記アニメーション反映手段に対して、前記第１の雲素に反映させる前記所与のアニメーションの向き、縮尺、及び部分の内少なくとも１つを変更する、ように機能させるための情報を含ませることとしてもよい。
【００１９】
この第４の発明によれば、第１の雲素は複数種類あるため、その種類によって、アニメーションを反映させる向きや縮尺、部分（例えば、アニメーションを第１の雲素にマッピングする場合には、第１の雲素に対するマッピングの向きなど）を変更することにより、１つのアニメーションであっても様々な気流を表現することが可能となる。
【００２０】
また、第５の発明のように、第３または第４の発明のゲーム情報であって、
前記所与のアニメーションは、少なくとも透明度情報を含む色情報の時間的変化を表すアニメーションであり、
前記アニメーション反映手段に対して、前記所与のアニメーションに基づいて前記第１の雲素の色情報を決定する、ように機能させるための情報を含むこととしてもよい。
【００２１】
この第５の発明によれば、所与のアニメーションを、例えば、周期的に色情報が変化したり、透明度情報のみが変化するといったものとすることができる。例えば、第１の雲素の色を「白色」と予め決定されている場合には、第１の雲素が描画される際の色を、「透明度情報」のみによって決定することができるため、第１の雲素の色情報を決定する処理を簡便化することが可能である。
【００２２】
第６の発明は、第１から第５の発明のいずれかのゲーム情報であって、
前記第１の生成手段に対して、
前記所与の角度パラメータを前記第１の仮想カメラのピッチ角及び／又はヨー角の角度パラメータとする手段と、
前記第１の仮想カメラの、ピッチ角及び／又はヨー角の角度パラメータの値に応じて予め用意された複数種類の第１の雲素を、対応する前記第１の仮想カメラの角度パラメータの現在値に応じた所与の割合で合成処理する手段と、
を機能させるための情報を含むことを特徴としている。
【００２３】
この第６の発明によれば、仮想カメラに向けて配置される板状体の第１の雲状オブジェクトの欠点を補うことができる。即ち、例えば、第１の雲状オブジェクトの右側面と左側面の、２つの第１の雲素を用意しておけば、第１の仮想カメラのヨー角に応じて、第１の雲状オブジェクトの右側面と左側面を矛盾無く表現することができる。また同様に、例えば、第１の雲状オブジェクトの上面と下面の、２つの第１の雲素を用意しておけば、第１の仮想カメラのピッチ角に応じて、第１の雲状オブジェクトの上面と下面を矛盾無く表現することができる。
【００２４】
第７の発明は、第１から第６の発明のいずれかのゲーム情報であって、
前記第１の生成手段に対して、前記ピッチ角に応じて予め用意された第１の雲素がある場合には、その第１の雲素を前記第１の仮想カメラのロール角或いはヨー角に応じて回転させるとともに、前記ヨー角に応じて予め用意された第１の雲素がある場合には、その第１の雲素を前記第１の仮想カメラのロール角或いはピッチ角に応じて回転させて前記合成処理を行う、ように機能させるための情報を含むことを特徴としている。
【００２５】
この第７の発明によれば、第１の仮想カメラに係る角度パラメータの内、一の角度パラメータに応じて用意された第１の雲素であったとしても、他の角度パラメータに応じて回転させて、合成処理される。例えば、ヨー角に応じて、第１の雲状オブジェクトの右側面と左側面の２つの第１の雲素が用意されていた場合、勿論、ヨー角に応じてその２つの第１の雲素が合成処理されるが、ロール角に応じて回転された上で、合成処理される。即ち、第１の発明の効果として上述した通り、第１の雲状オブジェクトは、単に、第１のオブジェクト空間に配置されるのみであるため、第１の仮想カメラがロールした場合にも矛盾のないテクスチャ情報を生成する必要がある。このため、ヨー角やピッチ角に応じて用意された第１の雲素に対して、ロール角に応じて回転させることによって、第１の仮想カメラがロールした場合にも、第１の生成手段は、矛盾のないテクスチャ情報を生成することができる。
【００２６】
第８の発明は、第１から第７の発明のいずれかのゲーム情報であって、
前記第１の生成手段に対して、前記第１の仮想カメラのピッチ角が水平方向用と垂直方向用の少なくとも２種類の予め用意された第１の雲素を、前記第１の仮想カメラのピッチ角に応じた所与の割合で合成処理することにより、前記第１の仮想カメラのピッチ角に応じて予め用意された複数種類の第１の雲素を合成処理する、ように機能させるための情報を含むことを特徴としている。
【００２７】
この第８の発明によれば、一の第１の雲状オブジェクトに対する第１の仮想カメラの視線方向が変化した場合、即ち、第１の仮想カメラのピッチ角が変化した場合であっても、その形状等に矛盾のない第１の雲状オブジェクトを表現することが可能となる。
【００２８】
そしてこの場合、第９の発明のように、第８の発明のゲーム情報であって、
前記第１の生成手段に対して、前記第１の仮想カメラのロール角に応じて前記水平方向用および前記垂直方向用の第１の雲素を回転させて前記合成処理を行う、ように機能させるための情報を含むように構成してもよい。
【００２９】
この第９の発明によれば、第１の仮想カメラがロールした場合においても、第１の雲状オブジェクト自体を回転させることなく、矛盾のない第１の雲状オブジェクトを表現することができる。
【００３０】
さらにこの場合、第１０の発明のように、第８または第９の発明のゲーム情報であって、
前記垂直方向用の第１の雲素には、前記第１の仮想カメラのピッチ角が仰角および俯角の場合に対応する、更に２種類の第１の雲素があり、
前記第１の生成手段に対して、前記垂直方向用の第１の雲素に含まれる前記２種類の第１の雲素を、前記第１の仮想カメラのピッチ角に応じて切り換えることにより、前記垂直方向用の第１の雲素とする、ように機能させるための情報を含むように構成してもよい。
【００３１】
この第１０の発明によれば、垂直方向用の第１の雲素には、ピッチ角が仰角の場合と俯角の場合の第１の雲素があり、ピッチ角によって切り換えられるため、一の第１の雲状オブジェクトの上面と下面とを、その形状等に矛盾なく、容易に表現することができる。
【００３２】
第１１の発明は、第８から第１０の発明のいずれかのゲーム情報であって、
前記水平方向用の第１の雲素には、前記第１の仮想カメラのヨー角の角度範囲を等分した各角度範囲に対応する、更に複数種類の第１の雲素があり、
前記第１の生成手段に対して、前記水平方向用の第１の雲素に含まれる前記複数種類の第１の雲素を、前記第１の仮想カメラのヨー角に応じて切り換えることにより、前記水平方向用の第１の雲素とする、ように機能させるための情報を含むことを特徴としている。
【００３３】
この第１１の発明によれば、一の第１の雲状オブジェクトに対する第１の仮想カメラの視線方向が変化した場合、即ち、第１の仮想カメラのヨー角が変化した場合であっても、その形状等に矛盾のない第１の雲状オブジェクトを表現することが可能となる。
【００３４】
第１２の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ（例えば、図２に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記オブジェクト空間に配置される雲状オブジェクト（例えば、図２に示す小雲テクスチャ１０２）を複数種類の雲素（例えば、図３に示す雲パーツＡ（１２２）、雲パーツＢ（１２４））から生成するとともに、前記仮想カメラの位置または視線方向が変化する場合に、前記複数種類の雲素を所与の処理により切り換えることにより前記雲状オブジェクトを生成する手段（例えば、図３１に示す小雲描画部６３２）、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００３５】
この第１２の発明によれば、例えば、雲状オブジェクトの一側面（例えば、正面）と他側面（例えば、裏面）を表す２つの雲素を用意し、仮想カメラの視線方向に応じて、その雲素を切り換えること等が可能である。即ち、仮想カメラの視線方向が変化した場合であっても雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【００３６】
第１３の発明は、
プロセッサによる演算・制御により、第２の仮想カメラ（例えば、図１４に示す仮想カメラ１００）から見た第２のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第２の装置に対して、
雲モデル空間（例えば、図１４に示す中雲座標系）に第２の雲素（例えば、図１４に示す小雲ビルボード２４−１〜３２）を複数配置する第２の配置手段（例えば、図３１に示す中雲生成部６１２）と、
前記雲モデル空間を透視変換することにより、前記第２のオブジェクト空間に前記第２の仮想カメラに向けて配置される板状体の第２の雲状オブジェクトに反映させるテクスチャ情報（例えば、実施の形態における中雲テクスチャ）を生成する第２の生成手段（例えば、図３１に示す中雲描画部６３４）と、
を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００３７】
この第１３の発明によれば、第２のオブジェクト空間に配置される第２の雲状オブジェクトは板状体ではあるが、様々な態様の第２の雲状オブジェクトを表現することができる。なぜならば、第２の雲状オブジェクトに反映される、第２の生成手段によって生成されるテクスチャ情報は、第２の雲素が複数配置された雲モデル空間を透視変換したものであるため、透視変換の仕方によって、種々のテクスチャ情報を生成することが可能だからである。また本発明により、第２のオブジェクト空間に係る処理と、テクスチャ情報を生成する処理とを区別して処理することが可能となり、第２のオブジェクト空間に係る処理負荷を軽減させることができる。なおここで、第２の装置は、コンピュータ装置であってもよいし、携帯用／家庭用／業務用のゲーム装置であってもよい。また第２の雲素を板状体により構成してもよい。
【００３８】
第１４の発明は、第１３の発明のゲーム情報であって、
前記第２の生成手段に対して、前記第２の仮想カメラと、前記雲モデル空間を透視変換するための雲モデル用仮想カメラ（例えば、図１４に示す雲視点２２０）とを連動させ、前記雲モデル用仮想カメラに基づいて前記雲モデル空間を透視変換する、ように機能させるための情報を含むことを特徴としている。
【００３９】
この第１４の発明によれば、雲モデル用仮想カメラと、第２の仮想カメラとが連動するため、第２のオブジェクト空間に配置される、板状体の第２の雲状オブジェクトであっても、形状等において矛盾なく表現することが可能である。
【００４０】
第１５の発明は、第１３または第１４の発明のゲーム情報であって、
前記第２の配置手段に対して、前記複数の第２の雲素の配置を、前記雲モデル空間の所与の範囲に偏った分布とする、ように機能させるための情報（例えば、実施の形態における式（４））を含むことを特徴としている。
【００４１】
この第１５の発明によれば、例えば、第２の雲素の色が「薄い白色」である場合、第２の雲素の配置位置の偏りによって、その偏った所与の範囲においては「濃い白色」として表現することができる。即ち、雲モデル空間における配置位置に偏りを持たせることによって、第２の雲状オブジェクトの色の濃淡に変化をつけることができる。
【００４２】
第１６の発明は、第１３から第１５の発明のいずれかのゲーム情報であって、
前記第２の配置手段に対して、前記雲モデル空間に配置する前記各第２の雲素の大きさを変更する、ように機能させるための情報（例えば、実施の形態における式（５））を含むことを特徴とする。
【００４３】
この第１６の発明によれば、雲モデル空間における第２の雲素の配置位置が同じであっても、第２の雲素の大きさを異ならしめることができるため、生成するテクスチャ情報を異ならしめる、即ち、種々の形態の第２の雲状オブジェクトを容易に表現することができる。
【００４４】
第１７の発明は、第１３から第１６のいずれかのゲーム情報であって、
前記第２の装置に対して、前記第２のオブジェクト空間の光源と、前記第２の雲状オブジェクトとに基づいて、前記第２の生成手段により生成されたテクスチャ情報の色情報を決定する色情報決定手段（例えば、図３１に示す色決定部６３８）、を機能させるための情報を含むことを特徴とする。
【００４５】
この第１７の発明によれば、第２のオブジェクト空間における、光源に係るシェーディング処理をテクスチャ情報に施すことにより、最終的に、第２の雲状オブジェクトの色情報を矛盾なく表現させることができる。即ち、第２のオブジェクト空間においては、光源と、第２の雲状オブジェクトとは存在するが、第２の雲状オブジェクトに反映されるテクスチャ情報は別途生成される。このため、第２のオブジェクト空間における光源と、第２の雲状オブジェクトの配置状況等に応じて、テクスチャ情報の色情報を決定することにより、最終的に、色において矛盾のない、リアリスティックな第２の雲状オブジェクトを表現することが可能である。
【００４６】
第１８の発明は、第１７の発明のゲーム情報であって、
前記色情報決定手段に対して、前記第２の雲状オブジェクトにおける少なくとも２つの特定点（例えば、図１６に示す特定点２２−１〜９）の色情報を、前記第２のオブジェクト空間における光源に基づいて決定し、この特定点の色情報に基づいて前記テクスチャ情報の色情報を決定する、ように機能させるための情報を含むことを特徴とする。
【００４７】
例えば、「雲」を真横から見た場合、通常、太陽光線の当たる上側は明るく、下側は暗い。しかし、「雲」が１つである場合ならまだしも、複数の「雲」が存在する場合、単に、上側を明るく、下側を暗くするといった、一様な表現手法では、リアルな雲を表現することができない。そこで、この第１８の発明によれば、例えば、第２の雲状オブジェクトの複数の特定点における色情報をまず求め、この特定点の色情報に基づいて、テクスチャ情報（即ち、終局的には第２の雲状オブジェクト）の色情報を決定することとすれば、第２のオブジェクト空間における、第２の雲状オブジェクトの配置状況等に応じた色を表現することができる。
【００４８】
またこの場合、第１９の発明のように、第１８の発明のゲーム情報であって、
前記色情報決定手段に対して、前記光源の光線方向の角度に応じて予め用意された複数の色情報を、当該特定点における前記光源の光線方向の角度に応じた所与の割合で合成処理することにより、前記各特定点の色情報を決定する、ように機能させるための情報（例えば、図３１に示す関数データ９３０）を含むこととしてもよい。
【００４９】
従来、光源に係る輝度計算は、輝度値を加算する処理が一般的であった。即ち、ある輝度値を加算することによって、明るい状態の色を表現することが可能ではあったが、最大輝度である「白色」のＲＧＢ値が、Ｒ＝２５５、Ｇ＝２５５、Ｂ＝２５５であるため、段々と「白色」に近づかざるを得なかった。従って、もともと「白色」である「雲」に対する輝度計算は、困難なものであった。この第１９の発明によれば、複数の色情報（例えば、オレンジ色と白色と灰色）を予め用意し、特定点における色情報が光源の光線方向に応じて決定されるため、例えば、様々な色に染められた「雲」（例えば、上側をオレンジ色にする等）を容易に表現することができる。
【００５０】
第２０の発明は、第１から第１１のいずれかの発明のゲーム情報と、第１３から第１９の発明のいずれかのゲーム情報とを含むゲーム情報であって、
前記第１の装置と前記第２の装置は同一の装置であり、
当該装置に対して、
前記第１の仮想カメラを前記第２の仮想カメラとする手段と、
前記第１の生成手段により生成されたテクスチャ情報を前記第１の雲状オブジェクトに反映させる手段と、
前記第１の雲状オブジェクトを前記第２の雲素とする手段と、
を機能させるための情報を含むことを特徴とする。
【００５１】
この第２０の発明によれば、第１から第１１の発明のいずれかの発明の効果と、第１３から第１９の発明のいずれかの発明の効果とを備えるゲーム情報を実現することができる。具体的には、例えば、第１の仮想カメラ（第２の仮想カメラ）の視線方向に対して矛盾のない、板状体の第１の雲状オブジェクト（第２の雲素）を生成することができ、かつ、様々な態様の第２の雲状オブジェクトを表現することができる。
【００５２】
第２１の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ（例えば、図１４に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
所与のアニメーションが施された複数種類の雲素（例えば、図３に示す小雲テクスチャ１０２）を重ね合わせて、前記オブジェクト空間に配置される雲状オブジェクト（例えば、実施の形態における中雲ビルボード）を生成する手段（例えば、図３１に示す中雲生成部６１２及び中雲描画部６３４）、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００５３】
この第２１の発明によれば、雲素には所与のアニメーションが施されているため、気流を表現することができる。ただし、雲素が複数重ね合わされた部分においては、所与のアニメーションも重ね合わされているため、当該部分においては気流を明確に表現できないが、雲素が重なっていない部分や、重なる数の少ない部分においては、気流が表現される。即ち、例えば、雲状オブジェクトの中央付近に偏りを持たせて雲素を重ねて表現した場合、中央付近の気流は視認できないが、周縁における気流を視認することができ、よりリアリスティックな雲を表現することができる。
【００５４】
第２２の発明のゲーム情報は、プロセッサによる演算・制御により、第３の仮想カメラ（例えば、図２０に示す仮想カメラ１００）から見た第３のオブジェクト空間の画像を生成して、所与のゲームを実行することとなる第３の装置に対して、
所与の配置位置繰り返しパターンを展開することにより前記第３のオブジェクト空間に複数配置する第３の雲素（例えば、実施の形態における中雲ビルボード）の配置位置を決定する配置位置決定手段（例えば、図３１に示す中雲配置部６１４）と、
前記配置位置決定手段により決定された配置位置に、板状体の前記第３の雲素を配置する第３の配置手段（例えば、図３１に示す中雲配置部６１４）と、
前記第３の雲素を、前記第３の仮想カメラに対する所与の方向に向ける対向配置手段（例えば、図３１に示す中雲配置部６１４）と、
を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００５５】
ここで、第３の装置は、コンピュータ装置であってもよいし、携帯用／家庭用／業務用のゲーム装置であってもよい。また所与の配置位置繰り返しパターンとは、第３の雲素の配置位置が決定されたある単位領域における、配置位置のパターンのことであり、例えばこのパターンを縦２×横２×高さ２に配置（展開）することによって、単位領域の８倍（＝２×２×２）の大きさの領域における第３の雲素の配置位置を決定することができる。
【００５６】
換言すれば、第３のオブジェクト空間の、任意の領域における第３の雲素の配置位置が、このパターンの展開によって決定しうる。即ち、この第２２の発明によれば、第３のオブジェクト空間における、第３の雲素の配置位置を容易に決定することができる。例えば、配置位置繰り返しパターンの大きさ（上記の単位領域の大きさ）を第３の仮想カメラの視界と略同一とし、第３の仮想カメラを右方向へパンさせた場合、視野の左側から見えなくなった第３の雲素が、視野の右側から表出することとなる。即ち、配置位置繰り返しパターンのみで、第３の雲素の、第３のオブジェクト空間全ての配置位置を決定することができる。また、第３の雲素は板状体の雲素であるため、第３のオブジェクト空間の画像生成に係る処理負荷を軽減することができる。
【００５７】
第２３の発明は、第２２の発明のゲーム情報であって、
前記第３の装置に対して、前記第３のオブジェクト空間内の所与の高度に、雲素配置層を設定する手段（例えば、図３１に示す中雲配置部６１４）、を機能させるための情報（例えば、図３１に示す雲層データ９２６）と、
前記第３の配置手段に対して、前記雲素配置層内に前記第３の雲素を配置する、ように機能させるための情報（例えば、実施の形態における式（１１））と、
を含むことを特徴とする。
【００５８】
この第２３の発明によれば、第３の雲素を配置する雲素配置層を第３のオブジェクト空間内に設定することができ、この雲素配置層以外に第３の雲素が配置されることがない。したがって、第３のオブジェクト空間において、第３の雲素を配置する高度を制御することができる。なお、さらに雲素配置層の厚さを設定可能なよう構成してもよい。その場合には、例えば、層を薄くすることによっていわし雲を表現したり、層を厚くすることによって積乱雲を表現したりすることができる。
【００５９】
第２４の発明は、第２２または第２３の発明のゲーム情報であって、
前記第３の装置に対して、前記第３の仮想カメラからの距離（例えば、実施の形態における距離ｄ）に基づいて、第３の雲素配置領域（例えば、図２０に示す雲設定領域Ｒ）を設定する第３の雲素領域設定手段（例えば、図３１に示す雲設定領域決定部６２０）、を機能させるための情報と、
前記第３の配置手段に対して、前記第３の雲素配置領域内に前記第３の雲素を配置する、ように機能させるための情報と、
を含むことを特徴とする。
【００６０】
この第２４の発明によれば、例えば、仮想カメラの視野内にのみ第３の雲素配置領域を設定することにより、視野外の第３の雲素に対する処理を削減することが可能である。
【００６１】
第２５の発明は、第２２から第２４の発明のいずれかのゲーム情報であって、
前記第３の装置に対して、前記第３のオブジェクト空間における前記第３の雲素の配置位置に応じて、前記各第３の雲素の透明度を設定する第３の雲素透明度設定手段（例えば、図３１に示す不透明度設定部６２２）、を機能させるための情報を含むことを特徴とする。
【００６２】
この第２５の発明によれば、例えば、雲の濃淡を、その雲の配置位置に応じて変更することができる。本発明をより具体化する手法としては例えば第２６の発明や第２７の発明がある。
【００６３】
例えば、第２６の発明のように、第２５の発明のゲーム情報であって、
前記第３の雲素透明度設定手段に対して、前記第３のオブジェクト空間における雲の存在可否を表す雲分布図（例えば、図３０に示す雲分布マップ９２４）に基づいて、前記各第３の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【００６４】
この第２６の発明によれば、雲分布図に従って、第３の雲素の透明度が設定されるため、第３のオブジェクト空間全体に渡る雲の表示／非表示を管理することができる。即ち、第３の雲素の配置位置は、第２２の発明によって決定されるが、実際に表現されるか否か（より正確には、第３の雲素の色が描画されるか否か）は雲分布図に従って決定される。
【００６５】
また、第２７の発明のように、第２５または第２６の発明のゲーム情報であって、
前記第３の雲素透明度設定手段に対して、前記第３の仮想カメラから前記各第３の雲素までの距離に基づいて、前記各第３の雲素の透明度を設定する、ように機能させるための情報（例えば、実施の形態における式（１２））を含むこととしてもよい。
【００６６】
この第２７の発明によれば、例えば、第３の仮想カメラに近接配置される第３の雲素の透明度を上げるよう設定することにより、第３の仮想カメラからの視認性が向上し、ゲームにおける操作性を向上させることができる。
【００６７】
第２８の発明は、第２４の発明のゲーム情報であって、
前記第３の装置に対して、
前記第３の仮想カメラからの距離が前記第３の雲素配置領域より遠方に、第４の雲素配置領域（例えば、実施の形態における遠景雲設定領域Ｒｆ）を設定する第４の雲素領域設定手段（例えば、図３１に示す雲設定領域決定部６２０）と、
前記第４の雲素配置領域に、板状体の第４の雲素を略水平状に複数配置する第４の配置手段（例えば、図３１に示す中雲配置部６１４）と、
を機能させるための情報を含むことを特徴とする。
【００６８】
第２４の発明により第３の雲素配置領域が設定されるが、第３の仮想カメラの視野内に、第３の雲素配置領域の周縁が含まれる場合には、矛盾が生じ得る。即ち、第３の仮想カメラの視野内において、第３の雲素配置領域内には第３の雲素が配置されているが、その範囲を超えた所には雲素が配置されていないため、第３の雲素配置領域の周縁がユーザーに分かってしまい、ゲームに対する没入感が損なわれ得る。そのため、第２８の発明のように、第３の雲素配置領域の遠方に第４の雲素配置領域を設定することにより、上記問題を解決できる。ここで、第３の仮想カメラにおいて、第４の雲素配置領域は第３の雲素配置領域よりも遠方であるため、雲素を簡略化した表現としてもユーザーには認知され難い。そのため、第４の雲素配置領域においては、板状体の第４の雲素を、略水平状に配置するのみで、処理を簡略化させることが可能である。
【００６９】
またこの場合、第２９の発明のように、第２８の発明のゲーム情報であって、
前記第３の装置に対して、前記配置位置決定手段が用いる前記所与の配置位置繰り返しパターンを展開することにより、前記第４の雲素の配置位置を決定する手段、を機能させるための情報と、
前記第４の配置手段に対して、前記決定された第４の雲素の配置位置に、前記第４の雲素を略水平状に配置する、ように機能させるための情報と、
を含むこととしてもよい。
【００７０】
この第２９の発明によれば、第３の雲素を配置する際に基準とした、配置位置繰り返しパターンを、第４の雲素の配置位置へも適用することができる。したがって、第２２の発明の効果を、第４の雲素に対しても得ることができる。
【００７１】
さらに第３０の発明のように、
第２８または第２９の発明のゲーム情報であって、
前記第３の装置に対して、前記第４の雲素の配置位置に応じて、前記各第４の雲素の透明度を設定する第４の雲素透明度設定手段、を機能させるための情報を含むこととしてもよい。
【００７２】
この第３０の発明によれば、例えば、雲の濃淡を、配置位置に応じて変更することができる。本発明をより具体化する手法としては例えば第３１の発明や第３２の発明がある。
【００７３】
例えば、第３１の発明のように、第３０の発明のゲーム情報であって、
前記第４の雲素透明度設定手段に対して、前記第３のオブジェクト空間における雲の存在可否を表す雲分布図に基づいて、前記各第４の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【００７４】
この第３１の発明によれば、雲分布図に従って、第４の雲素の透明度が設定されるため、第３のオブジェクト空間全体に渡る雲の表示／非表示を管理することができる。即ち、第４の雲素の配置位置は、第３０の発明によって決定されるが、実際に表現されるか否か（より正確には、第４の雲素の色が描画されるか否か）は雲分布図に従って決定される。なお、この雲分布図を、第３の雲素と共有してもよいことは勿論である。
【００７５】
また、第３２の発明のように、第３０または第３１の発明のゲーム情報であって、
前記第４の雲素透明度設定手段に対して、前記第３の仮想カメラから前記各第４の雲素までの距離に基づいて、前記各第４の雲素の透明度を設定する、ように機能させるための情報を含むこととしてもよい。
【００７６】
この第３２の発明によれば、例えば、第３の仮想カメラからより遠方に配置される第４の雲素の透明度を、徐々に上げるよう設定することにより、第３の仮想カメラからの遠方における視認性を向上させ、また、第４の雲素が遙か遠くまで続いているかのように表現することができる。
【００７７】
第３３の発明は、第１３から第２０の発明のいずれかのゲーム情報と、第２２から第３２の発明のいずれかのゲーム情報とを含むゲーム情報であって、
前記第２の装置と前記第３の装置は同一の装置であり、
当該装置に対して、
前記第２の仮想カメラを前記第３の仮想カメラとする手段と、
前記第２のオブジェクト空間を前記第３のオブジェクト空間とする手段と、
前記第２の生成手段により生成されたテクスチャ情報を前記第２の雲状オブジェクトに反映させる手段と、
前記第２の雲状オブジェクトを前記第３の雲素とする手段と、
を機能させるための情報を含むことを特徴とする。
【００７８】
この第３３の発明によれば、第１３から第２０の発明のいずれかの発明の効果と、第２２から第３２の発明のいずれかの発明の効果とを備えるゲーム情報を実現することができる。具体的には、例えば、第２の雲素によって、板状体ではあるが様々な態様を有する第２の雲状オブジェクト（第３の雲素）を表現することができ、かつ、第２の雲状オブジェクト（第３の雲素）の第３のオブジェクト空間における配置位置計算を簡略化することができる。
【００７９】
第３４の発明は、第３３の発明のゲーム情報であって、
前記第２の生成手段に対して、複数種類のテクスチャ情報を生成する、ように機能させるための情報と、
前記装置に対して、前記第２の生成手段により生成される複数種類のテクスチャ情報を反映させることにより、テクスチャ情報の異なる複数種類の第２の雲状オブジェクトを生成する手段、を機能させるための情報と、
前記第３の配置手段に対して、前記複数種類の第２の雲状オブジェクトを配置する、ように機能させるため情報と、
を含むことを特徴としている。
【００８０】
この第３４の発明によれば、複数種類の第２の雲状オブジェクトを生成する、即ち、複数種類の第３の雲素とすることができるため、第３のオブジェクト空間において表現する雲状物の表現を多様化することができる。
【００８１】
第３５の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ（例えば、図２０に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記仮想カメラの位置または視線方向が変化する場合に、視界から外れた領域に存在していた雲状オブジェクト（例えば、実施の形態における中雲ビルボード）を新たに視界となる領域に表現することにより、雲状オブジェクトが存する空間が続いていることを擬似的に表現する手段（例えば、図３１に示す雲海生成部６１８及び雲海描画部６４０）、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００８２】
この第３５の発明によれば、仮想カメラの位置の変化などによって、視界から外れた雲状オブジェクトを新たに視界となる領域に表現することによって、オブジェクト空間において、雲状オブジェクトが連続的に配置されているかのような表現をすることができ、雲状オブジェクトの画像生成に係る処理を軽減させることができる。
【００８３】
第３６の発明のゲーム情報は、プロセッサによる演算・制御により、仮想カメラ（例えば、図２０に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行することとなる装置に対して、
前記仮想カメラの位置の変化に応じて、前記仮想カメラの視界の略中央付近から仮想カメラに接近する雲状オブジェクト（例えば、実施の形態における中雲ビルボード）に対する透明度を上げて、視界の遠方から視界の略中央付近に移動する雲状オブジェクトに対する透明度を下げる手段（例えば、図３１に示す不透明度設定部６２２）、を機能させるための、前記プロセッサによる演算可能なゲーム情報である。
【００８４】
この第３６の発明によれば、仮想カメラの視界の略中央付近における雲状オブジェクトの透明度が高く、仮想カメラの近方および遠方に位置する透明度が低いため、視認性が高く、操作性のよいオブジェクト空間の画像（ゲーム画像）とすることができる。
【００８５】
また、第３７の発明のように、第１から第３６の発明のいずれかのゲーム情報を記憶する情報記憶媒体を実現することとしてもよい。
【００８６】
第３８の発明は、仮想カメラ（例えば、図２に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラの所与の角度パラメータの値（例えば、図２に示すピッチ角Ｘ）に応じて予め用意された複数種類の雲素（例えば、図３に示す雲パーツＡ（１２２）、雲パーツＢ（１２４））を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクト（例えば、実施の形態における小雲ビルボード）に反映させるテクスチャ情報（例えば、図４に示す小雲テクスチャ１０２）を生成する生成手段（例えば、図３１に示す小雲描画部６３２）、を備えるゲーム装置である。
【００８７】
この第３８の発明によれば、例えば、雲状オブジェクトの一側面（例えば、正面）と他側面（例えば、裏面）を表す２つの雲素を用意し、仮想カメラの視線方向に応じて、その雲素を切り換えること等が可能である。即ち、雲状オブジェクトは仮想カメラに向けて配置されるため、例えば、雲状オブジェクトの正面と裏面を矛盾なく、かつ容易に表現することが可能である。
【００８８】
また更に、仮想カメラの「角度パラメータの現在値に応じ」て、雲状オブジェクトに反映されるテクスチャ情報が生成されるため、オブジェクト空間に雲状オブジェクトを配置する際、雲状オブジェクトの上下左右方向を考慮する必要がない。即ち、例えば、仮想カメラのロール角が変化する場合には、雲状オブジェクトを、当該ロール角に応じて回転させる必要が生じるが、そのロール角に応じてテクスチャ情報が生成されるため、雲状オブジェクトは、単に、オブジェクト空間に配置するだけ（より正確には、オブジェクト空間には、雲状オブジェクトを配置する位置を決定するだけ）で済む。
【００８９】
第３９の発明は、仮想カメラ（例えば、図１４に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
雲モデル空間（例えば、図１４に示す中雲座標系）に雲素（例えば、図１４に示す小雲ビルボード２４−１〜３２）を複数配置する配置手段（例えば、図３１に示す中雲生成部６１２）と、
前記雲モデル空間を透視変換することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の雲状オブジェクト（例えば、実施の形態における中雲ビルボード）に反映させるテクスチャ情報（例えば、実施の形態における中雲テクスチャ）を生成する生成手段（例えば、図３１に示す中雲描画部６３４）と、
を備えるゲーム装置である。
【００９０】
この第３９の発明によれば、オブジェクト空間に配置される雲状オブジェクトは板状体ではあるが、様々な態様の雲状オブジェクトを表現することができる。なぜならば、雲状オブジェクトに反映される、生成手段によって生成されるテクスチャ情報は、雲素が複数配置された雲モデル空間を透視変換したものであるため、透視変換の仕方によって、種々のテクスチャ情報を生成することが可能だからである。また本発明により、オブジェクト空間に係る処理と、テクスチャ情報を生成する処理とを区別して処理することが可能となり、オブジェクト空間に係る処理負荷を軽減させることができる。なお、第２の雲素を板状体により構成してもよい。
【００９１】
第４０の発明は、仮想カメラ（例えば、図１４に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
前記仮想カメラの所与の角度パラメータの値（例えば、図２に示すピッチ角Ｘ）に応じて予め用意された複数種類の雲素（例えば、図３に示す雲パーツＡ（１２２）、雲パーツＢ（１２４））を、前記所与の角度パラメータの現在値に応じた所与の割合で合成処理することによりテクスチャ情報（例えば、図４に示す小雲テクスチャ１０２）を生成する第１の生成手段（例えば、図３１に示す小雲描画部６３２）と、
前記第１の生成手段により生成されたテクスチャ情報を、板状体の第１の雲状オブジェクト（例えば、実施の形態における小雲ビルボード）に反映させる手段（例えば、中雲描画部６３４）と、
雲モデル空間（例えば、実施の形態における中雲座標系）に前記第１の雲状オブジェクトを複数配置する配置手段（例えば、図３１に示す中雲生成部６１２）と、
前記雲モデル空間を透視変換することにより、前記オブジェクト空間に前記仮想カメラに向けて配置される板状体の第２の雲状オブジェクト（例えば、実施の形態における中雲ビルボード）に反映させるテクスチャ情報（例えば、実施の形態における中雲テクスチャ）を生成する第２の生成手段（例えば、図３１に示す中雲描画部６３４）と、
を備えるゲーム装置である。
【００９２】
この第４０の発明によれば、例えば、仮想カメラの視線方向に対して矛盾のない、板状体の第１の雲状オブジェクトを生成することができ、かつ、様々な態様の第２の雲状オブジェクトを表現することができる。
【００９３】
第４１の発明は、仮想カメラ（例えば、図２０に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
所与の配置位置繰り返しパターンを展開することにより前記オブジェクト空間に複数配置する雲素（例えば、実施の形態における中雲ビルボード）の配置位置を決定する配置位置決定手段（例えば、図３１に示す中雲配置部６１４）と、
前記配置位置決定手段により決定された配置位置に、板状体の前記雲素を配置する配置手段（例えば、図３１に示す中雲配置部６１４）と、
前記雲素を前記仮想カメラに対する所与の方向に向ける対向配置手段（例えば、図３１に示す中雲配置部６１４）と、
を備えるゲーム装置である。
【００９４】
ここで、所与の配置位置繰り返しパターンとは、雲素の配置位置が決定されたある単位領域における、配置位置のパターンのことであり、例えばこのパターンを縦２×横２×高さ２に配置（展開）することによって、単位領域の８倍（＝２×２×２）の大きさの領域における雲素の配置位置を決定することができる。
【００９５】
換言すれば、オブジェクト空間の、任意の領域における雲素の配置位置が、このパターンの展開によって決定しうる。即ち、この第４１の発明によれば、オブジェクト空間における、雲素の配置位置を容易に決定することができる。例えば、配置位置繰り返しパターンの大きさ（上記の単位領域の大きさ）を仮想カメラの視界と略同一とし、仮想カメラを右方向へパンさせた場合、視野の左側から見えなくなった雲素が、視野の右側から表出することとなる。即ち、配置位置繰り返しパターンのみで、雲素の、オブジェクト空間全ての配置位置を決定することができる。また、雲素は板状体の雲素であるため、オブジェクト空間の画像生成に係る処理負荷を軽減することができる。
【００９６】
第４２の発明は、仮想カメラ（例えば、図２０に示す仮想カメラ１００）から見たオブジェクト空間の画像を生成して、所与のゲームを実行するゲーム装置であって、
雲モデル空間（例えば、実施の形態における中雲座標系）に雲素（例えば、実施の形態における小雲ビルボード）を複数配置する雲素配置手段（例えば、図３１に示す中雲生成部６１２）と、
前記雲モデル空間を透視変換することにより、テクスチャ情報を生成する生成手段（例えば、図３１に示す中雲描画部６３４）と、
前記生成手段により生成されるテクスチャ情報を板状体の雲状オブジェクト（例えば、実施の形態における中雲ビルボード）に反映させる手段（例えば、図３１に示す雲海描画部６４０）と、
所与の配置位置繰り返しパターンを展開することにより前記オブジェクト空間に複数配置する前記雲状オブジェクトの配置位置を決定する配置位置決定手段（例えば、図３１に示す中雲配置部６１４）と、
前記配置位置決定手段により決定された配置位置に、前記雲状オブジェクトを配置する雲状オブジェクト配置手段（例えば、図３１に示す中雲配置部６１４）と、
前記雲状オブジェクトを前記仮想カメラに対する所与の方向に向ける対向配置手段（例えば、図３１に示す中雲配置部６１４）と、
を備えるゲーム装置である。
【００９７】
この第４２の発明によれば、例えば、雲素によって、板状体ではあるが様々な態様を有する雲状オブジェクトを表現することができ、かつ、雲状オブジェクトのオブジェクト空間における配置位置計算を簡略化することができる。
【図面の簡単な説明】
【００９８】
【図１】本発明を家庭用のゲーム装置に適用した場合の一例を示す図である。
【図２】（ａ）仮想カメラと小雲テクスチャとの関係、（ｂ）仮想カメラ角度、を説明する図である。
【図３】小雲テクスチャの合成の概念を示す図である。
【図４】小雲テクスチャの一例を示す図である。
【図５】雲パーツＡ及び雲パーツＡ用マスクの一例を示す図である。
【図６】雲パーツＢ及び雲パーツＢ用マスクの一例を示す図である。
【図７】気流テクスチャの一例を示す図である。
【図８】（ａ）雲パーツＡ、（ｂ）雲パーツＢ、（ｃ）気流テクスチャの画像の一例を示す図である。
【図９】仮想カメラのピッチ角Ｘが（ａ）Ｘ＝０°、（ｂ）Ｘ＝４５°、（ｃ）Ｘ＝９０°の場合の小雲テクスチャの一例を示す図である。
【図１０】小雲テクスチャの反転する原理を示す図である。
【図１１】中雲の画像例を示す図である。
【図１２】中雲座標系の一例を示す斜視図である。
【図１３】小雲分布データの一例を示す図である。
【図１４】（ａ）中雲座標系における仮想カメラと中雲座標系の原点と投影スクリーンとの位置関係、（ｂ）ワールド座標系と中雲座標系との関係、を示す図である。
【図１５】中雲バッファの一例を示す模式図である。
【図１６】特定点と特定ベクトルとを説明する図である。
【図１７】関数ｆ（ω）のグラフを示す図である。
【図１８】（ａ）ＦL（ω）、（ｂ）ＦB（ω）、（ｃ）ＦS（ω）、の各関数のグラフを示す図である。
【図１９】色決定テーブルの一例を示す図である。
【図２０】仮想カメラと雲設定領域との関係を示す図である。
【図２１】ワールド座標系における雲設定領域の一例を示す図である。
【図２２】雲海座標系における雲設定領域の一例を示す図である。
【図２３】雲設定領域の移動に伴い中雲ビルボードの配置位置の変化を説明する図である。
【図２４】雲設定領域の移動に伴い中雲ビルボードの配置位置の変化を説明する図である。
【図２５】雲を含む表示画面の一例を示す図である。
【図２６】仮想カメラの視界と雲設定領域との関係の一例を示す図である。
【図２７】雲設定領域内の不透明度の分布例を示す図である。
【図２８】遠景雲設定領域の一例を示す図である。
【図２９】遠景雲設定領域に設定される雲を含む画像の一例を示す図である。
【図３０】雲分布マップの一例を示す図である。
【図３１】本実施の形態における機能ブロックの一例を示すブロック図である。
【図３２】特定点色データ８０６のデータ構成の一例を示す図である。
【図３３】中雲分布データのデータ構成の一例を示す図である。
【図３４】雲層データのデータ構成の一例を示す図である。
【図３５】描画対象設定データのデータ構成の一例を示す図である。
【図３６】本実施の形態における雲生成処理の動作の一例を示すフローチャートである。
【図３７】本実施の形態における初期設定処理の動作の一例を示すフローチャートである。
【図３８】本実施の形態における小雲生成処理の動作の一例を示すフローチャートである。
【図３９】本実施の形態における中雲生成処理の動作の一例を示すフローチャートである。
【図４０】本実施の形態における雲海生成処理の動作の一例を示すフローチャートである。
【図４１】本実施の形態を実現できるハードウェアの構成の一例を示す図である。
【図４２】ホスト装置と通信回線を介して接続されるゲーム端末に本実施の形態を適用した場合の一例を示す図である。
【図４３】小雲ビルボードの分布例を示す図である。
【図４４】小雲ビルボードの分布例を示す図である。
【発明を実施するための形態】
【００９９】
以下、本発明の好適な実施形態について図面を参照して説明する。なお、以下、飛行機ゲームを例にとって説明するが、本発明の適用は、これに限るものではない。
【０１００】
図１は、本発明を家庭用ゲーム装置に適用した場合の一例を示す図である。図１において、プレーヤは、ディスプレイ１２００に写し出されたゲーム画像を見ながら、ゲームコントローラ１２０２、１２０４を操作して、飛行機を操縦し、飛行機ゲームを楽しむ。この場合、ゲームプログラム等のゲームを行なうために必要な情報は、本体装置に着脱自在な情報記憶媒体であるＣＤ−ＲＯＭ１２０６、ＩＣカード１２０８、メモリカード１２１２等に格納されている。
【０１０１】
このような飛行機ゲームにおいては、プレーヤの操作に応じて、飛行機の位置、向きが様々に変化するため、ゲーム画像を生成する際の仮想カメラの位置、角度等が様々に変化する。本発明は、このように、仮想カメラの位置、角度の変化に対してゲーム画像に含まれる雲を矛盾なく表現するものである。以下、本発明に係る、１．原理、２．機能、３．動作について詳細に説明する。
【０１０２】
１．原理
まず、本発明の原理について説明する。本発明では、オブジェクト空間に設定される雲（雲海を）生成する際に、まず、一片の小さい雲である小雲を生成し、その小雲の集合である中雲を生成し、その中雲の集合として雲海を生成、表現する。以下、小雲、中雲、雲海の生成原理について説明する。
【０１０３】
１−（１）小雲生成原理
以下、図２〜図１０を参照して小雲（小雲を表現するテクスチャ（以下、小雲テクスチャ１０２という。））の生成に係る原理について説明する。尚、生成される小雲テクスチャ１０２は、透明度（不透明度α）のみを有するテクスチャ（以下、αテクスチャという。）であるが、後述する処理との関連を分かり易くするため、便宜上１枚のポリゴン（以下、仮想ペラポリゴンという。）として生成されるかのように図示・説明する。
【０１０４】
図２（ａ）は、オブジェクト空間（ワールド座標系に基づく）内において、仮想カメラ１００と、この生成される小雲テクスチャ１０２と、を表す図である。同図に示すように、小雲テクスチャ１０２は、常に仮想カメラ１００の視線方向に垂直に対向するように設定される。
【０１０５】
仮想カメラ１００に関するパラメータの種別としては、仮想カメラ位置と、仮想カメラ角度とがある。仮想カメラ位置は、ワールド座標系における仮想カメラ１００の位置（Ｘｗ，Ｙｗ，Ｚｗ）を表すパラメータである。仮想カメラ角度は、同図（ｂ）に示すように、仮想カメラ１００のピッチ角（鉛直方向の首振り角であり仰角および俯角）を表す角度Ｘ（以下、ピッチ角Ｘ）、ヨー角（水平方向の首振り角）を表す角度Ｙ（以下、ヨー角Ｙ）、ロール角（視線方向を中心とした回転角（ねじれ））を表す角度Ｚ（以下、ロール角Ｚ）、により表されるパラメータである。
【０１０６】
ただし、ピッチ角Ｘの取り得る値の範囲は−９０°≦Ｘ≦９０°であり、仰角を正、俯角を負とする。
【０１０７】
また、上記パラメータ以外に、必要に応じて、視野範囲（ズーム率）を表す画角などの各種パラメータが用いられる。
【０１０８】
小雲テクスチャ１０２は、図３に示す概念図のように、１）気流テクスチャ１０４の不透明度（以下、α値という。）を雲パーツＡ（１２２）に設定、２）気流テクスチャ１０４のα値を雲パーツＢ（１２４）に設定、３）雲パーツＡ（１２２）と雲パーツＢ（１２４）のα値を合成、することにより生成される。これらの雲パーツＡ（１２２）、Ｂ（１２４）、及び気流テクスチャ１０４は、α値のみを持つαテクスチャであり、上述したように小雲テクスチャ１０２もまたαテクスチャである。尚、α値は、不透明度を表すパラメータであり"０"以上"１"以下の数であり、"０"であれば完全な透明を、"１．０"であれば不透明な状態を表す。
【０１０９】
また、雲パーツＡ（１２２）は、仮想カメラ１００のピッチ角Ｘが０°、即ち、仮想カメラ１００の視線方向が水平方向の場合を想定したαテクスチャであり、雲パーツＢ（１２４）は、仮想カメラ１００のピッチ角Ｘが±９０°、即ち、仮想カメラ１００の視線方向が鉛直方向の場合を想定したαテクスチャである。
【０１１０】
気流テクスチャ１０４とは、アニメーションによりα値の時間的変化を表したテクスチャであって、所定方向への気流を表現しているものである。但し、気流テクスチャ１０４を瞬間的にとらえた場合には、静止したα値の分布を表したものと考えられる。
【０１１１】
図４は小雲テクスチャ１０２の一例を示す図、図５は雲パーツＡ（１２２）（同図（ａ））及び雲パーツＡ用マスク１１２（同図（ｂ））の一例を示す図、図６は雲パーツＢ（１２４）（同図（ａ））及び雲パーツＢ用マスク１１４（同図（ｂ））の一例を示す図、図７は気流テクスチャ１０４の一例を示す図である。
【０１１２】
ここで、小雲テクスチャ１０２、雲パーツＡ（１２２），雲パーツＢ（１２４）、雲パーツＡ用マスク１１２、雲パーツＢ用マスク１１４および気流テクスチャ１０４は、それぞれ３６（＝６×６）テクセルで構成されていることとし、各テクセルの座標を［ｎ，ｍ］と表現する。ただし、ｎ，ｍ＝０，１，２，３，４，５である。また、気流テクスチャ１０４のテクセル［ｎ，ｍ］のα値をα［ｎ，ｍ］、雲パーツＡ（１２２）のテクセル［ｎ，ｍ］のα値をαA［ｎ，ｍ］、雲パーツＢ（１２４）のテクセル［ｎ，ｍ］のα値をαB［ｎ，ｍ］、小雲テクスチャ１０２のテクセル［ｎ，ｍ］のα値をＣα［ｎ，ｍ］と表現する。
【０１１３】
雲パーツＡ用マスク１１２とは、雲パーツＡ（１２２）の形状を特定するためのビットパターンであり、雲パーツＢ用マスク１１４とは、雲パーツＢ（１２４）の形状を特定するためのビットパターンであって、共に、各テクセル［ｎ，ｍ］に"０"または"１"の値が予め設定されている。
【０１１４】
まず、雲パーツＡ（１２２）の各テクセル［ｎ，ｍ］に雲パーツＡ用マスク１１２の値を設定し、雲パーツＢ（１２４）の各テクセル［ｎ，ｍ］に雲パーツＢ用マスク１１４の値を設定する。即ち、
αA［ｎ，ｍ］＝ＭA［ｎ，ｍ］
αB［ｎ，ｍ］＝ＭB［ｎ，ｍ］              ・・・（１）
とする。ここで、ＭA［ｎ，ｍ］は、雲パーツＡ用マスク１１２の各テクセルのビット値を表し、ＭB［ｎ，ｍ］は、雲パーツＢ用マスク１１４の各テクセルのビット値を表す。
【０１１５】
この式（１）により、雲パーツＡ（１２２）と雲パーツＢ（１２４）には、値"０"または"１"による雲の形状が設定されることとなる。
【０１１６】
次に、仮想カメラ１００のピッチ角Ｘに応じて、雲パーツＡ（１２２）の各テクセル［ｎ，ｍ］に対応する気流テクスチャ１０４のテクセル［ｎ，ｍ］のα値を設定するとともに、雲パーツＢ（１２４）の各テクセル［ｎ，ｍ］に対応する気流テクスチャ１０４のテクセル［ｎ，ｍ］のα値を設定する。即ち、
αA［ｎ，ｍ］←α［ｎ，ｍ］×ｃｏｓＸ    ×αA［ｎ，ｍ］
αB［ｎ，ｍ］←α［ｎ，ｍ］×ｓｉｎ｜Ｘ｜×αB［ｎ，ｍ］  ・・・（２）
とする。ここで、←は、代入を意味する演算子であり、右辺の演算結果を左辺の変数に代入することを意味する。
【０１１７】
即ち、例えば、雲パーツＡ（１２２）に値"１"が格納されているテクセル［ｎ，ｍ］には、気流テクスチャ１０４のα値が反映されることとなり、逆に、値"０"が格納されているテクセル［ｎ，ｍ］には、気流テクスチャ１０４のα値が反映されないこととなる。従い、式（１）の雲パーツＡ用マスク１１２及び雲パーツＢ用マスク１１４により、雲パーツＡ（１２２）及び雲パーツＢ（１２４）の形状が形作られるとともに、気流テクスチャ１０４のアニメーションによって、雲パーツＡ（１２２）及び雲パーツＢ（１２４）内の雲の粒子が時間経過に従って流れていく様を表現することができる。
【０１１８】
さらに、式（２）では、仮想カメラ１００のピッチ角Ｘによって、雲パーツＡ（１２２），雲パーツＢ（１２４）に反映される気流テクスチャ１０４のα値が変化することとなる。
【０１１９】
例えば、仮想カメラ１００の視線方向が水平面と平行になった場合、即ち、ピッチ角Ｘ＝０°となった場合には、
αA［ｎ，ｍ］←α［ｎ，ｍ］×αA［ｎ，ｍ］
αB［ｎ，ｍ］←０          ×αB［ｎ，ｍ］
となり、雲パーツＡ（１２２）のαA［ｎ，ｍ］には、気流テクスチャ１０４のα［ｎ，ｍ］が設定されることとなる。また、雲パーツＢ（１２４）のαB［ｎ，ｍ］には、気流テクスチャ１０４のα［ｎ，ｍ］が反映されないこととなる。
【０１２０】
同様に、ピッチ角Ｘ＝４５°となった場合には、
αA［ｎ，ｍ］←α［ｎ，ｍ］×（１／√２）×αA［ｎ，ｍ］
αB［ｎ，ｍ］←α［ｎ，ｍ］×（１／√２）×αB［ｎ，ｍ］
となる。
【０１２１】
また、仮想カメラ１００の視線方向が真上あるいは真下となった場合、即ち、ピッチ角Ｘ＝９０°あるいは−９０°となった場合には、
αA［ｎ，ｍ］←０          ×αA［ｎ，ｍ］
αB［ｎ，ｍ］←α［ｎ，ｍ］×αB［ｎ，ｍ］
となり、雲パーツＢ（１２４）のαB［ｎ，ｍ］には、気流テクスチャ１０４のα［ｎ，ｍ］が設定されることとなるが、雲パーツＡ（１２２）のαA［ｎ，ｍ］には、気流テクスチャ１０４のα［ｎ，ｍ］が反映されないこととなる。
【０１２２】
またここで、雲パーツＡ（１２２）と雲パーツＢ（１２４）とで、反映させる気流テクスチャ１０４の気流の方向を変更することとしてもよい。例えば、式（２）を以下のように変形する。
αA［ｎ，ｍ］←α［ｎ，ｍ］×ｃｏｓＸ×αA［ｎ，ｍ］
αB［ｎ，ｍ］←α［（５−ｎ），（５−ｍ）］×ｓｉｎ｜Ｘ｜×αB［ｎ，ｍ］
このような式とすることにより、同一の気流テクスチャ１０４を用いているが、簡単に、雲パーツＡ（１２２）と雲パーツＢ（１２４）とで、気流の方向を変えることが可能である。また更に式（２）を変形することにより、気流テクスチャ１０４の一部分を拡大して、雲パーツＡ（１２２）と雲パーツＢ（１２４）とに反映させることとしても良い。
【０１２３】
次に、雲パーツＡ（１２２）の各テクセル［ｎ，ｍ］のα値と、雲パーツＢ（１２４）の各テクセル［ｎ，ｍ］のα値とを合算することにより、小雲テクスチャ１０２の各テクセル［ｎ，ｍ］のα値を決定する。即ち、
Ｃα［ｎ，ｍ］＝αA［ｎ，ｍ］＋αB［ｎ，ｍ］      ・・・（３）
として決定される。但し、式（３）においては、α値が"１．０"を超える場合が起こり得、この場合には、そのテクセルのα値は"１．０"とする。
【０１２４】
図８（ｃ）は気流テクスチャ１０４の一例を示す図であり、同図（ａ）、（ｂ）はこの気流テクスチャ１０４の不透明度（α値）が反映された、雲パーツＡ（１２２）（同図（ａ））、雲パーツＢ（１２４）（同図（ｂ））の一例を示す図である。また、図９は、上記雲パーツＡ（１２２）、雲パーツＢ（１２４）の合成により生成された小雲テクスチャ１０２の一例を示す図である。同図（ａ）は、ピッチ角Ｘ＝９０°の場合を、同図（ｂ）は、ピッチ角Ｘ＝４５°の場合を、同図（ｃ）は、ピッチＸ＝０°の場合を、それぞれ表す図である。尚、図８及び図９においては、α値を視覚的に把握しやすくするために、α値が"１"の部分を"白色"に、またα値が"０"に近づくにつれ"黒色"に近づくように表現されている。即ち、図８及び図９は、α値を色の濃淡として表した図である。
【０１２５】
以上のように、本原理においては、雲パーツＡ（１２２）と雲パーツＢ（１２４）とを仮想カメラ１００のピッチ角Ｘに応じて合成することとしたため、単純な手法ながらも立体感のある雲を表現することができる。
【０１２６】
即ち、従来においては、雲のテクスチャをマッピングさせた１枚のポリゴン（以下、ペラポリゴンという。）を、常に、仮想カメラ１００に対する上下左右位置を固定し、かつ、仮想カメラ１００の視線方向に垂直に配置する方法が採られていた。しかしこの方法によると、仮想カメラ１００の位置や視線方向等が変化しても雲は全く変化しないため、違和感のある表現であった。またさらに、仮想カメラ１００の視線方向の変化に対して、雲のペラポリゴンが意図しない変化をする事象が発生する。即ち、例えば視線方向の仰角あるいは俯角が大きくなると、±９０°の角度を境にして、雲が反転して表現されてしまう。
【０１２７】
これは、仮想カメラ１００のピッチ角（仰角あるいは俯角）として取り得る角度範囲が−９０°〜９０°であるため、±９０゜を超えたピッチ角θ2は、図１０に示すように、θ2'（＜９０゜）と設定されることに起因する。
【０１２８】
本原理はこの意図しない小雲テクスチャ１０２の反転表現をも解決するものである。即ち、２枚の雲パーツＡ（１２２），雲パーツＢ（１２４）を用意し、仮想カメラ１００のピッチ角に応じて合成することにより、ある角度で雲が反転するという事象は発生し得ない。
【０１２９】
また、ピッチ角Ｘの変化に応じて、徐々に２枚の雲パーツＡ（１２２），雲パーツＢ（１２４）の合成比率を変化させることにより（即ち、２枚の雲パーツＡ（１２２），雲パーツＢ（１２４）の不透明度αを決定することに該当する）、仮想カメラ１００のピッチ角の変化に応じて、なめらかに雲の形状を変化させて、表現することができる。
【０１３０】
更に、各雲パーツＡ（１２２），雲パーツＢ（１２４）それぞれに気流テクスチャ１０４が合成されるため、２枚の雲パーツＡ（１２２），雲パーツＢ（１２４）の雲縁を曖昧にすることができ、より自然な雲を表現することができる。
【０１３１】
次に、小雲生成原理のみで雲を実現する場合について説明する。
上記説明においては、小雲テクスチャ１０２をαテクスチャとして生成する方法について説明したが、以下の処理を追加することにより、雲としての表現を実現することができる。
【０１３２】
第１の方法は、生成された小雲テクスチャ１０２を構成する各テクセルに、そのテクセルのα値に応じたＲＧＢ値を決定し、雲を表現する方法である。
【０１３３】
具体的には、例えば、小雲テクスチャ１０２の色をモノクロで表現する場合、"白色"のＲＧＢ値は（２５５，２５５，２５５）であり、"黒色"のＲＧＢ値は（０，０，０）である。従い、生成された小雲テクスチャ１０２において、α値が"１"であるテクセルに対しては、"白色"となるようにＲＧＢ値（２５５，２５５，２５５）を設定し、α値が"０"に近づくにつれて、段々と白色が薄くなっていくように、そのテクセルのＲＧＢ値を設定する（例えば、ＲＧＢ値＝２５５×α値）。
【０１３４】
このことにより、図９に示すような、濃淡がある雲の表現を容易に実現することができる。
【０１３５】
第２の方法は、雲パーツＡ（１２２），雲パーツＢ（１２４）を構成する各テクセルに予めＲＧＢ値を設定しておく方法である。
【０１３６】
具体的には、雲パーツＡ（１２２），雲パーツＢ（１２４）の各テクセルにＲＧＢ値を予め設定しておき、各テクセルのα値を気流テクスチャ１０４により決定する。そして、雲パーツＡ（１２２），雲パーツＢ（１２４）をαブレンディングすることにより小雲テクスチャ１０２を生成する。
【０１３７】
このことにより、例えば、雲パーツＡ（１２２）に予め設定する色を"黒色"のみ、雲パーツＢ（１２４）に予め設定する色を"白色"のみとすると、水平方向から小雲テクスチャ１０２を見た場合（ピッチ角Ｘ＝０゜の場合）には、小雲テクスチャ１０２の色は"黒色"となる。そして、徐々にピッチ角Ｘが変化することにより、次第に"灰色"（"黒色"に"白色"が混じった色）に見え、更にピッチ角Ｘを大きくすると、"白色"の混じる割合が大きくなり、ついには上方あるいは下方から見ると（ピッチ角Ｘ＝９０゜の場合） "白色"に見える雲の表現を実現することができる。
【０１３８】
尚、各雲パーツＡ（１２２），雲パーツＢ（１２４）に予め設定する雲の色（ＲＧＢ値）を任意に変更することにより、仮想カメラ１００の視線のピッチ角Ｘによって、様々に色が異なる雲の表現を実現することができる。
【０１３９】
また、例えば、雲パーツＢ（１２４）として、仮想カメラ１００のピッチ角Ｘが俯角の場合に用いる雲パーツＢ−１と、仮想カメラ１００のピッチ角Ｘが仰角の場合に用いる雲パーツＢ−２との２種類の雲パーツＢを設定しておき、仮想カメラのピッチ角Ｘに応じて、雲パーツＢ−１と雲パーツＢ−２とを切り換えることとしても良い。例えば、１種類の雲パーツＢ（１２４）を用いて小雲テクスチャ１０２を生成する場合には、小雲の上面を見た場合と下面を見た場合とで同じ小雲テクスチャが生成されるが、雲パーツＢ−１と雲パーツＢ−２とを切り換えることにより、小雲の上面を見た場合の小雲テクスチャ１０２と小雲の下面を見た場合の小雲テクスチャ１０２とで、小雲の形状が異なるようにすることができ、より矛盾のない雲の形状を実現できる。
【０１４０】
同様に、雲パーツＡ（１２２）として、仮想カメラ１００のヨー角Ｙに対応する複数種類の雲パーツＡ（１２２）を設定しておき、仮想カメラ１００のヨー角Ｙに応じて雲パーツＡを切り換えることとしても良い。
【０１４１】
なお、上記小雲生成原理において生成した各雲パーツＡ（１２２），雲パーツＢ（１２４）には、気流テクスチャのα値が反映されており、この２種類の雲パーツＡ（１２２），雲パーツＢ（１２４）を合成して小雲テクスチャ１０２を生成している。このため、小雲テクスチャ１０２は、全体に気流がかかった雲として表現されることとなり、雲の粒子が雲全体に渡って動いているように表現される。リアリスティックな雲を表現する場合には、このような現象は必ずしも良いとはいえない。
【０１４２】
しかしながら、後述する中雲生成原理に基づいて、この小雲テクスチャ１０２を複数使用して中雲を生成することにより、ある範囲に小雲テクスチャ１０２を集中させて中雲テクスチャを生成するため、中心の透明度が低く、周辺に近づくにつれて透明度が高くなる中雲テクスチャが生成される。そのため、中雲の縁にのみに気流が表現される、リアルな雲を表現することができる。
【０１４３】
１−（２）中雲生成原理
次に中雲生成原理について説明する。
ここで、中雲とは、小さな雲（小雲）を寄せ集めた集合体を意味する。また、小雲とは、前述の方法により生成した不透明度（α値）のみを有する小雲テクスチャ１０２の意であり、これを３２個複製し、中雲モデル空間に３次元的に分布させることにより中雲を生成する。中雲モデル空間とは、中雲を生成するためのローカル座標系のことである（以下、この中雲モデル空間を中雲座標系という。）。そして、３次元的に配置された各小雲テクスチャ１０２の不透明度を、仮想カメラ１００に基づいて描画するとともに、仮想カメラ１００と光源との位置関係に応じた色を着色することにより、中雲テクスチャを生成する。
【０１４４】
具体的には、１つの中雲を、３２枚のペラポリゴンにより構成する。ただし、各ペラポリゴンの表面（ただし、仮想カメラ１００に面する側）には、小雲テクスチャ１０２のαテクスチャがマッピングされる。また、各ペラポリゴンは、中雲座標系における代表点の座標と大きさのみが定義されたものであり、ゲーム実行中においては、その面が仮想カメラ１００の視線方向に対して垂直に交わるように回転するビルボードである。
【０１４５】
以下では、この中雲を構成する個々のペラポリゴンを、小雲ビルボードという。そして、中雲テクスチャを生成する際には、まず、小雲テクスチャ１０２により指定された各小雲ビルボードのα値を、仮想カメラ１００に基づいて所与の平面座標上に描画する。また一方では、中雲に与える色情報を、オブジェクト空間における仮想カメラ１００と光源との位置関係に応じて決定し、描画されたα値に従って着色することにより中雲テクスチャを生成する。
【０１４６】
なお、小雲テクスチャ１０２を生成する際に、雲パーツＡ（１２２）、雲パーツＢ（１２４）は、仮想カメラ１００のロール角Ｚに応じて回転させるため、生成される小雲テクスチャ１０２は、仮想カメラ１００のロール角Ｚに応じて上下左右位置が変化する。そのため、その小雲テクスチャ１０２をマッピングした小雲ビルボード１０２は、上下左右位置が仮想カメラ１００のロール角Ｚに応じたものとなるため、代表点に配置するだけで良い。
【０１４７】
図１１は、本発明を適用することによって生成した４種の中雲２０２、２０４、２０６、２０８の画像例を示す図である。同図に示した各中雲は、３２個の小雲ビルボードをそれぞれ異なる分布で配置し、それ以外の全ての条件を同一に設定して生成したものである。即ち、各中雲の画像生成において、各小雲ビルボードにマッピングしたαテクスチャ（即ち、小雲テクスチャ１０２）は全て同一であり、また、各中雲と仮想カメラ１００との位置関係や、オブジェクト空間における仮想カメラ１００と光源との位置関係等の設定も全て等しくした。同図によれば、各中雲は、形状や透明さ、立体感等の見え方が異なる。このように、本発明では、３２個の小雲ビルボードの分布を変化させるだけで、複数の異なる中雲を生成する。また、オブジェクト空間における仮想カメラ１００と光源の位置関係に基づいて色情報を決定することとしたため、各画像から類推される光源の方向が等しいものとして認識できる。
【０１４８】
以下では、図１１に示すような４つの中雲２０２、２０４、２０６、２０８のテクスチャ（以下、中雲テクスチャ）を生成する方法について、詳細に説明する。なお、以下では、１）初期設定として、各中雲を構成する小雲ビルボードを分布させる方法について説明した後、２）小雲ビルボードの描画として、小雲ビルボードの集合体を描画する方法、即ち、各小雲ビルボードの不透明度αを描画し、着色する方法について説明する。
【０１４９】
１）初期設定
初期設定では、小雲ビルボードの分布と、各小雲ビルボードの大きさについて設定する。具体的には、中雲１つ１つに対して、中雲座標系を定義し、３２個の小雲ビルボードの座標を設定するとともに、各小雲ビルボードの大きさを決定し、各中雲のデータとして記憶する。なお、小雲ビルボードの大きさや分布の設定については、より自然体に近い中雲を生成するために、乱数を用いて行う。即ち、各小雲ビルボードの座標および大きさを乱数により決定する。
【０１５０】
小雲ビルボードの座標を決定する際には、座標における各成分毎に乱数を発生する。ただし、乱数を無制限に発生させた場合、不必要に大きい値が得られる可能性がある。このため、生成する乱数に下限と上限を設け、所定の範囲内の値が得られるように設定する。ただし、乱数を発生したとき、下限から上限に至る範囲内の全ての値について出現確立が等しい。従って、得られた乱数を小雲ビルボードの座標成分として直接採用した場合、３２個の小雲ビルボードは、所与の立方体内に満遍なく分布されることとなり、図１１に示す中雲のような一部に寄り集まった雲を表現することができない。そこで、分布に偏りを持たせるために、１つの小雲ビルボードの座標を決定する際に、各座標の１成分につき複数の乱数を発生して、その平均の値を採用する。
【０１５１】
具体的には、各成分の値を次の式により決定する。
ｘn＝（Ｒ1＋Ｒ2＋Ｒ3＋Ｒ4）／４−（Ｒmax−Ｒmin）／２
ｙn＝（Ｒ5＋Ｒ6＋Ｒ7＋Ｒ8）／４−（Ｒmax−Ｒmin）／２
ｚn＝（Ｒ9＋Ｒ10＋Ｒ11＋Ｒ12）／４−（Ｒmax−Ｒmin）／２  ・・・（４）
ここに、（ｘn、ｙn、ｚn）は、１つの中雲を構成するｎ番目のビルボードの座標を意味し、Ｒ1〜Ｒ12は、それぞれ独立に発生した乱数を示す。また、Ｒmaxは、発生させる乱数の最大値（上限）を、Ｒminは、最小値（下限）をそれぞれ意味する。例えば、Ｒmax＝１００、Ｒmin＝０として設定すれば、乱数の発生範囲は、中雲座標系における原点を中心とし、一辺の長さが"１００"の立方体となる。
【０１５２】
図１２は、中雲座標系（ｘ、ｙ、ｚ）の斜視図であり、式（４）に基づいて小雲ビルボードの代表点を分布させた一例を示すものである。同図における破線は、乱数の発生範囲を示す。また、各小雲ビルボードの代表点の座標を点により示した。このように、式（４）を用いて、複数の乱数により小雲ビルボードの座標を決定することによって、原点に偏った分布をする小雲ビルボードの集合体を構成することができる。
【０１５３】
なお、式（４）では、１成分につき、４つの乱数を用いることとして説明したが、この数に限定する必要はない。例えば、採用する乱数の数を増やせば、小雲ビルボードが原点の近くに配置される可能性がより高くなり、更に偏った分布を実現できる。逆に、採用する乱数の数を少なく設定すれば、偏りが小さい分布を施すことができる。このことは、式（４）において、乱数の発生範囲を操作することによっても同様の効果が認められる。即ち、乱数の発生範囲を大きく設定すれば、分布の偏りが小さくなり、発生範囲を小さく設定すれば、分布の偏りを大きくすることができる。従って、生成する中雲の形状や大きさ、立体感等に応じて採用する乱数の数や範囲を変更してもよい。
【０１５４】
一方、小雲ビルボードの大きさは、次のようにして決定する。即ち、１つ１つの小雲ビルボードを正方形として定義し、その一辺の長さｗｓを乱数により決定する。
ｗｓ＝１．０＋Ｒw    ・・・（５）
ここに、Ｒwは、乱数を意味し、その発生範囲を０．０≦Ｒw≦１．０とする。即ち、各中雲を、一辺の長さｗｓが１．０≦ｗｓ≦２．０を満たす、様々な大きさの小雲ビルボードの集合体により構成することができる。
【０１５５】
図１３は、上記初期設定により決定された各小雲ビルボードの座標と大きさを記憶する４つの小雲分布データ２１０ａ〜ｄの一例を示す図である。同図によれば、４つの小雲分布データ２１０ａ〜ｄには、それぞれの中雲を構成する小雲ビルボードのコード（ＮＯ．）と、各小雲ビルボードを配置する座標の各成分、および、一辺の長さｗｓが記憶される。ゲーム実行中においては、小雲分布データ２１０ａ〜ｄに記憶されたデータに基づいて、各小雲ビルボードを制御する。なお、同図においては、４つの中雲に対応する小雲分布データ２１０ａ〜ｄをそれぞれ独立して記憶することとして示したが、４つの中雲の小雲ビルボードをまとめて記憶させてもよい。即ち、１２８個の小雲ビルボードを１つの小雲分布データとして記憶してもよい。また、上記初期設定は、ゲームを実行する直前に行い、毎回異なる中雲を生成する構成にしてもよい。
【０１５６】
２）小雲ビルボードの描画
続いて、ゲーム実行中において、小雲ビルボードを描画する処理について説明する。
【０１５７】
図１４（ａ）は、中雲座標系（ｘ、ｙ、ｚ）を模式的に描いたものであり、小雲ビルボード２４−１〜３２を描画するための仮想カメラ（以下、雲視点２２０という）と、中雲座標系の原点と、投影スクリーン２２との位置関係を説明するための図である。ここに、投影スクリーン２２とは、小雲ビルボード２４−１〜３２の集合体を投影するための投影面であり、その面は、ワールド座標系における仮想カメラ１００の視線ベクトル３４に対して垂直に交わる関係にある。また、同図に示すように、雲視点２２０と、中雲座標系の原点と、投影スクリーン２２の中心点２２ａとは、ワールド座標系における仮想カメラ１００の視線ベクトル３４と平行な１つの直線２６上に配置される。従って、雲視点２２０の視線ベクトルは、ワールド座標系における仮想カメラ１００の視線ベクトル３４と等しくなる。なお、中雲座標系において、原点に対する雲視点２２０と投影スクリーン２２の距離を、それぞれ一定とする。
【０１５８】
図１４（ｂ）は、オブジェクト空間を定義するワールド座標系（Ｘｗ、Ｙｗ、Ｚｗ）と、（ａ）に示す中雲座標系（ｘ、ｙ、ｚ）とを示した図である。同図によれば、オブジェクト空間を映し出すためのスクリーン３２と仮想カメラ１００とを結ぶ直線３６と、中雲座標系の原点を経由した雲視点２２０と、投影スクリーン２２の中心点２２ａとを結ぶ直線２６とが平行である。即ち、ゲーム実行中において、ワールド座標系における仮想カメラ１００とスクリーン３２の座標を決定すると、仮想カメラ１００からスクリーン３２に向かう視線ベクトル３４を算出する。そして、この視線ベクトル３４の傾きに基づいて、中雲座標系における雲視点２２０と投影スクリーン２２の座標を決定する。なお、図１４（ｂ）において、位置関係を説明するために、ワールド座標系内に中雲座標系を配置したが、実際に配置するものではない。従って、小雲ビルボード２４の分布は、ワールド座標系における他のオブジェクトの配置・描画を妨げるものではない。
【０１５９】
このように、仮想カメラ１００の視線ベクトル３４と平行になるように、雲視点２２０と投影スクリーン２２との位置を決定し、雲視点２２０に基づいて、各小雲ビルボードを投影スクリーン２２上に投影変換する。但し、このとき、中雲座標系における３２個の小雲ビルボード２４−１〜３２の面がそれぞれ仮想カメラ１００の視線ベクトル３４に対して垂直に交わるように、各小雲ビルボードの頂点の座標を決定する。そして、各頂点について、投影スクリーン２２への投影変換を行う。即ち、１つの小雲ビルボードを投影スクリーン２２上に投影する際には、初期設定において生成した小雲分布データ２１０ａ〜ｄの中から該当する小雲ビルボードの代表点の座標と一辺の長さｗｓを読み出し、その読み出した値に基づいて視線ベクトル３４の方向を法線方向とし、且つ、代表点の座標を中心とする面の４つの頂点を算出する。そして、算出した４つの頂点を投影スクリーン２２上に投影することにより、小雲ビルボードの投影処理を行う。
【０１６０】
あるいは、小雲ビルボード２４の投影処理において、中雲座標系における小雲ビルボード２４と投影スクリーン２２とが常に平行であることを利用して、投影処理を次のように短絡化してもよい。まず、中雲座標系における小雲ビルボードの代表点の座標を、投影スクリーン２２上に投影する。一方で、該当する小雲ビルボード２４の一辺の長さｗｓを、投影スクリーン２２の座標系における長さｗｓ´に変換する（即ち、長さｗｓに対して透視変換の演算を施す）。そして、投影スクリーン２２の座標系において、投影された小雲ビルボード２４の代表点の座標を中心とする、一辺の長さｗｓ´の正方形の頂点を求める。このように、小雲ビルボード２４の各頂点の座標を、投影スクリーン２２の座標系において直接求めることによって、複数の小雲ビルボード２４−１〜３２の描画処理を軽減することができる。
【０１６１】
図１５は、１つの中雲テクスチャの画像データを記憶するための中雲バッファ４０を模式的に描いた図である。同図によれば、中雲バッファ４０は、１００×１００テクセル分のＲＧＢの色情報と、α値を記憶するメモリであり、それぞれＲＧＢプレーン４２とαプレーン４４とに分けて記憶する。また、中雲バッファ４０における各テクセルは、投影スクリーン２２の座標系（ＸS，ＹS）と対応する。即ち、中雲座標系における小雲ビルボード２４を投影スクリーン２２上に投影すると、投影スクリーン２２の座標系における小雲ビルボード２４の各頂点の座標に対応する中雲バッファ４０のテクセルを決定できる。そして、決定されたテクセルによって囲まれた範囲のテクセルのαプレーン４４に対して、小雲テクスチャ１０２により指定されたα値（Ｃα）を与える。ただし、各テクセルのαプレーン４４に対して、α値を加算的に与えることとする。即ち、中雲バッファ４０内の１つのテクセルに対して、複数の小雲ビルボード２４が重なって投影された場合には、全てのα値を加算して記憶させる。なお、α値を加算することによって、α＞１となる場合には、１を超える値を切り捨てることとする。
【０１６２】
このように、３次元的に配置した小雲ビルボード２４−１〜３２をオブジェクト空間における仮想カメラ１００の視線方向に応じて描画することによって、仮想カメラ１００の位置が変化する度に見え方が変化することとなる。従って、生成される中雲テクスチャは、平面であるにもかかわらず、立体的な印象を与えることができる。また、中雲の見え方が、３次元空間における分布に従って秩序正しく変化するため、違和感を与えることなく雲を表現することができる。
【０１６３】
また、図１５に示す中雲バッファ４０のＲＧＢプレーン４２に与える色情報は、オブジェクト空間における光源と、仮想カメラ１００の視線方向および、中雲座標系における投影スクリーン２２（より正確には、投影スクリーン２２に対応するオブジェクト空間上の「中雲ビルボード」であるが、本原理は、「中雲」に係る原理を説明しているため、以下、「投影スクリーン」として説明する。）との位置関係に応じて決定する。より具体的には、投影スクリーン２２（対応するオブジェクト空間上の中雲ビルボード。以下同じ。）と光源との位置関係を判定するための特定点を、投影スクリーン２２上に設定する。例えば、投影スクリーン２２の頂点、投影スクリーン２２の各辺の中点、および、投影スクリーン２２の中心点といった複数箇所の点を特定点として設定する。ゲーム実行中においては、投影スクリーン２２上に設定した各特定点と光源との位置関係を判定し、光源に近いと判定される特定点には明るい色を、光源から離れた位置に該当する特定点には暗い色を決定する。そして、投影スクリーン２２上の各特定点に対して決定した色情報を、中雲バッファ４０上の対応するテクセルのＲＧＢプレーン４２に記憶させる。また、中雲バッファ４０上の他のテクセルに対しては、グローシェーディングの方法、即ち、各特定点に与えられた色の中間色を算出して与える。
【０１６４】
投影スクリーン２２上の各特定点と光源との位置関係を判定する処理は、ベクトル演算により行う。即ち、投影スクリーン２２上に設定した各特定点に特定のベクトルを持たせ、ゲーム実行中の投影スクリーン２２の回転に合わせて各特定点の特定ベクトルを回転させる。そして、オブジェクト空間における光源の光線ベクトル３８と、投影スクリーン２２の各特定ベクトルとの成す角を計算し、その角度に応じた色を該当する特定点の色として決定する。なお、以下では、簡単の為に、光源を無限光源とする。即ち、図１４（ｂ）に示すように、光のベクトル３８（以下、光線ベクトル３８という）は、オブジェクト空間の全体を均等に照らし、且つ、至るところで平行なベクトルとする。
【０１６５】
図１６は、投影スクリーン２２に設けた９ヶ所の特定点２２−１〜９と、各特定点の特定ベクトルを説明するための図である。（ａ）は、中雲座標系における投影スクリーン２２の正面図を、（ｂ）は、投影スクリーン２２の断面図をそれぞれ示す。（ａ）および（ｂ）によれば、各特定点が、投影スクリーン２２の各頂点２２−２，４，６，８、投影スクリーン２２の各辺における中点２２−３，５，７，９、および、投影スクリーン２２の中心点２２−１に設定され、特定ベクトルとして、各点における法線ベクトルが与えられる。なお、（ｂ）には、投影スクリーン２２の中心点２２−１における法線ベクトル２２−１ａ、および、仮想カメラ１００の視線ベクトル３４を示した。即ち、中心点２２−１の特定ベクトルは、仮想カメラ１００の視線ベクトル３４に対して常に逆向きとなる。
【０１６６】
また、図１６（ｃ）は、各特定ベクトル（即ち、法線ベクトル）が指す向きの関係を示す図であり、投影スクリーン２２を、ｘ−ｚ平面に対して水平に、且つ、各辺がｘ軸とｚ軸に対して平行あるいは垂直に交わるように配置したときの各特定ベクトルの成分を表示したものである。（ｃ）に示すように、各特定ベクトルが互いに成す角の関係は、ゲーム実行中における投影スクリーン２２の回転にかかわらず等しい。従って、仮想カメラ１００の視線ベクトル３４が決定すれば、視線ベクトル３４に基づく回転行列を生成して、（ｃ）に示す各特定ベクトルに作用させることにより、投影スクリーン２２における各点の法線ベクトルを簡単に算出することができる。
【０１６７】
このように、投影スクリーン２２の各点における特定ベクトルの向きを決定すると、光線ベクトル３８との成す角を算出する。しかし、３次元空間における各ベクトルの成す角を算出して、座標系における３つの成分の角度を比較する処理は煩雑であるため、以下では、成す角を算出せずに、内積により色を決定することとする。また、内積を算出する際には、各ベクトルを単位ベクトル化し、内積の結果ωが−１≦ω≦１の範囲を取るように設定する。そして、該当する点に与える色を、ωの値および符号に応じて一意的に決定する。
【０１６８】
なお、内積ωの値と中雲に与える色との関係は、投影スクリーン２２の各特定点が光源に対して近いか遠いかといった関係と対応させる。具体的には、図１６（ａ）に示した投影スクリーン２２において、特定点２２−２の法線ベクトルは光線ベクトル３８に対して逆向きを示し、特定点２２−６の法線ベクトルは同方向を指す。即ち、投影スクリーン２２において、より光源に近い点の法線ベクトルは、光線ベクトル３８と逆向きを示し、光源に対して影となる部分の法線ベクトルは、光線ベクトル３８と同方向を示す。こうした関係に基づき、光線ベクトル３８と各点の法線ベクトルとの内積ωが、負である場合には、該当する点が光源に近いものと判断して、明るい色を与える。また、内積ωが正である場合には、光源からやや遠い、影となる部分に対応する点であると判断し、暗い色を与える。
【０１６９】
更に詳細には、内積ωが負である場合には雲の色として白を、内積ωが正である場合には灰色を（極端には、黒を）、といった具合に、色の濃淡を内積ωの値に応じて決定する。例えば、ＲＧＢ各色の出力Ｉの範囲を０≦Ｉ≦２５５と定義する。ここに、Ｉ＝０のとき、ＲＧＢ全ての色が出力されずに黒となり、逆にＩ＝２５５のとき白となる。そして、内積ωを変数とする関数ｆ（ω）を乗算することにより、全色の出力の割合を決定する。関数ｆ（ω）は、０≦ｆ（ω）≦１の範囲を取り、ωの増加に伴って増加する関数であればいずれのものであってもかまわないが、例えば、
ｆ（ω）＝０ （−１≦ω＜０）
＝√ω （０≦ω≦１）  ・・・（６）
といった関数を定義する（ただし、０≦ｆ（ω））。図１７は、関数ｆ（ω）のグラフを示すものであり、横軸がωを、縦軸が関数ｆ（ω）の値を示す。式（６）によれば、関数ｆ（ω）の値は、内積ωが負のとき"１"から"０"の値を持ち、内積ωが正のとき値が"０"となる。従って、法線ベクトルと光線ベクトル３８とが互いに等しい方向を向くとき（ω＞０）には、ｆ（ω）＝０となり、出力される色は黒となり、雲における影の部分を表現することができる。一方、法線ベクトルと光線ベクトル３８とが向き合う関係にあるとき（ω＜０）には、ｆ（ω）＞０となり、ωの値が"−１"に近づくにつれて白に近い色となる。
【０１７０】
このように、投影スクリーン２２における複数箇所の法線ベクトルを算出し、光線ベクトル３８との内積を取ることによって、よりもっともらしく雲の陰影を表現することができる。しかしながら、式（６）によれば、雲の陰影を表現することができるものの、様々な色のグラデーションを表現することができない。例えば、朝日や夕日を浴びて金色に輝く部分から、夜空の色を受けて暗く陰る部分までを持つ１つの雲を、立体感を維持し、且つ、グラデーションを付けて表現したい場合がある。しかし、光線ベクトル３８と法線ベクトルの内積ωという、１つの値の変化に基づいて、ＲＧＢの３つの色を様々に、且つ、もっともらしく変化させることは困難である。
【０１７１】
そこで、光が当って雲が明るく輝くときの色味（明色ＩL＝ＲL、ＧL、ＢL）と、雲のベースとなる色味（ベース色ＩB＝ＲB、ＧB、ＢB）と、光が当らない影となる部分の色味（影色ＩS＝ＲS、ＧS、ＢS）の、３色の色を予め設定する。そして、内積ωの値に応じて、各色を採用する割合を決定することとする。例えば、明色の割合を決定するための関数ＦL（ω）と、ベース色の割合を決定するための関数ＦB（ω）と、影色の割合を決定するための関数ＦS（ω）とをそれぞれ独立して設定する。即ち、出力する色Ｉを、
Ｉ＝ＩL・ＦL（ω）＋ＩB・ＦB（ω）＋ＩS・ＦS（ω）  ・・・（７）
により決定する。
【０１７２】
また、各関数Ｆ（ω）を次のように設定する。
ＦL（ω） ＝ｃｏｓ2｛（ω＋１）・π／２｝ （−１≦ω≦０）
＝０ （０＜ω）
ＦB（ω） ＝ｓｉｎ2｛（ω＋１）・π／２｝ （−１≦ω≦１）
ＦS（ω） ＝０ （ω＜０）
＝ｃｏｓ2｛（ω＋１）・π／２｝ （０≦ω≦１）  ・・・（８）
図１８（ａ）〜（ｃ）は、各関数のグラフを示す図である。それぞれのグラフにおいて、横軸はωの値を、縦軸は関数Ｆ（ω）の値を示す。なお、式（８）からわかるように、各関数の和は、常に１となる。従って、不自然な色味を出力することなく、合理的に各色を合成することができる。また、ω＝−１，１の場合を除き、ベース色が常に合成されることとなる。従って、例えば、ベース色として白を適用した場合、白を基調とし、滑らかに色の変化する雲を表現することができる。
【０１７３】
以上のように、小雲テクスチャ１０２のαテクスチャをマッピングした小雲ビルボード２４を、中雲座標系に３次元的に配置し、ワールド座標系における仮想カメラ１００の向きに応じて回転させることとしたため、中雲を観察する仮想カメラ１００の位置に対応して形状が変化する立体的な中雲を表現することができる。そのため、例えば、プレーヤの操縦する飛行機（視点）の高低の変更に伴い中雲を見る角度が変化しても、中雲の形状に矛盾が生じず、見ていて違和感のない画像を生成することができる。
【０１７４】
また、中雲テクスチャを生成する際には、全体に気流がかかった雲である小雲テクスチャ１０２を中心付近に集中させて中雲テクスチャを生成するので、中心が濃く（透明度が低く）、周辺に近づくにつれ薄く（透明度が高く）なる中雲テクスチャが作成される。そのため、結果として、中雲テクスチャの縁のみに気流が表現され、よりリアルな雲を表現することができる。
【０１７５】
また、中雲を構成する雲パーツ１つ１つに対して色を決定せずに、中雲全体のα値について描画した後、色を決定することとしたため、より迅速に中雲テクスチャを生成することができる。更に、予め３種類の色を設定し、各色を採用する割合を、中雲を描画するためのスクリーン（実際には、対応するオブジェクト上の中雲ビルボード）と光源との位置関係に応じて決定することとしたため、日の光によって色を微妙に変化させる雲を表現することが可能となった。
【０１７６】
なお、上記説明では、生成する中雲の数を４個、１つの中雲を構成する小雲ビルボードの数を３２個として説明したが、これらの数に限定する必要はなく、１つの小雲ビルボードの規模に応じて様々に変更してもよいことは勿論である。また、色の濃淡や予め設定した色の合成割合を決定する式は、式（６）や式（８）に限定する必要はなく、雲の色として違和感の生じない色合いを算出するものであれば、いかなる式であってもかまわない。また、上記説明では、３色を合成することとして説明したが、２色や４色、・・・、ｎ色であってもかまわない。この場合には、例えば、式（８）内の（ω＋１）に乗算する値を、合成する色の数に合わせて変更することにより可能となる。
【０１７７】
あるいは、図１９に示すような色決定テーブル２９０を予め生成し、このテーブルに基づいて色を決定することとしてもよい。図１９によれば、色決定テーブル２９０には、法線ベクトルと光線ベクトル３８との内積ωの範囲と、各内積ωの範囲と対応付けて色情報（ＲＧＢの各値）が記憶される。ゲーム実行中においては、投影スクリーン２２の各特定点の法線ベクトルと光線ベクトル３８との内積ωを計算し、色決定テーブル２９０を読み出して該当する色情報を判定し、中雲バッファ内の該当するテクセルのＲＧＢプレーンに与える。ただし、このような色決定テーブル２９０を採用した場合には、予め記憶すべき情報が増えるとともに、雲の微妙な色の変化を表現することができない。従って、上記説明のように、予め特定した色を合成する割合をその都度計算する方法が最も好ましいものといえる。
【０１７８】
また、４つの中雲のテクスチャを生成することとして説明したが、これに限定する必要はなく、例えば、オブジェクト空間に各小雲ビルボードを実際に配置し、オブジェクト空間における仮想カメラ１００に基づいて描画することとしてもよい。あるいは、オブジェクト空間全体に渡る雲を、１つの中雲のテクスチャによって表現することとしてもよい。
【０１７９】
しかし、このように、仮想カメラ１００や雲視点の位置に基づいて描画すべき小雲ビルボードの数が多ければ多いほど、各小雲ビルボードの座標や向きを算出する処理や、描画処理等の負担が増大し、ゲーム画像の生成処理全体を遅延化させるといった問題が生じる。なお、この問題は、仮想カメラ１００に基づいて描画する際の中雲や小雲ビルボードの大きさを調節することにより解決されるように思われる。例えば、オブジェクト空間に直接小雲ビルボードを配置する場合であっても、小雲ビルボードの大きさを比較的大きく設定すれば、描画等の処理を軽減することができる。しかし、飛行機ゲームのような雲を間近で観察し得るタイプのゲームにあっては、１種類のαテクスチャをマッピングしただけの比較的大きな小雲ビルボードをオブジェクト空間に直接配置した場合には、仮想カメラ位置の変化に伴う雲の微妙な変化を表現することができない。また、中雲を構成する各小雲ビルボードを大きくし、その数を少なくした場合、仮想カメラ１００の位置の変化に伴う中雲の形状の変化が乏しくなり、立体感に欠けたものとなる。
【０１８０】
そのため、本実施の形態においては、以下に述べる雲海生成原理に基づいて、オブジェクト空間に中雲ビルボードを配置することにより、仮想カメラ１００の位置の変化に伴う雲の変化を表現するとともに、立体感を有する雲を表現する。
【０１８１】
１−（３）雲海生成原理
次に、中雲生成原理により生成された中雲テクスチャをマッピングしたビルボード（以下、中雲ビルボードという。）を複数オブジェクト空間に設定することにより雲海を生成する原理を説明する。
【０１８２】
図２０に示すような、仮想カメラ１００（視線方向が図中矢印で示す方向で、視野角φ）から見た画像を生成する際には、図２０に示した雲設定領域Ｒ内のみに、中雲ビルボードを配置する。雲設定領域Ｒ外部の雲については、仮想カメラ１００の視界に入らず、描画されないため、配置しない。
【０１８３】
また、中雲ビルボードは、上述したように、常に仮想カメラ１００の視線方向に垂直に対向し、配置位置（一点）と、大きさを設定することによりオブジェクト空間に配置される。即ち、仮想カメラ１００が移動したり、視線方向を変えても雲が平面であることは露見しない。
【０１８４】
図２０に示した雲設定領域Ｒについてより具体的に説明する。雲設定領域Ｒは、図２１に示すように、オブジェクト空間（ワールド座標系）において設定された仮想カメラ１００の位置から視線方向（図中矢印表示）に距離ｄの位置に中心点ＦPW（ＦPW.ｘ，ＦPW.ｙ，ＦPW.ｚ）を有する一辺長２Ｌの立方体内の領域である。即ち、雲設定領域Ｒの位置は、仮想カメラ１００の位置や視線方向に応じて変化する。但し、雲設定領域Ｒの各辺の方向は、ワールド座標系のＸｗ軸、Ｙｗ軸、Ｚｗ軸の方向を向くように設定される。
【０１８５】
この雲設定領域Ｒに中雲の配置位置（中雲ビルボードの配置位置座標）を設定する際には、雲設定領域Ｒの中心点ＦPWを原点とするローカル座標系（ｘL，ｙL，ｚL）（以下、雲海座標系という。）における雲設定領域Ｒ内の位置座標を決定する。即ち、雲設定領域Ｒの中心点ＦPWに相対する位置として中雲ビルボードの配置位置を決定する。ここで、雲海座標系における雲設定領域Ｒは、図２２に示すように中心点を点ＦPL（０，０，０）とし、一辺長２Ｌの立方体となる。
【０１８６】
雲海座標系に配置される中雲ビルボードの座標ＣＬ［ｉ］（ＣＬ［ｉ］.ｘ，ＣＬ［ｉ］.ｙ，ＣＬ［ｉ］.ｚ）は、
ＣＬ［ｉ］.ｘ＝｛Ｃｔ［ｉ］.ｘ＋｛２Ｌ−（ＦPW.ｘ mod２Ｌ）｝｝mod ２Ｌ−Ｌ    ・・・（９）
ＣＬ［ｉ］.ｚ＝｛Ｃｔ［ｉ］.ｚ＋｛２Ｌ−（ＦPW.ｚ mod２Ｌ）｝｝mod ２Ｌ−Ｌ    ・・・（１０）
ＣＬ［ｉ］.ｙ＝（Ａｌｔ−ＦPW.ｙ）＋Ｃｔ［ｉ］.ｙ×Ａｌｔｗ  ・・・（１１）
で設定される。ここで、ｉ＝１、２、・・・、ｎであり、ｎは設定される雲（中雲ビルボード）の数である。また、「mod」とは、剰余を示す演算子である。Ａｌｔは、雲層のｙ座標の中心であり、例えば、地面のｙ座標が"０"である場合には、地面からの雲層の中心までの高さを示すこととなる。Ａｌｔｗは、雲層の中心から雲層の端までの最大幅である。
【０１８７】
また、初期設定として初期分布Ｃｔ［ｉ］（Ｃｔ［ｉ］.ｘ，Ｃｔ［ｉ］.ｙ，Ｃｔ［ｉ］.ｚ）（ｉ＝１，２，・・・，ｎ）が設定されている。初期分布とは、雲海における中雲ビルボードの配置位置の分布状態を決めるために初めに（例えば、ゲームの開始時等に）、一度決定されるものであり、その後ゲーム実行中には、この初期分布は変更されない。そして、Ｃｔ［ｉ］.ｘ＝rand（randは０〜（２Ｌ−１）の乱数）、Ｃｔ［ｉ］.ｙ＝rand（randは−１〜１の乱数）、Ｃｔ［ｉ］.ｚ＝rand（randは０〜（２Ｌ−１）の乱数）として初めに決定されるものである。
【０１８８】
式（９）によれば、｛Ｃｔ［ｉ］.ｘ＋｛２Ｌ−（ＦPW.ｘ mod２Ｌ）｝｝mod２Ｌのとり得る値は"０"〜"２Ｌ−１"の範囲となるため、雲海座標系における中雲の配置位置のｘ座標ＣＬ［ｉ］.ｘのとり得る値は、"−Ｌ"〜"Ｌ−１"の範囲となる。また、｛２Ｌ−（ＦPW.ｘ mod２Ｌ）｝の値は、例えば、ＦPW.ｘの値が増加する場合には、"２Ｌ"〜"１"の範囲で減少し、"１"になった後、更にＦPW.ｘの値が増加すると"２Ｌ"に戻る。
【０１８９】
そのため、例えば、雲設定領域Ｒの中心点のｘ座標ＦPW.ｘの値が増加していく場合には、中雲の配置位置のｘ座標ＣＬ［ｉ］.ｘの値は"Ｌ−１"から"−Ｌ"の範囲でＦPW.ｘの値が増加した分だけ減少し、"−Ｌ"になった後は、また"Ｌ−１"に戻り、"Ｌ−１"から"−Ｌ"の値が繰り返されることとなる。即ち、雲設定領域Ｒの中心点のｘ座標ＦPW.ｘが増加した分だけ、雲海座標系における中雲ビルボードの配置位置のｘ座標ＣＬ［ｉ］.ｘは減少し、雲設定領域Ｒの外部になると、逆側に現れることになり、必ず雲設定領域Ｒ内"−Ｌ"〜"Ｌ−１"の値となる。雲海座標系における中雲ビルボードの配置位置のｚ座標ＣＬ［ｉ］.ｚについても式（１０）により同様である。
【０１９０】
図２３（ａ）は、ワールド座標系において、Ｚｗ軸方向から見た雲設定領域Ｒを示す図である。同図に示すように、例えば、雲設定領域Ｒのワールド座標系における中心位置がＦPW1（ＦPW1.ｘ，ＦPW1.ｙ，ＦPW1.ｚ）とすると、雲海座標系における中雲ビルボードの配置位置ＣＬ［ｉ］のｘ座標ＣＬ［ｉ］.ｘは、式（９）に従って、
ＣＬ［ｉ］.ｘ＝｛Ｃｔ［ｉ］.ｘ＋｛２Ｌ−（ＦPW1.ｘ mod２Ｌ）｝｝mod ２Ｌ−Ｌ
で設定される。
【０１９１】
ここで、例えば、図２３（ａ）に示すように、Ｃｔ［１］.ｘ＝１１０、ＦPW1.ｘ＝１００、Ｌ＝１００であったとすると、中雲ビルボードの配置位置ＣＬ［１］の雲海座標系におけるｘ座標の値は、
ＣＬ［１］.ｘ＝｛１１０＋｛２００−（１００ mod２００）｝｝mod ２００−１００＝−９０
となる（図２３（ｂ））。図２３（ｂ）は、ＦPL1（＝ＦPW1）を原点とした雲海座標系において、ｚL軸方向から見た雲設定領域Ｒの一例を示す図である。
【０１９２】
そして、仮想カメラ１００の位置が図２３（ａ）に示すようにワールド座標系のｘ軸方向に（図中点Ｖ１から点Ｖ２へ）移動し（視線方向は変化しない）、それに伴い、ワールド座標系における雲設定領域Ｒの中心点ＦPWの位置も点ＦPW1から点ＦPW2（ＦPW2.ｘ，ＦPW2.ｙ，ＦPW2.ｚ）（ＦPW2.ｙ＝ＦPW1.ｙ、ＦPW2.ｚ＝ＦPW1.ｚ）に移動した場合、例えば、図２３（ａ）に示すようにＦPW2.ｘ＝１９０であるとすると、中雲ビルボードの配置位置ＣＬ［１］の雲海座標系におけるｘ座標の値は、
ＣＬ［１］.ｘ＝｛１１０＋｛２００−（１９０ mod２００）｝｝mod ２００−１００＝＋２０
となる（図２３（ｃ））。図２３（ｃ）は、ＦPL2（＝ＦPW2）を原点とした雲海座標系において、ｚL軸方向から見た雲設定領域Ｒの一例を示す図である。
【０１９３】
即ち、図２３（ａ）に示すように、ワールド座標系において、仮想カメラ１００の変更による雲設定領域Ｒの移動に伴い、雲設定領域Ｒから外れた領域ＲＰ１が、新たに雲設定領域Ｒに含まれる領域ＲＰ２として現れることになる。即ち、一の分布パターンを繰り返して使用することができる。
【０１９４】
また、例えば、Ｃｔ［２］.ｘ＝５０であるとすると、雲設定領域Ｒの中心点ＦPWがＦPW1である場合には、中雲ビルボードの配置位置ＣＬ［２］の雲海座標系におけるｘ座標ＣＬ［２］.ｘは、
ＣＬ［２］.ｘ＝｛５０＋｛２００−（１００ mod２００）｝｝mod ２００−１００＝＋５０
となる。この場合、ワールド座標系におけるＣＬ［２］のｘ座標は、中心点ＦPW1のｘ座標ＦPW1.ｘ（"１００"）から"＋５０"の座標"１５０"である。
【０１９５】
雲設定領域Ｒの中心点ＦPWが点ＦPW1から点ＦPW2に移動すると、中雲ビルボードの配置位置ＣＬ［２］の雲海座標系におけるｘ座標ＣＬ［２］.ｘは、
ＣＬ［２］.ｘ＝｛５０＋｛２００−（１９０ mod２００）｝｝mod ２００−１００＝−４０
となる。この場合、ワールド座標系における中雲ビルボードの配置位置ＣＬ［２］のｘ座標は、中心点ＦPW2のｘ座標ＦPW2.ｘ（"１９０"）から"−４０"の座標"１５０"である。
【０１９６】
即ち、移動前（中心点を点ＦPW1とする）雲設定領域Ｒと、移動後（中心点を点ＦPW2とする）雲設定領域Ｒとの重なる領域ＰＲ３内の中雲ビルボードの配置位置は、ワールド座標系において同じ位置に設定されることとなる。
【０１９７】
雲設定領域Ｒの中心点ＦPWがＺｗ軸方向に移動した場合は、上述したＸｗ軸方向の移動と同様である。
【０１９８】
図２４は、雲設定領域Ｒの中心点ＦPWがＹｗ軸方向に移動する場合について説明する図である。図２４（ａ）に示すように、雲設定領域Ｒの中心点ＦPWが点ＦPW1（ＦPW1.ｙ＝３００）、Ａｌｔ＝２４０、Ａｌｔｗ＝２０であり、初期分布においてＣｔ［１］.ｙ＝０であるとすると、中雲ビルボードの配置位置ＣＬ［１］の雲海座標系におけるｙ座標ＣＬ［１］.ｙは、
ＣＬ［１］.ｙ＝（２４０−３００）＋０×２０＝"−６０"
となり、図２４（ｂ）に示すような位置となる。図２４（ｂ）は、ＦPL1（＝ＦPW1）を原点とした雲海座標系において、ｚL軸方向から見た雲設定領域Ｒの一例を示す図である。
【０１９９】
また、雲設定領域Ｒの中心点ＦPWが、例えば、図２４（ａ）に示すように点ＦPW1（ＦPW1.ｙ＝３００）から点ＦPW3（ＦPW3.ｙ＝３５０）に移動した場合、中雲ビルボードの配置位置ＣＬ［１］のｙ座標ＣＬ［１］.ｙは、ＣＬ［１］.ｙ＝−６０から、ＣＬ［１］.ｙ＝（２４０−３５０）＋０×２０＝−１１０、に変更される（図２４（ｃ））。図２４（ｃ）は、ＦPL3（＝ＦPW3）を原点とした雲海座標系において、ｚL軸方向から見た雲設定領域Ｒの一例を示す図である。
【０２００】
仮想カメラ１００の変更に伴い雲設定領域Ｒの位置が変わっても、ワールド座標系における雲の高さ（雲層の高さ）が変わることはないため、Ｘｗ軸方向に雲設定領域Ｒが移動した場合のように、雲設定領域Ｒの外部になった領域が新たに雲設定領域Ｒに含まれる領域として現れるといったことはなく、図２４（ｃ）に示すように雲設定領域Ｒ外部の座標位置に中雲ビルボードの配置位置が設定される。勿論、配置位置が雲設定領域Ｒ外部になった場合には、雲を配置しない。
【０２０１】
このように、式（９）〜（１１）に従ってｎ個の中雲ビルボードの配置位置ＣＬ［ｉ］を設定し、雲設定領域Ｒ内の中心点ＦPLがワールド座標系におけるＦPWになるように、雲設定領域Ｒをワールド座標系に配置することにより、ワールド座標系における雲設定領域Ｒ内の雲（中雲ビルボード）の配置位置を設定することができる。そして、これらの配置位置ＣＬ［ｉ］に大きさＷ［ｉ］＝１．０＋rand（randは、０．０〜１．０の範囲の乱数）でそれぞれ中雲ビルボードを配置する。ここで、大きさＷ［ｉ］は、例えば、中雲ビルボードの一辺の長さを示すものであっても良いし、また、例えば、中雲生成原理に基づいて生成される中雲テクスチャの大きさを"１"とした場合に、その中雲テクスチャに対する大きさを示すものであっても良い。
【０２０２】
ここで、上記式（９）〜（１１）に基づいて、雲設定領域Ｒ内に設定するのは、中雲ビルボードの「配置位置」のみである。即ち、上下左右方向については、考慮に入れていない。これは、上述したように中雲を構成する小雲ビルボードが既に上下左右方向を考慮して生成されており、中雲テクスチャも同様に上下左右方向を考慮して生成されている（即ち、仮想カメラ１００のロール角Ｚに応じた中雲テクスチャが生成される。）。そのため、雲海生成時には、雲設定領域Ｒ内に「配置位置」のみを決定すれば良い。
【０２０３】
従って、オブジェクト空間全体に雲を配置することなく、雲設定領域Ｒ内にのみ雲を設定すれば良いため、雲の設定に係る処理を軽減することが可能となる。また、雲を中雲ビルボードで表現するため、従来のように、仮想カメラ１００の方向によっては、厚みの無さが露見するといったことがなく、例えば、雲層を水平方向からみた場合であっても、図２５に示すような立体感のある雲の画像を生成することができる。図２５は、本原理を適用した雲を含む表示画面の一例を示す図である。
【０２０４】
しかしながら、図２６に示すような位置、視線方向の仮想カメラ１００から見た場合には、雲設定領域Ｒの境界が視界内に入る。このため、図２６に示すように仮想カメラ１００の移動に伴い雲設定領域Ｒを矢印方向に移動させると、仮想カメラ１００が少しｘ軸方向（図中右方向）に移動した時点で、雲設定領域Ｒの左端境界付近に設定された配置位置ＣＬ［ｍ］が消滅して雲設定領域Ｒの右端境界付近に変わることとなる。
【０２０５】
従って、仮想カメラ１００から見た場合には、視界内の配置位置ＣＬ［ｍ］に配置された雲が視界の端から消えるのではなく、視界の中で消滅することになってしまう。また、同様に仮想カメラ１００の移動に伴い、視界の中で急に雲が現れることもあり、違和感を生じる。そのため、視界内の雲設定領域Ｒの境界付近の雲をより透明にするため、
α＝１．０−｜（Ｓｚ［ｉ］−ｄ）｜／Ｌ        ・・・（１２）
に基づいて、不透明度を示すパラメータであるα値（０≦α≦１）を設定する。
【０２０６】
ここで、Ｓｚ［ｉ］は、仮想カメラ１００から中雲ビルボードの配置位置ＣＬ［ｉ］までの距離である。また、α値は"０"で完全に透明となり、α値が"１"の場合に不透明となる。即ち、仮想カメラ１００から中雲ビルボードの配置位置までの距離Ｓｚ［ｉ］と仮想カメラ１００から雲設定領域Ｒの中心点ＦPWまでの距離ｄとの差が小さい位置に配置位置を持つ雲ほどαの値が大きくなり（不透明となり）、仮想カメラ１００から中雲ビルボードの配置位置までの距離Ｓｚ［ｉ］と、仮想カメラ１００から雲設定領域Ｒの中心点ＦPWまでの距離ｄとの差が大きい位置に配置位置を持つ中雲ビルボードほどα値が小さくなる（透明になる）。
【０２０７】
式（１２）によれば、雲設定領域Ｒの境界付近の配置位置ＣＬ［ｍ］と仮想カメラ１００との距離Ｓｚ［ｉ］は、距離ｄとの差が大きいため、この配置位置ＣＬ［ｍ］に配置される中雲ビルボードは透明度の高いものとなる。従って、急に消えてもわかりにくい。同様に、視界の中の雲設定領域Ｒの境界に現れる場合には、透明度の高い雲が現れることとなる。
【０２０８】
なお、仮想カメラ１００から中雲ビルボードの配置位置ＣＬ［ｉ］までの距離Ｓｚ［ｉ］と、仮想カメラ１００から雲設定領域Ｒの中心点ＦPWまでの距離ｄとの差に応じてα値を変更するのではなく、例えば、図２７（ａ）に示すように、配置位置ＣＬ［ｉ］が雲設定領域Ｒの中心点ＦPWから離れる雲ほど透明度が高くなる（αの値が小さくなる）こととし、中心点ＦPWからの距離がＬで（α＝０）になることとしても良い。その場合には、図２７（ａ）に示した半径Ｌの球Ｐ１の内側においては、中心点ＦPWから離れるほど不透明度が低くなり（透明になり）、球Ｐ１の外の領域に配置位置を持つ雲は完全に透明となる（見えない）。
【０２０９】
また、例えば、図２７（ｂ）に示すように、仮想カメラ１００からの中雲ビルボードの配置位置までの距離Ｓｚ［ｉ］が所与の範囲となる領域を不透明（α＝１．０）の領域とし、その領域から離れるほど徐々にα値を低くしていく（透明にしていく）ようにしても良い。
【０２１０】
また、例えば、図２８に示すような仮想カメラ１００の位置、視線方向、視野角の場合には、雲設定領域Ｒの外部の雲も視界に入る。そのため、更に遠景雲設定領域Ｒｆを設定し、この遠景雲設定領域Ｒｆに、平面状の雲オブジェクトを水平に配置する。この遠景雲設定領域Ｒｆは、例えば、仮想カメラ１００からｄｆ（ｄｆ＞ｄ）の距離に中心点ＦｆPWを有し、一辺長Ｌｆ（Ｌｆ＞Ｌ）（遠景雲設定領域Ｒｆは仮想カメラ１００から遠くに設定されるため、より広い範囲が視界内に入ることとなるため）の立方体の領域である。
【０２１１】
この遠景雲設定領域Ｒｆに雲オブジェクトを配置する際には、上述した雲設定領域Ｒにおいて中雲ビルボードの配置位置を決定する場合と同様の初期分布Ｃｔ［ｉ］に基づいて、式（９）〜（１１）における"Ｌ"を"Ｌｆ"とし、"ＦPW"を"ＦｆPW"として配置位置を決定する。また、雲設定領域Ｒと同様に、中心点ＦｆPWから離れるほど雲が透明となるようにα値が設定される。そのため、雲設定領域Ｒと遠景雲設定領域Ｒｆとの境界や重なる部分の雲はα値の低い（透明度の高い（見え難い））ものとなる。そのため、雲設定領域Ｒと遠景雲設定領域Ｒｆとの境界をわかりにくくし、自然に連なる雲海を表現することができる。
【０２１２】
図２９は、視界内に、遠景雲設定領域Ｒｆと雲設定領域Ｒとが存在する場合の表示画像の一例を示す図である。このように、遠景雲設定領域Ｒｆ内の雲オブジェクトの場合には、仮想カメラ１００から遠い位置に配置され、また、仮想カメラ１００と遠景雲設定領域Ｒｆ内の雲オブジェクトとの間に雲設定領域Ｒ内の中雲ビルボードが配置されたりするため、遠景雲設定領域Ｒｆ内の雲オブジェクトは、仮想カメラ１００の視線方向に垂直に向いていなくても厚みの無さが露見し難い。そのため、遠景雲設定領域Ｒｆ内に設定する雲オブジェクトは、仮想カメラ１００の位置、視線方向に関わらず水平に配置するだけで良く、ビルボード処理に係る負担を軽減することができる。
【０２１３】
また、例えば、図３０に示すようなオブジェクト空間全体の雲の分布を示す雲分布マップ９２４に従って、雲のある部分に配置位置を持つ中雲ビルボードのα値に"１"を掛け（設定されているα値をそのまま反映させ）、雲のない部分に配置位置を持つ中雲ビルボードのα値に"０"を掛ける（透明にする）ことにより、雲のない部分に配置される中雲ビルボードを見えなくして、雲がないようにする。
【０２１４】
即ち、図３０に示す雲分布マップ９２４は、α値の分布を示すマップである。白い（雲がある）部分はα値が"１"に、黒い（雲がない）部分はα値が"０"に設定されている。そして、この雲分布マップ９２４の位置に応じたα値を中雲ビルボードに設定されているα値に掛け合わせたα値が描画を行なう際の不透明度に反映されることとなる。
【０２１５】
なお、雲分布マップ９２４における雲がある部分と雲がない部分との境界付近の部分のα値を、例えば"０．５"に設定しておくこととしても良い。その場合には、例えば、雲の切れ目（雲海の端部など）、即ち雲がある部分と雲がない部分との境界をはっきりさせずにぼかすことができる。
【０２１６】
２．機能
次に本実施の形態における各機能について説明する。
【０２１７】
図３１は、本実施の形態における機能ブロックの一例を示すブロック図である。同図に示すように、本実施の形態の機能ブロックは、操作部５００と、処理部６００と、表示部７００と、一時記憶部８００と、記憶部９００とから構成される。
【０２１８】
操作部５００は、ゲームにおけるオブジェクトの操作等を指示入力するためのものである。プレーヤは、図１に示すゲームコントローラ１２０２、１２０４等を用いて操作データを入力する。操作部１０にて得られた操作データは処理部６００に出力される。
【０２１９】
処理部６００は、主に、ゲーム演算部６１０と画像生成部６３０とから構成される。ゲーム演算部６１０は、操作部５００から入力される操作データ及び記憶部９００から読み出したゲームプログラム９１０に従って、所与のゲームを実行する処理、仮想カメラ１００の位置、視線方向、画角（視野角）等を設定する処理、オブジェクト空間にオブジェクト、光源等を設定する処理等の処理を行なう。
【０２２０】
また、ゲーム演算部６１０には、中雲生成部６１２、初期設定部６１６、雲海生成部６１８が含まれる。
【０２２１】
画像生成部６３０は、仮想カメラ１００から見た画像を生成する処理を行なう。画像生成部６３０には、小雲描画部６３２、中雲描画部６３４、雲海描画部６４０が含まれる。
【０２２２】
これら処理部６００の機能は、ＣＩＳＣ型やＲＩＳＣ型のＣＰＵ、ＤＳＰ、画像生成専用のＩＣ、メモリ、などのハードウェアにより実現される。
【０２２３】
表示部７００は、画像生成部６３０により生成された画像（即ち、フレームバッファ８０８に設定された画像）等を表示するものであり、例えば、ＣＲＴ、ＬＣＤ、プラズマディスプレイ等によって実現され、図１のディスプレイ１２００がこれに該当する。
【０２２４】
一時記憶部８００は、小雲バッファ８０２、中雲バッファ８０４、特定点色データ８０６、フレームバッファ８０８、描画対象設定データ８１０が格納される。この一時記憶部８００の機能は、ＲＡＭにより実現できる。
【０２２５】
記憶部９００は、ゲームプログラム９１０、気流テクスチャ１０４、初期データ９５０、雲分布マップ９２４、雲層データ９２６、色データ９２８、関数データ９３０を記憶している。この記憶部９００の機能は、ＣＤ−ＲＯＭ、ゲームカセット、ＩＣカード、ＭＯ、ＦＤ、ＤＶＤ、メモリ、ハードディスクなどのハードウェアにより実現できる。
【０２２６】
次に図３１に示した各機能部の機能について各処理毎に詳細に説明する。
２−（１）小雲生成処理機能
初期設定部６１６は、初期データ９５０を設定する処理を行なう。具体的には、ゲーム開始時に、雲パーツデータ９５２と、２−（２）中雲生成処理機能において小雲ビルボードを分布するための初期データである小雲分布データ２１０と、２−（３）雲海生成処理機能において中雲ビルボードを分布するための初期データである中雲分布データ９５６とを設定する。
【０２２７】
雲パーツデータ９５２は、上述した雲パーツＡ用マスク１１２（図５（ｂ））、雲パーツＢ用マスク１１４（図６（ｂ））、を含む雲パーツに係るデータである。この雲パーツデータ９５２は、ゲーム開始時に初期設定部６１６により、設定される。なお、予め、記憶部５００に初期データ９５０として記憶されていることとしても良い。
【０２２８】
画像生成部６３０の小雲描画部６３２は、ゲームプログラム９１０に含まれる小雲生成プログラム９１２に従って、上述した１−（１）小雲生成原理を実行する処理部であり、仮想カメラ１００のピッチ角Ｘと、初期データ９５０に含まれる雲パーツデータ９５２、気流テクスチャ１０４に基づいて雲パーツＡ（１２２）（図５（ａ））、雲パーツＢ（１２４）（図６（ａ））の各テクセルのα値を設定し、αテクスチャである小雲テクスチャ１０２を生成し、一時記憶部８００内の小雲バッファ８０２に格納する処理を行う機能部である。
【０２２９】
２−（２）中雲生成処理機能
中雲生成部６１２は、中雲作成プログラム９１４に従って、中雲座標系における雲視点２２０と投影スクリーン２２の配置位置を決定する処理を実行する。即ち、中雲生成部６１２は、ゲーム演算部６１０からワールド座標系における仮想カメラ１００の視線ベクトルが入力されると、中雲座標系における雲視点２２０と投影スクリーン２２の配置位置を決定する。そして、決定した雲視点２２０と投影スクリーン２２の座標データを画像生成部６３０の中雲描画部６３４に出力する。
【０２３０】
中雲描画部６３４は、雲視点２２０と投影スクリーン２２の座標データが中雲生成部６１２から入力されると、中雲座標系における各小雲ビルボードの代表点の座標を雲視点２２０の視点座標系に変換するための回転行列と、雲視点２２０に基づいて投影スクリーン２２上に投影変換するための透視変換行列とを生成する。そして、初期設定部６１６によりゲーム開始時に設定され記憶部９００に記憶された各中雲の小雲分布データ２１０（図１３）を読み出して、各小雲ビルボードの座標データに対して生成した行列を作用させることによって、各小雲ビルボードを投影スクリーン２２上に投影する。
【０２３１】
また、中雲描画部６３４には、α値描画部６３６、色決定部６３８が含まれる。α値描画部６３６は、各中雲を構成する３２個の小雲ビルボードのα値を描画する処理を実行する。即ち、投影スクリーン２２における各小雲ビルボードの各頂点の座標を決定すると、中雲バッファ８０４上の対応するテクセルを判定し、各頂点によって囲まれた範囲内のテクセルのαプレーンに対して、小雲テクスチャ１０２のαテクスチャを描画する。
【０２３２】
色決定部６３８は、中雲に与える色を決定する処理を実行する。即ち、色決定部６３８は、投影スクリーン２２（実際には、対応するオブジェクト空間上の中雲ビルボード）上の９つの特定点に与える色を決定すると共に、中雲バッファ８０４の全てのテクセルに対して与える色を各特定点の色に基づいて決定する処理を行う。具体的には、色決定部６３８は、図３２に示すような、特定点色データ８０６を生成する。特定点色データ８０６とは、各特定点と対応付けて色情報を記憶するためのものであり、一時記憶部８００内に格納される。
【０２３３】
即ち、色決定部６３８は、投影スクリーン２２（実際には、対応するオブジェクト空間上の中雲ビルボード）における９つの特定点の法線ベクトルを算出すると、光線ベクトルとの内積ωを計算する。そして、算出した内積ωの値を関数データ９３０に格納されている式（８）に代入して色データ９２８に格納された明色、ベース色、影色の３色の輝度を決定し、決定した輝度を関数データ９３０に格納されている式（７）に代入することにより、該当する特定点の色を決定する。そして、決定した各特定点の色情報を特定点色データ８０６として一時記憶部８００に記憶する。また、α値描画部６３６が３２個の小雲ビルボードのα値を描画終了後、生成した特定点色データ８０６に基づいて、中雲バッファ８０４内の各テクセルのＲＧＢプレーンに与える色情報を決定する。なお、各テクセルに与える色を決定する処理は、各特定点間の色を線形補間することにより決定する。
【０２３４】
２−（３）雲海生成処理機能
雲海生成部６１８は、雲海作成プログラム９１６に基づいて雲海をオブジェクト空間に生成する処理を行なうものであり、雲設定領域決定部６２０と、中雲配置部６１４と、不透明度設定部６２２と、描画対象設定部６２４とを含む。雲設定領域決定部６２０は、ゲーム演算部２１０により設定された仮想カメラ１００の位置、視線方向に基づいて、仮想カメラ１００の位置から視線方向に距離ｄの位置を決定し、その位置を中心点ＦPWとする一辺長２Ｌの立方体を雲設定領域Ｒとして決定する。また、雲設定領域決定部６２０は、仮想カメラ１００の位置から視線方向に距離ｄｆの位置を決定し、その位置を中心点ＦｆPWとする一辺長２Ｌｆの立方体を遠景雲設定領域Ｒｆとして決定する。
【０２３５】
図３３は、中雲分布データ９５６のデータ構成の一例を示す図である。同図に示すように、雲設定領域Ｒ内に設定する雲の数ｎ分の"ｉ"に対する初期分布Ｃｔ［ｉ］.ｘ、Ｃｔ［ｉ］.ｙ、Ｃｔ［ｉ］.ｚの値と、中雲ビルボードの大きさＷ［ｉ］と、中雲生成処理機能により生成される４種類の中雲ビルボードに付された中雲ビルボード種類番号ｂ１〜ｂ４の内のいずれかがビルボード種類番号として設定されている。
【０２３６】
Ｃｔ［ｉ］.ｘ、Ｃｔ［ｉ］.ｚは、それぞれ"０"から"２Ｌ−１"までの乱数が設定され、Ｃｔ［ｉ］.ｙは、"−１"から"＋１"までの乱数が設定されている。例えば、図３３においては、"ｉ"が"１"に対するＣｔ［ｉ］.ｘ（即ちＣｔ［１］．ｘ）は"１１０"、Ｃｔ［ｉ］.ｙ（即ちＣｔ［１］.ｙ）は"０"、Ｃｔ［ｉ］.ｚ（即ちＣｔ［１］.ｚ）は"１２４"である。また、"ｉ"が"１"に対する大きさＷ［ｉ］（即ちＷ［１］）は、"１．１"に設定されており、ビルボード種類番号として"ｂ１"が設定されている。即ち、後述する中雲配置部６１４がｉ＝１に対して設定する配置位置ＣＬ［１］には中雲ビルボード種類番号ｂ１の中雲ビルボードが大きさ"１．１"で配置されることとなる。
【０２３７】
図３４は、雲層データ９２６のデータ構成の一例を示す図である。同図に示すように、雲層データ９２６は、オブジェクト空間に設定される雲層のそれぞれの層に対する高さ（ワールド座標系における雲層の中心のｙ座標の値）Ａｌｔ、幅Ａｌｔｗが設定されている。本実施の形態においては、層１、層２の２つの雲層をオブジェクト空間に設定することとしているため、図３４に示す雲層データ９２６においては、層１、層２に対する高さＡｌｔ、幅Ａｌｔｗが設定されているが、オブジェクト空間に設定される雲層の数は、１つでも良く、また３つ以上であっても良い。その場合には、雲層データ９２６には、オブジェクト空間に設定される雲層それぞれに対する高さＡｌｔ、幅Ａｌｔｗが設定される。
【０２３８】
中雲配置部６１４は、記憶部９００に記憶された雲層データ９２６、初期設定部６１６により設定された中雲分布データ９５６に基づいて、上述した、式（９）、（１０）、（１１）に従って雲設定領域Ｒの中心点ＦPWを原点とする雲海座標系における雲の配置位置ＣＬ［ｉ］（ｉ＝１〜ｎ）の座標を設定する。また、遠景雲設定領域Ｒｆの中心点ＦｆPWを原点とする遠景雲海座標系における雲の配置位置ＣＬ［ｉ］（ｉ＝１〜ｎ）の座標も同様に設定する。
【０２３９】
また、中雲配置部６１４は、設定した（雲海座標系の）配置位置ＣＬ［ｉ］の値に基づいて、オブジェクト空間（ワールド座標系）に中雲ビルボードを配置する。即ち、雲設定領域Ｒの中心点をワールド座標系の点ＦPWとした場合の座標位置に、配置位置ＣＬ［ｉ］を変換する。そして、初期分布データに設定されているビルボードの種類に従った中雲ビルボードを大きさＷ［ｉ］で、視点方向に正対させて配置する。また、設定した配置位置ＣＬ［ｉ］が雲設定領域Ｒ外であった場合には、その配置位置には、中雲ビルボードを配置しない。
【０２４０】
また、中雲配置部６１４は、遠景雲設定領域Ｒｆに対して設定した配置位置ＣＬ［ｉ］の値に基づいて、雲オブジェクトをワールド座標系において水平に配置する。雲オブジェクトとしては、例えば、中雲ビルボードのビルボード処理を省いたもの、即ち、ビルボードではなく、通常の（ビルボード処理を行なわない）平面状の１枚のポリゴンに中雲生成処理において生成された中雲テクスチャをマッピングしたものである。
【０２４１】
このように、中雲配置部６１４は、中雲ビルボードを配置するが、配置する中雲ビルボードの上下左右の向きは固定的で良い。何故ならば、中雲生成部６１２及び中雲描画部６３４により、仮想カメラ１００のロール角Ｚに応じた中雲テクスチャが生成されるため、中雲配置部６１４はその生成された中雲テクスチャの配置位置のみを設定して配置すれば良い。
【０２４２】
不透明度設定部６２２は、中雲配置部６１４が設定した中雲ビルボードの配置位置と仮想カメラ１００との距離Ｓｚ［ｉ］に基づいて、上述した式（１２）に従って、中雲ビルボードの配置位置それぞれに対するα値を設定し、描画対象設定データ８１０に格納する。
【０２４３】
更に、不透明度設定部６２２は、記憶部９００に記憶された雲分布マップ９２４に基づいて、中雲ビルボードの配置位置（中雲配置部６１４によりワールド座標系に変換された配置位置）に対応する雲分布マップ９２４（図３０）に設定されているα値を描画対象設定データ８１０に設定されているα値に掛け合わせ、描画対象設定データ８１０のα値を更新する。
【０２４４】
図３５は、描画対象設定データ８１０のデータ構成の一例を示す図である。ここでは、説明を簡明にするため、雲設定領域Ｒに配置する雲に対する描画対象設定データ９３２のみを図示するが、描画対象設定データ８１０としては、同様に、遠景雲設定領域Ｒｆに配置される雲に対する描画対象設定データ８１０も設定される。
【０２４５】
図３５に示すように、中雲配置部６１４により決定された配置位置ＣＬ［ｉ］に対してα値及び描画フラグが設定されている。α値は、不透明度設定部６２２が設定したα値が格納される。描画フラグは、各フレームに対する処理開始時に"０"にリセットされ、描画対象となるもののみ後述する描画対象設定部６２４により"１"に設定される。また、この描画対象設定データ８１０の配置位置ＣＬ［ｉ］には、雲設定領域Ｒまたは遠景雲設定領域Ｒｆの内部に存在する配置位置のみが設定されている。即ち、中雲配置部６１４により配置される中雲ビルボードまたは雲オブジェクトに対してのみ、α値及び描画フラグが設定されることとなる。
【０２４６】
雲分布マップ９２４は、図３０に示すようなオブジェクト空間全体の雲の分布を示すマップであり、記憶部９００は、雲層それぞれに対する雲分布マップ９２４を格納している。また、この雲分布マップ９２４は、雲の不透明度αの分布を示すものでもあり、雲のある（図中白い）部分はα値が"１"に設定されており、雲のない（図中黒い）部分は、α値が"０"に設定されている。
【０２４７】
描画対象設定部６２４は、描画対象設定データ８１０に不透明度設定部６２２が設定したα値が"０"でない中雲ビルボードを描画対象として設定する。即ち、透明な中雲ビルボードは描画されないこととなる。具体的には、描画対象設定データ８１０において、α値が"０"でない配置位置ＣＬ［ｉ］に対する描画フラグを"１"に設定する。即ち、画像生成部は、オブジェクト空間に配置された中雲ビルボードの内、描画フラグが"１"に設定された配置位置ＣＬ［ｉ］に配置された中雲ビルボードのみを描画する。
【０２４８】
雲海描画部６４０は、ワールド座標系に配置された中雲ビルボード及び雲オブジェクトをスクリーン座標系に座標変換し、不透明度設定部６２２により設定された描画対象設定データ８１０に設定された不透明度α及び中雲バッファ８０４のαプレーンに設定されているα値、中雲バッファ８０４のＲＧＢプレーンに設定された輝度（色）、等に基づいて、色情報等を決定して画像を生成する、（即ちフレームバッファ８０８の各画素の値を設定する）。その際に、描画対象設定データ８１０において描画フラグが"１"に設定されている配置位置ＣＬ［ｉ］に配置される中雲ビルボードと雲オブジェクトに対してのみ処理を行なう。
【０２４９】
３．動作
次に本実施の形態における雲生成処理の動作について説明する。図３６は、雲生成処理の動作の一例を示すフローチャートである。
【０２５０】
まず、初期設定部６１６がゲーム開始時に初期データ９５０を設定する初期設定処理を実行する（ステップＳ０）。そして、小雲描画部６３２がステップＳ０において設定された初期データ９５０に基づいて小雲生成処理を行ない、小雲テクスチャ１０２を生成する（ステップＳ１）。
【０２５１】
中雲生成部６１２及び中雲描画部６３４はステップＳ０において設定された初期データ９５０及びステップＳ１において生成された小雲テクスチャ１０２に基づいて中雲生成処理を行い、中雲テクスチャを生成する（ステップＳ２）。そして、雲海生成部６１８及び雲海描画部６４０は、ステップＳ０において設定された初期データ９５０及びステップＳ２において生成された中雲テクスチャに基づいて雲海生成処理を行ない、雲海を含む１フレーム分の画像を生成する（ステップＳ３）。そして、ステップＳ１に戻り、ステップＳ１〜Ｓ３の処理を毎フレーム行ない、ゲーム画像（動画）を生成することとなる。
【０２５２】
図３７は、初期設定処理（図３６；ステップＳ０）の動作の一例を示すフローチャートである。
【０２５３】
まず、初期設定部６１６は、初期データ９５０として雲パーツデータ９５２を生成し、雲の形状を決定する（ステップＳ０−１）。そして、初期設定部６１６は、中雲生成処理において、小雲を配置する際の分布データである小雲分布データ２１０を生成する。（ステップＳ０−２）。そして、雲海生成処理において中雲を配置する際の分布データとなる中雲分布データ９５６を生成して（ステップＳ０−３）、処理を終了する。
【０２５４】
図３８は、本実施の形態における小雲生成処理（図３６；ステップＳ１）の動作について説明するフローチャートである。
【０２５５】
図３８において、まず、小雲描画部６３２は、小雲テクスチャ１０２のＣα［ｎ，ｍ］をクリアする（"０"に戻す）とともに、式（１）を用いて雲パーツＡ（１２２），Ｂ（１２４）に雲パーツデータ９５２に設定されている雲パーツＡ用マスク１１２と雲パーツＢ用マスク１１４のビットパターンの値を加算して、雲パーツＡ（１２２）、Ｂのα値を初期状態に戻す（ステップＳ１−１）。
【０２５６】
次に、小雲描画部６３２は、現時点の仮想カメラのピッチ角Ｘを取得すると（ステップＳ１−２）、雲パーツＡ（１２２）または雲パーツＢ（１２４）を特定して以下の処理を行う（以下雲パーツＡ（１２２）を特定したこととする。）。即ち、特定した雲パーツＡ（１２２）を構成するテクセル［ｎ，ｍ］について、α値が"０"であるか否かを判別する（ステップＳ１−３）。α値が"０"でなければ（ステップＳ１−３：ＹＥＳ）、気流テクスチャ１０４の対応するテクセルのα［ｎ，ｍ］と上記取得したピッチ角Ｘとを式（２）に代入することにより、αA［ｎ，ｍ］の値を求める（ステップＳ１−４）。
【０２５７】
そして、この求めたαA［ｎ，ｍ］の値を、小雲テクスチャ１０２の対応するテクセル［ｎ，ｍ］のα値に加算する（ステップＳ４）。この加算の結果、小雲テクスチャ１０２のα値が"１"を超えた場合には、そのテクセルのα値は"１"とする。
【０２５８】
また、上記雲パーツＡ（１２２）のテクセル［ｎ，ｍ］のα値が"０"である場合には（ステップＳ１−３：ＮＯ）、ステップＳ１−４およびステップＳ１−５の処理をスキップして、ステップＳ１−６に移行する。
【０２５９】
このように、小雲描画部６３２は、雲パーツＡ（１２２）を構成する全てのテクセルについて、上記ステップＳ１−３〜Ｓ１−５の処理を実行して、小雲テクスチャ１０２の対応するテクセルの不透明度αを決定すると（ステップＳ１−６：ＹＥＳ）、続いて、雲パーツＢ（１２４）についても、同様の処理（ステップＳ１−３〜Ｓ１−６）を行う。
【０２６０】
そして、雲パーツＡ（１２２）及びＢ（１２４）について、上記ステップＳ１−３〜Ｓ１−６の処理を実行したことを確認すると（ステップＳ１−７：ＹＥＳ）、小雲描画部６３２は、本処理を終了する。
【０２６１】
以上の処理により、雲パーツＡ（１２２），Ｂ（１２４）、及び気流テクスチャ１０４を合成し、小雲テクスチャ１０２が生成されることとなる。
【０２６２】
尚、気流テクスチャ１０４は、上述した通りアニメーションであるため、時間の経過に応じて、気流テクスチャ１０４を構成する各テクセルの不透明度の値α［ｎ，ｍ］が変化する。このため、小雲テクスチャ１０２には気流の様子が表現されることとなる。
【０２６３】
図３９は、中雲生成処理（図３６；ステップＳ２）の動作の一例を示すフローチャートである。
【０２６４】
中雲生成部６１２は、ワールド座標系における仮想カメラ１００の視線ベクトルに基づいて、中雲座標系における雲視点２２０と投影スクリーン２２の配置位置を決定する（ステップＳ２−１）。中雲描画部６３４は、中雲座標系に配置された投影スクリーン２２（実際には、対応するオブジェクト空間上の中雲ビルボード）における９つの特定点の法線ベクトルを算出し、各特定点の色を決定して、特定点色データ８０６を生成する（ステップＳ２−２）。また、中雲描画部６３４は、中雲座標系における雲視点２２０の座標に基づいて、ローカルマトリクスを生成する（ステップＳ２−３）。即ち、各小雲ビルボードを雲視点２２０の視点座標系に変換するための回転行列と、雲視点２２０と投影スクリーン２２との距離に基づく透視変換行列を生成する。
【０２６５】
そして、中雲描画部６３４は、初期設定処理（図３７）により設定された小雲分布データ２１０内に記憶された１２８（３２×４）個の小雲ビルボードのコードの中から１つを選択し（ステップＳ２−４）、ステップＳ２−３で生成した行列を作用することによって、投影スクリーン２２上に投影変換する。そして、α値描画部６３６が当該小雲ビルボードのα値を中雲バッファ８０４上のαプレーンに描画する（ステップＳ２−５）。中雲描画部６３４は、当該中雲バッファ８０４の描画処理が終了すると、３２個の小雲ビルボードについて処理を実行したか否かを判別する（ステップＳ２−６）。終了していない場合には、ステップＳ２−４に戻り、次の小雲ビルボードのコードを選択してα値を描画する（ステップＳ２−４〜Ｓ２−５）。
【０２６６】
一方、ステップＳ２−６において、３２個の小雲ビルボードの処理が終了したものと判別した場合には、色決定部６３８が、ステップＳ２−２において生成された特定点色データ８０６に基づいて、中雲バッファ８０４のＲＧＢプレーンに色を描画する処理を実行する（ステップＳ２−７）。中雲バッファ８０４の全てのテクセルについて色を与える処理が終了した後、中雲描画部６３４は、４つの中雲について処理が終了したかを判別し（ステップＳ２−８）、終了していない場合には、ステップＳ２−４に移行して、次の中雲の描画処理を実行する。ステップＳ２−８において、４つの中雲について処理が終了した場合には、本処理を終了する。
【０２６７】
次に、雲海生成処理（図３６；ステップＳ３）の動作について説明する。図４０は、本実施の形態における雲海生成処理の動作の一例を示すフローチャートである。
【０２６８】
まず、雲設定領域決定部６２０が仮想カメラ１００の位置、視線方向に基づいて雲設定領域Ｒを設定する（ステップＳ３−１）。次いで、雲海描画部６４０が仮想カメラ１００の位置、視線方向に基づいて、ワールド座標系からスクリーン座標系への座標変換のためのマトリクスを生成しておく（ステップＳ３−２）。
【０２６９】
そして、中雲配置部６１４がｉ＝１について式（９）〜（１１）に従って、雲層データ９２６、中雲分布データ９５６に基づいて雲設定領域Ｒの中心点を原点とした雲海座標系における座標として中雲ビルボードの配置位置ＣＬ［ｉ］を設定し（ステップＳ３−３，Ｓ３−４）、その配置位置ＣＬ［ｉ］に対応する、ワールド座標系における配置位置にサイズＷ［ｉ］の中雲ビルボードを配置する（ステップＳ３−５）。そして、配置された中雲ビルボードをステップＳ３−２において生成されたマトリクスに従って、雲海描画部６４０がスクリーン座標に座標変換する（ステップＳ３−６）。
【０２７０】
また、不透明度設定部６２２が式（１２）に従って、仮想カメラ１００から配置位置までの距離Ｓｚ［ｉ］に応じた中雲ビルボードのα値を設定し（ステップＳ３−７）、雲分布マップ９２４に従って、更に中雲ビルボードのα値を設定する（ステップＳ３−８）。そして、描画対象設定部６２４が中雲ビルボードが透明（α＝０）か否かを判別し（ステップＳ３−９）、透明である場合には、描画対象設定データ８１０の描画フラグを"０"のままにしてステップＳ３−１１に移行する。
【０２７１】
透明でない場合には、描画対象として設定し、即ち、ステップＳ３−５において設定された配置位置ＣＬ［ｉ］に対する描画フラグを"１"に設定し（ステップＳ３−１０）、ステップＳ３−１１に移行する。
【０２７２】
ステップＳ３−１１において、中雲配置部６１４は、ｉ≧ｎか否かを判別する。"ｉ"がｎより小さい場合には、"ｉ"の値を"ｉ＋１"に更新して（ステップＳ３−１２）、ステップＳ３−４に戻り、以降ステップＳ３−１１までの処理を繰り返す。"ｉ"がｎ以上になったと判別した場合には、雲層データ９２６に設定されている全ての雲層に対して中雲ビルボードの配置位置の設定を行なったか否かを判別し（ステップＳ３−１３）、行なっていない雲層がある場合には、ステップＳ３−３に戻り、行なっていない雲層に対して、ステップＳ３−３〜Ｓ３−１３までの処理を繰り返す。
【０２７３】
そして、オブジェクト空間に設定されている全ての雲層に対して処理が終了した場合には、遠景雲設定領域Ｒｆに対してもステップＳ３−２〜Ｓ３−１４と同様の処理を行なう。即ち、雲設定領域Ｒを設定し、配置する雲オブジェクト数分、雲オブジェクトの配置位置を設定して配置し、配置された雲オブジェクトをスクリーン座標系に変換し、不透明度αを設定し、透明でないもののみを描画対象とする処理を繰り返し、更に、オブジェクト空間に設定されている全ての雲層に対して処理を行なう（ステップＳ３−１４）。
【０２７４】
そして、雲海描画部６４０が描画対象設定データ８１０において描画フラグが"１"に設定されている配置位置に配置される中雲ビルボード、雲オブジェクトのみを中雲バッファ８０４に設定されている色、不透明度等に基づいて描画して（ステップＳ３−１６）、処理を終了する。
【０２７５】
次に、本実施の形態を実現できるハードウェアの構成の一例について図４１を用いて説明する。同図に示す装置では、ＣＰＵ１０００、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６、音生成ＩＣ１００８、画像生成ＩＣ１０１０、Ｉ／Ｏポート１０１２、１０１４が、システムバス１０１６により相互にデータ入出力可能に接続されている。そして画像生成ＩＣ１０１０には表示装置１０１８が接続され、音生成ＩＣ１００８にはスピーカ１０２０が接続され、Ｉ／Ｏポート１０１２にはコントロール装置１０２２が接続され、Ｉ／Ｏポート１０１４には通信装置１０２４が接続されている。
【０２７６】
情報記憶媒体１００６は、プログラム、表示物を表現するための画像データ、音データ、プレイデータ等が主に格納されるものであり、図３１における記憶部９００に相当する。例えば本実施の形態を実現するものがコンピュータである場合には、ゲームプログラム等を格納する情報記憶媒体としてＣＤ−ＲＯＭ、ＤＶＤ等が、家庭用ゲーム装置である場合には、これらの他にゲームカセット等が用いられる。また業務用ゲーム装置として実現する場合には、ＲＯＭ等のメモリやハードディスクが用いられ、この場合には情報記憶媒体１００６はＲＯＭ１００２になる。
【０２７７】
コントロール装置１０２２はゲームコントローラ、操作パネル等に相当するものであり、ユーザーがゲームの進行に応じて行なう判断の結果を装置本体に入力するための装置である。このコントロール装置１０２２は、図３１における操作部５００に相当する。
【０２７８】
情報記憶媒体１００６に格納されるプログラム、ＲＯＭ１００２に格納されるシステムプログラム（装置本体の初期化情報等）、コントロール装置１０２２から入力される信号等に従って、ＣＰＵ１０００は装置全体の制御や各種データ処理を行う。ＲＡＭ１００４はこのＣＰＵ１０００の作業領域等として用いられる記憶手段であり、情報記憶媒体１００６やＲＯＭ１００２の所与の内容、あるいはＣＰＵ１０００の演算結果等が格納される。
【０２７９】
更に、この装置には音生成ＩＣ１００８と画像生成ＩＣ１０１０とが設けられていてゲーム音やゲーム画像の好適な出力が行えるようになっている。音生成ＩＣ１００８は情報記憶媒体１００６やＲＯＭ１００２に記憶される情報に基づいて効果音やＢＧＭ音楽等のゲーム音を生成する集積回路であり、生成されたゲーム音はスピーカ１０２０によって出力される。また、画像生成ＩＣ１０１０は、ＲＡＭ１００４、ＲＯＭ１００２、情報記憶媒体１００６等から送られる画像情報に基づいて表示装置１０１８に出力するための画素情報を生成する集積回路である。また表示装置１０１８は、ＣＲＴ、ＬＣＤ、ＴＶ、プラズマディスプレイ、液晶プラズマディスプレイ、プロジェクター等により実現される。この表示装置１０１８は、図３１に示す表示部７００に相当する。
【０２８０】
また、通信装置１０２４は装置内部で利用される各種の情報を外部とやりとりするものであり、他の装置と接続されてゲームプログラム等に応じた所与の情報を送受したり、通信回線を介してゲームプログラム等の情報を送受すること等に利用される。
【０２８１】
そして、図１〜図３５を参照して説明した種々の処理は、図３６〜図４０のフローチャートに示した処理等を行うプログラムを格納した情報記憶媒体１００６と、該プログラムに従って動作するＣＰＵ１０００、画像生成ＩＣ１０１０、音生成ＩＣ１００８等によって実現される。なお画像生成ＩＣ１０１０等で行われる処理は、ＣＰＵ１０００あるいは汎用のＤＳＰ等によりソフトウェア的に行うこととしてもよい。
【０２８２】
図４２に、ホスト装置１３００と、このホスト装置１３００と通信回線１３０２を介して接続される端末１３０４−１〜１３０４−ｎとを含むゲーム装置に本実施の形態を適用した場合の例を示す。
【０２８３】
この場合、ゲームプログラム５１０、気流テクスチャ１０４、初期データ９５２、雲分布マップ９２４、雲層データ９２６、色データ９２８、関数データ９３０は、例えば、ホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体１３０６に格納されている。以下、この情報記憶媒体１３０６に格納されている情報を格納情報という。端末１３０４−１〜１３０４−ｎが、ＣＰＵ、画像生成ＩＣ、音生成ＩＣを有し、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、格納情報が通信回線１３０２を介して端末１３０４−１〜１３０４−ｎに配信される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４−１〜１３０４−ｎに伝送し、端末において出力することになる。
【０２８４】
以上のように、本発明によれば、小雲生成処理により、雲パーツＡ（１２２）と雲パーツＢ（１２４）とを仮想カメラ１００のピッチ角Ｘに応じて合成することとしたため、単純な手法ながらも立体感のある雲を表現することができる。
【０２８５】
更に中雲生成処理により、中雲を観察する仮想カメラ１００の位置に対応して形状が変化する立体的な中雲を表現することができる。即ち、仮想カメラ１００から中雲を見る角度が変化しても、中雲の形状に矛盾が生じず、見ていて違和感のない画像を生成することができる。
【０２８６】
また、小雲テクスチャ１０２に施された気流の表現は、結果的に、中雲テクスチャの縁のみに反映されるように見えるため、よりリアルな雲を表現することができる。
【０２８７】
また、更に雲海生成処理により、雲海を違和感なく、立体的に表現することができる。また、仮想カメラ１００の視界内（雲設定領域Ｒ内）のみ中雲ビルボードを配置すれば良いため、雲海の画像生成に係る処理の軽減を図ることができる。
【０２８８】
なお、本発明は、上記実施の形態で説明したものに限らず、種々の変形実施が可能である。例えば、上記実施の形態においては、中雲生成時の初期設定において、中雲座標系における原点に偏らせて小雲ビルボードを分布することとして説明したが、他の位置であってもかまわない。すなわち、式（５）において、各４つの乱数の平均から（Ｒmax−Ｒmin）／２を減算することとして説明したが、各成分毎に適当な値を減算（あるいは、加算）することによって、中雲座標系における小雲ビルボードの集合体の分布位置を変更してもよい。
【０２８９】
あるいは、図４３に示すように、小雲ビルボードの分布をいくつかに分散してもよい。すなわち、３２個の小雲ビルボードをいくつかに分割し、各集合体毎に異なる分布の中心点の座標（すなわち、分布の偏りの位置）を与えることとしてもよい。このように、１つの中雲における小雲ビルボードの分布をいくつかに分散させることによって、図４４（ａ）に示すような横長な中雲や、（ｂ）に示すような複雑な形状の中雲等を生成することができる。
【０２９０】
また、例えば、上記実施の形態においては、遠景雲設定処理においても、雲設定領域Ｒ内と同数ｎの雲を設定することとしたが、遠景雲設定領域Ｒｆに配置される雲は仮想カメラ１００から遠いため、あまり精細なモデルである必要がないため、例えば、設定する雲の数を少なくし、一つ一つの雲オブジェクトを大きくして配置することにより、処理の軽減を図ることとしても良い。
【０２９１】
また、雲オブジェクトを中雲テクスチャをマッピングしたペラポリゴンとしたが、遠景であるため、より単純な雲テクスチャをマッピングして雲オブジェクトを生成することとしても良い。その場合、予め、遠景用の雲テクスチャを記憶部９００に格納しておくこととしても良い。
【０２９２】
また、例えば、図３０に示した雲分布マップ９２４は、時間経過とともに、雲のある部分とない部分との分布を変化させることとしても良い。その場合には、時間経過とともに雲が流れ、分布が変化する様子を表現することができる。
【０２９３】
また、層の幅ＡＬｔｗを雲層毎に固定値として設定していたが、例えば、層の幅ＡＬｔｗを位置的に変化させることとしても良い。即ち、雲層の厚い部分と薄い部分とを設定することとしても良い。また、例えば、積乱雲のように時間経過とともに発達していくような雲の場合には、雲層の一部の厚みが時間経過とともに厚くなるため、更に時間的に層の幅ＡＬｔｗを変化させることとしても良い。
【０２９４】
また、上記実施の形態においては、飛行機ゲームを例にとって説明したが、プレーヤが操作（操縦）するものは、飛行機に限らず、例えば、ヘリコプターなどであっても勿論良い。
【０２９５】
また、上記実施の形態においては、家庭用ゲーム装置を例にとって説明したが、本発明の適用は、これに限らず、例えば、携帯型のゲーム装置や業務用ゲーム装置であっても良い。また、例えば、パーソナル・コンピュータ、ＰＤＡ、携帯型電話機等のゲーム装置以外のコンピュータ装置であっても良い。
【符号の説明】
【０２９６】
５００    操作部
６００    処理部
６１０    ゲーム演算部
６１２    中雲生成部
６１６    初期設定部
６１８    雲海生成部
６３０    画像生成部
６３２    小雲描画部
６３４    中雲描画部
６４０    雲海描画部
７００    表示部
８００    一時記憶部
８０２    小雲バッファ
８０４    中雲バッファ
８０６    特定点色データ
８０８    フレームバッファ
８１０    描画対象設定データ
９００    記憶部
９１０    ゲームプログラム
９５０    初期データ
９２４    雲分布マップ
９２６    雲層データ
９２８    色データ
９３０    関数データ
１０４    気流テクスチャ
【図１】
2011014164.tif 000003
【図２】
2011014164.tif 000004
【図３】
2011014164.tif 000005
【図４】
2011014164.tif 000006
【図５】
2011014164.tif 000007
【図６】
2011014164.tif 000008
【図７】
2011014164.tif 000009
【図８】
2011014164.tif 000010
【図９】
2011014164.tif 000011
【図１０】
2011014164.tif 000012
【図１１】
2011014164.tif 000013
【図１２】
2011014164.tif 000014
【図１３】
2011014164.tif 000015
【図１４】
2011014164.tif 000016
【図１５】
2011014164.tif 000017
【図１６】
2011014164.tif 000018
【図１７】
2011014164.tif 000019
【図１８】
2011014164.tif 000020
【図１９】
2011014164.tif 000021
【図２０】
2011014164.tif 000022
【図２１】
2011014164.tif 000023
【図２２】
2011014164.tif 000024
【図２３】
2011014164.tif 000025
【図２４】
2011014164.tif 000026
【図２５】
2011014164.tif 000027
【図２６】
2011014164.tif 000028
【図２７】
2011014164.tif 000029
【図２８】
2011014164.tif 000030
【図２９】
2011014164.tif 000031
【図３０】
2011014164.tif 000032
【図３１】
2011014164.tif 000033
【図３２】
2011014164.tif 000034
【図３３】
2011014164.tif 000035
【図３４】
2011014164.tif 000036
【図３５】
2011014164.tif 000037
【図３６】
2011014164.tif 000038
【図３７】
2011014164.tif 000039
【図３８】
2011014164.tif 000040
【図３９】
2011014164.tif 000041
【図４０】
2011014164.tif 000042
【図４１】
2011014164.tif 000043
【図４２】
2011014164.tif 000044
【図４３】
2011014164.tif 000045
【図４４】
2011014164.tif 000046