JP2008134883A - 情報処理装置および情報処理プログラム - Google Patents

情報処理装置および情報処理プログラム Download PDF

Info

Publication number
JP2008134883A
JP2008134883A JP2006321428A JP2006321428A JP2008134883A JP 2008134883 A JP2008134883 A JP 2008134883A JP 2006321428 A JP2006321428 A JP 2006321428A JP 2006321428 A JP2006321428 A JP 2006321428A JP 2008134883 A JP2008134883 A JP 2008134883A
Authority
JP
Japan
Prior art keywords
inclination
value
calculated
controller
input device
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
JP2006321428A
Other languages
English (en)
Other versions
JP4689585B2 (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 JP2006321428A priority Critical patent/JP4689585B2/ja
Priority to US11/656,939 priority patent/US7924264B2/en
Priority to EP07002612.5A priority patent/EP1946806B1/en
Publication of JP2008134883A publication Critical patent/JP2008134883A/ja
Application granted granted Critical
Publication of JP4689585B2 publication Critical patent/JP4689585B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/219Input arrangements for video game devices characterised by their sensors, purposes or types for aiming at specific areas on the display, e.g. light-guns
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/426Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving on-screen location information, e.g. screen coordinates of an area at which the player is aiming with a light gun
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • A63F13/537Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
    • A63F13/5375Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen for graphically or textually suggesting an action, e.g. by displaying an arrow indicating a turn in a driving game

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Position Input By Displaying (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】マーカが撮像されない場合であっても、入力装置による指示位置が画面から外れたことをユーザに報知する。
【解決手段】情報処理装置は、撮像対象を撮像するための撮像手段を備えた入力装置と通信可能であり、当該撮像手段で撮像された画像に基づいて表示装置の画面上のポインティング位置を算出する。また、入力装置は、当該入力装置の動きを検出する動き検出手段を備えている。情報処理装置は、動き検出手段による検出結果を用いて入力装置の傾きを表す傾き値を算出する。そして、撮像手段で撮像された画像に基づくポインティング位置の算出が可能か否かを判定する。ポインティング位置の算出が不可能と判定される場合、算出された傾き値と所定の基準値とを比較し、比較の結果に応じて、入力装置の傾きに関する情報をユーザに対して報知する。
【選択図】図12

Description

本発明は、情報処理装置および情報処理プログラムに関し、より特定的には、撮像装置を備える入力装置を用いてユーザが入力操作を行う情報処理装置および情報処理プログラムに関する。
従来、撮像装置を備える入力装置を用いてユーザが入力操作を行う装置の一例として、特許文献1に記載されているゲーム装置がある。このゲーム装置は、スクリーンに表示される敵と銃撃戦を行う射的ゲーム装置である。入力装置であるガンユニットにはCCDカメラが内蔵されており、CCDカメラは、マーカ(発光ダイオード)が配置された画面の周辺の画像を撮像する。CCDカメラによって撮像された画像のデータはガンユニットからゲーム装置へ送信される。ゲーム装置は、ガンユニットから送信されてきた画像データを用いて、撮像された画像上におけるマーカの位置を特定し、特定された位置に基づいてガンユニットの着弾座標を算出する。着弾座標は、ガンユニットの銃身を延長した線と画面との交点の座標である。上記ゲーム装置によれば、プレイヤは、入力装置(ガンユニット)によって画面上の任意の位置(着弾座標)を指示することができる。
また、上記ゲーム装置は、算出された着弾座標が画面の位置であるか否かを判定することによって、入力装置が適切な位置を指示しているか否か、すなわち、ガンユニットの照準が画面内に位置するか否かを判定する。
特開2005−253724号公報
上記ゲーム装置のガンユニットのように、ユーザが任意の位置を指し示すことが可能な入力装置が用いられる場合、入力装置によって指示される位置(指示位置)が、ユーザが気付かないうちに画面の外側になってしまうことがあり得る。このように、指示位置が画面外となった場合には、指示位置が画面から外れていること、および、どちらの方向に外れているかをユーザに報知することが好ましい。
ここで、特許文献1では、算出された着弾座標を用いて、入力装置が適切な位置を指示しているか否かの判定を行っている。したがって、マーカが撮像されないために着弾座標を算出することができなければ、上記判定を行うことができない。つまり、発光ダイオードが撮像されない位置に入力装置が動かされた場合には、ゲーム装置は、上記判定を行うことができないので、指示位置がどちらの方向に外れているかをユーザに報知することができない。
それ故、本発明の目的は、マーカが撮像されない場合であっても、入力装置による指示位置が画面から外れたことをユーザに報知することができる、情報処理装置および情報処理プログラムを提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、情報処理装置(ゲーム装置3)のコンピュータ(CPU10等)で実行される情報処理プログラム(ゲームプログラム60)である。情報処理装置は、撮像対象(マーカ6Rおよび6L)を撮像するための撮像手段(撮像素子)を備えた入力装置(コントローラ5)と通信可能であり、当該撮像手段で撮像された撮像画像に基づいて表示装置(テレビ2)の画面上のポインティング位置を算出する。また、入力装置は、当該入力装置の動きを検出する動き検出手段(加速度センサ37)を備えている。情報処理プログラムは、傾き算出ステップ(S3)と、判定ステップ(S4)と、比較ステップ(S8)と、報知ステップ(S9−S10)とをコンピュータに実行させる。傾き算出ステップにおいて、コンピュータは、動き検出手段による検出結果(加速度データ62)を用いて入力装置の傾きを表す傾き値(t)を算出する。判定ステップにおいて、コンピュータは、撮像手段で撮像された撮像画像に基づくポインティング位置の算出が可能か否かを判定する。比較ステップにおいて、コンピュータは、ポインティング位置の算出が不可能と判定される場合、傾き算出ステップで算出された傾き値と所定の基準値(c)とを比較する。報知ステップにおいて、コンピュータは、比較ステップの結果に応じて、入力装置の傾きに関する情報をユーザに対して報知する。
第2の発明においては、傾き算出ステップおよび判定ステップは、繰り返し実行されてもよい。このとき、情報処理プログラムは、基準値算出ステップ(S7)をコンピュータにさらに実行させる。基準値算出ステップにおいて、コンピュータは、ポインティング位置の算出が可能と判定されている間に算出された少なくとも1つの傾き値に基づいて基準値を算出する。
第3の発明においては、情報処理プログラムは、範囲算出ステップ(S6)をコンピュータにさらに実行させる。範囲算出ステップにおいて、前記コンピュータは、ポインティング位置の算出が可能と判定されている間に算出された1つ以上の傾き値に基づいて、当該1つ以上の傾き値の少なくともいくつかを含む傾き範囲(認識範囲)を算出する。基準値算出ステップにおいて、コンピュータは、傾き範囲に基づいて基準値を算出する。
第4の発明においては、基準値決定ステップにおいて、コンピュータは、傾き範囲の上限値と下限値との平均値を基準値としてもよい。
第5の発明においては、範囲算出ステップにおいて、コンピュータは、傾き値が算出される度に、傾き範囲の上限値(最大値max)および下限値(最小値min)を当該傾き値に近づけるように傾き範囲を変更してもよい。
第6の発明においては、情報処理プログラムは、入力装置の位置および/または姿勢の変化量を算出する変化量算出ステップ(S31)をコンピュータにさらに実行させてもよい。このとき、範囲算出ステップにおいて、コンピュータは、傾き範囲の上限値および下限値を当該傾き値に近づける度合いを、変化量が小さいほど大きくする。
第7の発明においては、変化量算出ステップにおいて、コンピュータは、撮像手段で撮像された画像に基づいて算出されるポインティング位置の変化量を入力装置の変化量として用いてもよい。
第8の発明においては、情報処理プログラムは、記憶ステップをコンピュータにさらに実行させてもよい。記憶ステップにおいて、コンピュータは、ポインティング位置の算出が可能と判定されている間に算出された1つ以上の傾き値のうち、現在から過去所定期間の間に算出された傾き値を情報処理装置の記憶手段(メインメモリ13)に記憶する。このとき、基準値算出ステップにおいて、コンピュータは、ポインティング位置の算出が不可能と判定された時点において記憶手段に記憶されている傾き値に基づいて基準値を算出する。
第9の発明においては、基準値算出ステップにおいて、コンピュータは、ポインティング位置の算出が可能と判定されている期間中の最後に算出された傾き値を基準値としてもよい。
第10の発明においては、基準値算出ステップにおいて、コンピュータは、傾き値が算出されたことに応じて、当該算出された傾き値に追従するように基準値を設定してもよい。
第11の発明においては、傾き値は、所定の方向(地面と水平な方向。換言すれば、重力方向に垂直な方向)を基準とした入力装置の角度値(θ)、当該角度値の正弦関数の値(t=sinθ)、および、当該角度値の余弦関数の値のいずれかとして表されてもよい。
第12の発明においては、報知ステップにおいて、コンピュータは、撮像手段が撮像対象を撮像可能な向きから入力装置がいずれの方向にずれているかを表す情報を報知してもよい。
第13の発明においては、動き検出手段は、入力装置に加わる加速度を検出する加速度センサ(37)であってもよい。このとき、傾き算出ステップにおいて、コンピュータは、加速度センサによる検出結果を用いて傾き値を算出または取得する。
また、本発明は、上記各ステップを実行する情報処理装置と同等の機能を有する情報処理装置の形態で提供されてもよい。
第1の発明によれば、情報処理装置のコンピュータは、動き検出手段による検出結果を用いて入力装置の傾きを算出する。そして、ポインティング位置が算出不可能と判定される場合には、算出された傾き値を用いて、入力装置の傾きに関する情報を出力する。これによれば、ポインティング位置が算出不可能となった場合でも、入力装置の傾きを算出することができるので、当該場合でも入力装置によるポインティング位置が画面から外れたことをユーザに報知することができる。また、算出された傾きに基づいて、ポインティング位置がどちらの方向へ外れたかをユーザに報知することができる。
第2の発明によれば、基準値は、ポインティング位置の算出が可能と判定されている間に算出された傾き値に基づいて算出される。したがって、ポインティング位置の算出が実際に可能な傾きを用いて判定ステップにおける判定が行われるので、当該判定を正確に行うことができる。
第3の発明によれば、ポインティング位置の算出が可能と判定されている間に算出された傾き値に基づいて傾き範囲が算出され、当該傾き範囲に基づいて基準値が決定される。これによれば、基準値を正確に算出することができる。
第4の発明によれば、傾き範囲の上限値と下限値との平均値を基準値とするので、基準値は、ポインティング位置の算出が可能な傾きを正確に表すことができる。これによって、判定ステップにおける判定をより正確に行うことができる。
第5の発明によれば、傾き範囲は、傾き値が算出される度に、その上限値および下限値が当該傾き値に近づくように変更される。これによれば、例えば入力装置を用いた操作中にユーザの姿勢が変化したことによって、ポインティング位置を算出可能となるときの入力装置の傾きの範囲が変化しても、当該範囲の変化に応じて傾き範囲を適切に設定することができる。
第6の発明によれば、傾き範囲の上限値および下限値を傾き値に近づける度合いは、入力装置の変化量が小さいほど大きくなる。ここで、入力装置の変化量が小さい場合には、コントローラ5の動きが急激でなく、動き検出手段の検出結果は比較的正確に入力装置の傾きを表している。したがって、この場合の検出結果に基づいて算出される傾き値は正確であると言える。第6の発明では、傾き値が正確である場合には当該傾き値を傾き範囲に反映させる度合いが高くし、傾き値が不正確である場合には当該傾き値を傾き範囲に反映させる度合いが低くすることによって、傾き範囲をより正確に算出することができる。
第7の発明によれば、ポインティング位置の変化量を入力装置の変化量として用いることによって、入力装置の変化量を正確に算出することができる。
第8の発明によれば、基準値は、ポインティング位置の算出が可能と判定されている間に算出された1つ以上の傾き値のうち、現在から過去所定期間の間に算出された傾き値に基づいて算出される。これによっても、第5の発明と同様、例えば入力装置を用いた操作中にユーザの姿勢が変化しても、当該変化に応じて基準値を適切に設定することができる。
第9の発明によれば、ポインティング位置の算出が可能と判定されている期間中の最後に算出された傾き値を基準値として用いるので、基準値を正確に設定することができる。
第10の発明によれば、基準値は、算出された傾き値に追従するように設定されるので、第5および第8の発明と同様、例えば入力装置を用いた操作中にユーザの姿勢が変化しても、当該変化に応じて基準値を適切に設定することができる。
第11の発明によれば、傾き値は、所定の方向を基準とした入力装置の角度値、当該角度値の正弦関数の値、および、当該角度値の余弦関数の値として表される。これによって、入力装置の傾きを簡易な形で表現することができ、例えばベクトルで表現される場合に比べて傾き値の演算処理が容易になる。
第12の発明によれば、撮像手段が撮像対象を撮像可能な向きから入力装置がいずれの方向にずれているかを表す情報がユーザに対して提示されることとなる。これによって、ユーザは、入力装置をどの方向に向ければよいかを容易に知ることができる。
第13の発明によれば、動き検出手段として加速度センサを用いることによって、入力装置の傾きを容易に算出することができる。
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、およびセンサバー6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、家庭用テレビジョン受像機等の表示装置である。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、センサバー6が設置される。センサバー6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6Rおよび6Lは、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。センサバー6はゲーム装置3に接続されており、ゲーム装置3はセンサバー6が備える各赤外LEDの点灯を制御することが可能である。
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、メインコントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する、例えばCPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、通信ユニット16、ビデオI/F(インターフェース)17、フラッシュメモリ18、LED制御部19、オーディオI/F20、およびディスクI/F21が接続されている。ビデオI/F(インターフェース)17はテレビ2に、LED制御部19はセンサバー6に、オーディオI/F20はテレビ2に搭載されるスピーカ2aおよびディスクドライブ22に、ディスクI/F21はディスクドライブ22に、それぞれ接続されている。
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/F20を介してスピーカ2aに出力させる。
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した通信ユニット16、フラッシュメモリ18、LED制御部19、ならびに各種I/F17,20および21が接続される。
通信ユニット16は、ゲーム装置3とコントローラ5との間のデータの送受信を行う。コントローラ5は、自機に対する操作内容を示す操作データをゲーム装置3へ送信する。通信ユニット16は、コントローラ5から操作データを受信し、受信した操作データをメモリコントローラ11を介してCPU10へ出力する。CPU10は、上記操作データに応じてゲーム処理を実行する。また、コントローラ5の動作を制御するための制御データがコントローラ5へ送信される場合、当該制御データは通信ユニット16へ出力される。通信ユニット16は、入力された制御データをコントローラ5へ送信する。
ビデオI/F17には、テレビ2が接続され、GPU12によって生成された画像データは、ビデオI/F17を介してテレビ2へ出力される。フラッシュメモリ18は、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能する。ゲーム装置3は、フラッシュメモリ18に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ2に表示することができる。LED制御部19にはセンサバー6が備える赤外LEDが接続される。CPU10は、当該赤外LEDを点灯させる場合、LED制御部19に給電指示を行う。給電指示に従ってLED制御部19が赤外LEDに給電を行うことによって、赤外LEDが点灯する。本実施形態では、少なくともゲームプログラムの実行が開始されている間は赤外LEDが点灯される。オーディオI/F20にはテレビ2に内蔵されるスピーカ2aが接続され、DSP14がARAM15から読み出したサウンドデータや、ディスクドライブ22から直接出力されるサウンドデータがスピーカ2aから出力される。ディスクI/F21には、ディスクドライブ22が接続される。ディスクドライブ22は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ディスクI/F21やオーディオI/F20に出力する。
また、ゲーム装置3は、図示しないネットワーク通信部を備えており、インターネット等のネットワークに接続されている。ゲーム装置3は、ネットワーク通信部を介して外部からゲームプログラムや種々のデータを取得したり、外部へデータを送信したりすることが可能である。
(コントローラ5の構成)
次に、図3〜図6を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5を用いることによって、それに設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字キー32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源32hを誤って押下することを防止することができる。
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のコントローラ)を接続するために利用される。
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
また、コントローラ5は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5A)からの音を外部に放出するための音抜き孔31aが形成されている。
次に、図5Aおよび図5Bを参照して、コントローラ5の内部構造について説明する。図5Aおよび図5Bは、コントローラ5の内部構造を示す図である。なお、図5Aは、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す斜視図は、図5Aに示す基板30を裏面から見た斜視図となっている。
図5Aにおいて、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図5B参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
一方、図5Bにおいて、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5Aおよび図5Bに示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
なお、図3〜図5A、図5Bに示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
図6は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機の姿勢に応じたデータを操作データとしてゲーム装置3へ送信するものである。
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示すデータを通信部36のマイコン42へ出力する。
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系における3次元のベクトルとして表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾きを算出するためのデータを出力するセンサとして用いられる。つまり、ゲーム装置3は、加速度データからコントローラ5の傾きを算出する。なお、コントローラ5の傾きを算出する方法については後述する。
なお、本実施形態では、コントローラの傾きを算出するために、例えば静電容量式の加速度センサを用いることとした。ここで、他の実施形態においては、コントローラ5の動きを検出することが可能であり、その検出結果からコントローラ5の傾きを算出することが可能なセンサであればどのようなものを用いてもよい。例えば、静電容量式の加速度センサに代えて、他の方式の加速度センサやジャイロセンサを用いるようにしてもよい。ただし、加速度センサは各軸に沿った直線方向の加速度をそれぞれ検出するものであるのに対して、ジャイロセンサは回転に伴う角速度を検出するものである。つまり、加速度センサに代えてジャイロセンサを採用する場合には、検出される信号の性質が異なるため、両者を簡単に置き換えることはできない。そこで、加速度センサの代わりにジャイロセンサを用いて傾きを算出する場合には、大幅な変更を行う。具体的には、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロスコープから出力される角速度のデータを積分する。さらに、積分結果を用いて、初期化された傾きの値からの変化量を算出する。コントローラ5の傾きは、初期化された傾きの値と算出された変化量とから算出することができる。この場合、算出される傾きは、角度で表されることになる。
なお、既に説明したように、加速度センサによって傾きを算出する場合には、加速度ベクトルに基づいて傾きを算出する。したがって、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも絶対的な方向を検出することが可能である点で、加速度センサを用いる場合とジャイロスコープを用いる場合とで異なる。また、傾きとして算出される値の性質についても上記のように角度であるかベクトルであるかの違いがあるので、加速度センサからジャイロスコープへの置き換えを行う際には当該値の性質を考慮した所定の変換を行う必要がある。
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるセンサバー6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。なお、他の実施形態では、コントローラ5は、マーカ座標を算出するために必要なデータ(例えば、撮像画像のデータ)をゲーム装置3へ送信し、ゲーム装置3が当該データに基づいてマーカ座標を算出するようにしてもよい。
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の通信ユニット16への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の通信ユニット16で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から通信ユニット16への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の通信ユニット16へ出力する。
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5によって画面上の任意の位置を指示する操作を行うことができる。
(ゲーム操作およびゲーム処理の概要)
図7を参照して、ゲーム操作の例について説明する。図7は、コントローラ5を用いてゲーム操作を行うときの様子を示す図解図である。本実施形態では、プレイヤは、図7に示すように、コントローラ5によってテレビ2の画面上の位置Pを指し示すゲーム操作を行う。ここで、位置Pは、コントローラ5によって指し示される画面上の位置であり、理想的には、コントローラ5の前端部から上記長手方向に延ばした直線とテレビ2の画面とが交わる位置である。ただし、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ5によって指し示される画面上の位置を「ポインティング位置」と呼ぶ。プレイヤは、画面上のポインティング位置を移動させることによってゲーム操作を行う。
ゲーム装置3は、コントローラ5から送信されてくる操作データに含まれるマーカ座標のデータに基づいて画面上のポインティング位置Pを算出する。そして、ポインティング位置Pを入力指示として用いたゲームを実行する。当該ゲームは、例えば、指示位置Pを照準位置として用いる射撃ゲームであってもよいし、ポインティング位置Pにオブジェクト(例えばカーソル)が表示され、ポインティング位置Pの移動に応じてオブジェクトが移動するゲームであってもよい。このように、プレイヤは、コントローラ5を動かす操作によって画面に表示される銃の照準やオブジェクトを移動させることができる。
図8は、マーカが撮像される場合のコントローラとセンサバーとの関係を示す図である。図8に示すように、コントローラ5に搭載される撮像素子40は、上記コントローラ5の撮像方向を中心とした視野角θ’の範囲から入射する光を受光することができる。例えば、撮像素子40の視野角(半値角)θ’は41°である。図8に示す場合のように、センサバー6のマーカ6Rおよび6Lを撮像素子40が撮像可能な方向をコントローラ5が向いている場合には、撮像素子40はマーカ6Rおよび6Lを検出(撮像)することができ、ゲーム装置3はマーカ座標を算出することができる。
一方、図9は、マーカが撮像されない場合のコントローラとセンサバーとの関係を示す図である。図9に示す場合のように、センサバー6のマーカ6Rおよび6Lを撮像素子40が撮像可能な方向をコントローラ5が向いていない場合には、撮像素子40はマーカ6Rおよび6Lを検出(撮像)することができず、撮像画像にマーカが含まれないので、ゲーム装置はマーカ座標を算出することができない。したがって、ゲーム中において、図9に示す状態のように撮像素子40がマーカ6Rおよび6Lを検出することができない状態となった場合には、プレイヤはゲーム操作を行うことができなくなるか、または、正しいゲーム操作を行うことができなくなるおそれがある。
そこで、本実施形態では、ゲーム装置3は、撮像素子40がマーカ6Rおよび6Lを検出することができない状態となった場合に、コントローラ5の現在の向き(傾き)を算出する。なお、本実施形態におけるゲーム装置3は、プレイヤを基準とした上下方向、すなわち、重力方向に平行な方向に関するコントローラ5の傾きを算出する。コントローラ5の傾きは、コントローラ5に搭載される加速度センサ37によって検出される加速度に基づいて算出される。そして、ゲーム装置3は、算出された傾きに基づいて、コントローラ5をどちらの方向に向けるべきかをプレイヤに対して報知する。例えば、図9に示すようにコントローラ5が下を向きすぎている場合には、コントローラ5を上に向けるべきであることをプレイヤに対して報知する。このような報知を行うことによって、プレイヤがコントローラ5を誤った向きに向けて操作した場合でも、プレイヤに対して正しい向き(マーカ6Rおよび6Lを検出可能な向き)を教えることができ、ゲーム操作が行えなくなることを防止することができる。これによって、コントローラ5を用いたゲーム操作の操作性を向上することができる。
なお、プレイヤは通常、目の高さとは異なる高さでコントローラ5を把持して操作するので、プレイヤを基準とした上下方向については正しい向きからずれていることを認識することが難しい。一方、プレイヤを基準とした左右方向についてはコントローラ5が正しい向きからずれていることを比較的容易に認識することができると考えられる。したがって、本実施形態においては、ゲーム装置3は、プレイヤを基準とした上下方向に関する向きについてのみ報知を行い、プレイヤを基準とした左右方向に関する向きについては報知を行わないものとする。
なお、マーカ6Rおよび6Lが検出されなくなった直後におけるコントローラ5の傾きを、マーカ6Rおよび6Lが検出されなくなる直前のマーカ座標に基づいて推測することは可能である。例えば、マーカ6Rおよび6Lが検出されなくなる直前においてマーカ座標が撮像画像の上端付近に位置していた場合には、コントローラ5が下を向いていたことになる。したがって、その直後にマーカ6Rおよび6Lが検出されなくなった場合には、コントローラ5が下を向きすぎたためにマーカ6Rおよび6Lが検出されなくなったと推測することができる。しかし、マーカ座標を用いてコントローラ5の傾きを推測する方法では、マーカ6Rおよび6Lが検出されなくなった直後の傾きを推測することしかできないので、その後にコントローラ5の向きが変化しても、その変化を知ることができない。例えば、下を向きすぎたためにマーカ6Rおよび6Lが検出されなくなった後でコントローラ5が上を向きすぎた状態に変化しても、ゲーム装置3は当該状態を認識することができない。また、上記方法では、過去の情報を用いて現在の状態を推測するにすぎないので、コントローラ5の傾きを正確に算出することができない。
これに対して、本実施形態によれば、加速度センサ37を用いてコントローラ5の傾きを算出する。したがって、マーカ6Rおよび6Lが検出されなくなった後、コントローラ5がどのような向きになったとしても、現在の向きを正確に算出することができる。これによって、コントローラ5の現在の状態に関して、どちらの向きにコントローラ5を向ければ正しい向きとなるかをプレイヤに報知することができる。
(ゲーム処理の詳細)
以下、図10〜図18を参照して、ゲーム装置3において実行されるゲーム処理の詳細について説明する。まず、ゲーム処理において用いられる主なデータについて図10を用いて説明する。図10は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図10に示すように、メインメモリ13には、ゲームプログラム60、操作データ61、およびゲーム処理用データ64等が記憶される。なお、メインメモリ13には、図10に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム60には、コントローラ5の傾きを算出し、算出された傾きに基づいてプレイヤに対する報知を行うためのゲーム処理等を実行するのに必要なプログラムが含まれている。
操作データ61は、コントローラ5からゲーム装置3へ送信されてくる操作データである。操作データ61には、加速度データ62およびマーカ座標データ63が含まれる。なお、図示していないが、操作データ61には、操作ボタンデータが含まれていてもよい。操作ボタンデータは、操作部32の各ボタン32a〜32iに対して行われた操作内容(各ボタン32a〜32iが押下されたか否か)を示すデータである。なお、上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、メインメモリ13に記憶される操作データはこの割合で更新される。また、メインメモリ13には、最新の(最後に取得された)操作データのみが記憶される。
加速度データ62は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ62は、図3に示すXYZの3軸の方向に関する加速度ベクトルA=(Ax,Ay,Az)を示すデータである。
マーカ座標データ63は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系で表現される。なお、撮像素子40によって2つのマーカ6Rおよび6Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lのいずれか一方が位置しない場合には、撮像素子40によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lの両方が位置しない場合には、撮像素子40によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データは、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
ゲーム処理用データ64は、後述するゲーム処理(図13および図14)において用いられるデータである。ゲーム処理用データ64は、傾きデータ65、認識範囲データ66、基準値データ69、およびポインティング位置データ70等を含む。
傾きデータ65は、コントローラ5の傾きを示すデータである。本実施形態では、傾きデータ65は、地面と水平な方向(重力方向に垂直な方向)に関するコントローラ5の傾きを示す。図11は、コントローラ5の傾きの算出方法を説明するための図である。本実施形態では、コントローラ5の傾きは、地面に水平な面Sとコントローラ5のZ軸とのなす角θの正弦関数(sinθ)を示す傾き値tによって表される(図11参照)。したがって、傾き値tは、加速度センサ37によって検出された加速度ベクトルAのZ成分Azと、加速度ベクトルAのX成分とY成分との合成ベクトルAxyとに基づいて算出することができる。なお、本実施形態では、傾きデータ65は1/60秒に1回の割合で算出され、メインメモリ13には最新の(最後に取得された)傾きデータのみが記憶される。
認識範囲データ66は、認識範囲を示すデータである。認識範囲とは、マーカ6Rおよび6Lが認識(検出)可能である範囲であり、コントローラ5の傾き値tに関する範囲である。図12は、傾き値tと認識範囲とを示す概念図である。上述のように、コントローラ5の傾きは上記傾き値tによって表されるので、図12に示されるように、認識範囲は傾き値tの取りうる範囲を表す。具体的には、認識範囲データ66は、最大値データ67および最小値データ68を含む。最大値データ67は、認識範囲内で傾き値tが取りうる最大値(max)を示すデータである。最小値データ68は、認識範囲内で傾き値tが取りうる最小値(min)を示すデータである。
基準値データ69は、コントローラ5の傾きが上下いずれの方向に向きすぎているかを判断するための基準値(c)を示すデータである。つまり、ゲーム装置3は、当該基準値cと、現在のコントローラ5の傾き値tとを比較することによって、コントローラ5が上下いずれの方向に向きすぎているかを判断する。基準値データ69は、上記認識範囲データ66に基づいて算出される。
ポインティング位置データ70は、上記ポインティング位置を示すデータである。ポインティング位置データ70は、マーカ座標データ63に基づいて算出される。ゲーム装置3は、ポインティング位置データ70により示されるポインティング位置をゲーム入力として用いてゲーム処理を実行する。
次に、ゲーム装置3において行われる処理の詳細を、図13〜図18を用いて説明する。図13は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入され、ゲームプログラムが記憶された光ディスク4がゲーム装置3に挿入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図13に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図13に示すフローチャートでは、撮像素子40によってマーカ6Rおよび6Lが検出されない場合において、コントローラ5の傾きに基づいてコントローラ5がいずれの方向にずれているかを報知する点を中心に説明し、本発明に関連しない処理については説明を省略する。
図13に示すステップS1において、まずCPU10は、ゲーム処理において用いられる認識範囲データ66を初期化する。具体的には、認識範囲データ66の最大値データ67は、最大値max=0を示すように設定され、認識範囲データ66の最小値データ68は、最小値min=0を示すように設定される。
ステップS1の後、ステップS2〜S12の処理ループが、ゲームが実行される間繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
ステップS2において、CPU10は、コントローラ5から操作データを取得する。すなわち、コントローラ5から送信されてくる操作データを通信ユニット16が受信し、受信された操作データがメインメモリ13に記憶される。これによって、現時点におけるコントローラ5の加速度を示す加速度データ62、および、現時点におけるマーカ座標を示すマーカ座標データ63がメインメモリ13に記憶される。
続くステップS3において、CPU10は、コントローラ5の傾きを算出する。コントローラの傾きを示す傾き値tは、メインメモリ13に記憶されている加速度データ62を用いて算出される。上述したように、本実施形態では、コントローラ5の傾きは、地面に水平な面Sとコントローラ5のZ軸とのなす角θの正弦関数(sinθ)として表される(図11参照)。具体的には、傾き値tは、次の式(1)に従って算出される。
t=sinθ=−Az/√(Axy × Axy + Az × Az) …(1)
上式(1)において、変数Azは、加速度データ62により示される加速度ベクトルAのZ成分を示す。変数Axyは、加速度ベクトルAのX成分とY成分との合成ベクトルの大きさを示す。上式(1)によって算出された傾き値tを示すデータは、傾きデータ65としてメインメモリ13に記憶される。
なお、上式(1)において、変数Azと変数Axyとを用いて傾き値tを算出している理由は、コントローラ5がZ軸方向を軸とした回転方向に傾いている場合にもコントローラ5の傾きを正確に算出するためである。なお、コントローラ5が上記回転方向に傾いた状態で使用されることを想定しない場合(すなわち、X軸が重力方向に略垂直な状態で使用されることを想定する場合)には、変数Axyに代えて、加速度ベクトルAのY成分Ayを用いて傾き値tを算出するようにしてもよい。また、他の実施形態においては、上式(1)より角度θを算出し、コントローラ5の傾きを表す傾き値として角度θを用いるようにしてもよい。また、傾き値として、地面に水平な面Sとコントローラ5のY軸とのなす角の余弦関数を用いるようにしてもよい。
また、傾き値tは、加速度センサ37によって検出された加速度ベクトルそのものではなく、当該加速度ベクトルに所定の変換処理を行ったベクトルを用いて算出されてもよい。具体的には、変換処理においては、当該加速度ベクトルは、それに追従して変化するベクトルに変換される。より具体的には、変換後のベクトルa=(ax,ay,az)は、次の式(2)に従って算出される。
ax=bx+(Ax−bx)・C1
ay=by+(Ay−by)・C1
az=bz+(Az−bz)・C1 …(2)
上式(2)においては、加速度センサ37によって検出された加速度ベクトルを(Ax,Ay,Az)とし、前回の変換処理によって得られたベクトルを(bx,by,bz)としている。なお、ベクトルaが最初に算出される場合には(bx,by,bz)=(0,0,0)とする。また、定数C1は、0<C1<1の範囲で予め設定される。例えばコントローラ5が急激に動かされている場合には、加速度センサ37によって検出される加速度ベクトルは急激に変化してしまい、コントローラ5の傾きに正確に対応しないおそれがある。上記の変換処理を行うことによって、加速度ベクトルの急激な変化を緩和することができ、コントローラ5の傾きに正確に対応したベクトルを得ることができる。したがって、変換処理後のベクトルを用いて傾き値tを算出することによって、コントローラ5の傾きをより正確に算出することができる。
図13の説明に戻り、ステップS3の次のステップS4において、CPU10は、撮像素子40によってマーカ6Rおよび6Lが検出されたか否かを判定する。ステップS4の判定は、メインメモリ13に記憶されているマーカ座標データ63を参照することによって行われる。すなわち、マーカ座標データ63が2つのマーカ座標を示す場合、マーカ6Rおよび6Lが検出されたと判定される。一方、マーカ座標データ63が1つのマーカ座標を示す場合、または、マーカ座標データ63がマーカ座標がないことを示す場合、マーカ6Rおよび6Lが検出されなかったと判定される。ステップS4の判定結果が肯定の場合、ステップS5の処理が実行される。一方、ステップS4の判定結果が否定の場合、後述するステップS7の処理が実行される。
なお、ステップS4の判定処理は、ポインティング位置を算出するために必要なマーカが検出されたか否か(すなわち、ポインティング位置が算出可能であるか否か)を判定するための処理である。本実施形態では、2つのマーカ座標を用いてポインティング位置を算出することとするが、他の実施形態では、1つのマーカ座標のみを用いてポインティング位置を算出することも可能である。例えば、あるタイミングの前後のタイミングにおいて2つのマーカ座標が検出されていれば、当該あるタイミングにおいて1つのマーカ座標のみが検出された場合であっても、補間によって2つのマーカ座標を算出し、ポインティング位置を算出することも可能である。したがって、他の実施形態において、1つのマーカ座標を用いてポインティング位置を算出する処理を採用する場合には、1つのマーカ座標のみが検出された場合であってもステップS4の判定結果を肯定として判断するようにしてもよい。
ステップS5において、CPU10は、ポインティング位置を算出する。ポインティング位置は、メインメモリ13に記憶されているマーカ座標データ63により示されるマーカ座標に基づいて算出される。算出されたポインティング位置を示すデータは、ポインティング位置データ70としてメインメモリ13に記憶される。なお、ポインティング位置を算出するためのアルゴリズムは、撮像画像から画面上のポインティング位置を算出するものであればどのようなものであってもよい。一例として、以下に示すようなアルゴリズムを用いてポインティング位置を算出することが考えられる。
以下、ポインティング位置の算出方法の一例を説明する。まずCPU10は、マーカ座標データ63により示される2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのxy座標系によって表現される。このxy座標系は、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとする。次に、CPU10は、当該中点の位置を示す座標を、テレビ2の画面上の位置を表すための座標系(x’y’座標系)の座標に変換する。なお、x’y’座標系が、画面の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のx成分の正負を反転させて所定の割合(例えば、撮像画像のx軸方向の長さを、テレビ2の画面のx’軸方向の長さに一致させる割合)でスケーリングすることによって、ポインティング位置のx’成分を得ることができる。また、中点座標のy成分を所定の割合(例えば、撮像画像のy軸方向の長さを、テレビ2の画面のy’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のy’成分を得ることができる。以上のようにして算出されたx’y’座標値により示される位置がポインティング位置となる。また、より正確なポインティング位置の算出方法の例としては、上記2つのマーカ座標を結ぶベクトルがy軸に平行になるように撮像画像の中央を中心として2つのマーカ座標の中点を回転する処理を行い、回転後の当該中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ5が傾いている場合等にも、ポインティング位置を正確に算出することができる。
ステップS5の次のステップS6において、CPU10は、上記認識範囲を算出するための認識範囲算出処理を実行する。以下、図14を参照して、認識範囲算出処理の詳細を説明する。
図14は、図13に示す認識範囲算出処理(ステップS6)の流れを示すフローチャートである。認識範囲算出処理においては、まずステップS21において、CPU10は、現在の傾き値tが、認識範囲の最小値minよりも小さいか否かを判定する。ステップS21の判定は、メインメモリ13に記憶されている傾きデータ65により示される傾き値tと、最小値データ68により示される最小値minとを用いて行われる。ステップS21の処理は、認識範囲の最小値minをより小さくなるように更新するか否かを判定するための処理である。ステップS21の判定結果が肯定の場合、ステップS22の処理が実行される。一方、ステップS21の判定結果が否定の場合、ステップS23の処理が実行される。
ステップS22において、CPU10は、認識範囲の最小値minを傾き値tと等しくなるように変更する。具体的には、最小値データ68により示される最小値minの値が、傾きデータ65により示される傾き値tとなるように、最小値データ68を更新する。これによって、認識範囲は、その下限値が小さくなるように変更されたこととなる。
一方、ステップS23において、CPU10は、認識範囲の最小値minを傾き値tに近づけるように変更する。具体的には、変更後の最小値minは、次の式(3)に従って算出される。
min=min’+(t−min’)・C2 …(3)
上式(3)において、変数min’は、変更前の最小値、すなわち、メインメモリ13に記憶されている最小値データ68により示される最小値である。また、定数C2は、0<C2<1の範囲で予め定められる値である。上式(3)によって変更された最小値minを示すデータは、新たな最小値データ68としてメインメモリ13に記憶される。ステップS23の処理によって、認識範囲は、その下限値が大きくなるように変更されたこととなる。
ステップS22またはS23の次に、ステップS24の処理が実行される。ステップS24において、CPU10は、現在の傾き値tが、認識範囲の最大値maxよりも大きいか否かを判定する。ステップS21の判定は、メインメモリ13に記憶されている傾きデータ65により示される傾き値tと、最大値データ67により示される最大値maxとを用いて行われる。ステップS24の処理は、認識範囲の最大値maxをより大きくなるように更新するか否かを判定するための処理である。ステップS24の判定結果が肯定の場合、ステップS25の処理が実行される。一方、ステップS24の判定結果が否定の場合、ステップS26の処理が実行される。
ステップS25において、CPU10は、認識範囲の最大値maxを傾き値tと等しくなるように変更する。具体的には、最大値データ67により示される最大値maxの値が、傾きデータ65により示される傾き値tとなるように、最大値データ67を更新する。これによって、認識範囲は、その上限値が大きくなるように変更されたこととなる。
一方、ステップS26において、CPU10は、認識範囲の最大値maxを傾き値tに近づけるように変更する。具体的には、変更後の最大値maxは、次の式(4)に従って算出される。
max=max’+(t−max’)・C2 …(4)
上式(4)において、変数max’は、変更前の最大値、すなわち、メインメモリ13に記憶されている最大値データ67により示される最大値である。上式(4)によって変更された最大値maxを示すデータは、新たな最大値データ67としてメインメモリ13に記憶される。ステップS26の処理によって、認識範囲は、その上限値が小さくなるように変更されたこととなる。
ステップS25またはS26の処理の後、CPU10は認識範囲算出処理を終了する。以上の認識範囲算出処理によって、認識範囲の最大値および下限値が変更される。図15および図16は、認識範囲の変更処理を説明するための図である。図15に示されるように、現在の傾き値tが認識範囲内であった場合には、ステップS23の処理およびステップS26の処理が実行されることになる。したがって、この場合、認識範囲の最大値は小さくなる方向へ、最小値は大きくなる方向へ変更される。つまり、認識範囲は狭まるように変更される(図15に示す矢印参照)。一方、図16に示されるように、現在の傾き値tが認識範囲の最小値よりも小さくなった場合には、ステップS22の処理およびステップS26の処理が実行されることになる。したがって、この場合、認識範囲の最大値および最小値はともに小さくなる方向へ変更される(最大値と最小値の変化量は異なる)。つまり、認識範囲は、全体として値が小さくなる方向へ移動される(図16に示す矢印参照)。また、図示していないが、現在の傾き値tが認識範囲の最大値よりも大きくなった場合には、ステップS23の処理およびステップS25の処理が実行されることになり、その結果、認識範囲は、全体として値が大きくなる方向へ移動される。
以上のように、本実施形態においては、マーカ6Rおよび6Lが検出されている間(ステップS4の判定結果が肯定である間)は、1フレーム時間毎に認識範囲が更新される。認識範囲は、マーカ6Rおよび6Lが検出されている間における傾き値tに基づいて設定されるので、当該認識範囲は、マーカ6Rおよび6Lが検出可能な範囲を表すこととなる。詳細は後述するが、コントローラ5が上を向きすぎているか下を向きすぎているかの判断は、この認識範囲(具体的には認識範囲の中央値)を用いて行われる。本実施形態では、マーカ6Rおよび6Lが検出可能な範囲を表す認識範囲を用いることによって、ゲーム装置3は、マーカ6Rおよび6Lとコントローラ5との実際の位置関係に応じて正確に上記判断を行うことができる。
なお、認識範囲は、マーカ6Rおよび6Lが検出可能な範囲を表すものであればよい。したがって、認識範囲は、マーカ6Rおよび6Lが検出可能であると判定されている(ステップS4の判定結果が肯定である)間に算出された1つ以上の傾き値のうちの少なくともいくつかを含むように設定されればよい。例えば、他の実施形態においては、ゲーム装置3は、マーカ6Rおよび6Lが検出されている間に算出された1つ以上の傾き値tのうちの最大値から最小値までを認識範囲として設定してもよい。
図13の説明に戻り、ステップS7において、CPU10は、基準値cを算出する。基準値cは、メインメモリ13に記憶されている認識範囲データ66を用いて算出される。具体的には、基準値cは、最大値データ67により示される最大値maxおよび最小値データ68により示される最小値minに基づいて、次の式(5)に従って算出される。
c=(max+min)/2 …(5)
上式(5)に示されるように、基準値cは、認識範囲の中央の値(最大値maxと最小値minとの平均値)として算出される(図17参照)。算出された基準値cを示すデータは、基準値データ69としてメインメモリ13に記憶される。
続くステップS8において、CPU10は、現在の傾き値tが基準値cよりも小さいか否かを判定する。ステップS8の判定は、メインメモリ13に記憶されている傾きデータ65により示される傾き値tと、基準値データ69により示される基準値cとを用いて行われる。
図17は、ステップS8の判定処理を説明するための図である。上述したように、認識範囲は、コントローラ5の撮像素子40によってマーカ6Rおよび6Lが検出可能となる範囲を表しており、認識範囲の中央値である基準値cも認識範囲と同様、撮像素子40によってマーカ6Rおよび6Lが検出可能なコントローラ5の傾きを表している。つまり、傾き値tが基準値cよりも大きい場合とは、図17に示すように、マーカ6Rおよび6Lが検出されなくなった時点における傾き(傾き値t)が、マーカ6Rおよび6Lが検出可能である傾き(基準値c)よりも大きい(換言すれば、上を向いている)場合である。したがって、この場合、コントローラ5は、上を向きすぎていると判断することができる。逆に、傾き値tが基準値cよりも小さい場合とは、マーカ6Rおよび6Lが検出されなくなった時点における傾きが、マーカ6Rおよび6Lが検出可能である傾きよりも小さい(換言すれば、下を向いている)場合である。この場合、コントローラ5は、下を向きすぎていると判断することができる。したがって、ステップS8の判定処理によって、マーカ6Rおよび6Lが検出可能であった状態に比べて、コントローラ5が上を向きすぎているか、それとも下を向きすぎているかを判定することができる。ステップS8の判定結果が肯定の場合、ステップS9の処理が実行される。一方、ステップS8の判定結果が否定の場合、ステップS10の処理が実行される。
ステップS9において、CPU10は、コントローラ5を下に向けすぎていることをプレイヤに報知する。具体的には、コントローラ5を正しい方向、すなわち上方向に向けることを促す画像をテレビ2に表示させる。図18は、プレイヤに対する報知を行うための画像の一例を示す図である。なお、図18に示す画像は、ステップS9において表示される画像、すなわち、コントローラ5が下に向きすぎているためにマーカ6Rおよび6Lが検出されない場合に表示される画像である。図18に示す画像には、「コントローラを上に向けて下さい」という文章51と、上方向を示す矢印52とが含まれる。この画像が表示されることによって、プレイヤは、コントローラ5を下に向けすぎていることを知ることができる。
一方、ステップS10において、CPU10は、コントローラ5を上に向けすぎていることをプレイヤに報知する。具体的には、コントローラ5を正しい方向、すなわち下方向に向けることを促す画像をテレビ2に表示させる。ステップS10においては、例えば、「コントローラを下に向けて下さい」という文章と、下方向を示す矢印とがテレビ2の画面に表示される。これによって、プレイヤは、コントローラ5を上に向けすぎていることを知ることができる。
なお、ステップS9およびS10において表示される画像は、コントローラ5を正しい方向に向けることを促すものに限らず、ステップS8の判定結果(傾き値tと基準値cとの比較の結果)に応じて異なる情報であって、コントローラ5の傾きに関する情報を表すものであればよい。例えば、上記画像は、コントローラ5の現在の傾きを表す画像(例えば、「下に向きすぎています」という文章)であってもよい。また、ステップS9およびS10で行われる報知は、表示とともに、または表示に代えて、スピーカ2aまたは49から出力される音声によって行われてもよい。
なお、本実施形態においては、ポインティング位置の算出が不可能と判定された(ステップS4の判定結果が否定となった)時点ですぐに報知を行うこととした。ここで、他の実施形態においては、所定時間の間継続してポインティング位置の算出が不可能と判定されたことを条件として報知を行うようにしてもよい。
ステップS6、S9またはS10の次に、ステップS11の処理が実行される。ステップS11において、CPU10は、プレイヤによって行われたゲーム操作に応じたゲーム処理を実行する。すなわち、メインメモリ13に記憶されているポインティング位置データ70により示されるポインティング位置に基づくゲーム処理を実行する。なお、ステップS9またはS10の次にステップS11の処理が実行される場合、ポインティング位置データ70により示されるポインティング位置は、コントローラ5が現在指し示している位置ではなく、マーカ6Rおよび6Lが最後に検出された時点で算出されたポインティング位置である。このようなポインティング位置は、プレイヤの意図に沿った正しいゲーム入力ではない可能性がある。したがって、ステップS9またはS10の次にステップS11の処理が実行される場合には、CPU10は、ゲームを一時中断する処理を実行するようにしてもよい。
続くステップS12において、CPU10は、ゲームを終了するか否かを判定する。ステップS12の判定は、例えば、ゲームがクリアされたりゲームオーバーとなったか否かや、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS12の判定結果が否定である場合、ステップS2の処理が再度実行される。以降、ステップS12でゲームを終了すると判定されるまで、ステップS2〜S12の処理が繰り返し実行される。一方、ステップS12の判定結果が肯定である場合、CPU10は、図13に示すゲーム処理を終了する。
以上のように、本実施形態によれば、ゲーム装置3は、マーカ6Rおよび6Lが検出されなくなった場合、加速度センサ37の検出結果を用いてコントローラ5の傾きを算出する。そして、算出された傾きに基づいてコントローラ5をどちらに向けるべきかを判断し、コントローラ5を向けるべき方向をプレイヤに対して報知する。これによって、プレイヤがコントローラ5を誤った向きに向けて操作した場合でも、プレイヤに対して正しい向きを教えることができる。
また、本実施形態では、コントローラ5の傾きを算出するために加速度センサ37の検出結果を用いる。これによって、マーカ6Rおよび6Lが検出されているか否かとは無関係に傾きを算出することができる。つまり、マーカ6Rおよび6Lが検出不可能な状態であってもコントローラ5の現在の傾きを正確に算出することができる。したがって、コントローラ5の現在の状態に関して、どちらの向きにコントローラ5を向ければ正しい向きとなるかをプレイヤに正確に報知することができる。例えば、下を向きすぎたためにマーカ6Rおよび6Lが検出されなくなった後でコントローラ5が上を向きすぎた状態に変化しても、ゲーム装置3は当該状態を認識し、現在の向き(上向き)をプレイヤに対して報知することができる。
また、コントローラ5とマーカ6Rおよび6Lとの位置関係は、プレイヤがコントローラ5を持つ位置や、プレイヤがゲームを行う際の体勢(立っているか座っているか)や、マーカ6Rおよび6Lの配置場所(テレビ2の上に配置するか下に配置するか)や、テレビ2の位置等、各プレイヤの実際の使用態様によって異なる。図19および図20は、コントローラ5とマーカ6Rおよび6Lとの位置関係の例を示す図である。コントローラ5は、各プレイヤの使用態様によって、図19に示すようにマーカ6Rおよび6Lよりも低い位置で用いられることもあれば、図20に示すようにマーカ6Rおよび6Lよりも高い位置で用いられることもある。
このようなコントローラ5とマーカ6Rおよび6Lとの位置関係によって、コントローラ5が上に向きすぎているか下に向きすぎているかの判断結果は変わってくる。例えば、図19に示す場合と図20に示す場合とではコントローラ5の傾きは同じであり、かつ共にマーカ6Rおよび6Lが検出されない。このようにコントローラ5の傾きが同じであっても、図19に示す場合には下を向きすぎていると判断する必要があるのに対して、図20に示す場合には上に向きすぎていると判断する必要がある。しかし、単にコントローラ5の傾きのみによって上記判断を行うと、コントローラ5の傾きが同じであるために判断を正確に行うことができない可能性がある。
以上に説明したような各プレイヤの実際の使用態様の違いを考慮して、本実施形態では、上を向きすぎているか下を向きすぎているかの判断の基準となる基準値を、マーカ6Rおよび6Lが検出されている間におけるコントローラ5の傾きに基づいて決定する(ステップS7)。図19のように、マーカ6Rおよび6Lより低い位置でコントローラを操作し続けるには、コントローラを地面に水平な面より上方向に傾けて操作を行わなければならず、地面に水平な面に平行にコントローラを傾けた位置にマーカ6Rおよび6Lがある状態に比べ、認識範囲の最大値および最小値は大きな値となる。その結果、基準値は地面に水平な面より上方向の傾きを表す。逆に図20のように、マーカ6Rおよび6Lより高い位置でコントローラを操作し続けるには、コントローラを地面に水平な面より下方向に傾けて操作を行わなければならず、地面に水平な面に平行にコントローラを傾けた位置にマーカ6Rおよび6Lがある状態に比べ、認識範囲の最大値および最小値は小さな値となる。その結果、基準値は地面に水平な面より下方向の傾きを表す。それらの基準値に対する大小の比較によりマーカの外れている方向を算出する為、コントローラ5の傾きは同じであり、かつ共にマーカ6Rおよび6Lが検出されない場合でも、図19での基準値は地面に水平な面より上方向の傾きとなっているので下方向へ外れていると判断でき、また図20での基準値は地面に水平な面より下方向の傾きとなっているので上方向へ外れていると判断できる。すなわち、ステップS8の判定処理では、マーカ6Rおよび6Lが検出可能であった状態に比べて、コントローラ5が上を向きすぎているか、それとも下を向きすぎているかを判定することができる。したがって、本実施形態によれば、実際の使用態様の違いに応じて正確な判定を行うことができる。
また、本実施形態では、基準値cを決定するために、マーカ6Rおよび6Lが検出可能なコントローラ5の傾きの範囲を表す認識範囲を算出する(ステップS6)。ここで、プレイヤの使用態様はゲーム中においても変化することがある。例えば、座ってゲームをプレイしていたプレイヤがゲーム途中で立ってプレイし始めたり、立ってプレイしていたプレイヤがゲーム途中で座ったりした場合である。このようにプレイヤの使用態様がゲーム途中に変化した場合、マーカ6Rおよび6Lが検出可能なコントローラ5の傾きの範囲が変化するので、認識範囲および基準値もそれに応じて変更することが好ましい。
そこで、上記のようなゲーム途中における使用態様の変化を考慮して、本実施形態では、基準値cを決定する元となる認識範囲を、マーカ6Rおよび6Lが検出されている間、傾き値tに基づいて随時更新する(ステップS6)。具体的には、認識範囲の最大値および最小値は、傾き値tに追従するように移動する(ステップS22,S23,S25,S26)。これによって、プレイヤの使用態様がゲーム途中に変化したために、マーカ6Rおよび6Lを検出可能なコントローラ5の傾きの範囲が変化した場合であっても、当該範囲の変化に応じて認識範囲および基準値を変更することができる。したがって、本実施形態によれば、認識範囲を正確に算出することができるので、基準値cを正確に算出することができ、コントローラ5が上を向きすぎているか、それとも下を向きすぎているかの判断を正確に行うことができる。
なお、他の実施形態においては、プレイヤの使用態様がゲーム途中に変化したことに応じて認識範囲および基準値を変更する方法として、次の方法を用いてもよい。すなわち、ゲーム装置3のCPU10は、例えばステップS3において、現在から過去所定期間の間に算出された1つ以上の傾き値tをメインメモリ13に記憶しておくようにしてもよい。そして、ポインティング位置の算出が不可能と判定された場合(ステップS4の判定結果が否定となった場合)には、その時点でメインメモリ13に記憶されている1つ以上の傾き値tに基づいて認識範囲を算出するようにしてもよい。具体的には、認識範囲は、メインメモリ13に記憶されている傾き値tのうちの最大値を上限値とし、最小値を下限値とするように算出される。また、認識範囲を算出せずに、メインメモリ13に記憶されている1つ以上の傾き値tの平均値を基準値としてもよい。これらの方法によっても本実施形態と同様、プレイヤの使用態様がゲーム途中に変化したために、マーカ6Rおよび6Lが検出可能なコントローラ5の傾きの範囲が変化した場合であっても、当該範囲の変化に応じて認識範囲を設定することができる。なお、最新の傾き値tのみを記憶しておけばよく、使用する記憶領域が少なくて済む点で、上記方法に比べて上記実施形態の方が有利である。
また、他の実施形態においては、ゲーム装置3は、マーカ6Rおよび6Lが検出不可能となる直前に算出された傾き値tをメインメモリ13に記憶しておき、当該傾き値tを基準値として用いてもよい。
また、上記実施形態においては、認識範囲の中央値を基準値として用いたが、基準値は認識範囲に基づいて決定されればよい。また、基準値の個数は複数であってもよい。例えば、他の実施形態においては、認識範囲の最大値maxおよび最小値minを基準値として用いてもよい。このとき、図13に示すステップS8において、ゲーム装置3のCPU10は、傾き値tが次の(a)〜(c)のいずれに該当するかを判断する。
(a)傾き値t>最大値max
(b)最大値max≧傾き値t≧最小値min
(c)最小値min>傾き値t
上記(a)に該当する場合、CPU10は、上記ステップS10の処理を実行する。また、上記(b)に該当する場合、CPU10は、コントローラ5がどちらの方向にずれているかを示さずに、単にマーカが検出されていないことをプレイヤに報知する。また、上記(c)に該当する場合、CPU10は、上記ステップS9の処理を実行する。
また、上記実施形態では、認識範囲を用いて基準値を算出するようにしたが、傾き値tを用いて基準値を直接算出するようにしてもよい。なお、基準値を傾き値tから直接算出する場合、図13に示すステップS6の処理は不要である。例えば、ステップS7において、基準値cを傾き値tに追従するように算出するようにしてもよい。具体的には、ゲーム装置3は、次の式(6)に従って基準値cを算出するようにしてもよい。
c=c’+(t−c’)・C3 …(6)
上式(6)において、変数c’は、前回に算出された基準値である。なお、基準値cが最初に算出される場合にはc’=0とする。また、定数C3は、0<C3<1の範囲で予め設定される。以上のように、基準値cを傾き値tに追従するように算出することによっても上記実施形態と同様、プレイヤの使用態様がゲーム途中に変化した場合に応じて適切な基準値を設定することができる。
なお、コントローラ5の動きが急激な場合、すなわち、コントローラ5の位置および/または姿勢の単位時間当たりの変化量が大きい場合、加速度センサ37によって検出される加速度ベクトルは、コントローラ5の傾きに正確に対応していない可能性がある。この場合、加速度ベクトルに基づいて算出される傾き値tが正確でない可能性がある。そこで、他の実施形態においては、認識範囲算出処理において、認識範囲の最大値maxおよび最小値minを傾き値tに近づける度合いを、コントローラ5の位置および/または姿勢の変化量に基づいて決定するようにしてもよい。以下、図21を参照して認識範囲算出処理の変形例について説明する。
図21は、認識範囲算出処理の変形例における処理の流れを示すフローチャートである。本変形例においては、まずステップS31において、CPU10は、コントローラ5の位置および/または姿勢の単位時間当たりの変化量を算出する。コントローラ5の変化量は、例えば、ポインティング位置の変化量として算出される。より具体的には、前回のフレームにおいて算出されたポインティング位置と今回のフレームにおいて算出されたポインティング位置との距離を変化量とする。なお、コントローラ5の変化量として、傾き値tの変化量、すなわち、前回のフレームにおいて算出された傾き値と今回のフレームにおいて算出された傾き値との差分を用いてもよい。ステップS31で算出された変化量を示すデータ(変化量データ)はメインメモリ13に記憶される。
続くステップS32において、CPU10は、ステップS31で算出された変化量が、予め定められた所定値以上であるか否かを判定する。ステップS32の判定は、メインメモリ13に記憶されている変化量データにより示される変化量と上記所定値とを用いて行われる。ステップS32の処理によって、コントローラ5が急激に動かされているか否かを判定することができる。ステップS32の判定結果が否定である場合、図14と同様のステップS22およびステップS25の処理が順に実行される。一方、ステップS32の判定結果が肯定である場合、図14と同様のステップS23およびステップS26の処理が順に実行される。
以上に示した変形例の処理においては、認識範囲の最大値maxおよび最小値minを傾き値tに近づける度合いは、変化量が小さいほど大きくなる。具体的には、コントローラ5の変化量が大きい場合、すなわち、コントローラ5が急激に動かされている場合には、傾き値tが正確でない可能性が高いと考えられることから、認識範囲の最大値および最小値を傾き値tに近づける度合いは相対的に小さくなる。一方、コントローラ5の変化量が小さい場合には、コントローラ5が急激に動かされていないために傾き値tが正確である可能性が高いと考えられることから、認識範囲の最大値および最小値を傾き値tに近づける度合いは相対的に大きくなる(図21の例では、最大値及び最小値を傾き値tと等しくしている)。以上のように、コントローラ5の変化量を考慮して認識範囲を更新することによって、認識範囲をより正確に算出することができる。
なお、上記実施形態においては、ゲーム装置3は、プレイヤを基準とした上下方向に関する向きについてのみ報知を行うものとした。ここで、他の実施形態においては、上下方向に代えて左右方向に関する向きについて報知を行うようにしてもよい。例えば、加速度センサ37に代えてジャイロセンサを用いる場合には、左右方向に関するコントローラ5の傾きを算出することが可能であるので、ゲーム装置3は、左右のどちらの向きにずれているかを判断することができ、コントローラ5を左右のどちらに向ければよいかをプレイヤに対して報知することができる。また、加速度センサ37に代えてジャイロセンサを用いる場合、上下方向および左右方向の両方に関する向きについて報知を行うようにしてもよい。
また、上記実施形態においては、ポインティング位置をゲーム処理に用いるゲーム装置を例として説明したが、本発明は、ゲーム用途に限らず、入力装置によって指し示されるポインティング位置を算出し、ポインティング位置を入力として何らかの処理に用いる情報処理装置に適用することが可能である。
以上に説明したように、本発明は、マーカが撮像されない場合であっても、入力装置による指示位置が画面から外れたことをユーザに報知すること等を目的として、例えばゲーム装置やゲームプログラムとして利用することが可能である。
ゲームシステム1の外観図 ゲーム装置3の機能ブロック図 コントローラ5の外観構成を示す斜視図 コントローラ5の外観構成を示す斜視図 コントローラ5の内部構造を示す図 コントローラ5の内部構造を示す図 コントローラ5の構成を示すブロック図 コントローラ5を用いてゲーム操作を行うときの様子を示す図解図 マーカが撮像される場合のコントローラとセンサバーとの関係を示す図 マーカが撮像されない場合のコントローラとセンサバーとの関係を示す図 ゲーム装置3のメインメモリ13に記憶される主なデータを示す図 コントローラ5の傾きの算出方法を説明するための図 傾き値tと認識範囲とを示す概念図 ゲーム装置3において実行される処理の流れを示すメインフローチャート 図13に示す認識範囲算出処理(ステップS6)の流れを示すフローチャート 認識範囲の変更処理を説明するための図 認識範囲の変更処理を説明するための図 ステップS8の判定処理を説明するための図 プレイヤに対する報知を行うための画像の一例を示す図 コントローラ5とマーカ6Rおよび6Lとの位置関係の例を示す図 コントローラ5とマーカ6Rおよび6Lとの位置関係の例を示す図 認識範囲算出処理の変形例における処理の流れを示すフローチャート
符号の説明
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 センサバー
6R,6L マーカ
10 CPU
13 メインメモリ
35 撮像情報演算部
37 加速度センサ
40 撮像素子

Claims (14)

  1. 撮像対象を撮像するための撮像手段を備えた入力装置と通信可能であり、当該撮像手段で撮像された撮像画像に基づいて表示装置の画面上のポインティング位置を算出する情報処理装置のコンピュータで実行される情報処理プログラムであって、
    前記入力装置は、当該入力装置の動きを検出する動き検出手段を備え、
    前記動き検出手段による検出結果を用いて前記入力装置の傾きを表す傾き値を算出する傾き算出ステップと、
    前記撮像手段で撮像された撮像画像に基づく前記ポインティング位置の算出が可能か否かを判定する判定ステップと、
    前記ポインティング位置の算出が不可能と判定される場合、前記傾き算出ステップで算出された傾き値と所定の基準値とを比較する比較ステップと、
    前記比較ステップの結果に応じて、前記入力装置の傾きに関する情報をユーザに対して報知する報知ステップとを前記コンピュータに実行させる、情報処理プログラム。
  2. 前記傾き算出ステップおよび前記判定ステップは、繰り返し実行され、
    前記ポインティング位置の算出が可能と判定されている間に算出された少なくとも1つの傾き値に基づいて前記基準値を算出する基準値算出ステップを前記コンピュータにさらに実行させる、請求項1に記載の情報処理プログラム。
  3. 前記ポインティング位置の算出が可能と判定されている間に算出された1つ以上の傾き値に基づいて、当該1つ以上の傾き値の少なくともいくつかを含む傾き範囲を算出する範囲算出ステップを前記コンピュータにさらに実行させ、
    前記基準値算出ステップにおいて、前記コンピュータは、前記傾き範囲に基づいて前記基準値を算出する、請求項2に記載の情報処理プログラム。
  4. 前記基準値算出ステップにおいて、前記コンピュータは、前記傾き範囲の上限値と下限値との平均値を前記基準値とする、請求項3に記載の情報処理プログラム。
  5. 前記範囲算出ステップにおいて、前記コンピュータは、前記傾き値が算出される度に、傾き範囲の上限値および下限値を当該傾き値に近づけるように傾き範囲を変更する、請求項3および請求項4に記載の情報処理プログラム。
  6. 前記入力装置の位置および/または姿勢の変化量を算出する変化量算出ステップを前記コンピュータにさらに実行させ、
    前記範囲算出ステップにおいて、前記コンピュータは、傾き範囲の上限値および下限値を当該傾き値に近づける度合いを、前記変化量が小さいほど大きくする、請求項5に記載の情報処理プログラム。
  7. 前記変化量算出ステップにおいて、前記コンピュータは、前記撮像手段で撮像された画像に基づいて算出される前記ポインティング位置の変化量を前記入力装置の変化量として用いる、請求項6に記載の情報処理プログラム。
  8. 前記ポインティング位置の算出が可能と判定されている間に算出された1つ以上の傾き値のうち、現在から過去所定期間の間に算出された傾き値を前記情報処理装置の記憶手段に記憶する記憶ステップを前記コンピュータにさらに実行させ、
    前記基準値算出ステップにおいて、前記コンピュータは、前記ポインティング位置の算出が不可能と判定された時点において前記記憶手段に記憶されている傾き値に基づいて前記基準値を算出する、請求項2に記載の情報処理プログラム。
  9. 前記基準値算出ステップにおいて、前記コンピュータは、前記ポインティング位置の算出が可能と判定されている期間中の最後に算出された傾き値を前記基準値とする、請求項2に記載の情報処理プログラム。
  10. 前記基準値算出ステップにおいて、前記コンピュータは、前記傾き値が算出されたことに応じて、当該算出された傾き値に追従するように前記基準値を設定する、請求項2に記載の情報処理プログラム。
  11. 前記傾き値は、所定の方向を基準とした前記入力装置の角度値、当該角度値の正弦関数の値、および、当該角度値の余弦関数の値のいずれかとして表される、請求項1に記載の情報処理プログラム。
  12. 前記報知ステップにおいて、前記コンピュータは、前記撮像手段が前記撮像対象を撮像可能な向きから前記入力装置がいずれの方向にずれているかを表す情報を報知する、請求項1に記載の情報処理プログラム。
  13. 前記動き検出手段は、前記入力装置に加わる加速度を検出する加速度センサであり、
    前記傾き算出ステップにおいて、前記コンピュータは、前記加速度センサによる検出結果を用いて前記傾き値を算出または取得する、請求項1に記載の情報処理プログラム。
  14. 撮像対象を撮像するための撮像手段を備えた入力装置と通信可能であり、当該撮像手段で撮像された撮像画像に基づいて表示装置の画面上のポインティング位置を算出する情報処理装置であって、
    前記入力装置は、当該入力装置の動きを検出する動き検出手段を備え、
    前記動き検出手段による検出結果を用いて前記入力装置の傾きを表す傾き値を算出する傾き算出手段と、
    前記撮像手段で撮像された撮像画像に基づく前記ポインティング位置の算出が可能か否かを判定する判定手段と、
    前記ポインティング位置の算出が不可能と判定される場合、前記傾き算出手段によって算出された傾き値と所定の基準値とを比較する比較手段と、
    前記比較手段による比較の結果に応じて、前記入力装置の傾きに関する情報をユーザに対して報知する報知手段とを備える、情報処理装置。
JP2006321428A 2006-11-29 2006-11-29 情報処理装置および情報処理プログラム Active JP4689585B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006321428A JP4689585B2 (ja) 2006-11-29 2006-11-29 情報処理装置および情報処理プログラム
US11/656,939 US7924264B2 (en) 2006-11-29 2007-01-24 Information processing apparatus and storage medium storing information processing program
EP07002612.5A EP1946806B1 (en) 2006-11-29 2007-02-07 Information processing apparatus and storage medium storing information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006321428A JP4689585B2 (ja) 2006-11-29 2006-11-29 情報処理装置および情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2008134883A true JP2008134883A (ja) 2008-06-12
JP4689585B2 JP4689585B2 (ja) 2011-05-25

Family

ID=39464354

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006321428A Active JP4689585B2 (ja) 2006-11-29 2006-11-29 情報処理装置および情報処理プログラム

Country Status (3)

Country Link
US (1) US7924264B2 (ja)
EP (1) EP1946806B1 (ja)
JP (1) JP4689585B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010086101A (ja) * 2008-09-30 2010-04-15 Casio Computer Co Ltd ポインティング装置及びその情報送信方法と外部情報処理装置、及びプログラム
JP2011072475A (ja) * 2009-09-30 2011-04-14 Nintendo Co Ltd 座標算出装置および座標算出プログラム
JP2012252730A (ja) * 2012-09-28 2012-12-20 Casio Comput Co Ltd ポインティング装置及びその情報送信方法と外部情報処理装置、及びプログラム
US8749490B2 (en) 2008-06-30 2014-06-10 Nintendo Co., Ltd. Orientation calculation apparatus, storage medium having orientation calculation program stored therein, game apparatus, and storage medium having game program stored therein
JP2014206866A (ja) * 2013-04-12 2014-10-30 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および、情報処理の実行方法
US9079102B2 (en) 2008-06-30 2015-07-14 Nintendo Co., Ltd. Calculation of coordinates indicated by a handheld pointing device
US9772694B2 (en) 2009-03-09 2017-09-26 Nintendo Co., Ltd. Coordinate calculation apparatus and storage medium having coordinate calculation program stored therein
WO2023112144A1 (ja) * 2021-12-14 2023-06-22 日本電信電話株式会社 振動知覚位置制御装置、振動知覚位置制御方法及び振動知覚位置制御プログラム

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5060798B2 (ja) * 2007-02-23 2012-10-31 任天堂株式会社 情報処理プログラムおよび情報処理装置
JP4918376B2 (ja) * 2007-02-23 2012-04-18 任天堂株式会社 情報処理プログラムおよび情報処理装置
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 任天堂株式会社 情報処理プログラムおよび情報処理装置
EP2140919B1 (en) 2008-06-30 2018-09-05 Nintendo Co., Ltd. Orientation calculation apparatus, storage medium having orientation calculation program stored therein, game apparatus, and storage medium having game program stored therein
EP2140917B1 (en) * 2008-06-30 2018-01-03 Nintendo Co., Ltd. Orientation calculation apparatus and storage medium having orientation calculation program stored therein
KR101606834B1 (ko) * 2008-07-10 2016-03-29 삼성전자주식회사 움직임과 사용자의 조작을 이용하는 입력장치 및 이에적용되는 입력방법
TW201044226A (en) * 2009-06-10 2010-12-16 Weistech Technology Co Ltd Integrated wired/wireless virtual unit control apparatus and method
US8441438B2 (en) * 2010-01-06 2013-05-14 Cywee Group Limited 3D pointing device and method for compensating movement thereof
TWI400637B (zh) * 2009-09-11 2013-07-01 Univ Nat Chiao Tung Touch remote control system
US20110312417A1 (en) * 2010-06-17 2011-12-22 Mackay Gordon Team play game device
JP5692904B2 (ja) * 2010-11-17 2015-04-01 任天堂株式会社 入力システム、情報処理装置、情報処理プログラム、および指示位置算出方法
JP2012155551A (ja) * 2011-01-26 2012-08-16 Square Enix Co Ltd 文字入力装置及び文字入力プログラム
JP5816032B2 (ja) * 2011-09-09 2015-11-17 任天堂株式会社 入力装置、入力処理プログラム、入力処理方法、入力処理システム
US10585530B2 (en) 2014-09-23 2020-03-10 Neonode Inc. Optical proximity sensor
US9921661B2 (en) 2012-10-14 2018-03-20 Neonode Inc. Optical proximity sensor and associated user interface
US9164625B2 (en) 2012-10-14 2015-10-20 Neonode Inc. Proximity sensor for determining two-dimensional coordinates of a proximal object
US10282034B2 (en) 2012-10-14 2019-05-07 Neonode Inc. Touch sensitive curved and flexible displays
US10324565B2 (en) 2013-05-30 2019-06-18 Neonode Inc. Optical proximity sensor
EP2801891B1 (en) 2013-05-09 2018-12-26 Samsung Electronics Co., Ltd Input Apparatus, Pointing Apparatus, Method for Displaying Pointer, and Recordable Medium
KR20150117018A (ko) * 2014-04-09 2015-10-19 삼성전자주식회사 컴퓨팅 장치, 컴퓨팅 장치 제어 방법 및 다중 디스플레이 시스템
US9977565B2 (en) 2015-02-09 2018-05-22 Leapfrog Enterprises, Inc. Interactive educational system with light emitting controller
CN115039060A (zh) 2019-12-31 2022-09-09 内奥诺德公司 非接触式触摸输入系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215321A (ja) * 2001-01-19 2002-08-02 Nissan Motor Co Ltd 指示画像制御装置
JP2005258694A (ja) * 2004-03-10 2005-09-22 Asahi Kasei Microsystems Kk ポインティング装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817950A (en) * 1987-05-08 1989-04-04 Goo Paul E Video game control unit and attitude sensor
US4899956A (en) * 1988-07-20 1990-02-13 Teleflex, Incorporated Self-contained supplemental guidance module for projectile weapons
US5541831A (en) * 1993-04-16 1996-07-30 Oliver Manufacturing Co., Inc. Computer controlled separator device
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
GB2289756B (en) 1994-05-26 1998-11-11 Alps Electric Co Ltd Space coordinates detecting device and input apparatus using same
US7298360B2 (en) * 1997-03-06 2007-11-20 Harmonic Research, Inc. Body-mounted selective control device
US6720949B1 (en) 1997-08-22 2004-04-13 Timothy R. Pryor Man machine interfaces and applications
US6408087B1 (en) * 1998-01-13 2002-06-18 Stmicroelectronics, Inc. Capacitive semiconductor user input device
US6425525B1 (en) * 1999-03-19 2002-07-30 Accenture Llp System and method for inputting, retrieving, organizing and analyzing data
US6611783B2 (en) * 2000-01-07 2003-08-26 Nocwatch, Inc. Attitude indicator and activity monitoring device
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
US6803906B1 (en) * 2000-07-05 2004-10-12 Smart Technologies, Inc. Passive touch system and method of detecting user input
US20060129933A1 (en) * 2000-12-19 2006-06-15 Sparkpoint Software, Inc. System and method for multimedia authoring and playback
US6929548B2 (en) * 2002-04-23 2005-08-16 Xiaoling Wang Apparatus and a method for more realistic shooting video games on computers or similar devices
US6982697B2 (en) 2002-02-07 2006-01-03 Microsoft Corporation System and process for selecting objects in a ubiquitous computing environment
CN100409157C (zh) * 2002-12-23 2008-08-06 皇家飞利浦电子股份有限公司 非接触式输入装置
US20050119036A1 (en) 2003-10-03 2005-06-02 Amro Albanna Input system and method
JP3708535B2 (ja) 2004-03-12 2005-10-19 コナミ株式会社 射的ゲーム装置
US7365737B2 (en) 2004-03-23 2008-04-29 Fujitsu Limited Non-uniform gesture precision
US7460110B2 (en) * 2004-04-29 2008-12-02 Smart Technologies Ulc Dual mode touch system
US7158118B2 (en) 2004-04-30 2007-01-02 Hillcrest Laboratories, Inc. 3D pointing devices with orientation compensation and improved usability
CA2578653A1 (en) 2004-07-29 2006-02-09 Kevin Ferguson A human movement measurement system
US8137195B2 (en) 2004-11-23 2012-03-20 Hillcrest Laboratories, Inc. Semantic gaming and application transformation
US7086165B2 (en) * 2004-12-27 2006-08-08 Lenovo Pte. Ltd. System and method for managing power in an electronic device
US7796116B2 (en) 2005-01-12 2010-09-14 Thinkoptics, Inc. Electronic equipment for handheld vision based absolute pointing system
US7489249B2 (en) * 2005-08-11 2009-02-10 Dmatek Ltd. Apparatus and method for determining the attitude of a remotely monitored device
WO2007073107A1 (en) * 2005-12-21 2007-06-28 Jae Chern Yoo Bio memory disc and bio memory disk drive apparatus, and assay method using the same
JP4895352B2 (ja) * 2006-02-07 2012-03-14 任天堂株式会社 対象選択プログラム、対象選択装置、対象選択システム、および対象選択方法
JP5330640B2 (ja) * 2006-05-09 2013-10-30 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
US20090146953A1 (en) * 2006-10-30 2009-06-11 Imu Solutions, Inc. Methods for processing data from accelerometer in anticipating real-time cursor control movements
JP5285234B2 (ja) * 2007-04-24 2013-09-11 任天堂株式会社 ゲームシステム、情報処理システム
US9317110B2 (en) * 2007-05-29 2016-04-19 Cfph, Llc Game with hand motion control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215321A (ja) * 2001-01-19 2002-08-02 Nissan Motor Co Ltd 指示画像制御装置
JP2005258694A (ja) * 2004-03-10 2005-09-22 Asahi Kasei Microsystems Kk ポインティング装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8749490B2 (en) 2008-06-30 2014-06-10 Nintendo Co., Ltd. Orientation calculation apparatus, storage medium having orientation calculation program stored therein, game apparatus, and storage medium having game program stored therein
US9079102B2 (en) 2008-06-30 2015-07-14 Nintendo Co., Ltd. Calculation of coordinates indicated by a handheld pointing device
JP2010086101A (ja) * 2008-09-30 2010-04-15 Casio Computer Co Ltd ポインティング装置及びその情報送信方法と外部情報処理装置、及びプログラム
US9772694B2 (en) 2009-03-09 2017-09-26 Nintendo Co., Ltd. Coordinate calculation apparatus and storage medium having coordinate calculation program stored therein
JP2011072475A (ja) * 2009-09-30 2011-04-14 Nintendo Co Ltd 座標算出装置および座標算出プログラム
JP2012252730A (ja) * 2012-09-28 2012-12-20 Casio Comput Co Ltd ポインティング装置及びその情報送信方法と外部情報処理装置、及びプログラム
JP2014206866A (ja) * 2013-04-12 2014-10-30 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および、情報処理の実行方法
WO2023112144A1 (ja) * 2021-12-14 2023-06-22 日本電信電話株式会社 振動知覚位置制御装置、振動知覚位置制御方法及び振動知覚位置制御プログラム

Also Published As

Publication number Publication date
US20080125223A1 (en) 2008-05-29
EP1946806A2 (en) 2008-07-23
EP1946806B1 (en) 2019-10-02
EP1946806A3 (en) 2010-08-18
JP4689585B2 (ja) 2011-05-25
US7924264B2 (en) 2011-04-12

Similar Documents

Publication Publication Date Title
JP4689585B2 (ja) 情報処理装置および情報処理プログラム
JP5692904B2 (ja) 入力システム、情報処理装置、情報処理プログラム、および指示位置算出方法
JP4684147B2 (ja) 傾き算出装置、傾き算出プログラム、ゲーム装置およびゲームプログラム
JP5060798B2 (ja) 情報処理プログラムおよび情報処理装置
JP4773170B2 (ja) ゲームプログラムおよびゲームシステム
JP4907129B2 (ja) 情報処理システムおよびプログラム
JP4260814B2 (ja) ゲーム装置およびゲームプログラム
US7834848B2 (en) Coordinate calculating apparatus and coordinate calculating program
JP4918376B2 (ja) 情報処理プログラムおよび情報処理装置
JP4547346B2 (ja) 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム
US20070211050A1 (en) Coordinate calculating apparatus and coordinate calculating program
US8345000B2 (en) Storage medium having game program stored therein, game apparatus, and tilt angle correction method
JP5797046B2 (ja) ポインティングシステム、情報処理システム、座標系等の設定方法、情報処理装置、および情報処理プログラム
JP2008276636A (ja) 情報処理装置および情報処理プログラム
JP4151983B2 (ja) 移動方向算出装置および移動方向算出プログラム
JP5350612B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法
JP4290709B2 (ja) ゲーム装置およびゲームプログラム
JP2008307409A (ja) 情報処理装置および情報処理プログラム
JP4220531B2 (ja) 重力方向算出装置および重力方向算出プログラム
JP5735866B2 (ja) 情報処理システムおよびプログラム
JP2007295989A (ja) ゲーム装置およびゲームプログラム
JP6280390B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法
JP6262563B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091020

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110117

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: 20110120

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: 20110216

R150 Certificate of patent or registration of utility model

Ref document number: 4689585

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: 20140225

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