JP5872137B2 - 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法 - Google Patents

姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法 Download PDF

Info

Publication number
JP5872137B2
JP5872137B2 JP2009113323A JP2009113323A JP5872137B2 JP 5872137 B2 JP5872137 B2 JP 5872137B2 JP 2009113323 A JP2009113323 A JP 2009113323A JP 2009113323 A JP2009113323 A JP 2009113323A JP 5872137 B2 JP5872137 B2 JP 5872137B2
Authority
JP
Japan
Prior art keywords
attitude
posture
input device
acceleration
angular velocity
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.)
Active
Application number
JP2009113323A
Other languages
English (en)
Other versions
JP2010259642A (ja
Inventor
卓宏 堂田
卓宏 堂田
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 JP2009113323A priority Critical patent/JP5872137B2/ja
Priority to US12/511,379 priority patent/US8401815B2/en
Publication of JP2010259642A publication Critical patent/JP2010259642A/ja
Application granted granted Critical
Publication of JP5872137B2 publication Critical patent/JP5872137B2/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/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/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
    • 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
    • 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/24Constructional details thereof, e.g. game controllers with detachable joystick handles
    • 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/25Output arrangements for video game devices
    • A63F13/28Output arrangements for video game devices responding to control signals received from the game device for affecting ambient conditions, e.g. for vibrating players' seats, activating scent dispensers or affecting temperature or light
    • A63F13/285Generating tactile feedback signals via the game input device, e.g. force feedback
    • 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/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/32Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
    • A63F13/327Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections using wireless networks, e.g. Wi-Fi® or piconet
    • 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
    • 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/50Features 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 details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/552Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device

Landscapes

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

Description

本発明は、入力装置の姿勢を算出する姿勢算出装置および姿勢算出プログラムに関し、より特定的には、入力装置が備える加速度センサの出力を用いて姿勢を算出する姿勢算出装置姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法に関する。
従来、入力装置が備える加速度センサの出力を用いて入力装置の姿勢を算出する技術が提案されている。例えば、特許文献1では、加速度センサによって一定期間内に検出された加速度を平滑化した値を用いて姿勢を算出している。特許文献1では、検出された加速度に対して平滑化を行うことによって、当該検出された加速度に含まれる成分のうちから入力装置の動きに起因する成分を除去し、検出された加速度が重力加速度による成分のみを含むようにしている。これによって、加速度センサの出力から重力方向を正確に算出することができ、入力装置の姿勢を正確に算出することができる。
特開2007−282787号公報
上記特許文献1に記載の姿勢算出方法では、一定期間内に検出された加速度を平滑化する処理を行う。平滑化の処理のためには、過去の一定期間における複数の加速度の値が必要であることから、平滑化処理を行う上記特許文献1に記載の方法では、姿勢を算出するまでの応答性に限界があった。
それ故、本発明の目的は、加速度を用いて入力装置の姿勢を算出する際、入力装置の姿勢を応答性良く算出することができる姿勢算出装置姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法を提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
本発明は、加速度センサ(37)および角速度センサ(ジャイロセンサ55,56)を備える入力装置(8)から少なくとも加速度データ(64)および角速度データ(63)を取得し、入力装置の姿勢を算出する姿勢算出装置(ゲーム装置3)である。姿勢算出装置は、反映度設定手段(ステップS3を実行するCPU10。以下、単にステップ番号のみを記載する。)と、第1姿勢算出手段(S5)と、第2姿勢算出手段(S6)とを備える。反映度設定手段は、加速度データが示す加速度(加速度ベクトルVa)を姿勢に反映させる度合いを表す反映度(s)を設定する。第1姿勢算出手段は、反映度が所定の第1閾値以上である場合(反映度s=1の場合)、加速度データが示す加速度に基づいて入力装置の姿勢を算出する。第2姿勢算出手段は、反映度が、第1閾値以下である所定の第2閾値よりも小さい場合(反映度s=0の場合)、角速度データによって示される角速度(ω)に基づいて入力装置の姿勢を算出する。第2姿勢算出手段は、角速度センサが検出する角速度を取得し、前回の姿勢を当該取得された角速度に応じて回転させることによって新たな姿勢を算出する。反映度設定手段は、加速度データが示す加速度に基づいて反映度を算出する。
上記の構成によれば、反映度が大きい場合(反映度が第1閾値以上である場合)には加速度に基づいて入力装置の姿勢が算出され、反映度が小さい場合(反映度が第2閾値より小さい場合)には角速度に基づいて入力装置の姿勢が算出される。加速度に基づく姿勢の算出が適切でない場合には、角速度に基づいて姿勢が算出されるので、加速度に基づく姿勢の算出を行わない場合でも姿勢を算出することができる。したがって、加速度に基づく姿勢の算出が実行されない期間中に姿勢が算出されないために応答性が悪くなることを防止することができ、入力装置の姿勢を応答性良く算出することができる。
また、第2閾値は、前記第1閾値よりも小さい値であってもよい。このとき、姿勢算出装置は、第3姿勢算出手段(図10に示すS7)をさらに備える。第3姿勢算出手段は、前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上である場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する。
上記の構成によれば、反映度が中程度の値となる場合(上記第1閾値よりも小さくかつ第2閾値以上である場合)には、第3姿勢算出手段が、加速度に基づく第1姿勢と角速度に基づく第2姿勢との両方を考慮して姿勢を算出する。ここで、反映度が大きい状態と小さい状態との間で入力装置の状態が遷移する移行期間においては、姿勢の算出方法が変化することが原因で、算出される姿勢が急激に変化するおそれがある。これに対して、上記の構成によれば、上記移行期間においては上記第3姿勢算出手段によって姿勢が算出されるので、姿勢の算出方法が変化することに起因する姿勢の急激な変化を防止することができる。そのため、姿勢の急激な変化に対してユーザが違和感を抱くことを防止することができ、入力装置の操作性を向上することができる。
また、前記第3姿勢算出手段は、前記第1姿勢算出手段が算出した姿勢と前記第2姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出してもよい(式(5))。
上記の構成によれば、第3姿勢算出手段は、入力装置の姿勢を算出する際、加速度に基づく姿勢と角速度に基づく姿勢とを、反映度に従った比率で用いる。したがって、反映度が大きい状態と小さい状態との間で入力装置の状態が遷移する際の移行期間においても、姿勢を正確に算出することができる。
また、前記第1閾値と前記第2閾値は等しい値であってもよい。このとき、前記第1姿勢算出手段は、前記反映度が前記第1閾値以上である場合に前記入力装置の姿勢を算出する。前記第2姿勢算出手段は、前記反映度が前記第1閾値よりも小さい場合に前記入力装置の姿勢を算出する(図11)。
上記の構成によれば、反映度の値がいくらであっても、第1姿勢算出手段および第2姿勢算出手段のいずれかが必ず入力装置の姿勢を算出する。つまり、入力装置の姿勢を算出することが常に可能であるので、姿勢算出の応答性をより向上することができる。また、第3姿勢算出手段を備える場合に比べて、姿勢算出処理を簡易にすることができ、処理を高速化することができる。
また、姿勢算出装置は、第4姿勢算出手段をさらに備えていてもよい(図12に示すステップS7)。第4姿勢算出手段は、前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上であり、さらに、前記反映度が増加している場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する。前記第2姿勢算出手段は、前記反映度が前記第2閾値よりも小さい場合、または、前記第1閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する。
上記の構成によれば、反映度が中程度の値となる場合(上記第1閾値よりも小さくかつ第2閾値以上である場合)であって、反映度が増加している場合には、第3姿勢算出手段が、加速度に基づく第1姿勢と角速度に基づく第2姿勢との両方を考慮して姿勢を算出する。ここで、反映度が小さい状態から大きい状態へと入力装置の状態が遷移する移行期間においては、姿勢の算出方法が変化することが原因で姿勢が急激に変化するおそれがある。これに対して、上記の構成によれば、上記移行期間においては上記第3姿勢算出手段によって姿勢が算出されるので、姿勢の算出方法が変化することに起因する姿勢の急激な変化を防止することができる。そのため、姿勢の急激な変化に対してユーザが違和感を抱くことを防止することができ、入力装置の操作性を向上することができる。
また、前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出してもよい(式(1))。
上記の構成によれば、加速度データを用いることによって反映度を容易に算出することができる。また、加速度データを参照すれることによって、姿勢算出装置は、入力装置が動いている度合い(静止しているか、それとも、動かされているか)を推測することができ、さらには、加速度データにより示される加速度の信頼度(加速度が重力方向を表すものとして信頼できるか否かを表す度合い)を判断することができる。したがって、上記の構成によれば、反映度によって上記信頼度を表すことができるので、加速度または角速度のいずれに基づいて姿勢を算出するかを当該信頼度に応じて決定することができる。その結果、入力装置の姿勢を正確に算出することができる。
また、前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出してもよい(式(1))。
上記の構成によれば、加速度の変化量に応じて反映度が算出される。加速度の変化量を参照すれることによって、入力装置が動いている度合いを正確に推測することができ、その結果、加速度に関する上記信頼度を正確に判断することができる。したがって、加速度の変化量に応じて反映度を算出することによって、反映度を適切に設定することができ、ひいては、入力装置の姿勢を正確に算出することができる。
また、前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出してもよい。
上記の構成によれば、加速度の大きさと重力加速度の大きさとの差分に応じて反映度が算出される。上記差分を参照することによって、入力装置が動いている度合いを正確に推測することができ、加速度に関する上記信頼度を正確に判断することができる。したがって、上記差分に応じて反映度を算出することによって、反映度を適切に設定することができ、ひいては、入力装置の姿勢を正確に算出することができる。
また、前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正してもよい(式(2))。
上記の構成によれば、反映度が増加する場合には、補正によって反映度の増加量が抑えられる。ここで、加速度から算出される反映度は、入力装置8が動かされている間に一時的に大きくなる場合がある。このような場合には、実際は加速度が重力方向を正しく表していない可能性が高く、反映度は小さい値に算出されるべきである。これに対して、上記の構成によれば、反映度が一時的に増加する場合には補正によって反映度の増加が抑えられ、反映度を小さい値に維持することができる。つまり、上記構成によれば、上記信頼度を表すものとして反映度をより正確に算出することができ、ひいては、入力装置の姿勢を正確に算出することができる。
また、前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定してもよい。
上記の構成によれば、反映度は、入力装置が動いている度合いを表すものとして算出される。上述のように、入力装置が動いている度合いによって、加速度データにより示される加速度の上記信頼度を判断することができる。したがって、上記の構成によれば、上記信頼度を表すものとして反映度を適切に設定することができ、入力装置の姿勢を正確に算出することができる。
また、前記角速度センサは前記入力装置に対して着脱可能であってもよい。このとき、前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し(S21)、角速度センサが装着されていないと判定される場合、角速度に基づかずに入力装置の姿勢を算出するように前記反映度を設定する(図14に示すS3,S22)。
上記の構成によれば、角速度センサが入力装置に装着されているか否かに応じて異なる値となるように反映度が設定される。これによれば、姿勢算出装置は、角速度センサが装着されていない場合には第1姿勢算出手段によって加速度に基づく姿勢を算出し、角速度センサが装着されている場合には第1姿勢算出手段と第2姿勢算出手段を適宜使い分けて姿勢を算出することが可能となる。すなわち、姿勢算出装置は、角速度センサが装着されている場合と装着されていない場合との両方に対応することが可能となる。
また、前記第1姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出してもよい(式(3))。
上記の構成によれば、第1姿勢算出手段は、反映度を考慮して入力装置の姿勢を算出するので、姿勢をより正確に算出することができる。なお、上記の構成においては、反映度が小さくなると姿勢が変化しなくなり、実質的には姿勢が算出されなくなってしまう。しかし、本発明では反映度が小さい場合には角速度に基づいて姿勢が算出されるので、姿勢が算出されない結果、姿勢算出の応答性が悪くなることがない。このように、上記の構成のように反映度を考慮して入力装置の姿勢を算出する場合には、本発明が特に有効に機能する。
また、本発明は、情報処理装置のコンピュータを上記各手段として機能させる姿勢算出プログラム(61)の形態で実施されてもよい。
本発明によれば、加速度に基づく姿勢算出が実行されない場合には、角速度に基づく姿勢算出を行うようにすることによって、姿勢の算出が実行されないために姿勢算出の応答性が悪くなることを防止し、入力装置の姿勢を応答性良く算出することができる。
ゲームシステムの外観図 ゲーム装置の機能ブロック図 入力装置の外観構成を示す斜視図 コントローラの外観構成を示す斜視図 コントローラの内部構造を示す図 コントローラの内部構造を示す図 入力装置の構成を示すブロック図 本実施形態における姿勢算出処理の概要を示す図 ゲーム装置のメインメモリに記憶される主なデータを示す図 ゲーム装置において実行される処理の流れを示すメインフローチャート 本実施形態の第1の変形例におけるゲーム処理の流れを示すフローチャート 本実施形態の第2の変形例におけるゲーム処理の流れを示すフローチャート 本実施形態の第2の変形例における反映度sと姿勢算出に用いる方法との関係を示す図 本実施形態の第3の変形例におけるゲーム処理の流れを示すフローチャート
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係る姿勢算出装置の一例であるゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、およびマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図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が設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
一方、図6において、基板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の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子や、スピーカ49に音声信号を出力するアンプ等を備えている。
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55および56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
なお、図3〜図6に示したコントローラ5およびジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
図7は、入力装置8(コントローラ5およびジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
撮像情報演算部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は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。また、以下では、当該加速度ベクトルを、後述する運動加速度ベクトルと明確に区別する目的で、「検出加速度ベクトル」と呼ぶことがある。
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データに基づいてコントローラ5の姿勢を判断する。
加速度センサ37が検出した加速度を示す上記加速度データは、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、および1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)回りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
2軸ジャイロセンサ55は、X軸回りの角速度およびY軸回りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Z軸回りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、XYZ軸回りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ロール方向(X軸回りの回転方向)およびピッチ方向(Y軸回りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ヨー方向(Z軸回りの回転方向)の角速度を検出する。
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ55および56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ56および57が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
各ジャイロセンサ56および57で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ5によれば、プレイヤは、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作を行うこともできる。
[姿勢算出処理の概要]
次に、ゲーム装置3において実行される、入力装置8の姿勢を算出する姿勢算出処理の概要を説明する。本実施形態では、ゲーム装置3は、姿勢算出処理によって入力装置8の姿勢を算出し、算出された姿勢をプレイヤ入力として用いてゲーム処理を実行する。本実施形態では、ゲーム装置3を用いて行われるゲームの一例として、プレイヤが入力装置8を用いてハンドル操作のようなゲーム操作を行うゲームを想定する。すなわち、プレイヤは入力装置8のZ軸が略水平になるように入力装置8を把持し、入力装置8を左右に傾けることによって入力装置8の姿勢を変化させる操作を行う(図8参照)。ゲーム装置3は、入力装置8の姿勢を繰り返し算出し、例えば仮想のゲーム空間内に配置されるオブジェクトの動作を当該姿勢に応じて制御する。
本実施形態における姿勢算出処理では、ゲーム装置3は、基本的には加速度センサ37の出力(加速度ベクトル)に基づいて入力装置8の姿勢を算出する。加速度センサ37は入力装置8に加えられる重力加速度を検出する(加速度センサ37が検出する加速度には重力加速度が含まれる)ので、ゲーム装置3は、検出される加速度を用いて、入力装置8を基準にした重力方向、すなわち、重力方向に対する入力装置8の傾き(姿勢)を算出することができる。なお、本実施形態では、入力装置8の姿勢は、加速度から算出される重力方向を表すベクトル(図8に示す重力ベクトルVg)として表される。
ここで、入力装置8が静止している場合(ほぼ静止していて静止しているとみなせる場合も含む)には、加速度センサ37が検出する加速度には重力加速度のみが含まれるので、当該加速度は重力方向を正確に表していると言える。したがって、この場合、ゲーム装置3は、加速度の向きを重力方向とすることによって入力装置8の姿勢を正確に算出することができる。一方、入力装置8が動かされている場合には、重力加速度だけでなく、入力装置8の運動に起因する加速度が加速度センサ37によって検出される。例えば、加速度センサ37が検出する加速度には、入力装置8の移動により生じる慣性力や遠心力による慣性力等による加速度が含まれる。そのため、入力装置8が動かされている場合には、加速度センサ37が検出する加速度が重力方向を正確には表していない可能性がある。したがって、入力装置8が動かされている場合においては、上記加速度をそのまま用いて重力方向を算出しても、姿勢を正確に算出することができない。なお、入力装置8が動かされている場合には上記加速度から重力方向を算出する処理を実行しないようにする方法も考えられる。しかし、この方法では入力装置8が動かされている間、ゲーム装置3は入力装置8の姿勢を算出することができなくなるので、姿勢をリアルタイムで算出することができない。その結果、姿勢算出の応答性、および、入力装置8による操作の応答性が悪くなってしまう。このように、加速度センサ37によって検出される加速度から重力方向を算出する方法では、入力装置8が動いている場合に問題が生じるおそれがある。
そこで、本実施形態における姿勢算出処理においては、ゲーム装置3は、加速度センサ37によって検出される加速度に基づいて姿勢を算出する処理に加えて、当該処理では姿勢を正確に算出することができない場合には、ジャイロセンサ55および56によって検出される角速度に基づいて姿勢を算出する処理を実行する。つまり、ゲーム装置3は、加速度センサ37によって検出される加速度が重力方向を正確には表していないと判断される場合には、ジャイロセンサ55および56によって検出される角速度に基づいて姿勢を算出する。これによって、入力装置8の姿勢を正確に算出することができるとともに、入力装置8の姿勢を応答性良く算出することができる。
具体的には、ゲーム装置3は、(1)反映度設定手段と、(2)第1姿勢算出手段と、(3)第2姿勢算出手段とを備える。なお、上記(1)〜(3)の各手段は、ゲーム装置3のコンピュータ(CPU10)がゲームプログラムに含まれる姿勢算出プログラムを実行することによって実現される。すなわち、姿勢算出プログラムは、ゲーム装置3のコンピュータを上記(1)〜(3)の各手段として機能させる。以下、各手段について詳細を説明する。
(1)反映度設定手段
反映度設定手段は、算出すべき姿勢に対して上記加速度を反映させる度合い(姿勢の算出に上記加速度を反映させる度合い)を表す反映度sを設定する(後述するステップS3,S4)。反映度sは、加速度センサ37によって検出される加速度が重力方向を表すものとして信頼される場合ほど、大きい値となるように設定される。典型的には、反映度sは、入力装置8が静止状態にあるかまたはほぼ静止している状態にある場合、大きい値に設定され、入力装置8が動いている状態にある場合、小さい値に設定される。つまり、反映度sは、入力装置が激しく動かされているほど小さくなるように設定されてもよい。本実施形態においては、反映度設定手段は、加速度センサ37によって検出される加速度(加速度ベクトルVa)に基づいて反映度sを算出する。なお、他の実施形態においては、反映度sは、加速度データに代えて、入力装置8からゲーム装置3へ送信される他の操作データ(マーカ座標データや角速度データ)に基づいて算出されてもよい。
(2)第1姿勢算出手段
図8は、本実施形態における姿勢算出処理の概要を示す図である。第1姿勢算出手段は、上記反映度sが所定の第1閾値以上である場合、加速度センサ37によって検出される加速度(加速度ベクトルVa)に基づいて入力装置8の姿勢を算出する(後述するステップS5)。つまり、ゲーム装置3は、反映度が比較的大きい値である場合、加速度ベクトルVaが重力方向を表すものとして信頼できると判断し、当該加速度を用いて入力装置8の姿勢(重力ベクトルVg)を算出する(図8に示す(A)の場合)。また、加速度に基づく姿勢の算出方法はどのような方法であってもよい。例えば図8に示すように、第1姿勢算出手段は、加速度ベクトルVaの方向をそのまま重力ベクトルVgとして用いて入力装置8の姿勢を算出してもよい。詳細は後述するが、本実施形態では、第1姿勢算出手段は、加速度ベクトルVaとともに上記反映度を用いて入力装置8の姿勢(重力ベクトルVg)を算出する。
(3)第2姿勢算出手段
第2姿勢算出手段は、反映度が所定の第2閾値よりも小さい場合、ジャイロセンサ55および56によって検出される角速度ωに基づいて入力装置8の姿勢を算出する(後述するステップS6)。つまり、ゲーム装置3は、反映度が比較的小さい値である場合、加速度が重力方向を表すものとして信頼できないと判断し、当該加速度に代えて上記角速度ωを用いて入力装置8の姿勢(重力ベクトルVg)を算出する(図8に示す(B)の場合)。角速度ωに基づく姿勢の算出方法はどのような方法であってもよい。本実施形態では、第2姿勢算出手段は、現在の姿勢を角速度ωに基づいて逐次更新することによって新たな姿勢を算出する。具体的には、姿勢は、図8に示すように、前回の姿勢に対応する重力ベクトルVg0を角速度ωの逆方向に回転させることによって得られる重力ベクトルVgとして算出される。
以上のように、本実施形態においては、反映度sの値が比較的大きい場合には加速度に基づいて入力装置8の姿勢が算出され(図8に示す(A))、反映度sの値が比較的小さい場合には、角速度に基づいて入力装置8の姿勢が算出される(図8に示す(B))。このように、本実施形態によれば、加速度センサ37によって検出される加速度が重力方向を表すものとして信頼できるか否かに応じて、姿勢の算出のために当該加速度を用いるか否かが決定される。したがって、信頼できない(重力方向を表さない)加速度に基づいて姿勢が算出されることを防止することができるので、姿勢を正確に算出することができる。また、加速度が信頼できない場合には角速度に基づいて姿勢が算出されるので、ゲーム装置3は、加速度が信頼できない期間中も姿勢を算出することができる。つまり、加速度が信頼できない期間中に姿勢が算出されないことによって応答性が悪くなることを防止することができ、入力装置8の姿勢を応答性良く算出することができる。
なお、実際に入力装置8を用いて操作が行われる場合には、入力装置8が静止している状態と、入力装置8が動いている状態との間に移行状態が生じる。この移行状態とは、反映度sが中程度の値となる状態(具体的には、上記第1閾値と第2閾値との間の値となる状態)である。本実施形態においては、上記移行状態に対応すべく、ゲーム装置3は第3姿勢算出手段をさらに備える。第3姿勢算出手段は、反映度sが第1閾値よりも小さくかつ第2閾値以上である場合、第1姿勢算出手段が算出した姿勢と、第2姿勢算出手段が算出した姿勢との間になるように入力装置8の姿勢を算出する(後述するステップS7)。したがって、この場合、姿勢を表す重力ベクトルVgは、加速度に基づいて算出される重力ベクトルVg1と、角速度に基づいて算出される重力ベクトルVg2との間となるように算出される(図8に示す(C)参照)。
ここで、反映度sが比較的大きい状態と、反映度sが比較的小さい状態との間で状態が遷移する際において、第1姿勢算出手段による算出方法から第2姿勢算出手段による算出方法へと姿勢の算出方法を急に変化させると、算出される姿勢が急に変化する可能性がある。姿勢が急に変化すると、姿勢を用いて実行されるゲーム処理の結果(例えば、仮想ゲーム空間におけるオブジェクトの姿勢や動作)も急に変化することになるので、プレイヤが入力操作に違和感を抱くおそれがある。これに対して、上記第3姿勢算出手段をさらに備える構成とすることによって、姿勢の算出方法を急に切り替えることに起因する姿勢の急激な変化を防止することができる。したがって、プレイヤが入力操作に違和感を抱くことを防止することができ、入力装置8の操作性を向上することができる。なお、他の実施形態においては、後述する第1の変形例のように、ゲーム装置3は第3姿勢算出手段を備えていない構成であってもよい。
[ゲーム処理の詳細]
次に、図9および図10を参照して、ゲーム装置3において実行されるゲーム処理の詳細について説明する。まず、ゲーム処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図9に示すように、ゲーム装置3のメインメモリには、ゲームプログラム60、操作データ62、およびゲーム処理用データ65が記憶される。なお、メインメモリには、図9に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム60には姿勢算出プログラム61が含まれる。姿勢算出プログラム61は、入力装置8の姿勢を算出するための姿勢算出処理(後述するステップS3〜S7)を実行するためのプログラムである。
操作データ62は、コントローラ5からゲーム装置3へ送信されてくる操作データである。上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、メインメモリに記憶される操作データ62はこの割合で更新される。
操作データ62には、角速度データ63および加速度データ64が含まれる。角速度データ63は、ジャイロセンサユニット7のジャイロセンサ55および56によって検出された角速度ωを示すデータである。ここでは、角速度データ63は、図3に示すXYZ座標系の3軸回りのそれぞれの角速度ωを示す。なお、コントローラ5にジャイロセンサユニット7が装着されていない場合、角速度データ63は、ジャイロセンサユニット7が装着されていないことを示すデータとなる。
加速度データ64は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ64は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルVaを示す。また、本実施形態においては、入力装置8が静止している状態で加速度センサ37が検出する加速度ベクトルVaの大きさを“1”とする。つまり、加速度センサ37によって検出される重力加速度の大きさは“1”である。
なお、本実施形態においては、操作データ62には、角速度データ63および加速度データ64の他、マーカ座標データおよび操作ボタンデータが含まれる。マーカ座標データは、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上述のマーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現される。また、操作ボタンデータは、各操作ボタン32a〜32iに対する入力状態を示すデータである。
ゲーム処理用データ65は、後述するゲーム処理(図10)において用いられるデータである。ゲーム処理用データ65は、前回加速度データ66、反映度データ67、前回反映度データ68、第1姿勢データ69、第2姿勢データ70、第3姿勢データ71、および、前回姿勢データ72を含む。なお、図9に示すデータの他、ゲーム処理用データ65は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
前回加速度データ66は、前回に取得された操作データ62に含まれる加速度データである。すなわち、CPU10は入力装置8から操作データ62を繰り返し取得し、新たな操作データ62が取得されると、その時点で加速度データ64としてメインメモリに記憶していたデータを、前回加速度データ66としてメインメモリに記憶する。前回加速度データ66により示される加速度ベクトル(前回加速度ベクトル)Va0は、反映度sおよび第1重力ベクトルVg1を算出するために用いられる。
反映度データ67は、上記反映度sを示すデータである。本実施形態においては、反映度sは、加速度センサ37によって検出される加速度ベクトルVaと上記前回加速度ベクトルVa0とに基づいて算出される。反映度sは、加速度ベクトルVaが重力方向を表すものとして信頼される度合いを表す変数である。詳細は後述するが、反映度sは、0≦s≦1の範囲をとり、値が大きいほど、加速度ベクトルVaが(重力方向を表すものとして)信頼できることを表す。
前回反映度データ68は、前回に算出された反映度を示すデータである。すなわち、CPU10は、反映度sを繰り返し算出し、新たな反映度sが算出されると、その時点で反映度データ67としてメインメモリに記憶していたデータを、前回反映度データ68としてメインメモリに記憶する。詳細は後述するが、前回反映度s0は反映度sを補正する処理(ステップS4)において用いられる。
第1姿勢データ69は、上記加速度ベクトルVaに基づいて算出される入力装置8の姿勢(第1姿勢)を示すデータである。本実施形態においては、入力装置8の姿勢は、入力装置8を基準とした場合の重力方向を示す重力ベクトルによって表される。したがって、第1姿勢データ69は、上記加速度ベクトルVaに基づいて算出される第1重力ベクトルVg1を示す。なお、他の実施形態においては、入力装置8の姿勢は、例えば空間における入力装置8の所定軸(例えばZ軸)の向きを表すベクトルや、入力装置8のXYZ軸の向きを表す3つのベクトルの各成分を要素とする3×3の行列によって表されてもよい。また、本実施形態では、入力装置8の3次元の姿勢を算出する場合を例として説明するが、他の実施形態においては、ゲーム装置3は、入力装置8の2次元の姿勢を算出するものであってもよい。
第2姿勢データ70は、ジャイロセンサ55,56によって検出される角速度ωに基づいて算出される入力装置8の姿勢(第2姿勢)を示すデータである。本実施形態においては、第2姿勢も上記第1姿勢と同様、入力装置8を基準とした場合の重力方向を示す重力ベクトルによって表される。すなわち、第2姿勢データ70は、上記角速度ωに基づいて算出される第2重力ベクトルVg2を示す。
第3姿勢データ71は、上記第1姿勢および第2姿勢に基づいて算出される入力装置8の姿勢(第3姿勢)を示すデータである。本実施形態においては、第3姿勢も上記第1および第2姿勢と同様、入力装置8を基準とした場合の重力方向を示す重力ベクトルによって表される。すなわち、第3姿勢データ71は、上記第1重力ベクトルVg1および第2重力ベクトルVg2に基づいて算出される第3重力ベクトルVg3を示す。なお、第3重力ベクトルVg3は、第1重力ベクトルVg1と第2重力ベクトルVg2との間となるように算出される。本実施形態においては、第3重力ベクトルVg3が、最終的な入力装置8の姿勢として用いられる。
前回姿勢データ72は、前回に算出された入力装置8の姿勢(第3姿勢)を示すデータである。すなわち、CPU10は、第3姿勢を繰り返し算出し、新たな第3姿勢が算出されると、その時点で第3姿勢データ71としてメインメモリに記憶していたデータを、前回姿勢データ72としてメインメモリに記憶する。以下では、前回姿勢データ72により示される、前回の第3姿勢を表す重力ベクトルを、前回重力ベクトルVg0とする。前回重力ベクトルVg0は、今回の第2姿勢(すなわち、第2重力ベクトルVg2)を算出するために用いられる。
次に、ゲーム装置3において行われる処理の詳細を、図10を用いて説明する。図10は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図10に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
まず、ステップS1において、CPU10は、ゲームに関する初期化処理を実行する。この初期化処理においては、ゲーム処理に用いられる各種パラメータの値が初期化されたり、仮想のゲーム空間が構築されたり、プレイヤオブジェクトや他のオブジェクトがゲーム空間の初期位置に配置されたりする。また、ゲーム処理用データ65に含まれるデータのうち、必要なデータに関して初期値が設定される。例えば、前回加速度データ66としては“0”を示すデータがメインメモリに記憶される。また、前回反映度データ68としては“1”を示すデータがメインメモリに記憶される。以上のステップS1の後、ステップS2〜S9の処理ループが、ゲームが実行される間繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
ステップS2において、CPU10は操作データを取得する。すなわち、コントローラ5から送信されてくる操作データが無線コントローラモジュール19を介して受信される。そして、受信された操作データに含まれる角速度データおよび加速度データ等がそれぞれメインメモリに記憶される。ステップS2の次にステップS3の処理が実行される。
ステップS3において、CPU10は反映度sを算出する。反映度sは、加速度センサ37によって検出された加速度ベクトルVaと、前回加速度ベクトルVa0とに基づいて算出される。CPU10は、加速度データ64および前回加速度データ66をメインメモリから読み出し、加速度ベクトルVaと前回加速度ベクトルVa0とを用いて次の式(1)を計算することによって反映度sを算出する。
s=1−(|Va−Va0|−Dmin)/(Dmax−Dmin) …(1)
上式(1)において、定数Dminおよび定数Dmaxは予め定められている。上式(1)に示すように、反映度sは、加速度ベクトルVaと前回加速度ベクトルVa0と差分の大きさに基づいて、つまり、加速度の(単位時間あたりの)変化量に基づいて算出される。具体的には、反映度sは、加速度の変化量が大きいほど小さくなるように算出される。加速度の変化量が大きいほど、入力装置8が動いている可能性が高く、加速度ベクトルが(重力方向を表すものとして)信頼できないと推測できるからである。なお、定数Dminは、反映度sが“1”となる上記変化量の上限値を表し、定数Dmaxは、反映度sが“0”となる上記変化量の下限値を表す。つまり、反映度sの算出結果が1以上になる場合は1にし、0以下になる場合は0にするようにする。したがって、上記変化量が定数Dmin以下であれば反映度sは“1”となり、上記変化量が定数Dmax以上であれば、反映度sは“0”となり、変化量が定数Dminと定数Dmaxの間であれば、反映度sは0<d<1の範囲の値となる。したがって、ゲーム制作者は、定数Dminと定数Dmaxを適宜調整することによって、加速度センサ37の特性やゲーム操作の内容やゲーム処理の内容等に応じて反映度sを適切に設定することができる。上記ステップS3の処理によって算出された反映度sを示すデータは、反映度データ67としてメインメモリに記憶される。ステップS3の次にステップS4の処理が実行される。
なお、上記ステップS3では、CPU10は、加速度ベクトルが(重力方向を表すものとして)信頼できる度合いを判別するべく、加速度の(単位時間あたりの)変化量に基づいて反映度sを算出した。ここで、反映度sは、加速度ベクトルVaが信頼できる度合い(信頼度)を判別するための他の方法で算出されてもよい。例えば、他の実施形態においては、反映度sは、加速度ベクトルVaの大きさと重力加速度の大きさ(=1)との差分に基づいて算出されてもよい。具体的には、CPU10は、上式(1)における“|Va−Va0|”を“|Va−G|(Gは重力加速度の大きさ)”に変更した式に従って反映度sを算出してもよい。
また、反映度sは、加速度センサ37の出力である加速度データ64に限らず、操作データに含まれる他のデータに基づいて算出されてもよい。例えば、他の実施形態においては、反映度sは、角速度データ63により示される角速度ωに基づいて算出されてもよい。すなわち、角速度ωが大きい場合には、入力装置8が激しく動いていると推測することができ、加速度ベクトルVaが信頼できないと推測できる。したがって、CPU10は、角速度ωが大きいほど反映度sが小さくなるように反映度sを算出してもよい。また、他の実施形態においては、反映度sは、上述したマーカ座標データにより示されるマーカ座標の変化量(移動量)に基づいて算出されてもよい。すなわち、マーカ座標の変化量が大きい場合には、入力装置8が激しく動いていると推測することができ、加速度ベクトルVaが信頼できないと推測できる。したがって、CPU10は、マーカ座標の変化量が大きいほど反映度sが小さくなるように反映度sを算出してもよい。また、反映度sは、角速度ωに基づく姿勢の算出が可能であるか否かに基づいて設定されてもよい(後述する第3変形例参照)。
ステップS4において、CPU10は反映度sを補正する。反映度sの補正は、今回のステップS3で算出された反映度sと、前回反映度s0とに基づいて行われる。すなわち、CPU10は、反映度データ67および前回反映度データ68をメインメモリから読み出す。そして、反映度データ67により示される補正前の反映度sと、前回反映度データ68により示される前回反映度s0とを用いて、次の式(2)を計算することによって補正後の反映度s’を算出する。
s0<sのとき、s’=s0・S1+(1−S1)・s
s0≧sのとき、s’=s …(2)
上式(2)において、定数S1は0<S1<1の範囲で予め定められる。上式(2)に示すように、今回の処理ループ(S2〜S9)で算出された反映度sが前回反映度s0よりも大きい場合、今回の反映度sは、当該反映度sと前回反映度s0との間の値に補正される。一方、今回の処理ループで算出された反映度sが前回反映度s0以下である場合、反映度sは補正されない。つまり、上式(2)によって、反映度sは、増加する場合には急激には値が変化しないように設定される。上記ステップS4の処理によって補正された反映度sを示すデータは、新たな反映度データ67としてメインメモリに更新して記憶される。ステップS4の次にステップS5の処理が実行される。
上記ステップS4の処理は、入力装置8が動かされている状況で反映度sが一時的に大きくなる場合を考慮したものである。例えば入力装置8が往復運動を行っている状態では、往復運動の折り返しの位置において加速度の変化量が小さくなる場合がある。この場合、(入力装置8は激しく動かされている最中であるので)加速度ベクトルVaは重力方向を正しく表していない可能性が高いにもかかわらず、上式(1)からわかるように反映度sの値は大きくなってしまう。反映度sが大きくなると、信頼できない加速度ベクトルVaに基づいて入力装置8の姿勢が算出されてしまう結果、入力装置8の姿勢を正確に算出することができないという問題が生じる。これに対して、本実施形態では、一時的に反映度sが大きくなる場合には、上式(2)によって反映度sが小さくなるように補正される。そのため、上記の問題を防止することができ、入力装置8の姿勢を正確に算出することができる。なお、反映度sが一時的に小さくなる場合には上記の問題は生じないので、反映度sの補正は行われない。
また、他の実施形態においては、CPU10は、上述したような反映度sが一時的に大きくなることが起こらないと想定される場合や、ゲーム処理の簡易化・高速化を優先する場合等には、上記ステップS4の処理を実行せず、上記ステップS3で算出された反映度sをそのまま用いるようにしてもよい。
ステップS5において、CPU10は、加速度に基づいて第1姿勢(第1重力ベクトルVg1)を算出する。本実施形態においては、第1重力ベクトルVg1は、加速度センサ37によって検出された加速度ベクトルVaと、前回重力ベクトルVg0と、反映度sとに基づいて算出される。具体的には、CPU10は、加速度データ64、前回姿勢データ72、および反映度データ67をメインメモリから読み出す。そして、加速度ベクトルVa、前回重力ベクトルVg0、および反映度sを用いて、次の式(3)を計算することによって第1重力ベクトルVg1を算出する。
Vg1=Va・s+Vg0・(1−s) …(3)
上式(3)に示されるように、第1重力ベクトルVg1は、前回の処理ループで算出された姿勢に対応する重力方向(前回重力ベクトルVg0)と加速度ベクトルVaとの、反映度sに基づく加重平均として算出される。つまり、反映度sが大きい値(1に近い値)であれば、加速度ベクトルVaは信頼できる(重力方向を正確に表している)と判断され、第1重力ベクトルVg1は加速度ベクトルVaに近い値となる。一方、反映度sが小さい値(0に近い値)であれば、加速度ベクトルVaは信頼できない(重力方向を正確には表していない)と判断され、第1重力ベクトルVg1は前回の重力方向に近い値となる。このように、加速度に基づく第1姿勢を算出する処理において反映度sを用いることで、第1姿勢をより正確に算出することができる。
上式(3)で算出された第1重力ベクトルVg1は正規化され(長さが1になるように補正され)、正規化された第1重力ベクトルVg1を示すデータが、第1姿勢データ69としてメインメモリに記憶される。なお、本実施形態においては、ゲーム処理が開始されてから最初の処理ループにおけるステップS5においては、前回姿勢データ72がメインメモリに記憶されていないので、CPU10は加速度ベクトルVaをそのまま第1重力ベクトルVg1とする。以上のステップS5の次にステップS6の処理が実行される。
なお、ステップS5における第1姿勢の算出方法は、加速度センサ37によって検出された加速度を用いて第1姿勢を算出する方法であればどのような方法であってもよい。例えば、CPU10は、上記反映度sを用いずに、加速度ベクトルVaの値をそのまま第1重力ベクトルVg1として算出してもよい。また、上式(3)は、反映度sに応じた割合で前回重力ベクトルVg0を加速度ベクトルVaに近づけることによって第1重力ベクトルVg1を算出する方法であったのに対して、他の実施形態においては、一定の割合で前回重力ベクトルVg0を加速度ベクトルVaに近づけることによって第1重力ベクトルVg1を算出する方法を採用してもよい。なお、ステップS5において反映度sを用いずに第1重力ベクトルVg1を算出する場合であっても、後述するステップS7において反映度sが用いられるので、CPU10はステップS3(およびステップS4)の処理を実行する必要がある。
ステップS6において、CPU10は、角速度に基づいて第2姿勢(第2重力ベクトルVg2)を算出する。角速度から第2姿勢を算出する方法はどのような方法であってもよいが、本実施形態においては、第2重力ベクトルVg2は、ジャイロセンサ55および56によって検出された角速度ωと、前回重力ベクトルVg0とに基づいて算出される。具体的には、CPU10は、角速度データ63および前回姿勢データ72をメインメモリから読み出す。そして、角速度ωおよび前回重力ベクトルVg0を用いて、次の式(4)を計算することによって第2重力ベクトルVg2を算出する。なお、本実施形態においては、ゲーム処理が開始されてから最初の処理ループにおいては、前回姿勢データ72がメインメモリに記憶されていないので、CPU10は前回姿勢データ72に代えて第1姿勢データ69を読み出し、前回重力ベクトルVg0に代えて第1重力ベクトルVg1を用いて次の式(4)を計算する。
Vg2=R・Vg0 …(4)
上式(4)において、行列Rは、角速度ωと逆の回転を行う回転行列であり、角速度ωから算出される。行列Rを角速度ωと逆回転の回転行列としているのは、本実施形態では(空間に対して固定である)各種の重力ベクトルを、入力装置8を基準として表しているため、入力装置8が回転した場合には、回転した分だけ重力ベクトルを元に戻す(入力装置8の回転方向とは逆に回転させる)必要があるからである。上式(4)に示すように、本実施形態では、角速度に基づく第2の姿勢は、現在の入力装置8の姿勢を、検出された角速度に応じて回転させることによって算出される。上記ステップS6の処理によって算出された第2重力ベクトルVg2を示すデータは、第2姿勢データ70としてメインメモリに記憶される。ステップS6の次にステップS7の処理が実行される。
ステップS7において、CPU10は、上記第1姿勢(第1重力ベクトルVg1)と第2姿勢(第2重力ベクトルVg2)とに基づいて第3姿勢(第3重力ベクトルVg3)を算出する。具体的には、CPU10は、第1姿勢データ69、第2姿勢データ70、および反映度データ67をメインメモリから読み出す。そして、第1重力ベクトルVg1、第2重力ベクトルVg2、および反映度sを用いて、次の式(5)を計算することによって第3重力ベクトルVg3を算出する。
Vg3=(1−s)・Vg2+s・Vg1 …(5)
上式(5)に示されるように、第3重力ベクトルVg3は、第1重力ベクトルVg1と第2重力ベクトルVg2との、反映度sに基づく加重平均として算出される。上式(5)で算出された第3重力ベクトルVg3は正規化され、正規化された第3重力ベクトルVg3を示すデータが、第3姿勢データ71としてメインメモリに記憶される。以上のステップS7の次にステップS8の処理が実行される。
上式(5)に示されるように、本実施形態では、見かけ上の処理としては、加速度に基づく第1重力ベクトルVg1と角速度に基づく第2重力ベクトルVg2とが常に(毎フレーム)用いられているように見える。ただし実際には、上式(5)から明らかなように、反映度s=1の場合、第1重力ベクトルVg1がそのまま第3重力ベクトルVg3となり(図8に示す(A))、反映度s=0の場合、第2重力ベクトルVg2がそのまま第3重力ベクトルVg3となる(図8に示す(B))。そして、反映度sが0<s<1の場合、第3重力ベクトルVg3は第1重力ベクトルVg1と第2重力ベクトルVg2との間のベクトルとなる(図8に示す(C))。つまり、本実施形態では、次のように考えることができる。
・上記ステップS5を実行するCPU10が上記「第1姿勢算出手段」に相当し、反映度sが所定の第1閾値以上である場合(s=1の場合)、加速度センサ37によって検出される加速度ベクトルVaに基づいて入力装置8の姿勢を算出する。
・上記ステップS6を実行するCPU10が上記「第2姿勢算出手段」に相当し、反映度sが所定の第2閾値よりも小さい場合(s=0の場合)、ジャイロセンサ55および56によって検出される角速度ωに基づいて入力装置8の姿勢を算出する。
・上記ステップS7を実行するCPU10が上記「第3姿勢算出手段」に相当し、反映度sが第1閾値よりも小さくかつ第2閾値以上である場合(0<s<1の場合)、第1姿勢算出手段が算出した姿勢と、第2姿勢算出手段が算出した姿勢との間になるように入力装置8の姿勢を算出する。
ステップS8において、CPU10は、入力装置8の姿勢(第3重力ベクトルVg3)を用いたゲーム処理を実行する。このゲーム処理はどのような処理であってもよいが、例えば、入力装置8のハンドル操作に応じて仮想空間内に配置される自動車の進行方向を制御する処理であってもよいし、入力装置8の傾きに応じて仮想空間内に配置されるオブジェクトの傾きを制御する処理であってもよい。ステップS8の次にステップS9の処理が実行される。
ステップS9において、CPU10は、ゲームを終了するか否かを判定する。ステップS9の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS9の判定結果が否定である場合、ステップS2の処理が再度実行される。以降、ステップS9でゲームを終了すると判定されるまで、ステップS2〜S9の処理ループが繰り返し実行される。一方、ステップS9の判定結果が肯定である場合、CPU10は、図10に示すゲーム処理を終了する。以上で、本実施形態におけるゲーム処理の説明を終了する。
以上のように、本実施形態によれば、ゲーム装置3は、加速度センサ37によって検出される加速度を入力装置8の姿勢に反映させる度合いを反映度によって決定する。そして、加速度に基づいて姿勢を算出するか、角速度に基づいて姿勢を算出するかを反映度に応じて決定する。これによれば、重力方向を表すものとして信頼できない加速度に基づいて姿勢が不正確に算出されることを防止することができるので、姿勢を正確に算出することができる。また、加速度に基づく姿勢の算出が停止されることによって姿勢算出の応答性が悪くなることを防止することができるので、姿勢をリアルタイムに算出することができる。
さらに、本実施形態によれば、入力装置8が静止している状態から動いている状態へ、または、動いている状態から静止している状態へと移行する期間においては、入力装置8の姿勢は、加速度に基づく第1姿勢と、角速度に基づく第2姿勢との間となるように算出される。したがって、移行の際に急激に姿勢が変化することを防止することができるので、ゲーム結果が急に変化することがなく、入力装置8を用いた操作性の良い入力システムを提供することができる。
[変形例]
なお、上記実施形態は本発明を実施するための一例であり、他の実施形態においては、以下に示す変形例の構成を採用してもよい。以下、上記実施形態の変形例について説明する。
(第1の変形例)
以下、本実施形態の第1の変形例について説明する。上記実施形態においては、ゲーム装置3は、反映度sが中程度の値の場合に、加速度に基づく第1姿勢と角速度に基づく第2姿勢との両方を用いて最終的な姿勢を決定した。ここで、他の実施形態においては、ゲーム装置3は、上記第1姿勢と第2姿勢とのいずれかのみを用いるようにしてもよい。以下、図11を参照して、第1の変形例の詳細について説明する。
図11は、本実施形態の第1の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図11においては、図10に示すフローチャートとの相違点のみを示している。また、図11においては、図10における各ステップの処理と同様の処理を実行する処理ステップについては図10と同じステップ番号を付している。
第1の変形例においては、上記ステップS4の次にステップS11の処理が実行される。ステップS11において、CPU10は、ステップS4の処理によって得られた反映度sが所定値S2よりも大きいか否かを判定する。所定値S2は0<S2<1の範囲で予め定められる。すなわち、CPU10は、メインメモリから反映度データ67および所定値S2の値を示すデータを読み出し、反映度sと所定値S2とを比較する。ステップS11の判定結果が肯定の場合(反映度s>所定値S2の場合)、上記ステップS5の処理が実行される。一方、ステップS11の判定結果が否定の場合(反映度s≦所定値S2の場合)、上記ステップS6の処理が実行される。
ステップS5の処理は上記実施形態と同様であり、CPU10は、加速度ベクトルVaに基づいて第1姿勢(第1重力ベクトルVg1)を算出する。ステップS6の処理も上記実施形態と同様であり、CPU10は、角速度ωに基づいて第2姿勢(第2重力ベクトルVg2)を算出する。第1の変形例においては、ステップS5またはステップS6の次に、上記ステップS8の処理が実行される。つまり、ステップS8のゲーム処理においては、ステップS5で算出された第1姿勢、または、ステップS6で算出された第2姿勢のいずれかが、入力装置8の姿勢として用いられる。
以上のように、第1の変形例においては、最終的な入力装置8の姿勢として用いられるべき姿勢が、加速度に基づく第1姿勢と角速度に基づく第2姿勢とのいずれかから反映度sに応じて決められる。例えば、上記実施形態において反映度sが0<s<1となる期間が実際には非常に短時間であると想定される場合や、ゲーム処理の簡易化・高速化を優先する場合等には、第1の変形例を採用してもよい。また、第1の変形例においては、反映度sを2値で表すようにしてもよい。
(第2の変形例)
以下、本実施形態の第2の変形例について説明する。上記実施形態においては、ゲーム装置3は、反映度sが大きい状態から小さい状態へと移行する場合、および、反映度sが小さい状態から大きい状態へと移行する場合の両方の移行期間において、加速度に基づく第1姿勢と角速度に基づく第2姿勢とに基づいて入力装置8の姿勢が算出された。ここで、第2の変形例では、反映度sが小さい状態から大きい状態へと移行する場合における移行期間においてのみ、上記第1姿勢および第2姿勢に基づいて姿勢を算出する。以下、図12および図13を参照して、第2の変形例の詳細について説明する。
図12は、本実施形態の第2の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図12においては、図10に示すフローチャートとの相違点のみを示している。また、図12においては、図10における各ステップの処理と同様の処理を実行する処理ステップについては図10と同じステップ番号を付している。
第2の変形例においては、上記ステップS4の次にステップS15の処理が実行される。ステップS15において、CPU10は、メインメモリに記憶されている反映度データ67を読み出し、反映度データ67により示される反映度sが“1”であるか否かを判定する。ステップS15の判定結果が肯定である場合、上記実施形態と同様のステップS5の処理が実行される。すなわち、ステップS5において、CPU10は、加速度ベクトルVaに基づいて第1姿勢(第1重力ベクトルVg1)を算出する。ステップS5の次に、上記実施形態と同様のステップS8の処理が実行される。したがって、ステップS15の判定結果が肯定である場合、ステップS8のゲーム処理においては、加速度に基づく第1姿勢が入力装置8の姿勢として用いられる。
ステップS15の判定結果が否定となる場合、ステップS16の処理が実行される。ステップS16の処理において、CPU10は、メインメモリに記憶されている反映度データ67を読み出し、反映度データ67により示される反映度sが“0”であるか否かを判定する。ステップS16の判定結果が肯定である場合、上記実施形態と同様のステップS6の処理が実行される。すなわち、ステップS6において、CPU10は、角速度ωに基づいて第2姿勢(第2重力ベクトルVg2)を算出する。ステップS6の次に、上記実施形態と同様のステップS8の処理が実行される。したがって、ステップS16の判定結果が肯定である場合、ステップS8のゲーム処理においては、角速度に基づく第2姿勢が入力装置8の姿勢として用いられる。
ステップS16の判定結果が否定となる場合、ステップS17の処理が実行される。ステップS17の処理において、CPU10は、反映度sが減少しているか否かを判定する。すなわち、CPU10は、メインメモリに記憶されている反映度データ67および前回反映度データ68を読み出し、反映度データ67により示される今回の反映度が、前回反映度データ68により示される前回の反映度よりも小さいか否かを判定する。ステップS17の判定結果が肯定である場合、上記実施形態と同様のステップS6の処理が実行される。すなわち、ステップS6において、CPU10は、角速度ωに基づいて第2姿勢(第2重力ベクトルVg2)を算出する。ステップS6の次に、上記実施形態と同様のステップS8の処理が実行される。したがって、ステップS17の判定結果が肯定となる場合には、ステップS16の判定結果が肯定である場合と同様、ステップS8のゲーム処理においては、角速度に基づく第2姿勢が入力装置8の姿勢として用いられる。
ステップS17の判定結果が否定となる場合、上記実施形態と同様のステップS5〜S7の処理が実行される。すなわち、CPU10は、ステップS5において、加速度ベクトルVaに基づいて第1姿勢(第1重力ベクトルVg1)を算出し、ステップS6において、角速度ωに基づいて第2姿勢(第2重力ベクトルVg2)を算出し、ステップS7において、上記第1姿勢と第2姿勢とに基づいて第3姿勢(第3重力ベクトルVg3)を算出する。ステップS7の次に、上記実施形態と同様のステップS8の処理が実行される。したがって、ステップS16の判定結果が肯定である場合、ステップS8のゲーム処理においては、ステップS7で算出された第3姿勢が入力装置8の姿勢として用いられる。
図13は、本実施形態の第2の変形例における反映度sと、姿勢算出に用いる方法との関係を示す図である。第2の変形例においては、反映度sが“1”である期間(図13に示す時点T1より前の期間)では、上記ステップS15の判定結果が肯定となる。したがって、CPU10は、ステップS5およびS8を実行し、加速度に基づく第1姿勢を用いて入力装置8の姿勢を算出する。
また、反映度sが“1”から減少している場合(図13に示す時点T1から時点T2までの期間)、上記ステップS15の判定結果が否定となり、ステップS16の判定が否定となり、ステップS17の判定が肯定となる。したがって、CPU10は、ステップS6およびS8を実行し、角速度に基づく第2姿勢を用いて入力装置8の姿勢を算出する。なお、反映度sが減少した結果“0”になった場合(図13に示す時点T2から時点T3までの期間)においても、ステップS6およびS8が実行される結果、角速度に基づく第2姿勢を用いて入力装置8の姿勢を算出する。このように、第2の変形例においては、反映度sが“1”から減少して“0”になる場合には、第1の変形例と同様、加速度を用いた姿勢算出方法から角速度を用いた姿勢算出方法へ、直接(加速度と角速度の両方を用いた姿勢算出方法を介さずに)切り替わる(図13参照)。
一方、反映度sが“0”から増加する場合(図13に示す時点T3から時点T4までの期間)、上記ステップS15,S16およびS17の判定結果が否定となる。したがって、CPU10は、ステップS5〜S8を実行し、加速度と角速度との両方に基づく第3姿勢を用いて入力装置8の姿勢を算出する。このように、第2の変形例においては、図13に示すように、反映度sが小さい状態から大きい状態へと移行する場合の移行期間においては、加速度と角速度との両方を用いて入力装置8の姿勢が算出される。なお、反映度sが“1”に戻った場合(図13に示す時点T4より後の期間)では、上記ステップS15の判定結果が肯定となるので、CPU10は、ステップS5およびS8を実行し、加速度に基づく第1姿勢を用いて入力装置8の姿勢を算出する。
以上のように、第2の変形例においては、反映度sが小さい状態から大きい状態へと移行する場合の移行期間においてのみ、第3姿勢を用いて入力装置8の姿勢が算出され、反映度sが大きい状態から小さい状態へと移行する場合の移行期間においては、第3姿勢を用いた姿勢の算出が行われない。このように、ゲーム装置3は、角速度を用いる姿勢算出方法から加速度を用いる姿勢算出方法へと移行する場合にのみ、加速度と角速度との両方を用いる姿勢算出方法を実行するようにしてもよい。上記実施形態のように、現在の入力装置8の姿勢を角速度に応じて回転させることによって新たな姿勢を算出する(ステップS6)場合、加速度を用いる姿勢算出方法から角速度を用いる姿勢算出方法へと移行する際には、姿勢の急激な変化が生じにくいからである。また、反映度sが減少していく場合には、加速度が信頼できない可能性もあるので、角速度のみに基づいて姿勢を算出する方が正確になる場合もあるからである。一方、角速度を用いる姿勢算出方法から加速度を用いる姿勢算出方法へと移行する際には、姿勢の急激な変化が生じるおそれがあるので、加速度と角速度との両方を用いる姿勢算出処理(ステップS7)を実行することによって、姿勢の急激な変化を防止する必要があるため、第2の変形例においても第3姿勢を用いた姿勢の算出を行っている。
以上のように、第2の変形例においても、上記実施形態と同様、姿勢算出方法が切り替わる際に生じる、姿勢の急激な変化を防止することができる。なお、上記第2の変形例においては、CPU10は、反映度sが0から1へ増加する期間において、上記第3姿勢を用いた姿勢算出処理を実行するようにした。ここで、他の実施形態においては、反映度sが所定値よりも小さい状態から所定値以上となる状態へと移行した時点から、予め定められた所定期間の間、上記第3姿勢を用いた姿勢算出処理を実行するようにしてもよい。
(第3の変形例)
以下、本実施形態の第3の変形例について説明する。上記実施形態においては、ゲーム装置3は、加速度センサ37の出力(加速度ベクトルVa)が信頼できるか否かに基づいて反映度sを設定した。第3の変形例では、さらに、入力装置8(コントローラ5)にジャイロセンサユニット7(ジャイロセンサ55および56)が装着されているか否かに基づいて反映度sを設定する。以下、図14を参照して、第3の変形例の詳細について説明する。
図14は、本実施形態の第3の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図14においては、図10に示すフローチャートとの相違点のみを示している。また、図14においては、図10における各ステップの処理と同様の処理を実行する処理ステップについては図10と同じステップ番号を付している。
第3の変形例においては、上記ステップS2の次にステップS21の処理が実行される。ステップS21において、CPU10は、入力装置8にジャイロセンサユニット7が装着されているか否かを判定する。具体的には、CPU10は、角速度データ63をメインメモリから読み出し、角速度データ63が角速度の値を示すか、ジャイロセンサユニット7が装着されていないことを示すかを判定する。ステップS21の判定は、角速度に基づく姿勢の算出が可能であるか否かを判定する処理であるとも言える。ステップS21の判定結果が肯定である場合、上記実施形態と同様、ステップS3〜S9の処理が実行される。一方、ステップS21の判定結果が否定である場合、ステップS22の処理が実行される。
ステップS22において、CPU10は、反映度sを“1”に設定する。すなわち、メインメモリに記憶されている反映度データ67の内容を、“1”を示す内容に更新する。ステップS22の処理は、加速度のみを用いて(角速度を用いずに)姿勢算出処理を実行するための処理である。ステップS22の処理の後、上記実施形態と同様のステップS5〜S9の処理が実行される。ステップS22の処理が実行される場合、反映度sが“1”であるので、ステップS7においては、加速度に基づく第1姿勢が入力装置8の姿勢として算出されることとなる。
以上のように、第3の変形例においては、ゲーム装置3は、入力装置8にジャイロセンサユニット7が装着されているか否かに応じて、角速度に基づく姿勢算出処理を用いるか否かを決定する。これによれば、本実施形態のようにジャイロセンサユニット7が着脱可能な入力装置8において、ジャイロセンサユニット7が装着されている場合と装着されていない場合との両方に対応することが可能となる。すなわち、ゲーム装置3は、ジャイロセンサユニット7が装着されている場合には、上述したゲーム処理によって入力装置8の姿勢を精度良く、かつ、応答性良く算出することができるとともに、ジャイロセンサユニット7が装着されている場合にも、簡易的に入力装置8の姿勢を算出することができる。
以上のように、本発明は、入力装置の姿勢を応答性良く算出すること等を目的として、例えばゲーム装置やゲームプログラムとして利用することが可能である。
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
7 ジャイロセンサユニット
8 入力装置
10 CPU
37 加速度センサ
55 2軸ジャイロセンサ
56 1軸ジャイロセンサ
60 ゲームプログラム
61 姿勢算出プログラム
62 操作データ
63 角速度データ
64 加速度データ
67 反映度データ
69 第1姿勢データ
70 第2姿勢データ
71 第3姿勢データ

Claims (24)

  1. 加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出装置であって、
    前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定手段と、
    前記反映度が所定の第1閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第1姿勢算出手段と、
    前記反映度が、前記第1閾値以下である所定の第2閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第2姿勢算出手段とを備え、
    前記第2姿勢算出手段は、前記角速度センサが検出する角速度を取得し、前回の姿勢を当該取得された角速度に応じて回転させることによって新たな姿勢を算出し、
    前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出する、姿勢算出装置。
  2. 前記第2閾値は、前記第1閾値よりも小さい値であり、
    前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上である場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第3姿勢算出手段をさらに備える、請求項1に記載の姿勢算出装置。
  3. 前記第3姿勢算出手段は、前記第1姿勢算出手段が算出した姿勢と前記第2姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出する、請求項2に記載の姿勢算出装置。
  4. 前記第1閾値と前記第2閾値は等しい値であり、
    前記第1姿勢算出手段は、前記反映度が前記第1閾値以上である場合に前記入力装置の姿勢を算出し、
    前記第2姿勢算出手段は、前記反映度が前記第1閾値よりも小さい場合に前記入力装置の姿勢を算出する、請求項1に記載の姿勢算出装置。
  5. 前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上であり、さらに、前記反映度が増加している場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第4姿勢算出手段をさらに備え、
    前記第2姿勢算出手段は、前記反映度が前記第2閾値よりも小さい場合、または、前記第1閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する、請求項1に記載の姿勢算出装置。
  6. 前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出する、請求項1から請求項5のいずれか1項に記載の姿勢算出装置。
  7. 前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出する、請求項1から請求項5のいずれか1項に記載の姿勢算出装置。
  8. 前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正する、請求項1から請求項7のいずれか1項に記載の姿勢算出装置。
  9. 前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定する、請求項1から請求項8のいずれか1項に記載の姿勢算出装置。
  10. 前記角速度センサは前記入力装置に対して着脱可能であり、
    前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し、前記角速度センサが装着されていないと判定される場合、角速度に基づかずに前記入力装置の姿勢を算出するように前記反映度を設定する、請求項1から請求項9のいずれか1項に記載の姿勢算出装置。
  11. 前記第1姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出する、請求項1から請求項10のいずれか1項に記載の姿勢算出装置。
  12. 加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出装置のコンピュータにおいて実行される姿勢算出プログラムであって、
    前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定手段と、
    前記反映度が所定の第1閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第1姿勢算出手段と、
    前記反映度が、前記第1閾値以下である所定の第2閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第2姿勢算出手段として前記コンピュータを機能させる、姿勢算出プログラムであって、
    前記第2姿勢算出手段は、前記角速度センサが検出する角速度を取得し、前回の姿勢を当該取得された角速度に応じて回転させることによって新たな姿勢を算出し、
    前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出する、姿勢算出プログラム。
  13. 前記第2閾値は、前記第1閾値よりも小さい値であり、
    前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上である場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第3姿勢算出手段として前記コンピュータをさらに機能させる、請求項12に記載の姿勢算出プログラム。
  14. 前記第3姿勢算出手段は、前記第1姿勢算出手段が算出した姿勢と前記第2姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出する、請求項13に記載の姿勢算出プログラム。
  15. 前記第1閾値と前記第2閾値は等しい値であり、
    前記第1姿勢算出手段は、前記反映度が前記第1閾値以上である場合に前記入力装置の姿勢を算出し、
    前記第2姿勢算出手段は、前記反映度が前記第1閾値よりも小さい場合に前記入力装置の姿勢を算出する、請求項12に記載の姿勢算出プログラム。
  16. 前記反映度が前記第1閾値よりも小さくかつ前記第2閾値以上であり、さらに、前記反映度が増加している場合、前記第1姿勢算出手段が算出した姿勢と、前記第2姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第4姿勢算出手段として前記コンピュータをさらに機能させ、
    前記第2姿勢算出手段は、前記反映度が前記第2閾値よりも小さい場合、または、前記第1閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する、請求項12に記載の姿勢算出プログラム。
  17. 前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出する、請求項12から請求項16のいずれか1項に記載の姿勢算出プログラム。
  18. 前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出する、請求項12から請求項16のいずれか1項に記載の姿勢算出プログラム。
  19. 前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正する、請求項12から請求項18のいずれか1項に記載の姿勢算出プログラム。
  20. 前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定する、請求項12から請求項19のいずれか1項に記載の姿勢算出プログラム。
  21. 前記角速度センサは前記入力装置に対して着脱可能であり、
    前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し、前記角速度センサが装着されていないと判定される場合、角速度に基づかずに前記入力装置の姿勢を算出するように前記反映度を設定する、請求項12から請求項20のいずれか1項に記載の姿勢算出プログラム。
  22. 前記第1姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出する、請求項12から請求項21のいずれか1項に記載の姿勢算出プログラム。
  23. 加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出システムであって、
    前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定手段と、
    前記反映度が所定の第1閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第1姿勢算出手段と、
    前記反映度が、前記第1閾値以下である所定の第2閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第2姿勢算出手段とを備え、
    前記第2姿勢算出手段は、前記角速度センサが検出する角速度を取得し、前回の姿勢を当該取得された角速度に応じて回転させることによって新たな姿勢を算出し、
    前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出する、姿勢算出システム。
  24. 加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出装置において実行される方法であって、
    前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定ステップと、
    前記反映度が所定の第1閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第1姿勢算出ステップと、
    前記反映度が、前記第1閾値以下である所定の第2閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第2姿勢算出ステップとを備え、
    前記第2姿勢算出ステップにおいては、前記角速度センサが検出する角速度を取得し、前回の姿勢を当該取得された角速度に応じて回転させることによって新たな姿勢を算出し、
    前記反映度設定ステップにおいては、前記加速度データが示す加速度に基づいて前記反映度を算出する、姿勢算出方法。
JP2009113323A 2009-05-08 2009-05-08 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法 Active JP5872137B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009113323A JP5872137B2 (ja) 2009-05-08 2009-05-08 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法
US12/511,379 US8401815B2 (en) 2009-05-08 2009-07-29 Orientation calculation apparatus and storage medium having orientation calculation program stored therein

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009113323A JP5872137B2 (ja) 2009-05-08 2009-05-08 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法

Publications (2)

Publication Number Publication Date
JP2010259642A JP2010259642A (ja) 2010-11-18
JP5872137B2 true JP5872137B2 (ja) 2016-03-01

Family

ID=43062875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009113323A Active JP5872137B2 (ja) 2009-05-08 2009-05-08 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法

Country Status (2)

Country Link
US (1) US8401815B2 (ja)
JP (1) JP5872137B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5446794B2 (ja) * 2009-12-04 2014-03-19 ソニー株式会社 撮像装置、およびデータ処理方法、並びにプログラム
JP5586545B2 (ja) * 2011-09-09 2014-09-10 任天堂株式会社 ゲームシステム、携帯型ゲーム装置、情報処理部の制御方法、および情報処理部の制御プログラム
JP6209581B2 (ja) * 2013-02-13 2017-10-04 旭化成エレクトロニクス株式会社 姿勢算出装置、姿勢算出方法、携帯機器およびプログラム
US9524036B1 (en) * 2013-03-11 2016-12-20 Amazon Technologies, Inc. Motions for displaying additional content
US20180088675A1 (en) * 2016-09-29 2018-03-29 Brian K. Vogel Coordinate system for gesture control
US12004852B2 (en) * 2017-09-28 2024-06-11 Vital Connect, Inc. Sensor calibration considering subject-dependent variables and/or body positions

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4795087B2 (ja) 2006-04-14 2011-10-19 任天堂株式会社 ゲーム装置およびゲームプログラム
US7925467B2 (en) * 2008-06-30 2011-04-12 Nintendo Co., Ltd. Orientation calculation apparatus, storage medium having orientation calculation program stored therein, game apparatus, and storage medium having game program stored therein

Also Published As

Publication number Publication date
JP2010259642A (ja) 2010-11-18
US20100286946A1 (en) 2010-11-11
US8401815B2 (en) 2013-03-19

Similar Documents

Publication Publication Date Title
JP5224832B2 (ja) 情報処理プログラムおよび情報処理装置
JP5060798B2 (ja) 情報処理プログラムおよび情報処理装置
JP5296337B2 (ja) 画像処理プログラム、画像処理装置、画像処理システムおよび画像処理方法
JP4918376B2 (ja) 情報処理プログラムおよび情報処理装置
JP5430123B2 (ja) ゲーム装置およびゲームプログラム
US20080215288A1 (en) Inclination calculation apparatus and inclination calculation program, and game apparatus and game program
JP5153122B2 (ja) ゲームプログラムおよびゲーム装置
JP4265814B1 (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、およびゲームプログラム
JP5872137B2 (ja) 姿勢算出装置、姿勢算出プログラム、姿勢算出システム、および、姿勢算出方法
JP5005627B2 (ja) 情報処理プログラムおよび情報処理装置
JP5537083B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP5797046B2 (ja) ポインティングシステム、情報処理システム、座標系等の設定方法、情報処理装置、および情報処理プログラム
JP5525177B2 (ja) 情報処理プログラム、および、情報処理装置
JP5576721B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム方法
JP5541851B2 (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、およびゲームプログラム
JP4151983B2 (ja) 移動方向算出装置および移動方向算出プログラム
JP4290709B2 (ja) ゲーム装置およびゲームプログラム
JP4220531B2 (ja) 重力方向算出装置および重力方向算出プログラム
JP5420954B2 (ja) ゲーム装置及びゲームプログラム
JP2007295989A (ja) ゲーム装置およびゲームプログラム
JP6262563B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法
JP5872135B2 (ja) 姿勢算出装置、姿勢算出プログラム、ゲーム装置、ゲームプログラム、姿勢算出システム、および、姿勢算出方法
JP5420955B2 (ja) ゲーム装置及びゲームプログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20111019

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160113

R150 Certificate of patent or registration of utility model

Ref document number: 5872137

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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