JPWO2016079828A1 - 打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム - Google Patents

打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム Download PDF

Info

Publication number
JPWO2016079828A1
JPWO2016079828A1 JP2015551885A JP2015551885A JPWO2016079828A1 JP WO2016079828 A1 JPWO2016079828 A1 JP WO2016079828A1 JP 2015551885 A JP2015551885 A JP 2015551885A JP 2015551885 A JP2015551885 A JP 2015551885A JP WO2016079828 A1 JPWO2016079828 A1 JP WO2016079828A1
Authority
JP
Japan
Prior art keywords
controller
angular velocity
user
hit
batting
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
JP2015551885A
Other languages
English (en)
Other versions
JP6064111B2 (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.)
Nyahoon Games Pte Ltd
Original Assignee
Nyahoon Games Pte 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 Nyahoon Games Pte Ltd filed Critical Nyahoon Games Pte Ltd
Application granted granted Critical
Publication of JP6064111B2 publication Critical patent/JP6064111B2/ja
Publication of JPWO2016079828A1 publication Critical patent/JPWO2016079828A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

Abstract

【課題】直感的な操作が可能であり、廉価でかつ汎用性のあるデバイスで利用可能とする。【解決手段】コントローラが、ジャイロセンサ164と、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、打撃検出部211が、ジャイロセンサ164によって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を備え、打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する。

Description

