(57)【要約】  【構成】ゲームシステムはゲーム装置とコントローラを含む。たとえば、コントローラを振る操作が行われたか否かが、コントローラによる表示画面に対する指示位置および加速度の少なくとも一方に基づいて判定される。振り操作に応じて、仮想ゲーム空間では風オブジェクト９２が生成されて移動する。仮想ゲーム空間に配置されている風車オブジェクトは、風オブジェクト９２との当りが判定されたとき、当該風の影響を受け、その回転速度が変化される。  【効果】プレイヤの操作に応じて生成される風をオブジェクトで表現するようにしたので、簡単な処理でかつ少ないメモリ容量で仮想ゲーム空間に風を表現することができる。【選択図】図９
2007296228.tif 000002
【特許請求の範囲】
【請求項１】
プレイヤによって操作される操作装置を備え、仮想ゲーム空間内に配置される可動オブジェクトを表示装置に表示するゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記操作装置からの操作データに応じて前記仮想ゲーム空間に風オブジェクトを生成する風オブジェクト生成ステップ、
前記風オブジェクトを移動させる風オブジェクト移動ステップ、
前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定ステップ、および
前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御ステップを実行させる、ゲームプログラム。
【請求項２】
前記操作装置は、当該操作装置の動きを検出するための動き検出手段を備えていて、
前記ゲーム装置の前記プロセサに、前記操作装置の動きに基づいて前記操作装置の動作状態を検出する動作状態検出ステップをさらに実行させ、
前記風オブジェクト生成ステップは、前記動作状態が所定の状態であるとき、前記風オブジェクトを生成する、請求項１記載のゲームプログラム。
【請求項３】
前記動き検出手段は、前記操作装置の位置を示す撮像対象を撮像するための撮像手段を含んでいて、
前記ゲーム装置のプロセサに、
前記撮像手段で撮像された前記撮像対象の位置に基づいて、前記仮想ゲーム空間内における座標を算出する座標算出ステップ、および
単位時間における前記座標の変化量を算出する座標変化量算出ステップをさらに実行させ、
前記風オブジェクト生成ステップは、前記変化量が所定の条件を満たすとき、前記風オブジェクトを生成する、請求項２記載のゲームプログラム。
【請求項４】
前記ゲーム装置のプロセサに、前記変化量を一定間隔に分割する分割ステップをさらに実行させ、
前記風オブジェクト生成ステップは、前記分割ステップによる分割によって一定間隔を隔てた各位置に風オブジェクトを生成する、請求項３記載のゲームプログラム。
【請求項５】
前記動き検出手段は、加速度センサを含んでいて、
前記ゲーム装置のプロセサに、前記加速度センサで検出された加速度を取得する加速度取得ステップをさらに実行させ、
前記風オブジェクト生成ステップは、前記加速度が所定の条件を満たすとき、前記風オブジェクトを生成する、請求項２記載のゲームプログラム。
【請求項６】
前記ゲーム装置のプロセサに、前記加速度に応じて風オブジェクトの数を設定する数設定ステップをさらに実行させ、
前記風オブジェクト生成ステップは、前記数設定ステップによって設定された数の風オブジェクトを一定間隔を隔てた各位置に生成する、請求項５記載のゲームプログラム。
【請求項７】
前記加速度センサは、少なくとも前記操作装置の第１の方向の加速度と、当該第１の方向とは異なる第２の方向の加速度とを検知するものであり、
前記風オブジェクト生成ステップは、前記第１の方向の加速度が取得されたとき、前記風オブジェクトを生成する、請求項５または６記載のゲームプログラム。
【請求項８】
前記可動オブジェクトおよび前記風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、
前記当り判定ステップは、前記球としての前記可動オブジェクトと前記球としての前記風オブジェクトとの当りを判定し、
前記ゲーム装置のプロセサに、前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出する距離算出ステップをさらに実行させ、
前記可動オブジェクト制御ステップは、前記距離算出ステップによって算出された距離に応じて前記可動オブジェクトの動作状態を変化させる、請求項１ないし７のいずれかに記載のゲームプログラム。
【請求項９】
前記風オブジェクト移動ステップは、前記動作状態検出ステップによって検出された前記操作装置の動きの変化に応じた速度で、前記風オブジェクトを移動させる、請求項２記載のゲームプログラム。
【請求項１０】
プレイヤによって操作される操作装置を備え、仮想ゲーム空間内に配置される可動オブジェクトを表示装置に表示するゲーム装置であって、
前記操作装置からの操作データに応じて前記仮想ゲーム空間に風オブジェクトを生成する風オブジェクト生成手段、
前記風オブジェクトを移動させる風オブジェクト移動手段、
前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定手段、および
前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御手段を備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ゲームプログラムおよびゲーム装置に関し、特にたとえば、仮想ゲーム空間において風を表現する、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
仮想ゲーム空間に風の生成を表現する関連技術の一例が特許文献１および２に開示されている。特許文献１の技術では、オブジェクト空間の所与の位置に複数の風生成源が設けられる。オブジェクトの受ける風の計算方法としては、算出対象となる地点において、各生成源から受ける風のベクトル（風の力と方向）が計算され、算出された各風ベクトルが合成されて、オブジェクトの受ける風（合成ベクトル）が決定される。
【０００３】
また、特許文献２の技術では、オブジェクトの移動に応じて生じる風に影響を受ける粒子オブジェクトの振る舞いが表現される。移動するオブジェクトごとに予め対応付けられた複数の仮想的な風に関する情報を示すテーブルが設定されている。具体的には、風の基準位置、風向き、風力、および風の影響範囲が定義されている。オブジェクトの移動と共に仮想的な風も移動するが、当該オブジェクトと仮想的な風の相対的な位置は変化しない。
【特許文献１】特開２００１−２７６４１６号公報
【特許文献２】特開２００１−３０７１２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１および２の技術は、いずれもプレイヤの操作に応じて生成される風をオブジェクトとして表したものではない。特に、特許文献１の技術では、各生成源から受ける風のベクトルが計算され、算出された各風ベクトルを合成することによってオブジェクトが受ける風が決定されるので、演算処理が複雑になるという欠点があった。また、特許文献２の技術では、複数の仮想的な風は、予め対応付けられたオブジェクト毎にテーブルとして設定されるので、生成される風の定義は対応付けられたオブジェクトに制約されるという欠点があった。さらに、プレイヤの操作に応じて仮想ゲーム空間内の任意の位置に風を生成しようとすると、多数の仮想的な風をテーブルに設定しておかねばならないため、メモリ容量が増大してしまうという欠点があった。
【０００５】
それゆえに、この発明の主たる目的は、プレイヤの操作に応じて仮想ゲーム空間内に生成される風を簡単な処理でかつ少ないメモリ容量で表現することのできる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明（請求項１の発明）は、プレイヤによって操作される操作装置を備え、仮想ゲーム空間内に配置される可動オブジェクトを表示装置に表示するゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、風オブジェクト生成ステップ、風オブジェクト移動ステップ、当り判定ステップ、および可動オブジェクト制御ステップを実行させる。風オブジェクト生成ステップは、操作装置からの操作データに応じて仮想ゲーム空間に風オブジェクトを生成する。風オブジェクト移動ステップは、風オブジェクトを移動させる。当り判定ステップは、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御ステップは、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトを動かす。
【０００７】
請求項１の発明では、ゲームプログラムはプレイヤ操作に応じて仮想ゲーム空間に風を発生させるためのものであり、ゲーム装置（１２：実施例で相当する参照符号。以下同じ。）のプロセサ（２８）に実行させる次の各ステップを含む。なお、ゲーム装置は操作装置（１４）を備えており、仮想ゲーム空間内に配置される可動オブジェクト（９０）を表示装置（１６）に表示する。風オブジェクト生成ステップ（Ｓ９−Ｓ１５、Ｓ７１−Ｓ７７）では、操作データに応じて仮想ゲーム空間に風オブジェクト（９２）が生成される。このように、プレイヤ操作に応じて生成される風はオブジェクトを用いて表現される。風オブジェクトは、実施例では透明なポリゴンで形成されており、ゲーム画面には表示されない。たとえば操作データに基づいて算出される位置にあるいは所定の位置に風オブジェクトは生成される。風オブジェクト移動ステップ（Ｓ１７、Ｓ３１、Ｓ７９）では、風オブジェクトが移動される。たとえば、風オブジェクトは、視点と生成位置とを結ぶ方向に移動され、また、操作データに基づいて算出される速度で移動されてよい。当り判定ステップ（Ｓ３５）では、風オブジェクトと可動オブジェクトとの当りが判定される。つまり、可動オブジェクトが風の影響を受けるか否かが判定される。可動オブジェクト制御ステップ（Ｓ１９、Ｓ８１）では、当りが生じたと判定されたとき、可動オブジェクトが動かされる。実施例では、可動オブジェクトは風車であり、風の影響を受けて回転速度が変化される。
【０００８】
請求項１の発明によれば、プレイヤの操作に応じて生成される風をオブジェクトを用いて表現するようにしたので、風の影響の有無を当り判定によって判断することができ、また、仮想ゲーム空間の任意の位置で風を表現できる。したがって、簡単な処理でかつ少ないメモリ容量で風を表現することができる。
【０００９】
請求項２の発明は、請求項１の発明に従属し、操作装置は、当該操作装置の動きを検出するための動き検出手段を備えている。ゲームプログラムは、ゲーム装置のプロセサに、操作装置の動きに基づいて操作装置の動作状態を検出する動作状態検出ステップをさらに実行させる。風オブジェクト生成ステップは、動作状態が所定の状態であるとき、風オブジェクトを生成する。
【００１０】
請求項２の発明では、操作装置の動き検出手段（５６、６４）は、操作装置自身の動きを検出する。動作状態検出ステップ（Ｓ１−Ｓ７、Ｓ６１−Ｓ６７）では、操作装置の動きに基づいて動作状態が検出される。風オブジェクト生成ステップでは、動作状態が所定の状態であるときに、風オブジェクトが生成される。したがって、操作装置自体を所定の状態に動作させることによって仮想ゲーム空間内に風を起こすといったゲームを実現することができる。
【００１１】
請求項３の発明は、請求項２の発明に従属し、動き検出手段は、操作装置の位置を示す撮像対象を撮像するための撮像手段を含んでいる。このゲームプログラムは、ゲーム装置のプロセサに、座標算出ステップ、および座標変化量算出ステップをさらに実行させる。座標算出ステップは、撮像手段で撮像された撮像対象の位置に基づいて仮想ゲーム空間内における座標を算出する。座標変化量算出ステップは、単位時間における座標の変化量を算出する。オブジェクト生成ステップは、変化量が所定の条件を満たすとき、風オブジェクトを生成する。
【００１２】
請求項３の発明では、動き検出手段は撮像手段（７０）を含み、撮像手段によって、操作装置の位置を示す撮像対象（１８ａ、１８ｂ）が撮像される。実施例では、撮像対象は、表示装置の近傍に設けられる２つの赤外マーカであり、撮像画像におけるマーカの位置が検出される。座標算出ステップ（Ｓ３）では、撮像対象の位置に基づいて仮想ゲーム空間内における座標が算出される。たとえば、マーカの位置から操作装置による指示位置が算出され、当該指示位置を仮想ゲーム空間内の座標に変換することによって、対応する位置の座標が算出される。座標変化量算出ステップ（Ｓ５）では、単位時間における座標の変化量が算出される。実施例では、現フレームの座標と前フレームの座標との差が算出される。オブジェクト生成ステップでは、変化量が所定の閾値よりも大きいといった所定の条件が満足されたとき、風オブジェクトが生成される。操作装置の位置に基づく仮想ゲーム空間内の座標は、操作装置を動かすことによって変化する。この座標変化量が所定条件を満たせば、仮想ゲーム空間に風が発生される。したがって、操作装置を振るといったようなこれまでにない操作で仮想ゲーム空間内に風オブジェクトを生成させるという、斬新なゲームを提供することができる。
【００１３】
請求項４の発明は、請求項３に従属し、このゲームプログラムは、ゲーム装置のプロセサに、変化量を一定間隔に分割する分割ステップをさらに実行させる。風オブジェクト生成ステップは、分割ステップによる分割によって一定間隔を隔てた各位置に風オブジェクトを生成する。
【００１４】
請求項４の発明では、分割ステップ（Ｓ９）で座標変化量を一定間隔に分割することによって生成位置が算出され、各生成位置に風オブジェクトが生成される。したがって、一定距離ごとに複数の風オブジェクトを生成することができる。このように、操作装置を振る程度に応じて、生成される風オブジェクトの数を変化させることができる。
【００１５】
請求項５の発明は、請求項２の発明に従属し、動き検出手段は、加速度センサを含んでいる。このゲームプログラムは、ゲーム装置のプロセサに、加速度センサで検出された加速度を取得する加速度取得ステップをさらに実行させる。風オブジェクト生成ステップは、加速度が所定の条件を満たすとき、風オブジェクトを生成する。
【００１６】
請求項５の発明では、操作装置に加速度センサが設けられる。加速度取得ステップ（Ｓ６１）では加速度センサで検出された加速度が取得され、風オブジェクト生成ステップでは、加速度が所定の条件を満たすとき（Ｓ６３）、風オブジェクトが生成される。操作装置を動かすと、加速度センサで検出される加速度は変化する。したがって、加速度センサを用いることによって、操作装置を振るといったようなこれまでにない操作で仮想ゲーム空間内に風オブジェクトを生成させるという、斬新なゲームを提供することができる。
【００１７】
請求項６の発明は、請求項５の発明に従属し、ゲームプログラムは、ゲーム装置のプロセサに、加速度に応じて風オブジェクトの数を設定する数設定ステップをさらに実行させる。風オブジェクト生成ステップは、数設定ステップによって設定された数の風オブジェクトを一定間隔を隔てた各位置に生成する。
【００１８】
請求項６の発明では、数設定ステップ（Ｓ７１）で加速度に応じて風オブジェクトの生成数が設定され、風オブジェクト生成ステップでは、設定された数の風オブジェクトが一定間隔を空けた各位置に生成される。このように、加速度センサを用いることによって、操作装置を振る程度に応じて、生成される風オブジェクトの数を変化させることができる。
【００１９】
請求項７の発明は、請求項５または６の発明に従属し、加速度センサは、少なくとも操作装置の第１の方向の加速度と、当該第１の方向とは異なる第２の方向の加速度とを検知する。風オブジェクト生成ステップは、第１の方向の加速度が取得されたとき、風オブジェクトを生成する。
【００２０】
請求項７の発明では、加速度センサによって所定の方向の加速度が検出されたときのみ、風が発生される。したがって、操作装置をたとえば上下方向に振ったときは風が発生するが、左右方向に振ったときは風が発生しないといったように、操作装置を擬似的に団扇等に見立てたような操作を実現することができる。
【００２１】
請求項８の発明は、請求項１ないし７のいずれかの発明に従属し、可動オブジェクトおよび風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されている。当り判定ステップは、球としての可動オブジェクトと球としての風オブジェクトとの当りを判定する。このゲームプログラムは、ゲーム装置のプロセサに、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出する距離算出ステップをさらに実行させる。可動オブジェクト制御ステップは、距離算出ステップによって算出された距離に応じて可動オブジェクトの動作状態を変化させる。
【００２２】
請求項８の発明では、可動オブジェクトおよび風オブジェクトは球形に形成され、当り判定ステップでは球同士の当りが判定される。距離算出ステップ（Ｓ３７）では、可動オブジェクトの中心座標と風オブジェクトとの中心座標との距離が算出される。可動オブジェクト制御ステップでは、風オブジェクトと可動オブジェクトとの距離に応じて、可動オブジェクトの動作状態が変化される。したがって、可動オブジェクトと風オブジェクトの位置関係によって可動オブジェクトに影響を与える風の強さが変わるといった表現を簡単な処理で実現することができる。
【００２３】
請求項９の発明は、請求項２の発明に従属し、風オブジェクト移動ステップは、動作状態検出ステップによって検出された操作装置の動きの変化に応じた速度で、風オブジェクトを移動させる。
【００２４】
請求項９の発明では、風オブジェクト移動ステップでは、操作装置の動きの変化に応じた速度が算出され（Ｓ１３）、当該速度で風オブジェクトが移動される。たとえば、風オブジェクトの初速度が、操作装置による指示位置の変化量に応じて決められる。したがって、操作装置の動作状態に応じた速度で風オブジェクトを移動させることができる。たとえば、操作装置を振る操作の速さに応じて風オブジェクトの速度を変化させることができる。
【００２５】
第２の発明（請求項１０の発明）は、プレイヤによって操作される操作装置を備え、仮想ゲーム空間内に配置される可動オブジェクトを表示装置に表示するゲーム装置である。このゲーム装置は、風オブジェクト生成手段、風オブジェクト移動手段、当り判定手段、および可動オブジェクト制御手段を備える。風オブジェクト生成手段は、操作装置からの操作データに応じて仮想ゲーム空間に風オブジェクトを生成する。風オブジェクト移動手段は、風オブジェクトを移動させる。当り判定手段は、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトを動かす。
【００２６】
第２の発明は、上述の第１の発明のゲームプログラムに対応するゲーム装置であり、上述の第１の発明と同様な効果を奏する。
【発明の効果】
【００２７】
この発明によれば、プレイヤの操作に応じて生成される風をオブジェクトを用いて表現し、この風オブジェクトとの当りによって仮想ゲーム空間内の可動オブジェクトを動作させるようにしたので、プレイヤの操作に応じて生成される風を、簡単な処理でかつ少ないメモリ容量で表現することができる。
【００２８】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２９】
図１を参照して、この実施例のゲームシステム１０はゲーム装置１２およびコントローラ１４を含む。ゲーム装置１２は、据置型ゲーム装置であり、家庭用テレビジョン受像機のようなディスプレイないしモニタ１６にケーブルを介して接続される。コントローラ１４は、プレイヤないしユーザによって操作される操作装置であり、ゲーム装置１０に操作データを与える。
【００３０】
モニタ１６の周辺（図１ではモニタ１６の画面の上側）には、２つのマーカ１８ａおよび１８ｂが所定間隔を隔てて設置される。マーカ１８ａおよび１８ｂは、コントローラ１４の位置を示すためのものである。マーカ１８ａおよび１８ｂは、具体的には赤外ＬＥＤであり、それぞれモニタ１６の前方に向かって赤外光を出力する。マーカ１８ａおよび１８ｂはコントローラ１４の撮像対象である。後述されるように、コントローラ１４は光学式ポインティングデバイスとしても機能する。
【００３１】
ゲーム装置１２には、接続端子を介して受信ユニット２０が接続される。受信ユニット２０は、コントローラ１４から無線送信される操作データを受信する。具体的には、コントローラ１４は、たとえばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）のような無線通信技術を用いて、受信ユニット２０が接続されたゲーム装置１２へ操作データを送信する。
【００３２】
また、ゲーム装置１２には、当該ゲーム装置１２に対して交換可能に用いられる情報記憶媒体の一例である光ディスク２２が脱着される。ゲーム装置１２の上部主面には、当該ゲーム装置１２の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置１２上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク２２の脱着が可能となる。また、ゲーム装置１２には、外部メモリカード２４が必要に応じて着脱自在に装着される。当該メモリカード２４に搭載されるフラッシュメモリ等にはセーブデータ等が記憶される。
【００３３】
ゲーム装置１２は、光ディスク２２に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてモニタ１６に表示する。なお、ゲーム装置１２は、外部メモリカード２４に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、当該ゲーム画像をモニタ１６に表示することもできる。また、モニタ１６に備えられるスピーカ２６（図２参照）からはゲームサウンドが出力される。そして、プレイヤは、モニタ１６に表示されたゲーム画像を見ながら、コントローラ１４を操作することによって、仮想ゲームをプレイする。
【００３４】
図２にはゲーム装置１２の電気的構成の一例が示される。ゲーム装置１２は、各種プログラムを実行するたとえばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）２８を含む。ＣＰＵ２８は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３０等のメモリの初期化等を行った後、光ディスク２２に記憶されているゲームプログラムおよびデータをロードし、当該ゲームプログラムに従ってゲーム処理を行う。
【００３５】
ＣＰＵ２８には、メモリコントローラ３２を介して、ＧＰＵ（Graphics Processing Unit）３４、メインメモリ３０、ＤＳＰ（Digital Signal Processor）３６、およびＡＲＡＭ（Audio RAM）３８が接続される。また、メモリコントローラ３２には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）４０、ビデオＩ／Ｆ４２、外部メモリＩ／Ｆ４４、オーディオＩ／Ｆ４６、およびディスクＩ／Ｆ４８が接続され、それぞれ受信ユニット２０、モニタ１６、外部メモリカード２４、スピーカ２６、およびディスクドライブ５０が接続されている。
【００３６】
ＧＰＵ３４は、ＣＰＵ２８の命令に従って画像処理を行う。ＧＰＵ３４は、たとえば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３４は、図示しない画像処理専用のメモリやメインメモリ３０の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３４は、表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ３２およびビデオＩ／Ｆ４２を介してモニタ１６に出力する。
【００３７】
メインメモリ３０は、ＣＰＵ２８によって使用される記憶領域であり、ＣＰＵ２８の処理に必要なゲームプログラムおよびデータを適宜記憶する。たとえば、メインメモリ３０は、ＣＰＵ２８によって光ディスク２２から読み出されたゲームプログラムや各種データ等を記憶する。
【００３８】
ＤＳＰ３６はサウンドプロセサとして機能し、ＤＳＰ３６にはサウンドデータ等を記憶するためのＡＲＡＭ３８が接続される。ＡＲＡＭ３８は、ＤＳＰ３６が所定の処理（たとえば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３６は、ＡＲＡＭ３８に記憶されたサウンドデータを読み出し、当該データに基づいてメモリコントローラ３２およびオーディオＩ／Ｆ４６を介してモニタ１６に備えられるスピーカ２６からに当該サウンドを出力させる。
【００３９】
メモリコントローラ３２は、データ転送を統括的に制御し、メモリコントローラ３２には上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ４０は、たとえば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して外部機器とゲーム装置１２とを通信可能に接続する。たとえば、受信ユニット２０は、上記コネクタと嵌合し、コントローラＩ／Ｆ４０を介してゲーム装置１２と接続される。上述したように受信ユニット２０は、コントローラ１４からの操作データを受信し、コントローラＩ／Ｆ４０を介して当該操作データをＣＰＵ２８へ出力する。なお、他の実施例では、ゲーム装置１２には、受信ユニット２０に代えて、コントローラ１４から送信されてくる操作データを受信する受信モジュールがその内部に設けられてよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してＣＰＵ２８に出力される。
【００４０】
ビデオＩ／Ｆ４２にはモニタ１６が接続され、モニタ１６にはビデオＩ／Ｆ４２からの画像信号によってゲーム画像が表示される。外部メモリＩ／Ｆ４４には外部メモリカード２４が接続され、ＣＰＵ２８は、メモリコントローラ３２を介して外部メモリカード２４に設けられたフラッシュメモリ等にアクセスする。
【００４１】
オーディオＩ／Ｆ４６にはモニタ１６に内蔵されるスピーカ２６が接続される。オーディオＩ／Ｆ４６は、ＤＳＰ３６によってＡＲＡＭ３８から読み出されたサウンドデータやディスクドライブ５０から直接出力されるサウンドデータに対応するオーディオ信号をスピーカ２６に与え、スピーカ２６から当該サウンドが出力される。
【００４２】
ディスクＩ／Ｆ４８には、ディスクドライブ５０が接続される。ディスクドライブ５０は、所定の読み出し位置に配置された光ディスク２２に記憶されているデータを読み出す。読み出されたデータはディスクＩ／Ｆ４８およびメモリコントローラ３２等を介してメインメモリ３０に書き込まれ、あるいは、オーディオＩ／Ｆ４６に出力される。
【００４３】
図３および図４にはコントローラ１４の外観の一例が示される。図３（Ａ）は、コントローラ１４の上面後方から見た斜視図であり、図３（Ｂ）は、コントローラ１４を下面後方から見た斜視図である。図４は、コントローラ１４を前方から見た正面図である。
【００４４】
図３および図４を参照して、コントローラ１４は、たとえばプラスチック成型によって形成されたハウジング５２を有している。ハウジング５２は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ１４を用いて、それに設けられたボタンを押下するゲーム操作を行うことと、コントローラ１４自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。たとえば、或るゲームでは、プレイヤは、長手方向を軸としてコントローラ１４を回転させることによって、操作対象に移動動作を行わせることができる。また、プレイヤは、コントローラ１４によって指し示される画面上の位置を変える操作によって、ゲーム空間に登場するオブジェクトを移動させることができる。ここで、「コントローラ１４によって指し示される画面上の位置」とは、理想的には、コントローラ１４の前端部から上記長手方向に延ばした直線とモニタ１６の画面とが交わる位置であるが、厳密に当該位置である必要はない。当該位置の周辺の位置をゲーム装置１２によって算出することができればよい。以下では、コントローラ１４によって指し示される（画面上の）位置を「指示位置」と呼ぶ。また、コントローラ１４（ハウジング５２）の長手方向を、「コントローラ１４の指示方向」と呼ぶことがある。
【００４５】
ハウジング５２には、複数の操作ボタンが設けられる。ハウジング５２の上面には、十字キー５４ａ、Ｘボタン５４ｂ、Ｙボタン５４ｃ、Ａボタン５４ｄ、セレクトスイッチ５４ｅ、メニュースイッチ５４ｆ、およびスタートスイッチ５４ｇが設けられる。一方、ハウジング５２の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン５４ｉが設けられる。これらの各ボタン（スイッチ）５４は、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング５２の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ５４ｈが設けられる。
【００４６】
また、コントローラ１４は撮像情報演算部５６（図５参照）を有しており、図４に示すように、ハウジング５２前面には撮像情報演算部５６の光入射口５６ａが設けられる。一方、ハウジング５２の後面にはコネクタ５８が設けられている。コネクタ５８は、たとえば３２ピンのエッジコネクタであり、コントローラ１４に他の機器を接続するために利用される。また、ハウジング５２上面の後面側には複数のＬＥＤ６０が設けられる。ここで、コントローラ１４には、他のコントローラ１４と区別するためにコントローラ種別（番号）が付与される。コントローラ１４からゲーム装置１２へ操作データを送信する際、当該コントローラ１４に現在設定されているコントローラ種別に対応する１つのＬＥＤ６０が点灯する。
【００４７】
図５にはコントローラ１４の電気的構成が示される。コントローラ１４は、操作部５４（各操作ボタン５４ａ−５４ｈ）および撮像情報演算部５６の他に、その内部に通信部６２および加速度センサ６４を備えている。
【００４８】
撮像情報演算部５６は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムである。撮像情報演算部５６は、たとえば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ１４の動きでも追跡して解析することができる。
【００４９】
具体的には、撮像情報演算部５６は、赤外線フィルタ６６、レンズ６８、撮像素子７０および画像処理回路７２を含んでいる。赤外線フィルタ６６は、コントローラ１４の前方の開口５６ａからの入射光から赤外線のみを通過させる。ここで、モニタ１６の表示画面近傍に配置されるマーカ１８ａおよび１８ｂは、モニタ１６の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ６６を設けることによってマーカ１８ａおよび１８ｂの画像をより正確に撮像することができる。レンズ６８は、赤外線フィルタ６６を透過した赤外線を集光して撮像素子７０へ出射する。撮像素子７０は、たとえばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ６８が集光した赤外線を撮像する。したがって、撮像素子７０は、赤外線フィルタ６６を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子７０によって撮像された画像を撮像画像と呼ぶ。撮像素子７０によって生成された画像データは、画像処理回路７２で処理される。画像処理回路７２は、撮像画像内における撮像対象（マーカ１８ａおよび１８ｂ）の位置を算出する。画像処理回路７２は、各マーカ１８ａおよび１８ｂの撮像画像内における位置を示す各座標値を撮像データとして通信部６２へ出力する。
【００５０】
加速度センサ６４は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。たとえば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、３軸加速度センサが適用され、コントローラ１４の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸でそれぞれ加速度を検知する。また、この加速度センサ６４の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ１４の傾きや回転を算出することが可能である。つまり、ゲーム装置１２は、上記撮像画像からコントローラ１４のＺ軸周りの回転角度を算出することが可能であるだけでなく、加速度センサ６４によってもコントローラ１４の回転角度を算出することが可能である。たとえば、加速度センサ６４が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ６４が水平状態で静止しているとき、加速度センサのＹ軸に１Ｇの重力加速度が加わり、他の軸の重力加速度はほぼ０となる。次に、加速度センサ６４の姿勢が水平状態より傾くと、加速度センサ６４の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ６４の各軸に分散され、このとき、加速度センサ６４の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ６４の姿勢を算出することができる。
【００５１】
なお、加速度センサ６４としては、必要な操作信号の種類によっては、上下方向、左右方向および前後方向のうちいずれか２つの組合せの２軸でそれぞれ加速度を検出する２軸加速度センサが用いられてもかまわない。
【００５２】
加速度センサ６４が検出した加速度を示すデータは、通信部６２へ出力される。なお、加速度センサ６４は、典型的には静電容量式の加速度センサが用いられ得る。
【００５３】
通信部６２は、マイクロコンピュータ（Micro Computer：マイコン）７４、メモリ７６、無線モジュール７８およびアンテナ８０を含む。マイコン７４は、処理の際にメモリ７６を記憶領域として用いながら、取得したデータを無線送信する無線モジュール７８を制御する。
【００５４】
操作部５４、加速度センサ６４および撮像情報演算部５６からマイコン７４へ出力されたデータは、一時的にメモリ７６に格納される。ここで、通信部６２から受信ユニット２０への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン７４は、受信ユニット２０への送信タイミングが到来すると、メモリ６２に格納されているデータを操作データとして無線モジュール７８へ出力する。無線モジュール７８は、たとえばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ８０から放射する。つまり、操作データは、無線モジュール７８で微弱電波信号に変調されてコントローラ１４から送信される。微弱電波信号はゲーム装置１２側の受信ユニット２０で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２は操作データを取得することができる。ゲーム装置１２のＣＰＵ２８は、コントローラ１４から取得した操作データに基づいてゲーム処理を行う。
【００５５】
なお、図３および図４に示したコントローラ１４の形状や、各操作スイッチ５４の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置に適宜変更され得る。また、コントローラ１４における撮像情報演算部５６の位置（撮像情報演算部５６の光入射口５６ａ）は、ハウジング５２の前面でなくてもよく、ハウジング５２の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ１４の指示方向」は、光入射口５６ａに垂直な方向となる。
【００５６】
上記コントローラ１４を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ１４自身の位置を動かしたり、コントローラ１４を回転させたりするというゲーム操作を行うことができる。以下、上記コントローラ１４を用いたゲーム操作について説明する。
【００５７】
図６には、コントローラ１４を用いてゲーム操作をするときの状態を概説する図解図が示される。図６に示すように、ゲームシステム１０でコントローラ１４を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ１４を把持する。ここで、マーカ１８ａおよび１８ｂは、モニタ１６の画面の横方向と平行に配置されている。プレイヤは、コントローラ１４の前面（撮像情報演算部５６が撮像する光の入射口側）がマーカ１８ａおよび１８ｂの方向を向く状態でコントローラ１４を把持する。この状態で、プレイヤは、コントローラ１４が指し示す画面上の位置を変更したり、コントローラ１４と各マーカ１８ａおよび１８ｂとの距離を変更したりすることによってゲーム操作を行う。
【００５８】
ただし、各マーカ１８ａおよび１８ｂは所定の視野角の範囲で赤外光を放射し、また、コントローラ１４の撮像情報演算部５６の撮像素子７０は、当該コントローラ１４の視線方向（図３のＺ軸方向）を中心とした所定の視野角の範囲で入射する光を受光することができる。したがって、プレイヤは、撮像素子７０が２つのマーカ１８ａおよび１８ｂからの赤外光を受光することが可能な位置および向きとなるように、コントローラ１４を把持する。具体的には、撮像素子７０の視野角の中に少なくとも一方のマーカ１８ａまたは１８ｂが存在し、かつ、マーカ１８ａおよび１８ｂの少なくとも一方の視野角の中にコントローラ１４が存在する状態となるように、プレイヤはコントローラ１４を把持する。この状態にあるとき、コントローラ１４は、マーカ１８ａおよび／または１８ｂを検知することができる。プレイヤは、この状態を満たす範囲でコントローラ１４の位置および向きを変化させることによってゲーム操作を行うことができる。なお、コントローラ１４の位置および向きがこの範囲外となった場合、コントローラ１４による位置指示に基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【００５９】
操作可能範囲内でコントローラ１４が把持される場合、撮像情報演算部５６によって各マーカ１８ａおよび１８ｂの画像が撮像される。すなわち、撮像素子７０によって得られる撮像画像には、撮像対象である各マーカ１８ａおよび１８ｂの画像（対象画像）が含まれる。対象画像を含む撮像画像の画像データを用いて、画像処理回路７２は、各マーカ１８ａおよび１８ｂの撮像画像における位置を表す座標（マーカ座標）を算出する。
【００６０】
撮像画像の画像データにおいて対象画像は所定の大きさの高輝度部分として現れる。したがって、画像処理回路７２は、高輝度部分を対象画像の候補として検出し、検出された高輝度部分の大きさが所定の大きさの範囲内であるか否かを判定する。そして、高輝度部分が所定範囲内の大きさである場合、当該高輝度部分は対象画像を表すと判定され、高輝度部分が所定範囲内の大きさでない場合、当該高輝度部分は対象画像以外の画像を表すと判定される。
【００６１】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路７２は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子７０の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子７０によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをｙ軸正方向とし、右向きをｘ軸正方向とする座標系（ｘｙ座標系）で表現されるものとする。また、対象画像が正しく検出される場合には上記判定処理によって２つの高輝度部分が対象画像として判定されるので、上記算出処理によって２箇所のマーカ座標が算出される。画像処理回路７２は、上記算出処理によって算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータは、上述したように、マイコン７４によって操作データとしてゲーム装置１２に送信される。
【００６２】
ゲーム装置１２は、受信した操作データに含まれる上記マーカ座標のデータを用いて、コントローラ１４による指示位置を算出できる。具体的には、２つのマーカ座標の中点の位置が、コントローラ１４の向いている位置すなわち指示位置として採用される。
【００６３】
また、ゲーム装置１２は、コントローラ１４から各マーカ１８ａおよび１８ｂまでの距離を算出することができる。具体的には、撮像画像における対象画像間の距離がコントローラ１４とマーカ１８との距離に応じて変化するので、２つのマーカ座標間の距離の算出によって、ゲーム装置１２はコントローラ１４とマーカ１８ａおよび１８ｂとの間の距離を把握できる。
【００６４】
また、ゲーム装置１２は、コントローラ１４のＺ軸周りの捻りすなわち回転も把握できる。具体的には、コントローラ１４がＺ軸周りに回転されると撮像画像内におけるマーカ画像も回転するので、ゲーム装置１２は２つのマーカ座標を結ぶベクトルの角度の算出によって、コントローラ１４のＺ軸周りの回転を把握できる。なお、コントローラ１４がＺ軸周りに回転した状態である場合、撮像画像内の２つのマーカ座標の位置も回転しているので、上述のような中点である指示位置はコントローラ１４のＺ軸周りの回転の度合いに応じて補正されてよい。
【００６５】
なお、検出されたマーカ座標が１つであった場合には、コントローラ１４による指示位置を算出できない。しかし、前回のフレームで２つのマーカ座標を検出できていれば、前回のマーカ座標に基づいて今回のもう１つのマーカ座標を推定するようにしてもよい。あるいは、推定を行わず、２つのマーカ座標が検出された場合のみ、指示位置を算出するようにしてもよい。
【００６６】
このゲームシステム１０では、プレイヤによるコントローラ１４の操作に応じて、仮想ゲーム空間内に風が発生される。具体的には、プレイヤは、コントローラ１４を所定の状態に動かすことによって、仮想ゲーム空間に風を生じさせることができる。たとえば、プレイヤは、コントローラ１４を振るように動かすことによって、風を起こすことができる。仮想ゲーム空間には、図６の表示画面から分かるように、可動オブジェクトとしての風車オブジェクト９０が配置されている。可動オブジェクト９０は、プレイヤ操作に応じて発生した風を受けて動作する。具体的には、風車オブジェクト９０の回転状態が、風の影響を受けて変化する。
【００６７】
この実施例では、プレイヤ操作に応じて生成される風は、オブジェクトを用いて表現される。つまり、プレイヤによるコントローラ１４に対する操作に応じて、仮想ゲーム空間内に風オブジェクト９２（図８参照）が生成されて移動される。風オブジェクト９２を生成および移動させることによって仮想ゲーム空間の任意の位置で風の影響を与えることが可能になる。具体的には、仮想ゲーム空間に配置された風車オブジェクト９０が風の影響を受けるか否かは、風オブジェクト９２と風車オブジェクト９０との当り判定によって、簡単に判定することができる。このように、風オブジェクト９２を使用するようにしたので、当該オブジェクトデータを準備しておくだけで、つまり、少ないデータ量で仮想ゲーム空間の任意の位置に風を導入することができるし、仮想ゲーム空間内の他のオブジェクトに風の影響を簡単な処理で与えることができる。
【００６８】
図７にはメモリマップの一例が示される。メインメモリ３０はゲームプログラム記憶領域１００およびデータ記憶領域１０２を含む。なお、図７にはメモリマップの一部が示されており、ゲーム進行に必要な他のプログラムおよびデータも記憶される。
【００６９】
ゲームプログラム記憶領域１００の記憶領域１０４には操作データ取得プログラムが記憶されている。このプログラムによって、コントローラ１４からの操作データが、受信ユニット２０およびコントローラＩ／Ｆ４０を介してメインメモリ３０に取得される。上述のように、コントローラ１４は、ゲーム装置１２における１フレーム（たとえば１／６０秒）よりも短い周期で操作データを送信してくる。また、コントローラ１４の撮像情報演算部５６および加速度センサ６４のサンプリング周期は、ゲーム装置１２における１フレームよりも短い周期（たとえば１／２００秒）に設定されており、コントローラ１４の１回の送信データには複数の検出タイミングにおけるマーカ座標および加速度値が含まれる。したがって、この実施例では、ゲーム装置１２では１フレームに複数個の操作情報（マーカ座標および加速度値等）を含む操作データを取得することができる。ＣＰＵ２８は、複数個の操作情報を必要に応じて利用してゲーム処理を実行することができる。
【００７０】
記憶領域１０６には、風オブジェクト生成プログラムが記憶されている。このプログラムによって、仮想ゲーム空間に風オブジェクト９２が生成される。この実施例では、コントローラ１４の位置および姿勢の少なくとも一方に基づく動きに基づいて、当該コントローラ１４の動作状態が所定の状態であると判定されるときに、風オブジェクト９２は生成される。コントローラ１４の動作状態が所定の状態であることは、この実施例では、プレイヤによってコントローラ１４を振る操作が行われたことを意味する。また、コントローラ１４を振る操作であるか否かは、この実施例では、コントローラ１４による指示位置に基づいて判定される。具体的には、１フレームの間に指示位置の変化量が所定の閾値を超えたと判定される場合には、コントローラ１４を振る操作が行われたと判断される。なお、後述される別の実施例は、コントローラ１４によって検出された加速度に基づいて振る操作であるか否かが判定される。コントローラ１４からの操作データ（指示位置および加速度の少なくとも一方を含む）を用いて、コントローラ１４が所定の状態に動作されたか否かを判定することができるので、コントローラ１４を振るといったようなこれまでにない操作で仮想ゲーム空間内に風を生じさせるという斬新なゲームが実現される。
【００７１】
指示位置に基づいた風オブジェクトの生成を説明するための図解図が図８に示される。仮想ゲーム空間は３次元であり、仮想カメラ（視点）の視野のうちニアクリップ面とファークリップ面との間の空間が投影面上に投影され、ゲーム画像としてレンダリングされる。そこで、この実施例では、風オブジェクト９２の生成位置は、ニアクリップ面上であるように規定されている。なお、この実施例では、ニアクリップ面が投影面であるが、投影面はニアクリップ面に限られない。
【００７２】
具体的には、現フレームと前フレームのコントローラ１４の指示位置（２次元座標）のそれぞれをニアクリップ面に投影して、仮想ゲーム空間において各指示位置に対応する３次元座標を算出する。つまり、コントローラ１４によるモニタ１６の画面に対する指示位置をニアクリップ面上の対応する位置に変換する。そして、現フレームの座標と前フレームの座標との差（変化量）が所定の閾値より大きい場合には、振る操作が行われたと判定して、風オブジェクト９２の生成位置を算出する。具体的には、座標の変化量を一定間隔で分割し、各分割位置を生成位置として採用する。したがって、この実施例では、振る操作が素早いほど多くの風オブジェクト９２が生成される。
【００７３】
このようにして算出される仮想ゲーム空間内の各位置に、風オブジェクト９２が生成される。風オブジェクト９２は、複数のポリゴンで構成されたオブジェクトであり、後述するように球形である。また、風オブジェクト９２は透明なポリゴンで形成されており、仮想ゲーム空間に生成されてもゲーム画面上には表示されない。
【００７４】
また、風オブジェクト９２の射出方向すなわち移動方向としては、この実施例では、視点と各生成位置とを結んで得られる各ベクトルの方向が採用される。つまり、風オブジェクト９２は、画面手前から奥行き方向へ進む。
【００７５】
さらに、風オブジェクト９２の初速度が、現フレームと前フレームの座標の変化量の大きさすなわちコントローラ１４を振る速度に基づいて算出される。座標変化量が大きいほど、つまり、振る操作が素早いほど、初速度は大きい値に設定される。あるいは、初速度は、Ｚ軸方向の加速度の値に基づいて決められてもよい。または、風オブジェクト９２の移動速度は、所定値に設定されてもよい。
【００７６】
図７に戻って、記憶領域１０８には、風オブジェクト移動プログラムが記憶されている。このプログラムによって、風オブジェクト９２の移動が制御される。風オブジェクト９２は、生成位置から上述の射出方向および初速度で移動する。なお、移動速度はこの実施例では一定であるが、別の実施例では仮想ゲーム空間に設定された条件に応じて加減されてもよい。
【００７７】
記憶領域１１０には、当り判定プログラムが記憶されている。このプログラムによって、風オブジェクト９２と風車オブジェクト９０とが衝突したか否かが判定される。たとえば、風オブジェクト９２の中心座標と風車オブジェクト９０の中心座標との間の距離が、風オブジェクト９２の半径ｒと風車オブジェクト９０の半径Ｒとの間の距離以下になったか否かが判定される。なお、風車オブジェクト９０は、視点側に膨らんだ半球形を有するオブジェクトである。風車オブジェクト９０は、たとえば風車の実体を示す十字形の部分にのみテクスチャがマッピングされることでゲーム画像では十字形の風車として表示される。風をオブジェクトで表現するようにしたので、オブジェクト同士の当り判定という簡単な処理で風の影響の有無を判別できる。
【００７８】
記憶領域１１２には、風車オブジェクト制御プログラムが記憶されている。このプログラムによって風車オブジェクト９０の動作が制御される。この実施例では、各風車オブジェクト９０は、風を受けることによって、つまり、風オブジェクト９２との衝突によって回転する。具体的には、図９に示すように、風オブジェクト９２の半径がｒであり、風車オブジェクト９０の半径がＲであり、風オブジェクト９２と風車オブジェクト９０の中心間距離がｄであるとすると、次の数１で算出される速度Ｖａが風車オブジェクト９０の現在の回転速度Ｖに加算される。
【００７９】
［数１］
Ｖａ＝Ｖｐ×（１−ｄ／（ｒ＋Ｒ））
ここで、Ｖｐは所定の定数である。両オブジェクトが離れているほど、加えられる回転速度Ｖａは小さくなる。
【００８０】
このように、当り判定で当りが生じたと判定されるときには、両者の中心間距離に応じて、風車オブジェクト９０の動作状態を変化させるようにした。また、風車オブジェクト９０と風オブジェクト９２との位置関係によって風車オブジェクト９０に与えられる風の影響度が変わるといった表現を行える。このような表現は、風車オブジェクト９０と風オブジェクト９２を球形に形成しているため、より簡単な処理で実現される。
【００８１】
図７に戻って、記憶領域１１４には画像表示プログラムが記憶されている。このプログラムによって、風車オブジェクト９０を含む仮想ゲーム空間の場面を示す３次元ゲーム画像が生成されて、当該ゲーム画像がモニタ１６に表示される。
【００８２】
データ記憶領域１０２の記憶領域１１６には、光ディスク２２から読み出されたゲームマップデータおよびオブジェクトデータ等が記憶される。ゲームマップデータは仮想ゲーム空間の配置を示す。オブジェクトデータは、仮想ゲーム空間に登場する風車オブジェクト９０等のオブジェクトを示すデータや、プレイヤ操作に応じて生成される風オブジェクト９２を示すデータを含む。
【００８３】
記憶領域１１８は操作データバッファであり、コントローラ１４から送信される操作データが記憶される。上述のように、ゲーム装置１２における１フレームの間に、コントローラ１４から複数個の操作情報を含む操作データを少なくとも１回受信するので、受信された操作データが順次この記憶領域１１８に蓄積される。具体的には、操作データは、撮像情報演算部５６によって検出されたマーカ座標を示すマーカ座標データ、および加速度センサ６４で検出されたＸ、Ｙ、Ｚ軸の加速度値を示す加速度データを含む。
【００８４】
記憶領域１２０には指示位置が記憶される。上述のように、指示位置はコントローラ１４で指し示される画面上の位置であり、２次元座標で示される。取得した２つのマーカ座標（マーカ１８ａと１８ｂ）の中点の座標を算出し、これを指示位置として記憶する。なお、上述のように、１フレームあたり複数個のマーカ座標が取得されるので、たとえば複数の中点座標の平均を取ることで算出される座標を指示位置として採用してもよい。
【００８５】
記憶領域１２２には指示位置履歴が記憶される。所定数のフレーム分の指示位置が記憶される。また、指示位置は仮想ゲーム空間における対応する位置に変換された３次元座標である。つまり、上述の図８で示したように、２次元座標の指示位置をニアクリップ面上に投影した位置の３次元座標が記憶される。この指示位置履歴データに基づいて変化量が算出される。
【００８６】
記憶領域１２４には加速度履歴が記憶される。所定数のフレーム分の加速度値が記憶される。なお、上述のように、１フレームで複数個の加速度値が取得されるので、加速度値も、指示位置と同様に、複数個の値の平均値をとるようにしてよい。あるいは、最大値もしくは最小値を採用してもよい。
【００８７】
記憶領域１２６には風オブジェクト制御データが記憶される。生成された複数の風オブジェクト９２のそれぞれ（第１風オブジェクト、第２風オブジェクト、…）に関して、位置、射出方向および初速度など情報が記憶される。位置情報の初期座標は、上述の図８で示したように、風オブジェクト生成プログラムによって算出される各風オブジェクト９２の生成位置である。その後、各風オブジェクト９２の位置は、風オブジェクト移動プログラムによって射出方向および初速度に基づいて算出された移動後の座標に、フレームごとに更新される。
【００８８】
記憶領域１２８には風車オブジェクト制御データが記憶される。仮想ゲーム空間に配置される複数の風車オブジェクト９０のそれぞれ（第１風車オブジェクト、第２風車オブジェクト、…）に関して、位置（中心座標）および回転速度などの情報が記憶される。各風車オブジェクト９０の位置はこの実施例では所定の座標に固定されている。また、回転速度の初期値は適宜に設定されるが、たとえば、０（すなわち無回転状態）であってよい。当り判定プログラムによって風オブジェクト９２との衝突が判定されたときには、回転速度が更新される。現在の回転速度に、上述の図９および数１に示したように、風車オブジェクト制御プログラムによって算出された値Ｖａが加算されて、新たな回転速度が算出される。なお、風車オブジェクト９０が回転している場合には、たとえば一定時間ごとに回転速度から所定値だけ減算することによって、回転が徐々に止まるようにされてよい。
【００８９】
図１０にゲーム装置１０のゲーム動作の一例が示される。ゲーム処理を開始すると、ＣＰＵ２８は、ステップＳ１で操作データバッファ１１８からマーカ座標を読み出して指示位置座標（２次元座標）を算出し、当該指示位置を示す２次元座標を指示位置記憶領域１２０に記憶する。
【００９０】
なお、図１０では、プレイヤによって振る操作が行われていない場合の処理を省略しているが、その場合、ステップＳ１からＳ１７が実行されず、処理はステップＳ１９へ進む。
【００９１】
次に、ステップＳ３で、ＣＰＵ２８は、図８に示したように、指示位置をニアクリップ面上に投影して、３Ｄ仮想ゲーム空間の座標に変換する。算出された指示位置の３次元座標は、指示位置履歴記憶領域１２２に記憶される。
【００９２】
続いて、ステップＳ５で、ＣＰＵ２８は、指示位置履歴記憶領域１２２のデータに基づいて、現フレームの指示位置と前フレームの指示位置との差（座標変化量）を算出する。位置座標の差はベクトルであるので、算出したベクトルのスカラー値も算出しておく。
【００９３】
そして、ステップＳ７で、ＣＰＵ２８は、差が所定の閾値よりも大きいか否かを判定する。この判定は振る操作が行われたか否かの判定である。所定の閾値は、指示位置の変化が振る操作に相当すると見なせる適切な値に設定される。また、この判定によって手ぶれ程度の指示位置の変化によって風が生じるのを防止することができる。
【００９４】
ステップＳ７で“ＹＥＳ”の場合、つまり、コントローラ１４を振る操作が行われた場合には、ＣＰＵ２８は、ステップＳ９で、差を一定間隔で分割することによって、各風オブジェクト９２の生成位置を算出する。図８に示したように、前フレームの指示位置から現フレームの指示位置までを結ぶ線分を一定間隔で分割することによって得られた各位置の座標が算出される。したがって、コントローラ１４を振る速さの程度に応じた数の風オブジェクト９２を生成することができる。
【００９５】
ステップＳ１１では、ＣＰＵ２８は、各生成位置の射出方向を算出する。各射出方向は、この実施例では、視点（仮想カメラ位置）から各生成位置までを結ぶベクトルの単位ベクトルである。
【００９６】
ステップＳ１３では、ＣＰＵ２８は指示位置の差から初速度を算出する。上述のように、素早い振り操作が行われた場合に風の移動速度を速くするので、差（座標変化量）が大きいほど初速度の値が大きくされる。初速度の値は、座標変化量に基づいて所定の式に従って算出されてよいし、あるいは、座標変化量に対応付けられた速度が予め記憶されているテーブルから選ばれてもよい。また、別の実施例では、加速度（Ｚ軸方向）の値に基づいて初速度を算出するようにしてよく、この場合にも、座標変化量の場合と同様に、コントローラ１４を振る操作の程度に応じた速度で風オブジェクト９２を移動させることができる。
【００９７】
ステップＳ１５では、ＣＰＵ２８は風オブジェクト９２を生成する。これによって、仮想ゲーム空間内の各生成位置に各風オブジェクト９２が配置される。また、風オブジェクト制御データ記憶領域１２６には、各風オブジェクト９２の位置、射出方向および初速度を示す情報が記憶される。
【００９８】
そして、ステップＳ１７で、ＣＰＵ２８は風オブジェクト移動処理を開始する。この風オブジェクト移動処理によって、生成された各風オブジェクト９２の移動が制御される。ＣＰＵ２８は、生成された複数の風オブジェクト９２のそれぞれについて、図１１に示すような風オブジェクト移動処理を実行する。風オブジェクト移動処理は、図１０のメイン処理と並列的に実行される。ステップＳ１７で各風オブジェクト９２の移動処理が開始されると、処理はステップＳ１９に進む。
【００９９】
図１１に示すように、風オブジェクト移動処理を開始すると、ＣＰＵ２８は、ステップＳ３１で風オブジェクト９２を移動させる。具体的には、ＣＰＵ２８は、現在位置から射出方向に向けて初速度で移動させることによって、移動後の位置の座標を算出し、記憶領域１２６の当該風オブジェクト９２の位置情報を当該座標に更新する。
【０１００】
次に、ステップＳ３３で、ＣＰＵ２８は、移動後の位置が所定範囲外であるか否かを判定する。つまり、風オブジェクト９２がゲーム画像として描画されるクリッピングエリアから出たか否かが判定される。
【０１０１】
ステップＳ３３で“ＮＯ”であれば、ＣＰＵ２８は、ステップＳ３５で風オブジェクト９２と風車オブジェクト９０のいずれかが重なっているか否かを判定する。つまり、風オブジェクト９２と風車オブジェクト９０との当り判定を実行する。このように、この実施例では、風をオブジェクトによって表現するようにしたので、オブジェクト同士の当り判定によって、仮想ゲーム空間の可動オブジェクト９０に対する風の影響の有無を判断することができる。
【０１０２】
ステップＳ３５で“ＹＥＳ”であれば、つまり、風オブジェクト９２が風車オブジェクト９０に衝突した場合には、ＣＰＵ２８は、ステップＳ３７で、風オブジェクト９２の中心座標と風車オブジェクト９０の中心座標との距離ｄを両者の位置情報に基づいて算出する。
【０１０３】
続くステップＳ３９で、ＣＰＵ２８は、風オブジェクト９２によって風車オブジェクト９０に与える影響の度合いを算出する。つまり、風車オブジェクト９０の回転速度に加算すべき回転速度Ｖａを、上述の数１に従って算出する。
【０１０４】
そして、ステップＳ４１で、ＣＰＵ２８は、衝突した風車オブジェクト９０の現在の回転速度にＶａを加算して、風車オブジェクト制御データ記憶領域１２８の当該風車オブジェクト９０の回転速度の情報を更新する。これによって、風オブジェクト９２と衝突した風車オブジェクト９０は、更新された速度で回転されることとなる。
【０１０５】
ステップＳ４１を終了すると、または、ステップＳ３５で“ＮＯ”の場合、処理はステップＳ３１に戻る。ステップＳ３３で“ＹＥＳ”と判定されるまで、この風オブジェクト移動処理の各ステップは、１フレームごとに繰り返し実行される。
【０１０６】
そして、ステップＳ３３で“ＹＥＳ”の場合、つまり、風オブジェクト９２が描画される範囲の外へ移動した場合には、ＣＰＵ２８は、ステップＳ４３で当該風オブジェクト９２を仮想ゲーム空間から消去する。風オブジェクト制御データ記憶領域１２６の当該風オブジェクト９２に関する情報はクリアされる。ステップＳ４３を終了するとこの風オブジェクト移動処理を終了する。
【０１０７】
図１０の説明に戻って、ステップＳ７で“ＮＯ”の場合には、つまり、振る操作と認められない場合には、処理はステップＳ１９に進む。ステップＳ１９では、ＣＰＵ２８は、風車制御処理を実行する。これによって、記憶領域１２８の回転速度がゼロでない各風車オブジェクト９０は、各回転速度に基づいて回転される。
【０１０８】
ステップＳ２１では、ＣＰＵ２８は、画面表示処理を実行する。これによって、風車オブジェクト９０を含む仮想ゲーム空間の様子を示すゲーム画面が生成されて、モニタ１６に表示される。風を受けて風車オブジェクト９０が回転されている場合には、当該風車オブジェクト９０の回転する場面を示すゲーム画面がモニタ１６に表示される。
【０１０９】
ステップＳ２３では、ＣＰＵ２８はゲーム終了であるか否かを判断し、“ＮＯ”であればステップＳ１へ戻ってゲーム処理を繰返し、“ＹＥＳ”であればこのゲーム処理を終了する。
【０１１０】
なお、上述のフロー図では、ステップＳ７で、指示位置の変化量が閾値より大きいという条件によって振り操作か否かを判断するようにしている。しかし、変形例では、コントローラ１４の指示位置の変化量が取得される場合には、変化量の大小にかかわらず、コントローラ１４の操作が行われたものと見なして、風オブジェクト９２を生成するようにしてもよい。また、上述のフロー図では、ステップＳ５で現フレームの指示位置と前フレームの指示位置との差を算出するようにしている。しかし、変形例では、現フレームの指示位置と数フレーム前の指示位置との差を算出するようにしてもよい。あるいは、指示位置の座標変化の開始点から終了点までの差を算出するようにしてもよい。このようにすれば、より長時間の振り操作を判定することができる。
【０１１１】
この実施例によれば、プレイヤの操作に応じて生成される風を風オブジェクト９２として表現し、この風オブジェクト９２との当りによって仮想ゲーム空間内の風車オブジェクト９０が風の影響を受けて動作するようにした。したがって、プレイヤの操作に応じて生成される風を、オブジェクトを用いることによって簡単な処理で表現することができる。また、風オブジェクトデータを準備しておけば、仮想ゲーム空間の任意の位置における多数の風を定義したようなデータを準備する必要がないので、少ないメモリ容量でゲーム空間の任意の位置で風を表現することができる。
【０１１２】
なお、上述の実施例では、コントローラ１４を振る操作が行われたか否かをコントローラ１４の指示位置情報に基づいて判定するようにしていた。しかし、他の実施例では、コントローラ１４が所定の状態に動かされたか否かを、つまり、コントローラ１４を振る操作が行われたか否かを、加速度情報に基づいて判定するようにしてよい。
【０１１３】
プレイヤが画面を指すような状態で把持したコントローラ１４を振ると、コントローラ１４の前方（Ｚ軸方向）に遠心力が加わる。したがって、この実施例では、所定の閾値よりも大きいＺ軸方向加速度が検出されたとき、コントローラ１４を振る操作が行われたと判定される。
【０１１４】
また、コントローラ１４の振られた方向を風発生条件の１つとして考慮するようにしてもよい。この実施例では、加速度情報に基づいてコントローラ１４が振られた方向を判別し、所定の方向にコントローラ１４が振られたことが判定されたときに風を発生させる。
【０１１５】
さらに、加速度の大きさに応じて風オブジェクト９２の生成数が設定される。コントローラ１４が強くつまり素早く振られるほど、多くの風オブジェクト９２が生成される。
【０１１６】
各風オブジェクト９２の生成位置の決め方は、図１２に示される。まず、コントローラ１４による指示位置が始点として設定される。指示位置の座標（２次元）は、上述の実施例と同様に、仮想ゲーム空間内においてニアクリップ面上の座標（３次元）に変換される。この始点も生成位置の１つである。そして、始点からコントローラ１４の振り方向と逆方向に一定間隔を隔てることによって、残りの風オブジェクト９２の生成位置が算出される。風オブジェクト９２の生成間隔の値は適宜に設定される。
【０１１７】
なお、この実施例では、生成位置を算出するための始点をコントローラ１４の指示位置から算出するようにしている。つまり、コントローラ１４によって検出される指示位置および加速度の両方に基づいて風オブジェクト９２の生成を制御するようにしている。しかし、加速度情報のみに基づいて風オブジェクト９２の生成を制御する場合には、始点としては、所定の座標（たとえば表示画面の中央）、あるいはランダムに決められる任意の座標が採用されてもよい。
【０１１８】
また、各風オブジェクト９２の射出方向も、上述の実施例と同様に、視点と各生成位置とを結ぶベクトルの単位ベクトルによって算出される。
【０１１９】
この実施例のゲーム動作の一例が図１３に示される。ゲーム装置１２のＣＰＵ２８は、ステップＳ６１で、操作データバッファ１１８から加速度データを読み出して、各軸方向の加速度値を取得する。なお、上述のように、１フレームに複数個の操作情報を含む操作データが受信されるので、各軸方向の加速度値として、平均値を算出するようにしてよい。あるいは、最大値または最小値が採用されてもよい。取得した各軸方向の加速度値は加速度履歴記憶領域１２４に記憶される。
【０１２０】
次に、ステップＳ６３で、ＣＰＵ２８は、Ｚ軸方向の加速度が所定の閾値よりも大きいか否かを判断する。つまり、コントローラ１４を振る操作が行われたか否かを判定する。たとえば、現フレームのＺ軸方向の加速度値のみに基づいて判定がなされてよい。あるいは、加速度履歴記憶領域１２４に記憶された所定数のフレーム分の加速度値を参照することによって、振り操作を精度良く判定できる。これによって手ぶれ等によって風が起きるのを防止できる。
【０１２１】
ステップＳ６３で“ＹＥＳ”であれば、ＣＰＵ２８は、ステップＳ６５で、ＸおよびＹ軸方向の加速度から振り方向を推測する。たとえば、コントローラ１４が図３に示したように基準状態（Ｘ軸方向が左右方向、Y軸方向が上下方向、Ｚ軸方向が前後方向である状態）でプレイヤに所持されている場合、Ｘ軸方向の加速度がゼロでありかつＹ軸方向に重力加速度以外の加速度が検出されるとき、振り方向は上下方向であると推定される。また、Ｘ軸方向の加速度が検出されかつＹ軸方向の加速度がゼロ（すなわち重力加速度のみ）であるとき、振り方向は左右方向であると推定される。また、コントローラ１４が図３に示したような基準状態以外の状態（例えば、Ｘ軸方向に重力加速度が検出されるように９０度傾けた状態）でプレイヤに所持されている場合は、各軸毎に現フレームの加速度値から静止している状態（重力加速度のみが検出されている状態）の時のフレームの加速度値を減算すればよい。このようにすれば、重力加速度を除いた加速度のみを検出することができ、例えばコントローラ１４を９０度傾けた状態で振る操作が行われた場合でも、重力加速度の影響を受けることなく振り方向を正確に推測することができる。
【０１２２】
ステップＳ６７では、ＣＰＵ２８は、振り方向が所定方向（この実施例ではＹ軸方向、すなわちコントローラ１４が基準状態のとき上下方向）であるか否かを判定する。このように、この実施例では、コントローラ１４が所定方向に振られた場合だけ風を発生させるようにしている。つまり、所定方向に振られたときに風を発生させることが可能であるが、他の方向に振られても風を発生させることが不可能である。したがって、コントローラ１４を擬似的に団扇等に見立てたような操作で風を発生させるゲームを実現することができる。この実施例では、振り方向がＹ軸方向であるときに風を発生させるので、平面がＸＺ面となるようにして所持された団扇を振っているような操作感をプレイヤに与えることができる。
【０１２３】
ステップＳ６７で“ＹＥＳ”であれば、ＣＰＵ２８は、ステップＳ６９で、上述の図１０のステップＳ３と同様にして、コントローラ１４の指示位置の座標をニアクリップ面に投影して、３Ｄ仮想ゲーム空間の座標に変換する。
【０１２４】
ステップＳ７１では、ＣＰＵ２８は、加速度の大きさに応じて風オブジェクト９２の生成数を設定する。たとえば、コントローラ１４が強く振られるほど、つまり、Ｚ軸の加速度が大きいほど、生成数は多くされる。なお、図１３では省略されるが、加速度の大きさに応じて初速度を算出してもよい。
【０１２５】
続いて、ステップＳ７３では、ＣＰＵ２８は、上述の図１２に示したように、指示位置を始点とし振り方向の逆方向へ一定間隔を隔てることによって、設定された数の生成位置を算出する。
【０１２６】
ステップＳ７５では、ＣＰＵ２８は、上述の実施例の図１０のステップＳ１１と同様にして、各生成位置の射出方向を算出する。そして、ＣＰＵ２８は、ステップＳ７７で、上述のステップＳ１５と同様にして風オブジェクトを生成し、ステップＳ７９で風オブジェクト移動処理を開始する。各風オブジェクト９２ごとの風オブジェクト移動処理の動作は、上述の図１１と同様である。ステップＳ７９を終了すると、処理はステップＳ８１へ進む。
【０１２７】
一方、ステップＳ６７で“ＮＯ”の場合、つまり、所定方向の振り操作が行われていない場合には、風を発生させずに処理はステップＳ８１へ進む。また、ステップＳ６３で“ＮＯ”の場合、つまり、振る操作が検出されない場合にも、処理はそのままステップＳ８１に進む。
【０１２８】
ステップＳ８１では、ＣＰＵ２８は、上述のステップＳ１９と同様にして風車制御処理を実行し、ステップＳ８３では、上述のステップＳ２１と同様にして画面表示を実行する。そして、ステップＳ８５で、ＣＰＵ２８はゲーム終了でるか否かを判断し、“ＮＯ”であればステップＳ６１に戻ってゲーム処理を繰り返し、“ＹＥＳ”であればゲーム処理を終了する。
【０１２９】
なお、上述の図１３では、ステップＳ６３で、加速度が閾値よりも大きいという条件によって振り操作の判定を行うようにしている。しかし、変形例では、重力加速度以外の加速度が検出される場合には、加速度の大きさにかかわらず、振る操作が行われたものと見なして、風オブジェクト９２を生成するようにしてもよい。
【０１３０】
また、上述の各実施例では、コントローラ１４は撮像情報演算部５６と加速度センサ６４の両方を備えている。しかし、指示位置の変化のみに基づいて振り操作を判定して風オブジェクト９２を生成する場合には、コントローラ１４には加速度センサ６４が設けられなくてもよい。反対に、加速度情報のみに基づいて振り操作を判定して風オブジェクト９２を生成する場合には、コントローラ１４には撮像情報演算部５６が設けられなくてもよい。
【０１３１】
また、上述の実施例では、撮像情報演算部５６によって指示位置の変化を算出するようにしたが、これに限らず、他の方法を用いてもよい。例えば、コントローラ１４の十字キー５４ａを操作することによって得られる上下左右の方向指示に基づいて画面上を移動するカーソル位置の変化量を算出するようにしてもよい。また、他の手法として、モニタ画面にタッチパネルを設置し、モニタを指やペン等で直接タッチすることによって指示された画面上の位置座標をタッチパネルによって検出し、その検出座標の変化量を算出するようにしてもよい。また、他の手法として、コントローラ１４に代えて、マウス、トラックパッド、トラックボール等の画面上の位置座標を指定する他のポインティングデバイスを用いて、当該マウス等から出力される出力値に基づいて画面上の指示位置の変化量を算出するようにしてもよい。
【図面の簡単な説明】
【０１３２】
【図１】この発明の一実施例のゲームシステムの一例を示す外観図である。
【図２】図１のゲーム装置の電気的構成の一例を示すブロック図である。
【図３】図１のコントローラの一例を示す図解図であり、（Ａ）は後方上側から見た斜視図であり、（Ｂ）は後方下側から見た斜視図である。
【図４】図１のコントローラを前方から見た正面図である。
【図５】図１のコントローラの電気的構成の一例を示すブロック図である。
【図６】プレイヤがコントローラを用いてゲーム操作をするときの一場面を示す図解図である。
【図７】メモリマップの一例を示す図解図である。
【図８】指示位置に基づく風オブジェクトの生成方法を説明するための図解図である。
【図９】衝突時の風オブジェクトと風車オブジェクトとの位置関係を示す図解図である。
【図１０】ゲーム装置のゲーム動作の一例を示すフロー図である。
【図１１】図１０で開始される風オブジェクト移動処理の動作の一例を示すフロー図である。
【図１２】他の実施例における加速度に基づく風オブジェクトの生成方法を説明するための図解図である。
【図１３】他の実施例におけるゲーム装置のゲーム動作の一例を示すフロー図である。
【符号の説明】
【０１３３】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …コントローラ
１６  …モニタ
１８ａ、１８ｂ…マーカ
２０  …受信ユニット
２２  …光ディスク
２８  …ＣＰＵ
３０  …メインメモリ
３４  …ＧＰＵ
５６  …撮像情報演算部
６２  …通信部
６４  …加速度センサ
９０  …風車オブジェクト
９２  …風オブジェクト
【図１】
2007296228.tif 000003
【図２】
2007296228.tif 000004
【図３】
2007296228.tif 000005
【図４】
2007296228.tif 000006
【図５】
2007296228.tif 000007
【図６】
2007296228.tif 000008
【図７】
2007296228.tif 000009
【図８】
2007296228.tif 000010
【図９】
2007296228.tif 000011
【図１０】
2007296228.tif 000012
【図１１】
2007296228.tif 000013
【図１２】
2007296228.tif 000014
【図１３】
2007296228.tif 000015