(57)【要約】【課題】ゲーム装置においてシャドウボリュームを使って影を描画するときに、シャドウボリュームの設定にかかる処理負担を軽減すると同時に、影を落とすオブジェクトの姿勢に応じたよりリアルな影を描画すること。【解決手段】ＤＶＤ−ＲＯＭ３００には、影を落とすオブジェクトのいくつかの姿勢にそれぞれ対応する複数のシャドウボリュームデータが予め記録されており、ＣＰＵ１０は、必要に応じてこれらシャドウボリュームデータに基づいた補間を行うことによってオブジェクトの姿勢に応じたシャドウボリュームを設定する。ＧＰＵ１１は、この設定されたシャドウボリュームに基づいて、ステンシルバッファ１６を用いた影領域の判定を行い、この判定結果に基づいてカラーバッファ１４に格納されている各ピクセルの輝度情報を更新する。【選択図】　　　　図２
2004013621.tif 000002
【特許請求の範囲】
【請求項１】
３次元のゲーム空間におけるオブジェクトの影をシャドウボリュームを利用して表示するゲームシステムであって、
前記オブジェクトの姿勢を変化させる姿勢変化手段と、
前記オブジェクトの第１姿勢に対応する第１シャドウボリュームデータを予め記憶する第１シャドウボリュームデータ記憶手段と、
前記オブジェクトの前記第１姿勢とは異なる第２姿勢に対応する第２シャドウボリュームデータを予め記憶する第２シャドウボリュームデータ記憶手段と、
前記姿勢変化手段によって変化する前記オブジェクトのある時点の姿勢が前記第１姿勢と等しいときに前記シャドウボリュームを前記第１シャドウボリュームデータに基づいて設定し、前記オブジェクトの当該ある時点の姿勢が前記第２姿勢と等しいときに前記シャドウボリュームを前記第２シャドウボリュームデータに基づいて設定するシャドウボリューム設定手段と、
前記シャドウボリューム設定手段によって設定されたシャドウボリュームに基づいて前記ある時点における前記オブジェクトの影を描画する影描画手段とを備えるゲームシステム。
【請求項２】
前記シャドウボリューム設定手段は、前記ある時点における前記オブジェクトの姿勢が前記第１姿勢および前記第２姿勢のいずれとも異なるときに、前記第１シャドウボリュームデータおよび前記第２シャドウボリュームデータに基づく補間によって前記シャドウボリュームを設定することを特徴とする、請求項１記載のゲームシステム。
【請求項３】
前記補間が線形補間であることを特徴とする、請求項２記載のゲームシステム。
【請求項４】
前記第２シャドウボリュームデータが、前記第１シャドウボリュームデータを基準としたオフセットデータであることを特徴とする、請求項１または２に記載のゲームシステム。
【請求項５】
前記姿勢変化手段は、オブジェクト座標系の所定軸周りに前記オブジェクトを回転させ、
前記第２姿勢は、前記オブジェクトを前記第１姿勢から前記所定軸周りにある角度だけ回転させたときの姿勢であり、
前記シャドウボリューム設定手段は、前記所定軸周りの前記オブジェクトの回転角度に基づいて前記シャドウボリュームを設定することを特徴とする、請求項１記載のゲームシステム。
【請求項６】
前記シャドウボリューム設定手段は、前記ある時点における前記オブジェクトの姿勢が前記第１姿勢と所定の位置関係の第３姿勢であるときに、当該第３姿勢に対応するシャドウボリュームデータとして前記第１シャドウボリュームデータをそのまま、あるいは適宜変更して利用して前記シャドウボリュームを設定することを特徴とする、請求項５記載のゲームシステム。
【請求項７】
前記オブジェクトの形状が前記所定軸を含むある平面に対して対称であることを特徴とする、請求項６記載のゲームシステム。
【請求項８】
前記第３姿勢は、前記オブジェクトを前記第１姿勢から前記所定軸周りに１８０°回転させたときの姿勢であることを特徴とする、請求項６記載のゲームシステム。
【請求項９】
３次元のゲーム空間におけるオブジェクトの影をシャドウボリュームを利用して表示するためにゲーム装置のコンピュータに実行されるゲームプログラムであって、当該コンピュータに、
前記オブジェクトの姿勢を変化させる姿勢変化ステップと、
前記オブジェクトの第１姿勢に対応する予め記憶された第１シャドウボリュームデータを読み出す第１シャドウボリュームデータ読み出しステップと、
前記オブジェクトの前記第１姿勢とは異なる第２姿勢に対応する予め記憶された第２シャドウボリュームデータを読み出す第２シャドウボリュームデータ読み出しステップと、
前記姿勢変化ステップで変化する前記オブジェクトのある時点の姿勢が前記第１姿勢と等しいときに前記シャドウボリュームを前記第１シャドウボリュームデータに基づいて設定し、前記オブジェクトの当該ある時点の姿勢が前記第２姿勢と等しいときに前記シャドウボリュームを前記第２シャドウボリュームデータに基づいて設定するシャドウボリューム設定ステップと、
前記シャドウボリューム設定ステップで設定されたシャドウボリュームに基づいて前記ある時点における前記オブジェクトの影を描画する影描画ステップとを実行させるゲームプログラム。
【請求項１０】
前記シャドウボリューム設定ステップは、前記ある時点における前記オブジェクトの姿勢が前記第１姿勢および前記第２姿勢のいずれとも異なるときに、前記第１シャドウボリュームデータおよび前記第２シャドウボリュームデータに基づく補間によって前記シャドウボリュームを設定することを特徴とする、請求項９記載のゲームプログラム。
【請求項１１】
前記補間が線形補間であることを特徴とする、請求項１０記載のゲームプログラム。
【請求項１２】
前記第２シャドウボリュームデータが、前記第１シャドウボリュームデータを基準としたオフセットデータであることを特徴とする、請求項９または１０に記載のゲームプログラム。
【請求項１３】
前記姿勢変化ステップは、オブジェクト座標系の所定軸周りに前記オブジェクトを回転させ、
前記第２姿勢は、前記オブジェクトを前記第１姿勢から前記所定軸周りにある角度だけ回転させたときの姿勢であり、
前記シャドウボリューム設定ステップは、前記所定軸周りの前記オブジェクトの回転角度に基づいて前記シャドウボリュームを設定することを特徴とする、請求項９記載のゲームプログラム。
【請求項１４】
前記シャドウボリューム設定ステップは、前記ある時点における前記オブジェクトの姿勢が前記第１姿勢と所定の位置関係の第３姿勢であるときに、当該第３姿勢に対応するシャドウボリュームデータとして前記第１シャドウボリュームデータをそのまま、あるいは適宜変更して利用して前記シャドウボリュームを設定することを特徴とする、請求項９記載のゲームプログラム。
【請求項１５】
前記オブジェクトの形状が前記所定軸を含むある平面に対して対称であることを特徴とする、請求項１４記載のゲームプログラム。
【請求項１６】
前記第３姿勢は、前記オブジェクトを前記第１姿勢から前記所定軸周りに１８０°回転させた姿勢であることを特徴とする、請求項１４記載のゲームプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲームシステム及びゲームプログラムに関し、より特定的には、３次元のゲーム空間におけるオブジェクトの影をシャドウボリュームを利用して表示するゲームシステム及びゲームプログラムに関する。
【０００２】
【従来の技術】
従来より、シャドウボリュームを使用して３次元仮想空間の影を描画する方法が知られている。従来のシャドウボリュームを使った影の描画方法には、大きく分けて以下に示す２種類の方法がある。
【０００３】
第１の方法は、影を落とすオブジェクトの全てのポリゴンについて、その頂点を光線方向に延ばしてシャドウボリュームを設定する方法である。第２の方法は、影を落とすオブジェクトの輪郭を抽出して、その輪郭を光線方向に延ばしてシャドウボリュームを設定する方法である。
【０００４】
しかしながら上記第１の方法では、影を落とすオブジェクトを構成する全てのポリゴンの全てのエッジに対して新たなポリゴンが生成されるため、シャドウボリュームを構成するポリゴンの数が多くなる。その結果、大きなメモリ空間が必要となり、また描画処理の負担も大きくなる。一方、上記第２の方法では、シャドウボリュームを構成するポリゴンの数は第１の方法に比べて少なくなるものの、影を落とすオブジェクトの輪郭を抽出するための処理が必要となり、その処理負担が大きくなる。
【０００５】
このように上記の方法では、影の描画処理の負担が大きく、大きな処理時間が必要となるので、リアルタイムで仮想空間を描画する必要のあるゲームシステムで採用することは実質上不可能であった。
【０００６】
そこで従来のゲームシステムでは、影の描画処理にかかる処理負担を軽減するために、例えば予め用意しておいた影用のポリゴンを用意しておき、これを適当な位置に配置して描画することにより影を描画している。しかしながらこのような方法では、影の落ちるオブジェクトに凹凸がある場合、正確な影を描画することができないという問題があった。
【０００７】
ところで、前述のようにシャドウボリュームを使用すれば、影の落ちるオブジェクトの凹凸に応じた正確な影を描画することができる。そこで、シャドウボリュームデータを予め固定的に設定しておき、ゲーム装置で適宜このデータを読み出して使用するようにすれば、リアルタイムにシャドウボリュームデータを計算する処理が不要となるので、影の描画処理の負担が少ない。
【０００８】
【発明が解決しようとする課題】
しかしながら、上述の解決方法では、シャドウボリュームの形状が予め決められているため、影を落とすオブジェクトの姿勢が回転等により変化した場合に不自然な影が描画されてしまうという問題がある。例えば図１４に示すように、三角柱のオブジェクト（影を落とすオブジェクト）が、ある軸（ここではＺ軸）を中心に回転した場合、回転に応じて影が変形するのが自然であるのに、上述の解決方法では、ゲーム空間の影は全く変化せず、不自然な影となってしまう。
【０００９】
それゆえに本発明の目的は、ゲームシステムにおいてシャドウボリュームを用いて影を描画するときに、シャドウボリュームの設定にかかる処理負担を軽減すると同時に、影を落とすオブジェクトの姿勢に応じたよりリアルな影を描画することのできるゲームシステム及びゲームプログラムを提供することである。
【００１０】
【課題を解決するための手段および発明の効果】
この発明は、上記の目的を達成するために、次のように構成される。
すなわち、請求項１に係る発明によれば、ゲームシステムは、３次元のゲーム空間におけるオブジェクトの影をシャドウボリュームを利用して表示するものであって、姿勢変化手段（実施例との対応関係を示せば、例えばステップＳ２およびＳ４を実行するＣＰＵ１０；以下、単にステップ番号のみを示す）と、第１シャドウボリュームデータ記憶手段（ＤＶＤ−ＲＯＭ３００またはメインメモリ１７等の本体ＲＡＭ）と、第２シャドウボリュームデータ記憶手段（ＤＶＤ−ＲＯＭ３００またはメインメモリ１７等の本体ＲＡＭ）と、シャドウボリューム設定手段（Ｓ１２）と、影描画手段（Ｓ１３）とを備える。姿勢変化手段は、例えば、プレイヤの操作入力，他のオブジェクトとの接触，地面の傾斜等の影響を計算することによって、オブジェクトの姿勢を変化させる。第１シャドウボリュームデータ記憶手段は、オブジェクトの第１姿勢（例えばオブジェクト座標系のＺ軸周りの回転角度が０°である状態。図５における０°の状態。）に対応する第１シャドウボリュームデータ（図５における０°のときのシャドウボリュームデータ）を予め記憶する。第２シャドウボリュームデータ記憶手段は、オブジェクトの第１姿勢とは異なる第２姿勢（例えばオブジェクト座標系のＺ軸周りの回転角度が３０°である状態。図５における例えば３０°の状態。）に対応する第２シャドウボリュームデータ（図５における例えば３０°のときのシャドウボリュームデータ）を予め記憶する。シャドウボリューム設定手段は、姿勢変化手段によって変化するオブジェクトのある時点の姿勢が第１姿勢と等しいときにシャドウボリュームを第１シャドウボリュームデータに基づいて設定し、オブジェクトのこのある時点の姿勢が第２姿勢と等しいときにシャドウボリュームを第２シャドウボリュームデータに基づいて設定する。影描画手段は、シャドウボリューム設定手段によって設定されたシャドウボリュームに基づいてある時点におけるオブジェクトの影を描画する。これにより、予め記憶されたシャドウボリュームデータを利用するので、シャドウボリュームの設定にかかる処理負担を軽減すると同時に、異なる２つの姿勢に対するシャドウボリュームデータを予め記憶するので、各姿勢に応じた影を表示することが可能となり、影を落とすオブジェクトの姿勢および影が落ちるオブジェクトの凹凸に応じたよりリアルな影を描画することができる。なお、括弧内の参照符号等は、本発明の理解を助けるために示したものであって、本発明を何ら限定するものではない。
【００１１】
また、請求項２に係る発明によれば、シャドウボリューム設定手段は、ある時点におけるオブジェクトの姿勢が第１姿勢および第２姿勢のいずれとも異なるときに、第１シャドウボリュームデータおよび第２シャドウボリュームデータに基づく補間によってシャドウボリュームを設定する（Ｓ１２３）ことを特徴とする。これにより、予め用意しておくべきシャドウボリュームデータの個数を低減しつつ、多数の姿勢に応じた影を表示することが可能となる。
【００１２】
また、請求項３に係る発明によれば、補間が線形補間であることを特徴とする。これにより、補間をより簡単に行うことができる。
【００１３】
また、請求項４に係る発明によれば、第２シャドウボリュームデータ（図８における例えば３０°のときのシャドウボリュームデータ）が、第１シャドウボリュームデータ（図８における０°のときのシャドウボリュームデータ）を基準としたオフセットデータであることを特徴とする。これにより、第２シャドウボリュームデータのデータ量を少なくすることができる。また、請求項２に従属する請求項４に係る発明によれば、オフセットデータを利用して補間計算をすることができるので、補間計算処理の負担が少ない。
【００１４】
また、請求項５に係る発明によれば、姿勢変化手段は、オブジェクト座標系の所定軸（図５におけるＺ軸；オブジェクト座標系のＺ軸であり、言い換えるとオブジェクトの進行方向の軸）周りにオブジェクトを回転させ、第２姿勢は、オブジェクトを第１姿勢から所定軸周りにある角度だけ回転させたときの姿勢であり、シャドウボリューム設定手段は、所定軸周りのオブジェクトの回転角度に基づいてシャドウボリュームを設定することを特徴とする。これにより、オブジェクトが回転したときに、その回転に応じて影の表示を変化させることができる。
【００１５】
また、請求項６に係る発明によれば、シャドウボリューム設定手段は、ある時点におけるオブジェクトの姿勢が第１姿勢（図１３における例えば４５°の状態）と所定の位置関係の第３姿勢（図１３における例えば１３５°の状態）であるときに、この第３姿勢に対応するシャドウボリュームデータとして第１シャドウボリュームデータをそのまま、あるいは適宜変更して利用してシャドウボリュームを設定することを特徴とする。これにより、ある１つのシャドウボリュームデータを、複数の異なる姿勢に対応するシャドウボリュームを設定する際に共通に利用することができるので、予め用意しておくべきシャドウボリュームデータの個数を低減することができる。
【００１６】
また、請求項７に係る発明によれば、オブジェクトの形状が所定軸を含むある平面（例えば、オブジェクト座標系のＸ軸をオブジェクトの右方向，Ｙ軸を上方向，Ｚ軸を進行方向に取った場合の、ＹＺ平面）に対して対称であることを特徴とする。これにより、第１姿勢と第３姿勢についてシャドウボリュームデータを共通にしても、表示される影に違和感がない。
【００１７】
また、請求項８に係る発明によれば、第３姿勢（図１３における例えば−１３５°の状態）は、ワールド座標系においてオブジェクトを第１姿勢（図１３における例えば４５°の状態）から所定軸周りに１８０°回転させたときの姿勢であることを特徴とする。
【００１８】
また、請求項９に係る発明によれば、ゲームプログラムは、３次元のゲーム空間におけるオブジェクトの影をシャドウボリュームを利用して表示するためにゲーム装置のコンピュータに実行されるものであって、このコンピュータに、姿勢変化ステップ（Ｓ２およびＳ４）と、第１シャドウボリュームデータ読み出しステップ（例えばＳ１２２）と、第２シャドウボリュームデータ読み出しステップ（例えばＳ１２３）と、シャドウボリューム設定ステップ（Ｓ１２４）と、影描画ステップ（Ｓ１３）とを実行させる。姿勢変化ステップは、オブジェクトの姿勢を変化させる。第１シャドウボリュームデータ読み出しステップは、オブジェクトの第１姿勢（例えばオブジェクト座標系のＺ軸周りの回転角度が０°である状態）に対応する予め記憶された第１シャドウボリュームデータを読み出す。第２シャドウボリュームデータ読み出しステップは、オブジェクトの第１姿勢とは異なる第２姿勢（例えばオブジェクト座標系のＺ軸周りの回転角度が３０°である状態）に対応する予め記憶された第２シャドウボリュームデータを読み出す。シャドウボリューム設定ステップは、姿勢変化ステップで変化するオブジェクトのある時点の姿勢が第１姿勢と等しいときにシャドウボリュームを第１シャドウボリュームデータに基づいて設定し、オブジェクトのこのある時点の姿勢が第２姿勢と等しいときにシャドウボリュームを第２シャドウボリュームデータに基づいて設定する。影描画ステップは、シャドウボリューム設定ステップで設定されたシャドウボリュームに基づいてある時点におけるオブジェクトの影を描画する。これにより、予め記憶されたシャドウボリュームデータを利用するので、シャドウボリュームの設定にかかる処理負担を軽減すると同時に、異なる２つの姿勢に対するシャドウボリュームデータを予め記憶するので、各姿勢に応じた影を表示することが可能となり、影を落とすオブジェクトの姿勢および影が落ちるオブジェクトの凹凸に応じたよりリアルな影を描画することができる。
【００１９】
また、請求項１０に係る発明によれば、シャドウボリューム設定ステップは、ある時点におけるオブジェクトの姿勢が第１姿勢および第２姿勢のいずれとも異なるときに、第１シャドウボリュームデータおよび第２シャドウボリュームデータに基づく補間によってシャドウボリュームを設定する（Ｓ１２３）ことを特徴とする。
【００２０】
また、請求項１１に係る発明によれば、補間が線形補間であることを特徴とする。
【００２１】
また、請求項１２に係る発明によれば、第２シャドウボリュームデータが、第１シャドウボリュームデータを基準としたオフセットデータであることを特徴とする。
【００２２】
また、請求項１３に係る発明によれば、姿勢変化ステップは、オブジェクトを、オブジェクト座標系の所定軸周りに回転させ、第２姿勢は、オブジェクトを第１姿勢から所定軸周りにある角度だけ回転させたときの姿勢であり、シャドウボリューム設定ステップは、所定軸周りのオブジェクトの回転角度に基づいてシャドウボリュームを設定することを特徴とする。
【００２３】
また、請求項１４に係る発明によれば、シャドウボリューム設定ステップは、ある時点におけるオブジェクトの姿勢が第１姿勢と所定の位置関係の第３姿勢であるときに、この第３姿勢に対応するシャドウボリュームデータとして第１シャドウボリュームデータをそのまま、あるいは適宜変更して利用してシャドウボリュームを設定することを特徴とする。
【００２４】
また、請求項１５に係る発明によれば、オブジェクトの形状が所定軸を含むある平面に対して対称であることを特徴とする。
【００２５】
また、請求項１６に係る発明によれば、第３姿勢は、ワールド座標系においてオブジェクトを第１姿勢から所定軸周りに１８０°回転させたときの姿勢であることを特徴とする。
【００２６】
【発明の実施の形態】
図１は、本発明の一実施形態に係るゲームシステムの構成を示す外観図であり、図２はそのブロック図である。図１、図２に示すように、ゲームシステムは、ゲーム機本体１００、ＤＶＤ−ＲＯＭ３００、コントローラ２００によって構成され、スピーカ６００およびＴＶモニタ５００に接続される。また、必要に応じて外部メモリカード４００が追加される。ＤＶＤ−ＲＯＭ３００および外部メモリカード４００は、ゲーム機本体１００に着脱自在に装着される。コントローラ２００は、通信ケーブルを介して、ゲーム機本体１００に設けられた複数（図１では４つ）のコントローラポート用コネクタのいずれかに接続される。ＴＶモニタ５００およびスピーカ６００は、ＡＶケーブル等によって接続される。なお、ゲーム機本体１００とコントローラ２００との通信は無線通信であってもよい。以下、図２を参照しながら、ゲームシステムの各部についてより詳細に説明する。
【００２７】
ＤＶＤ−ＲＯＭ３００は、ゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、ＤＶＤ−ＲＯＭ３００はゲーム機本体１００に装着される。なお、ゲームプログラム等を記憶する手段として、ＤＶＤ−ＲＯＭ３００の代わりに例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等の外部記憶媒体を用いてもよい。
【００２８】
外部メモリカード４００は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記録する。
【００２９】
ゲーム機本体１００は、ＤＶＤ−ＲＯＭ３００に記録されているゲームプログラムを読み出し、ゲーム処理を行う。
【００３０】
コントローラ２００は、プレイヤがゲーム操作に関する入力を行うための入力装置であり、複数の操作スイッチを有する。コントローラ２００は、プレイヤによる操作スイッチの押圧等に応じて操作データをゲーム機本体１００に出力する。
【００３１】
ＴＶモニタ５００は、ゲーム機本体１００から出力された画像データを画面に表示する。なお、スピーカ６００は、典型的にはＴＶモニタ５００に内蔵されており、ゲーム機本体１００から出力されたゲーム中の音声を出力する。
【００３２】
次に、ゲーム機本体１００の構成について説明する。図２において、ゲーム機本体１００には、ＣＰＵ１０およびそれに接続されるメモリコントローラ２０が設けられる。さらにゲーム機本体１００において、メモリコントローラ２０は、グラフィックスプロセッシングユニット（ＧＰＵ）１１と、メインメモリ１７と、ＤＳＰ１８と、各種インターフェース（Ｉ／Ｆ）２１〜２４，２６とに接続される。メモリコントローラ２０は、これら各構成要素間のデータ転送を制御する。
【００３３】
ゲーム開始の際、まず、ＤＶＤドライブ２５は、ゲーム機本体１００に装着されたＤＶＤ−ＲＯＭ３００を駆動する。ＤＶＤ−ＲＯＭ３００に記憶されているゲームプログラムは、ＤＶＤディスクＩ／Ｆ２６およびメモリコントローラ２０を介して、メインメモリ１７に読み込まれる。メインメモリ１７上のプログラムをＣＰＵ１０が実行することによってゲームが開始される。ゲーム開始後、プレイヤは、操作スイッチを用いてコントローラ２００に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ２００は、操作データをゲーム機本体１００に出力する。コントローラ２００から出力される操作データは、コントローラＩ／Ｆ２１およびメモリコントローラ２０を介してＣＰＵ１０に入力される。ＣＰＵ１０は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、ＧＰＵ１１やＤＳＰ１８が用いられる。また、サブメモリ１９は、ＤＳＰ１８が所定の処理を行う際に用いられる。
【００３４】
ＧＰＵ１１は、ジオメトリユニット１２およびレンダリングユニット１３を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ１４やＺバッファ１５やステンシルバッファ１６として利用される。ジオメトリユニット１２は、仮想三次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル（例えばポリゴンで構成されるオブジェクト）の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット１３は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについて各ピクセルごとのカラーデータ（ＲＧＢデータ）をカラーバッファ１４に書き込むことによって、ゲーム画像を生成するためのものである。また、カラーバッファ１４は、レンダリングユニット１３によって生成されたゲーム画像データ（ＲＧＢデータ）を保持するために確保されたメモリ領域である。Ｚバッファ１５は、３次元の視点座標から２次元のスクリーン座標に変換する際に失われる視点からの奥行情報を保持するために確保されたメモリ領域である。ステンシルバッファ１６は、後述するシャドウボリュームを用いた影領域の判定を行うために確保されたメモリ領域である。ＧＰＵ１１は、これらバッファを用いてＴＶモニタ５００に表示すべき画像データを生成し、メモリコントローラ２０およびビデオＩ／Ｆ２２を介して画像データをＴＶモニタ５００に適宜出力する。なお、ゲームプログラム実行時にＣＰＵ１０において生成される音声データは、メモリコントローラ２０からオーディオＩ／Ｆ２４を介してスピーカ６００に出力される。なお本実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ１７の一部を画像処理用のメモリとして利用する方式（ＵＭＡ：Ｕｎｉｆｉｅｄ　Ｍｅｍｏｒｙ　Ａｒｃｈｉｔｅｃｔｕｒｅ）を使うようにしてもよい。
【００３５】
以下、本実施形態の動作について説明する。
本実施形態では、影を落とすオブジェクトに対して予め複数のシャドウボリュームがシャドウボリュームデータとして用意されている。シャドウボリュームとは、あるオブジェクトが影を落とす空間、言い換えると、あるオブジェクトによって光源からの光が遮られるような空間を規定するものである。このシャドウボリュームを用いることにより、複雑な地形に落ちる影を正確に表示することができる。以下、このシャドウボリュームを用いた影描画処理について図面を参照して簡単に説明する。
【００３６】
図３に示すように、地形オブジェクトにおいて、影を落とすオブジェクトのシャドウボリュームと交わる領域が影ができる領域（以下、影領域と称す）となる。なお図３では平行光の場合を示しているが、点光源である場合も同様である。影領域は、ステンシルバッファを用いることにより簡単に判定することができる。ステンシルバッファを用いて影領域を判定する一般的な手法としては、図４に示すように、まず（ａ）Ｚバッファを参照しながらシャドウボリュームの表面を描画する（ただし、このときカラーバッファの各ピクセルの色情報を更新する代わりに、ステンシルバッファの各ピクセルの値をインクリメントする）。それから（ｂ）Ｚバッファを参照しながらシャドウボリュームの裏面を描画する（ただし、このときカラーバッファの各ピクセルの色情報を更新する代わりに、ステンシルバッファの各ピクセルの値をデクリメントする）。その結果、ステンシルバッファの各ピクセルの値は、初期値を“０”とした場合、影領域の部分は“１”になり、それ以外の部分は“０”となる。このステンシルバッファの各ピクセルの値に基づいてカラーバッファの色情報が変更される。例えば、地形オブジェクトのテクスチャに基づいてカラーバッファの各ピクセルに格納されている輝度情報のうち、影領域に対応するものについてはその値が低減される。その結果、リアルな影が表示されることとなる。
【００３７】
本実施形態では、影を落とすオブジェクトの姿勢に応じた複数のシャドウボリュームデータが予め用意されており、これらシャドウボリュームデータに基づいてシャドウボリュームが設定される。この設定されたシャドウボリュームを使用してゲーム空間における影が描画される。
【００３８】
本実施形態では、一例として、影を落とすオブジェクト（ここでは三角柱）がゲーム空間における所定の軸周り（ここではオブジェクト座標系におけるＺ軸周りとする。以下、「オブジェクト座標系におけるＺ軸」のことを単に「Ｚ軸」と呼ぶことがある。）に基準位置から＋９０°〜−９０°の範囲で回転する場合について説明する。実際のゲームでいえば、例えばカートレースゲームにおいてカートがその進行方向ベクトル周りに回転、つまり横転するような場合である（なお、本実施例では、進行方向を向いて右回りを回転のプラス方向としている）。オブジェクトの姿勢は、Ｚ軸周りの回転角度により表される。
【００３９】
本実施形態では、影を落とすオブジェクトに対して、オブジェクトの基本姿勢を０°とすると、オブジェクトのＺ軸周りの回転角度がそれぞれ０°，３０°，６０°，９０°，−３０°，−６０°，−９０°である場合に対応する７つのシャドウボリュームデータが予め用意されている。図５に、オブジェクトのＺ軸周りの回転角度が０°，３０°，６０°，９０°である場合に対応するシャドウボリュームおよびゲーム空間における影をそれぞれ示す。また図６に、オブジェクトのＺ軸周りの回転角度が０°，−３０°，−６０°，−９０°である場合に対応するシャドウボリュームおよびゲーム空間における影をそれぞれ示す。ただし、図５および図６に示した影は、地形オブジェクト（影の落ちるオブジェクト）が平面である場合のものである。
前述の図１４に示す方法では、オブジェクトが回転してもゲーム空間の影が変化しないものであったが、本発明によれば、図５および図６に示すように、オブジェクトの回転角度に応じてシャドウボリュームが異なるので、オブジェクトの回転角度に応じたリアルな影が生成される。
【００４０】
予め用意しておくシャドウボリュームデータとしては、オブジェクトの形状に基づいて忠実に作成されたものであっても構わないし、オブジェクトの形状の大まかな凹凸に基づいて作成されたものであっても構わない。
【００４１】
シャドウボリュームデータは、例えばＤＶＤ−ＲＯＭ３００に予め格納されており（回転角度が０°，３０°，６０°，９０°，−３０°，−６０°，−９０°に対応するシャドウボリュームデータが全て格納されている）、ＤＶＤドライブ２５によって適宜ゲーム装置のメモリに読み出されてシャドウボリューム設定処理に利用される。なお、本実施例では、７つの回転角度（０°，３０°，６０°，９０°，−３０°，−６０°，−９０°）についてのシャドウボリュームデータをＤＶＤ−ＲＯＭ３００に予め格納するものとしたが、少なくとも２つの回転角度についてのシャドウボリュームデータが格納されていればよい。図７に、あるオブジェクト（ここではオブジェクトＡ）に対して予め用意されているシャドウボリュームデータを示す。図７において、オブジェクトＡに対するシャドウボリュームデータとして、基本シャドウボリュームデータと変形オフセットデータが予め用意されている。基本シャドウボリュームデータは、オブジェクトＡのＺ軸周りの回転角度が０°である場合のシャドウボリュームの形状を各頂点座標（オブジェクト座標系における座標）により規定するものである。変形オフセットデータは、オブジェクトＡのＺ軸周りの回転角度が３０°，６０°，９０°，−３０°，−６０°，−９０°である場合のシャドウボリュームの形状を基本シャドウボリュームデータを基準としたオフセットデータによりそれぞれ規定するものである。例えば、基本シャドウボリュームデータの頂点Ａの座標が（Ｘａ，Ｙａ，Ｚａ）であって、回転角度が３０°であるときの頂点Ａのオフセット値が各座標について（ΔＸａ３０，ΔＹａ３０，ΔＺａ３０）である場合、回転角度が３０°であるときの頂点Ａの座標は（Ｘａ＋ΔＸａ３０，Ｙａ＋ΔＹａ３０，Ｚａ＋ΔＺａ３０）となる。
【００４２】
図８に、変形オフセットデータと実際のシャドウボリュームの形状との関係を具体的に示す。基本シャドウボリュームの頂点Ｂの座標は（０，１０，２）である。回転角度が３０°であるときのシャドウボリュームの頂点Ｂの座標は、基本シャドウボリュームの頂点Ｂの座標（０，１０，２）の各成分に、回転角度が３０°であるときの頂点Ｂのオフセット値ΔＢ３０＝（１，０，０）の各成分をそれぞれ加算したもの、つまり（１，１０，２）となる。また、回転角度が６０°であるときのシャドウボリュームの頂点Ｂの座標は、基本シャドウボリュームの頂点Ｂの座標（０，１０，２）の各成分に、回転角度が６０°であるときの頂点Ｂのオフセット値ΔＢ６０＝（３，０，０）の各成分をそれぞれ加算したもの、つまり（３，１０，２）となる。また、回転角度が９０°であるときのシャドウボリュームの頂点Ｂの座標は、基本シャドウボリュームの頂点Ｂの座標（０，１０，２）の各成分に、回転角度が９０°であるときの頂点Ｂのオフセット値ΔＢ９０＝（４，０，０）の各成分をそれぞれ加算したもの、つまり（４，１０，２）となる。なお、図示は省略するが、回転角度が−３０°，−６０°，−９０°であるときのシャドウボリュームの頂点Ｂの座標についても同様に決定される。
【００４３】
なお、図８ではシャドウボリュームの形状を頂点Ａ〜頂点Ｊの１０個の頂点により規定しているが、それら頂点の位置や個数は自由に決定することができる。また、図８に示す例では、三角柱が回転するときの影の変化の仕方が単純であるため、各頂点の移動方向がいずれもＸ軸方向のみとなっているが、本発明はこれに限らず、各頂点がオブジェクトの回転に応じて任意の方向に移動するように設定しても構わない。
【００４４】
なお、本実施形態では、上述のように、オブジェクトの回転角度が３０°，６０°，９０°，−３０°，−６０°，−９０°に対応するシャドウボリュームデータとして、基本シャドウボリュームデータを基準としたオフセットデータを用意するとしたが、本発明はこれに限らず、オブジェクトの回転角度が３０°，６０°，９０°，−３０°，−６０°，−９０°に対応するシャドウボリュームデータとして、基本シャドウボリュームデータと同様に、それぞれ実際の頂点座標によりシャドウボリュームの形状を規定するものを用意しても構わない。
【００４５】
以上のように、影を落とすオブジェクトの回転角度が０°，３０°，６０°，９０°，−３０°，−６０°，−９０°である場合には、図７に示すようなシャドウボリュームデータからシャドウボリュームを容易に設定することができる。次に、影を落とすオブジェクトのＺ軸周りの回転角度が上記以外の角度である場合のシャドウボリュームの設定方法について説明する。
【００４６】
本実施形態では、影を落とすオブジェクトの回転角度が０°，３０°，６０°，９０°，−３０°，−６０°，−９０°以外の角度である場合（例えば１５°や−４０°など）、予め用意されているシャドウボリュームデータに基づく線形補間によってシャドウボリュームを動的に設定する。以下、この線形補間についてより具体的に説明する。
【００４７】
影を落とすオブジェクトの回転角度がα°のときシャドウボリュームの頂点Ａの座標は、影を落とすオブジェクトの回転角度がα°であるときのオフセット値ΔＡαを算出することにより求められる。ΔＡαは、以下の式により算出される。なお、頂点Ａ以外の頂点（頂点Ｂ，頂点Ｃ，・・・）についても同様である。
【００４８】
（１）０＜α＜３０のとき
ΔＡα＝ΔＡ３０×α／３０
（２）３０＜α＜６０のとき
ΔＡα＝｛ΔＡ３０×（６０−α）＋ΔＡ６０×（α−３０）｝／３０
（３）６０＜α＜９０のとき
ΔＡα＝｛ΔＡ６０×（９０−α）＋ΔＡ９０×（α−６０）｝／３０
（４）−３０＜α＜０のとき
ΔＡα＝−ΔＡ−３０×α／３０
（５）−６０＜α＜−３０のとき
ΔＡα＝−｛ΔＡ−３０×（−６０−α）＋ΔＡ−６０×（α＋３０）｝／３０
（６）−９０＜α＜−６０のとき
ΔＡα＝−｛ΔＡ−６０×（−９０−α）＋ΔＡ−９０×（α＋６０）｝／３０
【００４９】
このように、影を落とすオブジェクトの回転角度に対応するシャドウボリュームデータが予め用意されていない場合には、予め用意されているシャドウボリュームデータのうちの２つのシャドウボリュームデータに基づく線形補間によって、この回転角度に対応するシャドウボリュームを設定する。なお、補間には線形補間に限らず任意の関数式を用いることができる。ただし線形補間を用いればシャドウボリューム設定のための演算を単純化できる利点がある。
【００５０】
以上のようにして影を落とすオブジェクトの回転角度に対応するシャドウボリュームが設定されると、この設定されたシャドウボリュームに基づいて影が描画される。その結果、影を落とすオブジェクトの姿勢に応じたリアルな影が表示されることになる。
【００５１】
次に、本実施形態におけるＣＰＵ１０またはＧＰＵ１１の動作について、図９〜図１２のフローチャートを参照して説明する。
【００５２】
図９を参照してゲームメイン処理について説明する。まず、変数の初期化処理や初期状態の画面を表示する等の初期処理がおこなわれる（ステップＳ１）。次に、ゲームがスタートすると、プレイヤによる操作入力処理が受け付けられて（ステップＳ２）、プレイヤによる操作入力およびゲームにおける各種要素（オブジェクト同士の接触や地面から受ける力等）に基づいて、プレイヤオブジェクトの座標および姿勢が更新される（ステップＳ３）。ステップＳ３の後、ＤＶＤ−ＲＯＭ３００に記憶されるノンプレイヤオブジェクトの移動制御プログラムに基づいて、ノンプレイヤオブジェクトの移動制御処理が行われ（ステップＳ４）、ノンプレイヤオブジェクトの座標および姿勢が更新される（ステップＳ５）。ステップＳ５の後、その他のゲーム処理（戦闘処理やメニュー処理等）がおこなわれ（ステップＳ６）、その後、描画処理がおこなわれる（ステップＳ７）。なお、この描画処理については、図１０を参照して後述する。ステップＳ７の後、ステップＳ８において、ゲームオーバーになったか否かが判定されて、ゲームオーバーの場合は、ゲーム処理を終了し、ゲームオーバーでない場合は、ステップＳ１に戻って、ステップＳ１〜Ｓ８の処理を繰り返す。
【００５３】
次に図１０を参照して、図９のステップＳ７の描画処理について説明する。描画処理が開始すると、ＧＰＵ１１は、影の落ちるオブジェクト（地形オブジェクト）の奥行き情報とＺバッファ１５の値とを比較し、Ｚバッファ１５の値を適宜更新しながら、影の落ちるオブジェクトをカラーバッファ１４に描画する（ステップＳ１１）。影の落ちるオブジェクトの描画が終了すると、ＣＰＵ１０は、影を落とすオブジェクト（プレイヤオブジェクトおよびノンプレイヤオブジェクト）のシャドウボリュームを設定するためのシャドウボリューム設定処理を実行する（ステップＳ１２）。このシャドウボリューム設定処理の詳細は後述する。シャドウボリューム設定処理が終了すると、ＧＰＵ１１は、シャドウボリューム設定処理によって設定されたシャドウボリュームに基づいて影描画処理を実行する（ステップＳ１３）。この影描画処理の詳細は後述する。影描画処理が終了すると、ＧＰＵ１１は、影を落とすオブジェクトの奥行き情報とＺバッファ１５の値とを比較し、Ｚバッファ１５の値を適宜更新しながら、影を落とすオブジェクトをカラーバッファ１４に描画する（ステップＳ１４）。影を落とすオブジェクトの描画が終了すると描画処理を終了する。
【００５４】
次に、図１１を参照して、図１０のステップＳ１２のシャドウボリューム設定処理について説明する。シャドウボリューム設定処理が開始すると、ＣＰＵ１０は、影を落とすオブジェクトのＺ軸周りの回転角度αを計算する（ステップＳ１２１）。次に、基本シャドウボリュームデータを読み込む（ステップＳ１２２）。それから、ステップＳ１２１で計算した回転角度αに応じた変形オフセットを計算する（ステップＳ１２３）。具体的には、回転角度αに対応する変形オフセットデータが予め用意されている場合にはそのデータを読み出し、そうでない場合には、予め用意されている回転角度αの近隣の回転角度に対応する２つのシャドウボリュームデータに基づいて線形補間を行い、回転角度αに対応する変形オフセット（前述のΔＡαなど）を計算する。回転角度αに対応する変形オフセットの計算が完了すると、その変形オフセットと基本シャドウボリュームデータに基づいて（つまり、変形オフセットに基づいて基本シャドウボリュームを変形させることにより）シャドウボリュームを設定する（ステップＳ１２４）。シャドウボリュームの設定が完了すると、図１０に示す描画処理に戻る。
【００５５】
次に、図１２を参照して、図１０のステップＳ１３の影描画処理について説明する。影描画処理が開始すると、まずＧＰＵ１１は、影判定用バッファであるステンシルバッファ１６の各ピクセルの値を０にクリアする（ステップＳ１３１）。そして、Ｚバッファ１５を参照しながらシャドウボリュームの表面を描画する（ステップＳ１３２）。ここではカラーバッファ１４に色情報を書き込む代わりにステンシルバッファ１６の各ピクセルの値をインクリメントする。次に、Ｚバッファ１５を参照しながらシャドウボリュームの裏面を描画する（ステップＳ１３３）。ここではカラーバッファ１４に色情報を書き込む代わりにステンシルバッファ１６の各ピクセルの値をデクリメントする。こうして書き込まれたステンシルバッファ１６の各ピクセルの値に基づいて、ＧＰＵ１１はカラーバッファ１４の各ピクセルの輝度情報を変更する（ステップＳ１３４）。こうして影描画処理が完了すると、図１０に示す描画処理に戻る。
【００５６】
以上のように本実施形態では、影を落とすオブジェクトのいくつかの姿勢に対応する複数のシャドウボリュームデータを予め用意しておき、必要に応じてこれらシャドウボリュームデータに基づいた補間を行うことによってオブジェクトの姿勢に応じたシャドウボリュームを設定する。したがって、例えばゲーム処理において、影を落とすオブジェクトの姿勢が変化するたびにこのオブジェクトの輪郭またはこのオブジェクトを構成する複数のポリゴンのエッジに基づいてシャドウボリュームを設定する必要がなくなり、その結果、影を描画するための処理負担を軽減することができる。また、シャドウボリュームを使用して影を描画するため、影の落ちるオブジェクトの凹凸を反映したよりリアルな影を描画することができる。
【００５７】
なお本実施形態ではゲームプログラムはＤＶＤ−ＲＯＭ３００を介してゲーム機本体１００に供給されるとしたが、これに限らず、ＤＶＤ−ＲＯＭ３００以外の他のコンピュータ読み取り可能な記録媒体（例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等）に格納されてゲーム機本体１００に供給されても構わないし、予めゲーム機本体１００に組み込まれていても構わないし、通信回線を通じてゲーム機本体１００に供給されても構わない。
【００５８】
また本実施形態では描画処理等をＧＰＵ１１が行うとしたが、ＣＰＵ１０が行ってもよい。
【００５９】
また本実施形態では平行光によってできる影を描画する場合について説明したが、これに限らず、例えば点光源からの光によってできる影を描画する場合についても本発明を適用することができる。
【００６０】
また本実施形態では、影を落とすオブジェクトの姿勢はＺ軸周りに回転することによって変化するとしたが、影を落とすオブジェクトが複数軸での回転を行う場合にも本発明を適用することができる。その場合、例えばＺ軸周りの回転角度とＸ軸周りの回転角度との組み合わせごとにシャドウボリュームデータを予め用意しておき、それらに基づいてシャドウボリュームを設定する。これにより、影を落とすオブジェクトの複数軸周りの回転に応じた影の描画が可能となる。
【００６１】
また本実施形態では、影を落とすオブジェクトの姿勢がＺ軸周りに回転することによって変化するとしたが、オブジェクトの形状自体が変わる場合にも本発明を適用することができる。その場合、例えば複数の変形状態にそれぞれ対応する複数のシャドウボリュームデータを予め用意しておき、それらに基づいてシャドウボリュームを設定する。これにより、影を落とすオブジェクトの変形に応じた影の描画が可能となる。
【００６２】
なお、影を落とすオブジェクトの姿勢の対称性を利用することにより、ＤＶＤ−ＲＯＭ３００等に予め記憶しておくべきシャドウボリュームデータの個数を削減することができる。以下、この工夫について図１３を参照して説明する。
【００６３】
図１３は、カートレースゲームにおけるキャラクタオブジェクトがカートの進行方向を軸として回転した場合のオブジェクトの姿勢とシャドウボリュームの形状とをそれぞれ示す図である。ただしキャラクタオブジェクトの真上（進行方向に対して垂直上方）から平行光が照射されている場合のものである。図１３の例では、回転角度が０°と１８０°についてはシャドウボリュームの形状が同一である。また回転角度が４５°と１３５°についてもシャドウボリュームの形状が同一である。さらに回転角度が−４５°と１３５°についてもシャドウボリュームの形状が同一である。したがって、回転角度が１３５°，１８０°，−１３５°のシャドウボリュームデータについては、回転角度が４５°，０°，−４５°のものをそれぞれ共用することができる。より一般的には、回転軸の半周（ここでは−９０°〜９０°）に対応するシャドウボリュームデータさえ用意しておけば、回転軸の全周（つまり３６０°）に対応するシャドウボリュームを設定することができる。ただし、これは、影を落とすオブジェクトの形状が回転軸を含むある平面に対して対称である場合に限られる。
【００６４】
また、図１３において、回転角度が４５°のときのシャドウボリュームと回転角度が−１３５°のときのシャドウボリュームとを比較すると、これらシャドウボリュームの関係は、互いに図面上で左右反転させたものになっている。また回転角度が９０°のときのシャドウボリュームと回転角度が−９０°のときのシャドウボリュームについても同様である。さらに回転角度が１３５°のときのシャドウボリュームと回転角度が−４５°のときのシャドウボリュームについても同様である。したがって、回転角度が−１３５°，−９０°，−４５°のシャドウボリュームデータについては、回転角度が４５°，９０°，１３５°のものをそれぞれ共用することができる。つまり、回転角度が１８０°異なる２つの姿勢についてはシャドウボリュームを共有することができる。ただしこの場合、シャドウボリュームを設定するときに、シャドウボリュームの形状を反転させるための簡単な演算（例えばオフセット値の変換や頂点座標の変換など）が別途必要となる。
【００６５】
なお、上記の２つの工夫を組み合わせることにより、予め記憶しておくべきシャドウボリュームデータの個数をさらに減らすことができる。つまり、図１３において、回転角度が１８０°のときのシャドウボリュームについては回転角度が０°のときのシャドウボリュームデータを利用することができる。また、回転角度が１３５°，−１３５°，−４５°のときのシャドウボリュームについては回転角度が４５°のときのシャドウボリュームデータを利用することができる。さらに、回転角度が−９０°のときのシャドウボリュームについては回転角度が９０°のときのシャドウボリュームデータを利用することができる。つまり、回転軸の４分の１周（ここでは０°〜９０°）に対応するシャドウボリュームデータさえ用意しておけば、回転軸の全周（つまり３６０°）に対応するシャドウボリュームを設定することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るゲームシステムの外観を示す図である。
【図２】ゲームシステムの構成を示すブロック図である。
【図３】シャドウボリュームと影の関係を説明するための図である。
【図４】ステンシルバッファを用いた影描画手法について説明するための図である。
【図５】オブジェクトのＺ軸周りの回転角度が０°，３０°，６０°，９０°のときのシャドウボリュームの形状およびゲーム空間における影をそれぞれ示す図である。
【図６】オブジェクトのＺ軸周りの回転角度が０°，−３０°，−６０°，−９０°のときのシャドウボリュームの形状およびゲーム空間における影をそれぞれ示す図である。
【図７】シャドウボリュームデータの詳細を説明するための図である。
【図８】オフセット値とシャドウボリュームの形状との関係を具体的に示す図である。
【図９】ゲーム処理の流れを示すフローチャートである。
【図１０】描画処理の流れを示すフローチャートである。
【図１１】シャドウボリューム設定処理の流れを示すフローチャートである。
【図１２】影描画処理の流れを示すフローチャートである。
【図１３】シャドウボリュームデータの共有について説明するための図である。
【図１４】仮想例においてオブジェクトの移動に伴って表示される影を示す図である。
【符号の説明】
１０　ＣＰＵ
１１　ＧＰＵ
１２　ジオメトリユニット
１３　レンダリングユニット
１４　カラーバッファ
１５　Ｚバッファ
１６　ステンシルバッファ
１７　メインメモリ
１８　ＤＳＰ
１９　サブメモリ
２０　メモリコントローラ
２１　コントローラＩ／Ｆ
２２　ビデオＩ／Ｆ
２３　外部メモリＩ／Ｆ
２４　オーディオＩ／Ｆ
２５　ＤＶＤドライブ
２６　ＤＶＤディスクＩ／Ｆ
１００　ゲーム機本体
２００　コントローラ
３００　ＤＶＤ−ＲＯＭ
４００　外部メモリカード
５００　ＴＶモニタ
６００　スピーカ
【図１】
2004013621.tif 000003
【図２】
2004013621.tif 000004
【図３】
2004013621.tif 000005
【図４】
2004013621.tif 000006
【図５】
2004013621.tif 000007
【図６】
2004013621.tif 000008
【図７】
2004013621.tif 000009
【図８】
2004013621.tif 000010
【図９】
2004013621.tif 000011
【図１０】
2004013621.tif 000012
【図１１】
2004013621.tif 000013
【図１２】
2004013621.tif 000014
【図１３】
2004013621.tif 000015
【図１４】
2004013621.tif 000016