本発明は、例えばボクシング、テニス、スカッシュ、卓球等のスポーツゲームにおいて、打撃のタイミングを指定する打撃操作のためのユーザーインターフェースシステムと、コントローラから入力される操作信号等の情報を解析する方法及びプログラムに関する。
従来、テレビゲームの形態としては、家庭用ゲーム専用機や業務用アーケードゲームの他、パーソナルコンピュータなどの汎用コンピュータ上でゲームソフトを実行するなどの装置やシステムが提供されている。また、ゲームソフトの提供方式についても、従来のCD−ROM等の記録媒体を介する形態から、近年の通信インフラの発達に伴い、ゲームプログラムをインターネット等の通信網を介して提供するいわゆるオンラインゲームサービスも普及しつつある。
上記テレビゲームの1つとして、例えばボクシングゲームなどのスポーツアクションゲームがあり、このスポーツアクションゲームでは、プレイヤーオブジェクトがパンチを繰り出すタイミングや、そのパンチ種類、パンチ力といったように、プレイヤーオブジェクトの動作に関する諸条件を入力する。この諸条件の入力は、例えば、画面に表示されるグラフィックユーザーインターフェース(GUI:Graphical User Interface)を通じて、ゲーム機のコントローラやタッチパネル等の入力インターフェースにより行われている(例えば、特許文献1参照。)。
特許文献1に開示された技術は、タッチスクリーンに対する指の接触位置、及び指による押圧力の大きさに応じて、画面内のオブジェクトを動作させて、ボクシングゲームを進行させるものである。ところが、特許文献1に開示されたゲーム装置は、タッチスクリーンをタップしたり、スワイプしたりすることで、パンチのタイミングが検出されるようになっているため、実際のスポーツの動作とは懸け離れてしまい、直感的な操作性が失われるという問題があった。これは、ユーザーがコントローラのボタンを押して操作するゲーム装置でも同様である。
このような問題を解決すべく、近年、所定方向への加速度を検知する加速度センサを有し、この加速度センサが検知した加速度に応じて、諸条件の入力を行うコントローラが開発され、このコントローラに対応したテレビゲーム機やゲームソフトも開発されている(例えば、特許文献2参照。)。
この特許文献2に開示された技術は、ゲーム装置のコントローラとして機能するグローブユニットに、前後(Y軸)、左右(X軸)、及び上下(Z軸)方向の3軸の加速度をそれぞれ検出する加速度センサが設けられ、加速度センサから出力される出力波形を解析することによって、ユーザーが繰り出したパンチ種類を識別するものである。このようなグローブユニットをコントローラとして用いたゲーム装置では、コントローラの操作者の動作を、画面内のプレイヤーオブジェクトにトレースさせることができ、直感的な操作性を体感することができる。
特開2013−58136号公報 特表2006−320706号公報
しかしながら、特許文献2に開示された技術では、ユーザーの左右それぞれの手に対して、別々のコントローラで操作する構成となっていることから、加速度センサを有するコントローラを2つ要し、ゲーム導入までのコストが高価であるという問題がある。また、特許文献2に開示された技術では、コントローラとしてグローブ型の入力ユニットを用い、ボクシングゲームにのみ利用する設計となっており、そのデザイン及び機能が特化されており、他のゲームには利用することができず、汎用性が低いという問題があった。
そこで、本発明は以上の点に鑑みてなされたもので、例えばボクシングゲームなど、ユーザーが打撃操作を入力する必要のあるゲームにおいて、直感的な操作性が可能であり、廉価でかつ汎用性のあるデバイスで利用可能なユーザーインターフェースシステム、方法、及びプログラムを提供することをその課題とする。
本発明は、上述したようなユーザーインターフェースシステム、即ち、コントローラ及びコントローラから入力される情報等を処理する演算装置を備え、演算処理装置若しくは演算処理装置で実行されるソフトウェアがコントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステム、であって、上記課題を解決するために、前記コントローラは、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、前記打撃検出部は前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することを特徴とする。
また、他の発明は、コントローラから入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、
(1)コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
(2)打撃検出ステップが、角速度センサによって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーがコントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るコントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、
(3)打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
ことを特徴とする。
本発明では、ユーザーは単一のコントローラ本体を両手で持ち、ユーザー自身が打撃動作をするかのように片方の手を前に押し出すことにより、打撃操作を入力する。このような本発明によれば、コントローラ内に角速度センサを備え、この角速度センサによって、コントローラを持つユーザーの手の動きを検出しているため、例えば、ボクシングゲームなど左右の拳で打撃を行うゲームにおいても直感的にオブジェクトを操作でき、ユーザーはより良いゲーム体験を得ることができる。
上記発明において、打撃検出部が、角速度センサによって検出されるコントローラの角速度を用いることによって、打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を備えることが可能となる。この場合には、角速度センサによって検知された角速度の向きを用いて打撃操作の左右を区別できるので、単一の制御装置があれば良く、例えば、スマートフォンやタブレット端末などの広く普及している汎用性のある操作デバイスを利用でき、コスト全体を安価にすることができる。
上記発明において、打撃検出法のひとつとして、角速度センサによって検出される、打撃操作が行なわれた場合のコントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間(0.01秒から0.05秒程度)先の角速度の値、若しくはこれらの値を結合することによって得られる値をしきい値と比較する方法を用いることができる。ここでしきい値は所定の値としても良いが、ゲームの状況によって変化させたり、ユーザー設定やユーザーの環境によって変更させたりしても良い。
上記発明において、コントローラから入力される情報を元に算出されるコントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくはオブジェクトに予備動作を実行させるための制御信号を送信する機能を持つことが好ましい。この場合には、ユーザーによる打撃操作が行われる前に、その予備操作に基づく回転を検知し、事前に画面上のオブジェクトに対して予備動作(例えばパンチの前に腕を振り上げる動作)を実行させることによってゲームの操作感を向上させることができる。
すなわち、従来の技術では、単に打撃操作が検出されてからオブジェクトにパンチの予備動作を開始させているため、ユーザーが意図したタイミングと実際にオブジェクトがパンチを出すタイミングに遅延が発生していた。本発明では、ユーザーが打撃操作の前に、打撃操作と反対の方向にコントローラを持つ手を引くことは自然であり、角速度センサによって検出されるゲーム装置の回転角に連動してオブジェクトがパンチの予備動作(体をひねって腕を振り上げる)をすることによって、打撃操作が検出される前からオブジェクトに予備動作を開始させることができ、打撃操作が検出されてから実際にオブジェクトがパンチを出すまでの時間を短縮できる。これにより、オブジェクトがパンチを出すタイミングの遅延を短縮して、ユーザーによりよいゲーム体験を与えることができる。
上記発明において、打撃検出部は角速度センサにより検知される角速度や角速度の単位時間あたりの変化量等を用いて打撃操作の検出を行なうが、検知された角速度や角速度の単位時間あたりの変化量が、打撃操作によるものなのか予備操作によるものなのかを判別することは難しいため、角速度センサに加えて加速度センサを用いるのが好ましい。すなわち、上記発明において、コントローラがさらに加速度センサを内部に備え、打撃検出部が、加速度センサにより検出された加速度を用いることで、コントローラが回転運動をした際にコントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合にはコントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する。
上記発明を実施するにあたり、ゲームアプリケーションの要件によって予備操作が完了するまで打撃操作を行なうことができないという条件を付加することができるのであれば、加速度センサを用いなくても、予備操作が完了するまでは制御装置の回転が予備操作によるものと判断することもできる。しかし、ボクシングゲームにおいては予備操作なしのジャブのような打撃操作があるため、このような条件を付加することはできない。
また、加速度センサを用いることで、打撃操作と打撃操作後の反動とをある程度区別することが可能となるが、より確実に区別するために、打撃検出部は、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の特徴の検出を制限することにより、ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐことが好ましい。
一方で、このように打撃操作の検出を制限することによって、コンビネーションパンチのような連続した打撃操作の入力が困難になるという問題が発生する。そこで、上記発明において、ユーザーによる連続した打撃操作の入力を正確に検出するために、打撃検出部は少なくとも2つの打撃検出法を備え、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法にすることで、連続した打撃操作の検出を可能にする。ここで、1つを打撃検出法1、もう1つを打撃検出法2とする。
この場合、打撃検出法1は角速度の時間変化、すなわち角加速度、を重視して打撃操作の入力があったことを検出する。角加速度を使うことにより、打撃検出法1はユーザーが打撃操作のために制御装置を回転させ始めた瞬間を検知することができ、反応速度が良くなる。しかしながら、角加速度が大きくなるのは制御装置を回転させ始めた瞬間だけでなく、回転を止めた瞬間、回転を止めた反動で制御装置が元の向きに戻る瞬間、回転を止めた反動が再び停止する瞬間等でも大きくなるため、これらの瞬間で誤って打撃操作を検出しないようにする必要がある。回転が止まる瞬間の角加速度は角速度と向きが同じかどうかで区別できる。一方、回転を止めた反動での角加速度は、回転が止まった瞬間を検知し、その時点での角加速度を基準にして一時的にしきい値を大きくすることで、反動による角加速度と打撃操作による角加速度を区別する。
一方の打撃検出法2は角速度を重視して打撃操作の入力を検出する。ユーザーが打撃操作の入力ために制御装置を回転させ始めてから角速度の大きさが一定以上になるまでにはある程度時間を要するため、打撃検出法2は打撃検出法1のように打撃操作の開始を瞬時に検出することはできない。しかしながら、角速度の値はユーザーが打撃操作をしている比較的長い間大きな値を保つ。そのため、打撃検出法2は打撃操作によるコントローラの回転運動が停止した瞬間からのごく短い期間内に検出された打撃操作の入力を無視して打撃操作後の反動を誤って打撃操作として検出することを防いだとしても、コンビネーションパンチのような連続した打撃操作を検出することができる。
上記発明において、コントローラが、コントローラ本体に配置された入力部をさらに備え、打撃検出部が、入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有することが好ましい。角速度センサによる打撃操作の入力は直感的ではあるが、タッチやスワイプ、コントローラのボタン入力とは異なり打撃動作の種別を区別して入力するのには適さない。しかし、コントローラに角速度検出とは別の検知手段を用意し、それを利用すれば、角速度センサによる直感的な打撃動作の入力と、打撃種類又は強弱を変化させる操作とを両立させることができる。
また、これらのユーザーインターフェースシステム及び操作信号解析方法は、所定の言語で記述された本発明のゲームプログラムをコンピュータ上で実行することにより実現することができる。すなわち、コントローラから入力される操作信号等の情報を元にユーザーによる打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、
(1)コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
(2)打撃検出ステップが、角速度センサによって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーがコントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るコントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、
(3)打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することを特徴とする。
このような発明によれば、操作信号解析プログラムを使用することで、特別な処理装置を必要とせず、上述したユーザーインターフェースシステム及び操作信号解析方法を、様々な情報処理装置において実現することができる。すなわち、この操作信号解析プログラムを、汎用的なコンピュータやICチップにインストールし、CPU上で実行することにより、上述した各機能を有するユーザーインターフェースシステムを容易に構築することができる。このプログラムは、例えば、通信回線を通じて配布することが可能であり、またスタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。そして、このような操作信号解析プログラムは、コンピュータで読み取り可能な記録媒体に記録することができ、汎用のコンピュータや専用コンピュータを用いて、上述したシステムや方法を実施することが可能となるとともに、プログラムの保存、運搬及びインストールを容易に行うことができる。
以上説明したように本発明によれば、例えばボクシングゲームなど、打撃のタイミングを指定する打撃操作を入力し、ゲームを進行させるゲームにおいて、角速度センサに基づいてユーザーによる打撃操作を認識することで、直感的な操作が可能なユーザーインターフェースシステムを、廉価でかつ汎用性のあるデバイスで実現できる。
実施形態に係るゲーム装置の全体構成を示す概念図である。 実施形態に係るゲーム装置の内部構成を示すブロック図である。 実施形態に係るCPU内の仮想的な内部構成を示すブロック図である。 (a)及び(b)は、実施形態に係るコントローラの動作と、ゲームの表示画面を示す説明図である。 実施形態に係るユーザー操作に応じたコントローラのY軸まわりの回転角の変化を示したグラフであり、片手で打撃操作を1回行った場合の変化を示している。 実施形態に係るユーザー操作に応じたコントローラのY軸まわりの回転角の変化を示したグラフであり、両手で交互に打撃操作を連続で行った場合の変化を示している。 実施形態に係るユーザー操作に応じたコントローラのY軸まわりの回転角の変化を示したグラフであり、片手で打撃操作を1回強く行った場合の変化を示している。 実施形態に係るユーザー操作に応じたコントローラのY軸まわりの回転角の変化を示したグラフであり、片手で2回続けて打撃操作を行った場合の変化を示している。 実施形態に係る画面上の打撃選択領域を示す説明図である。 実施形態に係る操作信号解析処理の概略を示すフローチャート図である。 実施形態に係るピーク検出処理のサブルーチンを示すフローチャート図である。 実施形態に係る打撃検出処理のサブルーチンを示すフローチャート図である。 実施形態に係る打撃検出処理のサブルーチンを示すフローチャート図である。 実施形態に係るプログラムを記録した記録媒体と、当該記録媒体を読み取り可能な情報処理装置とを示す説明図である。
(ゲーム装置の基本構成)
以下に添付図面を参照して、本発明の実施形態を詳細に説明する。図1は、本実施形態に係るユーザーによって打撃操作を入力するためのユーザーインターフェースシステムを構成するゲーム装置1を示す斜視図である。なお、本実施形態では、ゲーム装置1上で、ボクシングゲームソフトを実行する場合を例示する。また、本実施形態では、本発明をボクシングゲームソフトに適用した場合を例に説明するが、本発明はこれに限定されるものではなく、例えば、テニス、スカッシュ、卓球などのスポーツアクションゲーム等、仮想空間に配置されるプレイヤーオブジェクト等のオブジェクトに対して打撃のタイミングを指定する打撃操作を入力し、ゲームを進行させるゲームソフトウェアを実行するゲームソフトウェアなどにも適用することができる。他にも、実空間上にあるロボット玩具のような駆動装置を制御するのに用いることもできるし、さらには、操作対象となるオブジェクトは必ずしも実空間若しくは仮想空間に存在しなくてもよく、仮想的なオブジェクトが打撃動作を行なったとするシミュレーションを行ない、その演算結果のみを出力するようなソフトウェアにも適用できる。例えば、ユーザーの打撃操作により仮想的なプレイヤーオブジェクトが太鼓を叩いたかのように音を出すといった音楽ゲームソフトウェアなどである。
本実施形態に係るゲーム装置1は、CPUを備えた演算処理装置であり、携帯可能な情報処理端末や、機能を特化させた専用装置により実現することができ、モバイルコンピュータやPDA(Personal Digital Assistance)、携帯電話機が含まれる。なお、本実施形態においてゲーム装置1は、通信機能を有し、通信ネットワークを通じて、サーバーにアクセス可能となっており、このサーバーを通じて、本発明に係るゲームプログラムがダウンロード可能となっている。ゲーム装置1の通信方式としては、例えば、4G方式、LTE方式、3G方式、FDMA方式、TDMA方式、CDMA方式、W−CDMAの他、PHS(Personal Handyphone System)方式、Wi−Fi(登録商標)、Bluetooth(登録商標)などの無線LAN方式が挙げられる。
ゲーム装置1は、図1に示すように、矩形状の制御装置本体100を有しており、この本体100に表示装置である液晶ディスプレイ165が備えられ、この液晶ディスプレイ(LCD)165には、その画面内にオブジェクトの状態が表示され、表示されるオブジェクトを操作して、ゲームを進行させる。また、ゲーム装置1は、制御装置本体100内部にCPU200を備え、演算処理装置としての機能も有している。
そして、本実施形態においては、ゲーム装置1自体がコントローラとしての機能を有している。具体的に、ゲーム装置1の制御装置本体100はジャイロセンサ(角速度センサ)164を内部に備えており、ゲーム装置1の3軸方向への角速度を検知することができるようになっている。ここで、角速度とは、物体が回転運動をするときの回転の速さを、単位時間あたりの回転角で表したものである。ユーザーはゲーム装置本体を両手で水平に持ち、片方の手をパンチをするかのように前に押し出すことで打撃操作の入力を行なう。本実施形態では、ジャイロセンサ164で検出される角速度に加え、連続的に検出される角速度から制御装置本体100に作用する角加速度や回転角を算出し、それらの値に応じてオブジェクトを操作する。
また、ゲーム装置1の制御装置本体100は加速度センサ169を内部に備えており、ゲーム装置1に外部から加えられた加速度を検知することができるようになっている。なお、本実施形態では、検知された加速度は、ユーザー操作によるゲーム装置1の回転運動が予備操作なのか打撃操作なのかを判断するために用いられる。
なお、本発明において、本実施形態のように表示装置、演算処理装置、及びコントローラが一体になっている必要はなく、むしろ、コントローラと表示装置は別々になっていた方が好ましいが、本実施形態は、本発明をスマートフォンやタブレット端末などの広く普及したデバイスで実現可能であることを示している。
本実施形態においては、図1に示すように、ゲーム装置1の長手方向をX軸とし、ユーザーがゲーム装置1を両手で持った場合の左手から右手に向かう方向をX軸の正の方向とする。また、ユーザーがゲーム装置1を両手で持ち、左右どちらかの手を前に押し出す打撃操作を行なった際の自然な回転軸と並行で、X軸に直交し、ゲーム装置1のLCD165の表面に平行な上下方向をY軸とし、下から上に向かう方向をY軸の正の方向とする。また、X軸とY軸とに直交し、LCD165の表面に対して垂直な方向をZ軸とし、ゲーム装置1からユーザーに向かう方向をZ軸の正の方向とする。なお、上述したゲーム装置1の向きや角速度を記述するための座標(X軸、Y軸、Z軸)は、本実施形態の内容を説明するためだけに用いるもので、コントローラからの入力信号が持つ座標系とは異なっていてもよい。
このゲーム装置1には、前記オブジェクトを操作する操作信号の入力デバイスとして、タッチパネル300が備えられている。タッチパネル300は、ユーザーの指先やペンなどを用いたタッチ操作によって操作信号を入力する入力デバイスであり、グラフィックを表示する表示部であるLCD165と、タッチ操作による操作信号を受け付けるタッチセンサ168とが重畳されて構成される。このため、タッチセンサ168によってタッチ操作が検出された位置を、LCD165に表示されているグラフィックの座標位置に対応させて特定することが可能となっている。
(ゲーム装置1の内部構造)
以上説明した表示・操作が可能なタッチパネル300及びジャイロセンサ164を有するゲーム装置1の具体的な内部構成について、以下に詳述する。図2は、本実施形態に係るゲーム装置1の内部構成を示すブロック図である。なお、以下の説明中で用いられる「モジュール」とは、装置や機器等のハードウェア、或いはその機能を持ったソフトウェア、又はこれらの組み合わせなどによって構成され、所定の動作を達成するための機能単位を示す。
図2に示すように、ゲーム装置1は、アンテナ101に接続されたデュプレクサ102と、このデュプレクサ102に接続された受信系モジュール及び送信系モジュールとを備えている。受信系モジュールとしては、低ノイズアンプ110、ミキサ111、IFアンプ112、直交ミキサ113、A/Dコンバータ114、復調器115、チャネルデコーダ116、音声デコーダ117、D/Aコンバータ118、スイッチ付きアンプ119、及びスピーカ120を備えている。一方、送信系モジュールとしては、マイク140、アンプ139、A/Dコンバータ138、音声エンコーダ137、チャネルエンコーダ136、変調器135、D/Aコンバータ134、直交ミキサ133、IFアンプ132、ミキサ131、及びパワーアンプ130を備えている。
また、ゲーム装置1は、制御系モジュールとして、シンセサイザ103、タイムベース150、CPU200、RAM152、ROM153、EEPROM151を備え、ユーザーインターフェース系モジュールとして、ジャイロセンサ164、LCD165、操作ボタン166、LED167、タッチセンサ168、及びバイブレータ174を備え、さらに、電源系モジュールとして、電源系電池171、電源172、及びA/Dコンバータ173を備える。前述のタッチパネル300は、グラフィックを表示するLCD165と、LCD165に表示されたグラフィックの座標位置に対応した操作信号を受け付けるタッチセンサ168とが重畳されて構成されている。
前記アンテナ101は、電波回線を介して基地局(図示せず)に対し信号を送受信する。デュプレクサ102は、送受信される信号の入出力を切り替える回路であり、アンテナ101が受信した信号を低ノイズアンプ110に入力し、パワーアンプ130から出力された信号をアンテナ101に出力する。
受信系モジュールにおいて、低ノイズアンプ110は、デュプレクサ102から入力された信号を増幅し、ミキサ111に出力する。ミキサ111は、低ノイズアンプ110の出力を受け、特定の周波数だけ分離して中間周波数信号として出力する。IFアンプ112は、ミキサ111から出力された中間周波数信号を増幅する。直交ミキサ113は、IFアンプ112の出力を受け直交復調する。A/Dコンバータ114は、直交ミキサ113の出力をデジタル化する。復調器115は、A/Dコンバータ114の出力を復調する。チャネルデコーダ116は、復調器115の出力に対して誤り訂正を行う。誤り訂正を行った信号には、制御メッセージ及び音声データが含まれる。制御メッセージはCPU200に、音声データは音声デコーダ117に送出される。
かかるチャネルデコーダ116から音声デコーダ117に入力された信号は、音声データにデコードされ、D/Aコンバータ118に受け渡される。D/Aコンバータ118は音声デコーダ117の出力をアナログ信号に変換する。スイッチ付きアンプ119は、CPU200からの制御信号に基づいて、適宜のタイミングで切り替えられ、スイッチONの状態においてD/Aコンバータ118の出力を増幅する。スピーカ120はスイッチ付きアンプ119の出力を増幅する。
一方、送信系モジュールにおいて、マイク140は、ユーザーからの音声信号を受け、この音声信号をアナログ信号として出力する。アンプ139は、マイク140から出力されるアナログ信号を増幅する。A/Dコンバータ138は、アンプ139の出力をデジタル信号に変換する。音声エンコーダ137はA/Dコンバータ138の出力をコード化して圧縮し、音声データとして出力する。チャネルエンコーダ136は、CPU200からの制御メッセージと音声エンコーダ137からの音声データとを合わせ、誤り訂正符号を付加する。
そして、変調器135は、チャネルエンコーダ136の出力を変調する。D/Aコンバータ134は、変調器135の出力をアナログ信号に変換する。直交ミキサ133は、D/Aコンバータ134の出力を、IF周波数信号(中間周波数信号)に変換する。IFアンプ132は直交ミキサ133の出力を増幅する。ミキサ131は、IFアンプ132の出力する信号の周波数を上げる。パワーアンプ130は、ミキサ131の出力を増幅する。なお、前記シンセサイザ103は、通信中に、ミキサ111、直交ミキサ113、ミキサ131、直交ミキサ133の同期をとる。タイムベース150は、クロック信号を各部に供給する。
ユーザーインターフェース系モジュールにおいて、ジャイロセンサ164は、角速度の大きさ及び方向を検出するセンサである。なお、本実施形態において、ジャイロセンサ164は、三軸方向(X,Y,Z軸方向)の角速度を検知するものとするが、本発明における打撃動作の制御においては必ずしも3軸の角速度は必要なく、Y軸まわりの角速度のみを検知してもよい。
なお、3軸の角速度を検知することにより、打撃以外の動作もジャイロセンサ164によって制御することが可能となる。例えば、ボクシングゲームにおいて、ユーザーによる打撃操作の入力の検出にはY軸まわりの角速度を用いているが、対戦相手の打撃を回避する操作の入力の検出に、ジャイロセンサによって検出されるX軸およびZ軸まわりの角速度を用いている。
このジャイロセンサ164が検知した角速度に応じた操作信号が、ゲーム装置1本体のCPU200に対して出力される。また、本実施形態では、ゲーム装置1に加えられた加速度を検出する加速度センサ169や、地磁気を検知してゲーム装置1の絶対的な向きを特定する磁気センサなどのその他のセンサ154が設けられていてもよい。
LCD165は、ゲーム画面やGUI,ユーザーによる入力文字などを表示させる液晶ディスプレイである。タッチパネル300では、このLCD165を介して文字や図形、動画などのグラフィックを表示してGUIを構成することができ、タッチパネル300上のタッチセンサ168を通じて、操作信号を取得する。
LED167は、点灯及び消灯によりユーザーにメッセージを伝えるためのものである。タッチセンサ168は、ユーザーの指がタッチパネル表面に接触したことを検出し、タッチパネル300表面の圧力又は静電容量の変化によって操作信号を取得する。バイブレータ174は、着信を知らせるデバイスであり、着信すると振動する。また、電源系電池171は、電源172及びA/Dコンバータ173に電力を供給する。電源172はゲーム装置1の電源である。A/Dコンバータ173は、信号をCPU200に供給する。
CPU200は、上記各部を制御する演算処理装置であり、RAM152やROM153に格納されたプログラムのコマンドを順次実行し、種々の機能を果たす。また、CPU200はLCD165にグラフィックを表示することに特化した専用の演算処理装置GPUを含んでいてもよい。
RAM152は、CPU200のワーキングメモリ等として使用され、CPU200で実行されるプログラムやプログラムによる演算結果を一時的に格納する。ROM153にはCPU200用のプログラムが記録され、CPU200からの要求に応じて、プログラムの実行命令を順次出力する。EEPROM151には、短縮ダイヤルなどのユーザーデータや、機体固有のID等が記録されている。
そして、本実施形態においては、CPU200は所定のゲームプログラム(ソフトウェア)を実行する。このソフトウェアによって、CPU200は種々のモジュールで仮想的に構築される演算処理装置として機能する。
(CPU200の仮想的な内部構成)
次いで、CPU200上で実行されるソフトウェアによって仮想的に構築される演算処理装置の内部構造について説明する。図3は、本実施形態に係るCPU200上に仮想的に構築される内部構成を示すブロック図である。
上記CPU200では、所定のゲームプログラム(ソフトウェア)が実行されることによって、操作信号取得部201と、アプリケーション実行部202と、表示情報生成部204と、角速度検出部205とが仮想的に構築される。
操作信号取得部201は、制御装置本体に配置された操作ボタン166やタッチセンサ168などの操作デバイス206から入力された操作信号を受け取り、アプリケーション実行部202に操作コマンドとして出力するモジュールである。例えば、操作ボタン166からの入力は、アプリケーション実行部202において、メニュー操作の一部(1つ前のメニューに戻るなど)として利用される。また、操作信号取得部201には、操作位置検出部201aを備えている。操作位置検出部201aは、制御装置本体に配置された入力部の1つであるタッチパネル300に対して入力された操作信号の座標位置を検出するモジュールであり、タッチセンサ168が検出した操作信号の入力座標位置が、LCD165に表示されているグラフィックの座標系に対応した座標位置としてアプリケーション実行部202に送信される。これにより、アプリケーション実行部202は、LCD165に表示されているメニューの選択やゲーム時の打撃種類又は防御種類の選択を実行することができる。
角速度検出部205は、タイマ割り込みによって所定の時間間隔(例えば60Hz)によって動作し、制御装置本体100内のジャイロセンサ164から各方向(X軸、Y軸、Z軸)の角速度等の操作信号を読み取るモジュールである。さらに角速度検出部205は、所定の時間間隔で連続的に検出される角速度を積分して、ゲーム装置1の向き(回転角)を追跡する。ゲーム装置1の向きの追跡には、所定の時間間隔で連続的に検出される角速度の他に、加速度センサ169によって検出される重力加速度や磁気センサなどのその他のセンサ154で検出されるデータを併用しても良い。
また、角速度検出部205は、制御装置本体100内の加速度センサ169を使って、ゲーム装置1に加えられた加速度を算出する。加速度センサ169は重力加速度も合わせて検出するが、角速度検出部205が算出する加速度は重力加速度を取り除いたものとする。また、加速度をゲーム装置1の静止系で見たときに内部のバネにかかる見かけの加速度(実際に計測される加速度)として表現するか、ゲーム装置1を外から観測したときのゲーム装置1自体にかかる加速度として表現するかによって、加速度の向きが逆になるが、以降の説明において、角速度検出部205が算出する加速度は、ゲーム装置1を外から観測したときにゲーム装置1自体にかかる加速度として表現されているものとする。
角速度検出部205によって得られたゲーム装置1の角速度、向き及び加速度は、RAM152内の記憶領域に保持される。そして、アプリケーション実行部202は角速度検出部205のタイマ割り込みとは別のタイミングで動作しても良く、RAM152内の記憶領域にアクセスすることで、角速度検出部205によって得られた最も直近の装置本体100の角速度や向き、加速度などを取得する。
ここで、これ以降の本発明の詳細な説明のために、角速度検出部205によって得られ、RAM152内の記憶領域に保持される角速度やゲーム装置1の向きの表記方法を定義しておく。先ず、ある時刻tに角速度検出部205によって読み取られた角速度のベクトル量をベクトルω(t)、角速度のX軸の成分の値(X軸まわりの角速度)をωx(t)、角速度のY軸の成分の値(Y軸まわりの角速度)をωy(t)、角速度のZ軸の成分の値(Z軸まわりの角速度)をωz(t)と表記する。そして、各軸まわりの角速度の値は、その軸に対して反時計まわりの方向を正とする。ここで、角速度検出部205は、タイマ割り込みによって所定の時間間隔で動作しているため、時刻tは離散的な値を取るが、時刻tにそれ以外の値が用いられた場合でも、ベクトルω(t)やωx(t)、ωy(t)、ωz(t)は時刻tより以前で最も直近に検出された角速度の値を表すものとする。また、ここでは以降での説明のために便宜上角速度を時刻tの関数として表記しているが、本発明を実施するにあたり、過去に遡って角速度の値を取得する必要はなく、角速度検出部205が動作した時点で得られた最新の値のみがRAM152内の記憶領域に保持されていれば十分である。
次に、ある時刻tにおけるゲーム装置1の向きを回転行列A(t)で表記することにする。また、本発明における打撃動作の制御にはゲーム装置1のY軸まわりの回転角だけが必要であり、ゲーム装置1のY軸まわりの回転角をθy(t)と表記する。また、角速度と同じく、Y軸まわりの回転角θy(t)もY軸に対して反時計まわりの方向を正とする。ここで、時刻tはやはり離散的な値を取るが、角速度と同じように連続的な値を取るように拡張する。また、ここでも便宜上時刻tの関数として表記しているが、本発明の実施する際には、過去に遡って回転行列A(t)や回転角θy(t)を取得する必要はない。
ゲーム装置1のY軸まわりの回転角θy(t)は、ジャイロセンサ164がY軸まわりの角速度ωy(t)しか検出できない場合でも、角速度ωy(t)を時刻tで積分することで算出できる。この値は他の軸まわりの回転が加わったときに実際の値とずれることがあるものの、本発明の実施には高い精度で回転角を検出する必要はなく、後述する自動キャリブレーションを実装することで、問題なくオブジェクトをコントロールできるようになる。
一方、ゲーム装置1の向きを表す回転行列A(t)が利用できる場合、Y軸まわりの回転角θy(t)は、回転行列A(t)から算出した方が正確である。但し、3次元の回転において、Y軸まわりの回転角θy(t)を定義する方法は様々あり、定義によって算出方法は異なってくる。どのような算出方法を用いても本発明を実施することはできるが、本実施形態では、一例として以下のように、Y軸まわりの回転角θy(t)を算出する。
先ず、次のようにベクトルzをZ軸方向の単位ベクトルとする。
z=(0,0,1) ……(式1)
そして、ベクトルzを回転行列A(t)で回転することで得られるベクトルをベクトルz'(t)とし、ベクトルz'(t)を次のように求める。
z'(t)=A(t)z ……(式2)
そして、式1及び式2によって得られたベクトルz'(t)のX成分をz'x(t)、Z成分をz'z(t)とすると、次の関係が成り立つ。
tanθy(t)=z'x(t)/z'z(t) ……(式3)
ここで、tanθy(t)は回転角θy(t)の正接(タンジェント)であり、正接関数の逆関数を用いることで式3からY軸まわりの回転角θy(t)を算出できる。但し、z'x(t)およびz'z(t)が共にゼロあるいは非常に小さい値の場合には計算誤差が大きくなるため、式1のベクトルzの代わりにX軸方向の単位ベクトルを使って同様の計算をするものとする。
表示情報生成部204は、アプリケーション実行部202による制御に従って、LCD165におけるオブジェクト表示のための情報を生成し、LCD165に出力するモジュールである。具体的には、表示情報生成部204は、3D構成部204aと、2D構成部204bと、GUI構成部204cとを備え、三次元空間内に視野範囲を定める仮想的なカメラを配置し、その仮想的なカメラが撮像したオブジェクトを二次元平面としてLCD165に表示する。
3D構成部204aは、三次元空間を仮想的に構成し、この三次元空間内の三次元座標上に存在するオブジェクトやカメラの座標位置を制御するモジュールである。2D構成部204bは、撮影画面に三次元空間を二次元的に表示させるモジュールであり、3D構成部204aが構成した三次元空間のデータを取得し、撮影画面の視野範囲に応じた二次元画像を演算処理して、撮影画面に三次元空間を二次元的に表示する。
具体的には、三次元空間内に視野範囲を定める仮想的なカメラが配置されており、3D構成部204aが算出したオブジェクト及び仮想的なカメラの位置関係に基づいて、カメラが撮像したオブジェクトを二次元平面として撮影画面を形成することで、LCD165におけるオブジェクトの状態の表示を変化させる。なお、本実施形態において、撮影画面は、プレイヤーオブジェクト越しに、プレイヤーや対戦相手のオブジェクト及びリングの一部を撮像したメイン画面である。
GUI構成部204cは、2D構成部204bによって生成された撮影画面の上にゲームに関する情報やメニューなどのグラフィックユーザーインターフェース(GUI)を表示するモジュールである。GUIは、オブジェクトに対する操作方法やオブジェクトの情報を視覚的にわかりやすく伝えるグラフィックであり、例えば、ボクシングゲームであれば、図3に示すように各キャラクターのパワーゲージ304,305などから構成されている。
アプリケーション実行部202は、角速度検出部205及び操作信号取得部201からの入力信号に基づいて、オブジェクトを生成して仮想空間内に配置したり、仮想空間内のオブジェクトを制御したり削除したりして、ゲームを進行させるモジュールであり、例えば、ボクシングゲーム等では、仮想空間内のプレイヤーや対戦相手のオブジェクトに対して、打撃、防御、回避などの動作をさせるとともに、打撃前の予備動作を制御して動作させる。
また、アプリケーション実行部202は、ボクシングのルールに則したゲームの進行管理(選択されたオブジェクトの階級や、ランキング、ランキングに応じたラウンド回数等、試合中における採点処理)を行うとともに、プレイヤーや対戦相手のオブジェクトの能力パラメータやパンチの種類などに基づいて、打撃条件の演算を行って、仮想空間内におけるオブジェクトへのダメージを演算処理する。
このアプリケーション実行部202には、オブジェクトの動作全体を制御する動作制御部210と、ユーザーによる打撃操作を検出する打撃検出部211とが設けられている。動作制御部210は、オブジェクトの動作全体を制御するモジュールであり、打撃検出部211により検出されたユーザーによる打撃操作の入力に応じて、オブジェクトに打撃動作を実行させる。さらに、動作制御部210は、打撃動作以外にも、角速度検出部205によって得られた回転角θy(t)の値に応じて、打撃動作に関する予備動作を実行させる機能も備えている。さらに動作制御部210は、角速度検出部205によって得られた回転行列A(t)や角速度ベクトルω(t)を用いて、オブジェクトに相手の打撃を回避する動作を実行させる機能も備えている。
打撃検出部211は、角速度検出部205によって得られた角速度のY軸の成分ωy(t)の値、又はωy(t)の値の単位時間あたりの変化量のいずれか、若しくはこれらの両方を用いて予測された微小時間先の角速度の値をしきい値と比較することにより、ユーザーによる打撃操作の入力によって生じ得るコントローラの回転運動の特徴を検出する打撃検出法を備える。打撃検出部はこの打撃検出法を用いてユーザーによる打撃操作の入力があったことを検出するが、この際、右手による打撃なのか左手による打撃なのかはωy(t)の正負で判断でき、正であれば右手、負であれば左手による打撃となる。また、打撃検出部211は、角速度検出部205によって算出されたゲーム装置1の加速度の向きによって、コントローラの回転運動がユーザーの打撃操作によるものなのか予備操作によるものなのかを判別し、予備操作によるものと判別した場合は打撃操作の入力を検出しない。また、打撃操作によるものと判別した場合は、動作制御部210によって、オブジェクトの打撃動作が開始され、打撃動作が実行されている間はオブジェクトの予備動作は抑制される。
また、本実施形態において、打撃検出部211は、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の検出を制限するようにしている。このようにすることによって、打撃操作を停止させた時の反動による角速度や角速度の変化のパターンを、打撃操作として誤って検出されるのを防止している。
さらに、本実施形態では、打撃検出部211は2つの打撃検出法を用い、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法にする。詳述すると、1つ目の打撃検出法はωy(t)の単位時間あたりの変化量、すなわち角加速度、としきい値を比較する方法を用いて打撃操作の入力が開始した瞬間を検出する。この場合、打撃操作を停止させた時の反動による角加速度を誤って検出しないように、ωy(t)の値がゼロに逹したこと、あるいはゼロをまたいで正負が反転したことで打撃操作によるコントローラの回転が止まった瞬間を検知し、その時点での角加速度を基準にして一時的にしきい値を大きくする。一方、2つ目の打撃検出法はωy(t)の値を重視して打撃を検出することにより、打撃操作の開始を瞬時に検出することはできないものの、角加速度を使った場合に比べて長い間打撃操作を検出することができるため、打撃操作を停止させた時の反動を区別しやすい。即ち、2つ目の打撃検出法も打撃操作によるコントローラの回転運動が停止した瞬間を検出し、コントローラの回転運動が停止した瞬間からごく短い間だけ、再度検出される打撃操作を無視することにより、打撃操作を停止させたときの反動を誤って打撃操作として検出してしまうことを防ぐが、コンビネーションパンチのような連続した打撃操作の検出は妨げられずに済む。
このような動作制御部210及び打撃検出部211による制御によって、図4(a)に示すように、ゲーム装置1を持つ右手を手前(打撃動作の動作方向と逆方向)に引くとY軸に対して時計周りの回転が検知され、これに応じてオブジェクトの体を右にねじる予備動作を行わせ、その後、右手を前(打撃動作の動作方向)に強く押し出す操作を受け付けると、右手のパンチを繰り出す打撃動作を行わせるように制御する。また、ゲーム装置1を持つ左手を手前(打撃動作の動作方向と逆方向)に引くとオブジェクトの体を左にねじる予備動作を行わせ、その後、左手を前(打撃動作の動作方向)に強く押し出す操作を受け付けると、左手のパンチを繰り出す打撃動作を行わせるように制御する。以下に、動作制御部210における予備動作の制御、及び打撃検出部211における打撃操作の検出処理について説明する。
(1)予備動作の制御について
先ず、動作制御部210における予備動作の制御について説明する。本実施形態において、動作制御部210は、角速度検出部205によって算出されたY軸まわりの回転角θy(t)に基づいて、オブジェクトの予備動作の制御を行う。なお、ここでは、(a)オブジェクトの体の回転(ねじり)の大きさφの算出、(b)オブジェクトの回転制御、(c)自動キャリブレーションに分けて説明する。
(a)オブジェクトの体の回転(ねじり)の大きさφの算出
先ず、動作制御部210は、ある時刻tにおけるオブジェクトの体の回転(ねじり)の大きさφを算出する。具体的に、試合が開始した時刻をt0とし、この時刻t0でのY軸まわりの回転角θ0は、以下のように求める。
θ0=θy(t0) ……(式4)
そして、ある時刻tにおけるオブジェクトの体の回転(ねじり)の大きさφは、以下のように求める。
φ=S×(θy(t)−θ0) ……(式5)
ここで、式5における、Sは所定のスケールパラメータを示し、ゲーム装置1を大きく回転させなくても、オブジェクトに十分大きな動作をさせることができるようにするためのものである。また、オブジェクトの体の回転角には、上限Φがあり、上記回転(ねじり)の大きさφは、[−Φ,Φ]の範囲に切り詰められる。そして、回転(ねじり)の大きさφが上限に近づくにつれ、オブジェクトは体の回転だけでなく腕を振り上げ、パンチの準備をする。また、式5で算出される回転角をそのまま用いずに、目標値として用いることもできる。例えばオブジェクトの体の回転角の単位時間あたりの変化量が一定の大きさを越えないように目標値に近づくように制御すれば、オブジェクトが非現実的な速さで体を回転させようとすることを防ぐことができる。
(b)オブジェクトの回転制御
次いで、回転(ねじり)の大きさφに応じた体の回転についての制御方法について説明する。先ず、オブジェクトの姿勢は、N個のパラメータで制御されているものとし、これらのパラメータの組を、N次元のベクトルaとする。この場合、回転(ねじり)の大きさφの値に応じてオブジェクトが体の回転動作をするためには、回転(ねじり)の大きさφに対応するパラメータの組a(φ)の値を決定する必要がある。ここで、ベクトルa(φ)の関数の形が単純な場合は、プログラムで計算することができるが、ほとんどの場合、ベクトルa(φ)は複雑な関数であり、人の手によって手動で値を設定する必要がある。
そこで、本実施形態では、回転(ねじり)の大きさφの代表的な値をM個選び、それらを(φ12,...,φM)とする。なお、これらの値は、φ1=−Φ,φM=Φ,φ1<φ2<...<φMとなるように設定する。そして、回転(ねじり)の大きさφが上記の選ばれた値となった場合に、制御パラメータベクトルa(φ)が取るべきの値の組を事前に設定する。ここで、パラメータベクトルaが取るべき値の組を、a1=a(φ1), a2=a(φ2), ... , aM=a(φM)とする。その後、任意の値である回転(ねじり)の大きさφが与えられたときには、上記のa1, a2, ... , aMを補間することでベクトルa(φ)の値を算出する。本実施形態での補間方法としては、線形補間が用いられ、
φ<φ1の場合、
a(φ)=a1 ……(式6)
φi≦φ<φi+1の場合、
a(φ)=s×ai+(1−s)×ai+1,
s=(φi+1−φ)/(φi+1−φi)……(式7)
φM≦φの場合、
a(φ)=aM ……(式8)
としてベクトルa(φ)の値を算出する。なお、補間方法としては、線形補間の他、高次のスプライン補間など他の補間方法を用いてもよい。
(c)自動キャリブレーション
次いで、自動キャリブレーションについて説明する。本実施形態では、オブジェクトの体の回転の動作には、ゲーム装置1のY軸まわりの回転角θy(t)を使用しているが、この値は、ユーザー自身が向きを変えた場合にも変化してしまう。例えば、ユーザーが電車や車の中でゲームをプレイしていた場合に、気付かないうちにユーザー自身の向きが変わり、ゲームの中のオブジェクトが思わぬ方向に体を回転してしまうことが考えられる。またY軸まわりの回転角θy(t)の値は、角速度ベクトルω(t)を積分したときの誤差を含むため、それが無視できないほど大きくなる可能性も考えられる。
しかし、これらの影響によるY軸まわりの回転角θy(t)の変化量は、ユーザーが意図してオブジェクトの体をコントロールしたときの変化量に比べて小さいので、上述の時刻t0におけるY軸まわりの回転角を表していたθ0の値を逐次変えていくことで補正することができる。
具体的には、現在の時刻をtjとし、時刻t0でのY軸まわりの回転角を表していたθ0の値を次の式のように更新する。
θ0→θ0+s×(θy(tj)−θ0) ……(式9)
ここで、式9のパラメータsはキャリブレーションの度合を表していて、sの値が0であればキャリブレーションの効果がまったくなくなり、sの値が1であればθ0が瞬時に現在の向きでキャリブレーションされることになる。キャリブレーションの度合がキャリブレーションの頻度に依存しないように、sの値はキャリブレーションの時間間隔に比例させるのが良い。すなわち、前回キャリブレーションしたときの時刻をtj-1とすると、sの値は次の式で求められる。
s=C×(tj−tj-1) ……(式10)
ここで、Cを定数としても良く、Cはキャリブレーションの速さ(単位時間あたりにキャリブレーションされる度合)を表す。Cの適切な値は、アプリケーションにより種々変更可能であるが、1〜5秒−1程度の値を設定するのが良い。また、キャリブレーションは十分高い頻度(少なくとも10Hz以上)で行なわれるとし、sの値が常に1よりも十分小さい値を取るようにしなければならない。
本実施形態では、ユーザーが激しくゲーム装置1を動かしているときにはCの値を小さくして、ほとんど動かしていないときにCの値を大きくするようにしている。例えば、Cの値を以下のように求める。
C=C'×exp(−|ω(t)|22) ……(式11)
ここで、expは指数関数を表し、Ωはあらかじめ決めておく定数で、どの程度角速度が大きくなったらsの値を小さくするのかを決定するものである。また、C'は定数で、やはり1〜5秒−1程度の値を設定するのが良い。
(2)打撃操作の検出
次いで、打撃検出部211において、ユーザーによる打撃操作によって生じ得るコントローラの回転運動の特徴を検出する打撃検出法について説明する。本実施形態では、打撃検出部211は2つの打撃検出法を用いており、一方は(1)角加速度を用いて打撃操作の特徴を検出する打撃検出法1、他方は(2)角速度と角加速度との両方を用いて打撃操作の特徴を検出する打撃検出法2、である。しかし、本発明の実施に必ずこれらの2つの方法が必要なわけではなく、ゲームアプリケーションの要件に応じてどちらか一方を用いることも、変更を加えた方法を用いることも可能である。なお、どちらの検出方法も誤検出を生じる可能性があるため、後述する誤検出の改善方法を組み合わせて利用するものとする。ここで誤検出とは、ユーザーが意図していないタイミングでパンチが検出されてしまうことを意味する。以下、各検出方法、及び誤検出改善方法について説明する。
(A)打撃検出法1
角加速度を用いて打撃動作を開始するタイミングを検出する打撃検出法1とは、角速度のY成分であるωy(t)の単位時間あたりの変化量、すなわちY軸まわりの角加速度、がしきい値を越えたときに打撃を検出するものである。
ここで、現在の角速度のY成分ωy(t)を検出した時刻をtj、前回角速度が検出された時刻をtj-1とすると、時刻tjでのY軸まわりの角加速度をαy(tj)は、以下のように求められる。
αy(tj)={ωy(tj)−ωy(tj-1)}/(tj−tj-1) ……(式12)
このようにして得られた角加速度αy(tj)の大きさがしきい値Tαを越えたときに打撃操作が入力されたと検出する。この方法のメリットは、角加速度αy(tj)の値はユーザーが打撃操作を入力しようとしてゲーム装置1を押し出した瞬間に増加するため、ユーザーの操作に対して遅延なく打撃を検出できることである。また、ユーザーは一瞬だけ力を入れれば良く、ゲーム装置1を大きく動かさなくても打撃操作を入力することができる。
一方、角加速度αy(tj)の値が大きくなるのは、ゲーム装置1が急に回転し始めた瞬間だけでなく、回転していたゲーム装置1が急に止まった瞬間も含まれるため、この検出方法では、そのような瞬間に、打撃動作を誤検出してしまうことがある。この誤検出の改善方法は後述する。
(B)打撃検出法2
次いで、角速度と角加速度との両方を用いた打撃検出法2について説明する。ここでの検出方法とは、角加速度αy(t)を使って現在時刻tから微小時間Δt後の角速度ωy(t+Δt)の値を予測し、その大きさをしきい値Tωと比較するという方法である。ここで、ωy(t+Δt)の予測値をω'y(t+Δt)と記述することにし、次のように予測する。
ω'y(t+Δt)=ωy(t)+αy(t)Δt ……(式13)
そして、式13で予測したω'y(t+Δt)の大きさが、しきい値Tωを越えたときに打撃操作が入力されたと検出する。この方法のメリットは、角速度ωy(t)の値が大きくなるのがゲーム装置1が速く回転運動しているときだけであるため、打撃検出法1に比べて誤検出が少なくなることである。
しかし一方で、ユーザーが打撃操作を入力しようとしてゲーム装置1押し出してから、角速度ωy(t)の値が大きくなるまでには時間がかかるため、この方法では、ユーザーが打撃操作の入力を開始してから、それが検出されるまでに遅延が発生してしまうというデメリットがある。式13のΔtはこのデメリットを軽減するためのものであるが、Δtの値が大き過ぎると角加速度の影響が大きくなり、誤検出が多くなるので、ゲームアプリケーションの要件に応じてΔtの値を調整する必要がある。遅延の軽減を優先させるのであれば、Δtの値は0.05秒程度の大きさに設定するのが良く、誤検出を少なくしたい場合はΔtの値を0.01秒程度に設定するのが良い。本実施形態においては、コンビネーションパンチのような連続した打撃操作の入力を、打撃操作を停止したときの反動と区別して検出するために、誤検出を少なくする設定を用いている。
(C)誤検出改善策
次いで、各打撃検出法で発生する打撃操作の誤検出を改善する方策を説明する。図5は、右手で打撃動作を1回入力した場合のY軸まわりの回転角θy(t)の変化を示したグラフであり、図6は、右手、左手の順に打撃動作を連続で入力した場合のY軸まわりの回転角θy(t)の変化を示したグラフである。また、図7は、右手で打撃動作を1回強く入力した場合のY軸まわりの回転角θy(t)の変化を示したグラフであり、図8は、右手だけで打撃動作を2回連続で入力した場合のY軸まわりの回転角θy(t)の変化を示したグラフである。
なお、図5〜図8に示すグラフの横軸は時刻tを表し、縦軸はY軸まわりの回転角θy(t)を表している。なお、各図のグラフが滑らかではなく段々になっている箇所があるのは、角速度検出部205と打撃検出部211とで動作するタイミングが異なるために生じたもので、ジャイロセンサから直接取得できる角速度の値がそこでゼロになっていたり、角加速度の値が大きくなっていたりするわけではない。
(a)一方の手で打撃操作を1回行った場合について
先ず、一方の手で打撃操作を1回行った場合について説明する。図5に示すように、ここでの操作は、グラフのAの時点から、右手を手前に引き始めてパンチの予備操作に入り、Dの時点で右手を強く押し出してパンチを入力する操作を行っている。そして、Fの時点で押し出した手を止め、Gの時点では、その反動で手を引き戻している。このグラフはパンチの操作をしたときに見られる典型的なパターンを示していて、特にGの時点での手を引き戻す動作は、ユーザーが意図して行うものではなく筋肉の反射的な動きであり、必ず見られる反応である。そして、各時点A〜Hにおいて、誤検出が生じる可能性がある。打撃検出法1におけるしきい値Tαや、打撃検出法2におけるしきい値Tω、式13のΔtなどの値を調整することで、誤検出をある程度軽減できるものの、いくつか抜本的な対策が必要となる時点があるため、それらの時点で生じ得る誤検出とそれに対する改善処理について説明する。
・A時点について
予備操作を開始するA時点では、ユーザーがゲーム装置1を持つ手を引いたときの角加速度αy(t)を誤って検出してしまうことが生じる。この誤検出によって、ユーザーが意図していた手と反対の手で打撃操作が入力されたと判断されてしまうため、ユーザーの操作感を大きく損なうことになる。この誤検出は上記の打撃検出法1で発生するが、打撃検出法2打撃検出法2を用いる場合でも、式13のΔtの値を大きく設定した場合に発生する可能性がある。この時点での誤検出に対しては以下の改善方法を用いる。
(改善処理A−1)
ここでの改善処理は、制御装置本体100に含まれている加速度センサ169を使うことで予備動作と打撃動作を区別するものである。つまり、加速度センサ169で検出された加速度のZ成分が正であった場合は、ゲーム装置1が手前に引き戻されたことになるため、角加速度αy(t)が増加した理由を予備操作のためであると判断し、打撃操作を検出しないようにする。しかし、ユーザーが片方の手を手前に引く時は、同時にもう一方の手をわずかに押し出す傾向があり、小さな逆向きの加速度を検出してしまう場合がある。そこで加速度のZ成分が正であるかを調べる代わりに、加速度のZ成分がしきい値−Taよりも大きいかどうかを調べ、大きければ打撃操作を検出しないようにする。本実施形態ではTaの大きさは0.1G(重力加速度の10分の1)程度の大きさにしている。
・C時点について
Cの時点では、予備操作でゲーム装置1を手前に引き戻す動作を止めたことによって角加速度αy(t)が大きくなり、打撃検出法1を使っている場合には誤検出が発生する。この場合、ユーザーが意図していた右手の打撃と判定されるので大きな問題はないが、C時点は、ユーザーの意図したタイミングではないため、仮にユーザーがフェイントで打撃するまねだけをした場合には誤検出となる。なお、打撃検出法2を利用する場合は、式13のΔtの値を大きく設定し過ぎるとC時点で誤検出が発生する可能性があるが、Δtの値が0.05秒程度であれば、その可能性は極めて低い。
(改善処理C−1)
改善処理C−1は、角加速度だけでなく角速度の向きも監視する処理である。すなわち、角加速度αy(t)の大きさがしきい値Tαを越えていても、Y軸まわりの角速度ωy(t)と角加速度αy(t)の正負が異っていたり、Y軸まわりの角速度ωy(t)の大きさが十分でない場合(あるしきい値T'ωよりも小さい場合)には、角加速度αy(t)の増加の理由が回転していたゲーム装置1が停止したためであると判断し、打撃操作を検出しないようにする。なお、しきい値T'ωは、打撃検出法2におけるしきい値Tωとは異なるものであり、しきい値T'ωの値はしきい値Tωに比べてかなり小さい値に設定する。
・D時点について
Dの時点は、ユーザーが打撃操作を行なった時刻なので、ここで打撃を検出するのは正しい処理だが、仮にユーザーがフェイントで打撃をするまねだけをした場合、予備操作の反動によってこの時点で打撃を検出してしまうことがある。フェイントをかける場合は反動が起きないようにユーザーに注意してもらえば良いのだが、次のような改善処理によって、フェイントが成功する確率を上げることができる。
(改善処理D−1)
改善処理D−1はゲーム装置1の回転が止まった瞬間を検知し、直後に反動か起こることを予測して一時的にしきい値を大きくする処理である。具体的には、まず回転が止まった瞬間を角速度ωy(t)の値がゼロになった時刻、若しくはゼロをまたいで正負が反転した時刻とする。この時刻はゲーム装置のY軸まわりの回転角θy(t)がピークを迎える時刻なので、ピーク時刻tpと呼ぶことにする。そして、このピーク時刻tpでの角加速度αy(tp)を使って次の条件式を満たす間は打撃を検出しないようにする。
y(t)| ≦ |αy(tp)|・exp(−λ(t−tp)) ……(式14)
つまり、角加速度αy(t)がピーク時刻tpでの角加速度αy(tp)を指数関数的に減衰させた値よりも大きくならない限り打撃を検出しないようにする。式14の右辺で算出している値はすぐに減衰してしきい値Tαより小さくなるため、この処理が適用される期間は限定的である。なお、本実施形態ではλの値には20秒-1程度の値を用いている。
・G時点について
Gの時点では、ゲーム装置1を押し出した右手を急に止めた反動で手を引き戻そうとしたときに増加する角加速度αy(t)によって誤検出が生じる。ここでの誤検出は打撃検出法1で発生するが、打撃検出法2を用いる場合でも、式13のΔtの値を大きく設定した場合に発生する可能性がある。ここでの誤検出は改善処理A−1と改善処理D−1を適用することで防ぐことができる。しかしながら、これらの改善処理によって、本来打撃を検出しなければならない状況、即ち、ユーザーがコンビネーションパンチのような左右の連続した打撃操作をした場合に打撃の検出に失敗してしまうことがある。
・H時点について
H時点は、G時点と同じくゲーム装置1を急に止めた反動で手が引き戻されたときに角速度ωy(t)の大きさが増加することにより、打撃検出法2で誤検出が生じる。G時点では改善処理A−1と改善処理D−1を適用することでコンビネーションパンチのような左右の連続した打撃操作の検出に失敗することがあった。そこで、H時点で反動とコンビネーションパンチを区別して検出することを試みる。そこで、まずコンビネーションパンチが入力された場合と反動によって手が引き戻された場合との違いについて分析し、次いで誤検出を防ぐための改善処理を説明する。
(b)コンビネーションパンチの入力を行った場合
まず、打撃操作を2回連続で入力した場合について説明する。図6は右手、左手の順に打撃操作を続けて入力したときのY軸まわりの回転角θy(t)の変化を示したグラフである。この図では、I時点で右手を前に押し出して最初の打撃操作を入力し、J時点で右手が止まると同時に左手を押し出して2番目の打撃操作を入力していることを示している。
この場合において、最初の右手の打撃操作は問題なく検出可能となるが、2番目の左手による打撃の検出は問題となる。なぜなら、改善処理A−1や改善処理D−1の影響でJ時点では打撃動作を検出に失敗することがあるからである。そこで、打撃検出法2を用いてJ時点からM時点にかけてしばらくの間大きい値を保っている角速度ωy(t)を検出することになるが、これを図5のH時点の反動による角速度と区別しなければならない。
ここで、図7は、図5のH時点での誤検出を強調するために、力強く右手で打撃操作を入力したときのグラフであり、図8は、右手で2回続けて打撃操作をしたときのグラフである。図7では、N時点で勢いよくゲーム装置1を前に押し出し、O時点からP時点にかけて反動で大きくY軸まわりの回転角θy(t)が変化している。そのため、打撃検出法2におけるしきい値Tωの値を大きくしてもO時点とP時点の間の区間で誤検出が発生してしまう。しかしながら、図7で見られるように、反動が始まってから角速度が小さくなるまでのO時点とP時点の区間T1は、非常に短い時間(0.05秒程度)という特徴があることから、本実施形態では、この特徴を利用して以下の改善処理を適用する。
(改善処理H−1)
改善処理H−1は、打撃検出法2において、Y軸まわりの回転角θy(t)がピークに達した時刻からごく短い期間は、打撃検出法2で打撃操作を検出しないようにするものである。図7を例にとると、Y軸まわりの回転角θy(t)がピークに達した時点Oから微小期間εの間では打撃動作を検出しないようにする。この微小期間εはT1よりも若干長い0.055秒程度に設定する。これをあまり長い値に設定すると、コンビネーションパンチを検出できなくなる。
なお、図6のコンビネーションパンチでは、K時点ではまだ角加速度αy(t)の大きさが小さく、角速度ωy(t)はしばらく大きな値を保っているが、図7の単独のパンチでは、P時点で既に逆方向の角加速度αy(t)が加わって減速を始めている。そのため、式13において角加速度αy(t)を使って少し先の時刻の角加速度ω'y(t+Δt)を予測することにより、この2つの差をより良く判別できる。
また、角速度検出部205が60Hz程度の頻度で動作しているとすると、角速度の検出が行なわれるのは0.017秒程度の間隔であり、これは区間T1と微小期間εの差分より長いため、検出処理が行なわれるタイミングによってはH時点やP時点で誤検出が発生したり、K時点でのコンビネーションパンチの検出に失敗したりする可能性がある。そこで、改善処理H−1の精度を高めるために、Y軸まわりの回転角θy(t)がピークに達した時刻をより正確に知る必要がある。例えば、図7において、ピークが検出されるのはO時点であるが、実際にピークに逹しているのはそれより少し前の時点であると推測できる。そこで、ピークが検出された時刻をtjとし、そのひとつ前に角速度を検出した時刻をtj-1とし、次のように、時刻tjと時刻tj-1をそれぞれの時刻での角速度の大きさの比率で内分することで、ピークに逹した時刻tpを推定する。
tp=(|ωy(tj)|tj-1+|ωy(tj-1)|tj)/(|ωy(tj-1)|+|ωy(tj)|) ……(式15)
また、ピークに逹した時刻tpから微小期間ε経過した後に始めて角速度を検出した時刻をtεとし、時刻tεにおいては、式13の代わりに次の式で角速度の値を推測することにする。
ω'y(tp+ε+Δt)=ωy(tε)+αy(tε)(Δt+tp+ε−tε) ……(式16)
時刻tεにおいて、式16で得られたω'y(tp+ε+Δt)をしきい値Tωと比較して打撃操作を検出することで、角速度検出部205が動作するタイミングの影響をあまり受けずに、改善処理H−1を適用することができるようになる。
(c)同じ手で2回続けて打撃操作を行った場合
次いで、図8に示すように、同じ手で2回続けて打撃操作を行った場合について説明する。図8では、Q時点で1回目の打撃操作が入力され、R時点からS時点にかけて反動で右手が引き戻されている。そして、S時点からT時点にかけては、反動の勢いを借りて2回目の予備操作が行われ、T時点で2回目の打撃操作が入力されている。
図8と図6は大変良く似ていて、区別するのが難しく見えるが、図8ではピークが検出されたR時点とS時点までの間が短く、S時点では減速を開始していて、そこからゆるやかに予備操作に入ってT時点に到達しているのに対し、図6ではJ時点の直後からM時点の直前まで急傾斜が続いていて大きな角速度を維持しているので、ここでも改善処理H−1を適用することでこれらの違いを判断し、S時点での誤検出を防止できる。
また、図6のコンビネーションパンチでは、最初の打撃操作の入力で出した手を引き戻しながら、反対の手を押し出してゲーム装置1を回転させていることから、図8で最初にパンチを出した手を予備動作のために引き戻す場合よりも、角速度が大きくなるため、打撃検出法2のしきい値Tωを少し大き目の値に設定することで、S時点での誤検出をより確実に防止できるようになる。打撃検出法2のしきい値Tωを少し大き目の値に設定することで、通常の打撃操作の入力を検出しにくくなるが、通常の打撃動作の入力は打撃検出法1で検出できるので問題ない。
(4)その他の動作制御
動作制御部210は、打撃動作や予備動作とは異なるオブジェクトの動作を制御する機能も備えており、例えば、ボクシングゲームでは、ジャイロセンサ164を、プレイヤーオブジェクトに対戦相手の打撃を避ける動作をさせる制御に使うことができる。
この回避の動作としては、図4(b)に示すように、ゲーム装置1を前方に傾けると、オブジェクトがしゃがんでパンチを避けるように制御し、ゲーム装置1を後方に傾けると、オブジェクトがスウェーバックをしてパンチを避けるように制御し、ゲーム装置1を右に傾けると、オブジェクトの体を右に傾けてパンチを避けるように制御し、ゲーム装置1を左に傾けると、オブジェクトの体を左に傾けてパンチを避けるように制御するものである。
このような操作のために、動作制御部210は、角速度検出部205によって得られたゲーム装置1の回転行列をA(t)利用する。具体的には、先ず、次式のようにベクトルyをY軸方向の単位ベクトルとする。
y=(0,1,0) ……(式17)
そして、ゲーム開始時のゲーム装置1の回転行列をA0とし、その逆行列をA0 -1とする。そして、Y軸方向の単位ベクトルyをA(t)A0 -1で回転することで得られるベクトルy'(t)を、次のように求める。
y'(t)=A(t)A0 -1y ……(式18)
式18で算出されたベクトルy'(t)は、ゲーム装置1のY軸がゲーム開始時からどれだけ傾いたかを表しているため、ベクトルy'(t)のX成分を左右の傾きの検出に使い、ベクトルy'(t)のZ成分を前後の傾きの検出に使うことができる。
このようにして得られた傾きの情報をアナログ値としてそのままオブジェクトの制御に使うこともできる。例えば、テニスゲームにおいては、ベクトルy'(t)のX成分及びZ成分をそのままオブジェクトの前後左右の移動量に利用することができる。また、ボクシングゲームにおいても、この値に応じてオブジェクトが体を傾ける(スウェーする)角度を制御しても良い。
なお、例えば、ボクシングゲームにおいては、このような処理は用いず、ベクトルy'(t)のX成分又はZ成分があるしきい値を越えたときにパンチの回避行動を取るようにしても良い。この場合、ユーザーが回避行動をとろうとしてゲーム装置1を操作してから、実際に傾きがしきい値を越えるまでには時間がかかるため、ユーザーによるパンチ回避の操作の入力を検出するのに少し遅延が生じる。
そこで、本実施形態では、角速度ベクトルω(t)及びその単位時間あたりの変化量から得られる角加速度ベクトルα(t)を利用して、微小時間Δt後のベクトルy'(t+Δt)を予測することで遅延を解消する。そこで、先ず、微小時間Δt後にゲーム装置1が現在の向きからどれくらい回転するのかを、回転ベクトルΔrとして、次のように予測する。
Δr=ω(t)Δt+0.5×α(t)Δt2……(式19)
そして、式19で予測した微小時間Δt秒での回転ベクトルΔrを、次のように回転の大きさΔθと回転軸ベクトルaとに分解する。
Δθ=|Δr|, ……(式20)
a=Δr/Δθ ……(式21)
このようにして得られた回転角Δθと回転軸ベクトルaを使って、式17のY軸方向の単位ベクトルyを回転したものをベクトルy''として、ベクトルy''を次のようにして求める。
y''=(1−cosΔθ)(a・y)a+(cosΔθ)y+(sinΔθ)(a×y) ……(式22)
ここで、(a・y)はベクトルaとベクトルyの内積、(a×y)はベクトルaとベクトルyの外積を表している。そして、式18のベクトルyの代わりに式22で求めたベクトルy''を回転行列A(t)A0 -1で回転することで、次のように微小時間Δt後のベクトルy'(t+Δt)を予測する。
y'(t+Δt)=A(t)A0 -1y''……(式23)
この式23で得られたy'(t+Δt)をy'(t)の代わりに用いることで、パンチの回避動作の入力を検出する際の遅延を解消できる。なお、本実施形態において、微小時間Δtは0.05秒に設定されている。
上述のように、打撃動作や予備動作以外の動作についてもジャイロセンサ164によってオブジェクトを制御することによって、ユーザーはゲーム装置1を持つ手を動かすことに専念することができるため、ボタンなどの他の操作に気を取られることなく、思い通りにオブジェクトを操作することができるようになる。
(5)動作種別選択機能
さらに、打撃検出部211には、タッチパネル300などの入力部に対する入力信号の有無又は種別に応じて、打撃種類及び防御種類を変化させる機能を有している。例えば、ボクシングゲームであれば、打撃種類としては、ジャブ、ストレート、フック、ボディブロー、アッパーカット、防御種類としては頭部のカード、ボディのガードなどが考えられる。
打撃検出部211による打撃の打ち分けは、操作位置検出部201aからのタッチパネル300に対する操作信号に応じて、選択される。具体的には、画面上には、図9に示すように、右手用及び左手用にそれぞれ打撃や防御動作の種類を選択する選択領域306,307を有している。ここで、画面右側の選択領域306は、右手の打撃及び防御に対する種類が割り当てられ、画面左側の選択領域307は、左手の打撃及び防御についての種類が割り当てられている。そして、それぞれの範囲306,307には、A領域306a,307a、B領域306b,307b、及びC領域306c,307cの3つの領域があり、各領域に応じて打撃や防御の動作が異なるように設定されている。
ここで、ボクシングゲームの場合、A領域306a,307aには、ストレートを割り当て、B領域306b、307bには、ボディブローを割り当て、C領域306c、307cには、アッパーカットを割り当てることができる。すなわち、打撃操作を入力する際に、ユーザーの打撃操作を入力した側の手の指がこれらの領域のいずれかに触れていれば、その打撃操作はそこに割り当てられた打撃種類となる。また、いずれの領域にも触れていない場合にはフックの打撃動作とすることで、4種類の打撃を打ち分けられる。さらに、打撃操作が入力された時点で予備操作が小さければフックやストレートの代わりにジャブを打つようにしても良い。
また、打撃操作がなければ上記の領域を防御動作にも割り当てることができる。例えば、A領域306a,307aが押されている間は、頭部をガードするように動作させ、B領域306b,307b又はC領域306c,307cが押されている間は、ボディをガードするように動作させる。
なお、図9に示した各領域306,307の位置、形状、及び範囲は、これに限定されるものではなく、ゲームの種類に応じて種々変更可能である。また、本実施形態では、打撃種類及び防御種類の変更にタッチパネル300を利用したが、タッチスクリーンを持たないコントローラではボタンを使っても良い。
(操作信号解析方法)
上述したような本実施形態における本発明のユーザーインターフェースシステムにおいて、コントローラから入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する操作信号解析方法について以下に説明する。図10は、本実施形態に係る操作信号解析方法の概略を示すフローチャート図であり、図11は、本実施形態に係るピーク検出処理のサブルーチンを示すフローチャート図である。また、図12は、実施形態に係る打撃検出処理1のサブルーチンを示すフローチャート図であり、図13は、実施形態に係る打撃検出処理2のサブルーチンを示すフローチャート図である。
なお、本実施形態では、打撃検出処理1のサブルーチンで打撃検出法1、打撃検出処理2のサブルーチンで打撃検出法2を用いており、打撃検出法1には改善処理A−1、改善処理C−1及び改善処理D−1、打撃検出法2には改善処理A−1及び改善処理H−1を適用している。
また、打撃検出法2では打撃操作が検出されるのが一瞬の間だけというわけではなく、しばらくの間連続して検出され続けることがある。さらに、2つの検出方法を併用するため、1つの打撃操作の入力を2回検出してしまうこともある。そこで、2重にパンチが検出されるのを防ぐために、punch変数とピーク検出処理を用いて処理している。また、ピーク検出処理は改善処理D−1及び改善処理H−1のためにも用いられる。これらの処理については後で説明する。
また、本実施形態で用いられている各パラメータの値は次の通りに設定されている。先ず、打撃検出法1のしきい値Tαを3500度/秒2に、打撃検出法2のしきい値Tωを360度/秒に、改善処理C−1のしきい値T'ωを90度/秒に設定する。また、打撃検出法2の微小時間Δtを0.01秒に、改善処理A−1のTaを0.1G(Gは重力加速度の大きさ)に、改善処理D−1のλを20秒-1に、改善処理H−1の微小期間εを0.055秒に、ピーク検出処理での定数T''ωを180度/秒に設定する。なお、定数T''ωは、ゲーム装置1の回転が止まった瞬間を検出するピーク検出処理で使われている定数で、ピークとピークの間におけるゲーム装置1のY軸まわりの角速度大きさの最大値ωmaxがT''ωを越えなければ改善処理H−1を開始しないようになっている。
(1)操作信号解析方法の概要
本実施形態における、操作信号解析方法の概要について説明する。
先ず、最初のステップで、打撃検出部211は、打撃検出処理に必要な各変数に初期値を設定する(S101)。具体的には、開始時刻を変数tprevに、開始時刻におけるゲーム装置1のY軸まわりの角速度を変数ωprevに設定する(ωprev=ωy(tprev))。さらに、ピークを検出してからの経過時間であるピーク経過時間tpeekを0に設定する(tpeek=0)。さらに、ピークとピークの間でのゲーム装置1のY軸まわりの角速度の大きさの最大値を表す変数ωmaxと直近のピークの時刻におけるY軸まわりの角加速度を表す変数αpeekを0で初期化する(ωmax=0, αpeek=0)。また、開始時刻では左右どちらの打撃操作も検出していないことに設定し(punch=NONE)、コマンド待ち行列を初期化する。
変数の初期化が終わると、アプリケーション実行部202によって、仮想空間上に配置されるオブジェクトの生成及び初期状態の設定(S102)が行なわれ、メインループの処理に入る。メインループに入ると、まず仮想空間及びオブジェクトの表示情報生成ステップ(S103)が行なわれる。この処理では、表示情報生成部204が、仮想空間及びオブジェクトをLCD165に表示するための情報を生成し、LCD165と同期を取り、前回の表示情報の更新がLCD165上で完了するのを待ってから、新しく生成された表示情報をLCD165に転送する。ここで、LCD165と同期を取るため、メインループはLCD165のリフレッシュレート(例えば60Hz程度)の頻度で繰り返し実行されることになる。
次に、打撃検出部211は、角速度検出部205で算出されたゲーム装置1の運動に係る情報を読み取り、打撃検出処理に必要な変数に読み取った値を設定する(S104)。具体的には、現在の時刻をtcurとし、ゲーム装置1のY軸まわりの角速度ωy(tcur)を変数ωcurに設定する。また、ゲーム装置1にかかる加速度のZ成分を変数azに設定する。
そして、その次のステップ(S105)で、前回角速度が読み取られた時刻tprevから現在時刻tcurまでの経過時間dtを計算し(dt=tcur−tprev)、得られた経過時間dtを利用して、Y軸まわりの角加速度αcurを算出する(αcur=(ωcur−ωprev)/dt)。
さらに、ステップS105では、算出した経過時間dtを用いて、ピーク経過時間tpeekの値を更新する。具体的に、ピーク経過時間tpeekを、更新前のtpeekと経過時間dtとを加算した値(tpeek=tpeek+dt)で更新する。
また、ピーク時刻に検出されたY軸まわりの角加速度αpeekを式14の右辺のように減衰させる(αpeek=αpeek・exp(−λdt) )。
その後、打撃検出部211では、一連の打撃検出ステップ(S106〜S108)が行なわれる。これらの各処理が実行された後は、次のメインループ処理のために、現在の時刻と角速度をそれぞれ変数tprev及び変数ωprevに保存し、ωmaxの値を更新しておく(S109)。ここでωmaxの値は更新前のωmaxの値と現在のY軸まわりの角速度の大きさ|ωcur|を比較して、大きい方の値で更新される。ωmaxの値は、ピーク検出処理(S106)の中でピークが検出される度に0にリセットされるため、前回ピークが検出されてから現在に至るまでに検出されたゲーム装置1のY軸まわりの角速度の大きさの最大値を表すことになる。このステップが終わると、動作制御部210に処理が移り、動作制御ステップ(S110)が実行される。動作制御ステップでは、打撃検出部211によって生成されたパンチコマンドをコマンド待ち行列から受け取り、オブジェクトが打撃動作を開始できる状態にあれば、コマンド待ち行列からパンチコマンドを取り出し、オブジェクトに打撃動作を開始させる。
なお、動作制御ステップにおいて、動作制御部210は、オブジェクトが打撃動作の状態になければ、角速度検出部205で算出されたゲーム装置1のY軸まわりの回転角θ(tcur)の値に応じて、オブジェクトに打撃動作に関する予備動作を実行させる。さらに、動作制御ステップにおいては、ゲーム装置1の傾きの度合に応じて、オブジェクトの打撃回避の動作も制御する。
動作制御ステップまで終了すると、アプリケーション実行部202は、ゲームの進行状況を確認して(S111)、まだ試合が終了していなければ(S111における“NO”)、メインループの最初のステップ(S103)に戻り、試合終了となった場合には(S111における“YES”)、処理を終了する。
(2)ピーク検出処理
次いで、S106におけるピーク検出処理について説明する(図11)。先ず、打撃検出部211は、前回検出した角速度と今回検出した角速度とから、ゲーム装置1の回転が停止してゲーム装置1のY軸まわりの回転角がピークに達したかどうかを判断する(S201)。具体的には、前回動作制御部210が実行されたときに検出されたY軸まわりの角速度ωprevと、現時刻におけるY軸まわりの角速度ωcurとの乗算値が正か負かでピークを検出したかどうかを判断する(ωcur×ωprev≦0)。
前回検出した角速度ωprevと今回検出した角速度ωcurとの乗算値が正である場合には(S201における“NO”)、ピークを検出していないと判断して処理を終了する。一方、乗算値が0以下である場合は(S201における“YES”)、前回検出した角速度ωprevと今回検出した角速度ωcurの間で正負が逆転しているので、ピークを検出したと判断し、前回のピーク時と今回のピークとの間に検出されたY軸まわりの角速度の大きさの最大値ωmaxを確認する(S202)。
もし、ωmaxの値が定数T''ωより大きい場合には(S202における“YES”)、反動が大きくなる程激しくゲーム装置1が回転した可能性があるので、ピーク検出時刻からの経過時間tpeekやピーク時刻におけるY軸まわりの角加速度αpeekを設定した後(S203)、ステップS204へ進む。これにより改善処理H−1と改善処理D−1の適用が開始される。一方、ωmaxの値が定数T''ω以下である場合には、反動が大きくなる程ゲーム装置1が回転していないので、ピーク検出時刻からの経過時間tpeekやピーク時刻におけるY軸まわりの角加速度αpeekを設定することなく、次のステップS204へ進む。
なお、ステップS203における経過時間tpeekを設定する処理では、式15によるピーク到達の推定時刻tpが用いられている。すなわち、ピークを検出したのが現在時刻であっても、実際にピークを越えたのは現在時刻より少し前の時刻であり、その時刻を推定して、その推定時刻から現在時刻までの経過時間をtpeekに設定する。
ステップS204では、回転が停止する直前でゲーム装置1が左(反時計周り)に回転していたかどうかを判断する(S204)。ここで、前回検出した角速度ωprevが0よりも大きい場合には(S204における“YES”)、前回のピーク検出から左(反時計回り)に回転していると判断する。ゲーム装置1が左(反時計回り)に回転しているということは右手でパンチを繰り出す操作をしていることになる。
そこで、打撃検出部211は、右手による打撃操作が検出されているか(punch ==RIGHT)を判断する(S206)。右手による打撃操作が検出されている場合には(S206における“YES”)、打撃操作が終了したとして変数punchをリセット(punch = NONE)する(S207)。右手による打撃操作が検出されていない場合には(S206における“NO”)変数punchをリセットすることなくステップS208に進む。
一方、前回検出した角速度ωprevが0以下である場合には(S204における“NO”)、前回のピーク検出から右(時計回り)に回転していると判断する。ゲーム装置1が右(時計回り)に回転しているということは左手でパンチを繰り出す操作をしていることになる。
そこで、打撃検出部211は、左手による打撃操作が検出されているか(punch == LEFT)を判断する(S205)。左手による打撃操作が検出されている場合には(S205における“YES”)、打撃操作が終了したとして変数punchをリセット(punch = NONE)する(S207)。一方、左手による打撃操作が検出されていない場合には(S205における“NO”)、変数punchをリセットすることなくステップS208に進む。
ステップS208では、ピークを検出したので、ピークとピークの間に検出されるY軸まわりの角速度の大きさの最大値を表す変数ωmaxをリセットして処理を終了する。
(3)打撃検出処理1
次いで、S107における打撃検出処理1について説明する(図12)。この処理は、打撃検出法1に、改善処理A−1、改善処理C−1及び改善処理D−1を組み合わせて打撃動作を検出するものである。
先ず、打撃検出部211は、図12に示すように、打撃検出法1に改善処理A−1の条件を付加して、検出された角加速度が予備操作によるものかどうかを判断する。具体的には、ステップS104において取得した加速度のZ成分azがしきい値−Taよりも大きいかを判断する(S301)。ここで、加速度のZ成分azがしきい値−Taよりも大きい場合には(S301における“YES”)、検出された角加速度は予備操作によるものと判断してパンチ検出処理1を終了する。一方、加速度のZ成分azがしきい値−Ta以下の場合には(S301における“NO”)、検出された角加速度は打撃操作によるものと判断する。
次いで、打撃検出部211では、改善処理C−1及び改善処理D−1の条件を付加して、S104で算出したゲーム装置1のY軸まわりの角速度ωcurと、及びS105で算出したゲーム装置1のY軸まわりの角加速度αcurとの正負が同じで、かつ、Y軸まわりの角速度ωcurの大きさがあるしきい値T'ωを越えるとともに、角加速度αcurがしきい値Tα及びステップS105で時間とともに減衰させたピーク時刻での角加速度αpeekを越えているかを判断する(S302及びS303)。
ここでは、先ず、角加速度αcur及び角速度ωcurが互いに正で、かつ、角加速度αcurがしきい値Tα及びピーク時刻での角加速度αpeekを越えているか、角速度ωcurがしきい値T'ωを越えているか否かを判断する(S302)。全ての条件を満たす場合には(S302における“YES”)、打撃操作が入力されたと判断してステップS304へ進む。
一方、S302の条件を満たさない場合には(S302における“NO”)、次に、角加速度αcur及び角速度ωcurが互いに負で、かつ、角加速度αcurがしきい値−Tα及びピーク時刻での角加速度αpeekより小さいか、角速度ωcurがしきい値−T'ωより小さいか否かを判断する(S303)。ここで、全ての条件を満たす場合には(S303における“YES”)、打撃操作が入力されたと判断してステップS306へ進む。一方、S303の条件に該当しない場合には(S303における“NO”)、打撃操作ではないと判断して処理を終了する。
ステップS304及びステップS306では、同じ打撃操作を打撃検出処理1と打撃検出処理2で2重に検出しないようにする処理が行われる。具体的にステップS304では、punch変数を調べて、右手による打撃操作がまだ検出されていない(punch!=RIGHT)かを判断する。ここで、右手による打撃操作がまだ検出されていない(punch!=RIGHT)場合(S304における“YES”)、右手で打撃を行うと決定し、ステップS305においてコマンド待ち行列に“右手でパンチ”コマンドを追加するとともに、punch変数をRIGHTに設定した後、打撃検出法1を終了する。一方、ステップS304の条件に該当しない場合には、(S304における“NO”)、そのまま打撃検出法1を終了する。
ステップS306でも、同じ打撃操作を打撃検出処理1と打撃検出処理2で2重に検出しないようにする処理が行われる。具体的にはpunch変数を調べて、左手による打撃動作がまだ検出されていない(punch!=LEFT)かを判断する(S306)。左手による打撃操作がまだ検出されていない(punch!=LIGHT)場合(S306における“YES”)、左手でパンチを行うと決定し、ステップS307においてコマンド待ち行列に“左手でパンチ”コマンドを追加するとともに、punch変数をLEFTに設定した後に打撃検出法1を終了する。一方、ステップS306の条件に該当しない場合には、(S306における“NO”)、そのまま打撃検出法1を終了する。
なお、上記ステップS305及びS307において、パンチコマンドをコマンド待ち行列に追加する際、制御装置本体100に配置されたタッチパネル300に対する入力信号の有無又は種別に応じて打撃種類の選択が行なわれ、選択に応じたパンチコマンドがコマンド待ち行列に追加されるものとする。
(4)打撃検出処理2
次いで、S108における打撃検出法2について説明する(図13)。この処理は、打撃検出法2に改善処理A−1及び改善処理H−1を組み合わせてパンチを検出するものである。先ず、打撃検出部211は、ステップS401において、改善処理H−1と改善処理A−1を適用する。具体的には、ピーク検出処理でピークが検出されてからの経過時間tpeekが所定の微小期間εを越えているかどうか、加速度のZ成分azがしきい値−Ta以下かどうかを確認し、打撃検出処理を行なうかどうかを判断する(S401)。もしいずれかの条件を満たさなければ(S401における“NO”)、反動を誤検出しないように打撃検出処理を終了する。
次いで、打撃検出部211は、微小時間Δt後の角速度の予測値ω'を算出するが、その際に、前回ピークが検出されてから初めての打撃検出処理なのかどうかを判断する(S402)。もし、ピーク経過時間tpeekと微小期間εの差分がステップS105で算出した経過時間dtより大きければ(S402における“NO”)、式13を用いて予測値ω'y(tcur+Δt)を算出し、変数ω'に設定する(S403)。そうでなければ(S402における“YES”)、ピーク検出後の初めての打撃検出処理になるため、式16を用いて予測値ω'y(tpeek+ε+Δt)を算出し、変数ω'に設定する(S404)。
そして、算出したω'の値がしきい値Tωより大きく、かつ、右手による打撃動作がまだ検出されていない(punch!=RIGHT)かを判断する(S405)。ステップS405の条件を満たす場合には(S405における“YES”)、右手でパンチを行うと決定し、コマンド待ち行列に“右手でパンチ”コマンドを追加するとともに、punch変数をRIGHTに設定した後(S406)、打撃検出処理2を終了する。ステップS405の条件のいずれかを満たさない場合には、(S405における“NO”)、算出したω'の値がしきい値−Tωより小さく、かつ、左手による打撃動作がまだ検出されていない(punch!=LEFT)かを判断する(S407)。
ステップS407の条件を満たす場合には(S407における“YES”)、左手でパンチを行うと決定し、コマンド待ち行列に“左手でパンチ”コマンドを追加するとともに、
punch変数をLEFTに設定した後(S408)、打撃検出法2を終了する。ステップS407の条件のいずれかを満たさない場合には、(S407における“NO”)、打撃検出無しとして処理を終了する。
なお、上記ステップS406及びS408において、パンチコマンドをコマンド待ち行列に追加する際、制御装置本体100に配置されたタッチパネル300に対する入力信号の有無又は種別に応じて打撃種類の選択が行なわれ、選択に応じたパンチコマンドがコマンド待ち行列に追加されるものとする。
(操作信号解析プログラム)
上述した本実施形態に係るユーザーインターフェースシステム、及び操作信号解析方法は、所定の言語で記述された操作信号解析プログラムをコンピュータ71〜74上で実行することにより実現することができる。すなわち、図14に示すように、このプログラムを携帯情報端末(PDA)に携帯電話・通信機能を統合した携帯端末機71、クライアント側が使用するパーソナルコンピュータ72、ネットワーク上に配置されてクライアント側にデータや機能を提供するサーバー装置73、又はゲーム装置などの専用装置74、又はICチップ86にインストールし、CPU上で実行することにより、上述した各機能を有するユーザーインターフェースシステムを容易に構築することができ、及び操作信号解析方法を実行することができる。
すなわち、この操作信号解析プログラムをユーザーが両手で持って操作を行なうことが可能な本体を持つゲーム装置1にインストールすることで、ゲーム装置1に、ジャイロセンサ164及び加速度センサ169等から入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する打撃検出ステップを実行させることができ、打撃検出ステップが、ジャイロセンサ164によって連続的に検知されるゲーム装置1の角速度の一連の値を用いて、ユーザーがゲーム装置1を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るゲーム装置1の回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することができる。
また、打撃検出ステップは、ジャイロセンサ164によって検出されるゲーム装置1の角速度を用いることによって、打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現することができる。また、本実施形態では、打撃検出法のひとつとして、ジャイロセンサ164によって検出されるY軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値をしきい値と比較する方法を用いている。
また、ゲーム装置1はさらに加速度センサ169を内部に備え、打撃検出ステップが、加速度センサ169により検出された加速度を用いることで、ゲーム装置1が回転運動をした際にゲーム装置1が前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合にはゲーム装置1の回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現している。
また、打撃検出ステップは、ユーザーの打撃操作によるゲーム装置1の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の特徴の検出を制限することにより、ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する。
ユーザーによる連続した打撃操作の入力を正確に検出するために、打撃検出ステップは2つの打撃検出法を備え、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法にすることで、連続した打撃操作の検出を可能にしている。また、操作信号解析プログラムはさらに動作制御ステップを含み、ゲーム装置1から入力される情報を元に算出されるゲーム装置1の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能も実現している。また、ゲーム装置1はゲーム装置1本体に配置された入力ステップをさらに備え、打撃検出ステップにおいて、入力ステップへの入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現している。
そして、このプログラムは、例えば、通信回線を通じて配布することが可能であり、またスタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。そして、このようなプログラムは、パーソナルコンピュータで読み取り可能な記録媒体81〜85に記録することができる。具体的には、図14に示すような、フレキシブルディスク83やカセットテープ82等の磁気記録媒体、若しくはCD−ROMやDVD−ROM等の光ディスク81の他、USBメモリ85やメモリカード84など、種々の記録媒体に記録することができる。
(作用・効果)
このような本実施形態によれば、ゲーム装置1内にジャイロセンサ164を備え、このジャイロセンサ164によって、ゲーム装置1を持つユーザーの手の動きを検出し、ユーザーの手の動きに応じて、左右の打撃操作を認識しているので、例えば、ボクシングゲームなど左右の拳で打撃を行うゲームにおいても直感的にオブジェクトを操作でき、ユーザーはより良いゲーム体験を得ることができる。さらに本実施形態では、ジャイロセンサ164によって検出される角速度の向きを用いて、打撃操作の左右を区別しているので、単一の制御装置があれば良く、例えば、スマートフォンやタブレット端末などの広く普及している汎用性のある操作デバイスを利用でき、コスト全体を安価にすることができる。
また、本実施形態において、動作制御部210が、ゲーム装置1の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させているので、打撃操作に対する反応速度を上げ、ゲームの操作感を向上させることができる。
すなわち、本実施形態では、ユーザーが打撃操作を入力する際にゲーム装置1を持つ手を少し手前に引くという動作は自然であり、その動作がオブジェクトによるパンチの予備動作の結びついているため、オブジェクトはユーザーが実際に打撃操作を入力する前にパンチを放つ準備を自然にすることができる。その結果、打撃操作が入力されてから実際にオブジェクトがパンチを放つまでの時間が短縮され、ユーザーはより良いゲーム体験を得ることができる。
このような、ユーザーの手の動きを検出してオブジェクトを制御する方法では、ユーザーの意図していないタイミングで打撃を検出してしまうなどの誤検出が生じる可能性があるが、本実施形態によれば、このような誤検出も防ぐことが可能となる。
先ず、本実施形態において、打撃検出部211は、検知された加速度の向きによって、打撃操作の検出が実際にユーザーの打撃操作によるものなのか反対側の手による予備操作によるものなのかを判断して、予備操作のタイミングで打撃操作を誤検出することを防いでいる。なお、ゲームアプリケーションの要件によって、予備操作が完了するまで打撃操作を行なうことができないという条件を付加できるのであれば、加速度センサ169を用いなくても、予備操作が完了するまでは制御装置の回転が予備操作によるものと判断することもできる。しかし、ボクシングゲームにおいてはジャブのような予備操作なしの打撃操作もあるため、加速度センサ169を用いる方が望ましい。
さらに、打撃検出部211は、ユーザーの打撃操作によるゲーム装置1の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃操作の検出を制限しているので、打撃操作を停止させた時の反動を打撃操作として誤って検出するのを防止している。
一方で、このように打撃操作の検出を制限することによって、コンビネーションパンチのような連続した打撃操作の検出が妨げられるという問題が発生するが、本実施形態においては、打撃検出部211において複数の打撃検出法を用い、そのうちの1つを打撃操作が開始された瞬間の特徴を検出する方法とし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法とすることで、コンビネーションパンチのような連続した打撃操作を、打撃操作を停止させたときの反動と区別して検出している。
さらに、本実施形態では、ジャイロセンサ164の角速度検出とは別の検出手段であるタッチパネル300のタッチ位置によって、ジャブ、ストレート、フックなどの打撃種類(強弱)や、ガードなど防御種類を選択することで、ユーザーの手の動きで打撃操作を入力する方法では実現が難しい打撃種類の選択や防御動作の入力を補っている。
[変更例]
なお、上述した実施形態の説明は、本発明の一例である。このため、本発明は上述した実施形態に限定されることなく、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更や、それぞれの構成を組み合わせることが可能であることはもちろんである。なお、以下に変更例を示すが、本発明はこれらの変更例にも限定されることはない。特に上記の打撃検出法1や打撃検出法2、及びこれらの打撃検出法に各種の改善方法を組み合わせた方法は、ジャイロセンサ164を持つゲーム装置1から入力された一連の角速度の値を用いて、ユーザーが前記ゲーム装置1を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記ゲーム装置1の回転運動に関する何らかの特徴を検出し、ユーザーから打撃操作の入力があったことを判断する機能を実現するために用いることが可能であれば、他の方法に置換可能である。
(1)打撃検出法について
上述した実施形態では、打撃操作の検出において、角加速度を用いた打撃検出法1と、角速度と角加速度との両方を用いた打撃検出法2とを用いたが、例えば、他の方法を用いて、ユーザーによる打撃操作を検出してもよい。以下に、他の打撃検出法について説明する。
(A)打撃検出法3
この打撃検出法3は、角速度のみを用いてユーザーによる打撃操作の入力があったことを検出するものである。具体的に、この打撃検出法3とは、Y軸まわりの回転の角速度ωy(t)の大きさが、あるしきい値Tωを越えたときにパンチを検出するものである。この方法を用いることで、しきい値Tωの値をある程度大きく取れば、誤検出が少なくなるため実装が容易になるが、ユーザーが打撃操作を開始してから実際に打撃操作が検出されるまでに時間がかかるという欠点もある。
(B)打撃検出法4
打撃検出法4としては、上述した打撃検出法2を拡張し、過去M回分のデータを使って微小時間Δt後の角速度を予測するものである。具体的に、上述した打撃検出法2は、過去2回分のデータを使って角速度ωy(t)の時間変化を直線で近似し、微小時間Δt後の角速度を予測する方法とも言えることから、この打撃検出法4では、さらに過去M回分のデータを使い、直線ではなくN次曲線を使って角速度の変化を予測することで精度を上げる。ここで、N次曲線は最小2乗法で求めることができるが、オーバーフィッティングを防ぐためにN+1<M である必要があり、その値はN=2、M=4又は5程度が好ましい。
また、この打撃検出法4では、微小時間Δt後の予測値を得るときに高次の項の影響が小さくなるように、最小二乗法で求めるN次曲線は、現在の時刻のまわりで展開させる。
すなわち、経過時間Δt後の角速度ω'y(t+Δt)が以下の形式を持つと仮定する。
ω'y(t+Δt) = a0 + a1×Δt + ... + aN×ΔtN ……(式24)
そして最小二乗法でパラメータa0, a1, ..., aNの値を決定し、得られたω'y(t+Δt)の値の大きさがしきい値Tωを越えたときにパンチを検出することにする。
この際、最小2乗法で得られた曲線と、過去M回分の値の誤差の2乗和の値を計算し、この値があらかじめ定められた許容2乗誤差Eと比較するものとする。そして、算出した誤差の2乗和が許容2乗誤差Eよりも大きい場合には、現在時刻のまわりの角速度の変化をN次曲線で近似させるには適さないため、NとMの値を小さくして、再度、最小2乗法をやり直し、誤差の2乗和が許容2乗誤差Eより小さくなるまで繰り返す。そして、最終的にNが1になってしまった場合には、打撃検出法2に切り替えてパンチを検出する。なお、許容誤差Eの値はしきい値Tωに対する割合(5%〜10%程度)で設定するのが良い。
(2)他のタイミングでの誤検出改善処理
次いで、上述した打撃検出法1及び打撃検出法2における他の誤検出改善処理、及び変更例で説明した打撃検出法3及び打撃検出法4についての誤検出改善処理について説明する。
(a)一方の手で打撃動作を1回行った場合について
・A時点について
予備動作を開始するA時点では、ユーザーがゲーム装置1を持つ手を引いたときの角加速度αy(t)を誤って検出してしまうことが生じる。この誤検出によって、ユーザーが意図していた手と反対の手で打撃を行うことになる。特に、この誤検出は上記の打撃検出法1、打撃検出法2、打撃検出法4のいずれかを用いる際に発生する可能性がある。この場合の改善方法としては、以下の改善方法を用いる。
(改善処理A−2)
改善処理A−2は、しきい値Tαを大きくするものである。具体的には、打撃検出法1を使っている場合において、しきい値Tαを大きくすることで誤検出を防止する。なお、この場合にしきい値Tαは、Dの時点で検出すべき打撃操作を検出できる程度の大きさに設定する。しかし、ゲームをプレイしているうちにユーザーは興奮して、ゲーム装置1を持つ手の動きも激しくなりがちになるので、加速度を用いた改善処理A−1を利用できるのであれば、その方が良い。
(改善処理A−3)
改善処理A−3は、しきい値Tωを大きくするものである。具体的には、打撃検出法2ないし4のいずれかを使っている場合において、しきい値Tωの値を大きくすることで誤検出を防止する。この場合もしきい値Tωは、Dの時点で検出すべき打撃動作を検出できる程度の大きさに設定する。この場合も改善処理A−1を利用できるのであれば、その方が良い。
(改善処理A−4)
打撃検出法2若しくは4を使っている場合の別の改善処理としては、微小時間Δtの値を小さくして、角加速度αy(t)の影響を小さくすることもできる。但し、微小時間Δtの値を小さくすると、検出の反応速度は低下する。
(改善処理A−5)
また、他の改善処理としては、予備操作が完了していない状態ではでは、角加速度αy(t)を検出しないように処理することもできる。すなわち、Y軸まわりの回転角θy(t)の大きさが一定のしきい値Tθより大きく、かつ、Y軸まわりの角速度ωy(t)と、Y軸まわりの回転角θy(t)との正負が異なるときだけ打撃動作の検出を行う。この方法は、予備操作を必ず行うとしても構わないテニスゲームなどには有効であるが、予備動作なしの打撃があるボクシングゲームには適用できない。
(改善処理A−6)
改善処理A−6では、予備操作が完了していない状態では、しきい値Tαの値を大きく設定するものである。この処理により、改善処理A−2と同様に誤検出を防ぎ、予備操作中に限定することで、Dの時点での打撃動作を検出することができる。また、ボクシングゲームなどにも適用可能であるが、予備動作なしのジャブのような打撃の入力が難しくなる。
・B時点について
Bの時点では、予備操作の速度の大きさが最大になり、打撃検出法2ないし4のいずれかを使っている場合に誤検出が発生する可能性がある。
(改善処理B−1)
改善処理B−1は、しきい値Tωの値を大きく設定するものである。ただし、この値を大きくしすぎるとEの時点での打撃操作が検出できず、打撃操作の入力のために、ゲーム装置1を大きく動かさなくてはいけなくなることになるため、しきい値TωをEの時点での打撃操作が検出できる値とする。
(改善処理B−2)
改善処理B−2は、改善処理A−5と同様に、予備操作が完了していない状態では、打撃操作の入力を検出しない処理である。
(改善処理B−3)
この改善処理B−3は、改善処理A−6と同様に予備操作が完了していない状態の時だけ、しきい値Tωの値を大きくするものである。これにより、改善処理B−1と同様に誤検出を防ぎ、予備操作中に限定することで、Eの時点での打撃操作を検出することができる。
・C時点について
Cの時点では、予備操作が止まったために、角加速度αy(t)が大きくなり、打撃検出法2及び4を利用する場合も、C時点で誤検出が発生する場合がある。
(改善処理C−2)
打撃検出法2若しくは4を利用していて、Cの時点で誤検出が起きるのは、微小時間Δtの値が大きすぎるためである。そこで、改善処理C−2は、微小時間Δtの値を小さくすることでC時点での誤検出を防止する。
・F時点について
Fの時点では、C時点での誤検出と同様に、打撃操作を止めたときの角加速度αy(t)が検出される。特に、ここでは、ユーザーが意図していた手とは反対の手の打撃操作と判定されることがある。ここでの誤検出の改善処理としては、上記改善処理C−1又はC−2を用いるものとする。
・G時点について
Gの時点では、ゲーム装置1を押し出した右手を急に止めたときの反動で手を引き戻したときに生じる角加速度αy(t)が検出される。
(改善処理G−1)
改善処理G−1は、一度打撃操作を検出したら一定時間パンチを検出しないようにするものである。具体的には、D時点で打撃操作を検出してから、所定の時間間隔δの間は打撃操作を検出しないようにする。本実施形態のボクシングゲームにおいては、オブジェクトの打撃動作は極めて速く、ユーザーが連続して打撃操作を入力できるように、時間間隔δを大きく設定することはできないが、確実に誤検出を防ぐためには、時間間隔δの値を0.2秒程度の長さに設定するのが良い。
なお、ゲームアプリケーションの要件によっては、一度打撃操作を入力したら、しばらくの間は打撃操作を行う必要がないこともある。その場合は時間間隔δの値を大きく取ることも可能である。例えば、テニスゲームの場合、一度ラケットを振ったら次の1秒程度はラケットを振る必要がないので、時間間隔δを1秒程度の大きさにすることができる。
・H時点について
H時点は、打撃検出法2だけでなく、打撃検出法3及び4でも誤検出が生じる。しかし、打撃検出法3は打撃検出法2における微小時間Δtをゼロにした特殊なケースであり、打撃検出法4は打撃検出法2をさらに拡張した方法であるので、改善処理H−1をこれらの打撃検出法にも適用できる。
(改善処理H−2)
また、他の改善処理としては、Y軸まわりの回転角θy(t)がピークに達してから打撃検出法2で打撃操作を検出しても、所定の時間内にY軸まわりの回転角θy(t)が十分大きく変化するまでは、打撃操作として処理しないものである。例えば、図6のK時点で打撃操作が検出されても、所定の時間内にY軸まわりの回転角θy(t)の値がθy=0のラインを横切るL時点までは検出を保留するような処理を行う。なお、この改善処理も打撃検出法3及び4に用いることもできる。この改善処理では片手で2回続けて打撃操作を行った場合の図8のSにおいて誤検出をしてしまうため、上述した実施形態に適用するのは難しいが、ゲームアプリケーションの要件によっては十分実用可能な改善方法となり得る。
(3)ユーザー環境に応じたしきい値の変更
これまでに述べた打撃検出法や改善処理において、様々なしきい値を用いてきた。これらは所定の値を持ち、改善処理D−1や改善処理A−6、B−3においてはしきい値を状況に応じて変更させていた。しかし、これらのしきい値はユーザーの環境に応じて変化させても良い。つまり、ユーザーの筋力やコントローラの重さなどによって、しきい値の値を変更することで、ユーザーがより楽に打撃操作を成功させることができるようになる。これらの変更はユーザー設定により直接行なっても良いし、ユーザーに打撃操作を何回か行なってもらい、適切なしきい値を測定するという方法を取ることもできる。
(4)以上の打撃検出法と改善処理を1つに統合した打撃検出の識別関数と機械学習について、これまで議論してきた打撃検出法と改善処理を一般化すれば、ユーザーによる打撃操作の入力があったかどうかは、Y軸まわりの角速度ωy(t)の変化のパターン(波形)とゲーム装置1の加速度のZ成分とを解析することで識別できる。例えば、直近に検出された10回分の角速度の値と加速度のZ成分の値をニューラルネットワーク等でパターン解析すれば、ニューラルネットワークを用いた識別関数を打撃検出法として用いることができる。しかし、この方法だと多層のネットワークが必要で学習に時間がかかってしまいあまり実用的ではない。そこで、直近に検出された10回分のデータをそのまま使うのではなく、いくつかの特徴を抽出する必要がある。上記の打撃検出法1及び2,及び改善処理A−1,C−1,D−1,H−1などを考慮すると、特徴としては、現在時刻tでの角速度ωy(t)及び角加速度αy(t)、ゲーム装置1の加速度のZ成分az、式15で推定されるY軸まわりの回転角がピークに逹した時刻tpにおける角加速度αy(tp)、及び時刻tpからの経過時間tpeekと時刻tpにおける角加速度αy(tp)を掛けた値(tpeek・αy(tp))、などがあれば良い。tpeekとαy(tp)を掛けた値を特徴として使うのは、式14の右辺によるαy(tp)の減衰の計算を
αy(tp)・exp(−λtpeek) 〜αy(tp) −λtpeek・αy(tp) ……(式25)
で近似するためである。また我々の経験では、回前に検出された加速度のZ成分も特徴に追加することでより良い識別関数を作ることができる。
また、ここで上げた特徴の他にもゲームアプリケーション固有の情報が追加されても良い。例えば、上述したボクシングゲームの実施例の場合、タッチスクリーンによって打撃種別の選択が行なわれたら、そのすぐ後に打撃操作の入力があることが予測できるので、現在選択されている打撃の種類、及び前回打撃種別の選択が行なわれてからの経過時間などが特徴として考えられる。しかし、識別関数を機械学習させるのが困難になるので、むやみに特徴を増やすのは良くない。
上述したような特徴が識別関数の入力となるが、出力は、右手による打撃操作があったかどうかと、左手による打撃操作があったかどうかの、2つのブーリアン値となる。
ここで、識別関数をこれまでの議論を元にプログラミングしても良いが、ニューラルネットワーク等を用いて機械学習によって推定することもできる。また、機械学習によって、前述したようなユーザー環境に応じたしきい値の変更を行なったり、ユーザー毎の癖やゲームアプリケーションを実行しているゲーム装置の差異などを吸収したりできる可能性がある。例えば、ユーザーの筋力やゲーム装置の重さや大きさなどによって、打撃検出法1におけるしきい値Tαや打撃検出法2におけるしきい値Tω、及び改善処理H−1の微小期間εを変更した方がより正確に打撃操作を検出できるだろうし、加速度センサが配置された位置に応じて、特徴の1つであるの加速度のZ成分azと、別の特徴である角加速度αy(t)の重みを変更することによって、改善処理A−1と同様の処理をより正確に行なうことができると期待できる。
ユーザーの環境毎に機械学習を行なうには、ユーザーに指定のタイミングで決められた打撃操作を行なってもらう必要があるが、それにはゲームアプリケーション内で、本来のゲームプレイとは違う、ミニゲームをプレイしてもらうのが良い。例えば、リズムに合わせてユーザーに打撃操作を行なってもらうようなゲームで、打撃のタイミングや打撃種類及び左右の区別等を画面上を流れるマーカーでユーザーに指示し、ユーザーはマーカーが決められたラインに到達するタイミングでマーカーの色や形、及びマーカーの場所に応じて決められた打撃操作を行なう。
上述のようなミニゲームで機械学習の教師信号を得ることができるが、この教師信号を用いて識別関数を学習する際にも工夫が必要である。例えば、改善処理H−1について考えてみると、ピークが検出されてからのごく短い期間では打撃操作の後の反動と、コンビネーションパンチの操作の入力との区別が困難であったため、ユーザーが意図していたタイミングよりも少し遅れたタイミングで打撃を検出しなければならない。また、ユーザーは機械のように正確に指定のタイミングで打撃操作を入力できるわけでもない。そこで、ミニゲームによって指示されたタイミングで打撃操作があったとするのではなく、指示されたタイミングの近傍で、ゲーム装置1のY軸まわりの角加速度αy(t)の単位時間あたりの変化量が最大になった時刻を打撃操作の入力が開始された時刻とし、その時刻から角加速度αy(t)の向きが反対になる時刻、つまり角速度の大きさが最大値に逹する時刻までの間を打撃操作期間とし、教師信号は、打撃操作期間の間中で打撃操作を検出しているとする。そして、このようにして得られた教師信号を元に学習を行なう際は、打撃操作期間以外でのデータに重みをつけ、必ずしも打撃操作期間の全てのデータで打撃操作を検出しなくても良いようにする。
このような機械学習によって、ユーザー毎の環境の違いを吸収し、より正確な打撃操作の検出が出来るようになるメリットがあるが、教師信号を得るためのミニゲームを用意する必要があり、また教師信号が得られたとしてもニューラルネットワークの学習に時間がかかるという課題もある。我々の経験では、5ユニットの中間層を1層だけ持つニューラルネットワークを用いて十分な性能を持つ識別関数を得ることができたが、学習には約4600個の教師信号(パンチ63回分)を使って約5千回のバッチ学習が必要であった。
また、上述した実施形態では、表示装置、演算処理装置、及びコントローラが一体になったスマートフォンやタブレット端末などの広く普及したデバイスを用いた場合を例に説明しているが、本発明は、表示装置、演算処理装置、及びコントローラが一体であることに限定されるものではなく、コントローラ、演算処理装置、及び表示装置が別々になっていてもよい。この場合では、例えば、スマートフォン等をコントローラ、スマートフォンと無線通信(Bluetooth(登録商標)など)接続が可能な汎用コンピュータやゲーム機器を演算処理装置、及び演算処理装置に接続可能なテレビ機器を表示装置として用いることもできる。この場合には、大きな画面上に表示されるオブジェクトを操作することができる。
さらに、例えば、スマートフォン等をコントローラ、及びスマートフォンと無線通信(Bluetooth(登録商標)など)接続が可能なロボットなどの玩具を、操作の対象となるオブジェクトとして用いることもできる。この場合には、オブジェクトはロボット玩具などの駆動装置となり、動作制御部210はこの駆動装置に対して制御信号を送信することになる。
また、本発明において、オブジェクトが必ずしも実空間若しくは仮想空間上に存在する必要もない。即ち、演算処理装置がコントローラからの入力を元に、仮想的なオブジェクトが打撃動作を行なったというシミュレーションを行ない、その結果のみを出力するようなアプリケーションにも本発明を適用することが可能である。例えば、ユーザーが打撃操作の入力を行なったことで、画面上には表示されていない仮想的なオブジェクトが打撃動作を行なったとし、画面上に表示されている別のオブジェクトが破壊されるようなゲームアプリケーションが考えられる。別の例としては、ユーザーがリズムに合わせて打撃操作を行ない、その結果によって画面上の表示を変更したり、効果音を出力するようなゲームアプリケーションが考えられる。この場合、仮想的なオブジェクトとは太鼓のバチを持つ演奏者のようなものである。
1…ゲーム装置
71…携帯端末機
71〜74…コンピュータ
72…パーソナルコンピュータ
73…サーバー装置
74…専用装置
81…光ディスク
81〜85…記録媒体
82…カセットテープ
83…フレキシブルディスク
84…メモリカード
85…USBメモリ
86…ICチップ
100…制御装置本体
100…本体
101…アンテナ
102…デュプレクサ
103…シンセサイザ
110…低ノイズアンプ
111…ミキサ
112…IFアンプ
113…直交ミキサ
114…コンバータ
115…復調器
116…チャネルデコーダ
117…音声デコーダ
118…コンバータ
119…アンプ
120…スピーカ
130…パワーアンプ
131…ミキサ
132…IFアンプ
133…直交ミキサ
134…コンバータ
135…変調器
136…チャネルエンコーダ
137…音声エンコーダ
138…コンバータ
139…アンプ
140…マイク
150…タイムベース
151…EEPROM
152…RAM
152,EEPROM151…RAM
153…ROM
164…ジャイロセンサ
165…ディスプレイ
165…液晶ディスプレイ
165…LCD
166…操作ボタン
167…LED
168…タッチセンサ
169…加速度センサ
171…電源系電池
172…電源
173…コンバータ
174…バイブレータ
200…CPU
201…操作信号取得部
201a…操作位置検出部
202…アプリケーション実行部
204…表示情報生成部
204a…3D構成部
204b…2D構成部
204c…GUI構成部
205…角速度検出部
206…操作デバイス
210…動作制御部
211…打撃検出部
300…タッチパネル
304,305…パワーゲージ
306,307…選択領域
306a,307a…A領域
306b,307b…B領域
306c,307c…C領域
本発明は、上述したようなユーザーインターフェースシステム、即ち、コントローラ及びコントローラから入力される情報等を処理する演算装置を備え、演算処理装置若しくは演算処理装置で実行されるソフトウェアがコントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステム、であって、上記課題を解決するために、前記コントローラは、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、前記打撃検出部は前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、以下の特徴を持つ。
1.前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
2.前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
3.前記打撃検出部が、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
a)前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラが前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
b)前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
4.前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
また、他の発明は、コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、以下の特徴を持つ。
1.前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
2.前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
3.前記打撃検出法として、ニューラルネットワーク等による機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
4.前記打撃検出部が、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
上記発明では、前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のa),b)いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことが好ましい。
a)前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のZ軸方向の値。
b)前記コントローラのY軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでZ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Y軸とは、前記打撃操作による前記コントローラの回転運動の自然な回転軸とみなせる所定の軸とする。
(4)以上の打撃検出法と改善処理を1つに統合した打撃検出の識別関数と機械学習について
これまで議論してきた打撃検出法と改善処理を一般化すれば、ユーザーによる打撃操作の入力があったかどうかは、Y軸まわりの角速度ωy(t)の変化のパターン(波形)とゲーム装置1の加速度のZ成分とを解析することで識別できる。例えば、直近に検出された10回分の角速度の値と加速度のZ成分の値をニューラルネットワーク等でパターン解析すれば、ニューラルネットワークを用いた識別関数を打撃検出法として用いることができる。しかし、この方法だと多層のネットワークが必要で学習に時間がかかってしまいあまり実用的ではない。そこで、直近に検出された10回分のデータをそのまま使うのではなく、いくつかの特徴を抽出する必要がある。上記の打撃検出法1及び2,及び改善処理A−1,C−1,D−1,H−1などを考慮すると、特徴としては、現在時刻tでの角速度ωy(t)及び角加速度αy(t)、ゲーム装置1の加速度のZ成分az、式15で推定されるY軸まわりの回転角がピークに逹した時刻tpにおける角加速度αy(tp)、及び時刻tpからの経過時間tpeekと時刻tpにおける角加速度αy(tp)を掛けた値(tpeek・αy(tp))、などがあれば良い。tpeekとαy(tp)を掛けた値を特徴として使うのは、式14の右辺によるαy(tp)の減衰の計算を
αy(tp)・exp(−λtpeek) 〜αy(tp) −λtpeek・αy(tp) ……(式25)
で近似するためである。また我々の経験では、回前に検出された加速度のZ成分も特徴に追加することでより良い識別関数を作ることができる。

