(57)【要約】【課題】システムの処理負荷を抑えて、メモリの使用量を節約して、大量のポリゴンを描画することができるプログラム、情報記憶媒体、及び画像生成システムを提供する。【解決手段】カメラマトリクスに基づき、複数の頂点マトリクスを求め、求めた複数の頂点マトリクスと、複数の原点とを用いて、スプライトの頂点座標を求める。【選択図】図４
2009140371.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間における仮想カメラから見える画像を生成するためのプログラムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部として、コンピュータを機能させ、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とするプログラム。
【請求項２】
請求項１において、
前記頂点マトリクス演算部が、
ワールド座標系の座標値を、オブジェクト空間における仮想カメラの位置・向きを基準とするカメラ座標系の座標値へ座標変換を行うカメラマトリクスに基づき、前記頂点マトリクス群を構成する各頂点マトリクスを生成すると共に、頂点マトリクスの各成分のうちｘ軸の平行移動成分及びｙ軸の平行移動成分の少なくとも一方の値を、前記頂点マトリクス群を構成する各頂点マトリクスにおいて互いに異ならせることを特徴とするプログラム。
【請求項３】
請求項２において、
前記頂点マトリクス演算部が、
ｘ軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのｘ軸の平行移動成分の値を設定し、ｙ軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのｙ軸の平行移動成分の値を設定することを特徴とするプログラム。
【請求項４】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１〜３のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項５】
オブジェクト空間における仮想カメラから見える画像を生成するための画像生成システムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部とを含み、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、画像生成システムに関する。
【背景技術】
【０００２】
従来から、複数のポリゴンが設定されるオブジェクト空間（仮想的な３次元空間）内において、仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
このような画像生成システムでは、同一の形状、同一の大きさの複数のポリゴン、例えば、大量のパーティクルを用いて画像を生成する場合があり、通常、オブジェクト空間に配置された複数のポリゴンの各頂点座標をカメラマトリクスを用いて、カメラ座標系に座標を変換する処理を行っている。
【特許文献１】特開２００１−３１２７４０
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ポリゴンの座標変換処理は、ポリゴンの各頂点に対して行うので、特に大量のパーティクルを用いて画像を生成する場合には、システムの処理負荷が重くなり、メモリ使用率が高くなるという問題があった。
【０００５】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、システムの処理負荷を抑えると共にメモリの使用量を節約して、パーティクルなどの大量のポリゴンを描画することができるプログラム、情報記憶媒体、及び画像生成システムを提供することにある。
【課題を解決するための手段】
【０００６】
（１）本発明は、
オブジェクト空間における仮想カメラから見える画像を生成するためのプログラムであって、
仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する頂点マトリクス演算部と、
オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定するオブジェクト空間設定部として、コンピュータを機能させ、
前記オブジェクト空間設定部が、
前記複数の所与の点それぞれに対して、前記頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定することを特徴とするプログラムに関する。
【０００７】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成する画像生成システムに関係する。
【０００８】
本発明によれば、同一の形状及び大きさの複数のオブジェクトを用いて描画する場合に、少ない情報量、演算量で効率よく画像を生成することができる。つまり、本発明によれば、画像生成システムの処理負荷、メモリ使用量を軽減することができる。
（２）また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記頂点マトリクス演算部が、
ワールド座標系の座標値を、オブジェクト空間における仮想カメラの位置・向きを基準とするカメラ座標系の座標値へ座標変換を行うカメラマトリクスに基づき、前記頂点マトリクス群を構成する各頂点マトリクスを生成すると共に、頂点マトリクスの各成分のうちｘ軸の平行移動成分及びｙ軸の平行移動成分の少なくとも一方の値を、前記頂点マトリクス群を構成する各頂点マトリクスにおいて互いに異ならせてもよい。
【０００９】
本発明によれば、オブジェクトが仮想カメラに正対するように処理を行うビルボード処理も行いながら、少ない情報量、演算量で効率よく複数のオブジェクトをオブジェクト空間に配置することができる。
（３）また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記頂点マトリクス演算部が、
ｘ軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのｘ軸の平行移動成分の値を設定し、ｙ軸の平行移動成分のスケーリングパラメータに基づいて、前記頂点マトリクス群を構成する各頂点マトリクスのｙ軸の平行移動成分の値を設定してもよい。
【００１０】
本発明によれば、スケーリングパラメータを変化させることによって、オブジェクトの大きさや形状を変化させることができ、少ない情報量、演算量で、バリエーションのある画像を生成することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００１２】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００１３】
操作部１６０は、プレーヤがオブジェクト（プレーヤキャラクタ、移動体）の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００１４】
なお、操作部１６０は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ（操作データ）を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける（プレーヤが手に装着する）グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【００１５】
例えば、入力機器に備えられた加速度センサは、３軸（Ｘ軸、Ｙ軸、Ｚ軸）の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサは、５ｍｓｅｃ毎に加速度を検出している。また、加速度センサは、１軸、２軸、６軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置（本体装置）に送信される。
【００１６】
また、入力機器に備えられた撮像部は、赤外線フィルタ、レンズ、撮像素子（イメージセンサ）、画像処理回路を含む。赤外線フィルタは、入力装置の前方に配置され、表示部１９０に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、ＣＭＯＳセンサやＣＣＤのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報（特定位置）を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【００１７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）を記憶することができる。
【００１８】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００１９】
通信部１９６は外部（例えば他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００２０】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体１８０や記憶部１７０に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【００２１】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００２２】
この処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００２３】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、仮想カメラ制御部１１４、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００２４】
オブジェクト空間設定部１１０は、雪、雨、キャラクタ、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ライン（線）、ラインポリゴン、ポリゴン、多角形、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義であり、例えば、ワールド座標系でのＸ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００２５】
本実施形態のオブジェクト空間設定部１１０は、オブジェクト空間において、互いに異なる複数の所与の点それぞれに対応するオブジェクトを設定する。ここで所与の点とは、オブジェクト空間において、移動シミュレーションを行う対象のオブジェクトの代表点、原点とすることができる。例えば、雪が降るシミュレーション処理を行う場合には、当該所与の点に対して、移動シミュレーション処理を行ってもよい。
【００２６】
また、本実施形態のオブジェクト空間設定部１１０は、オブジェクト空間の複数の所与の点それぞれに対して、後述する頂点マトリクス演算部１１８によって生成された頂点マトリクス群を構成する各頂点マトリクスを用いて所与の点から複数の頂点へ変換する変換処理を行うと共に、変換された複数の頂点によって構成されるオブジェクトを当該所与の点に対応するオブジェクトとして設定する。
【００２７】
また、本実施形態のオブジェクト空間設定部１１０は、後述する頂点マトリクス演算部１１８によって、複数種類の頂点マトリクス群が生成された場合には、生成された複数の頂点マトリクス群のうち、いずれか１つの頂点マトリクス群を用いて、所与の点に対応するオブジェクトを設定してもよい。
【００２８】
なお、本実施形態では、オブジェクトデータ記憶部１７６にオブジェクトのオブジェクトデータ（モデルデータ）が記憶されており、これらのオブジェクトをオブジェクト空間に配置する処理を行ってもよい。例えば、雪のモデルデータに基づいて、雪モデルをオブジェクト空間に配置する処理を行ってもよい。
【００２９】
移動・動作処理部１１２は、オブジェクト（雪、キャラクタ、移動体等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３０】
特に本実施形態の移動・動作処理部１１２は、物理法則に基づいて、オブジェクト空間内で雪を移動させるシミュレーション演算を行う。例えば、オブジェクト空間における雪の位置を示す原点（代表点）を物理法則に基づいて移動させる処理を行う。
【００３１】
仮想カメラ制御部１１４は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（例えば、Ｘ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。
【００３２】
例えば仮想カメラによりオブジェクト（例えばキャラクタ、移動体）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００３３】
カメラマトリクス演算部１１６は、ワールド座標系における仮想カメラの位置・向きに基づいて、ワールド座標系の座標値からカメラ座標系（例えば、仮想カメラを原点として、ｘ軸方向は透視変換後の最終的な画像の水平方向、ｙ軸方向は透視変換後の最終的な画像の垂直方向とし、さらに視線方向がｚ軸の負の方向になるように設定された座標系）の座標値へ座標変換を行うカメラマトリクス（ビューマトリクス）を求める処理を行う。なお、カメラマトリクスは、ワールド座標系における仮想カメラの位置、注視点、そして仮想カメラの上方向に基づいて、生成することができる。
【００３４】
頂点マトリクス演算部１１８は、仮想カメラの位置・向きに基づいて、互いに異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成する。
【００３５】
頂点マトリクス演算部１１８は、カメラマトリクス演算部１１６によって求められるカメラマトリクスに基づき、頂点マトリクス群を構成する各頂点マトリクスを生成する。特に、頂点マトリクスの各成分のうちｘ軸の平行移動成分及びｙ軸の平行移動成分の少なくとも一方の値を、各頂点マトリクスにおいて互いに異ならせるようにして各頂点マトリクスを生成する。
【００３６】
また、頂点マトリクス演算部１１８は、ｘ軸の平行移動成分のスケーリングパラメータ（例えば、予め決められたスプライトの横サイズｗ）に基づいて、頂点マトリクス群を構成する各頂点マトリクスのｘ軸の平行移動成分の値を設定し、ｙ軸の平行移動成分のスケーリングパラメータ（例えば、予め決められたスプライトの縦サイズｈ）に基づいて、頂点マトリクス群を構成する各頂点マトリクスのｙ軸の平行移動成分の値を設定してもよい。
【００３７】
また、頂点マトリクス演算部１１８は、複数種類の頂点マトリクス群を生成してもよい。
【００３８】
なお、頂点マトリクス演算部１１８は、頂点マトリクスの各成分のうちｚ軸の回転成分の少なくとも１つの成分を、各頂点マトリクスにおいて互いに異ならせるようにして各頂点マトリクスを生成してもよい。つまり、ｚ軸に回転度合いの異なる複数の頂点マトリクスによって構成される頂点マトリクス群を生成してもよい。
【００３９】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４０】
頂点処理部１２６では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換（カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。
【００４１】
特に、本実施形態の頂点処理部１２６は、頂点マトリクス演算部１１８で求めた頂点マトリクスを用いて、ワールド座標系におけるオブジェクトの原点座標からカメラ座標系における当該オブジェクトの各頂点の頂点座標を求める処理を行う。
【００４２】
そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００４３】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００４４】
そして描画部１２０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００４５】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、オブジェクトデータ記憶部１７６に保存される。
【００４６】
テクスチャマッピングは、記憶部１７０のテクスチャ記憶部１７８に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０のテクスチャ記憶部１７８からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。特に本実施形態では、テクスチャ記憶部１７８に記憶されている雪模様テクスチャや煙模様テクスチャ、星模様テクスチャなどを、ポリゴンにマッピングする処理を行う。例えば、ポリゴンの原点（代表点）に応じて、ポリゴンにマッピングするテクスチャを決めて、テクスチャマッピングを行ってもよい。
【００４７】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が格納されるＺバッファ１７９（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファ１７９に格納されるＺ値を参照する。そして参照されたＺバッファ１７９のＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファ１７９のＺ値を新たなＺ値に更新する。
【００４８】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【００４９】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００５０】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００５１】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
２．本実施形態の手法
（１）概要
本実施形態は、図２に示すように、形状及び大きさが同一の雪のポリゴン（パーティクル）を用いて画像をリアルタイムに生成する処理を行うものである。例えば、大量の雪のスプライト（ポリゴンの一例）の原点を、重力、風力などの物理的な運動法則に基づき移動させるシミュレーション処理を行い、スプライトに雪テクスチャ（雪模様テクスチャ）をマッピングして画像を生成している。ビルボード処理を行うのは、雪のモデルを作成する手間を省き、頂点数を極力軽減させてリアルな画像を生成するためである。
【００５２】
（２）頂点マトリクスを用いて画像を生成する手法
ところで、通常の描画処理では種々の座標変換を行っており、例えば、図３に示すように、ワールド座標系における各スプライトの各頂点を、カメラ座標系（視点を原点とし、視線の方向がｚ軸の負の方向になるように設定される座標系）への座標変換処理、つまり視野変換処理を行っている。したがって、大量の雪のスプライトを表示する場合には、雪のスプライトそれぞれに対して、スプライトの頂点毎にカメラマトリクスを用いて視野変換を行うことになる。
【００５３】
例えば、図３に示すように、ワールド座標系におけるスプライトの各頂点Ｖ０〜Ｖ３を、カメラマトリクスＶｍを用いて、カメラ座標系における座標に視野変換を行う場合、スプライト毎の頂点座標を必要とするので、大量のスプライトを表示する場合には、情報量が多くメモリの使用率が高くなり、また、スプライト数×頂点数に応じた座標変換を行うので演算量が多くなりシステムの処理負荷が重くなるという問題があった。
【００５４】
そこで、本実施形態では、カメラマトリクスに基づき、互いに異なる４つの頂点マトリクスを生成し、各スプライトの原点情報（原点座標）と、生成された４つの頂点マトリクスのみで、カメラ座標系におけるスプライトの頂点座標を求める処理を行っている。つまり、本実施形態では、同じ形状、同じ大きさの大量のスプライトを表現する場合に、従来よりも少ない情報量、少ない演算量でカメラ座標系におけるスプライトの頂点座標を求めるようにしている。
【００５５】
まず、頂点マトリクスを求める手法について具体的に説明すると、本実施形態では、図４に示すように、カメラマトリクスＶｍと、予め決められたスプライトの大きさと形状とに基づいて各頂点Ｖ０〜Ｖ３に対応する頂点マトリクスＷｍ０〜Ｗｍ３を生成している。
【００５６】
具体的には、スプライトの頂点それぞれに、原点から頂点への平行移動ベクトルを求め、カメラマトリクスＶｍのｘ軸、ｙ軸の平行移動成分の値に、原点から頂点までの平行移動ベクトルを加算したマトリクスを、その頂点の頂点マトリクスとして設定する。
【００５７】
例えば、図５に示すように、スプライトの原点がスプライトの中心点であって、スプライトの横サイズｗと、縦サイズｈが予め決められている場合には、図６に示すように、原点Ｐから頂点Ｖ０までの平行移動ベクトルが（ｘ，ｙ）＝（−ｗ／２，ｈ／２）であるので、頂点マトリクスＷｍ０は、ｘ軸平行移動成分に、カメラマトリクスＶｍのｘ軸平行移動成分ｔ０からｗ／２を減算した値を設定し、ｙ軸平行移動成分に、カメラマトリクスＶｍのｙ軸平行移動成分ｔ１にｈ／２を加算した値を設定し、頂点マトリクスＷｍ０のｘ、ｙ軸の平行移動成分以外の成分は、カメラマトリクスＶｍの成分の値と同じ値を設定する。つまり、ワールド座標系におけるスプライトの原点Ｐの座標を、カメラマトリクスＶｍによってカメラ座標系にされたカメラ座標系の原点Ｐの座標を頂点Ｖ０に平行移動させるためには、原点座標Ｐのｘ成分からｗ／２を減算し、ｙ成分にｈ／２を加算することになる。すなわち、これら処理を一元的に行うのが、頂点Ｖ０用の頂点マトリクスＷｍ０になる。
【００５８】
同様に、原点Ｐから頂点Ｖ１までの平行移動ベクトルが（ｘ，ｙ）＝（ｗ／２，ｈ／２）であるので、頂点マトリクスＷｍ１は、ｘ軸の平行移動成分に、カメラマトリクスＶｍのｘ軸の平行移動成分の値にｗ／２を加算した値を設定し、ｙ軸の平行移動成分に、カメラマトリクスＶｍのｙ軸の平行移動成分の値にｈ／２を加算した値を設定し、その他の成分はカメラマトリクスＶｍと同一の値に設定している。
【００５９】
また、原点Ｐから頂点Ｖ２までの平行移動ベクトルが（ｘ，ｙ）＝（−ｗ／２，−ｈ／２）であるので、頂点マトリクスＷｍ２は、ｘ軸の平行移動成分に、カメラマトリクスＶｍのｘ軸の平行移動成分の値からｗ／２を減算した値を設定し、ｙ軸の平行移動成分に、カメラマトリクスＶｍのｙ軸の平行移動成分の値からｈ／２を減算した値を設定し、その他の成分はカメラマトリクスＶｍと同一の値に設定している。
【００６０】
また、原点Ｐから頂点Ｖ３までの平行移動ベクトルが（ｘ，ｙ）＝（ｗ／２，−ｈ／２）であるので、頂点マトリクスＷｍ３は、ｘ軸の平行移動成分に、カメラマトリクスＶｍのｘ軸の平行移動成分の値にｗ／２を加算した値を設定し、ｙ軸の平行移動成分に、カメラマトリクスＶｍのｙ軸の平行移動成分の値からｈ／２を減算した値を設定し、その他の成分はカメラマトリクスＶｍと同一の値に設定している。
【００６１】
なお、本実施形態では、スプライトをカメラの視線方向に正対させるビルボード表示を行うようにしているので、４つの頂点マトリクスＷｍ０〜Ｗｍ３のｚ軸の平行移動成分は全て同じ値にしている。例えば、原点Ｐから各頂点へのｚ軸方向の移動量を零する場合には、４つの頂点マトリクスＷｍ０〜Ｗｍ３のｚ軸の平行移動成分は、カメラマトリクスのｚ軸の平行移動成分ｔ２と同じ値に設定する。
【００６２】
また、本実施形態では、カメラマトリクスＶｍに基づいて、頂点マトリクスＷｍ０〜Ｗｍ３を生成している。したがって、仮想カメラの位置や向きが変化する度に頂点マトリクスＷｍ０〜Ｗｍ３が生成されることになる。かかる場合には、メモリ節約のため、新たな頂点マトリクスＷｍ０〜Ｗｍ３をメモリ上に上書きして記憶させるようにすることが望ましい。
【００６３】
以上のように、大きさ及び形状が同一の複数のスプライトをビルボード表示する場合には、頂点マトリクスＷｍ０〜Ｗｍ３を用いることで、従来よりも少ない情報量、演算数で、スプライトＳＰ０〜ＳＰｎのカメラ座標系における頂点座標を求めることができる。
【００６４】
つまり、雪のスプライト数分の原点座標と、頂点マトリクスＷｍ０〜Ｗｍ３の４つのマトリクス情報だけで、カメラ座標系における雪の各スプライトの頂点座標を求めることができる。
【００６５】
なお、本実施形態の手法を用いると、ＣＰＵ側からＧＰＵ側へのデータの転送量を大幅に削減することができる。つまり、従来の手法の場合、ＣＰＵ側がワールド座標系における各スプライトの頂点情報と、カメラマトリクスＶｍをＧＰＵ側に転送していた。しかし、本実施形態では、ＣＰＵが各スプライト（ＳＰ０〜ＳＰｎ）のワールド座標系における原点座標と、４つの頂点マトリクスＷｍ０〜Ｗｍ３を求め、各スプライトの原点情報と４つの頂点マトリクスそれぞれ配列としてＣＰＵ側からＧＰＵ側に設定（転送）し、スプライトを描画する際には上記原点情報配列のインデックス番号と頂点マトリクス配列のインデックス番号のみをＣＰＵ側からＧＰＵ側に転送する。そして、転送されたデータに基づき、ＧＰＵ側がカメラ座標系のスプライトの頂点座標を求める処理を行うことになる。したがって、本実施形態の手法によれば従来の手法に比較してＣＰＵ側からＧＰＵ側へのデータの転送量を軽減させることができる。
【００６６】
なお、原点座標ＰをカメラマトリクスＶｍを用いて視野変換を行った後に、原点から各頂点までのずらし量を加減算してもよいが、頂点マトリクスＷｍ０〜Ｗｍ３を用いることで、遙かに演算数を軽減させることができる。
【００６７】
さらに、より具体的な例を図７を用いて説明する。図７は、雪の各スプライトの横サイズｗが１０、スプライトの縦サイズｈが１０であって、スプライトの原点Ｐがスプライトの中心点に予め設定されている例である。
【００６８】
例えば、仮想カメラが、ワールド座標系における（Ｘ，Ｙ，Ｚ）＝（０，１０，２０）に配置され、ワールド座標系のＺマイナス方向を向いている場合のカメラマトリクスＶｍは、以下のとおりである。
【００６９】
【数１】
2009140371.tif 000003
そして、スプライトの頂点Ｖ０〜Ｖ３の頂点マトリクスＷｍ０〜Ｗｍ３は以下のとおりである。
【００７０】
【数２】
2009140371.tif 000004
そして、ワールド座標系における複数の原点座標Ｐ０〜Ｐｎと、上述の４つ頂点マトリクスＷｍ０〜Ｗｍ３によって、原点座標に対応するスプライトのカメラ座標系における頂点座標を求めることができる。
【００７１】
例えば、スプライトＳＰ０の原点座標Ｐ０が（Ｘ，Ｙ，Ｚ）＝（１５，１５，０）である場合には、原点座標Ｐ０に対応するスプライトＳＰ０の各頂点Ｖ０〜Ｖ３は、下式（１）〜（４）によって求めることができる。
【００７２】
Ｖ０＝Ｗｍ０×Ｐ０  （１）
Ｖ１＝Ｗｍ１×Ｐ０  （２）
Ｖ２＝Ｗｍ２×Ｐ０  （３）
Ｖ３＝Ｗｍ３×Ｐ０  （４）
すなわち、スプライトＳＰ０の各頂点Ｖ０〜Ｖ３は、以下の行列式で求めることができる。
【００７３】
【数３】
2009140371.tif 000005
このように、ワールド座標系におけるスプライト原点座標Ｐ０〜Ｐｎと、４つの頂点マトリクスＷｍ０〜Ｗｍ３との情報だけで、原点Ｐ０〜Ｐｎに対応するスプライトＳＰ０〜ＳＰｎのカメラ座標系における頂点座標を求めることができる。
【００７４】
なお、本実施形態では、ポリゴンのデザインに応じて、原点からポリゴンの各頂点への平行移動ベクトルを求めることができる。例えば、矩形上のものだけでなく、台形や平行四辺形、など種々の形状に応じた頂点マトリクスを生成することができる。
【００７５】
なお、本実施形態では、時間経過に応じて、スプライトを回転させるように頂点マトリクスを求めてもよい。例えば、図８に示すように、仮想カメラ座標系のｚ軸の正方向からみて反時計回りに回る場合における回転角度θを決定して、頂点マトリクスＷｍ０〜Ｗｍ３を求めてもよい。回転角度θはランダムに求めてもよいし、所定角度（例えば、４５度）としてもよい。
【００７６】
そして、原点Ｐ０から各頂点Ｖ０〜Ｖ３への平行移動ベクトルを、回転角度に応じて変化させて求めることができる。
【００７７】
例えば、図５に示すように、スプライトの原点がスプライトの中心点であって、スプライトの横サイズｗと、縦サイズｈが予め決められている場合には、原点Ｐから頂点Ｖ０までの平行移動ベクトルを（ｘ，ｙ）＝（ｃｏｓθ×（−ｗ／２）−ｓｉｎθ×（ｈ／２），ｓｉｎθ×（−ｗ／２）＋ｃｏｓθ×（ｈ／２））とし、カメラマトリクスＶｍのｘ軸、ｙ軸の平行移動成分の値に、平行移動ベクトルを加算したマトリクスを、頂点Ｖ０の頂点マトリクスＷｍ０として設定する。他の頂点Ｖ１〜Ｖ３に対応する頂点マトリクスＷｍ１〜Ｗｍ３も同様に求めることができる。すなわち、頂点マトリクスＷｍ０〜Ｗｍ３は以下のとおりである。
【００７８】
【数４】
2009140371.tif 000006
このようにすれば、全てのスプライトを同時に同一の回転角度で回転させることができ、図９（Ａ）（Ｂ）に示すように、フレーム経過に応じてオブジェクト空間に配置されるスプライトを回転させることができ、例えば星模様テクスチャをマッピングした場合には、フレーム経過に応じて、大量の星が、各スプライトの中心を軸に動的に回転しているような画像を表現することができる。
【００７９】
また、カメラの位置や向きが固定されている場合には、頂点マトリクスＷｍ０〜Ｗｍ３群を複数求めておき、画像生成システムの進行状況や、時間経過、スプライトの種類（ポリゴンの種類）に応じて、いずれかの頂点マトリクス群を用いて、スプライトの頂点座標を求めてもよい。
【００８０】
例えば、スプライトの大きさが異なる複数の頂点マトリクスを用意し、時間経過に応じてスプライトの大きさを決定し、決定されたスプライトの大きさに応じた頂点マトリクスを用いるようにしてもよい。
【００８１】
例えば、カメラマトリクスＶｍによって求められる頂点マトリクス群Ａ、Ｂ、Ｃを求め、時間経過に伴って頂点マトリクス群を変更する。
【００８２】
具体的に説明すると、１フレーム〜１０フレームまでは、横サイズｗ＝４、縦サイズｈ＝４のスプライトが配置される頂点マトリクス群Ａ（Ｗｍ０ａ〜Ｗｍ３ａ）を生成して描画処理を行い、１１フレームから２０フレームまでは、横サイズｗ＝１０、縦サイズｈ＝１０のスプライトが配置される頂点マトリクス群Ｂ（Ｗｍ０ｂ〜Ｗｍ３ｂ）を用いて描画する処理を行い、２１〜３０フレームまでは、横サイズｗ＝２０、縦サイズｈ＝２０のスプライトが配置される頂点マトリクス群Ｃ（Ｗｍ０ｃ〜Ｗｍ３ｃ）を用いて描画する処理を行うようにしてもよい。つまり、合計１２個の頂点マトリクスを生成し、時間経過に応じていずれかの頂点マトリクス群を用いるようにする。
【００８３】
また、スプライトの種類に応じて頂点座標を求めてもよい。具体的に説明すると、形状や大きさが異なる３種類の星が大量に描画される画像を生成する場合には、スプライトの形状や大きさに応じた頂点マトリクス群を用いて３種類のスプライトを大量に描画する。
【００８４】
例えば、予め、全ての原点情報それぞれに対応する、スプライトの種類を示す識別情報（例えば、頂点マトリクス群の識別情報）を記憶する。そして、原点情報に対応するスプライトの識別情報に基づいて、複数種類の頂点マトリクス群のうち、いずれかの頂点マトリクス群を選択し、選択した頂点マトリクス群を用いてスプライトの頂点座標を求める。
【００８５】
例えば、原点情報に対応するスプライトの識別情報がＡ（頂点マトリクス群Ａ）である場合には、当該原点情報と、頂点マトリクス群Ａを用いてスプライトの頂点座標を求める。例えば、上述の例によれば、横サイズｗ＝４、縦サイズｈ＝４のスプライトの頂点座標を求める。
【００８６】
そして、原点情報に対応するスプライトの識別情報がＢ（頂点マトリクス群Ｂ）である場合には、当該原点情報と、頂点マトリクス群Ｂを用いてスプライトの頂点座標を求める。例えば上述の例によれば、横サイズｗ＝１０、縦サイズｈ＝１０のスプライトの頂点座標を求める。
【００８７】
また、原点情報に対応するスプライトの識別情報がＣ（頂点マトリクス群Ｃ）である場合には、当該原点情報と、頂点マトリクス群Ｃを用いてスプライトの頂点座標を求める。例えば、上述の例によれば、横サイズｗ＝２０、縦サイズｈ＝２０のスプライトの頂点座標を求める。
【００８８】
３．本実施形態の処理
次に、本実施形態の詳細な処理例について図１０のフローチャートを用いて説明する。
【００８９】
まず、ワールド座標系における仮想カメラの位置、向きに基づいて、カメラマトリクスを求める（ステップＳ１）。
【００９０】
そして、スプライトの横サイズｗ、縦サイズｈ、及びスプライトの原点、カメラマトリクスとに基づいて４つの頂点マトリクスを求める（ステップＳ２）。
【００９１】
次に、ワールド座標系においてスプライトの原点を移動させるシミュレーション処理を行う。例えば、雪のスプライトを表現する場合には、物理法則に基づき各雪のスプライトの原点を移動（落下移動）させる処理を行う（ステップＳ３）。
【００９２】
そして、各スプライトの原点のワールド座標系における座標と、４つの頂点マトリクスに基づいて、カメラ座標系における各スプライトの頂点座標を求める（ステップＳ４）。
【００９３】
以上で処理が終了する。
【００９４】
４．応用例
（１）上述した例では、頂点数が４つのスプライトではあるが、頂点数は３つから形成される３角形ポリゴン、頂点数が５つで構成される５角形ポリゴンなど、他の多角形にも応用できる。また、雨などのパーティクルを表現する場合には頂点数が２つであるラインポリゴン（ライン）についても応用してもよい。例えば、Ｎ個の頂点で構成される多角形のカメラ座標系における頂点座標を求める場合には、頂点マトリクスをＮ個求め、ポリゴンの原点と各頂点（Ｖ０〜ＶＮ）との平行移動ベクトルを求めて、カメラマトリクスのｘ、ｙ軸の平行移動成分に平行移動ベクトルを加算し、各頂点の頂点マトリクス（Ｗｍ０〜ＷｍＮ）を生成する。そして、Ｎ個の頂点マトリクスＷｍ０〜ＷｍＮと、ワールド座標系の原点の座標情報とを用いて、カメラ座標系のポリゴンの頂点座標を求める。
【００９５】
なお、かかる場合も、頂点数の異なるポリゴンの種類に応じた複数種類の頂点マトリクス群を予め生成してもよい。例えば、上述した頂点マトリクス群Ａ〜Ｃの他、三角形ポリゴンの頂点座標を求める頂点マトリクス群Ｄ、５角形ポリゴンの頂点座標を求める頂点マトリクス群Ｅ、ラインポリゴンの頂点座標を求める頂点マトリクス群Ｆを予め用意してもよい。
【００９６】
そして、全ての原点情報に対応づけて、予めポリゴンの種類を識別する識別情報（例えば、頂点マトリクス群の識別情報Ａ〜Ｆ）を記憶し、描画する際には、原点情報に対応するポリゴンの識別情報に基づいて、複数種類の頂点マトリクス群（Ａ〜Ｆ）のうち、いずれかの頂点マトリクス群を選択し、選択した頂点マトリクス群を用いてポリゴンの頂点座標を求める。
【００９７】
（２）また、位置及び向きの少なくとも一方が異なる複数の仮想カメラに基づいて、複数の画像を生成する場合には、仮想カメラ毎に、カメラマトリクスとスプライトのサイズに基づいて頂点マトリクスを求めてもよい。
【００９８】
例えば、オブジェクト空間に存在するスプライトを、プレーヤＰ１用の仮想カメラから見える画像と、プレーヤＰ２用の仮想カメラから見える画像とを生成する場合には、次のように処理を行う。
【００９９】
まず、プレーヤＰ１用の仮想カメラの位置・向きに基づいてカメラマトリクスＶｍ１を求め、カメラマトリクスＶｍ１とスプライトの縦・横サイズに基づいて、頂点マトリクスＷｍ０１〜Ｗｍ３１を生成する。そして、ワールド座標系における全ての各スプライトの原点座標と、求めた頂点マトリクスＷｍ０１〜Ｗｍ３１を用いて、プレーヤＰ１用の仮想カメラのカメラ座標系における複数の各スプライトの頂点座標を求める。
【０１００】
一方、プレーヤＰ２用の仮想カメラから見える画像を生成する場合には、プレーヤＰ２用の仮想カメラの位置・向きに基づいてカメラマトリクスＶｍ２を求め、カメラマトリクスＶｍ２とスプライトの縦・横サイズに基づいて、頂点マトリクスＷｍ０２〜Ｗｍ３２を生成する。そして、ワールド座標系における全てのスプライトの各原点座標と、求めた頂点マトリクスＷｍ０２〜Ｗｍ３２を用いて、プレーヤＰ２用の仮想カメラのカメラ座標系における複数の各スプライトの頂点座標を求める。
【０１０１】
以上のようにすれば、プレーヤＰ１、Ｐ２用それぞれの生成される画像は、それぞれスプライトが正面を向くビルボード表示を行うことができると共に、プレーヤＰ１、Ｐ２用共に、ワールド座標系での同一の原点座標を用いて、各仮想カメラに対応したカメラ座標系におけるスプライトの頂点座標を少ない情報量で簡易に求めることができる。
【図面の簡単な説明】
【０１０２】
【図１】本実施形態の画像生成システムの機能ブロック図の例。
【図２】本実施形態において生成する画像の一例。
【図３】本実施形態のカメラマトリクスを求める手法の説明図。
【図４】本実施形態の頂点マトリクスを求める手法、及び、スプライトの原点と頂点マトリクスとを用いてスプライトの頂点座標を求める手法の説明図。
【図５】スプライトの一例。
【図６】頂点用マトリクスを求める手法の説明図。
【図７】頂点用マトリクスを求める手法の説明図。
【図８】頂点用マトリクスを求める手法の説明図。
【図９】頂点用マトリクスを求める手法の説明図。
【図１０】本実施形態の処理のフローチャート。
【符号の説明】
【０１０３】
ＳＰ、ＳＰ０〜ＳＰＮ  スプライト、
Ｖｍ  カメラマトリクス、
Ｗｍ０〜ＷｍＮ  頂点マトリクス、
Ｐ０〜Ｐｎ  スプライトの原点、
１００  処理部、１１０  オブジェクト空間設定部、１１２  移動・動作処理部、
１１４  仮想カメラ制御部、１２０  描画部、
１１６  カメラマトリクス演算部、１１８  頂点マトリクス演算部、
１２６  頂点処理部、１３０  音生成部、
１６０  操作部、１７０  記憶部、１７２  主記憶部、
１７４  描画バッファ、１７６  オブジェクトデータ記憶部、
１７８  テクスチャ記憶部、１７９  ｚバッファ、１８０  情報記憶媒体、
１９０  表示部、１９２  音出力部、１９６  通信部
【図１】
2009140371.tif 000007
【図２】
2009140371.tif 000008
【図３】
2009140371.tif 000009
【図４】
2009140371.tif 000010
【図５】
2009140371.tif 000011
【図６】
2009140371.tif 000012
【図７】
2009140371.tif 000013
【図８】
2009140371.tif 000014
【図９】
2009140371.tif 000015
【図１０】
2009140371.tif 000016