JP2007257198A - 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム - Google Patents

傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム Download PDF

Info

Publication number
JP2007257198A
JP2007257198A JP2006079485A JP2006079485A JP2007257198A JP 2007257198 A JP2007257198 A JP 2007257198A JP 2006079485 A JP2006079485 A JP 2006079485A JP 2006079485 A JP2006079485 A JP 2006079485A JP 2007257198 A JP2007257198 A JP 2007257198A
Authority
JP
Japan
Prior art keywords
acceleration
inclination
magnitude
data
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006079485A
Other languages
English (en)
Other versions
JP4547346B2 (ja
Inventor
Keizo Ota
敬三 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2006079485A priority Critical patent/JP4547346B2/ja
Priority to US11/408,963 priority patent/US7379841B2/en
Priority to EP06008518.0A priority patent/EP1840704B1/en
Publication of JP2007257198A publication Critical patent/JP2007257198A/ja
Priority to US12/081,554 priority patent/US7920985B2/en
Application granted granted Critical
Publication of JP4547346B2 publication Critical patent/JP4547346B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C9/00Measuring inclination, e.g. by clinometers, by levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/105Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals using inertial sensors, e.g. accelerometers, gyroscopes

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)

Abstract

【課題】加速度検出手段にによって検出された加速度を用いて、リアルタイムに装置の傾きを算出することができる傾き算出装置および傾き算出プログラムを提供する。
【解決手段】傾き算出装置は、少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段を備えた入力装置の傾きを算出する。傾き算出装置は、仮データ生成手段と、傾き算出手段とを備える。仮データ生成手段は、加速度検出手段から出力される加速度データから一意に決められる傾きを示す仮データを逐次生成する。傾き算出手段は、前回に算出された傾きを仮データにより示される傾きに所定の度合いで近づけることによって新たな傾きを逐次算出する。
【選択図】図10

Description