Claims (24)

  1. コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
    前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、
    前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
    前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、
    前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
    ことを特徴とするユーザーインターフェースシステム。
  2. 前記打撃検出部が、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を備える
    ことを特徴とする請求項1に記載のユーザーインターフェースシステム。
  3. 前記打撃検出法のひとつとして、
    前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
    ことを特徴とする請求項1又は2に記載のユーザーインターフェースシステム。
  4. 前記コントローラがさらに加速度センサを内部に備え、
    前記打撃検出部が、前記加速度センサにより検出された加速度を用いることで、前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を有する
    ことを特徴とする請求項1ないし3のいずれかに記載のユーザーインターフェースシステム。
  5. ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
    ことを特徴とする請求項1ないし4のいずれかに記載のユーザーインターフェースシステム。
  6. ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出部は少なくとも2つの打撃検出法を備え、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項4又は5に記載のユーザーインターフェースシステム。
  7. 前記ユーザーインターフェースシステムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくは予備動作を実行させるための制御信号を送信する機能を持つ
    ことを特徴とする請求項1ないし6のいずれかに記載のユーザーインターフェースシステム。
  8. 前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
    前記打撃検出部が、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有する
    ことを特徴とする請求項1ないし7のいずれかに記載のユーザーインターフェースシステム。
  9. コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップ
    を有するユーザーインターフェースシステムにおける操作信号解析方法であって、
    前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
    前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含み、
    前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
    ことを特徴とする操作信号解析方法。
  10. 前記打撃検出ステップが、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現する
    ことを特徴とする請求項9に記載の操作信号解析方法。
  11. 前記打撃検出法のひとつとして、
    前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
    ことを特徴とする請求項9又は10に記載の操作信号解析方法。
  12. 前記コントローラがさらに加速度センサを内部に備え、
    前記打撃検出ステップが、前記加速度センサにより検出された加速度を用いることで、
    前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現する
    ことを特徴とする請求項9ないし11のいずれかに記載の操作信号解析方法。
  13. 前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
    ことを特徴とする請求項9ないし12のいずれかに記載の操作信号解析方法。
  14. ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも2つの打撃検出法を用い、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項12又は13に記載の操作信号解析方法。
  15. 前記操作信号解析方法が、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
    ことを特徴とする請求項9ないし14のいずれかに記載の操作信号解析方法。
  16. 前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
    前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
    ことを特徴とする請求項9ないし15のいずれかに記載の操作信号解析方法。
  17. コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップ
    を有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、
    前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
    前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含み、
    前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
    ことを特徴とする操作信号解析プログラム。
  18. 前記打撃検出ステップが、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現する
    ことを特徴とする請求項17に記載の操作信号解析プログラム。
  19. 前記打撃検出法のひとつとして、
    前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法
    を用いる請求項17又は18に記載の操作信号解析プログラム。
  20. 前記コントローラがさらに加速度センサを内部に備え、
    前記打撃検出ステップが、前記加速度センサにより検出された加速度を用いることで、
    前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現する
    ことを特徴とする請求項17ないし19のいずれかに記載の操作信号解析プログラム。
  21. 前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
    ことを特徴とする請求項17ないし20のいずれかに記載の操作信号解析プログラム。
  22. ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも2つの打撃検出法を用い、1つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう1つ打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする、請求項20又は21に記載の操作信号解析プログラム。
  23. 前記操作信号解析プログラムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
    ことを特徴とする請求項17ないし22のいずれかに記載の操作信号解析プログラム。
  24. 前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
    前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
    ことを特徴とする請求項17ないし23のいずれかに記載の操作信号解析プログラム。
