(57)【要約】【課題】押下操作の強さを推定するために好適な情報処理システム、情報処理方法、および情報処理プログラムを提供する。【解決手段】検知装置、記憶部、計算部、および推定部を備える情報処理システムである。検知装置は、ユーザによって把持され、当該検知装置の姿勢と、当該ユーザの押下操作と、を検知する。記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。計算部は、記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する。推定部は、情報処理システム計算された変化量から当該ユーザの押下操作の強さを推定する。【選択図】図１４
2008302241.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって把持される検知装置であって、当該検知装置の姿勢と、当該ユーザの押下操作と、を検知する検知装置と、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部と、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部と、
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部とを備える、情報処理システム。
【請求項２】
前記推定部は、前記計算された変化量が大きいほど、当該ユーザの押下操作の強さが大きいと推定する、請求項１に記載の情報処理システム。
【請求項３】
前記推定部は、前記検知装置により当該ユーザによる押下操作が検知されてから所定の待ち時間経過後に前記計算部により計算された変化量から、当該ユーザの押下操作の強さを推定する、請求項１または２に記載の情報処理システム。
【請求項４】
前記推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を用いて所定の処理を行う処理部を、さらに備える、請求項１乃至３のいずれか１つに記載の情報処理システム。
【請求項５】
記憶部、検知装置、計算部、および推定部を有する情報処理システムにて実行される情報処理方法であって、
前記記憶部は、前記検知装置により検知された姿勢の経過を所定時間分だけ記憶し、
ユーザによって把持される前記検知装置が、前記検知装置の姿勢と、当該ユーザによる押下操作と、を検知する検知ステップと、
前記計算部が、前記記憶部に記憶される姿勢の経過から、当該所定時間分の姿勢の変化量を計算する計算ステップと、
前記推定部が、前記計算された変化量から当該ユーザの押下操作の強さを推定する推定ステップとを備える、情報処理方法。
【請求項６】
ユーザによって把持される検知装置であって当該検知装置の姿勢と当該ユーザによる押下操作とを検知する検知装置を備える情報処理システムのコンピュータを、
前記検知装置により検知された姿勢の経過を所定時間分だけ記憶する記憶部、
前記記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する計算部、および
前記計算された変化量から当該ユーザの押下操作の強さを推定する推定部として機能させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、および情報処理プログラムに関し、より特定的には、押下操作に基づいて情報処理を行う情報処理システム、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
従来、押圧操作可能な操作子に対するアナログ的な操作入力の検出を可能とする操作装置が開示されている（例えば、特許文献１参照）。上記特許文献１で開示された操作装置は、押下操作可能な複数の操作子を備えており、各操作子には押下量をアナログ的に検出するための検出素子が設けられている。これらの検出素子として、操作子の押し込み軌道上に配置された感圧素子や抵抗体および導電部材を組み合わせたものが開示されている。
【０００３】
例えば、感圧素子の場合、操作子の押し込み量による変位に応じたアナログ値を出力して、アナログ的な操作入力が検出される。また、抵抗体および導電部材を組み合わせたものの場合、操作子の押し込み量に応じて、導電部材との接触面積に応じて変化する抵抗体の抵抗値をアナログ出力して、アナログ的な操作入力が検出される。そして、アナログ出力は、各検出素子に設けられたＡ／Ｄ変換部を介してデジタル値に変換される。このデジタル値の変化を操作子の押し込み量の変化として利用することにより、アナログ的な操作入力を実現している。なお、検出素子によるアナログ出力は、その素子自身の個体差や経年変化などの影響を受けやすいので、キャリブレーションが必要であることが記載されている。
【特許文献１】国際公開第００／６４５４８号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示された操作装置は、その構造上、比較的長時間操作子を押下し続けるような操作に対するアナログ入力の検出を前提としているため、瞬間的に操作子を押下するような操作に対して感度が鈍いという問題がある。また、アナログ入力の検出を前提とする全ての操作子に検出素子を設ける必要があるので、操作装置が高コストになるという問題がある。さらに、それぞれの操作子に設けられた検出素子のアナログ検出を正確に行うためには、検出素子毎のばらつきをキャリブレーションによって調整するという煩雑な作業が必要であった。
【０００５】
それ故に、本発明の目的は、押下操作の強さを推定するために好適な情報処理システム、情報処理方法、および情報処理プログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
第１の発明は、検知装置（７）、記憶部（３３Ｄ）、計算部（Ｓ５４、Ｓ５６を実行するＣＰＵ３０、以下、単にステップ番号のみ記載する）、および推定部（Ｓ５４、Ｓ５６）を備える情報処理システムである。検知装置は、ユーザによって把持され、当該検知装置の姿勢（７０１）と、当該ユーザの押下操作（７２）と、を検知する。記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。計算部は、記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量（ｗ）を計算する（Ｄｄ）。推定部は、情報処理システム計算された変化量から当該ユーザの押下操作の強さ（ｐｏｗｅｒ）を推定する。なお、情報処理システムは、例えば、一般的なパーソナルコンピュータの他に、据置型のゲーム装置、携帯ゲーム装置、携帯電話、ＰＤＡ等を含んでいる。据置型のゲーム装置では、ゲームコントローラとゲーム装置本体とが別体であることが一般的であるが、この場合、ゲームコントローラが検知装置の一例に相当する。一方、携帯ゲーム装置、携帯電話、およびＰＤＡ等の携帯型デバイスでは、検知装置が本体と一体型であることが一般的であるが、この場合、検知装置と本体とが一体となった装置が情報処理システムの一例に相当する。
【０００８】
第２の発明は、上記第１の発明において、推定部は、計算された変化量が大きいほど、当該ユーザの押下操作の強さが大きいと推定する。
【０００９】
第３の発明は、上記第１または第２の発明において、推定部は、検知装置により当該ユーザによる押下操作が検知されてから所定の待ち時間経過後に計算部により計算された変化量から、当該ユーザの押下操作の強さを推定する。
【００１０】
第４の発明は、上記第１〜第３の発明の何れか１つにおいて、推定部により推定された当該ユーザの押下操作の強さを指定する押下操作情報を用いて所定の処理を行う処理部を、さらに備える。
【００１１】
第５の発明は、検知装置と、記憶部、計算部、および推定部を有する情報処理システムにて実行される情報処理方法である。記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。情報処理方法は、検知ステップ、計算ステップ、および推定ステップを備える。検知ステップは、ユーザによって把持される検知装置が、検知装置の姿勢と、当該ユーザによる押下操作と、を検知する。計算ステップは、計算部が、記憶部に記憶される姿勢の経過から、当該所定時間分の姿勢の変化量を計算する。推定ステップは、推定部が、計算された変化量から当該ユーザの押下操作の強さを推定する。
【００１２】
第６の発明は、ユーザによって把持される検知装置であって当該検知装置の姿勢と当該ユーザによる押下操作とを検知する検知装置を備える情報処理システムのコンピュータを、記憶部、計算部、および推定部として機能させる情報処理プログラムである。記憶部は、検知装置により検知された姿勢の経過を所定時間分だけ記憶する。計算部は、記憶部に記憶される姿勢の経過から当該所定時間分の姿勢の変化量を計算する。推定部は、計算された変化量から当該ユーザの押下操作の強さを推定する。
【発明の効果】
【００１３】
本発明によれば、押下操作の強さを推定するために好適な情報処理システム、情報処理方法、および情報処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１４】
図１を参照して、本発明の一実施形態に係る情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００１５】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタなどの画像などのゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００１６】
また、ゲーム装置本体５は、通信ユニット６を内蔵する。通信ユニット６は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とは無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置本体５の前部主面には、当該ゲーム装置本体５の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトスイッチ等が設けられている。
【００１７】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ３８が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置本体５は、フラッシュメモリ３８に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００１８】
コントローラ７は、通信ユニット６を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報などの送信データを無線送信する。コントローラ７は、主にモニタ２の表示画面に表示されるゲーム空間に登場するプレイヤオブジェクト等を操作したりするための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の通信ユニット６から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００１９】
図２において、ゲーム装置本体５は、各種プログラムを実行する例えばＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５などが接続される。また、メモリコントローラ３１には、所定のバスを介して、通信ユニット６、ビデオＩ／Ｆ（インターフェース）３７、フラッシュメモリ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれのインターフェースにモニタ２、外部メモリカード５、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【００２０】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【００２１】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等がＣＰＵ３０によって実行される。
【００２２】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００２３】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。上述したように通信ユニット６は、コントローラ７からの送信データを受信し、当該送信データをＣＰＵ３０へ出力する。また、通信ユニット６は、ＣＰＵ３０から出力された送信データをコントローラ７の通信部７５へ送信する。ビデオＩ／Ｆ３７には、モニタ２が接続される。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置本体５のバスやオーディオＩ／Ｆ３９に出力する。
【００２４】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００２５】
図３および図４において、コントローラ７は、ハウジング７１と、当該ハウジング７１の表面に設けられた複数個の操作ボタンで構成される操作部７２とを備える。本実施例のハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【００２６】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００２７】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００２８】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００２９】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００３０】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から通信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００３１】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００３２】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００３３】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７０の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００３４】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するｘｙｚ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をｚ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をｚ軸正方向とする。また、コントローラ７の上下方向をｙ軸とし、ハウジング７１の下面（操作ボタン７２ｉが設けられた面）方向をｙ軸正方向とする。さらに、コントローラ７の左右方向をｘ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をｘ軸正方向とする。
【００３５】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上ハウジング（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下ハウジング（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００３６】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。マイコン７５１は、本願発明のボタンデータ発生手段の一例として、操作ボタン７２ａ等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触／切断をマイコン７５１が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン７５１が検出し、操作ボタンの種類に応じた信号を発生させている。
【００３７】
また、コントローラ７は、図示しない無線モジュール７５３（図７参照）およびアンテナ７５４によって、ワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子７０３が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置本体５等が判定することができる。
【００３８】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００３９】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体５から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００４０】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００４１】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００４２】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができる。
【００４３】
コントローラ７は、３軸（ｘ、ｙ、ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であってもよい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００４４】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００４５】
しかしながら、加速度センサ７０１から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度（重力加速度）が検知されると、加速度センサ７０１からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象（コントローラ７）の傾きをそれぞれ推測することができる。このように、加速度センサ７０１をマイコン７５１（または他のプロセッサ）と組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を決定することができる。同様に、加速度センサ７０１を備えるコントローラ７が、例えばユーザの手で動的に加速されてそれぞれ動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置をそれぞれ算出または推測することができる。他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは通信部７５に出力される。
【００４６】
他の実施形態の例では、コントローラ７の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【００４７】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【００４８】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００４９】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの加速度信号（ｘ、ｙ、およびｚ軸方向加速度データ；以下、単に加速度データと記載する）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、加速度データ、処理結果データ）を通信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から通信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は例えば５ｍｓである。マイコン７５１は、通信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からの加速度データ、および撮像情報演算部７４からの処理結果データが無線モジュール７５３で電波信号に変調されてコントローラ７から送信される。そして、ゲーム装置本体５の通信ユニット６でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体５のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００５０】
次に、図８〜図１２を参照して、ゲーム装置本体５が行う具体的な処理を説明する前に、本ゲーム装置本体５で行う処理の概要について説明する。図８Ａは、プレイヤがコントローラ７を右手で把持した状態をコントローラ７の前面側から見た一例である。図８Ｂは、プレイヤがコントローラ７を右手で把持した状態をコントローラ７の左側面側から見た一例である。図９は、親指で操作ボタン７２ｄを強く押し下げたとき、コントローラ７が揺動する様子を示す図である。図１０は、マーカ８Ｌおよび８Ｒと撮像情報演算部７４との視野角を説明するための図である。図１１および図１２は、プレイヤがコントローラ７を操作した押下強さに応じて、スピーカ２ａから再生される音量の大きさおよびモニタ２の表示画面に表示されるオブジェクトＯＢＪの一例を示す図である。
【００５１】
図８Ａおよび図８Ｂに示すように、プレイヤがコントローラ７を操作するとき、例えば一方の手（例えば右手）でコントローラ７を把持する。このとき、プレイヤの親指をコントローラ７の上面（例えば、操作ボタン７２ｄ付近）に添え、プレイヤの人差し指をコントローラ７下面の凹部（例えば、操作ボタン７２ｉ付近）に添えるようにして、コントローラ７を操作する。なお、このようなコントローラ７に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。このように、コントローラ７は、プレイヤが片手で把持した状態で操作部７２を押下する操作を容易に行うことができる。
【００５２】
図８Ｂに示した親指で操作ボタン７２ｄを押したとき、コントローラ７は手で把持されているだけなので、図９に示すようにコントローラ７が上下に揺れる。なお、図９においては、コントローラ７を側面側から示しており、破線で押下前のコントローラ７の状態を示し、実線で押下によって揺動したコントローラ７の状態を示している。この上下方向の揺動は、プレイヤが操作ボタン７２ｄを押下する強さが強いほど、その揺動角度θや揺動速度が速くなる傾向がある。このようなコントローラ７の上下の揺れは、ハウジング７１全体が下へ揺動する動きに応じてその先端部が下に揺動するという動きになるので、下方向成分に着目すれば加速度センサ７０１が検出するｙ軸成分の加速度変化として現れる。一方、動きセンサがジャイロセンサで構成されている場合には、その先端部の揺動が角速度（揺動角度θ）として現れる。そして、コントローラ７の揺れの大きさは、操作ボタン７２ｄを押したときの強さに応じて大きくなるので、加速度センサ７０１やジャイロセンサの値にアナログ的に現れることとなる。
【００５３】
例えば、操作ボタン７２が押下されたタイミングまでにメモリに記録されている動きセンサ（加速度センサ７０１やジャイロセンサ）の値の変化、そのタイミング時点の動きセンサの値、そのタイミング後にメモリに記録される動きセンサの値の変化、そのタイミング前後の値の変化などを算出することによって、押下された強さを推定することができる。
【００５４】
本実施例では片手でコントローラ７を把持した場合について説明するが、本コントローラ７を横持ちにして両手で把持した場合でも、片手の場合と同じように操作ボタン７２を押す強さによってハウジング７１が揺れるので、その強さに応じた値が加速度センサ７０１やジャイロセンサから出力される。なお、コントローラ７を机の上に置いて操作したような場合には、手で把持した場合に比べてその揺れが小さくなるが、操作ボタン７２が押される際の衝撃がハウジング７１にも伝わるため、このような使用態様であってもアナログ的な値が現れる。また、図９では、操作ボタン７２の押下時にハウジング７１が下がることによる動きセンサの値を例に説明したが、押下のタイミング時またはその前後の動きセンサの値を利用することで、例えばハウジング７１が下がった後には上向きに戻るような動き、さらには、操作ボタン７２の押下時の力が大きいほど、ハウジング７１が押下げ方向に例えば上下にぶれるため、このような震動成分による値の変化によって、押下げ時の大きさをアナログ的に検出することができる。
【００５５】
また、プレイヤは、コントローラ７の前面（撮像情報演算部７４が撮像する光の入射口側）がモニタ２の表示画面と対向するようにコントローラ７を把持することによって、撮像情報演算部７４からの情報を用いた操作も可能となる。例えば、上述したように、プレイヤの親指をコントローラ７の上面に添え、プレイヤの人差し指をコントローラ７下面の凹部に添えたとき、コントローラ７の前面に設けられている撮像情報演算部７４の光入射口がプレイヤの前方方向に露出する。一方、モニタ２の表示画面近傍には、２つのマーカ８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力し、撮像情報演算部７４の撮像対象となる。マーカ８Ｌおよび８Ｒは、モニタ２に一体的に設けられても良いし、モニタ２とは別体で設けられてモニタ２の近く（モニタ２の上や下など）に載置されて使用されるものであってもよい。
【００５６】
このように、プレイヤがコントローラ７を片手で把持したとき、当該コントローラ７の前面に設けられている撮像情報演算部７４の光入射口が露出するため、上述した２つのマーカ８Ｌおよび８Ｒからの赤外光を容易に当該光入射口から取り入れることができる。つまり、プレイヤは、撮像情報演算部７４の機能を阻害することなくコントローラ７を片手で把持することができる。ここで、コントローラ７が縦長形状であり、当該長手方向の端部前面に撮像情報演算部７４の光入射口が配設されているため、撮像情報演算部７４を利用してプレイヤがコントローラ７で指し示すような操作に好適である。
【００５７】
ここで、図１０に示すように、マーカ８Ｌおよび８Ｒは、それぞれ視野角θ１を有している。また、撮像素子７４３は、視野角θ２を有している。例えば、マーカ８Ｌおよび８Ｒの視野角θ１は共に３４°（半値角）であり、撮像素子７４３の視野角θ２は４１°である。そして、撮像素子７４３の視野角θ２の中にマーカ８Ｌおよび８Ｒが共に存在し、マーカ８Ｌの視野角θ１の中でかつマーカ８Ｒの視野角θ１の中に撮像素子７４３が存在するとき、ゲーム装置本体５は、２つのマーカ８Ｌおよび８Ｒによる高輝度点に関する位置データを用いてコントローラ７の位置を算出する。
【００５８】
プレイヤがその前面がモニタ２に向くようにコントローラ７を把持することによって、撮像情報演算部７４には２つのマーカ８Ｌおよび８Ｒが出力した赤外光が入射する。そして、赤外線フィルタ７４１およびレンズ７４２を介して、入射した赤外光を撮像素子７４３が撮像し、当該撮像画像を画像処理回路７４４が処理する。ここで、撮像情報演算部７４では、マーカ８Ｌおよび８Ｒから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ８Ｌおよび８Ｒの位置情報（対象画像の位置）や面積、直径、幅等のサイズ情報を取得する。具体的には、画像処理回路７４４は、撮像素子７４３が撮像した画像データを解析して、まず面積情報からマーカ８Ｌおよび８Ｒからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ８Ｌおよび８Ｒそれぞれの位置として判別する。そして、撮像情報演算部７４は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点（例えば、撮像画像の中央や左上隅）を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子７４３が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置本体５へ送信することによって、ゲーム装置本体５では、基準からの上記位置情報の差に基づいて、マーカ８Ｌおよび８Ｒに対する撮像情報演算部７４、すなわちコントローラ７の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ７が動かされることによって、通信部７５から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、３次元空間に対してコントローラ７の移動方向に沿った方向入力や座標入力を行うことができる。なお、後述する処理動作例では、撮像情報演算部７４が撮像画像におけるマーカ８Ｌおよび８Ｒの対象画像それぞれの重心位置の座標を少なくとも取得し、上記処理結果データとして出力する例を用いる。
【００５９】
このように、コントローラ７の撮像情報演算部７４によっても、固定的に設置されたマーカ（実施例では、２つのマーカ８Ｌおよび８Ｒからの赤外光）を撮像することによって、ゲーム装置本体５における処理において、コントローラ７から出力されるデータを処理してコントローラ７の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカ８Ｌおよび８Ｒは、モニタ２の表示画面近傍に設置されているため、マーカ８Ｌおよび８Ｒに対する位置をモニタ２の表示画面に対するコントローラ７の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ７の動き、姿勢、位置等による処理結果データは、モニタ２の表示画面に直接作用する操作入力として用いることができ、例えば、表示画面に対してコントローラ７で指し示した位置を算出することができる。したがって、プレイヤがコントローラ７を把持した手をモニタ２の表示画面に対して動かすことによって、プレイヤの手の運動が表示画面に直接的に作用する操作入力を備えることができ、コントローラ７が表示画面に対して座標指定するためのデータを出力可能なポインティングデバイスとして機能する。
【００６０】
本発明を適用して実現する処理の一例として、図８Ｂに示すように操作部７２（例えば、操作ボタン７２ｄ）を押下する強さ（以下、押下強さと記載する）に応じて、再生する音量を変化させたり、表示するオブジェクトの大きさや動作を変化させたりする処理がある。
【００６１】
例えば、プレイヤが操作ボタン７２ｄを押下した場合、図１１に示すように、スピーカ２ａからその押下強さに応じた音量で音声（効果音）が再生される。また、プレイヤが操作ボタン７２ｄを押下した押下強さに応じたサイズのオブジェクトＯＢＪが、モニタ２の表示画面に表示される。
【００６２】
一方、プレイヤが図１１の状態よりさらに強く操作ボタン７２ｄを押下した場合、図１２に示すように、その押下強さに応じてスピーカ２ａから再生される効果音の音量が大きくなる。また、プレイヤが操作ボタン７２ｄを押下した押下強さに応じて、表示されるオブジェクトＯＢＪのサイズも拡大されてモニタ２の表示画面に表示される。
【００６３】
次に、ゲームシステム１において行われる処理の詳細を説明する。まず、図１３を参照して、処理において用いられる主なデータについて説明する。なお、図１３は、押下強さに応じて音量を変化させる処理を行う場合に、ゲーム装置本体５のメインメモリ３３に記憶されるゲームプログラムおよびデータの一例を示す図である。
【００６４】
図１３に示すように、メインメモリ３３は、プログラム記憶領域３３Ｐおよびデータ記憶領域３３Ｄを有している。そして、プログラム記憶領域３３Ｐには、ゲームプログラムＧＰ等が記憶され、データ記憶領域３３Ｄには、操作情報Ｄａ、前回加速度データＤｂ、格納位置データＤｃ、差分データバッファＤｄ、押下強さデータＤｅ、計測中フラグＤｆ、サンプリング範囲データＤｇ、および音量データＤｈ等が記憶される。なお、メインメモリ３３には、図１３に示すデータの他、処理に応じてゲームに登場するオブジェクトやキャラクタに関する他のデータ等、ゲーム処理に必要なデータが記憶される。
【００６５】
ゲームプログラムＧＰは、ＣＰＵ３０が処理に必要なプログラムを光ディスク４から読み出して適宜記憶するものであり、処理全体（後述するステップ５１〜ステップ８７）を定義するプログラムである。このゲームプログラムＧＰの実行開始によってゲーム処理が開始される。
【００６６】
操作情報Ｄａは、コントローラ７から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Ｄａには、上述の処理結果データに相当する第１座標データＤａ１および第２座標データＤａ２が含まれる。第１座標データＤａ１は、撮像素子７４３が撮像した撮像画像に対して、２つのマーカ８Ｌおよび８Ｒのうちの一方の画像の位置（撮像画像内における位置）を表す座標のデータである。第２座標データＤａ２は、他方のマーカの画像の位置（撮像画像内における位置）を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるＸＹ座標系によって表される。なお、本発明は、第１座標データＤａ１および第２座標データＤａ２が取得できないデバイスでも実現可能であり、後述するフローチャートではこれらのデータを利用しない態様を示す。
【００６７】
また、操作情報Ｄａには、撮像画像から得られる処理結果データの一例の座標データ（第１座標データＤａ１および第２座標データＤａ２）の他、操作部７２から得られるキーデータＤａ３および加速度センサ７０１から得られる加速度データＤａ４等が含まれる。加速度データＤａには、加速度センサ７０１がｘ、ｙ、およびｚ軸の３軸成分に分けてそれぞれ検出したｘ軸方向加速度データａｘ、ｙ軸方向加速度データａｙ、およびｚ軸方向加速度データａｚが含まれる。なお、ゲーム装置本体５に内蔵される通信ユニット６は、コントローラ７から所定間隔（例えば５ｍｓ毎）に送信される操作情報Ｄａを受信し、通信ユニット６に備える図示しないバッファに蓄える。その後、ゲーム処理間隔である１フレーム毎（１／６０秒）に読み出されてメインメモリ３３の操作情報Ｄａが更新される。なお、本実施例では、加速度データＤａ４は、ゲーム処理間隔である１フレーム毎より短い周期（例えば、約１／２０秒）で読み出されて更新される。そして、更新された加速度データＤａ４を用いた差分値がメインメモリ３３（差分データバッファＤｄ）に記憶されていく。
【００６８】
前回加速度データＤｂは、上記差分値を算出する周期における前回に得た加速度データ（ｘ軸方向加速度データｂｘ、ｙ軸方向加速度データｂｙ、ｚ軸方向加速度データｂｚ）である。格納位置データＤｃは、差分値ｗを差分データバッファＤｄに格納する位置を示す格納位置ｂｆ＿ｉｄを示すデータである。差分データバッファＤｄは、加速度データＤａ４および前回加速度データＤｂから得られる加速度ベクトルの大きさの差分値ｗを、指定された格納位置ｂｆ＿ｉｄに順次格納していく記憶領域である。なお、差分データバッファＤｄに格納される差分値ｗのバッファ数はｂｆ＿ＭＡＸであり、格納位置ｂｆ＿ｉｄが０〜ｂｆ＿ＭＡＸ−１にそれぞれ差分値ｗ０〜ｗ（ｂｆ＿ＭＡＸ−１）が格納される。また、バッファ数ｂｆ＿ＭＡＸは、後述するボタン情報読み込み処理において参照するデータ数より多い数（例えば、後述する定数Ｍより多い数）に設定することが好ましい。押下強さデータＤｅは、プレイヤが操作部７２を押下した押下強さｐｏｗｅｒを示すデータである。計測中フラグＤｆは、押下強さを計測中であるか否かを示す計測中フラグｆｇを示すデータである。サンプリング範囲データＤｇは、差分データバッファＤｄに格納された差分値ｗから、押下強さｐｏｗｅｒを算出するために利用するデータ範囲（格納位置ｉｄ＿ｎｏｗ〜ｉｄ＿ｅｎｄ）を示すデータである。音量データＤｈは、押下強さｐｏｗｅｒから算出された効果音の音量を示すデータである。
【００６９】
次に、図１４〜図１７を参照して、ゲーム装置本体５において行われる処理の詳細を説明する。なお、図１４は、ゲーム装置本体５において実行される処理を示すフローチャートである。図１５は、図１４のステップ５４における加速度情報保存処理の詳細な動作を示すサブルーチンである。図１６は、図１４のステップ５６におけるボタン情報読込処理の詳細な動作を示すサブルーチンである。図１７は、図１４のステップ５７におけるゲームメイン処理の詳細な動作を示すサブルーチンである。なお、図１４〜図１７に示すフローチャートにおいては、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図１４〜図１７では、ＣＰＵ３０が実行する各ステップを「Ｓ」と略称する。
【００７０】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該プログラムの実行が開始される。図１４に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【００７１】
図１４において、ＣＰＵ３０は、ゲーム処理の初期設定を行い（ステップ５１〜ステップ５３）、処理を次のステップに進める。
【００７２】
例えば、ＣＰＵ３０は、データ記憶領域３３Ｄに格納されている加速度情報を初期化する（ステップ５１）。ここで、加速度情報は、前回加速度データＤｂ、格納位置データＤｃ、差分データバッファＤｄ、およびサンプリング範囲データＤｇ等に相当する。具体的には、ＣＰＵ３０は、前回加速度データＤｂに格納されているｘ軸方向加速度データｂｘ、ｙ軸方向加速度データｂｙ、およびｚ軸方向加速度データｂｚを全て０、すなわち（ｂｘ，ｂｙ，ｂｚ）＝（０，０，０）とする。また、ＣＰＵ３０は、格納位置データＤｃとして記憶されている格納位置をｂｆ＿ｉｄ＝０に初期化する。また、ＣＰＵ３０は、差分データバッファＤｄに格納されている差分値ｗを全て０に初期化する。さらに、ＣＰＵ３０は、サンプリング範囲データＤｇに格納されている格納位置をｉｄ＿ｎｏｗ＝０、ｉｄ＿ｅｎｄ＝０に初期化する。
【００７３】
また、ＣＰＵ３０は、データ記憶領域３３Ｄに格納されているボタン情報を初期化する（ステップ５２）。ここで、ボタン情報は、押下強さデータＤｅおよび計測中フラグＤｆ等に相当する。例えば、ＣＰＵ３０は、押下強さデータＤｅに格納されている押下強さをｐｏｗｅｒ＝０に初期化する。また、ＣＰＵ３０は、計測中フラグＤｆに格納されている計測中フラグをｆｇ＝０に初期化する。
【００７４】
さらに、ＣＰＵ３０は、データ記憶領域３３Ｄに格納されているゲーム情報を初期化する（ステップ５３）。ここで、ゲーム情報は、音量データＤｈ等に相当し、他にゲーム処理に使用する他のパラメータを含んでいる。例えば、ＣＰＵ３０は、音量データＤｈが示す効果音の音量を所定の最小ボリューム値に初期化する。
【００７５】
次に、ＣＰＵ３０は、ゲーム終了（ステップ５５およびステップ５８でＹｅｓ）まで、ステップ５４の処理とステップ５６およびステップ５７の処理をそれぞれ並行にスレッド処理して繰り返す。例えば、ステップ５４を繰り返す処理は、ステップ５６およびステップ５７を繰り返す処理より約３倍の速度で繰り返される。
【００７６】
ステップ５４において、ＣＰＵ３０は、加速度情報保存処理を行う。そして、ＣＰＵ３０は、ゲームを継続する場合（ステップ５５でＮｏ）、ステップ５４を繰り返して行う。以下、図１５を参照して、ステップ５４で行う加速度情報保存処理について説明する。
【００７７】
図１５において、ＣＰＵ３０は、加速度データＤａ４を読み込み（ステップ６１）、処理を次のステップに進める。具体的には、ＣＰＵ３０は、データ記憶領域３３Ｄの加速度データＤａ４として格納されているｘ軸方向加速度データａｘ、ｙ軸方向加速度データａｙ、およびｚ軸方向加速度データａｚを読み込む。
【００７８】
次に、ＣＰＵ３０は、前回得られた加速度データとの差分を算出して（ステップ６２）、処理を次のステップに進める。具体的には、ＣＰＵ３０は、データ記憶領域３３Ｄの前回加速度データＤｂとして格納されているｘ軸方向加速度データｂｘ、ｙ軸方向加速度データｂｙ、およびｚ軸方向加速度データｂｚを読み出す。そして、ＣＰＵ３０は、上記ステップ６１で取得した加速度データａｘ、ａｙ、およびａｚを用いて、ｘ軸方向加速度データの差分ｖｘ＝ａｘ−ｂｘ、ｙ軸方向加速度データの差分ｖｙ＝ａｙ−ｂｙ、およびｚ軸方向加速度データの差分ｖｚ＝ａｚ−ｂｚを算出する。
【００７９】
次に、ＣＰＵ３０は、上記ステップ６１で取得した加速度データａｘ、ａｙ、およびａｚを、前回加速度データＤｂとして格納して（ステップ６３）、処理を次のステップに進める。具体的には、ＣＰＵ３０は、ｘ軸方向加速度データａｘをｘ軸方向加速度データｂｘとし、ｙ軸方向加速度データａｙをｙ軸方向加速度データｂｙとし、ｚ軸方向加速度データａｚをｚ軸方向加速度データｂｚとして、前回加速度データＤｂを更新する。
【００８０】
次に、ＣＰＵ３０は、上記ステップ６２で算出した差分の大きさ（差分値ｗ）を求めて（ステップ６４）、処理を次のステップに進める。例えば、ＣＰＵ３０は、差分値ｗを、
【００８１】
【数１】
2008302241.tif 000003
で算出する。
【００８２】
次に、ＣＰＵ３０は、上記ステップ６４で求めた差分値ｗを差分データバッファＤｄに格納し（ステップ６５）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在の格納位置データＤｃが示す格納位置ｂｆ＿ｉｄの位置に差分値ｗを格納する。
【００８３】
次に、ＣＰＵ３０は、格納位置データＤｃが示す格納位置ｂｆ＿ｉｄを更新し（ステップ６６）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ３０は、新たな格納位置ｂｆ＿ｉｄを、
ｂｆ＿ｉｄ←（ｂｆ＿ｉｄ＋１）％ｂｆ＿ＭＡＸで求める。ここで、Ａ％Ｂは、ＡをＢで割った余りを示し、ｂｆ＿ＭＡＸは差分データバッファＤｄのバッファ数である。
【００８４】
図１４に戻り、ステップ５６およびステップ５７において、ＣＰＵ３０は、それぞれボタン情報処理およびゲームメイン処理を行う。そして、ＣＰＵ３０は、ゲームを継続する場合（ステップ５８でＮｏ）、ステップ５６およびステップ５７を繰り返して行う。以下、図１６および図１７を参照して、ステップ５６およびステップ５７で行うボタン情報処理およびゲームメイン処理について説明する。
【００８５】
図１６において、ＣＰＵ３０は、キーデータＤａ３を参照して、押下強さの計測対象とする操作部７２（例えば、操作ボタン７２ｄ）がＯＦＦからＯＮに変化したか否か、すなわち、当該操作部７２を押下していない状態から押下している状態に変化した瞬間か否かを判断する（ステップ７１）。そして、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化した場合、次のステップ７２に処理を進める。一方、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化していない場合、次のステップ７４に処理を進める。
【００８６】
ステップ７２において、ＣＰＵ３０は、押下強さ計測開始処理を行う。例えば、ＣＰＵ３０は、計測中フラグｆｇ＝１に設定して計測中フラグＤｆを更新し、押下強さｐｏｗｅｒ＝０に設定して押下強さデータＤｅを更新する。そして、ＣＰＵ３０は、差分データバッファＤｄに記述された差分値ｗから採用するサンプリング範囲を決定して（ステップ７３）、処理を次のステップ７５に進める。例えば、ＣＰＵ３０は、格納位置ｂｆ＿ｉｄがｉｄ＿ｎｏｗからｉｄ＿ｅｎｄまでに記述されている差分値ｗをサンプリングする。例えば、格納位置ｉｄ＿ｎｏｗおよびｉｄ＿ｅｎｄは、それぞれ
ｂｆ＿ｎｏｗ←（ｂｆ＿ｉｄ−Ｍ）％ｂｆ＿ＭＡＸ
ｂｆ＿ｅｎｄ←（ｂｆ＿ｉｄ＋Ｎ）％ｂｆ＿ＭＡＸで求められる。なお、ＭおよびＮは定数であり、ｂｆ＿ｉｄは格納位置データＤｃに現在格納されている格納位置ｂｆ＿ｉｄの値である。ここで、後述の説明から明らかになるが、ＣＰＵ３０は、現在の格納位置ｂｆ＿ｉｄを基準にＭ回前に遡って取得された時点から格納位置ｂｆ＿ｉｄを基準にＮ回後に取得される時点までの差分値ｗを、押下強さの計測に採用する。つまり、計測対象の操作部７２が押下された瞬間の前後に得られた差分値ｗを採用しており、押下された前後にコントローラ７の本体に生じた加速度データを利用していることになる。
【００８７】
一方、ステップ７４において、ＣＰＵ３０は、計測中フラグＤｆを参照して押下強さを計測中か否かを判断する。そして、ＣＰＵ３０は、押下強さ計測中（ｆｇ＝１）の場合、処理を次のステップ７５に進める。一方、ＣＰＵ３０は、押下強さ計測中でない（ｆｇ＝０）場合、当該サブルーチンによる処理を終了する。
【００８８】
ステップ７５において、ＣＰＵ３０は、上記ステップ７３で決定した格納位置ｂｆ＿ｎｏｗが格納位置データＤｃに現在格納されている格納位置ｂｆ＿ｉｄと同じか否かを判断する。そして、ＣＰＵ３０は、ｂｆ＿ｎｏｗ≠ｂｆ＿ｉｄの場合、処理を次のステップ７６に進める。一方、ＣＰＵ３０は、ｂｆ＿ｎｏｗ＝ｂｆ＿ｉｄの場合、当該サブルーチンによる処理を終了する。これは、ｂｆ＿ｎｏｗ＝ｂｆ＿ｉｄのときは、上記ステップ５４の加速度情報保存処理において次の差分値ｗを格納する位置が格納位置ｂｆ＿ｎｏｗとなるためであり、このような格納位置に記述された差分値ｗを採用することを避けるためである。
【００８９】
ステップ７６において、ＣＰＵ３０は、押下強さデータＤｅに格納された押下強さｐｏｗｅｒおよび格納位置ｉｄ＿ｎｏｗに格納された差分値ｗを参照し、押下強さｐｏｗｅｒに差分値ｗを累積して新たな押下強さｐｏｗｅｒを算出して、押下強さデータＤｅを更新する。例えば、ＣＰＵ３０は、新たな押下強さｐｏｗｅｒを
ｐｏｗｅｒ←ｐｏｗｅｒ＋ｗで算出する。そして、ＣＰＵ３０は、格納位置ｉｄ＿ｎｏｗを更新して（ステップ７７）、処理を次のステップに進める。例えば、ＣＰＵ３０は、新たな格納位置ｉｄ＿ｎｏｗを、
ｉｄ＿ｎｏｗ←（ｉｄ＿ｎｏｗ＋１）％ｂｆ＿ＭＡＸで算出する。
【００９０】
次に、ＣＰＵ３０は、上記ステップ７７で更新した格納位置ｉｄ＿ｎｏｗが上記ステップ７３で決定した格納位置ｂｆ＿ｅｎｄと同じか否かを判断する。そして、ＣＰＵ３０は、ｂｆ＿ｎｏｗ＝ｂｆ＿ｅｎｄの場合、サンプリング範囲の差分値ｗを全て累積したと判断して、処理を次のステップ７９に進める。一方、ＣＰＵ３０は、ｂｆ＿ｎｏｗ≠ｂｆ＿ｅｎｄの場合、上記ステップ７５に戻って処理を繰り返す。
【００９１】
ステップ７９において、ＣＰＵ３０は、押下強さ処理計測終了処理を行って、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ３０は、計測中フラグｆｇ＝０に設定して計測中フラグＤｆを更新する。
【００９２】
図１７において、ＣＰＵ３０は、キーデータＤａ３を参照して、押下強さの計測対象とする操作部７２がＯＦＦからＯＮに変化したか否か、すなわち、当該操作部７２を押下していない状態から押下している状態に変化した瞬間か否かを判断する（ステップ８１）。そして、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化した場合、次のステップ８２に処理を進める。一方、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化していない場合、次のステップ８４に処理を進める。
【００９３】
ステップ８２において、ＣＰＵ３０は、押下強さの計測対象とする操作部７２の押下に応じて発する効果音の再生を開始する。そして、ＣＰＵ３０は、押下強さｐｏｗｅｒに応じて効果音の音量を設定して音量データＤｈを更新し、当該音量に応じてスピーカ２ａから効果音を発生させ（ステップ８３）、次のステップ８６に処理を進める。例えば、ＣＰＵ３０は、現在設定されている押下強さｐｏｗｅｒに所定の定数を乗じることによって、効果音の音量を設定する。
【００９４】
一方、ステップ８４において、ＣＰＵ３０は、計測中フラグＤｆを参照して押下強さを計測中か否かを判断する。次に、ＣＰＵ３０は、押下強さ計測中（ｆｇ＝１）の場合、効果音を再生中か否かを判断する（ステップ８５）。そして、ＣＰＵ３０は、押下強さ計測中で効果音を再生中である場合（ステップ８４およびステップ８５が共にＹｅｓ）、上記ステップ８３に処理を進める。つまり、効果音を再生開始した後であっても、その後に累積される新たな押下強さｐｏｗｅｒに応じて、発せられる効果音の音量が変化することになる。一方、ＣＰＵ３０は、押下強さ計測中であるが効果音の再生中でない場合（ステップ８４でＹｅｓ、ステップ８５でＮｏ）、当該サブルーチンによる処理を終了する。さらに、ＣＰＵ３０は、押下強さ計測中でない場合（ステップ８４でＮｏ）、次のステップ８６に処理を進める。
【００９５】
ステップ８６において、ＣＰＵ３０は、効果音の再生を終了するタイミングか否かを判断する。例えば、効果音の再生を終了するタイミングは、押下強さの計測対象とする操作部７２がＯＮからＯＦＦに変化した時点や、当該時点から所定時間経過した時点や、操作部７２がＯＦＦからＯＮに変化した時点から所定時間経過した時点等に設定される。そして、ＣＰＵ３０は、効果音の再生を終了するタイミングでない場合（効果音が再生されていない場合を含む）、当該サブルーチンによる処理を終了する。一方、ＣＰＵ３０は、効果音の再生を終了するタイミングが到来した場合、効果音の再生を終了して（ステップ８７）、当該サブルーチンによる処理を終了する。
【００９６】
このように、上述したフローチャートの動作によれば、操作ボタン毎に検出素子を設けることなく、操作ボタンを押す強さをゲームに反映させることができる。例えば、コントローラ７に設けられた加速度センサからの加速度データを用いて、操作ボタンに加えられた強さをアナログ的に算出して、当該算出結果に応じた音量で効果音を発生させることができる。
【００９７】
また、上述したフローチャートの動作によれば、操作ボタンがＯＦＦからＯＮに変化する瞬間をトリガーとして、その前後に生じた加速度データの差分を累積して押下強さを算出している。このように加速度データの差分を累積することによって、加速度センサ７０１が常に検出している重力加速度の影響を除外できることに加え、操作ボタンの押下に使用された操作エネルギーと同価な押下強さの算出が可能となり、瞬間的に操作ボタンを押下するような操作に対しても高感度となる。
【００９８】
また、上記トリガーの前に生じていた加速度データの差分を用いることによって、プレイヤが操作ボタンを押し込むストローク中の押下強さ（押下前の強さ）を算出することができる。また、上記トリガーの後に生じる加速度データの差分を用いることによって、プレイヤが操作ボタンを押し込むことによってコントローラ７本体に与える衝撃力（押下後の強さ）を算出することができる。これらの押下前の押下強さや押下後の押下強さ等の一方を算出する必要がない場合、一方のみにサンプリング期間を設定して押下強さを算出してもかまわない。例えば、押下強さの計測対象とする操作部が上記トリガー状態になるまでの押下ストロークが短い（例えば、接触した瞬間にＯＦＦからＯＮに変化するタッチパネル等）場合、押下前の強さを算出しなくてもかまわない。この場合、上記トリガーから所定時間経過するまでに得られる加速度データの差分を累積して押下強さを算出することになる。具体的には、一方のみをサンプリング期間に設定する場合、上記定数Ｍを０に設定することによって押下後の所定期間のみをサンプリング期間とできるし、上記定数Ｎを０に設定することによって押下前から押下までの所定期間のみをサンプリング期間にすることができる。
【００９９】
また、ゲーム処理に要求される押下強さの精度が低い場合、設定されたサンプリング期間全体において生じた加速度データの差分の累積を用いなくてもかまわない。例えば、上記トリガー時点および他の時点で生じた加速度データの差分を用いて押下強さを算出してもかまわない。このような算出は、上記定数ＭおよびＮの設定値を調整することによって行うことができる。さらに、上記トリガー時点で生じた加速度データの絶対値を用いて押下強さを算出してもかまわない。このように、加速度データの差分や差分の累積を行わなくても、２時点で生じた加速度データの差分やある瞬間に生じた加速度データの絶対値を用いることによって、押下強さを算出することも可能である。
【０１００】
また、上述した実施例では、ある特定の操作部７２（操作ボタン７２ｄ）を押下強さの計測対象としたが、本発明ではコントローラ７の本体の動きに応じた動きデータを発生させる加速度センサ７０１からの加速度データを用いているために、他の操作部７２を押下強さの計測対象にすることも可能である。さらに、複数の操作部７２を押下強さの計測対象にすることができることは言うまでもない。このように、本発明では、コントローラ７に備えられた全ての操作部７２に加えられた強さをそれぞれアナログ的に検出することができるが、それぞれの操作部７２に特別なデバイスを用意する必要はなく、１つの加速度センサ７０１で実現可能であるため、コスト面で非常に有利である。
【０１０１】
また、コントローラ７に設けられた加速度センサ７０１は、互いに直交する３軸成分に分けてそれぞれ検出して出力する３軸加速度センサを用いて説明したが、少なくとも直交する２軸成分をそれぞれ検出する加速度センサや１軸成分のみを検出する加速度センサを用いても本発明を実現することができる。例えば、少なくとも押下強さの計測対象とする操作ボタンのストローク方向成分を検出する加速度センサをコントローラ７に設け、当該加速度センサから取得される加速度データを用いれば、同様に当該操作ボタンの押下強さを算出することができる。
【０１０２】
また、コントローラ７に設けられた加速度センサ７０１の代わりに、上述したジャイロセンサを用いてもよい。加速度センサ７０１から取得される加速度データと同様にジャイロセンサから取得される出力信号を用いて押下強さを算出することができる。なお、ジャイロセンサは、ジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができるため、取得される回転や角速度を差分しなくても絶対値の累積を用いて、上記押下強さを算出することも可能である。
【０１０３】
また、上述した説明では、押下操作に応じてＯＮ−ＯＦＦするデジタル入力が可能な操作部７２の押下強さを算出して処理に利用する例を用いたが、背景技術の説明で用いたようなアナログ入力に対応する操作ボタンを押下強さの計測対象としてもかまわない。この場合、操作ボタン自身が備えるアナログ入力機能による出力信号と、加速度センサ等から出力を用いて算出した押下強さとが得られることになり、２種類のアナログ的な入力を取得することになる。しかしながら、例えば、後者の押下強さの算出は、前者では感度が鈍くなる瞬間的に操作子を押下するような操作に対して高感度となるため、互いの検出特性を補った押下強さの決定が可能となる。
【０１０４】
なお、上述したフローチャートの動作では、押下強さに応じて効果音の音量を変化させる一例を説明したが、押下強さに応じて効果音の音質を変化させてもかまわない。また、押下強さに応じて効果音の音程や効果音を発する間隔等、効果音を再生する他のパラメータを押下強さに応じて変化させてもかまわない。また、再生される効果音の音量を評価して得点を競う音楽ゲームに適用してもかまわない。例えば、ボタン操作を行うべきタイミングと当該タイミングにおける適切な音量と示す評価用データを用意し、これらのタイミングと音量とをプレイヤに提示する。その後、プレイヤが操作した操作タイミングおよび当該タイミングにおける音量と上記評価用データとを比較して、プレイヤの操作に対する評価値を決定することによって、音楽ゲームを実現することができる。例えば、ドラム等の打楽器の操作タイミングと操作の強弱とを競う音楽ゲーム等に好適である。
【０１０５】
また、図１１および図１２を用いて説明したように、押下強さに応じてモニタ２に表示するオブジェクトＯＢＪのサイズも変化させる場合、効果音の音量を設定する処理（ステップ８３）と同時に、オブジェクトＯＢＪを表示するサイズを設定して当該サイズに応じたオブジェクトＯＢＪをモニタ２に表示すればよい。また、押下強さに応じて効果音の音量を変化させなくても、押下強さに応じてモニタ２に表示するオブジェクトＯＢＪのサイズだけを変化させてもかまわない。
【０１０６】
上述した説明では、押下強さに応じて音量や表示サイズを変化させる一例を示したが、押下強さに応じて他のゲーム処理を行うことも可能である。例えば、押下強さに応じて、ゲーム世界を移動するプレイヤオブジェクトの移動速度を変化させたり、プレイヤオブジェクトが放つ他のオブジェクト（弾丸、砲弾、槍等の武器オブジェクトやボールオブジェクト等）の移動速度や敵オブジェクトに与えるダメージ量（破壊力等）を変化させたりすることができることは言うまでもない。また、ゲーム世界に作用する重力加速度を押下強さに応じて変化させたり、ジャンプ力を押下強さに応じて変化させたりすることによって、プレイヤオブジェクトがゲーム世界でジャンプする高さ等を変化させることもできる。さらに、コントローラ７から取得可能な第１座標データＤａ１および第２座標データＤａ２を用いて、上述した押下強さを得るデバイス特性を利用したゲームも可能である。
【０１０７】
図１８および図１９を参照して、第１座標データＤａ１および第２座標データＤａ２を用いて、押下強さに応じたゲーム処理の一例について説明する。なお、図１８は、第１座標データＤａ１および第２座標データＤａ２を用いて、押下強さに応じたゲーム処理を行う際のゲーム画像の一例を示す図である。図１９は、図１４のステップ５７におけるゲームメイン処理の詳細な動作の他の例を示すサブルーチンである。
【０１０８】
図１８において、モニタ２の表示画面には敵オブジェクトＥが配置されたゲーム空間が表示されている。ここで、上述したように、コントローラ７の動き、姿勢、位置等による処理結果データ（第１座標データＤａ１および第２座標データＤａ２）は、モニタ２の表示画面に直接作用する操作入力として用いることができ、モニタ２の表示画面に対してコントローラ７で指し示した位置を算出することができる。図１８に示すゲーム画像の一例では、プレイヤがコントローラ７で指し示したモニタ２の表示画面上の位置と重なるゲーム空間内の目標位置に、照準オブジェクトＴＧが表示される。
【０１０９】
プレイヤがコントローラ７の操作ボタン７２ｄを押下することに応じて、照準オブジェクトＴＧに向かってゲーム空間の所定位置（例えば、プレイヤキャラクタが配置されている位置）から弾丸等を示す弾丸オブジェクトＯＢＪが放たれる。ここで、弾丸オブジェクトＯＢＪが放たれてゲーム空間を移動する速度ｖは、プレイヤが操作ボタン７２ｄを押下した押下強さに応じて変化する。例えば、プレイヤが操作ボタン７２ｄを強く押下する程、弾丸オブジェクトＯＢＪの移動速度ｖが速くなり、当該弾丸オブジェクトＯＢＪに当たった敵オブジェクトＥに対するダメージが大きくなる。ここで、プレイヤが操作ボタン７２ｄを強く押下すると、コントローラ７のハウジング７１に与えるぶれが大きくなる。したがって、コントローラ７で指し示すモニタ２の表示画面上の位置もぶれることになり、照準オブジェクトＴＧの位置が移動してしまう。つまり、プレイヤは、操作ボタン７２ｄを強く押下することによって移動速度ｖが速くダメージ量が大きい弾丸オブジェクトＯＢＪを放つことができるが、その一方で弾丸オブジェクトＯＢＪを着弾させる位置をコントロールすることが難しくなるため、よりゲーム性を向上させることができる。
【０１１０】
これは、ボールをコントロールするスポーツゲーム等にも適用することができる。例えば、操作ボタン７２ｄの押下に応じて捕手に向かって投球する野球の投手に適用した場合、プレイヤは、操作ボタン７２ｄを強く押下することによってスピードが速いボールを投げることができるが、その一方でボールを投げるコースをコントロールすることが難しくなる。
【０１１１】
次に、第１座標データＤａ１、第２座標データＤａ２、および押下強さに応じたゲーム処理の詳細を説明する。説明を具体的にするために、押下強さに応じてオブジェクトの移動速度を変化させるゲーム処理の一例を用いる。なお、当該ゲーム処理のメインフローは、上述した図１４のフローチャートと同様である。また、当該ゲーム処理における加速度情報保存処理およびボタン情報読込処理についても、上述した図１５および図１６のサブルーチンと同様である。したがって、これらの処理についての詳細な説明を省略し、当該ゲーム処理におけるゲームメイン処理について図１９を用いて説明する。
【０１１２】
図１９において、ＣＰＵ３０は、第１座標データＤａ１および第２座標データＤａ２を参照して、ゲーム世界における目標位置を算出する（ステップ９１）。そして、ＣＰＵ３０は、算出された目標位置に照準オブジェクトＴＧを配置して（ステップ９２）、処理を次のステップに進める。以下、コントローラ７から受信した第１座標データＤａ１および第２座標データＤａ２に基づいて目標位置を算出する方法例について説明する。
【０１１３】
第１座標データＤａ１および第２座標データＤａ２は、マーカ８Ｌおよび８Ｒの撮像画像内における位置を示す座標データであり、ここでは、コントローラ７の通信部７５から所定の時間間隔（例えば５ｍｓ間隔）でゲーム装置本体５へ送信されている。そして、ＣＰＵ３０は、１フレーム毎に上記座標データを利用する。
【０１１４】
上記ステップ９１において、ＣＰＵ３０は、第１座標データＤａ１と第２座標データＤａ２との中点を示す中点座標データ、および第１座標データＤａ１から第２座標データＤａ２への方向データ（例えば、第１座標データＤａ１の位置を始点とし第２座標データＤａ２の位置を終点とするベクトル）を算出する。ここで、中点データは、撮像画像内における対象画像（マーカ８Ｌおよび８Ｒ）の位置を示すパラメータである。したがって、中点データと所定の基準位置との差によって、コントローラ７の位置の変化による画像位置の変化を算出することができる。
【０１１５】
ここで、マーカ８Ｌおよび８Ｒと、モニタ２の表示画面と、コントローラ７との位置関係について考える。例えば、モニタ２の上部に２つのマーカ８Ｌおよび８Ｒを設置し（図１８参照）、上面が上方向を向いたコントローラ７を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合（撮像情報演算部７４の撮像画像の中央に表示画面中央が撮像されている状態）を考える。このとき、撮像情報演算部７４の撮像画像において、対象画像の中点（マーカ８Ｌおよび８Ｒの中点）位置と指し示した位置（表示画面中央）とが一致しない。具体的には、上記撮像画像における対象画像の位置は、撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コントローラ７の移動に対応して、撮像画像中の対象画像の位置も移動する（移動方向は逆方向となる）ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コントローラ７で指し示された表示画面基準の位置を算出することができる。ここで、基準位置の設定は、予めプレイヤが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、対象画像と表示画面との位置関係が固定的であれば、予め設定されていても良い。また、マーカ８Ｌおよび８Ｒが、モニタ２とは別体で設けられてモニタ２の近く（モニタ２の上や下など）に載置されて使用されるものである場合には、ゲーム開始前に、マーカ８Ｌおよび８Ｒをモニタに対してどの位置に載置しているかをプレイヤに入力させ（例えば、モニタ２の上に載置したか下に載置したか等の選択肢から選択させ）、光ディスク４やゲーム装置本体５の内蔵不揮発メモリなどに、モニタの上に載置した場合の基準位置データと、モニタの下に載置した場合の基準位置データをそれぞれ記憶しておいて、それらを選択して使用してもよい。このような表示画面に対する位置座標は、中点データからモニタ２の表示画面基準の座標を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコントローラ７によって指し示される表示画面上の位置を表す座標に変換するものである。この関数によって、中点座標から表示画面を基準とした指し示し位置を算出することができる。
【０１１６】
しかしながら、上面が上方向以外（例えば、右方向）を向いたコントローラ７を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合、つまりプレイヤがコントローラ７をひねったり傾けたりしながら操作を行った場合には、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外（例えば、左方）の方向に移動した位置となる。つまり、コントローラ７の傾きによって、コントローラ７の移動方向と、表示画面基準の指し示し位置の移動方向が一致しないことになる。そこで、方向データに基づいて、中点データを補正する。具体的には、中点データを、コントローラ７の上面が上方向を向いた状態であるとした場合における中点座標に補正する。より具体的には、上記基準位置の設定の際には方向データの基準も設定され、算出された中点データを、方向データと当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点データが示す座標を回転移動させて補正する。そして、補正された中点データを用いて上述したように表示画面を基準とした指し示し位置を算出する。
【０１１７】
そして、ＣＰＵ３０は、算出した表示画面を基準とした指し示し位置を、対応するゲーム世界における位置にさらに変換して、目標位置の座標を算出する。ここで、指し示し位置に対応するゲーム世界における位置とは、モニタ２の表示画面上における指し示し位置と重なって表示されるゲーム世界における位置（例えば、透視投影される位置）等である。
【０１１８】
ここで、上記表示画面を基準とした指し示し位置の算出処理の本質的な原理は、コントローラ７の移動による対象画像の位置の変化によって、指し示された２次元座標の所定の基準位置からの変位を算出し、座標を設定するというものである。したがって、表示画面を基準とした指し示し位置座標は、他の２次元座標の入力としても幅広く用いることができる。例えば、指し示し位置座標をワールド座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。この場合、モニタ２の表示画面とは無関係に、対象画像の移動をワールド座標系におけるｘ座標およびｙ座標の基準位置からの移動に対応付ける算出処理を行えばよい。また、２次元のゲーム画像をモニタ２に表示する場合などは、表示画面を基準とした指し示し位置座標をそのまま２次元のゲーム座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。
【０１１９】
次に、ＣＰＵ３０は、キーデータＤａ３を参照して、押下強さの計測対象とする操作部７２がＯＦＦからＯＮに変化したか否か、すなわち、当該操作部７２を押下していない状態から押下している状態に変化した瞬間か否かを判断する（ステップ９３）。そして、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化した場合、次のステップ９４に処理を進める。一方、ＣＰＵ３０は、計測対象となる操作部７２がＯＦＦからＯＮに変化していない場合、次のステップ９６に処理を進める。
【０１２０】
ステップ９４において、ＣＰＵ３０は、押下強さの計測対象とする操作部７２の押下に応じてゲーム世界を移動するオブジェクト（例えば、図１８に示す弾丸オブジェクトＯＢＪ）の移動速度の設定を開始する。そして、ＣＰＵ３０は、押下強さｐｏｗｅｒに応じて移動速度を設定し（ステップ９５）、次のステップ９８に処理を進める。例えば、ＣＰＵ３０は、現在設定されている押下強さｐｏｗｅｒに所定の定数を乗じることによって、オブジェクトの移動速度を設定する。
【０１２１】
一方、ステップ９６において、ＣＰＵ３０は、計測中フラグＤｆを参照して押下強さを計測中か否かを判断する。次に、ＣＰＵ３０は、押下強さ計測中（ｆｇ＝１）の場合、オブジェクトの移動速度を設定中か否かを判断する（ステップ９７）。そして、ＣＰＵ３０は、押下強さ計測中で移動速度を設定中である場合（ステップ９６およびステップ９７が共にＹｅｓ）、上記ステップ９５に処理を進める。つまり、オブジェクトの移動速度を設定中であれば、その後に累積される新たな押下強さｐｏｗｅｒに応じて、移動速度が更新されることになる。一方、ＣＰＵ３０は、押下強さ計測中であるが移動速度の設定中でない場合（ステップ９６でＹｅｓ、ステップ９７でＮｏ）、次のステップ１００に処理を進める。さらに、ＣＰＵ３０は、押下強さ計測中でない場合（ステップ９６でＮｏ）、次のステップ９８に処理を進める。
【０１２２】
ステップ９８において、ＣＰＵ３０は、オブジェクトの移動速度を決定するタイミングか否かを判断する。例えば、移動速度を決定するタイミングは、押下強さの計測対象とする操作部７２がＯＮからＯＦＦに変化した時点や、当該時点から所定時間経過した時点や、操作部７２がＯＦＦからＯＮに変化した時点から所定時間経過した時点等に設定される。そして、ＣＰＵ３０は、移動速度を決定するタイミングでない場合（移動速度が設定中でない場合を含む）、次のステップ１００に処理を進める。一方、ＣＰＵ３０は、移動速度を決定するタイミングが到来した場合、オブジェクトの移動速度を現在設定中の移動速度に決定し、上記ステップ９１で算出されているゲーム世界における目標位置に向かって当該決定された移動速度でオブジェクトの移動を開始する。そして、処理を次のステップ１００に進める。
【０１２３】
ステップ１００において、モニタ２の表示画面にゲーム画像を表示する処理を行い、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ３０は、オブジェクトの移動速度の決定前、すなわち、移動速度の設定中や移動速度の設定を開始していない状態で弾丸オブジェクトＯＢＪがゲーム世界に登場しないとき、敵オブジェクトＥや照準オブジェクトＴＧが配置されたゲーム世界をモニタ２に表示する。一方、オブジェクトの移動速度の決定に応じて、敵オブジェクトＥや照準オブジェクトＴＧが配置されたゲーム世界において弾丸オブジェクトＯＢＪが決定された移動速度で照準オブジェクトＴＧに向かって移動する様子をモニタ２に表示する。
【０１２４】
このように、コントローラ７で指し示す位置と押下強さとを操作入力として用いることによって、新たな操作環境を利用したゲームが可能となる。なお、上述した説明では、押下強さに応じて弾丸オブジェクトＯＢＪの移動速度が変化する態様を用いたが、押下強さに応じて弾丸オブジェクトＯＢＪの攻撃力（例えば、敵オブジェクトＥに与えるダメージ量）が変化するように設定してもかまわない。
【０１２５】
なお、上述した説明では、表示画面上の位置に対応する座標を指定するためのデータ出力する入力装置（ポインティングデバイス）の一例として、コントローラ７に設けられた撮像素子７４３で撮像対象を撮像した画像データを解析することによって、モニタ２の表示画面に対して座標指定する態様を用いた。この態様は、表示画面近傍に撮像対象となる２つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の２つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記入力装置を構成してもかまわない。
【０１２６】
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ（ＬＥＤモジュール）の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ２の表示画面に撮像対象を表示してもかまわない。また、コントローラ７が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して座標指定してもかまわない。この場合、コントローラ７には、上記磁気を検出するための磁気センサを設けることになる。
【０１２７】
また、上述した説明では、２つのマーカ８Ｌおよび８Ｒからの赤外光を、コントローラ７の撮像情報演算部７４の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、１つまたは３つ以上のマーカをモニタ２の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部７４の撮像対象としてもかまわない。例えば、所定の長さを有する１つのマーカをモニタ２の近傍に設置しても、本発明を同様に実現することができる。また、モニタ２の表示画面自体や他の発光体（室内灯等）を撮像情報演算部７４の撮像対象としてもかまわない。撮像対象とモニタ２の表示画面との配置関係に基づいて、当該表示画面に対するコントローラ７の位置を演算すれば、様々な発光体を撮像情報演算部７４の撮像対象として用いることができる。
【０１２８】
また、コントローラ７側にマーカ等の撮像対象を設けて、撮像手段をモニタ２側に設けてもかまわない。さらに他の例では、コントローラ７の前面から光を放射する機構を設けてもかまわない。この場合、コントローラ７およびモニタ２とは別の場所にモニタ２の表示画面を撮像する撮像装置を設置し、モニタ２の表示画面にコントローラ７から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して座標指定するためのデータを出力可能な入力装置を構成することができる。また、表示画面に対して座標指定するためのデータを出力可能な入力装置として、マウスやタッチパネル等、他のポインティングデバイスを用いてもかまわない。
【０１２９】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１３０】
また、撮像素子７４３で撮像した画像データを解析してマーカ８Ｌおよび８Ｒからの赤外光の位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコントローラ７内で生成してゲーム装置本体５へ送信する態様を説明したが、他の処理段階のデータをコントローラ７からゲーム装置本体５へ送信してもかまわない。例えば、撮像素子７４３が撮像した画像データをコントローラ７からゲーム装置本体５へ送信し、ＣＰＵ３０において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コントローラ７に設けられた画像処理回路７４４が不要となる。また、上記画像データの解析途中のデータをコントローラ７からゲーム装置本体５へ送信してもかまわない。例えば、画像データから得られる輝度、位置、および面積等を示すデータをコントローラ７からゲーム装置本体５へ送信し、ＣＰＵ３０において残りの解析処理を行って処理結果データを取得してもかまわない。
【０１３１】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ７における撮像情報演算部７４の位置（撮像情報演算部７４の光入射口）は、ハウジング７１の前面でなくてもよく、ハウジング７１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【０１３２】
また、上記実施例では、本願発明の情報処理装置を備えるゲーム装置３を一例に説明したが、本体の動きを検出する動きセンサと、複数の操作ボタンと、その操作ボタンの種類に応じた処理を実行する情報処理装置であればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯ゲーム装置等のデバイスにも適用することができる。
【０１３３】
例えば、他の電話機との間で無線通信する通信部を備えた携帯電話機の場合には、携帯電話機のハウジングが本願発明のハウジングに相当し、テンキーなど通話などに使用するボタンが操作ボタンに相当する。例えば携帯電話機のテンキーが押されたときに、携帯電話機に搭載された加速度センサやジャイロセンサの出力を用いて、そのテンキーの種類に応じた処理を加速度センサ等の出力値を用いて実行する。このようにすることで、携帯電話機などでゲームを行うには好適である。また、例えば携帯電話機において文字を打ち込むときに本発明を利用すれば、強くキーを押したときにはそのキーによって表示される文字のサイズを大きくしたり、色を変えたりすることなどもできる。
【０１３４】
なお、上述した実施例では、ゲームプログラムを例に上げて説明したが、操作ボタンに加えられた入力の大きさに応じて処理をさせるプログラムであれば、どのようなプログラムにも適用することがきでる。
【産業上の利用可能性】
【０１３５】
本発明に係る情報処理システム、情報処理方法、および情報処理プログラムは、操作ボタンに加えられた強さをアナログ的に検出することができ、ボタン操作に基づいて情報処理を行う情報処理システム、情報処理方法、および情報処理プログラム等の用途に適用できる。
【図面の簡単な説明】
【０１３６】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ７の下ハウジングを外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８Ａ】プレイヤがコントローラ７を右手で把持した状態をコントローラ７の前面側から見た一例を示す図
【図８Ｂ】プレイヤがコントローラ７を右手で把持した状態をコントローラ７の左側面側から見た一例を示す図
【図９】親指で操作ボタン７２ｄを強く押し下げたとき、コントローラ７が揺動する様子を示す図
【図１０】マーカ８Ｌおよび８Ｒと撮像情報演算部７４との視野角を説明するための図
【図１１】スピーカ２ａから再生される音量の大きさおよびモニタ２の表示画面に表示されるオブジェクトＯＢＪの一例を示す図
【図１２】スピーカ２ａから再生される音量の大きさおよびモニタ２の表示画面に表示されるオブジェクトＯＢＪの一例を示す図
【図１３】ゲーム装置本体５のメインメモリ３３に記憶されるゲームプログラムおよびデータの一例を示す図
【図１４】ゲーム装置本体５において実行される処理を示すフローチャート
【図１５】図１４のステップ５４における加速度情報保存処理の詳細な動作を示すサブルーチン
【図１６】図１４のステップ５６におけるボタン情報読込処理の詳細な動作を示すサブルーチン
【図１７】図１４のステップ５７におけるゲームメイン処理の詳細な動作を示すサブルーチン
【図１８】第１座標データＤａ１および第２座標データＤａ２を用いて、押下強さに応じたゲーム処理を行う際のゲーム画像の一例を示す図
【図１９】図１４のステップ５７におけるゲームメイン処理の詳細な動作の他の例を示すサブルーチン
【符号の説明】
【０１３７】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３７…ビデオＩ／Ｆ
３８…フラッシュメモリ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…外部メモリカード
６…通信ユニット
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
【図１】
2008302241.tif 000004
【図２】
2008302241.tif 000005
【図３】
2008302241.tif 000006
【図４】
2008302241.tif 000007
【図５】
2008302241.tif 000008
【図６】
2008302241.tif 000009
【図７】
2008302241.tif 000010
【図８Ａ】
2008302241.tif 000011
【図８Ｂ】
2008302241.tif 000012
【図９】
2008302241.tif 000013
【図１０】
2008302241.tif 000014
【図１１】
2008302241.tif 000015
【図１２】
2008302241.tif 000016
【図１３】
2008302241.tif 000017
【図１４】
2008302241.tif 000018
【図１５】
2008302241.tif 000019
【図１６】
2008302241.tif 000020
【図１７】
2008302241.tif 000021
【図１８】
2008302241.tif 000022
【図１９】
2008302241.tif 000023