本発明は、傾き算出装置および傾き算出プログラムに関し、より特定的には、入力装置が備える加速度検出手段の出力を用いて入力装置の傾きを算出する傾き算出装置および傾き算出プログラムに関する。
従来より、加速度検出手段を備えた装置の傾きを算出する技術が考えられている。例えば特許文献1には、加速度検出手段を備えた情報処理装置において、加速度検出手段が検出する加速度から装置の傾き(重力方向に対する装置の角度)を算出し、算出された傾きを用いて操作コマンドを生成することが記載されている。
この情報処理装置では、角度を検出する手段として2軸の加速度センサを内蔵し、装置を傾けた場合に2軸で検出される加速度の成分から装置の傾き角度を算出する。この際、検出された加速度が重力加速度のみを示すものであれば当該検出された加速度から装置の傾きを正確に算出することができる。しかし、検出された加速度には、ユーザの手の振動等によるノイズ成分の加速度が重力加速度の他に合成されている可能性がある。そのため、上記装置では、検出された加速度の単位時間当たりの時間平均を計算するといったように、検出された加速度の低周波成分を抽出する処理が行われる。さらに、上記装置では、人間の動作に起因する加速度の変化は滑らかでゆっくりした変化であると想定し、上記低周波成分が所定の停止時間の間変化しなかった場合、ユーザの操作が行われたものと判断し、装置の傾きとして出力すべき値(傾き操作情報)を変化させる処理が行われる。これらの処理によって、加速度センサによって検出される加速度からノイズ成分の加速度を除去して装置の傾きを算出することができる。
特開2001−159951号公報
特許文献1に記載の技術では、装置の傾きを算出する際、時間平均を算出する処理、および、検出された加速度の低周波成分が停止時間の間変化していないか否かを判定する処理が行われる。これらの処理のために、上記傾き操作情報を得るまでに遅れが生じてしまう。つまり、上記技術では、検出された加速度の値からリアルタイムに装置の傾きを算出することができなかった。また、特許文献1に記載の技術では、上記処理を行う際に用いられる傾き操作情報を生成するための特性情報を操作の種類に合わせて用意する必要があり、特性情報に合わせた認識も必要となる。そのため、適用可能な操作が限定され、さらに処理が複雑になるという問題がある。
それ故、本発明は、加速度検出手段によって検出された加速度を用いて、リアルタイムに装置の傾きを算出することができる傾き算出装置および傾き算出プログラムを提供することを目的とする。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段(加速度センサ37)を備えた入力装置(コントローラ7)の傾きを算出する傾き算出装置(ゲーム装置3)である。傾き算出装置は、仮データ生成手段(ステップS13またはS29を実行するCPU10等。以下、ステップ番号のみを記載する。)と、傾き算出手段(S17およびS18、または、S33およびS34)とを備える。仮データ生成手段は、加速度検出手段から出力される加速度データ(521)から一意に決められる傾きを示す仮データ(531)を逐次生成する。傾き算出手段は、前回算出された傾きを仮データにより示される傾きに所定の度合い(有効度k)で近づけることによって新たな傾きを逐次算出する。
第2の発明においては、仮データは、加速度データが重力加速度のみを示すと仮定した場合に想定される入力装置の傾きを示すものであってもよい。
第3の発明においては、加速度検出手段は、3軸方向(xyz方向)の加速度を検出することが可能であってもよい。このとき、傾き算出手段は、3軸方向のうちの2軸方向(xy方向)に関する傾きを算出する。仮データ生成手段は、3軸方向の加速度を示す加速度データから、傾き算出手段によって算出される傾きに対応する2軸方向に関する傾きを示す仮データを生成する。
第4の発明においては、傾き算出装置は、加速度データにより示される加速度の大きさを算出する大きさ算出手段(S11またはS21)をさらに備えていてもよい。このとき、傾き算出手段は、大きさ算出手段によって算出される加速度の大きさが重力加速度の大きさに近いほど上記度合いが大きくなるように、当該加速度の大きさに応じて当該度合いを逐次変化させる。
第5の発明においては、傾き算出装置は、加速度データにより示される加速度の大きさを算出する大きさ算出手段(S11またはS21)をさらに備えていてもよい。このとき、傾き算出手段は、大きさ算出手段によって算出される加速度の大きさと重力加速度の大きさとの差が所定のしきい値以下のときのみ傾きを算出する。
また、本発明は、上記発明を傾き算出装置のコンピュータに実行させるための傾き算出プログラムの形態で提供されてもよい。さらに、本発明は、上記発明によって算出された傾きをゲームの操作入力として利用するゲーム装置、または、上記発明を当該ゲーム装置のコンピュータにおいて実行させるためのゲームプログラムの形態で提供されてもよい。
第1の発明によれば、加速度データから決められる傾きをそのまま入力装置の傾きとするのではなく、加速度データから決められる傾きと、前回に算出された傾きとに基づいて入力装置の傾きを算出する。これによって、加速度検出手段の出力に重力加速度以外の影響が加わったために加速度が急激に変化する場合でも、その影響を軽減することができる。したがって、第1の発明によれば、常にある程度妥当な傾きを得ることができる。さらに、入力装置の傾きを算出するために用いられる情報は、加速度データから決められる傾きと前回に算出された傾きとであるので、入力装置の傾きをリアルタイムに算出することができる。
第2の発明によれば、加速度検出手段の出力から仮ベクトルを容易に得ることができる。
第3の発明によれば、加速度検出手段によって検出される3軸方向の加速度から、そのうちの2軸方向の傾きを算出することができる。
第4の発明によれば、傾き算出手段は、加速度検出手段によって検出される加速度の大きさと重力加速度の大きさとの近さに応じて所定の度合いを変化させる。これによって、検出された加速度において重力加速度以外の影響が大きい場合、すなわち、生成データにより示される傾きが正しい傾きから大きくずれていると判断される場合には、傾き算出手段によって算出される傾きは、前回算出された傾きに近くなる。逆に、検出された加速度における重力加速度以外の影響が少ない場合、すなわち、生成データにより示される傾きが正しい傾きに近いと判断される場合には、傾き算出手段によって算出される傾きは、生成データにより示される傾きに近くなる。このように、生成データにより示される傾きが正しい傾き(算出すべき傾き)に近いかどうかを判断して、傾き算出手段によって算出される傾きに対して生成データが与える影響の度合いを変化させることができるので、入力装置の傾きをより精度良く算出することができる。
第5の発明によれば、加速度検出手段によって検出される加速度の大きさと重力加速度の大きさとの差分がしきい値よりも大きい場合、生成データと前回の傾きとを用いた傾きの算出は実行されない。上記の場合、加速度検出手段によって検出される加速度に重力加速度以外の成分が多く含まれるので、傾きを正確に算出することが困難となる。第5の発明によれば、上記の場合には傾きを算出しないようにすることによって、不正確な傾きが算出されることを防止することができる。
(第1の実施形態)
図1を参照して、本発明の第1の実施形態に係る傾き算出装置の一例であるゲーム装置を含むゲームシステム1について説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明の座標算出装置について説明する。
図1において、ゲームシステム1は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作データを与えるコントローラ7によって構成される。また、モニタ2の周辺(図では画面の上側)には、2つのマーカ8aおよび8bが設置される。マーカ8aおよび8bは、具体的には赤外LEDであり、それぞれモニタ2の前方に向かって赤外光を出力する。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される操作データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、その内部に備える通信部36(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて操作データを無線送信する。コントローラ7は、操作対象(モニタ2に表示されるオブジェクト)を操作するための操作手段である。コントローラ7は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、コントローラ7の傾き(重力方向に対するコントローラ7の角度)を検出するための加速度センサ37(後述)を備えている。加速度センサ37によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置3へ送信される。ゲーム装置3は、当該加速度を示すデータを用いてコントローラ7の傾きに対応した操作信号を得る。また、コントローラ7は、当該コントローラ7から見た画像を撮像するための撮像情報演算部35(後述)を備えている。すなわち、撮像情報演算部35は、モニタ2の周辺に配置された各マーカ8aおよび8bを撮像対象として、各マーカ8aおよび8bの画像を撮像する。ゲーム装置3は、この画像を用いてコントローラ7の位置および姿勢に対応した操作信号を得る。
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、コントローラI/F(インターフェース)16、ビデオI/F17、外部メモリI/F18、オーディオI/F19、およびディスクI/F21が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ22、およびディスクドライブ20が接続されている。
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、これらを用いてモニタ2に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ11およびビデオI/F17を介してモニタ2に出力する。
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムや各種データ等がCPU10によって実行される。
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F19を介してモニタ2に備えるスピーカ22に出力させる。
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F16は、例えば4つのコントローラI/Fで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F16を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの操作データを受信し、コントローラI/F16を介して当該操作データをCPU10へ出力する。なお、他の実施形態においては、ゲーム装置3は、受信ユニット6に代えて、コントローラ7から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU10に出力される。ビデオI/F17には、モニタ2が接続される。外部メモリI/F18には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F19にはモニタ2に内蔵されるスピーカ22が接続され、DSP14がARAM15から読み出したサウンドデータやディスクドライブ20から直接出力されるサウンドデータをスピーカ22から出力可能に接続される。ディスクI/F21には、ディスクドライブ20が接続される。ディスクドライブ20は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F19に出力する。
次に、図3〜図7を参照して、コントローラ7について説明する。図3〜図5は、コントローラ7の外観構成を示す斜視図である。図3Aは、コントローラ7の上面後方から見た斜視図であり、図3Bは、コントローラ7を下面後方から見た斜視図である。図4は、コントローラ7を前方から見た図である。
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7を用いることによって、それに設けられたボタンを押下すること、コントローラ7自体の傾き(重力方向に対する角度)を変えること、および、コントローラ7自体の位置や向きを変えることによってゲーム操作を行うことができる。例えば、プレイヤは、コントローラ7の傾きを変化させることによって、ゲーム空間に登場する操作対象(オブジェクト)を移動させることができる。また、例えば、プレイヤは、長手方向を軸としてコントローラ7を回転させることによって、加速度センサ37によって生成される直線加速度信号を用いた処理によって操作対象に移動動作を行わせたり、コントローラ7によって指し示される画面上の位置を変える操作によって、ゲーム空間に登場するオブジェクトを移動させたりすることができる。ここで、「コントローラ7によって指し示される画面上の位置」とは、理想的には、コントローラ7の前端部から上記長手方向に延ばした直線とモニタ2の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ7によって指し示される画面上の位置を「指示位置」と呼ぶ。また、コントローラ7(ハウジング31)の長手方向を、「コントローラ7の指示方向」と呼ぶことがある。
ハウジング31には、複数の操作ボタンが設けられる。ハウジング31の上面には、十字キー32a、Xボタン32b、Yボタン32c、Bボタン32d、セレクトスイッチ32e、メニュースイッチ32f、およびスタートスイッチ32gが設けられる。一方、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはAボタン32iが設けられる。これらの各ボタン(スイッチ)は、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング31の上面には、遠隔からゲーム装置3本体の電源をオン/オフするための電源スイッチ32hが設けられる。
また、コントローラ7は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射口35aが設けられる。一方、ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、例えば32ピンのエッジコネクタであり、コントローラ7に他の機器を接続するために利用される。また、ハウジング31上面の後面側には複数のLED34が設けられる。ここで、コントローラ7には、他のコントローラ7と区別するためにコントローラ種別(番号)が付与される。LED34は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ操作データを送信する際、上記コントローラ種別に応じて複数のLED34のいずれか1つが点灯する。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。図5Aおよび図5Bは、コントローラ7の内部構造を示す図である。なお、図5Aは、コントローラ7の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す基板300は、図5Aに示す基板300の裏面から見た斜視図となっている。
図5Aにおいて、ハウジング31の内部には基板300が固設されており、当該基板300の上主面上に操作ボタン32a〜32h、加速度センサ37、LED34、水晶振動子46、無線モジュール44、およびアンテナ45等が設けられる。そして、これらは、基板300等に形成された配線(図示せず)によってマイコン42(図6参照)に接続される。また、無線モジュール44およびアンテナ45によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子46は、後述するマイコン42の基本クロックを生成する。
一方、図5Bにおいて、基板300の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ7の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41によって構成されおり、それぞれ基板300の下主面に取り付けられる。また、基板300の下主面上の後端縁にコネクタ33が取り付けられる。そして、撮像情報演算部35の後方であって基板300の下主面上に操作ボタン32iが取り付けられていて、それよりさらに後方に、電池47が収容される。電池47とコネクタ33との間の基板300の下主面上には、バイブレータ48が取り付けられる。このバイブレータ48は、例えば振動モータやソレノイドであってよい。バイブレータ48が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
図6は、コントローラ7の構成を示すブロック図である。コントローラ7は、上述した加速度センサ37をその内部に備えている。加速度センサ37は、コントローラ7の加速度(重力加速度を含む)を検出する、すなわち、コントローラ7に加わる力(慣性力および重力)を検出して加速度として出力する。図7および図8は、コントローラ7の傾きと加速度センサの出力との関係を示す図である。図7および図8に示すように、加速度センサ37は、コントローラ7を基準とした上下方向(図7に示すy軸方向)、左右方向(図7に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸方向に関してそれぞれ加速度を検出する。検出された加速度は、コントローラ7を基準に設定されるxyz座標系(図7および図8参照)における3次元のベクトルとして表される。ここでは、コントローラ7を基準とした上方向をy軸正方向とし、前方向をz軸正方向とし、後側から前側を向いたときの左方向をx軸正方向とする。
上述したように、コントローラ7は、上述した3軸方向それぞれの直線加速度を検出する3軸の加速度センサ37を備えていることが好ましい。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ37は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ37は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ37が提供されてもよい。
当業者には公知であるように、加速度センサ37に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ37からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ37は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
しかしながら、加速度センサ37から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ37からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きや傾斜を推測または算出することができる。このように、加速度センサ37をマイコン42(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を決定することができる。同様に、加速度センサ37を備えるコントローラ7が例えばユーザの手で動的に加速されて動かされる場合に、加速度センサ37によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出または推測することができる。他の実施例では、加速度センサ37は、信号をマイコン42に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。
図7は、重力加速度(図7に示すベクトルVa)がコントローラ7を基準とした下方向を向く状態を示している。この状態では、加速度センサ37によって検出される加速度のベクトル(加速度ベクトル)Vaは、y軸負方向を向く。なお、図7および図8では、コントローラ7は静止状態にあるものとする。このとき、加速度ベクトルVaは、y座標値のみが0でない値をとり、x座標値およびz座標値は0となる。一方、図8は、図7に示す状態から、z軸を中心として回転させるようにコントローラ7を傾けた状態を示している。図8に示す状態では、加速度ベクトルVaの向きは図7に示す状態から変化し、x座標値およびy座標値が0でない値となり、z軸を中心として回転させているのでz座標値は0となる。図7および図8に示したように、加速度センサ37は、コントローラ7を基準とした3軸方向を各成分とする加速度ベクトルとしてコントローラ7の傾きを検出することができる。加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、第1の実施形態では、加速度センサ37は、逐次(具体的には1フレーム時間毎)に加速度ベクトルを出力する。ゲーム装置3は、この加速度ベクトルからコントローラ7の傾き(姿勢)を算出し、当該傾きに応じたゲーム処理を実行する。
また、本実施形態においては、コントローラ7が静止している状態で加速度センサ37によって検出される加速度の大きさ、すなわち、加速度センサ37によって検出される加速度が重力加速度のみを表すときの当該加速度の大きさを、1と表す。例えば、図7に示す状態において検出される加速度ベクトルVaの各成分の値は、(0,1,0)となる。
なお、第1の実施形態においては、xy方向に関するコントローラ7の傾きを算出することを目的とする。そのため、第1の実施形態においては、3軸方向に関して加速度を検出する加速度センサ37に代えて、x軸方向およびy軸方向の2軸方向に関してのみ加速度を検出する加速度センサが用いられてもかまわない。また、加速度センサ37は、典型的には静電容量式の加速度センサが用いられるが、コントローラ7の傾きを検出することができるものであればよく、他の方式の加速度センサやジャイロセンサを用いてもかまわない。
また、コントローラ7は、加速度センサ37の他に、操作部32(各操作ボタン)、撮像情報演算部35、および通信部36を備えている。なお、本実施形態において、コントローラ7は、加速度検出手段(加速度センサ37)を備えていればよく、操作部32および撮像情報演算部35を備えていない構成であってもよい。
図6の説明に戻り、撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ7の動きでも追跡して解析することができる。
具体的には、撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8aおよび8bは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ38を設けることによってマーカ8aおよび8bの画像をより正確に撮像することができる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ39が集光した赤外線を撮像する。したがって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を算出する。なお、当該位置は、例えば、撮像画像の下向きをy’軸正方向とし、右向きをx’軸正方向とする座標系(x’y’座標系)で表現されるものとする。画像処理回路41は、当該位置を示す各座標値を撮像データとして通信部36へ出力する。この座標値はコントローラ7の自体の向きや位置に応じて変化するので、ゲーム装置3は当該座標値を用いてコントローラ7の向きや位置を算出することができる。
通信部36は、マイクロコンピュータ(Micro Computer:マイコン)42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理の際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータを無線送信する無線モジュール44を制御する。
操作部32、加速度センサ37、および撮像情報演算部35からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。ここで、通信部36から受信ユニット6への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン42は、受信ユニット6への送信タイミングが到来すると、メモリ43に格納されているデータを操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ7から送信される。微弱電波信号はゲーム装置3側の受信ユニット6で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
なお、図3〜図5に示したコントローラ7の形状や、各操作スイッチの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ7における撮像情報演算部35の位置(撮像情報演算部35の光入射口35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ7の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子40の撮像方向となる。
上記コントローラ7を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ7の傾きを変化させたり、コントローラ7自身の位置を動かしたり、コントローラ7を回転させたりするというゲーム操作を行うことができる。以下、上記コントローラ7を用いたゲーム操作について説明する。
図9は、コントローラ7を用いてゲーム操作するときの状態を概説する図解図である。図9に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ7を把持する。ここで、マーカ8aおよび8bは、モニタ2の画面の横方向と平行に配置されている。プレイヤは、コントローラ7の前面(撮像情報演算部35が撮像する光の入射口側)がマーカ8aおよび8bの方向を向く状態でコントローラ7を把持する。この状態で、プレイヤは、コントローラ7の傾きを変化させたり、コントローラ7が指し示す画面上の位置(指示位置)を変更したり、コントローラ7と各マーカ8aおよび8bとの距離を変更したりすることによってゲーム操作を行う。
次に、加速度センサ37の出力を用いてコントローラ7の傾きを算出する処理について説明する。コントローラ7が静止している状態では、加速度センサ37による出力である加速度ベクトルは重力加速度の方向を向く(図7および図8参照)。したがって、重力方向に対するコントローラ7の角度、すなわちコントローラ7の傾きは、加速度ベクトルの向きとy軸負方向の向きとの差分として表すことができる。つまり、コントローラ7が静止している状態では、加速度ベクトルそのものの値をコントローラ7の傾きとして用いることができる。一方、コントローラ7が移動したり回転したりしている状態では、加速度ベクトルは重力加速度の方向に一致しないので、加速度ベクトルそのものの値をコントローラ7の傾きとして用いることができない。そこで、本実施形態では、加速度センサ37によって加速度を逐次検出するとともにコントローラ7の傾きを逐次算出し、さらに、今回検出された加速度センサの出力と前回に算出された傾きとを用いて今回の傾きを算出する。
まず、図10を用いて傾き算出処理の概要を説明する。第1の実施形態では、z軸周りの回転に関するコントローラ7の傾きを算出する場合について説明する。図10は、傾き算出処理を説明するための図である。傾き算出処理において、ゲーム装置3は、まず、加速度センサ37によって検出された加速度ベクトルVaから仮ベクトルvhを算出する。仮ベクトルとは、加速度ベクトルそのものによって表されるコントローラ7の傾きを示す。具体的には、仮ベクトルvhは、加速度ベクトルVaのx成分およびy成分を抽出し、抽出した2次元ベクトルに対して所定の座標変換を行うことによって得られる。仮ベクトルvhは、図10に示すx’y’座標系で表され、x’y’座標系の原点を始点とするベクトルである。また、仮ベクトルは長さが1の単位ベクトルとされる。仮ベクトルは、加速度ベクトルから一意に決められる。仮ベクトルは、加速度ベクトルが重力加速度を表す(加速度ベクトルが重力方向を向く)と仮定したときのコントローラ7の傾きを表すベクトルである。
なお、加速度ベクトルVaのx成分およびy成分を抽出する理由は、第1の実施形態では、z軸周りの回転に関する(xy方向に関する)コントローラ7の傾きを算出することが目的であるので、加速度ベクトルのz成分は不要だからである。また、抽出した2次元ベクトルに対して所定の座標変換を行う理由は、第1の実施形態では、コントローラ7の傾きを上記xyz座標系とは異なる座標系(図10に示すx’y’座標系)で表すからである。なお、x’y’座標系は、x’軸正方向がy軸負方向に相当し、y’軸正方向がx軸負方向に相当する座標系である。x’y’座標系は、上記撮像情報演算部35によって算出される、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を表すための座標系である。このように、加速度センサ37の出力から算出されるコントローラ7の傾きと、撮像情報演算部35から得られる撮像対象の位置とを同じ座標系で処理することによって、当該傾きと当該位置との両方をゲーム操作に反映させる処理が容易になる。なお、他の実施形態においては、マーカ8aおよび8bの撮像画像を操作に用いる必要はなく、撮像画像を操作に用いない場合には上記座標変換を行う必要はない。
仮ベクトルvhを算出すると、ゲーム装置3は次に、当該仮ベクトルvhと前回ベクトルvbhとに基づいて傾きベクトルvahを算出する(図10参照)。ここで、傾きベクトルとは、算出すべきコントローラ7の傾きを示すベクトルであり、ゲーム操作に用いられるベクトルである。また、前回ベクトルvbhとは、前回に算出された傾きベクトルである。ゲーム装置3が例えば1フレーム時間毎に傾きベクトルを算出する場合には、前回ベクトルvbhとは、1フレーム前に算出された傾きベクトルである。なお、仮ベクトルと同様、傾きベクトルおよび前回ベクトルはともに、長さが1の単位ベクトルであり、かつ、x’y’座標系の原点を始点とするベクトルである。
図10に示すように、傾きベクトルvahは、前回ベクトルvbhの方向を仮ベクトルvhの方向に所定の度合いで近づけたベクトルとなる。以下では、当該所定の度合いを有効度k(0≦k≦1)として表す。具体的には、傾きベクトルvahは、原点から点Pへの方向を向き、長さが1のベクトルとなる。点Pは、前回ベクトルvbhの終点と仮ベクトルvhの終点とを結ぶ線分をk:(1−k)に内分する点である。有効度kは、第1の実施形態においては、仮ベクトルvhの長さに基づいて算出される。なお、有効度kの算出方法の詳細については後述する。
ここで、コントローラ7がプレイヤの操作によって移動または回転させられている途中の状態では、重力加速度以外の加速度も検出されるため、加速度ベクトルをそのままコントローラ7の傾きとして見なすことができない。そのため、加速度ベクトルをそのままコントローラ7の傾きと見なして当該傾きを算出すると、正確な傾きを算出することができない。以下、このことを図11および図12を用いて説明する。
図11は、コントローラ7が静止している状態を示す図である。なお、図11および図12は、コントローラ7を後ろ側から見た図である。図11に示す状態においては、加速度センサ37によって検出される加速度ベクトルVa1は重力加速度の方向Gと一致する。したがって、この加速度ベクトルVa1をそのままコントローラ7の傾きと見なして当該傾きを算出すれば、傾きを正確に算出することができる。一方、図12は、図11に示す状態から図における反時計回りにコントローラ7を回転させている途中の状態を示す図である。図12に示す状態においては、実際の重力加速度の方向Gよりも時計回りに(コントローラ7の移動方向の逆方向に)ずれた加速度ベクトルVa2が検出されている。図12に示すように、加速度ベクトルの向きは、コントローラ7の傾きの変化よりも急激に変化してしまう。また、加速度ベクトルVa2の長さは、重力加速度と一致する加速度ベクトルVa1の長さから変化する(図12に示す場合は増加する)。このような変化の原因として、例えば遠心力や、手のブレ等による加速度の影響によるもの等が考えられる。したがって、この加速度ベクトルVa2をそのままコントローラ7の傾きと見なして当該傾きを算出すれば、傾きを正確に算出することができない。このように、コントローラ7がプレイヤによって移動または回転させられている途中の状態では、重力加速度以外の加速度を含む加速度が加速度センサ37によって検出される場合が多いので、傾きを正確に算出することができない。なお、コントローラ7が静止するのを待って静止後の加速度ベクトルを用いてコントローラ7の傾きを算出する方法も考えられるが、この方法では傾きをリアルタイムに算出することができないので、操作に高い応答性が要求されるゲーム装置等において当該方法を適用することは困難である。
そこで、第1の実施形態によれば、今回の加速度ベクトルの向きをそのままコントローラ7の傾きとして見なすのではなく、今回の加速度ベクトルの向き(仮ベクトルの向き)に加えて前回の傾きベクトルの向きを反映して今回のコントローラ7の傾きを算出する(図10参照)。つまり、加速度ベクトルの向きが前回から急激に変化した場合でも、傾きベクトルの向きの変化は加速度ベクトルの向きの変化に加えて緩やかになるように傾きが算出される。図12に示す場合を例にとって説明すると、傾きベクトルの方向は前回ベクトルVa1と仮ベクトルVa2との間の方向(例えば、ベクトルVa3)となる。これによって、加速度ベクトルの向きをそのままコントローラ7の傾きと見なす場合に比べて、正確なコントローラ7の傾きにより近い傾きを示す傾きベクトルを得ることができる。したがって、第1の実施形態によれば、より正確にコントローラ7の傾きを算出することができる。
さらに、第1の実施形態によれば、傾きベクトルを算出するために用いられる情報は、今回検出された加速度ベクトル、および、前回に算出された傾きベクトル(すなわち、前回ベクトル)である。つまり、第1の実施形態によれば、加速度センサ37によって加速度ベクトルが得られた時点ですでにゲーム装置3が有している情報のみを用いてコントローラ7の傾きを算出することができるので、コントローラ7の傾きをリアルタイムに算出することができる。
次に、ゲーム装置3において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図13を用いて説明する。図13は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図13に示すように、メインメモリ13には、ゲームプログラム51、操作データ52、および算出処理用データ53等が記憶される。なお、メインメモリ13には、図13に示すデータの他、ゲームに登場するキャラクタの画像データや、キャラクタの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
ゲームプログラム51は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム51には、傾き算出プログラム511が含まれる。傾き算出プログラム511は、加速度センサ37の出力を用いてコントローラ7の傾きを算出する処理(傾き算出処理)を行うためのプログラムである。ゲームプログラム51には、傾き算出プログラム511の他、ゲーム処理の実行に必要なプログラムが含まれている。
操作データ52は、コントローラ7からゲーム装置3へ送信されてきて、メインメモリ13に記憶される。操作データ52には、加速度データ521が含まれる。加速度データ521は、加速度センサ37によって検出された加速度ベクトルVaを示すデータである。ここでは、加速度データ521は、図7に示すxyzの3軸の方向に関する加速度を示すデータである。なお、操作データ52には、加速度データ521の他、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を示すデータや、操作部32の各ボタンに対して行われた操作内容を示すデータが含まれている。
算出処理用データ53は、傾き算出処理において用いられるデータである。算出処理用データ53には、仮データ531、傾きデータ532、前回データ533、2軸長さデータ534、有効度データ535、および第1変数データ536が含まれる。
仮データ531は、上記仮ベクトルvhを示すデータである。つまり、仮データ531は、加速度データ521から一意に決められる傾きを示し、換言すれば、加速度データが重力加速度を表すと仮定したときに出力すべきコントローラ7の傾きを示す。傾きデータ532は、上記傾きベクトルvahを示すデータである。傾きデータ532は、基本的には1フレーム時間毎に算出されるが、加速度データ521により示される加速度ベクトルVaが後述の条件(ステップS12)を満たす場合、傾きデータ532が算出されないこともある。また、前回データ533は、上記前回ベクトルを示すデータである。傾きデータ532が新たに算出されてメインメモリ13が更新された場合、次のフレームにおいて傾きベクトルを算出する際に用いるために当該傾きデータが新たな前回データ533としてメインメモリ13に更新して記憶される。
2軸長さデータ534は、上記加速度データ521により示される加速度ベクトルVaのxy方向の2軸方向に関する長さ(加速度ベクトルVaのx成分およびy成分を各成分とするベクトルの長さ)L1を示すデータである。当該長さL1は、有効度kを算出するため等に用いられる。有効度データ535は、前回ベクトルvbhを仮ベクトルvhに近づける度合いを表す有効度kを示すデータである。詳細は後述するが、有効度kは、加速度ベクトルにおいて重力加速度がデータに寄与する度合い(加速度ベクトルの方向が重力方向を向く度合い)を表すための変数である。
第1変数データ536は、加速度センサ37によって検出される重力加速度の大きさを1とした場合において、加速度ベクトルの長さL1が1にどれだけ近いかを表す第1変数d1を示すデータである。第1変数は、有効度kを算出するために用いられる。
次に、ゲーム装置3において行われるゲーム処理の詳細を、図14および図15を用いて説明する。図14は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図14に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図14に示すフローチャートにおいては、ゲーム処理のうち、加速度センサ37によって検出された加速度からコントローラ7の傾きを算出するための処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
まず、ステップS1において、ゲーム空間が構築されてモニタ2に表示される。CPU10は、例えば3次元のゲーム空間(2次元でもよい)を構築し、さらに、ゲーム空間に登場するオブジェクトを所定の初期位置に配置する。以上のように構築されたゲーム空間を表すゲーム画像が生成され、生成されたゲーム画像がモニタ2に表示される。以降、ステップS2〜S6の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
ステップS2において、CPU10は、コントローラ7から操作データを取得する。すなわち、コントローラ7は所定時間間隔(例えば、1フレーム時間間隔)で操作データをゲーム装置3へ送信してくるので、CPU10は、送信されてきた操作データをメインメモリ13に記憶する。この操作データには、加速度データが含まれている。
続くステップS3において、CPU10が傾き算出プログラム511を実行することによって傾き算出処理が実行される。傾き算出処理においては、ステップS2でメインメモリ13に記憶された操作データ52に含まれる加速度データ521に基づいてコントローラ7の傾きが算出される。以下、図15を用いて傾き算出処理の詳細を説明する。
図15は、図14に示すステップS3の傾き算出処理の詳細を示すフローチャートである。傾き算出処理においてはまずステップS11において、加速度ベクトルVaのxy成分に関する長さL1が算出される。加速度ベクトルVaを(ax,ay,az)とすると、長さL1は次の式に従って算出することができる。
L1=(ax2 +ay2 1/2
CPU10は、算出された長さL1を示すデータを2軸長さデータ534としてメインメモリ13に記憶する。
続くステップS12において、ステップS11で算出された長さL1が所定範囲内の値であるか否かが判定される。この所定範囲は予め決められた範囲であり、ここでは、0<L1≦2の範囲とする。ステップS12の判定において、長さL1が所定範囲内の値である場合、ステップS13の処理が実行される。一方、長さL1が所定範囲内の値でない場合、ステップS13〜S18の処理がスキップされて、CPU10は傾き算出処理を終了する。つまり、ステップS12における判定結果が否定である場合、コントローラ7の傾きは算出されない。
上記ステップS12は、ステップS1で算出された長さL1が、重力加速度の大きさ(ここでは、1)を中心とした所定範囲(ここでは、0<L1≦2)に含まれない場合に、コントローラ7の傾きを算出しないようにするための処理である。ここで、長さL1が所定範囲に含まれない場合とは、コントローラ7がプレイヤ等によって激しく動かされた結果、加速度センサ37によって検出される加速度に重力加速度以外の成分が多く含まれている場合であると考えられる。このような場合、加速度センサ37の出力から正確な傾きを得ることは困難である。そこで、本実施形態では、ステップS12の判定処理を行うことによって、上記のような場合に不正確な傾きが算出されることを防止するようにしている。
ステップS13においては、仮ベクトルvhが算出される。仮ベクトルvhは、上記加速度ベクトルVaから算出することができる。CPU10は、メインメモリ13に記憶されている加速度データ521および2軸長さデータ534を参照して、以下の式に従って仮ベクトルvhの各成分(hx,hy)を算出する。
hx=−ay/L1
hy=−ax/L1
なお、上式において、axは加速度ベクトルVaのx成分値であり、ayは加速度ベクトルVaのy成分値である。上式において、hxを算出するために−ayを用い、hyを算出するために−axを用いているのは、加速度ベクトルの座標系(xyz座標系)から仮ベクトルの座標系(x’y’座標系)への座標変換を行うためである。また、−ayおよび−axの各値をそれぞれ長さL1で除算しているのは、仮ベクトルvhの長さを1とするためである。CPU10は、算出された仮ベクトルvh(=(hx,hy))を示すデータを仮データ531としてメインメモリ13に記憶する。
続くステップS14〜S16の一連の処理において、長さL1に基づいて第1変数d1が算出される。これら一連の処理においては、第1変数d1は、0≦d1≦1の範囲で、長さL1の値が1に近いほど第1変数d1の値が大きくなるように算出される。まず、ステップS14において、長さL1が1より小さいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている2軸長さデータ534を参照することによって長さL1の値を知ることができる。ステップS14の判定において、長さL1が1よりも小さい場合、ステップS15の処理が実行される。一方、長さL1が1以上である場合、ステップS16の処理が実行される。
ステップS15においては、長さL1の値がそのまま第1変数d1の値とされる。一方、ステップS16においては、第1変数d1は次の式に従って算出される。
d1=2−L1
つまり、第1変数d1は、長さL1の長さ1に対する近さとして表されることになる。ステップS15およびS16において得られた第1変数d1を示すデータは、第1変数データ536としてメインメモリ13に記憶される。ステップS15またはS16の次にステップS17の処理が実行される。
ステップS17において、第1変数d1に基づいて有効度kが算出される。上述したように、有効度kは、傾きベクトルvahを算出する際において、前回ベクトルvbhの方向を仮ベクトルvhの方向に近づける度合いを示す変数である。具体的には、CPU10は、以下の式に従って有効度kを算出する。
k=d12 ×A
上式において、A(>0)は傾き算出プログラム511において予め定められた定数であり、定数Aを示すデータはメインメモリ13に予め記憶されている。CPU10は、算出した有効度kを示すデータを、有効度データ535としてメインメモリ13に記憶する。上式からわかるように、有効度kは、0≦k≦1の範囲で、第1変数d1の値が大きくなるほど大きくなる。
続くステップS18において、傾きベクトルvahが算出される。本実施形態においては、傾きベクトルvahは、仮ベクトルvh、前回ベクトルvbh、および有効度kを用いて算出される。具体的には、CPU10は、まず、以下の式に従ってベクトル(ahx’,ahy’)を算出する。
ahx’=(hx−bhx)×k+bhx
ahy’=(hy−bhy)×k+bhy
上式においては、仮ベクトルvhを(hx,hy)とし、前回ベクトルvbhを(bhx,bhy)とする。上式によって算出されるベクトル(ahx’,ahy’)は、傾きベクトルvahと同じ方向を向くベクトルである。次に、CPU10は、以下の式に従って上記ベクトルを単位ベクトルに補正することによって傾きベクトルvah=(ahx,ahy)を算出する。
ahx=ahx’/((ahx’2 +ahy’2 1/2
ahy=ahy’/((ahx’2 +ahy’2 1/2
上式によって傾きベクトルvahが算出される。CPU10は、算出された傾きベクトルを示すデータを傾きデータ532としてメインメモリ13に更新して記憶する。また、次のフレームにおいて傾きベクトルを算出する際に用いるために、更新後の傾きデータ532の内容を前回データ533としてメインメモリ13に記憶する。上記ステップS18の処理が完了すると、CPU10は傾き算出処理を終了する。
なお、コントローラ7が激しく動かされている場合ほど上記長さL1の値は重力加速度の大きさ(ここでは、1)から離れていくので、長さL1によって、コントローラ7が激しく動かされているか、ゆっくりと動かされているか、または静止しているかといったコントローラ7の移動状況を知ることができる。また、長さL1の値が1に近いほど有効度kは大きくなるので、本実施形態では、コントローラ7が激しく動かされている場合ほど有効度kの値が小さくなり、コントローラ7が静止状態に近いほど有効度kの値が大きくなる。つまり、ステップS18では、コントローラ7が激しく動かされている場合には、加速度センサ37が重力加速度を正確に検出できていないと判断できるので、有効度kが小さくなり、傾きベクトルは前回ベクトルに近いものとなる。逆に、コントローラ7静止状態に近い場合には、加速度センサ37が重力加速度のみを正確に検出できていると判断できるので、有効度kが大きくなり、傾きベクトルは仮ベクトルに近いものとなる。ステップS18では、加速度センサ37の出力が信頼できるものであるか否か(重力加速度を表しているか否か)の度合いに応じて仮ベクトルと前回ベクトルとの比率(有効度k)を変化させることによって、傾きベクトルをより正確に算出することができる。
図14の説明に戻り、ステップS3の次にステップS4において、ステップS3で算出されたコントローラ7の傾きに基づくゲーム処理が実行される。具体的には、メインメモリ13に記憶されている傾きデータ532が当該ゲーム処理を実行するプログラムに渡され(出力され)、当該プログラムによって当該ゲーム処理が実行される。当該ゲーム処理としては、例えば、ゲーム空間に登場するプレイヤキャラクタを上記傾きに応じて移動させる処理等が実行される。なお、傾き算出処理において傾きが算出されなかった場合(すなわち、図15に示すステップS12の判定結果が否定の場合)には、CPU10は、前回に算出された傾きベクトル(前回ベクトル)により示される傾きに基づいてゲーム処理を行ってもよいし、プレイヤによる入力が行われなかったものとしてゲーム処理を行ってもよい。
続くステップS5において、ステップS4で実行されたゲーム処理の結果を反映したゲーム画像が生成されて、ゲーム画像がモニタ2に表示される。続くステップS6において、CPU10はゲームを終了するか否かを判定する。ステップS6の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップS6の判定結果が否定である場合、ステップS2の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップS2〜S6の処理ループが実行される。一方、ステップS6の判定結果が肯定である場合、CPU10は図14に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
以上のように、本実施形態によれば、仮ベクトルと前回ベクトルとを用いて傾きベクトルを算出することによって、コントローラ7の傾きをリアルタイムに算出することができる。また、前回ベクトルを仮ベクトルに近づける度合い(有効度k)を検出された加速度の大きさに応じて変化させることによって、傾きをより正確に算出することができる。
なお、上記第1の実施形態においては、xy方向に関するコントローラ7の傾きを算出する場合を例として説明したが、xyz方向に関するコントローラ7の傾きを算出する場合にも本発明を適用することができる。この場合には、上記長さL1に代えて加速度ベクトルの長さを用いるようにし、仮ベクトルおよび傾きベクトルを3次元のベクトルで算出するようにすればよい。
(第2の実施形態)
次に、第2の実施形態に係る傾き算出装置の一例であるゲーム装置を含むゲームシステムについて説明する。第2の実施形態に係るゲームシステムのハード構成は第1の実施形態に係るゲームシステム1と同様であり、第2の実施形態においては、傾き算出処理の内容が第1の実施形態と異なっている。以下、第1の実施形態との相違点を中心に第2の実施形態について説明する。
図16は、第2の実施形態におけるゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。なお、図16において図13と同じデータについては図13と同じ参照符号を付し、詳細な説明を省略する。
第2の実施形態においては、算出処理用データ53には、図13に示したデータの他に、第2加速度データ61、3軸長さデータ62、および第2変数データ63が含まれる。なお、第2の実施形態においては、第2加速度データ61と区別する目的で加速度データ521を第1加速度データ521と呼ぶが、加速度データ521と第1加速度データ521とは同じ内容を示す。
第2加速度データ61は、加速度センサ37によって検出された加速度であって、xy方向に関する加速度を示す。すなわち、第2加速度データ61は、2次元のベクトルで表される。なお、第2の実施形態においては、加速度センサ37によって検出される3次元の加速度ベクトルを第1加速度ベクトルVa=(ax,ay,az)と呼び、xy方向に関する加速度を示す加速度ベクトルを第2加速度ベクトルVc=(cx、cy)と呼ぶ。
3軸長さデータ62は、上記第1加速度ベクトルVaの長さ(第1加速度ベクトルVaのx成分、y成分およびz成分の各成分を成分とする3次元ベクトルの長さ)L2を示すデータである。
第2変数データ63は、加速度センサ37によって検出される重力加速度の大きさを1とした場合において、第1加速度ベクトルの長さL2が1にどれだけ近いかを示す第2変数d2を示すデータである。第2変数d2は、第1変数d1とともに有効度kを算出するために用いられる。
図17および図18は、第2の実施形態において実行される傾き算出処理の詳細を示すフローチャートである。なお、第2の実施形態におけるゲーム処理は、図17および図18に示す傾き算出処理以外の処理については第1の実施形態と同様である。
第2の実施形態における傾き算出処理においては、まずステップS21において、第1加速度ベクトルVaの3軸方向に関する長さL2が算出される。第1加速度ベクトルVaを(ax,ay,az)とすると、長さL2は次の式に従って算出することができる。
L2=(ax2 +ay2 +az2 1/2
CPU10は、算出された長さL2を示すデータを3軸長さデータ62としてメインメモリ13に記憶する。
続くステップS22において、ステップS21で算出された長さL2が所定範囲内の値であるか否かが判定される。この所定範囲は予め決められた範囲であり、ここでは、0<L2≦2の範囲とする。ステップS22の判定において、長さL2が所定範囲内の値である場合、ステップS23の処理が実行される。一方、長さL2が所定範囲内の値でない場合、ステップS23〜S36の処理がスキップされて、CPU10は傾き算出処理を終了する。つまり、ステップS22における判定結果が否定である場合、コントローラ7の傾きは算出されない。上記ステップS22は、第1の実施形態におけるステップS12と同様、加速度センサ37の出力から正確な傾きを得ることは困難である場合、すなわち、加速度センサ37によって検出される加速度に重力加速度以外の成分が多く含まれている場合に不正確な傾きが算出されることを防止するための処理である。
続くステップS23〜S25の一連の処理において、長さL2に基づいて第2変数d2が算出される。これら一連の処理においては、第2変数d2は、0≦d2≦1の範囲で、長さL2の値が1に近いほど第2変数d2の値が大きくなるように算出される。まず、ステップS23において、長さL2が1より小さいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている3軸長さデータ62を参照することによって長さL2の値を知ることができる。ステップS23の判定において、長さL2が1よりも小さい場合、ステップS24の処理が実行される。一方、長さL2が1以上である場合、ステップS25の処理が実行される。
ステップS24においては、長さL2の値がそのまま第2変数d2の値とされる。一方、ステップS25においては、第2変数d2は次の式に従って算出される。
d2=2−L2
ステップS24およびS25において得られた第2変数d2を示すデータは、第2変数データ63としてメインメモリ13に記憶される。ステップS24またはS25の次にステップS26の処理が実行される。
ステップS26において、第1加速度ベクトルVaに基づいて第2加速度ベクトルVcが算出される。第1加速度ベクトルVaを(ax,ay,az)とすると、第2加速度ベクトルVc=(cx,cy)は次の式に従って算出することができる。
cx=ax
cy=ay
CPU10は、算出された第2加速度ベクトルVcを示すデータを第2加速度データ61としてメインメモリ13に記憶する。
続くステップS27において、第2加速度ベクトルVcの2軸方向に関する長さL1が算出される。長さL1は、次の式に従って算出することができる。
L1=(cx2 +cy21/2
CPU10は、算出された長さL1を示すデータを2軸長さデータ534としてメインメモリ13に記憶する。
続くステップS28において、ステップS27で算出された長さL1が0であるか否かが判定される。ステップS28の判定において、長さL1が0でない場合、ステップS29の処理が実行される。一方、長さL1が0である場合、ステップS29〜S34の処理がスキップされて、CPU10は傾き算出処理を終了する。つまり、ステップS28における判定結果が肯定である場合、コントローラ7の傾きは算出されない。
上記ステップS28において長さL1が0である場合とは、例えばコントローラ7が縦方向を向いた場合と考えられる。この場合、算出すべき、コントローラ7のxy方向に関する傾きを算出することができないので、第2の実施形態においてはステップS28において以降の処理をスキップするようにしている。
ステップS29においては、仮ベクトルvhが算出される。ステップS29において、仮ベクトルvhは次の式によって算出することができる。
hx=−cy/L1
hy=−cx/L1
CPU10は、算出された仮ベクトルvh(=(hx,hy))を示すデータを仮データ531としてメインメモリ13に記憶する。
なお、上記第1および第2の実施形態においては、コントローラ7を基準としたxyz座標系におけるxy方向の傾きを算出することを目的としているので、仮ベクトルvhは上記ステップS13およびS29のように算出された。ここで、コントローラ7が存在する空間を基準とした座標系における傾きを算出することを目的とする場合には、以下のように第2加速度ベクトルを算出してもよい。例えば、ステップS26において、第2加速度ベクトルVc=(cx,cy)は次の式に従って算出してもよい。
cx=ax
cy=(ay2 +az2 1/2 (ay<0),cy=−(ay2 +az2 1/2 (ay≧0)
このように第2加速度ベクトルVcを算出することによって、空間内での絶対的な傾きが算出できる。
続くステップS30〜S32の一連の処理において、長さL1に基づいて第1変数d1が算出される。これら一連の処理においては、第1変数d1は、0≦d3≦1の範囲で、長さL1の値が1に近いほど第1変数d1の値が大きくなるように算出される。なお、ステップS30〜S32の処理は、ステップS14〜S16の処理と同じである。ステップS31およびS32において得られた第1変数d1を示すデータは、第1変数データ536としてメインメモリ13に記憶される。ステップS31またはS32の次にステップS33の処理が実行される。
ステップS33において、第1変数d1および第2変数d2に基づいて有効度kが算出される。具体的には、CPU10は、以下の式に従って有効度kを算出する。
k=d12 ×d22 ×A
上式において、A(>0)は傾き算出プログラム511において予め定められた定数であり、定数Aを示すデータはメインメモリ13に予め記憶されている。CPU10は、算出した有効度kを示すデータを、有効度データ535としてメインメモリ13に記憶する。上式からわかるように、有効度kは、0≦k≦1の範囲で、第1変数d1の値が大きくなるほど大きくなり、第2変数d2の値が大きくなるほど大きくなる。
続くステップS34において、傾きベクトルvahが算出される。第2の実施形態における傾きベクトルの算出方法は第1の実施形態と同じである。つまり、ステップS34の処理はステップS18の処理と同じである。上記ステップS34の処理が完了すると、CPU10は傾き算出処理を終了する。
以上のように、第2の実施形態では、xy方向に関するコントローラ7の傾きを算出するために、xyz方向に関する加速度を用いる。具体的には、第2の実施形態では、ゲーム装置3は、xyz方向に関する加速度の大きさ(長さL2)に基づいて有効度kを変化させる。この大きさは、コントローラ7の加速度を長さL1よりも正確に表しているので、この大きさによってコントローラ7の移動状況をより正確に算出することができ、当該大きさに応じて有効度kを変化させることによって、コントローラ7の傾きをより正確に算出することができる。なお、上記第2の実施形態においては長さL1および長さL2の両方を用いて有効度kを算出するようにしたが、他の実施形態においては、いずれか一方のみを用いて有効度kを算出するようにしてもよい。
なお、上記第1および第2の実施形態においては、コントローラ7の傾きをベクトルとして表すものとしたが、コントローラ7の傾きは、ある方向を基準とした角度等、他の表現によって表されるものであってもよい。
以上のように、本発明は、加速度検出手段によって検出された加速度を用いて、リアルタイムに装置の傾きを算出すること等を目的として、例えば上記のようなゲーム装置またはゲームプログラムに利用することが可能である。
本発明の一実施形態に係る座標算出装置一例であるゲーム装置を含むゲームシステムの外観図 ゲーム装置3の機能ブロック図 コントローラ7の斜視図 コントローラ7の斜視図 コントローラ7を前方から見た図 コントローラ7の内部構造を示す図 コントローラ7の内部構造を示す図 コントローラ7の構成を示すブロック図 コントローラ7の傾きと加速度センサの出力との関係を示す図 コントローラ7の傾きと加速度センサの出力との関係を示す図 コントローラ7を用いてゲーム操作するときの状態を概説する図解図 傾き算出処理を説明するための図 コントローラ7が静止している状態を示す図 図11に示す状態から図における反時計回りにコントローラ7を回転させている途中の状態を示す図 ゲーム装置3のメインメモリ13に記憶される主なデータを示す図 ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート 図14に示すステップS3の傾き算出処理の詳細を示すフローチャート 第2の実施形態におけるゲーム装置3のメインメモリ13に記憶される主なデータを示す図 第2の実施形態において実行される傾き算出処理の詳細を示すフローチャート 第2の実施形態において実行される傾き算出処理の詳細を示すフローチャート
符号の説明
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 ゲームプログラム
511 傾き算出プログラム

Claims (20)

  1. 少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段を備えた入力装置の傾きを算出する傾き算出装置であって、
    前記加速度検出手段から出力される加速度データから一意に決められる傾きを示す仮データを逐次生成する仮データ生成手段と、
    前回算出された傾きを前記仮データにより示される傾きに所定の度合いで近づけることによって新たな傾きを逐次算出する傾き算出手段とを備える、傾き算出装置。
  2. 前記仮データは、前記加速度データが重力加速度のみを示すと仮定した場合に想定される入力装置の傾きを示す、請求項1に記載の傾き算出装置。
  3. 前記加速度検出手段は、3軸方向の加速度を検出することが可能であり、
    前記傾き算出手段は、前記3軸方向のうちの2軸方向に関する傾きを算出し、
    前記仮データ生成手段は、前記3軸方向の加速度を示す加速度データから、前記傾き算出手段によって算出される傾きに対応する2軸方向に関する傾きを示す仮データを生成する、請求項1または請求項2に記載の傾き算出装置。
  4. 前記加速度データにより示される加速度の大きさを算出する大きさ算出手段をさらに備え、
    前記傾き算出手段は、前記大きさ算出手段によって算出される加速度の大きさが重力加速度の大きさに近いほど前記度合いが大きくなるように、当該加速度の大きさに応じて当該度合いを逐次変化させる、請求項1ないし請求項3のいずれかに記載の傾き算出装置。
  5. 前記加速度データにより示される加速度の大きさを算出する大きさ算出手段をさらに備え、
    前記傾き算出手段は、前記大きさ算出手段によって算出される加速度の大きさと重力加速度の大きさとの差が所定のしきい値以下のときのみ傾きを算出する、請求項1または請求項2に記載の傾き算出装置。
  6. 少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段を備えた入力装置の傾きを算出する算出装置のコンピュータにおいて実行されるプログラムであって、
    前記加速度検出手段から出力される加速度データから一意に決められる傾きを示す仮データを逐次生成する仮データ生成ステップと、
    前回算出された傾きを前記仮データにより示される傾きに所定の度合いで近づけることによって新たな傾きを逐次算出する傾き算出ステップとを前記コンピュータに実行させる傾き算出プログラム。
  7. 前記仮データは、前記加速度データが重力加速度のみを示すと仮定した場合に想定される入力装置の傾きを示す、請求項6に記載の傾き算出プログラム。
  8. 前記加速度検出手段は、3軸方向の加速度を検出することが可能であり、
    前記傾き算出ステップにおいて、前記コンピュータは、前記3軸方向のうちの2軸方向に関する傾きを算出し、
    前記仮データ生成ステップにおいて、前記コンピュータは、前記3軸方向の加速度を示す加速度データから、前記傾き算出ステップにおいて算出される傾きに対応する2軸方向に関する傾きを示す仮データを生成する、請求項6または請求項7に記載の傾き算出プログラム。
  9. 前記加速度データにより示される加速度の大きさを算出する大きさ算出ステップをさらに前記コンピュータに実行させ、
    前記傾き算出ステップにおいて、前記コンピュータは、前記大きさ算出ステップにおいて算出される加速度の大きさが重力加速度の大きさに近いほど前記度合いが大きくなるように、当該加速度の大きさに応じて当該度合いを逐次変化させる、請求項6ないし請求項8のいずれかに記載の傾き算出プログラム。
  10. 前記加速度データにより示される加速度の大きさを算出する大きさ算出ステップをさらに前記コンピュータに実行させ、
    前記傾き算出ステップにおいて、前記コンピュータは、前記大きさ算出ステップにおいて算出される加速度の大きさと重力加速度の大きさとの差が所定のしきい値以下のときのみ傾きを算出する、請求項6または請求項7に記載の傾き算出プログラム。
  11. 少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段を備えた入力装置の傾きを算出し、算出された傾きをゲームの操作入力として利用するゲーム装置であって、
    前記加速度検出手段から出力される加速度データから一意に決められる傾きを示す仮データを逐次生成する仮データ生成手段と、
    前回算出された傾きを前記仮データにより示される傾きに所定の度合いで近づけることによって新たな傾きを逐次算出する傾き算出手段とを備える、ゲーム装置。
  12. 前記仮データは、前記加速度データが重力加速度のみを示すと仮定した場合に想定される入力装置の傾きを示す、請求項11に記載のゲーム装置。
  13. 前記加速度検出手段は、3軸方向の加速度を検出することが可能であり、
    前記傾き算出手段は、前記3軸方向のうちの2軸方向に関する傾きを算出し、
    前記仮データ生成手段は、前記3軸方向の加速度を示す加速度データから、前記傾き算出手段によって算出される傾きに対応する2軸方向に関する傾きを示す仮データを生成する、請求項11または請求項12に記載のゲーム装置。
  14. 前記加速度データにより示される加速度の大きさを算出する大きさ算出手段をさらに備え、
    前記傾き算出手段は、前記大きさ算出手段によって算出される加速度の大きさが重力加速度の大きさに近いほど前記度合いが大きくなるように、当該加速度の大きさに応じて当該度合いを逐次変化させる、請求項11ないし請求項13のいずれかに記載のゲーム装置。
  15. 前記加速度データにより示される加速度の大きさを算出する大きさ算出手段をさらに備え、
    前記傾き算出手段は、前記大きさ算出手段によって算出される加速度の大きさと重力加速度の大きさとの差が所定のしきい値以下のときのみ傾きを算出する、請求項11または請求項12に記載のゲーム装置。
  16. 少なくとも2軸方向の加速度を逐次検出可能な加速度検出手段を備えた入力装置の傾きを算出し、算出された傾きをゲームの操作入力として利用するゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
    前記加速度検出手段から出力される加速度データから一意に決められる傾きを示す仮データを逐次生成する仮データ生成ステップと、
    前回算出された傾きを前記仮データにより示される傾きに所定の度合いで近づけることによって新たな傾きを逐次算出する傾き算出ステップとを前記コンピュータに実行させるゲームプログラム。
  17. 前記仮データは、前記加速度データが重力加速度のみを示すと仮定した場合に想定される入力装置の傾きを示す、請求項16に記載のゲームプログラム。
  18. 前記加速度検出手段は、3軸方向の加速度を検出することが可能であり、
    前記傾き算出ステップにおいて、前記コンピュータは、前記3軸方向のうちの2軸方向に関する傾きを算出し、
    前記仮データ生成ステップにおいて、前記コンピュータは、前記3軸方向の加速度を示す加速度データから、前記傾き算出ステップにおいて算出される傾きに対応する2軸方向に関する傾きを示す仮データを生成する、請求項16または請求項17に記載のゲームプログラム。
  19. 前記加速度データにより示される加速度の大きさを算出する大きさ算出ステップをさらに前記コンピュータに実行させ、
    前記傾き算出ステップにおいて、前記コンピュータは、前記大きさ算出ステップにおいて算出される加速度の大きさが重力加速度の大きさに近いほど前記度合いが大きくなるように、当該加速度の大きさに応じて当該度合いを逐次変化させる、請求項16ないし請求項18のいずれかに記載のゲームプログラム。
  20. 前記加速度データにより示される加速度の大きさを算出する大きさ算出ステップをさらに前記コンピュータに実行させ、
    前記傾き算出ステップにおいて、前記コンピュータは、前記大きさ算出ステップにおいて算出される加速度の大きさと重力加速度の大きさとの差が所定のしきい値以下のときのみ傾きを算出する、請求項16または請求項17に記載のゲームプログラム。

JP2006079485A 2006-03-22 2006-03-22 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム Active JP4547346B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006079485A JP4547346B2 (ja) 2006-03-22 2006-03-22 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム
US11/408,963 US7379841B2 (en) 2006-03-22 2006-04-24 Inclination calculation apparatus and inclination calculation program, and game apparatus and game program
EP06008518.0A EP1840704B1 (en) 2006-03-22 2006-04-25 Inclination calculation apparatus and inclination calculation program, and game apparatus and game program
US12/081,554 US7920985B2 (en) 2006-03-22 2008-04-17 Inclination calculation apparatus and inclination calculation program, and game apparatus and game program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006079485A JP4547346B2 (ja) 2006-03-22 2006-03-22 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム

Publications (2)

Publication Number Publication Date
JP2007257198A true JP2007257198A (ja) 2007-10-04
JP4547346B2 JP4547346B2 (ja) 2010-09-22

Family

ID=37908270

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006079485A Active JP4547346B2 (ja) 2006-03-22 2006-03-22 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム

Country Status (3)

Country Link
US (2) US7379841B2 (ja)
EP (1) EP1840704B1 (ja)
JP (1) JP4547346B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7826641B2 (en) * 2004-01-30 2010-11-02 Electronic Scripting Products, Inc. Apparatus and method for determining an absolute pose of a manipulated object in a real three-dimensional environment with invariant features
US7961909B2 (en) 2006-03-08 2011-06-14 Electronic Scripting Products, Inc. Computer interface employing a manipulated object with absolute pose detection component and a display
US9229540B2 (en) 2004-01-30 2016-01-05 Electronic Scripting Products, Inc. Deriving input from six degrees of freedom interfaces
JP4918376B2 (ja) * 2007-02-23 2012-04-18 任天堂株式会社 情報処理プログラムおよび情報処理装置
JP5060798B2 (ja) * 2007-02-23 2012-10-31 任天堂株式会社 情報処理プログラムおよび情報処理装置
JP5420824B2 (ja) * 2007-03-30 2014-02-19 任天堂株式会社 ゲーム装置およびゲームプログラム
JP4916390B2 (ja) * 2007-06-20 2012-04-11 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
US20100292007A1 (en) 2007-06-26 2010-11-18 Nintendo Of America Inc. Systems and methods for control device including a movement detector
JP5224832B2 (ja) * 2008-01-21 2013-07-03 任天堂株式会社 情報処理プログラムおよび情報処理装置
US8517835B2 (en) * 2009-02-20 2013-08-27 Activision Publishing, Inc. Video game and peripheral for same
EP2228109B1 (en) * 2009-03-09 2021-03-24 Nintendo Co., Ltd. Information processing apparatus, storage medium having information processing program stored therein, information processing system, and display range control method
EP2251067B1 (en) * 2009-05-07 2018-01-03 Nintendo Co., Ltd. Storage medium storing information processing program, and information processing apparatus
JP5507880B2 (ja) * 2009-05-07 2014-05-28 任天堂株式会社 情報処理プログラムおよび情報処理装置
WO2011011898A1 (en) 2009-07-28 2011-02-03 Quasmo Ag Input system, and method
US9101831B2 (en) * 2009-11-24 2015-08-11 Activision Publishing, Inc. Video game and peripheral for same
EP2561724A4 (en) * 2010-04-21 2013-10-02 Ericsson Telefon Ab L M METHOD FOR COMMUNICATING FREQUENCY REFERENCE TO BASE STATION
US11577159B2 (en) 2016-05-26 2023-02-14 Electronic Scripting Products Inc. Realistic virtual/augmented/mixed reality viewing and interactions
JP6877995B2 (ja) 2016-12-27 2021-05-26 任天堂株式会社 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
JP6594920B2 (ja) 2017-03-01 2019-10-23 任天堂株式会社 ゲームシステム、ゲーム装置、ゲームプログラム、およびゲーム処理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0385676A (ja) * 1989-08-30 1991-04-10 Olympus Optical Co Ltd 画像データ補間装置
JPH09318382A (ja) * 1996-05-27 1997-12-12 Nec Corp 姿勢角検出装置及び方法
JPH11211474A (ja) * 1998-01-20 1999-08-06 Tokin Corp 姿勢角検出装置
JP2003225467A (ja) * 2002-02-01 2003-08-12 Nintendo Co Ltd ゲーム装置及びゲームプログラム
WO2006016671A1 (ja) * 2004-08-12 2006-02-16 Asahi Kasei Emd Corporation 加速度計測装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574479A (en) 1994-01-07 1996-11-12 Selectech, Ltd. Optical system for determining the roll orientation of a remote unit relative to a base unit
US5615132A (en) 1994-01-21 1997-03-25 Crossbow Technology, Inc. Method and apparatus for determining position and orientation of a moveable object using accelerometers
GB2289756B (en) 1994-05-26 1998-11-11 Alps Electric Co Ltd Space coordinates detecting device and input apparatus using same
US5757360A (en) * 1995-05-03 1998-05-26 Mitsubishi Electric Information Technology Center America, Inc. Hand held computer control device
US5902968A (en) * 1996-02-20 1999-05-11 Ricoh Company, Ltd. Pen-shaped handwriting input apparatus using accelerometers and gyroscopes and an associated operational device for determining pen movement
KR100591978B1 (ko) * 1998-12-24 2006-06-20 미쓰비시덴키 가부시키가이샤 수치제어장치
JP3582433B2 (ja) 1999-12-02 2004-10-27 日本電気株式会社 情報処理装置および情報処理方法
JP4708581B2 (ja) * 2000-04-07 2011-06-22 キヤノン株式会社 座標入力装置、座標入力指示具及びコンピュータプログラム
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US6744420B2 (en) * 2000-06-01 2004-06-01 Olympus Optical Co., Ltd. Operation input apparatus using sensor attachable to operator's hand
KR100446613B1 (ko) * 2001-07-16 2004-09-04 삼성전자주식회사 착용할 수 있는 정보 입력 장치를 사용한 정보 입력 방법
JP4028708B2 (ja) * 2001-10-19 2007-12-26 株式会社コナミデジタルエンタテインメント ゲーム装置及びゲームシステム
US6982697B2 (en) 2002-02-07 2006-01-03 Microsoft Corporation System and process for selecting objects in a ubiquitous computing environment
US20050151448A1 (en) * 2002-04-02 2005-07-14 Koichi Hikida Inclination sensor, method of manufacturing inclination sensor, and method of measuring inclination
JP4398430B2 (ja) * 2003-10-31 2010-01-13 富士通株式会社 距離算出装置および算出プログラム
ES2664472T3 (es) 2004-04-30 2018-04-19 Idhl Holdings, Inc. Dispositivos de señalización de espacio libre con compensación de inclinación y facilidad de uso mejorada
EP1605232A3 (en) * 2004-06-11 2010-12-29 Yamaha Corporation Method and apparatus for measuring magnetic offset of geomagnetic sensor and portable electronic apparatus
CA2578653A1 (en) 2004-07-29 2006-02-09 Kevin Ferguson A human movement measurement system
US8708822B2 (en) * 2005-09-01 2014-04-29 Nintendo Co., Ltd. Information processing system and program
JP4684147B2 (ja) * 2006-03-28 2011-05-18 任天堂株式会社 傾き算出装置、傾き算出プログラム、ゲーム装置およびゲームプログラム
US20080316061A1 (en) * 2007-06-20 2008-12-25 Terence Goggin System and Method of Using Sudden Motion Sensor Data for Input Device Input

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0385676A (ja) * 1989-08-30 1991-04-10 Olympus Optical Co Ltd 画像データ補間装置
JPH09318382A (ja) * 1996-05-27 1997-12-12 Nec Corp 姿勢角検出装置及び方法
JPH11211474A (ja) * 1998-01-20 1999-08-06 Tokin Corp 姿勢角検出装置
JP2003225467A (ja) * 2002-02-01 2003-08-12 Nintendo Co Ltd ゲーム装置及びゲームプログラム
WO2006016671A1 (ja) * 2004-08-12 2006-02-16 Asahi Kasei Emd Corporation 加速度計測装置

Also Published As

Publication number Publication date
US20070225938A1 (en) 2007-09-27
US7379841B2 (en) 2008-05-27
EP1840704A2 (en) 2007-10-03
US7920985B2 (en) 2011-04-05
US20080215288A1 (en) 2008-09-04
EP1840704B1 (en) 2016-07-06
EP1840704A3 (en) 2012-05-30
JP4547346B2 (ja) 2010-09-22

Similar Documents

Publication Publication Date Title
JP4547346B2 (ja) 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム
JP4684147B2 (ja) 傾き算出装置、傾き算出プログラム、ゲーム装置およびゲームプログラム
US7834848B2 (en) Coordinate calculating apparatus and coordinate calculating program
US7786976B2 (en) Coordinate calculating apparatus and coordinate calculating program
JP5692904B2 (ja) 入力システム、情報処理装置、情報処理プログラム、および指示位置算出方法
JP4795087B2 (ja) ゲーム装置およびゲームプログラム
US20100060575A1 (en) Computer readable recording medium recording image processing program and image processing apparatus
JP4990580B2 (ja) ゲームプログラムおよびゲーム装置
JP5429918B2 (ja) 情報処理プログラムおよび情報処理装置
JP2010005331A (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、およびゲームプログラム
JP5541851B2 (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、およびゲームプログラム
JP5669294B2 (ja) 座標算出装置および座標算出プログラム
JP5872135B2 (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、ゲームプログラム、姿勢算出システム、および、姿勢算出方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100629

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100705

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4547346

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250