JP2015551885A 2014-11-19 2014-11-19 打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム Active JP6064111B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/080665 WO2016079828A1 (ja) 2014-11-19 2014-11-19 打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム

Publications (2)

Publication Number Publication Date
JP6064111B2 JP6064111B2 (ja) 2017-01-25
JPWO2016079828A1 true JPWO2016079828A1 (ja) 2017-04-27

Family

ID=56013441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015551885A Active JP6064111B2 (ja) 2014-11-19 2014-11-19 打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム

Country Status (2)

Country Link
JP (1) JP6064111B2 (ja)
WO (1) WO2016079828A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101831295B1 (ko) * 2016-07-21 2018-02-22 주식회사 네시삼십삼분 모바일 기기의 터치 인식 방법 및 장치
US11794094B2 (en) * 2016-10-17 2023-10-24 Aquimo Inc. Method and system for using sensors of a control device for control of a game
WO2018205152A1 (zh) * 2017-05-09 2018-11-15 华为技术有限公司 一种vr绘图方法、设备及系统
JP7081921B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム及びゲーム装置
EP4083751B1 (en) * 2019-12-25 2024-04-17 Sony Group Corporation Information processing device, program, and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276615A (ja) * 2007-05-01 2008-11-13 Nintendo Co Ltd 情報処理プログラムおよび情報処理装置
JP2012181616A (ja) * 2011-02-28 2012-09-20 Namco Bandai Games Inc プログラム、情報記憶媒体、ゲーム装置及びサーバシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8814641B2 (en) * 2006-05-08 2014-08-26 Nintendo Co., Ltd. System and method for detecting moment of impact and/or strength of a swing based on accelerometer data
JP5294442B2 (ja) * 2006-09-13 2013-09-18 任天堂株式会社 ゲーム装置およびゲームプログラム
JP5224832B2 (ja) * 2008-01-21 2013-07-03 任天堂株式会社 情報処理プログラムおよび情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276615A (ja) * 2007-05-01 2008-11-13 Nintendo Co Ltd 情報処理プログラムおよび情報処理装置
JP2012181616A (ja) * 2011-02-28 2012-09-20 Namco Bandai Games Inc プログラム、情報記憶媒体、ゲーム装置及びサーバシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"「Wii Sports ボクシング 攻略」", [ONLINE], JPN6015051227, 14 March 2007 (2007-03-14), ISSN: 0003249303 *

Also Published As

Publication number Publication date
JP6064111B2 (ja) 2017-01-25
WO2016079828A1 (ja) 2016-05-26

Similar Documents

Publication Publication Date Title
US20240058691A1 (en) Method and system for using sensors of a control device for control of a game
US8686939B2 (en) System, method, and apparatus for three-dimensional input control
US10357714B2 (en) Gesture-based user interface for navigating a menu
JP6064111B2 (ja) 打撃操作のためのユーザーインターフェースシステムと操作信号解析方法及びプログラム
US8797260B2 (en) Inertially trackable hand-held controller
US20100203969A1 (en) Game device, game program and game object operation method
JP4412716B2 (ja) ゲーム装置、プログラム及び情報記憶媒体
US20110172017A1 (en) Game machine, game program, and game machine control method
KR101539666B1 (ko) 모바일 단말기를 통한 골프 시뮬레이션 방법, 이에 관한 프로그램 또는 어플리케이션이 기록된 기록매체 및 이를 이용한 골프 시뮬레이션 구동을 위한 모바일 단말기
JP6115908B2 (ja) 情報処理端末の操作信号入力ユニット、操作信号入力方法及び操作信号入力プログラム
US20230191253A1 (en) Information processing system, non-transitory computer-readable storage medium having stored therein program, information processing apparatus, and information processing method
JP6672401B2 (ja) ゲームプログラム、方法、および情報処理装置
JP6360872B2 (ja) ゲームプログラム、方法、および情報処理装置
KR101977964B1 (ko) 가상의 크리켓 경기를 제어하는 제어 장치, 제어 방법 및 컴퓨터 프로그램
JP2020110453A (ja) ゲームプログラム、方法、および情報処理装置
JP6088030B1 (ja) ゲームシステム、制御方法、及びプログラム
JP2018161513A (ja) ゲームプログラム、方法、および情報処理装置
JP7344354B2 (ja) 情報処理プログラム、情報処理装置、情報処理方法、および情報処理システム
JP7337732B2 (ja) プログラム
JP6307651B1 (ja) ゲームプログラム、方法、および、情報処理装置
JP7252915B2 (ja) ゲームプログラム、方法、および情報処理装置
JP6668425B2 (ja) ゲームプログラム、方法、および情報処理装置
JP6661595B2 (ja) ゲームプログラム、方法および情報処理装置
JP6779048B2 (ja) ゲームの実行方法、プログラムおよび記録媒体
JP2023122713A (ja) 方法、記録媒体および情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151014

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151014

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160420

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160707

R150 Certificate of patent or registration of utility model

Ref document number: 6064111

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