(57)【要約】【課題】直感的な操作が可能であり、廉価でかつ汎用性のあるデバイスで利用可能とする。【解決手段】コントローラが、ジャイロセンサ１６４と、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、打撃検出部２１１が、ジャイロセンサ１６４によって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を備え、打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する。
2016079828.tif 000002
【特許請求の範囲】
【請求項１】
コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、
前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、
前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
ことを特徴とするユーザーインターフェースシステム。
【請求項２】
前記打撃検出部が、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を備える
ことを特徴とする請求項１に記載のユーザーインターフェースシステム。
【請求項３】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項１又は２に記載のユーザーインターフェースシステム。
【請求項４】
前記コントローラがさらに加速度センサを内部に備え、
前記打撃検出部が、前記加速度センサにより検出された加速度を用いることで、前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を有する
ことを特徴とする請求項１ないし３のいずれかに記載のユーザーインターフェースシステム。
【請求項５】
ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１ないし４のいずれかに記載のユーザーインターフェースシステム。
【請求項６】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出部は少なくとも２つの打撃検出法を備え、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項４又は５に記載のユーザーインターフェースシステム。
【請求項７】
前記ユーザーインターフェースシステムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくは予備動作を実行させるための制御信号を送信する機能を持つ
ことを特徴とする請求項１ないし６のいずれかに記載のユーザーインターフェースシステム。
【請求項８】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出部が、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有する
ことを特徴とする請求項１ないし７のいずれかに記載のユーザーインターフェースシステム。
【請求項９】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップ
を有するユーザーインターフェースシステムにおける操作信号解析方法であって、
前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含み、
前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
ことを特徴とする操作信号解析方法。
【請求項１０】
前記打撃検出ステップが、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現する
ことを特徴とする請求項９に記載の操作信号解析方法。
【請求項１１】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項９又は１０に記載の操作信号解析方法。
【請求項１２】
前記コントローラがさらに加速度センサを内部に備え、
前記打撃検出ステップが、前記加速度センサにより検出された加速度を用いることで、
前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現する
ことを特徴とする請求項９ないし１１のいずれかに記載の操作信号解析方法。
【請求項１３】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項９ないし１２のいずれかに記載の操作信号解析方法。
【請求項１４】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項１２又は１３に記載の操作信号解析方法。
【請求項１５】
前記操作信号解析方法が、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項９ないし１４のいずれかに記載の操作信号解析方法。
【請求項１６】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項９ないし１５のいずれかに記載の操作信号解析方法。
【請求項１７】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップ
を有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、
前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含み、
前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
ことを特徴とする操作信号解析プログラム。
【請求項１８】
前記打撃検出ステップが、前記角速度センサによって検出される前記コントローラの角速度を用いることによって、前記打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現する
ことを特徴とする請求項１７に記載の操作信号解析プログラム。
【請求項１９】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法
を用いる請求項１７又は１８に記載の操作信号解析プログラム。
【請求項２０】
前記コントローラがさらに加速度センサを内部に備え、
前記打撃検出ステップが、前記加速度センサにより検出された加速度を用いることで、
前記コントローラが回転運動をした際に前記コントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には前記コントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現する
ことを特徴とする請求項１７ないし１９のいずれかに記載の操作信号解析プログラム。
【請求項２１】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１７ないし２０のいずれかに記載の操作信号解析プログラム。
【請求項２２】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つ打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする、請求項２０又は２１に記載の操作信号解析プログラム。
【請求項２３】
前記操作信号解析プログラムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項１７ないし２２のいずれかに記載の操作信号解析プログラム。
【請求項２４】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項１７ないし２３のいずれかに記載の操作信号解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばボクシング、テニス、スカッシュ、卓球等のスポーツゲームにおいて、打撃のタイミングを指定する打撃操作のためのユーザーインターフェースシステムと、コントローラから入力される操作信号等の情報を解析する方法及びプログラムに関する。
【背景技術】
【０００２】
従来、テレビゲームの形態としては、家庭用ゲーム専用機や業務用アーケードゲームの他、パーソナルコンピュータなどの汎用コンピュータ上でゲームソフトを実行するなどの装置やシステムが提供されている。また、ゲームソフトの提供方式についても、従来のＣＤ−ＲＯＭ等の記録媒体を介する形態から、近年の通信インフラの発達に伴い、ゲームプログラムをインターネット等の通信網を介して提供するいわゆるオンラインゲームサービスも普及しつつある。【０００３】
上記テレビゲームの１つとして、例えばボクシングゲームなどのスポーツアクションゲームがあり、このスポーツアクションゲームでは、プレイヤーオブジェクトがパンチを繰り出すタイミングや、そのパンチ種類、パンチ力といったように、プレイヤーオブジェクトの動作に関する諸条件を入力する。この諸条件の入力は、例えば、画面に表示されるグラフィックユーザーインターフェース（GUI：Graphical User Interface）を通じて、ゲーム機のコントローラやタッチパネル等の入力インターフェースにより行われている（例えば、特許文献１参照。）。【０００４】
特許文献１に開示された技術は、タッチスクリーンに対する指の接触位置、及び指による押圧力の大きさに応じて、画面内のオブジェクトを動作させて、ボクシングゲームを進行させるものである。ところが、特許文献１に開示されたゲーム装置は、タッチスクリーンをタップしたり、スワイプしたりすることで、パンチのタイミングが検出されるようになっているため、実際のスポーツの動作とは懸け離れてしまい、直感的な操作性が失われるという問題があった。これは、ユーザーがコントローラのボタンを押して操作するゲーム装置でも同様である。【０００５】
このような問題を解決すべく、近年、所定方向への加速度を検知する加速度センサを有し、この加速度センサが検知した加速度に応じて、諸条件の入力を行うコントローラが開発され、このコントローラに対応したテレビゲーム機やゲームソフトも開発されている（例えば、特許文献２参照。）。【０００６】
この特許文献２に開示された技術は、ゲーム装置のコントローラとして機能するグローブユニットに、前後（Ｙ軸）、左右（Ｘ軸）、及び上下（Ｚ軸）方向の３軸の加速度をそれぞれ検出する加速度センサが設けられ、加速度センサから出力される出力波形を解析することによって、ユーザーが繰り出したパンチ種類を識別するものである。このようなグローブユニットをコントローラとして用いたゲーム装置では、コントローラの操作者の動作を、画面内のプレイヤーオブジェクトにトレースさせることができ、直感的な操作性を体感することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−５８１３６号公報
【特許文献２】特表２００６−３２０７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献２に開示された技術では、ユーザーの左右それぞれの手に対して、別々のコントローラで操作する構成となっていることから、加速度センサを有するコントローラを２つ要し、ゲーム導入までのコストが高価であるという問題がある。また、特許文献２に開示された技術では、コントローラとしてグローブ型の入力ユニットを用い、ボクシングゲームにのみ利用する設計となっており、そのデザイン及び機能が特化されており、他のゲームには利用することができず、汎用性が低いという問題があった。【０００９】
そこで、本発明は以上の点に鑑みてなされたもので、例えばボクシングゲームなど、ユーザーが打撃操作を入力する必要のあるゲームにおいて、直感的な操作性が可能であり、廉価でかつ汎用性のあるデバイスで利用可能なユーザーインターフェースシステム、方法、及びプログラムを提供することをその課題とする。
【課題を解決するための手段】
【００１０】
本発明は、上述したようなユーザーインターフェースシステム、即ち、コントローラ及びコントローラから入力される情報等を処理する演算装置を備え、演算処理装置若しくは演算処理装置で実行されるソフトウェアがコントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステム、であって、上記課題を解決するために、前記コントローラは、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、前記打撃検出部は前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することを特徴とする。  【００１１】
また、他の発明は、コントローラから入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、
（１）コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
（２）打撃検出ステップが、角速度センサによって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーがコントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るコントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、
（３）打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現する
ことを特徴とする。【００１２】
本発明では、ユーザーは単一のコントローラ本体を両手で持ち、ユーザー自身が打撃動作をするかのように片方の手を前に押し出すことにより、打撃操作を入力する。このような本発明によれば、コントローラ内に角速度センサを備え、この角速度センサによって、コントローラを持つユーザーの手の動きを検出しているため、例えば、ボクシングゲームなど左右の拳で打撃を行うゲームにおいても直感的にオブジェクトを操作でき、ユーザーはより良いゲーム体験を得ることができる。【００１３】
上記発明において、打撃検出部が、角速度センサによって検出されるコントローラの角速度を用いることによって、打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を備えることが可能となる。この場合には、角速度センサによって検知された角速度の向きを用いて打撃操作の左右を区別できるので、単一の制御装置があれば良く、例えば、スマートフォンやタブレット端末などの広く普及している汎用性のある操作デバイスを利用でき、コスト全体を安価にすることができる。【００１４】
上記発明において、打撃検出法のひとつとして、角速度センサによって検出される、打撃操作が行なわれた場合のコントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間(０．０１秒から０．０５秒程度)先の角速度の値、若しくはこれらの値を結合することによって得られる値をしきい値と比較する方法を用いることができる。ここでしきい値は所定の値としても良いが、ゲームの状況によって変化させたり、ユーザー設定やユーザーの環境によって変更させたりしても良い。【００１５】
上記発明において、コントローラから入力される情報を元に算出されるコントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくはオブジェクトに予備動作を実行させるための制御信号を送信する機能を持つことが好ましい。この場合には、ユーザーによる打撃操作が行われる前に、その予備操作に基づく回転を検知し、事前に画面上のオブジェクトに対して予備動作(例えばパンチの前に腕を振り上げる動作)を実行させることによってゲームの操作感を向上させることができる。【００１６】
すなわち、従来の技術では、単に打撃操作が検出されてからオブジェクトにパンチの予備動作を開始させているため、ユーザーが意図したタイミングと実際にオブジェクトがパンチを出すタイミングに遅延が発生していた。本発明では、ユーザーが打撃操作の前に、打撃操作と反対の方向にコントローラを持つ手を引くことは自然であり、角速度センサによって検出されるゲーム装置の回転角に連動してオブジェクトがパンチの予備動作(体をひねって腕を振り上げる)をすることによって、打撃操作が検出される前からオブジェクトに予備動作を開始させることができ、打撃操作が検出されてから実際にオブジェクトがパンチを出すまでの時間を短縮できる。これにより、オブジェクトがパンチを出すタイミングの遅延を短縮して、ユーザーによりよいゲーム体験を与えることができる。【００１７】
上記発明において、打撃検出部は角速度センサにより検知される角速度や角速度の単位時間あたりの変化量等を用いて打撃操作の検出を行なうが、検知された角速度や角速度の単位時間あたりの変化量が、打撃操作によるものなのか予備操作によるものなのかを判別することは難しいため、角速度センサに加えて加速度センサを用いるのが好ましい。すなわち、上記発明において、コントローラがさらに加速度センサを内部に備え、打撃検出部が、加速度センサにより検出された加速度を用いることで、コントローラが回転運動をした際にコントローラが前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合にはコントローラの回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する。【００１８】
上記発明を実施するにあたり、ゲームアプリケーションの要件によって予備操作が完了するまで打撃操作を行なうことができないという条件を付加することができるのであれば、加速度センサを用いなくても、予備操作が完了するまでは制御装置の回転が予備操作によるものと判断することもできる。しかし、ボクシングゲームにおいては予備操作なしのジャブのような打撃操作があるため、このような条件を付加することはできない。【００１９】
また、加速度センサを用いることで、打撃操作と打撃操作後の反動とをある程度区別することが可能となるが、より確実に区別するために、打撃検出部は、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の特徴の検出を制限することにより、ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐことが好ましい。【００２０】
一方で、このように打撃操作の検出を制限することによって、コンビネーションパンチのような連続した打撃操作の入力が困難になるという問題が発生する。そこで、上記発明において、ユーザーによる連続した打撃操作の入力を正確に検出するために、打撃検出部は少なくとも２つの打撃検出法を備え、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることで、連続した打撃操作の検出を可能にする。ここで、１つを打撃検出法１、もう１つを打撃検出法２とする。【００２１】
この場合、打撃検出法１は角速度の時間変化、すなわち角加速度、を重視して打撃操作の入力があったことを検出する。角加速度を使うことにより、打撃検出法１はユーザーが打撃操作のために制御装置を回転させ始めた瞬間を検知することができ、反応速度が良くなる。しかしながら、角加速度が大きくなるのは制御装置を回転させ始めた瞬間だけでなく、回転を止めた瞬間、回転を止めた反動で制御装置が元の向きに戻る瞬間、回転を止めた反動が再び停止する瞬間等でも大きくなるため、これらの瞬間で誤って打撃操作を検出しないようにする必要がある。回転が止まる瞬間の角加速度は角速度と向きが同じかどうかで区別できる。一方、回転を止めた反動での角加速度は、回転が止まった瞬間を検知し、その時点での角加速度を基準にして一時的にしきい値を大きくすることで、反動による角加速度と打撃操作による角加速度を区別する。【００２２】
一方の打撃検出法２は角速度を重視して打撃操作の入力を検出する。ユーザーが打撃操作の入力ために制御装置を回転させ始めてから角速度の大きさが一定以上になるまでにはある程度時間を要するため、打撃検出法２は打撃検出法１のように打撃操作の開始を瞬時に検出することはできない。しかしながら、角速度の値はユーザーが打撃操作をしている比較的長い間大きな値を保つ。そのため、打撃検出法２は打撃操作によるコントローラの回転運動が停止した瞬間からのごく短い期間内に検出された打撃操作の入力を無視して打撃操作後の反動を誤って打撃操作として検出することを防いだとしても、コンビネーションパンチのような連続した打撃操作を検出することができる。【００２３】
上記発明において、コントローラが、コントローラ本体に配置された入力部をさらに備え、打撃検出部が、入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有することが好ましい。角速度センサによる打撃操作の入力は直感的ではあるが、タッチやスワイプ、コントローラのボタン入力とは異なり打撃動作の種別を区別して入力するのには適さない。しかし、コントローラに角速度検出とは別の検知手段を用意し、それを利用すれば、角速度センサによる直感的な打撃動作の入力と、打撃種類又は強弱を変化させる操作とを両立させることができる。【００２４】
また、これらのユーザーインターフェースシステム及び操作信号解析方法は、所定の言語で記述された本発明のゲームプログラムをコンピュータ上で実行することにより実現することができる。すなわち、コントローラから入力される操作信号等の情報を元にユーザーによる打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、
（１）コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、
（２）打撃検出ステップが、角速度センサによって連続的に検知されるコントローラの角速度の一連の値を用いて、ユーザーがコントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るコントローラの回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、
（３）打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することを特徴とする。【００２５】
このような発明によれば、操作信号解析プログラムを使用することで、特別な処理装置を必要とせず、上述したユーザーインターフェースシステム及び操作信号解析方法を、様々な情報処理装置において実現することができる。すなわち、この操作信号解析プログラムを、汎用的なコンピュータやＩＣチップにインストールし、ＣＰＵ上で実行することにより、上述した各機能を有するユーザーインターフェースシステムを容易に構築することができる。このプログラムは、例えば、通信回線を通じて配布することが可能であり、またスタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。そして、このような操作信号解析プログラムは、コンピュータで読み取り可能な記録媒体に記録することができ、汎用のコンピュータや専用コンピュータを用いて、上述したシステムや方法を実施することが可能となるとともに、プログラムの保存、運搬及びインストールを容易に行うことができる。
【発明の効果】
【００２６】
以上説明したように本発明によれば、例えばボクシングゲームなど、打撃のタイミングを指定する打撃操作を入力し、ゲームを進行させるゲームにおいて、角速度センサに基づいてユーザーによる打撃操作を認識することで、直感的な操作が可能なユーザーインターフェースシステムを、廉価でかつ汎用性のあるデバイスで実現できる。
【図面の簡単な説明】
【００２７】
【図１】実施形態に係るゲーム装置の全体構成を示す概念図である。
【図２】実施形態に係るゲーム装置の内部構成を示すブロック図である。
【図３】実施形態に係るＣＰＵ内の仮想的な内部構成を示すブロック図である。
【図４】（ａ）及び（ｂ）は、実施形態に係るコントローラの動作と、ゲームの表示画面を示す説明図である。
【図５】実施形態に係るユーザー操作に応じたコントローラのＹ軸まわりの回転角の変化を示したグラフであり、片手で打撃操作を１回行った場合の変化を示している。
【図６】実施形態に係るユーザー操作に応じたコントローラのＹ軸まわりの回転角の変化を示したグラフであり、両手で交互に打撃操作を連続で行った場合の変化を示している。
【図７】実施形態に係るユーザー操作に応じたコントローラのＹ軸まわりの回転角の変化を示したグラフであり、片手で打撃操作を１回強く行った場合の変化を示している。
【図８】実施形態に係るユーザー操作に応じたコントローラのＹ軸まわりの回転角の変化を示したグラフであり、片手で２回続けて打撃操作を行った場合の変化を示している。
【図９】実施形態に係る画面上の打撃選択領域を示す説明図である。
【図１０】実施形態に係る操作信号解析処理の概略を示すフローチャート図である。
【図１１】実施形態に係るピーク検出処理のサブルーチンを示すフローチャート図である。
【図１２】実施形態に係る打撃検出処理のサブルーチンを示すフローチャート図である。
【図１３】実施形態に係る打撃検出処理のサブルーチンを示すフローチャート図である。
【図１４】実施形態に係るプログラムを記録した記録媒体と、当該記録媒体を読み取り可能な情報処理装置とを示す説明図である。
【発明を実施するための形態】
【００２８】
（ゲーム装置の基本構成）
以下に添付図面を参照して、本発明の実施形態を詳細に説明する。図１は、本実施形態に係るユーザーによって打撃操作を入力するためのユーザーインターフェースシステムを構成するゲーム装置１を示す斜視図である。なお、本実施形態では、ゲーム装置１上で、ボクシングゲームソフトを実行する場合を例示する。また、本実施形態では、本発明をボクシングゲームソフトに適用した場合を例に説明するが、本発明はこれに限定されるものではなく、例えば、テニス、スカッシュ、卓球などのスポーツアクションゲーム等、仮想空間に配置されるプレイヤーオブジェクト等のオブジェクトに対して打撃のタイミングを指定する打撃操作を入力し、ゲームを進行させるゲームソフトウェアを実行するゲームソフトウェアなどにも適用することができる。他にも、実空間上にあるロボット玩具のような駆動装置を制御するのに用いることもできるし、さらには、操作対象となるオブジェクトは必ずしも実空間若しくは仮想空間に存在しなくてもよく、仮想的なオブジェクトが打撃動作を行なったとするシミュレーションを行ない、その演算結果のみを出力するようなソフトウェアにも適用できる。例えば、ユーザーの打撃操作により仮想的なプレイヤーオブジェクトが太鼓を叩いたかのように音を出すといった音楽ゲームソフトウェアなどである。
【００２９】
本実施形態に係るゲーム装置１は、ＣＰＵを備えた演算処理装置であり、携帯可能な情報処理端末や、機能を特化させた専用装置により実現することができ、モバイルコンピュータやＰＤＡ（Personal Digital Assistance）、携帯電話機が含まれる。なお、本実施形態においてゲーム装置１は、通信機能を有し、通信ネットワークを通じて、サーバーにアクセス可能となっており、このサーバーを通じて、本発明に係るゲームプログラムがダウンロード可能となっている。ゲーム装置１の通信方式としては、例えば、４Ｇ方式、ＬＴＥ方式、３Ｇ方式、ＦＤＭＡ方式、ＴＤＭＡ方式、ＣＤＭＡ方式、Ｗ−ＣＤＭＡの他、ＰＨＳ（Personal Handyphone System）方式、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線ＬＡＮ方式が挙げられる。
【００３０】
ゲーム装置１は、図１に示すように、矩形状の制御装置本体１００を有しており、この本体１００に表示装置である液晶ディスプレイ１６５が備えられ、この液晶ディスプレイ（ＬＣＤ）１６５には、その画面内にオブジェクトの状態が表示され、表示されるオブジェクトを操作して、ゲームを進行させる。また、ゲーム装置１は、制御装置本体１００内部にＣＰＵ２００を備え、演算処理装置としての機能も有している。
【００３１】
そして、本実施形態においては、ゲーム装置１自体がコントローラとしての機能を有している。具体的に、ゲーム装置１の制御装置本体１００はジャイロセンサ（角速度センサ）１６４を内部に備えており、ゲーム装置１の３軸方向への角速度を検知することができるようになっている。ここで、角速度とは、物体が回転運動をするときの回転の速さを、単位時間あたりの回転角で表したものである。ユーザーはゲーム装置本体を両手で水平に持ち、片方の手をパンチをするかのように前に押し出すことで打撃操作の入力を行なう。本実施形態では、ジャイロセンサ１６４で検出される角速度に加え、連続的に検出される角速度から制御装置本体１００に作用する角加速度や回転角を算出し、それらの値に応じてオブジェクトを操作する。
【００３２】
また、ゲーム装置１の制御装置本体１００は加速度センサ１６９を内部に備えており、ゲーム装置１に外部から加えられた加速度を検知することができるようになっている。なお、本実施形態では、検知された加速度は、ユーザー操作によるゲーム装置１の回転運動が予備操作なのか打撃操作なのかを判断するために用いられる。
【００３３】
なお、本発明において、本実施形態のように表示装置、演算処理装置、及びコントローラが一体になっている必要はなく、むしろ、コントローラと表示装置は別々になっていた方が好ましいが、本実施形態は、本発明をスマートフォンやタブレット端末などの広く普及したデバイスで実現可能であることを示している。
【００３４】
本実施形態においては、図１に示すように、ゲーム装置１の長手方向をＸ軸とし、ユーザーがゲーム装置１を両手で持った場合の左手から右手に向かう方向をＸ軸の正の方向とする。また、ユーザーがゲーム装置１を両手で持ち、左右どちらかの手を前に押し出す打撃操作を行なった際の自然な回転軸と並行で、Ｘ軸に直交し、ゲーム装置１のＬＣＤ１６５の表面に平行な上下方向をＹ軸とし、下から上に向かう方向をＹ軸の正の方向とする。また、Ｘ軸とＹ軸とに直交し、ＬＣＤ１６５の表面に対して垂直な方向をＺ軸とし、ゲーム装置１からユーザーに向かう方向をＺ軸の正の方向とする。なお、上述したゲーム装置１の向きや角速度を記述するための座標（Ｘ軸、Ｙ軸、Ｚ軸）は、本実施形態の内容を説明するためだけに用いるもので、コントローラからの入力信号が持つ座標系とは異なっていてもよい。
【００３５】
このゲーム装置１には、前記オブジェクトを操作する操作信号の入力デバイスとして、タッチパネル３００が備えられている。タッチパネル３００は、ユーザーの指先やペンなどを用いたタッチ操作によって操作信号を入力する入力デバイスであり、グラフィックを表示する表示部であるＬＣＤ１６５と、タッチ操作による操作信号を受け付けるタッチセンサ１６８とが重畳されて構成される。このため、タッチセンサ１６８によってタッチ操作が検出された位置を、ＬＣＤ１６５に表示されているグラフィックの座標位置に対応させて特定することが可能となっている。
【００３６】
（ゲーム装置１の内部構造）
以上説明した表示・操作が可能なタッチパネル３００及びジャイロセンサ１６４を有するゲーム装置１の具体的な内部構成について、以下に詳述する。図２は、本実施形態に係るゲーム装置１の内部構成を示すブロック図である。なお、以下の説明中で用いられる「モジュール」とは、装置や機器等のハードウェア、或いはその機能を持ったソフトウェア、又はこれらの組み合わせなどによって構成され、所定の動作を達成するための機能単位を示す。
【００３７】
図２に示すように、ゲーム装置１は、アンテナ１０１に接続されたデュプレクサ１０２と、このデュプレクサ１０２に接続された受信系モジュール及び送信系モジュールとを備えている。受信系モジュールとしては、低ノイズアンプ１１０、ミキサ１１１、ＩＦアンプ１１２、直交ミキサ１１３、Ａ／Ｄコンバータ１１４、復調器１１５、チャネルデコーダ１１６、音声デコーダ１１７、Ｄ／Ａコンバータ１１８、スイッチ付きアンプ１１９、及びスピーカ１２０を備えている。一方、送信系モジュールとしては、マイク１４０、アンプ１３９、Ａ／Ｄコンバータ１３８、音声エンコーダ１３７、チャネルエンコーダ１３６、変調器１３５、Ｄ／Ａコンバータ１３４、直交ミキサ１３３、ＩＦアンプ１３２、ミキサ１３１、及びパワーアンプ１３０を備えている。
【００３８】
また、ゲーム装置１は、制御系モジュールとして、シンセサイザ１０３、タイムベース１５０、ＣＰＵ２００、ＲＡＭ１５２、ＲＯＭ１５３、ＥＥＰＲＯＭ１５１を備え、ユーザーインターフェース系モジュールとして、ジャイロセンサ１６４、ＬＣＤ１６５、操作ボタン１６６、ＬＥＤ１６７、タッチセンサ１６８、及びバイブレータ１７４を備え、さらに、電源系モジュールとして、電源系電池１７１、電源１７２、及びＡ／Ｄコンバータ１７３を備える。前述のタッチパネル３００は、グラフィックを表示するＬＣＤ１６５と、ＬＣＤ１６５に表示されたグラフィックの座標位置に対応した操作信号を受け付けるタッチセンサ１６８とが重畳されて構成されている。
【００３９】
前記アンテナ１０１は、電波回線を介して基地局（図示せず）に対し信号を送受信する。デュプレクサ１０２は、送受信される信号の入出力を切り替える回路であり、アンテナ１０１が受信した信号を低ノイズアンプ１１０に入力し、パワーアンプ１３０から出力された信号をアンテナ１０１に出力する。
【００４０】
受信系モジュールにおいて、低ノイズアンプ１１０は、デュプレクサ１０２から入力された信号を増幅し、ミキサ１１１に出力する。ミキサ１１１は、低ノイズアンプ１１０の出力を受け、特定の周波数だけ分離して中間周波数信号として出力する。ＩＦアンプ１１２は、ミキサ１１１から出力された中間周波数信号を増幅する。直交ミキサ１１３は、ＩＦアンプ１１２の出力を受け直交復調する。Ａ／Ｄコンバータ１１４は、直交ミキサ１１３の出力をデジタル化する。復調器１１５は、Ａ／Ｄコンバータ１１４の出力を復調する。チャネルデコーダ１１６は、復調器１１５の出力に対して誤り訂正を行う。誤り訂正を行った信号には、制御メッセージ及び音声データが含まれる。制御メッセージはＣＰＵ２００に、音声データは音声デコーダ１１７に送出される。
【００４１】
かかるチャネルデコーダ１１６から音声デコーダ１１７に入力された信号は、音声データにデコードされ、Ｄ／Ａコンバータ１１８に受け渡される。Ｄ／Ａコンバータ１１８は音声デコーダ１１７の出力をアナログ信号に変換する。スイッチ付きアンプ１１９は、ＣＰＵ２００からの制御信号に基づいて、適宜のタイミングで切り替えられ、スイッチＯＮの状態においてＤ／Ａコンバータ１１８の出力を増幅する。スピーカ１２０はスイッチ付きアンプ１１９の出力を増幅する。
【００４２】
一方、送信系モジュールにおいて、マイク１４０は、ユーザーからの音声信号を受け、この音声信号をアナログ信号として出力する。アンプ１３９は、マイク１４０から出力されるアナログ信号を増幅する。Ａ／Ｄコンバータ１３８は、アンプ１３９の出力をデジタル信号に変換する。音声エンコーダ１３７はＡ／Ｄコンバータ１３８の出力をコード化して圧縮し、音声データとして出力する。チャネルエンコーダ１３６は、ＣＰＵ２００からの制御メッセージと音声エンコーダ１３７からの音声データとを合わせ、誤り訂正符号を付加する。
【００４３】
そして、変調器１３５は、チャネルエンコーダ１３６の出力を変調する。Ｄ／Ａコンバータ１３４は、変調器１３５の出力をアナログ信号に変換する。直交ミキサ１３３は、Ｄ／Ａコンバータ１３４の出力を、ＩＦ周波数信号（中間周波数信号）に変換する。ＩＦアンプ１３２は直交ミキサ１３３の出力を増幅する。ミキサ１３１は、ＩＦアンプ１３２の出力する信号の周波数を上げる。パワーアンプ１３０は、ミキサ１３１の出力を増幅する。なお、前記シンセサイザ１０３は、通信中に、ミキサ１１１、直交ミキサ１１３、ミキサ１３１、直交ミキサ１３３の同期をとる。タイムベース１５０は、クロック信号を各部に供給する。
【００４４】
ユーザーインターフェース系モジュールにおいて、ジャイロセンサ１６４は、角速度の大きさ及び方向を検出するセンサである。なお、本実施形態において、ジャイロセンサ１６４は、三軸方向（Ｘ，Ｙ，Ｚ軸方向）の角速度を検知するものとするが、本発明における打撃動作の制御においては必ずしも３軸の角速度は必要なく、Ｙ軸まわりの角速度のみを検知してもよい。
【００４５】
なお、３軸の角速度を検知することにより、打撃以外の動作もジャイロセンサ１６４によって制御することが可能となる。例えば、ボクシングゲームにおいて、ユーザーによる打撃操作の入力の検出にはＹ軸まわりの角速度を用いているが、対戦相手の打撃を回避する操作の入力の検出に、ジャイロセンサによって検出されるＸ軸およびＺ軸まわりの角速度を用いている。
【００４６】
このジャイロセンサ１６４が検知した角速度に応じた操作信号が、ゲーム装置１本体のＣＰＵ２００に対して出力される。また、本実施形態では、ゲーム装置１に加えられた加速度を検出する加速度センサ１６９や、地磁気を検知してゲーム装置１の絶対的な向きを特定する磁気センサなどのその他のセンサ１５４が設けられていてもよい。
【００４７】
ＬＣＤ１６５は、ゲーム画面やＧＵＩ，ユーザーによる入力文字などを表示させる液晶ディスプレイである。タッチパネル３００では、このＬＣＤ１６５を介して文字や図形、動画などのグラフィックを表示してＧＵＩを構成することができ、タッチパネル３００上のタッチセンサ１６８を通じて、操作信号を取得する。
【００４８】
ＬＥＤ１６７は、点灯及び消灯によりユーザーにメッセージを伝えるためのものである。タッチセンサ１６８は、ユーザーの指がタッチパネル表面に接触したことを検出し、タッチパネル３００表面の圧力又は静電容量の変化によって操作信号を取得する。バイブレータ１７４は、着信を知らせるデバイスであり、着信すると振動する。また、電源系電池１７１は、電源１７２及びＡ／Ｄコンバータ１７３に電力を供給する。電源１７２はゲーム装置１の電源である。Ａ／Ｄコンバータ１７３は、信号をＣＰＵ２００に供給する。
【００４９】
ＣＰＵ２００は、上記各部を制御する演算処理装置であり、ＲＡＭ１５２やＲＯＭ１５３に格納されたプログラムのコマンドを順次実行し、種々の機能を果たす。また、ＣＰＵ２００はＬＣＤ１６５にグラフィックを表示することに特化した専用の演算処理装置ＧＰＵを含んでいてもよい。
【００５０】
ＲＡＭ１５２は、ＣＰＵ２００のワーキングメモリ等として使用され、ＣＰＵ２００で実行されるプログラムやプログラムによる演算結果を一時的に格納する。ＲＯＭ１５３にはＣＰＵ２００用のプログラムが記録され、ＣＰＵ２００からの要求に応じて、プログラムの実行命令を順次出力する。ＥＥＰＲＯＭ１５１には、短縮ダイヤルなどのユーザーデータや、機体固有のＩＤ等が記録されている。
【００５１】
そして、本実施形態においては、ＣＰＵ２００は所定のゲームプログラム（ソフトウェア）を実行する。このソフトウェアによって、ＣＰＵ２００は種々のモジュールで仮想的に構築される演算処理装置として機能する。
【００５２】
（ＣＰＵ２００の仮想的な内部構成）
次いで、ＣＰＵ２００上で実行されるソフトウェアによって仮想的に構築される演算処理装置の内部構造について説明する。図３は、本実施形態に係るＣＰＵ２００上に仮想的に構築される内部構成を示すブロック図である。
【００５３】
上記ＣＰＵ２００では、所定のゲームプログラム（ソフトウェア）が実行されることによって、操作信号取得部２０１と、アプリケーション実行部２０２と、表示情報生成部２０４と、角速度検出部２０５とが仮想的に構築される。
【００５４】
操作信号取得部２０１は、制御装置本体に配置された操作ボタン１６６やタッチセンサ１６８などの操作デバイス２０６から入力された操作信号を受け取り、アプリケーション実行部２０２に操作コマンドとして出力するモジュールである。例えば、操作ボタン１６６からの入力は、アプリケーション実行部２０２において、メニュー操作の一部（１つ前のメニューに戻るなど）として利用される。また、操作信号取得部２０１には、操作位置検出部２０１ａを備えている。操作位置検出部２０１ａは、制御装置本体に配置された入力部の１つであるタッチパネル３００に対して入力された操作信号の座標位置を検出するモジュールであり、タッチセンサ１６８が検出した操作信号の入力座標位置が、ＬＣＤ１６５に表示されているグラフィックの座標系に対応した座標位置としてアプリケーション実行部２０２に送信される。これにより、アプリケーション実行部２０２は、ＬＣＤ１６５に表示されているメニューの選択やゲーム時の打撃種類又は防御種類の選択を実行することができる。
【００５５】
角速度検出部２０５は、タイマ割り込みによって所定の時間間隔（例えば６０Ｈｚ）によって動作し、制御装置本体１００内のジャイロセンサ１６４から各方向（Ｘ軸、Ｙ軸、Ｚ軸）の角速度等の操作信号を読み取るモジュールである。さらに角速度検出部２０５は、所定の時間間隔で連続的に検出される角速度を積分して、ゲーム装置１の向き(回転角)を追跡する。ゲーム装置１の向きの追跡には、所定の時間間隔で連続的に検出される角速度の他に、加速度センサ１６９によって検出される重力加速度や磁気センサなどのその他のセンサ１５４で検出されるデータを併用しても良い。
【００５６】
また、角速度検出部２０５は、制御装置本体１００内の加速度センサ１６９を使って、ゲーム装置１に加えられた加速度を算出する。加速度センサ１６９は重力加速度も合わせて検出するが、角速度検出部２０５が算出する加速度は重力加速度を取り除いたものとする。また、加速度をゲーム装置１の静止系で見たときに内部のバネにかかる見かけの加速度（実際に計測される加速度）として表現するか、ゲーム装置１を外から観測したときのゲーム装置１自体にかかる加速度として表現するかによって、加速度の向きが逆になるが、以降の説明において、角速度検出部２０５が算出する加速度は、ゲーム装置１を外から観測したときにゲーム装置１自体にかかる加速度として表現されているものとする。
【００５７】
角速度検出部２０５によって得られたゲーム装置１の角速度、向き及び加速度は、ＲＡＭ１５２内の記憶領域に保持される。そして、アプリケーション実行部２０２は角速度検出部２０５のタイマ割り込みとは別のタイミングで動作しても良く、ＲＡＭ１５２内の記憶領域にアクセスすることで、角速度検出部２０５によって得られた最も直近の装置本体１００の角速度や向き、加速度などを取得する。
【００５８】
ここで、これ以降の本発明の詳細な説明のために、角速度検出部２０５によって得られ、ＲＡＭ１５２内の記憶領域に保持される角速度やゲーム装置１の向きの表記方法を定義しておく。先ず、ある時刻tに角速度検出部２０５によって読み取られた角速度のベクトル量をベクトルω(t)、角速度のＸ軸の成分の値（Ｘ軸まわりの角速度）をωx(t)、角速度のＹ軸の成分の値（Ｙ軸まわりの角速度）をωy(t)、角速度のＺ軸の成分の値（Ｚ軸まわりの角速度）をωz(t)と表記する。そして、各軸まわりの角速度の値は、その軸に対して反時計まわりの方向を正とする。ここで、角速度検出部２０５は、タイマ割り込みによって所定の時間間隔で動作しているため、時刻tは離散的な値を取るが、時刻tにそれ以外の値が用いられた場合でも、ベクトルω(t)やωx(t)、ωy(t)、ωz(t)は時刻tより以前で最も直近に検出された角速度の値を表すものとする。また、ここでは以降での説明のために便宜上角速度を時刻tの関数として表記しているが、本発明を実施するにあたり、過去に遡って角速度の値を取得する必要はなく、角速度検出部２０５が動作した時点で得られた最新の値のみがＲＡＭ１５２内の記憶領域に保持されていれば十分である。
【００５９】
次に、ある時刻tにおけるゲーム装置１の向きを回転行列A(t)で表記することにする。また、本発明における打撃動作の制御にはゲーム装置１のＹ軸まわりの回転角だけが必要であり、ゲーム装置１のＹ軸まわりの回転角をθy(t)と表記する。また、角速度と同じく、Ｙ軸まわりの回転角θy(t)もＹ軸に対して反時計まわりの方向を正とする。ここで、時刻tはやはり離散的な値を取るが、角速度と同じように連続的な値を取るように拡張する。また、ここでも便宜上時刻tの関数として表記しているが、本発明の実施する際には、過去に遡って回転行列A(t)や回転角θy(t)を取得する必要はない。
【００６０】
ゲーム装置１のＹ軸まわりの回転角θy(t)は、ジャイロセンサ１６４がＹ軸まわりの角速度ωy(t)しか検出できない場合でも、角速度ωy(t)を時刻tで積分することで算出できる。この値は他の軸まわりの回転が加わったときに実際の値とずれることがあるものの、本発明の実施には高い精度で回転角を検出する必要はなく、後述する自動キャリブレーションを実装することで、問題なくオブジェクトをコントロールできるようになる。
【００６１】
一方、ゲーム装置１の向きを表す回転行列A(t)が利用できる場合、Ｙ軸まわりの回転角θy(t)は、回転行列A(t)から算出した方が正確である。但し、３次元の回転において、Ｙ軸まわりの回転角θy(t)を定義する方法は様々あり、定義によって算出方法は異なってくる。どのような算出方法を用いても本発明を実施することはできるが、本実施形態では、一例として以下のように、Ｙ軸まわりの回転角θy(t)を算出する。
【００６２】
先ず、次のようにベクトルzをＺ軸方向の単位ベクトルとする。
z＝(0,0,1)  ……（式１）
そして、ベクトルzを回転行列A(t)で回転することで得られるベクトルをベクトルz'(t)とし、ベクトルz'(t)を次のように求める。
z'(t)＝A(t)z  ……（式２）
そして、式１及び式２によって得られたベクトルz'(t)のX成分をz'x(t)、Ｚ成分をz'z(t)とすると、次の関係が成り立つ。
tanθy(t)＝z'x(t)/z'z(t)  ……（式３）
ここで、tanθy(t)は回転角θy(t)の正接（タンジェント）であり、正接関数の逆関数を用いることで式３からＹ軸まわりの回転角θy(t)を算出できる。但し、z'x(t)およびz'z(t)が共にゼロあるいは非常に小さい値の場合には計算誤差が大きくなるため、式１のベクトルzの代わりにＸ軸方向の単位ベクトルを使って同様の計算をするものとする。
【００６３】
表示情報生成部２０４は、アプリケーション実行部２０２による制御に従って、ＬＣＤ１６５におけるオブジェクト表示のための情報を生成し、ＬＣＤ１６５に出力するモジュールである。具体的には、表示情報生成部２０４は、３Ｄ構成部２０４ａと、２Ｄ構成部２０４ｂと、ＧＵＩ構成部２０４ｃとを備え、三次元空間内に視野範囲を定める仮想的なカメラを配置し、その仮想的なカメラが撮像したオブジェクトを二次元平面としてＬＣＤ１６５に表示する。
【００６４】
３Ｄ構成部２０４ａは、三次元空間を仮想的に構成し、この三次元空間内の三次元座標上に存在するオブジェクトやカメラの座標位置を制御するモジュールである。２Ｄ構成部２０４ｂは、撮影画面に三次元空間を二次元的に表示させるモジュールであり、３Ｄ構成部２０４ａが構成した三次元空間のデータを取得し、撮影画面の視野範囲に応じた二次元画像を演算処理して、撮影画面に三次元空間を二次元的に表示する。
【００６５】
具体的には、三次元空間内に視野範囲を定める仮想的なカメラが配置されており、３Ｄ構成部２０４ａが算出したオブジェクト及び仮想的なカメラの位置関係に基づいて、カメラが撮像したオブジェクトを二次元平面として撮影画面を形成することで、ＬＣＤ１６５におけるオブジェクトの状態の表示を変化させる。なお、本実施形態において、撮影画面は、プレイヤーオブジェクト越しに、プレイヤーや対戦相手のオブジェクト及びリングの一部を撮像したメイン画面である。
【００６６】
ＧＵＩ構成部２０４ｃは、２Ｄ構成部２０４ｂによって生成された撮影画面の上にゲームに関する情報やメニューなどのグラフィックユーザーインターフェース（ＧＵＩ）を表示するモジュールである。ＧＵＩは、オブジェクトに対する操作方法やオブジェクトの情報を視覚的にわかりやすく伝えるグラフィックであり、例えば、ボクシングゲームであれば、図３に示すように各キャラクターのパワーゲージ３０４，３０５などから構成されている。
【００６７】
アプリケーション実行部２０２は、角速度検出部２０５及び操作信号取得部２０１からの入力信号に基づいて、オブジェクトを生成して仮想空間内に配置したり、仮想空間内のオブジェクトを制御したり削除したりして、ゲームを進行させるモジュールであり、例えば、ボクシングゲーム等では、仮想空間内のプレイヤーや対戦相手のオブジェクトに対して、打撃、防御、回避などの動作をさせるとともに、打撃前の予備動作を制御して動作させる。
【００６８】
また、アプリケーション実行部２０２は、ボクシングのルールに則したゲームの進行管理（選択されたオブジェクトの階級や、ランキング、ランキングに応じたラウンド回数等、試合中における採点処理）を行うとともに、プレイヤーや対戦相手のオブジェクトの能力パラメータやパンチの種類などに基づいて、打撃条件の演算を行って、仮想空間内におけるオブジェクトへのダメージを演算処理する。
【００６９】
このアプリケーション実行部２０２には、オブジェクトの動作全体を制御する動作制御部２１０と、ユーザーによる打撃操作を検出する打撃検出部２１１とが設けられている。動作制御部２１０は、オブジェクトの動作全体を制御するモジュールであり、打撃検出部２１１により検出されたユーザーによる打撃操作の入力に応じて、オブジェクトに打撃動作を実行させる。さらに、動作制御部２１０は、打撃動作以外にも、角速度検出部２０５によって得られた回転角θy(t)の値に応じて、打撃動作に関する予備動作を実行させる機能も備えている。さらに動作制御部２１０は、角速度検出部２０５によって得られた回転行列A(t)や角速度ベクトルω(t)を用いて、オブジェクトに相手の打撃を回避する動作を実行させる機能も備えている。
【００７０】
打撃検出部２１１は、角速度検出部２０５によって得られた角速度のＹ軸の成分ωy(t)の値、又はωy(t)の値の単位時間あたりの変化量のいずれか、若しくはこれらの両方を用いて予測された微小時間先の角速度の値をしきい値と比較することにより、ユーザーによる打撃操作の入力によって生じ得るコントローラの回転運動の特徴を検出する打撃検出法を備える。打撃検出部はこの打撃検出法を用いてユーザーによる打撃操作の入力があったことを検出するが、この際、右手による打撃なのか左手による打撃なのかはωy(t)の正負で判断でき、正であれば右手、負であれば左手による打撃となる。また、打撃検出部２１１は、角速度検出部２０５によって算出されたゲーム装置１の加速度の向きによって、コントローラの回転運動がユーザーの打撃操作によるものなのか予備操作によるものなのかを判別し、予備操作によるものと判別した場合は打撃操作の入力を検出しない。また、打撃操作によるものと判別した場合は、動作制御部２１０によって、オブジェクトの打撃動作が開始され、打撃動作が実行されている間はオブジェクトの予備動作は抑制される。
【００７１】
また、本実施形態において、打撃検出部２１１は、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の検出を制限するようにしている。このようにすることによって、打撃操作を停止させた時の反動による角速度や角速度の変化のパターンを、打撃操作として誤って検出されるのを防止している。
【００７２】
さらに、本実施形態では、打撃検出部２１１は２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にする。詳述すると、１つ目の打撃検出法はωy(t)の単位時間あたりの変化量、すなわち角加速度、としきい値を比較する方法を用いて打撃操作の入力が開始した瞬間を検出する。この場合、打撃操作を停止させた時の反動による角加速度を誤って検出しないように、ωy(t)の値がゼロに逹したこと、あるいはゼロをまたいで正負が反転したことで打撃操作によるコントローラの回転が止まった瞬間を検知し、その時点での角加速度を基準にして一時的にしきい値を大きくする。一方、２つ目の打撃検出法はωy(t)の値を重視して打撃を検出することにより、打撃操作の開始を瞬時に検出することはできないものの、角加速度を使った場合に比べて長い間打撃操作を検出することができるため、打撃操作を停止させた時の反動を区別しやすい。即ち、２つ目の打撃検出法も打撃操作によるコントローラの回転運動が停止した瞬間を検出し、コントローラの回転運動が停止した瞬間からごく短い間だけ、再度検出される打撃操作を無視することにより、打撃操作を停止させたときの反動を誤って打撃操作として検出してしまうことを防ぐが、コンビネーションパンチのような連続した打撃操作の検出は妨げられずに済む。
【００７３】
このような動作制御部２１０及び打撃検出部２１１による制御によって、図４（ａ）に示すように、ゲーム装置１を持つ右手を手前（打撃動作の動作方向と逆方向）に引くとＹ軸に対して時計周りの回転が検知され、これに応じてオブジェクトの体を右にねじる予備動作を行わせ、その後、右手を前（打撃動作の動作方向）に強く押し出す操作を受け付けると、右手のパンチを繰り出す打撃動作を行わせるように制御する。また、ゲーム装置１を持つ左手を手前（打撃動作の動作方向と逆方向）に引くとオブジェクトの体を左にねじる予備動作を行わせ、その後、左手を前（打撃動作の動作方向）に強く押し出す操作を受け付けると、左手のパンチを繰り出す打撃動作を行わせるように制御する。以下に、動作制御部２１０における予備動作の制御、及び打撃検出部２１１における打撃操作の検出処理について説明する。
【００７４】
（１）予備動作の制御について
先ず、動作制御部２１０における予備動作の制御について説明する。本実施形態において、動作制御部２１０は、角速度検出部２０５によって算出されたＹ軸まわりの回転角θy(t)に基づいて、オブジェクトの予備動作の制御を行う。なお、ここでは、（ａ）オブジェクトの体の回転(ねじり)の大きさφの算出、（ｂ）オブジェクトの回転制御、（ｃ）自動キャリブレーションに分けて説明する。
【００７５】
（ａ）オブジェクトの体の回転(ねじり)の大きさφの算出
先ず、動作制御部２１０は、ある時刻tにおけるオブジェクトの体の回転(ねじり)の大きさφを算出する。具体的に、試合が開始した時刻をt0とし、この時刻t0でのＹ軸まわりの回転角θ0は、以下のように求める。
θ0＝θy(t0)  ……（式４）
そして、ある時刻tにおけるオブジェクトの体の回転(ねじり)の大きさφは、以下のように求める。
φ＝S×(θy(t)−θ0)  ……（式５）
ここで、式５における、Sは所定のスケールパラメータを示し、ゲーム装置１を大きく回転させなくても、オブジェクトに十分大きな動作をさせることができるようにするためのものである。また、オブジェクトの体の回転角には、上限Φがあり、上記回転(ねじり)の大きさφは、[−Φ,Φ]の範囲に切り詰められる。そして、回転(ねじり)の大きさφが上限に近づくにつれ、オブジェクトは体の回転だけでなく腕を振り上げ、パンチの準備をする。また、式５で算出される回転角をそのまま用いずに、目標値として用いることもできる。例えばオブジェクトの体の回転角の単位時間あたりの変化量が一定の大きさを越えないように目標値に近づくように制御すれば、オブジェクトが非現実的な速さで体を回転させようとすることを防ぐことができる。
【００７６】
（ｂ）オブジェクトの回転制御
次いで、回転(ねじり)の大きさφに応じた体の回転についての制御方法について説明する。先ず、オブジェクトの姿勢は、N個のパラメータで制御されているものとし、これらのパラメータの組を、N次元のベクトルaとする。この場合、回転(ねじり)の大きさφの値に応じてオブジェクトが体の回転動作をするためには、回転(ねじり)の大きさφに対応するパラメータの組a(φ)の値を決定する必要がある。ここで、ベクトルa(φ)の関数の形が単純な場合は、プログラムで計算することができるが、ほとんどの場合、ベクトルa(φ)は複雑な関数であり、人の手によって手動で値を設定する必要がある。
【００７７】
そこで、本実施形態では、回転(ねじり)の大きさφの代表的な値をM個選び、それらを（φ1,φ2,...,φM）とする。なお、これらの値は、φ1＝−Φ,φM＝Φ,φ1＜φ2＜...＜φMとなるように設定する。そして、回転(ねじり)の大きさφが上記の選ばれた値となった場合に、制御パラメータベクトルa(φ)が取るべきの値の組を事前に設定する。ここで、パラメータベクトルａが取るべき値の組を、a1＝a(φ1), a2＝a(φ2), ... , aM＝a(φM)とする。その後、任意の値である回転(ねじり)の大きさφが与えられたときには、上記のa1, a2, ... , aMを補間することでベクトルa(φ)の値を算出する。本実施形態での補間方法としては、線形補間が用いられ、
φ＜φ1の場合、
a(φ)＝a1  ……（式６）
φi≦φ＜φi+1の場合、
a(φ)＝s×ai＋(1−s)×ai+1,
s＝(φi+1−φ)/(φi+1−φi)……（式７）
φM≦φの場合、
a(φ)＝aM  ……（式８）
としてベクトルa(φ)の値を算出する。なお、補間方法としては、線形補間の他、高次のスプライン補間など他の補間方法を用いてもよい。
【００７８】
（ｃ）自動キャリブレーション
次いで、自動キャリブレーションについて説明する。本実施形態では、オブジェクトの体の回転の動作には、ゲーム装置１のＹ軸まわりの回転角θy(t)を使用しているが、この値は、ユーザー自身が向きを変えた場合にも変化してしまう。例えば、ユーザーが電車や車の中でゲームをプレイしていた場合に、気付かないうちにユーザー自身の向きが変わり、ゲームの中のオブジェクトが思わぬ方向に体を回転してしまうことが考えられる。またＹ軸まわりの回転角θy(t)の値は、角速度ベクトルω(t)を積分したときの誤差を含むため、それが無視できないほど大きくなる可能性も考えられる。
【００７９】
しかし、これらの影響によるＹ軸まわりの回転角θy(t)の変化量は、ユーザーが意図してオブジェクトの体をコントロールしたときの変化量に比べて小さいので、上述の時刻t0におけるＹ軸まわりの回転角を表していたθ0の値を逐次変えていくことで補正することができる。
【００８０】
具体的には、現在の時刻をtjとし、時刻t0でのＹ軸まわりの回転角を表していたθ0の値を次の式のように更新する。
θ0→θ0＋s×(θy(tj)−θ0)  ……（式９）
ここで、式９のパラメータsはキャリブレーションの度合を表していて、sの値が０であればキャリブレーションの効果がまったくなくなり、sの値が１であればθ0が瞬時に現在の向きでキャリブレーションされることになる。キャリブレーションの度合がキャリブレーションの頻度に依存しないように、sの値はキャリブレーションの時間間隔に比例させるのが良い。すなわち、前回キャリブレーションしたときの時刻をtj-1とすると、sの値は次の式で求められる。
s＝C×(tj−tj-1)  ……（式１０）
ここで、Cを定数としても良く、Cはキャリブレーションの速さ（単位時間あたりにキャリブレーションされる度合）を表す。Cの適切な値は、アプリケーションにより種々変更可能であるが、１〜５秒−１程度の値を設定するのが良い。また、キャリブレーションは十分高い頻度（少なくとも１０Ｈｚ以上）で行なわれるとし、sの値が常に１よりも十分小さい値を取るようにしなければならない。
【００８１】
本実施形態では、ユーザーが激しくゲーム装置１を動かしているときにはCの値を小さくして、ほとんど動かしていないときにCの値を大きくするようにしている。例えば、Cの値を以下のように求める。
C＝C'×exp(−|ω(t)|2/Ω2)  ……（式１１）
ここで、expは指数関数を表し、Ωはあらかじめ決めておく定数で、どの程度角速度が大きくなったらsの値を小さくするのかを決定するものである。また、C'は定数で、やはり１〜５秒−１程度の値を設定するのが良い。
【００８２】
（２）打撃操作の検出
次いで、打撃検出部２１１において、ユーザーによる打撃操作によって生じ得るコントローラの回転運動の特徴を検出する打撃検出法について説明する。本実施形態では、打撃検出部２１１は２つの打撃検出法を用いており、一方は（１）角加速度を用いて打撃操作の特徴を検出する打撃検出法１、他方は（２）角速度と角加速度との両方を用いて打撃操作の特徴を検出する打撃検出法２、である。しかし、本発明の実施に必ずこれらの２つの方法が必要なわけではなく、ゲームアプリケーションの要件に応じてどちらか一方を用いることも、変更を加えた方法を用いることも可能である。なお、どちらの検出方法も誤検出を生じる可能性があるため、後述する誤検出の改善方法を組み合わせて利用するものとする。ここで誤検出とは、ユーザーが意図していないタイミングでパンチが検出されてしまうことを意味する。以下、各検出方法、及び誤検出改善方法について説明する。
【００８３】
（Ａ）打撃検出法１
角加速度を用いて打撃動作を開始するタイミングを検出する打撃検出法１とは、角速度のＹ成分であるωy(t)の単位時間あたりの変化量、すなわちＹ軸まわりの角加速度、がしきい値を越えたときに打撃を検出するものである。
【００８４】
ここで、現在の角速度のＹ成分ωy(t)を検出した時刻をtj、前回角速度が検出された時刻をtj-1とすると、時刻tjでのＹ軸まわりの角加速度をαy(tj)は、以下のように求められる。
αy(tj)＝{ωy(tj)−ωy(tj-1)}/(tj−tj-1)  ……（式１２）
このようにして得られた角加速度αy(tj)の大きさがしきい値Tαを越えたときに打撃操作が入力されたと検出する。この方法のメリットは、角加速度αy(tj)の値はユーザーが打撃操作を入力しようとしてゲーム装置１を押し出した瞬間に増加するため、ユーザーの操作に対して遅延なく打撃を検出できることである。また、ユーザーは一瞬だけ力を入れれば良く、ゲーム装置１を大きく動かさなくても打撃操作を入力することができる。
【００８５】
一方、角加速度αy(tj)の値が大きくなるのは、ゲーム装置１が急に回転し始めた瞬間だけでなく、回転していたゲーム装置１が急に止まった瞬間も含まれるため、この検出方法では、そのような瞬間に、打撃動作を誤検出してしまうことがある。この誤検出の改善方法は後述する。
【００８６】
（Ｂ）打撃検出法２
次いで、角速度と角加速度との両方を用いた打撃検出法２について説明する。ここでの検出方法とは、角加速度αy(t)を使って現在時刻tから微小時間Δt後の角速度ωy(t＋Δt)の値を予測し、その大きさをしきい値Tωと比較するという方法である。ここで、ωy(t＋Δt)の予測値をω'y(t＋Δt)と記述することにし、次のように予測する。
ω'y(t＋Δt)＝ωy(t)＋αy(t)Δt  ……（式１３）
そして、式１３で予測したω'y(t＋Δt)の大きさが、しきい値Tωを越えたときに打撃操作が入力されたと検出する。この方法のメリットは、角速度ωy(t)の値が大きくなるのがゲーム装置１が速く回転運動しているときだけであるため、打撃検出法１に比べて誤検出が少なくなることである。
【００８７】
しかし一方で、ユーザーが打撃操作を入力しようとしてゲーム装置１押し出してから、角速度ωy(t)の値が大きくなるまでには時間がかかるため、この方法では、ユーザーが打撃操作の入力を開始してから、それが検出されるまでに遅延が発生してしまうというデメリットがある。式１３のΔtはこのデメリットを軽減するためのものであるが、Δtの値が大き過ぎると角加速度の影響が大きくなり、誤検出が多くなるので、ゲームアプリケーションの要件に応じてΔtの値を調整する必要がある。遅延の軽減を優先させるのであれば、Δtの値は０．０５秒程度の大きさに設定するのが良く、誤検出を少なくしたい場合はΔtの値を０．０１秒程度に設定するのが良い。本実施形態においては、コンビネーションパンチのような連続した打撃操作の入力を、打撃操作を停止したときの反動と区別して検出するために、誤検出を少なくする設定を用いている。
【００８８】
（Ｃ）誤検出改善策
次いで、各打撃検出法で発生する打撃操作の誤検出を改善する方策を説明する。図５は、右手で打撃動作を１回入力した場合のＹ軸まわりの回転角θy(t)の変化を示したグラフであり、図６は、右手、左手の順に打撃動作を連続で入力した場合のＹ軸まわりの回転角θy(t)の変化を示したグラフである。また、図７は、右手で打撃動作を１回強く入力した場合のＹ軸まわりの回転角θy(t)の変化を示したグラフであり、図８は、右手だけで打撃動作を２回連続で入力した場合のＹ軸まわりの回転角θy(t)の変化を示したグラフである。
【００８９】
なお、図５〜図８に示すグラフの横軸は時刻tを表し、縦軸はY軸まわりの回転角θy(t)を表している。なお、各図のグラフが滑らかではなく段々になっている箇所があるのは、角速度検出部２０５と打撃検出部２１１とで動作するタイミングが異なるために生じたもので、ジャイロセンサから直接取得できる角速度の値がそこでゼロになっていたり、角加速度の値が大きくなっていたりするわけではない。
【００９０】
（ａ）一方の手で打撃操作を１回行った場合について
先ず、一方の手で打撃操作を１回行った場合について説明する。図５に示すように、ここでの操作は、グラフのＡの時点から、右手を手前に引き始めてパンチの予備操作に入り、Ｄの時点で右手を強く押し出してパンチを入力する操作を行っている。そして、Ｆの時点で押し出した手を止め、Ｇの時点では、その反動で手を引き戻している。このグラフはパンチの操作をしたときに見られる典型的なパターンを示していて、特にＧの時点での手を引き戻す動作は、ユーザーが意図して行うものではなく筋肉の反射的な動きであり、必ず見られる反応である。そして、各時点Ａ〜Ｈにおいて、誤検出が生じる可能性がある。打撃検出法１におけるしきい値Tαや、打撃検出法２におけるしきい値Tω、式１３のΔtなどの値を調整することで、誤検出をある程度軽減できるものの、いくつか抜本的な対策が必要となる時点があるため、それらの時点で生じ得る誤検出とそれに対する改善処理について説明する。
【００９１】
・Ａ時点について
予備操作を開始するＡ時点では、ユーザーがゲーム装置１を持つ手を引いたときの角加速度αy(t)を誤って検出してしまうことが生じる。この誤検出によって、ユーザーが意図していた手と反対の手で打撃操作が入力されたと判断されてしまうため、ユーザーの操作感を大きく損なうことになる。この誤検出は上記の打撃検出法１で発生するが、打撃検出法２打撃検出法２を用いる場合でも、式１３のΔtの値を大きく設定した場合に発生する可能性がある。この時点での誤検出に対しては以下の改善方法を用いる。
【００９２】
（改善処理Ａ−１）
ここでの改善処理は、制御装置本体１００に含まれている加速度センサ１６９を使うことで予備動作と打撃動作を区別するものである。つまり、加速度センサ１６９で検出された加速度のＺ成分が正であった場合は、ゲーム装置１が手前に引き戻されたことになるため、角加速度αy(t)が増加した理由を予備操作のためであると判断し、打撃操作を検出しないようにする。しかし、ユーザーが片方の手を手前に引く時は、同時にもう一方の手をわずかに押し出す傾向があり、小さな逆向きの加速度を検出してしまう場合がある。そこで加速度のＺ成分が正であるかを調べる代わりに、加速度のＺ成分がしきい値−Taよりも大きいかどうかを調べ、大きければ打撃操作を検出しないようにする。本実施形態ではTaの大きさは０．１Ｇ(重力加速度の１０分の１)程度の大きさにしている。
【００９３】
・Ｃ時点について
Ｃの時点では、予備操作でゲーム装置１を手前に引き戻す動作を止めたことによって角加速度αy(t)が大きくなり、打撃検出法１を使っている場合には誤検出が発生する。この場合、ユーザーが意図していた右手の打撃と判定されるので大きな問題はないが、Ｃ時点は、ユーザーの意図したタイミングではないため、仮にユーザーがフェイントで打撃するまねだけをした場合には誤検出となる。なお、打撃検出法２を利用する場合は、式１３のΔtの値を大きく設定し過ぎるとＣ時点で誤検出が発生する可能性があるが、Δtの値が０．０５秒程度であれば、その可能性は極めて低い。
【００９４】
（改善処理Ｃ−１）
改善処理Ｃ−１は、角加速度だけでなく角速度の向きも監視する処理である。すなわち、角加速度αy(t)の大きさがしきい値Tαを越えていても、Ｙ軸まわりの角速度ωy(t)と角加速度αy(t)の正負が異っていたり、Ｙ軸まわりの角速度ωy(t)の大きさが十分でない場合（あるしきい値T'ωよりも小さい場合）には、角加速度αy(t)の増加の理由が回転していたゲーム装置１が停止したためであると判断し、打撃操作を検出しないようにする。なお、しきい値T'ωは、打撃検出法２におけるしきい値Tωとは異なるものであり、しきい値T'ωの値はしきい値Tωに比べてかなり小さい値に設定する。
【００９５】
・Ｄ時点について
Ｄの時点は、ユーザーが打撃操作を行なった時刻なので、ここで打撃を検出するのは正しい処理だが、仮にユーザーがフェイントで打撃をするまねだけをした場合、予備操作の反動によってこの時点で打撃を検出してしまうことがある。フェイントをかける場合は反動が起きないようにユーザーに注意してもらえば良いのだが、次のような改善処理によって、フェイントが成功する確率を上げることができる。
【００９６】
（改善処理Ｄ−１）
改善処理Ｄ−１はゲーム装置１の回転が止まった瞬間を検知し、直後に反動か起こることを予測して一時的にしきい値を大きくする処理である。具体的には、まず回転が止まった瞬間を角速度ωy(t)の値がゼロになった時刻、若しくはゼロをまたいで正負が反転した時刻とする。この時刻はゲーム装置のＹ軸まわりの回転角θy(t)がピークを迎える時刻なので、ピーク時刻tpと呼ぶことにする。そして、このピーク時刻tpでの角加速度αy(tp)を使って次の条件式を満たす間は打撃を検出しないようにする。
|αy(t)| ≦ |αy(tp)|・exp(−λ(t−tp))  ……（式１４）
つまり、角加速度αy(t)がピーク時刻tpでの角加速度αy(tp)を指数関数的に減衰させた値よりも大きくならない限り打撃を検出しないようにする。式１４の右辺で算出している値はすぐに減衰してしきい値Tαより小さくなるため、この処理が適用される期間は限定的である。なお、本実施形態ではλの値には２０秒-1程度の値を用いている。
【００９７】
・Ｇ時点について
Ｇの時点では、ゲーム装置１を押し出した右手を急に止めた反動で手を引き戻そうとしたときに増加する角加速度αy(t)によって誤検出が生じる。ここでの誤検出は打撃検出法１で発生するが、打撃検出法２を用いる場合でも、式１３のΔtの値を大きく設定した場合に発生する可能性がある。ここでの誤検出は改善処理Ａ−１と改善処理Ｄ−１を適用することで防ぐことができる。しかしながら、これらの改善処理によって、本来打撃を検出しなければならない状況、即ち、ユーザーがコンビネーションパンチのような左右の連続した打撃操作をした場合に打撃の検出に失敗してしまうことがある。
【００９８】
・Ｈ時点について
Ｈ時点は、Ｇ時点と同じくゲーム装置１を急に止めた反動で手が引き戻されたときに角速度ωy(t)の大きさが増加することにより、打撃検出法２で誤検出が生じる。Ｇ時点では改善処理Ａ−１と改善処理Ｄ−１を適用することでコンビネーションパンチのような左右の連続した打撃操作の検出に失敗することがあった。そこで、Ｈ時点で反動とコンビネーションパンチを区別して検出することを試みる。そこで、まずコンビネーションパンチが入力された場合と反動によって手が引き戻された場合との違いについて分析し、次いで誤検出を防ぐための改善処理を説明する。
【００９９】
（ｂ）コンビネーションパンチの入力を行った場合
まず、打撃操作を２回連続で入力した場合について説明する。図６は右手、左手の順に打撃操作を続けて入力したときのＹ軸まわりの回転角θy(t)の変化を示したグラフである。この図では、Ｉ時点で右手を前に押し出して最初の打撃操作を入力し、Ｊ時点で右手が止まると同時に左手を押し出して２番目の打撃操作を入力していることを示している。
【０１００】
この場合において、最初の右手の打撃操作は問題なく検出可能となるが、２番目の左手による打撃の検出は問題となる。なぜなら、改善処理Ａ−１や改善処理Ｄ−１の影響でＪ時点では打撃動作を検出に失敗することがあるからである。そこで、打撃検出法２を用いてＪ時点からＭ時点にかけてしばらくの間大きい値を保っている角速度ωy(t)を検出することになるが、これを図５のＨ時点の反動による角速度と区別しなければならない。
【０１０１】
ここで、図７は、図５のＨ時点での誤検出を強調するために、力強く右手で打撃操作を入力したときのグラフであり、図８は、右手で２回続けて打撃操作をしたときのグラフである。図７では、Ｎ時点で勢いよくゲーム装置１を前に押し出し、Ｏ時点からＰ時点にかけて反動で大きくＹ軸まわりの回転角θy(t)が変化している。そのため、打撃検出法２におけるしきい値Tωの値を大きくしてもＯ時点とＰ時点の間の区間で誤検出が発生してしまう。しかしながら、図７で見られるように、反動が始まってから角速度が小さくなるまでのＯ時点とＰ時点の区間Ｔ１は、非常に短い時間（０．０５秒程度）という特徴があることから、本実施形態では、この特徴を利用して以下の改善処理を適用する。
【０１０２】
（改善処理Ｈ−１）
改善処理Ｈ−１は、打撃検出法２において、Ｙ軸まわりの回転角θy(t)がピークに達した時刻からごく短い期間は、打撃検出法２で打撃操作を検出しないようにするものである。図７を例にとると、Ｙ軸まわりの回転角θy(t)がピークに達した時点Ｏから微小期間εの間では打撃動作を検出しないようにする。この微小期間εはＴ１よりも若干長い０．０５５秒程度に設定する。これをあまり長い値に設定すると、コンビネーションパンチを検出できなくなる。
【０１０３】
なお、図６のコンビネーションパンチでは、Ｋ時点ではまだ角加速度αy(t)の大きさが小さく、角速度ωy(t)はしばらく大きな値を保っているが、図７の単独のパンチでは、Ｐ時点で既に逆方向の角加速度αy(t)が加わって減速を始めている。そのため、式１３において角加速度αy(t)を使って少し先の時刻の角加速度ω'y(t＋Δt)を予測することにより、この２つの差をより良く判別できる。
【０１０４】
また、角速度検出部２０５が６０Ｈｚ程度の頻度で動作しているとすると、角速度の検出が行なわれるのは０．０１７秒程度の間隔であり、これは区間Ｔ１と微小期間εの差分より長いため、検出処理が行なわれるタイミングによってはＨ時点やＰ時点で誤検出が発生したり、Ｋ時点でのコンビネーションパンチの検出に失敗したりする可能性がある。そこで、改善処理Ｈ−１の精度を高めるために、Ｙ軸まわりの回転角θy(t)がピークに達した時刻をより正確に知る必要がある。例えば、図７において、ピークが検出されるのはＯ時点であるが、実際にピークに逹しているのはそれより少し前の時点であると推測できる。そこで、ピークが検出された時刻をtjとし、そのひとつ前に角速度を検出した時刻をtj-1とし、次のように、時刻tjと時刻tj-1をそれぞれの時刻での角速度の大きさの比率で内分することで、ピークに逹した時刻tpを推定する。
tp＝(|ωy(tj)|tj-1＋|ωy(tj-1)|tj)/(|ωy(tj-1)|＋|ωy(tj)|)  ……（式１５）
また、ピークに逹した時刻tpから微小期間ε経過した後に始めて角速度を検出した時刻をtεとし、時刻tεにおいては、式１３の代わりに次の式で角速度の値を推測することにする。
ω'y(tp＋ε＋Δt)＝ωy(tε)＋αy(tε)(Δt＋tp＋ε−tε)  ……（式１６）
時刻tεにおいて、式１６で得られたω'y(tp＋ε＋Δt)をしきい値Tωと比較して打撃操作を検出することで、角速度検出部２０５が動作するタイミングの影響をあまり受けずに、改善処理Ｈ−１を適用することができるようになる。
【０１０５】
（ｃ）同じ手で２回続けて打撃操作を行った場合
次いで、図８に示すように、同じ手で２回続けて打撃操作を行った場合について説明する。図８では、Ｑ時点で１回目の打撃操作が入力され、Ｒ時点からＳ時点にかけて反動で右手が引き戻されている。そして、Ｓ時点からＴ時点にかけては、反動の勢いを借りて２回目の予備操作が行われ、Ｔ時点で２回目の打撃操作が入力されている。
【０１０６】
図８と図６は大変良く似ていて、区別するのが難しく見えるが、図８ではピークが検出されたＲ時点とＳ時点までの間が短く、Ｓ時点では減速を開始していて、そこからゆるやかに予備操作に入ってＴ時点に到達しているのに対し、図６ではＪ時点の直後からＭ時点の直前まで急傾斜が続いていて大きな角速度を維持しているので、ここでも改善処理Ｈ−１を適用することでこれらの違いを判断し、Ｓ時点での誤検出を防止できる。
【０１０７】
また、図６のコンビネーションパンチでは、最初の打撃操作の入力で出した手を引き戻しながら、反対の手を押し出してゲーム装置１を回転させていることから、図８で最初にパンチを出した手を予備動作のために引き戻す場合よりも、角速度が大きくなるため、打撃検出法２のしきい値Tωを少し大き目の値に設定することで、Ｓ時点での誤検出をより確実に防止できるようになる。打撃検出法２のしきい値Tωを少し大き目の値に設定することで、通常の打撃操作の入力を検出しにくくなるが、通常の打撃動作の入力は打撃検出法１で検出できるので問題ない。
【０１０８】
（４）その他の動作制御
動作制御部２１０は、打撃動作や予備動作とは異なるオブジェクトの動作を制御する機能も備えており、例えば、ボクシングゲームでは、ジャイロセンサ１６４を、プレイヤーオブジェクトに対戦相手の打撃を避ける動作をさせる制御に使うことができる。
【０１０９】
この回避の動作としては、図４（ｂ）に示すように、ゲーム装置１を前方に傾けると、オブジェクトがしゃがんでパンチを避けるように制御し、ゲーム装置１を後方に傾けると、オブジェクトがスウェーバックをしてパンチを避けるように制御し、ゲーム装置１を右に傾けると、オブジェクトの体を右に傾けてパンチを避けるように制御し、ゲーム装置１を左に傾けると、オブジェクトの体を左に傾けてパンチを避けるように制御するものである。
【０１１０】
このような操作のために、動作制御部２１０は、角速度検出部２０５によって得られたゲーム装置１の回転行列をA(t)利用する。具体的には、先ず、次式のようにベクトルyをＹ軸方向の単位ベクトルとする。
y＝(0,1,0)  ……（式１７）
そして、ゲーム開始時のゲーム装置１の回転行列をA0とし、その逆行列をA0-1とする。そして、Y軸方向の単位ベクトルyをA(t)A0-1で回転することで得られるベクトルy'(t)を、次のように求める。
y'(t)＝A(t)A0-1y  ……（式１８）
式１８で算出されたベクトルy'(t)は、ゲーム装置１のＹ軸がゲーム開始時からどれだけ傾いたかを表しているため、ベクトルy'(t)のＸ成分を左右の傾きの検出に使い、ベクトルy'(t)のＺ成分を前後の傾きの検出に使うことができる。
【０１１１】
このようにして得られた傾きの情報をアナログ値としてそのままオブジェクトの制御に使うこともできる。例えば、テニスゲームにおいては、ベクトルy'(t)のＸ成分及びＺ成分をそのままオブジェクトの前後左右の移動量に利用することができる。また、ボクシングゲームにおいても、この値に応じてオブジェクトが体を傾ける(スウェーする)角度を制御しても良い。
【０１１２】
なお、例えば、ボクシングゲームにおいては、このような処理は用いず、ベクトルy'(t)のＸ成分又はＺ成分があるしきい値を越えたときにパンチの回避行動を取るようにしても良い。この場合、ユーザーが回避行動をとろうとしてゲーム装置１を操作してから、実際に傾きがしきい値を越えるまでには時間がかかるため、ユーザーによるパンチ回避の操作の入力を検出するのに少し遅延が生じる。
【０１１３】
そこで、本実施形態では、角速度ベクトルω(t)及びその単位時間あたりの変化量から得られる角加速度ベクトルα(t)を利用して、微小時間Δt後のベクトルy'(t＋Δt)を予測することで遅延を解消する。そこで、先ず、微小時間Δt後にゲーム装置１が現在の向きからどれくらい回転するのかを、回転ベクトルΔrとして、次のように予測する。
Δr＝ω(t)Δt＋0.5×α(t)Δt2……（式１９）
そして、式１９で予測した微小時間Δt秒での回転ベクトルΔrを、次のように回転の大きさΔθと回転軸ベクトルaとに分解する。
Δθ＝|Δr|,  ……（式２０）
a＝Δr/Δθ  ……（式２１）
このようにして得られた回転角Δθと回転軸ベクトルaを使って、式１７のY軸方向の単位ベクトルyを回転したものをベクトルy''として、ベクトルy''を次のようにして求める。
y''＝(1−cosΔθ)(a・y)a＋(cosΔθ)y＋(sinΔθ)(a×y)  ……（式２２）
ここで、(a・y)はベクトルaとベクトルyの内積、(a×y)はベクトルaとベクトルyの外積を表している。そして、式１８のベクトルyの代わりに式２２で求めたベクトルy''を回転行列A(t)A0-1で回転することで、次のように微小時間Δt後のベクトルy'(t＋Δt)を予測する。
y'(t＋Δt)＝A(t)A0-1y''……（式２３）
この式２３で得られたy'(t＋Δt)をy'(t)の代わりに用いることで、パンチの回避動作の入力を検出する際の遅延を解消できる。なお、本実施形態において、微小時間Δtは０．０５秒に設定されている。
【０１１４】
上述のように、打撃動作や予備動作以外の動作についてもジャイロセンサ１６４によってオブジェクトを制御することによって、ユーザーはゲーム装置１を持つ手を動かすことに専念することができるため、ボタンなどの他の操作に気を取られることなく、思い通りにオブジェクトを操作することができるようになる。
【０１１５】
（５）動作種別選択機能
さらに、打撃検出部２１１には、タッチパネル３００などの入力部に対する入力信号の有無又は種別に応じて、打撃種類及び防御種類を変化させる機能を有している。例えば、ボクシングゲームであれば、打撃種類としては、ジャブ、ストレート、フック、ボディブロー、アッパーカット、防御種類としては頭部のカード、ボディのガードなどが考えられる。
【０１１６】
打撃検出部２１１による打撃の打ち分けは、操作位置検出部２０１ａからのタッチパネル３００に対する操作信号に応じて、選択される。具体的には、画面上には、図９に示すように、右手用及び左手用にそれぞれ打撃や防御動作の種類を選択する選択領域３０６，３０７を有している。ここで、画面右側の選択領域３０６は、右手の打撃及び防御に対する種類が割り当てられ、画面左側の選択領域３０７は、左手の打撃及び防御についての種類が割り当てられている。そして、それぞれの範囲３０６，３０７には、Ａ領域３０６ａ，３０７ａ、Ｂ領域３０６ｂ，３０７ｂ、及びＣ領域３０６ｃ，３０７ｃの３つの領域があり、各領域に応じて打撃や防御の動作が異なるように設定されている。
【０１１７】
ここで、ボクシングゲームの場合、Ａ領域３０６ａ，３０７ａには、ストレートを割り当て、Ｂ領域３０６ｂ、３０７ｂには、ボディブローを割り当て、Ｃ領域３０６ｃ、３０７ｃには、アッパーカットを割り当てることができる。すなわち、打撃操作を入力する際に、ユーザーの打撃操作を入力した側の手の指がこれらの領域のいずれかに触れていれば、その打撃操作はそこに割り当てられた打撃種類となる。また、いずれの領域にも触れていない場合にはフックの打撃動作とすることで、４種類の打撃を打ち分けられる。さらに、打撃操作が入力された時点で予備操作が小さければフックやストレートの代わりにジャブを打つようにしても良い。
【０１１８】
また、打撃操作がなければ上記の領域を防御動作にも割り当てることができる。例えば、Ａ領域３０６ａ，３０７ａが押されている間は、頭部をガードするように動作させ、Ｂ領域３０６ｂ，３０７ｂ又はＣ領域３０６ｃ，３０７ｃが押されている間は、ボディをガードするように動作させる。
【０１１９】
なお、図９に示した各領域３０６，３０７の位置、形状、及び範囲は、これに限定されるものではなく、ゲームの種類に応じて種々変更可能である。また、本実施形態では、打撃種類及び防御種類の変更にタッチパネル３００を利用したが、タッチスクリーンを持たないコントローラではボタンを使っても良い。
【０１２０】
（操作信号解析方法）
上述したような本実施形態における本発明のユーザーインターフェースシステムにおいて、コントローラから入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する操作信号解析方法について以下に説明する。図１０は、本実施形態に係る操作信号解析方法の概略を示すフローチャート図であり、図１１は、本実施形態に係るピーク検出処理のサブルーチンを示すフローチャート図である。また、図１２は、実施形態に係る打撃検出処理１のサブルーチンを示すフローチャート図であり、図１３は、実施形態に係る打撃検出処理２のサブルーチンを示すフローチャート図である。
【０１２１】
なお、本実施形態では、打撃検出処理１のサブルーチンで打撃検出法１、打撃検出処理２のサブルーチンで打撃検出法２を用いており、打撃検出法１には改善処理Ａ−１、改善処理Ｃ−１及び改善処理Ｄ−１、打撃検出法２には改善処理Ａ−１及び改善処理Ｈ−１を適用している。
【０１２２】
また、打撃検出法２では打撃操作が検出されるのが一瞬の間だけというわけではなく、しばらくの間連続して検出され続けることがある。さらに、２つの検出方法を併用するため、１つの打撃操作の入力を２回検出してしまうこともある。そこで、２重にパンチが検出されるのを防ぐために、punch変数とピーク検出処理を用いて処理している。また、ピーク検出処理は改善処理Ｄ−１及び改善処理Ｈ−１のためにも用いられる。これらの処理については後で説明する。
【０１２３】
また、本実施形態で用いられている各パラメータの値は次の通りに設定されている。先ず、打撃検出法１のしきい値Tαを３５００度/秒2に、打撃検出法２のしきい値Tωを３６０度/秒に、改善処理Ｃ−１のしきい値T'ωを９０度/秒に設定する。また、打撃検出法２の微小時間Δtを０．０１秒に、改善処理Ａ−１のTaを０．１Ｇ（Ｇは重力加速度の大きさ）に、改善処理Ｄ−１のλを２０秒-1に、改善処理Ｈ−１の微小期間εを０．０５５秒に、ピーク検出処理での定数T''ωを１８０度/秒に設定する。なお、定数T''ωは、ゲーム装置１の回転が止まった瞬間を検出するピーク検出処理で使われている定数で、ピークとピークの間におけるゲーム装置１のＹ軸まわりの角速度大きさの最大値ωmaxがT''ωを越えなければ改善処理Ｈ−１を開始しないようになっている。
【０１２４】
（１）操作信号解析方法の概要
本実施形態における、操作信号解析方法の概要について説明する。
先ず、最初のステップで、打撃検出部２１１は、打撃検出処理に必要な各変数に初期値を設定する（Ｓ１０１）。具体的には、開始時刻を変数tprevに、開始時刻におけるゲーム装置１のＹ軸まわりの角速度を変数ωprevに設定する（ωprev＝ωy(tprev)）。さらに、ピークを検出してからの経過時間であるピーク経過時間tpeekを０に設定する（tpeek＝0）。さらに、ピークとピークの間でのゲーム装置１のＹ軸まわりの角速度の大きさの最大値を表す変数ωmaxと直近のピークの時刻におけるＹ軸まわりの角加速度を表す変数αpeekを０で初期化する(ωmax＝0, αpeek＝0)。また、開始時刻では左右どちらの打撃操作も検出していないことに設定し（punch＝NONE）、コマンド待ち行列を初期化する。
【０１２５】
変数の初期化が終わると、アプリケーション実行部２０２によって、仮想空間上に配置されるオブジェクトの生成及び初期状態の設定（Ｓ１０２）が行なわれ、メインループの処理に入る。メインループに入ると、まず仮想空間及びオブジェクトの表示情報生成ステップ（Ｓ１０３）が行なわれる。この処理では、表示情報生成部２０４が、仮想空間及びオブジェクトをＬＣＤ１６５に表示するための情報を生成し、ＬＣＤ１６５と同期を取り、前回の表示情報の更新がＬＣＤ１６５上で完了するのを待ってから、新しく生成された表示情報をＬＣＤ１６５に転送する。ここで、ＬＣＤ１６５と同期を取るため、メインループはＬＣＤ１６５のリフレッシュレート（例えば６０Ｈｚ程度）の頻度で繰り返し実行されることになる。
【０１２６】
次に、打撃検出部２１１は、角速度検出部２０５で算出されたゲーム装置１の運動に係る情報を読み取り、打撃検出処理に必要な変数に読み取った値を設定する（Ｓ１０４）。具体的には、現在の時刻をtcurとし、ゲーム装置１のＹ軸まわりの角速度ωy(tcur)を変数ωcurに設定する。また、ゲーム装置１にかかる加速度のＺ成分を変数azに設定する。
【０１２７】
そして、その次のステップ（Ｓ１０５）で、前回角速度が読み取られた時刻tprevから現在時刻tcurまでの経過時間dtを計算し（dt＝tcur−tprev）、得られた経過時間dtを利用して、Ｙ軸まわりの角加速度αcurを算出する（αcur＝(ωcur−ωprev)/dt）。
【０１２８】
さらに、ステップＳ１０５では、算出した経過時間dtを用いて、ピーク経過時間tpeekの値を更新する。具体的に、ピーク経過時間tpeekを、更新前のtpeekと経過時間dtとを加算した値（tpeek＝tpeek＋dt）で更新する。
また、ピーク時刻に検出されたＹ軸まわりの角加速度αpeekを式１４の右辺のように減衰させる（αpeek＝αpeek・exp(−λdt) ）。
【０１２９】
その後、打撃検出部２１１では、一連の打撃検出ステップ（Ｓ１０６〜Ｓ１０８）が行なわれる。これらの各処理が実行された後は、次のメインループ処理のために、現在の時刻と角速度をそれぞれ変数tprev及び変数ωprevに保存し、ωmaxの値を更新しておく（Ｓ１０９）。ここでωmaxの値は更新前のωmaxの値と現在のＹ軸まわりの角速度の大きさ|ωcur|を比較して、大きい方の値で更新される。ωmaxの値は、ピーク検出処理（Ｓ１０６）の中でピークが検出される度に０にリセットされるため、前回ピークが検出されてから現在に至るまでに検出されたゲーム装置１のＹ軸まわりの角速度の大きさの最大値を表すことになる。このステップが終わると、動作制御部２１０に処理が移り、動作制御ステップ（Ｓ１１０）が実行される。動作制御ステップでは、打撃検出部２１１によって生成されたパンチコマンドをコマンド待ち行列から受け取り、オブジェクトが打撃動作を開始できる状態にあれば、コマンド待ち行列からパンチコマンドを取り出し、オブジェクトに打撃動作を開始させる。
【０１３０】
なお、動作制御ステップにおいて、動作制御部２１０は、オブジェクトが打撃動作の状態になければ、角速度検出部２０５で算出されたゲーム装置１のＹ軸まわりの回転角θ(tcur)の値に応じて、オブジェクトに打撃動作に関する予備動作を実行させる。さらに、動作制御ステップにおいては、ゲーム装置１の傾きの度合に応じて、オブジェクトの打撃回避の動作も制御する。
【０１３１】
動作制御ステップまで終了すると、アプリケーション実行部２０２は、ゲームの進行状況を確認して（Ｓ１１１）、まだ試合が終了していなければ（Ｓ１１１における“ＮＯ”）、メインループの最初のステップ（Ｓ１０３）に戻り、試合終了となった場合には（Ｓ１１１における“ＹＥＳ”）、処理を終了する。
【０１３２】
（２）ピーク検出処理
次いで、Ｓ１０６におけるピーク検出処理について説明する（図１１）。先ず、打撃検出部２１１は、前回検出した角速度と今回検出した角速度とから、ゲーム装置１の回転が停止してゲーム装置１のＹ軸まわりの回転角がピークに達したかどうかを判断する（Ｓ２０１）。具体的には、前回動作制御部２１０が実行されたときに検出されたＹ軸まわりの角速度ωprevと、現時刻におけるＹ軸まわりの角速度ωcurとの乗算値が正か負かでピークを検出したかどうかを判断する（ωcur×ωprev≦0）。
【０１３３】
前回検出した角速度ωprevと今回検出した角速度ωcurとの乗算値が正である場合には（Ｓ２０１における“ＮＯ”）、ピークを検出していないと判断して処理を終了する。一方、乗算値が０以下である場合は（Ｓ２０１における“ＹＥＳ”）、前回検出した角速度ωprevと今回検出した角速度ωcurの間で正負が逆転しているので、ピークを検出したと判断し、前回のピーク時と今回のピークとの間に検出されたＹ軸まわりの角速度の大きさの最大値ωmaxを確認する（Ｓ２０２）。
【０１３４】
もし、ωmaxの値が定数T''ωより大きい場合には（Ｓ２０２における“ＹＥＳ”）、反動が大きくなる程激しくゲーム装置１が回転した可能性があるので、ピーク検出時刻からの経過時間tpeekやピーク時刻におけるＹ軸まわりの角加速度αpeekを設定した後（Ｓ２０３）、ステップＳ２０４へ進む。これにより改善処理Ｈ−１と改善処理Ｄ−１の適用が開始される。一方、ωmaxの値が定数T''ω以下である場合には、反動が大きくなる程ゲーム装置１が回転していないので、ピーク検出時刻からの経過時間tpeekやピーク時刻におけるＹ軸まわりの角加速度αpeekを設定することなく、次のステップＳ２０４へ進む。
【０１３５】
なお、ステップＳ２０３における経過時間tpeekを設定する処理では、式１５によるピーク到達の推定時刻tpが用いられている。すなわち、ピークを検出したのが現在時刻であっても、実際にピークを越えたのは現在時刻より少し前の時刻であり、その時刻を推定して、その推定時刻から現在時刻までの経過時間をtpeekに設定する。
【０１３６】
ステップＳ２０４では、回転が停止する直前でゲーム装置１が左（反時計周り）に回転していたかどうかを判断する（Ｓ２０４）。ここで、前回検出した角速度ωprevが０よりも大きい場合には（Ｓ２０４における“ＹＥＳ”）、前回のピーク検出から左（反時計回り）に回転していると判断する。ゲーム装置１が左（反時計回り）に回転しているということは右手でパンチを繰り出す操作をしていることになる。
【０１３７】
そこで、打撃検出部２１１は、右手による打撃操作が検出されているか（punch ＝＝RIGHT）を判断する（Ｓ２０６）。右手による打撃操作が検出されている場合には（Ｓ２０６における“ＹＥＳ”）、打撃操作が終了したとして変数punchをリセット（punch ＝ NONE）する（Ｓ２０７）。右手による打撃操作が検出されていない場合には（Ｓ２０６における“ＮＯ”）変数punchをリセットすることなくステップＳ２０８に進む。
【０１３８】
一方、前回検出した角速度ωprevが０以下である場合には（Ｓ２０４における“ＮＯ”）、前回のピーク検出から右（時計回り）に回転していると判断する。ゲーム装置１が右（時計回り）に回転しているということは左手でパンチを繰り出す操作をしていることになる。
【０１３９】
そこで、打撃検出部２１１は、左手による打撃操作が検出されているか（punch ＝＝ LEFT）を判断する（Ｓ２０５）。左手による打撃操作が検出されている場合には（Ｓ２０５における“ＹＥＳ”）、打撃操作が終了したとして変数punchをリセット（punch ＝ NONE）する（Ｓ２０７）。一方、左手による打撃操作が検出されていない場合には（Ｓ２０５における“ＮＯ”）、変数punchをリセットすることなくステップＳ２０８に進む。
【０１４０】
ステップＳ２０８では、ピークを検出したので、ピークとピークの間に検出されるＹ軸まわりの角速度の大きさの最大値を表す変数ωmaxをリセットして処理を終了する。
【０１４１】
（３）打撃検出処理１
次いで、Ｓ１０７における打撃検出処理１について説明する（図１２）。この処理は、打撃検出法１に、改善処理Ａ−１、改善処理Ｃ−１及び改善処理Ｄ−１を組み合わせて打撃動作を検出するものである。
【０１４２】
先ず、打撃検出部２１１は、図１２に示すように、打撃検出法１に改善処理Ａ−１の条件を付加して、検出された角加速度が予備操作によるものかどうかを判断する。具体的には、ステップＳ１０４において取得した加速度のＺ成分azがしきい値−Taよりも大きいかを判断する（Ｓ３０１）。ここで、加速度のＺ成分azがしきい値−Taよりも大きい場合には（Ｓ３０１における“ＹＥＳ”）、検出された角加速度は予備操作によるものと判断してパンチ検出処理１を終了する。一方、加速度のＺ成分azがしきい値−Ta以下の場合には（Ｓ３０１における“ＮＯ”）、検出された角加速度は打撃操作によるものと判断する。
【０１４３】
次いで、打撃検出部２１１では、改善処理Ｃ−１及び改善処理Ｄ−１の条件を付加して、Ｓ１０４で算出したゲーム装置１のＹ軸まわりの角速度ωcurと、及びＳ１０５で算出したゲーム装置１のＹ軸まわりの角加速度αcurとの正負が同じで、かつ、Ｙ軸まわりの角速度ωcurの大きさがあるしきい値T'ωを越えるとともに、角加速度αcurがしきい値Tα及びステップＳ１０５で時間とともに減衰させたピーク時刻での角加速度αpeekを越えているかを判断する（Ｓ３０２及びＳ３０３）。
【０１４４】
ここでは、先ず、角加速度αcur及び角速度ωcurが互いに正で、かつ、角加速度αcurがしきい値Tα及びピーク時刻での角加速度αpeekを越えているか、角速度ωcurがしきい値T'ωを越えているか否かを判断する（Ｓ３０２）。全ての条件を満たす場合には（Ｓ３０２における“ＹＥＳ”）、打撃操作が入力されたと判断してステップＳ３０４へ進む。
【０１４５】
一方、Ｓ３０２の条件を満たさない場合には（Ｓ３０２における“ＮＯ”）、次に、角加速度αcur及び角速度ωcurが互いに負で、かつ、角加速度αcurがしきい値−Tα及びピーク時刻での角加速度αpeekより小さいか、角速度ωcurがしきい値−T'ωより小さいか否かを判断する（Ｓ３０３）。ここで、全ての条件を満たす場合には（Ｓ３０３における“ＹＥＳ”）、打撃操作が入力されたと判断してステップＳ３０６へ進む。一方、Ｓ３０３の条件に該当しない場合には（Ｓ３０３における“ＮＯ”）、打撃操作ではないと判断して処理を終了する。
【０１４６】
ステップＳ３０４及びステップＳ３０６では、同じ打撃操作を打撃検出処理１と打撃検出処理２で２重に検出しないようにする処理が行われる。具体的にステップＳ３０４では、punch変数を調べて、右手による打撃操作がまだ検出されていない（punch！＝RIGHT）かを判断する。ここで、右手による打撃操作がまだ検出されていない（punch！＝RIGHT）場合（Ｓ３０４における“ＹＥＳ”）、右手で打撃を行うと決定し、ステップＳ３０５においてコマンド待ち行列に“右手でパンチ”コマンドを追加するとともに、punch変数をRIGHTに設定した後、打撃検出法１を終了する。一方、ステップＳ３０４の条件に該当しない場合には、（Ｓ３０４における“ＮＯ”）、そのまま打撃検出法１を終了する。
【０１４７】
ステップＳ３０６でも、同じ打撃操作を打撃検出処理１と打撃検出処理２で２重に検出しないようにする処理が行われる。具体的にはpunch変数を調べて、左手による打撃動作がまだ検出されていない（punch！＝LEFT）かを判断する（Ｓ３０６）。左手による打撃操作がまだ検出されていない（punch！＝LIGHT）場合（Ｓ３０６における“ＹＥＳ”）、左手でパンチを行うと決定し、ステップＳ３０７においてコマンド待ち行列に“左手でパンチ”コマンドを追加するとともに、punch変数をLEFTに設定した後に打撃検出法１を終了する。一方、ステップＳ３０６の条件に該当しない場合には、（Ｓ３０６における“ＮＯ”）、そのまま打撃検出法１を終了する。
【０１４８】
なお、上記ステップＳ３０５及びＳ３０７において、パンチコマンドをコマンド待ち行列に追加する際、制御装置本体１００に配置されたタッチパネル３００に対する入力信号の有無又は種別に応じて打撃種類の選択が行なわれ、選択に応じたパンチコマンドがコマンド待ち行列に追加されるものとする。
【０１４９】
（４）打撃検出処理２
次いで、Ｓ１０８における打撃検出法２について説明する（図１３）。この処理は、打撃検出法２に改善処理Ａ−１及び改善処理Ｈ−１を組み合わせてパンチを検出するものである。先ず、打撃検出部２１１は、ステップＳ４０１において、改善処理Ｈ−１と改善処理Ａ−１を適用する。具体的には、ピーク検出処理でピークが検出されてからの経過時間tpeekが所定の微小期間εを越えているかどうか、加速度のＺ成分azがしきい値−Ta以下かどうかを確認し、打撃検出処理を行なうかどうかを判断する（Ｓ４０１）。もしいずれかの条件を満たさなければ（Ｓ４０１における“ＮＯ”）、反動を誤検出しないように打撃検出処理を終了する。
【０１５０】
次いで、打撃検出部２１１は、微小時間Δt後の角速度の予測値ω'を算出するが、その際に、前回ピークが検出されてから初めての打撃検出処理なのかどうかを判断する（Ｓ４０２）。もし、ピーク経過時間tpeekと微小期間εの差分がステップＳ１０５で算出した経過時間dtより大きければ（Ｓ４０２における“ＮＯ”）、式１３を用いて予測値ω'y(tcur＋Δt)を算出し、変数ω'に設定する（Ｓ４０３）。そうでなければ（Ｓ４０２における“ＹＥＳ”）、ピーク検出後の初めての打撃検出処理になるため、式１６を用いて予測値ω'y(tpeek＋ε＋Δt)を算出し、変数ω'に設定する（Ｓ４０４）。
【０１５１】
そして、算出したω'の値がしきい値Tωより大きく、かつ、右手による打撃動作がまだ検出されていない（punch！＝RIGHT）かを判断する（Ｓ４０５）。ステップＳ４０５の条件を満たす場合には（Ｓ４０５における“ＹＥＳ”）、右手でパンチを行うと決定し、コマンド待ち行列に“右手でパンチ”コマンドを追加するとともに、punch変数をRIGHTに設定した後（Ｓ４０６）、打撃検出処理２を終了する。ステップＳ４０５の条件のいずれかを満たさない場合には、（Ｓ４０５における“ＮＯ”）、算出したω'の値がしきい値−Tωより小さく、かつ、左手による打撃動作がまだ検出されていない（punch！＝LEFT）かを判断する（Ｓ４０７）。
【０１５２】
ステップＳ４０７の条件を満たす場合には（Ｓ４０７における“ＹＥＳ”）、左手でパンチを行うと決定し、コマンド待ち行列に“左手でパンチ”コマンドを追加するとともに、
punch変数をLEFTに設定した後（Ｓ４０８）、打撃検出法２を終了する。ステップＳ４０７の条件のいずれかを満たさない場合には、（Ｓ４０７における“ＮＯ”）、打撃検出無しとして処理を終了する。
【０１５３】
なお、上記ステップＳ４０６及びＳ４０８において、パンチコマンドをコマンド待ち行列に追加する際、制御装置本体１００に配置されたタッチパネル３００に対する入力信号の有無又は種別に応じて打撃種類の選択が行なわれ、選択に応じたパンチコマンドがコマンド待ち行列に追加されるものとする。
【０１５４】
（操作信号解析プログラム）
上述した本実施形態に係るユーザーインターフェースシステム、及び操作信号解析方法は、所定の言語で記述された操作信号解析プログラムをコンピュータ７１〜７４上で実行することにより実現することができる。すなわち、図１４に示すように、このプログラムを携帯情報端末（ＰＤＡ）に携帯電話・通信機能を統合した携帯端末機７１、クライアント側が使用するパーソナルコンピュータ７２、ネットワーク上に配置されてクライアント側にデータや機能を提供するサーバー装置７３、又はゲーム装置などの専用装置７４、又はＩＣチップ８６にインストールし、ＣＰＵ上で実行することにより、上述した各機能を有するユーザーインターフェースシステムを容易に構築することができ、及び操作信号解析方法を実行することができる。
【０１５５】
すなわち、この操作信号解析プログラムをユーザーが両手で持って操作を行なうことが可能な本体を持つゲーム装置１にインストールすることで、ゲーム装置１に、ジャイロセンサ１６４及び加速度センサ１６９等から入力される操作信号等の情報を元に、ユーザーによる打撃操作があったことを判断する打撃検出ステップを実行させることができ、打撃検出ステップが、ジャイロセンサ１６４によって連続的に検知されるゲーム装置１の角速度の一連の値を用いて、ユーザーがゲーム装置１を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得るゲーム装置１の回転運動に関する打撃操作の特徴を検出する打撃検出法を含み、打撃検出法を用いることにより、ユーザーから打撃操作の入力があったことを判断する機能を実現することができる。
【０１５６】
また、打撃検出ステップは、ジャイロセンサ１６４によって検出されるゲーム装置１の角速度を用いることによって、打撃操作がユーザーの右手によって行なわれたのか左手によって行なわれたのかを判断する機能を実現することができる。また、本実施形態では、打撃検出法のひとつとして、ジャイロセンサ１６４によって検出されるＹ軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値をしきい値と比較する方法を用いている。
【０１５７】
また、ゲーム装置１はさらに加速度センサ１６９を内部に備え、打撃検出ステップが、加速度センサ１６９により検出された加速度を用いることで、ゲーム装置１が回転運動をした際にゲーム装置１が前に押し出されているのか後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合にはゲーム装置１の回転運動は予備操作若しくは打撃操作後の反動によるものとして、打撃操作の検出を抑制する機能を実現している。
【０１５８】
また、打撃検出ステップは、ユーザーの打撃操作によるゲーム装置１の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃検出法による打撃操作の特徴の検出を制限することにより、ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する。
【０１５９】
ユーザーによる連続した打撃操作の入力を正確に検出するために、打撃検出ステップは２つの打撃検出法を備え、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることで、連続した打撃操作の検出を可能にしている。また、操作信号解析プログラムはさらに動作制御ステップを含み、ゲーム装置１から入力される情報を元に算出されるゲーム装置１の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能も実現している。また、ゲーム装置１はゲーム装置１本体に配置された入力ステップをさらに備え、打撃検出ステップにおいて、入力ステップへの入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現している。
【０１６０】
そして、このプログラムは、例えば、通信回線を通じて配布することが可能であり、またスタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。そして、このようなプログラムは、パーソナルコンピュータで読み取り可能な記録媒体８１〜８５に記録することができる。具体的には、図１４に示すような、フレキシブルディスク８３やカセットテープ８２等の磁気記録媒体、若しくはＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の光ディスク８１の他、ＵＳＢメモリ８５やメモリカード８４など、種々の記録媒体に記録することができる。
【０１６１】
（作用・効果）
このような本実施形態によれば、ゲーム装置１内にジャイロセンサ１６４を備え、このジャイロセンサ１６４によって、ゲーム装置１を持つユーザーの手の動きを検出し、ユーザーの手の動きに応じて、左右の打撃操作を認識しているので、例えば、ボクシングゲームなど左右の拳で打撃を行うゲームにおいても直感的にオブジェクトを操作でき、ユーザーはより良いゲーム体験を得ることができる。さらに本実施形態では、ジャイロセンサ１６４によって検出される角速度の向きを用いて、打撃操作の左右を区別しているので、単一の制御装置があれば良く、例えば、スマートフォンやタブレット端末などの広く普及している汎用性のある操作デバイスを利用でき、コスト全体を安価にすることができる。
【０１６２】
また、本実施形態において、動作制御部２１０が、ゲーム装置１の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させているので、打撃操作に対する反応速度を上げ、ゲームの操作感を向上させることができる。
【０１６３】
すなわち、本実施形態では、ユーザーが打撃操作を入力する際にゲーム装置１を持つ手を少し手前に引くという動作は自然であり、その動作がオブジェクトによるパンチの予備動作の結びついているため、オブジェクトはユーザーが実際に打撃操作を入力する前にパンチを放つ準備を自然にすることができる。その結果、打撃操作が入力されてから実際にオブジェクトがパンチを放つまでの時間が短縮され、ユーザーはより良いゲーム体験を得ることができる。
【０１６４】
このような、ユーザーの手の動きを検出してオブジェクトを制御する方法では、ユーザーの意図していないタイミングで打撃を検出してしまうなどの誤検出が生じる可能性があるが、本実施形態によれば、このような誤検出も防ぐことが可能となる。
【０１６５】
先ず、本実施形態において、打撃検出部２１１は、検知された加速度の向きによって、打撃操作の検出が実際にユーザーの打撃操作によるものなのか反対側の手による予備操作によるものなのかを判断して、予備操作のタイミングで打撃操作を誤検出することを防いでいる。なお、ゲームアプリケーションの要件によって、予備操作が完了するまで打撃操作を行なうことができないという条件を付加できるのであれば、加速度センサ１６９を用いなくても、予備操作が完了するまでは制御装置の回転が予備操作によるものと判断することもできる。しかし、ボクシングゲームにおいてはジャブのような予備操作なしの打撃操作もあるため、加速度センサ１６９を用いる方が望ましい。
【０１６６】
さらに、打撃検出部２１１は、ユーザーの打撃操作によるゲーム装置１の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して打撃操作の検出を制限しているので、打撃操作を停止させた時の反動を打撃操作として誤って検出するのを防止している。
【０１６７】
一方で、このように打撃操作の検出を制限することによって、コンビネーションパンチのような連続した打撃操作の検出が妨げられるという問題が発生するが、本実施形態においては、打撃検出部２１１において複数の打撃検出法を用い、そのうちの１つを打撃操作が開始された瞬間の特徴を検出する方法とし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法とすることで、コンビネーションパンチのような連続した打撃操作を、打撃操作を停止させたときの反動と区別して検出している。
【０１６８】
さらに、本実施形態では、ジャイロセンサ１６４の角速度検出とは別の検出手段であるタッチパネル３００のタッチ位置によって、ジャブ、ストレート、フックなどの打撃種類（強弱）や、ガードなど防御種類を選択することで、ユーザーの手の動きで打撃操作を入力する方法では実現が難しい打撃種類の選択や防御動作の入力を補っている。
【０１６９】
［変更例］
なお、上述した実施形態の説明は、本発明の一例である。このため、本発明は上述した実施形態に限定されることなく、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更や、それぞれの構成を組み合わせることが可能であることはもちろんである。なお、以下に変更例を示すが、本発明はこれらの変更例にも限定されることはない。特に上記の打撃検出法１や打撃検出法２、及びこれらの打撃検出法に各種の改善方法を組み合わせた方法は、ジャイロセンサ１６４を持つゲーム装置１から入力された一連の角速度の値を用いて、ユーザーが前記ゲーム装置１を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記ゲーム装置１の回転運動に関する何らかの特徴を検出し、ユーザーから打撃操作の入力があったことを判断する機能を実現するために用いることが可能であれば、他の方法に置換可能である。
【０１７０】
（１）打撃検出法について
上述した実施形態では、打撃操作の検出において、角加速度を用いた打撃検出法１と、角速度と角加速度との両方を用いた打撃検出法２とを用いたが、例えば、他の方法を用いて、ユーザーによる打撃操作を検出してもよい。以下に、他の打撃検出法について説明する。
【０１７１】
（Ａ）打撃検出法３
この打撃検出法３は、角速度のみを用いてユーザーによる打撃操作の入力があったことを検出するものである。具体的に、この打撃検出法３とは、Ｙ軸まわりの回転の角速度ωy(t)の大きさが、あるしきい値Tωを越えたときにパンチを検出するものである。この方法を用いることで、しきい値Tωの値をある程度大きく取れば、誤検出が少なくなるため実装が容易になるが、ユーザーが打撃操作を開始してから実際に打撃操作が検出されるまでに時間がかかるという欠点もある。
【０１７２】
（Ｂ）打撃検出法４
打撃検出法４としては、上述した打撃検出法２を拡張し、過去Ｍ回分のデータを使って微小時間Δt後の角速度を予測するものである。具体的に、上述した打撃検出法２は、過去２回分のデータを使って角速度ωy(t)の時間変化を直線で近似し、微小時間Δt後の角速度を予測する方法とも言えることから、この打撃検出法４では、さらに過去Ｍ回分のデータを使い、直線ではなくＮ次曲線を使って角速度の変化を予測することで精度を上げる。ここで、Ｎ次曲線は最小２乗法で求めることができるが、オーバーフィッティングを防ぐためにＮ＋１＜Ｍ である必要があり、その値はＮ＝２、Ｍ＝４又は５程度が好ましい。
【０１７３】
また、この打撃検出法４では、微小時間Δt後の予測値を得るときに高次の項の影響が小さくなるように、最小二乗法で求めるＮ次曲線は、現在の時刻のまわりで展開させる。
すなわち、経過時間Δt後の角速度ω'y(t＋Δt)が以下の形式を持つと仮定する。
ω'y(t＋Δt) ＝ a0 ＋ a1×Δt ＋ ... ＋ aN×ΔtN ……（式２４）
そして最小二乗法でパラメータa0, a1, ..., aNの値を決定し、得られたω'y(t＋Δt)の値の大きさがしきい値Tωを越えたときにパンチを検出することにする。
【０１７４】
この際、最小２乗法で得られた曲線と、過去Ｍ回分の値の誤差の２乗和の値を計算し、この値があらかじめ定められた許容２乗誤差Ｅ２と比較するものとする。そして、算出した誤差の２乗和が許容２乗誤差Ｅ２よりも大きい場合には、現在時刻のまわりの角速度の変化をＮ次曲線で近似させるには適さないため、ＮとＭの値を小さくして、再度、最小２乗法をやり直し、誤差の２乗和が許容２乗誤差Ｅ２より小さくなるまで繰り返す。そして、最終的にＮが１になってしまった場合には、打撃検出法２に切り替えてパンチを検出する。なお、許容誤差Ｅの値はしきい値Tωに対する割合(５%〜１０%程度)で設定するのが良い。
【０１７５】
（２）他のタイミングでの誤検出改善処理
次いで、上述した打撃検出法１及び打撃検出法２における他の誤検出改善処理、及び変更例で説明した打撃検出法３及び打撃検出法４についての誤検出改善処理について説明する。
【０１７６】
（ａ）一方の手で打撃動作を１回行った場合について
・Ａ時点について
予備動作を開始するＡ時点では、ユーザーがゲーム装置１を持つ手を引いたときの角加速度αy(t)を誤って検出してしまうことが生じる。この誤検出によって、ユーザーが意図していた手と反対の手で打撃を行うことになる。特に、この誤検出は上記の打撃検出法１、打撃検出法２、打撃検出法４のいずれかを用いる際に発生する可能性がある。この場合の改善方法としては、以下の改善方法を用いる。
【０１７７】
（改善処理Ａ−２）
改善処理Ａ−２は、しきい値Tαを大きくするものである。具体的には、打撃検出法１を使っている場合において、しきい値Tαを大きくすることで誤検出を防止する。なお、この場合にしきい値Tαは、Ｄの時点で検出すべき打撃操作を検出できる程度の大きさに設定する。しかし、ゲームをプレイしているうちにユーザーは興奮して、ゲーム装置１を持つ手の動きも激しくなりがちになるので、加速度を用いた改善処理Ａ−１を利用できるのであれば、その方が良い。
【０１７８】
（改善処理Ａ−３）
改善処理Ａ−３は、しきい値Tωを大きくするものである。具体的には、打撃検出法２ないし４のいずれかを使っている場合において、しきい値Tωの値を大きくすることで誤検出を防止する。この場合もしきい値Tωは、Ｄの時点で検出すべき打撃動作を検出できる程度の大きさに設定する。この場合も改善処理Ａ−１を利用できるのであれば、その方が良い。
【０１７９】
（改善処理Ａ−４）
打撃検出法２若しくは４を使っている場合の別の改善処理としては、微小時間Δtの値を小さくして、角加速度αy(t)の影響を小さくすることもできる。但し、微小時間Δtの値を小さくすると、検出の反応速度は低下する。
【０１８０】
（改善処理Ａ−５）
また、他の改善処理としては、予備操作が完了していない状態ではでは、角加速度αy(t)を検出しないように処理することもできる。すなわち、Ｙ軸まわりの回転角θy(t)の大きさが一定のしきい値Tθより大きく、かつ、Ｙ軸まわりの角速度ωy(t)と、Ｙ軸まわりの回転角θy(t)との正負が異なるときだけ打撃動作の検出を行う。この方法は、予備操作を必ず行うとしても構わないテニスゲームなどには有効であるが、予備動作なしの打撃があるボクシングゲームには適用できない。
【０１８１】
（改善処理Ａ−６）
改善処理Ａ−６では、予備操作が完了していない状態では、しきい値Tαの値を大きく設定するものである。この処理により、改善処理Ａ−２と同様に誤検出を防ぎ、予備操作中に限定することで、Ｄの時点での打撃動作を検出することができる。また、ボクシングゲームなどにも適用可能であるが、予備動作なしのジャブのような打撃の入力が難しくなる。
【０１８２】
・Ｂ時点について
Ｂの時点では、予備操作の速度の大きさが最大になり、打撃検出法２ないし４のいずれかを使っている場合に誤検出が発生する可能性がある。
【０１８３】
（改善処理Ｂ−１）
改善処理Ｂ−１は、しきい値Tωの値を大きく設定するものである。ただし、この値を大きくしすぎるとＥの時点での打撃操作が検出できず、打撃操作の入力のために、ゲーム装置１を大きく動かさなくてはいけなくなることになるため、しきい値TωをＥの時点での打撃操作が検出できる値とする。
【０１８４】
（改善処理Ｂ−２）
改善処理Ｂ−２は、改善処理Ａ−５と同様に、予備操作が完了していない状態では、打撃操作の入力を検出しない処理である。
【０１８５】
（改善処理Ｂ−３）
この改善処理Ｂ−３は、改善処理Ａ−６と同様に予備操作が完了していない状態の時だけ、しきい値Tωの値を大きくするものである。これにより、改善処理Ｂ−１と同様に誤検出を防ぎ、予備操作中に限定することで、Ｅの時点での打撃操作を検出することができる。
【０１８６】
・Ｃ時点について
Ｃの時点では、予備操作が止まったために、角加速度αy(t)が大きくなり、打撃検出法２及び４を利用する場合も、Ｃ時点で誤検出が発生する場合がある。
【０１８７】
（改善処理Ｃ−２）
打撃検出法２若しくは４を利用していて、Ｃの時点で誤検出が起きるのは、微小時間Δtの値が大きすぎるためである。そこで、改善処理Ｃ−２は、微小時間Δtの値を小さくすることでＣ時点での誤検出を防止する。
【０１８８】
・Ｆ時点について
Ｆの時点では、Ｃ時点での誤検出と同様に、打撃操作を止めたときの角加速度αy(t)が検出される。特に、ここでは、ユーザーが意図していた手とは反対の手の打撃操作と判定されることがある。ここでの誤検出の改善処理としては、上記改善処理Ｃ−１又はＣ−２を用いるものとする。
【０１８９】
・Ｇ時点について
Ｇの時点では、ゲーム装置１を押し出した右手を急に止めたときの反動で手を引き戻したときに生じる角加速度αy(t)が検出される。
【０１９０】
（改善処理Ｇ−１）
改善処理Ｇ−１は、一度打撃操作を検出したら一定時間パンチを検出しないようにするものである。具体的には、Ｄ時点で打撃操作を検出してから、所定の時間間隔δの間は打撃操作を検出しないようにする。本実施形態のボクシングゲームにおいては、オブジェクトの打撃動作は極めて速く、ユーザーが連続して打撃操作を入力できるように、時間間隔δを大きく設定することはできないが、確実に誤検出を防ぐためには、時間間隔δの値を０．２秒程度の長さに設定するのが良い。
なお、ゲームアプリケーションの要件によっては、一度打撃操作を入力したら、しばらくの間は打撃操作を行う必要がないこともある。その場合は時間間隔δの値を大きく取ることも可能である。例えば、テニスゲームの場合、一度ラケットを振ったら次の１秒程度はラケットを振る必要がないので、時間間隔δを１秒程度の大きさにすることができる。
【０１９１】
・Ｈ時点について
Ｈ時点は、打撃検出法２だけでなく、打撃検出法３及び４でも誤検出が生じる。しかし、打撃検出法３は打撃検出法２における微小時間Δtをゼロにした特殊なケースであり、打撃検出法４は打撃検出法２をさらに拡張した方法であるので、改善処理Ｈ−１をこれらの打撃検出法にも適用できる。
【０１９２】
（改善処理Ｈ−２）
また、他の改善処理としては、Ｙ軸まわりの回転角θy(t)がピークに達してから打撃検出法２で打撃操作を検出しても、所定の時間内にＹ軸まわりの回転角θy(t)が十分大きく変化するまでは、打撃操作として処理しないものである。例えば、図６のＫ時点で打撃操作が検出されても、所定の時間内にＹ軸まわりの回転角θy(t)の値がθy＝0のラインを横切るＬ時点までは検出を保留するような処理を行う。なお、この改善処理も打撃検出法３及び４に用いることもできる。この改善処理では片手で２回続けて打撃操作を行った場合の図８のＳにおいて誤検出をしてしまうため、上述した実施形態に適用するのは難しいが、ゲームアプリケーションの要件によっては十分実用可能な改善方法となり得る。
【０１９３】
（３）ユーザー環境に応じたしきい値の変更
これまでに述べた打撃検出法や改善処理において、様々なしきい値を用いてきた。これらは所定の値を持ち、改善処理Ｄ−１や改善処理Ａ−６、Ｂ−３においてはしきい値を状況に応じて変更させていた。しかし、これらのしきい値はユーザーの環境に応じて変化させても良い。つまり、ユーザーの筋力やコントローラの重さなどによって、しきい値の値を変更することで、ユーザーがより楽に打撃操作を成功させることができるようになる。これらの変更はユーザー設定により直接行なっても良いし、ユーザーに打撃操作を何回か行なってもらい、適切なしきい値を測定するという方法を取ることもできる。
【０１９４】
（４）以上の打撃検出法と改善処理を１つに統合した打撃検出の識別関数と機械学習について、これまで議論してきた打撃検出法と改善処理を一般化すれば、ユーザーによる打撃操作の入力があったかどうかは、Ｙ軸まわりの角速度ωy(t)の変化のパターン（波形）とゲーム装置１の加速度のＺ成分とを解析することで識別できる。例えば、直近に検出された１０回分の角速度の値と加速度のＺ成分の値をニューラルネットワーク等でパターン解析すれば、ニューラルネットワークを用いた識別関数を打撃検出法として用いることができる。しかし、この方法だと多層のネットワークが必要で学習に時間がかかってしまいあまり実用的ではない。そこで、直近に検出された１０回分のデータをそのまま使うのではなく、いくつかの特徴を抽出する必要がある。上記の打撃検出法１及び２，及び改善処理Ａ−１，Ｃ−１，Ｄ−１，Ｈ−１などを考慮すると、特徴としては、現在時刻tでの角速度ωy(t)及び角加速度αy(t)、ゲーム装置１の加速度のＺ成分az、式１５で推定されるＹ軸まわりの回転角がピークに逹した時刻tpにおける角加速度αy(tp)、及び時刻tpからの経過時間tpeekと時刻tpにおける角加速度αy(tp)を掛けた値(tpeek・αy(tp))、などがあれば良い。tpeekとαy(tp)を掛けた値を特徴として使うのは、式１４の右辺によるαy(tp)の減衰の計算を
αy(tp)・exp(−λtpeek) 〜αy(tp) −λtpeek・αy(tp) ……（式２５）
で近似するためである。また我々の経験では、回前に検出された加速度のＺ成分も特徴に追加することでより良い識別関数を作ることができる。
【０１９５】
また、ここで上げた特徴の他にもゲームアプリケーション固有の情報が追加されても良い。例えば、上述したボクシングゲームの実施例の場合、タッチスクリーンによって打撃種別の選択が行なわれたら、そのすぐ後に打撃操作の入力があることが予測できるので、現在選択されている打撃の種類、及び前回打撃種別の選択が行なわれてからの経過時間などが特徴として考えられる。しかし、識別関数を機械学習させるのが困難になるので、むやみに特徴を増やすのは良くない。
【０１９６】
上述したような特徴が識別関数の入力となるが、出力は、右手による打撃操作があったかどうかと、左手による打撃操作があったかどうかの、２つのブーリアン値となる。
ここで、識別関数をこれまでの議論を元にプログラミングしても良いが、ニューラルネットワーク等を用いて機械学習によって推定することもできる。また、機械学習によって、前述したようなユーザー環境に応じたしきい値の変更を行なったり、ユーザー毎の癖やゲームアプリケーションを実行しているゲーム装置の差異などを吸収したりできる可能性がある。例えば、ユーザーの筋力やゲーム装置の重さや大きさなどによって、打撃検出法１におけるしきい値Tαや打撃検出法２におけるしきい値Tω、及び改善処理Ｈ−１の微小期間εを変更した方がより正確に打撃操作を検出できるだろうし、加速度センサが配置された位置に応じて、特徴の１つであるの加速度のＺ成分azと、別の特徴である角加速度αy(t)の重みを変更することによって、改善処理Ａ−１と同様の処理をより正確に行なうことができると期待できる。
【０１９７】
ユーザーの環境毎に機械学習を行なうには、ユーザーに指定のタイミングで決められた打撃操作を行なってもらう必要があるが、それにはゲームアプリケーション内で、本来のゲームプレイとは違う、ミニゲームをプレイしてもらうのが良い。例えば、リズムに合わせてユーザーに打撃操作を行なってもらうようなゲームで、打撃のタイミングや打撃種類及び左右の区別等を画面上を流れるマーカーでユーザーに指示し、ユーザーはマーカーが決められたラインに到達するタイミングでマーカーの色や形、及びマーカーの場所に応じて決められた打撃操作を行なう。
【０１９８】
上述のようなミニゲームで機械学習の教師信号を得ることができるが、この教師信号を用いて識別関数を学習する際にも工夫が必要である。例えば、改善処理Ｈ−１について考えてみると、ピークが検出されてからのごく短い期間では打撃操作の後の反動と、コンビネーションパンチの操作の入力との区別が困難であったため、ユーザーが意図していたタイミングよりも少し遅れたタイミングで打撃を検出しなければならない。また、ユーザーは機械のように正確に指定のタイミングで打撃操作を入力できるわけでもない。そこで、ミニゲームによって指示されたタイミングで打撃操作があったとするのではなく、指示されたタイミングの近傍で、ゲーム装置１のＹ軸まわりの角加速度αy(t)の単位時間あたりの変化量が最大になった時刻を打撃操作の入力が開始された時刻とし、その時刻から角加速度αy(t)の向きが反対になる時刻、つまり角速度の大きさが最大値に逹する時刻までの間を打撃操作期間とし、教師信号は、打撃操作期間の間中で打撃操作を検出しているとする。そして、このようにして得られた教師信号を元に学習を行なう際は、打撃操作期間以外でのデータに重みをつけ、必ずしも打撃操作期間の全てのデータで打撃操作を検出しなくても良いようにする。
【０１９９】
このような機械学習によって、ユーザー毎の環境の違いを吸収し、より正確な打撃操作の検出が出来るようになるメリットがあるが、教師信号を得るためのミニゲームを用意する必要があり、また教師信号が得られたとしてもニューラルネットワークの学習に時間がかかるという課題もある。我々の経験では、５ユニットの中間層を１層だけ持つニューラルネットワークを用いて十分な性能を持つ識別関数を得ることができたが、学習には約４６００個の教師信号(パンチ６３回分)を使って約５千回のバッチ学習が必要であった。
【０２００】
また、上述した実施形態では、表示装置、演算処理装置、及びコントローラが一体になったスマートフォンやタブレット端末などの広く普及したデバイスを用いた場合を例に説明しているが、本発明は、表示装置、演算処理装置、及びコントローラが一体であることに限定されるものではなく、コントローラ、演算処理装置、及び表示装置が別々になっていてもよい。この場合では、例えば、スマートフォン等をコントローラ、スマートフォンと無線通信（Ｂｌｕｅｔｏｏｔｈ（登録商標）など）接続が可能な汎用コンピュータやゲーム機器を演算処理装置、及び演算処理装置に接続可能なテレビ機器を表示装置として用いることもできる。この場合には、大きな画面上に表示されるオブジェクトを操作することができる。
【０２０１】
さらに、例えば、スマートフォン等をコントローラ、及びスマートフォンと無線通信（Ｂｌｕｅｔｏｏｔｈ（登録商標）など）接続が可能なロボットなどの玩具を、操作の対象となるオブジェクトとして用いることもできる。この場合には、オブジェクトはロボット玩具などの駆動装置となり、動作制御部２１０はこの駆動装置に対して制御信号を送信することになる。
【０２０２】
また、本発明において、オブジェクトが必ずしも実空間若しくは仮想空間上に存在する必要もない。即ち、演算処理装置がコントローラからの入力を元に、仮想的なオブジェクトが打撃動作を行なったというシミュレーションを行ない、その結果のみを出力するようなアプリケーションにも本発明を適用することが可能である。例えば、ユーザーが打撃操作の入力を行なったことで、画面上には表示されていない仮想的なオブジェクトが打撃動作を行なったとし、画面上に表示されている別のオブジェクトが破壊されるようなゲームアプリケーションが考えられる。別の例としては、ユーザーがリズムに合わせて打撃操作を行ない、その結果によって画面上の表示を変更したり、効果音を出力するようなゲームアプリケーションが考えられる。この場合、仮想的なオブジェクトとは太鼓のバチを持つ演奏者のようなものである。
【０２０３】
１…ゲーム装置
７１…携帯端末機
７１〜７４…コンピュータ
７２…パーソナルコンピュータ
７３…サーバー装置
７４…専用装置
８１…光ディスク
８１〜８５…記録媒体
８２…カセットテープ
８３…フレキシブルディスク
８４…メモリカード
８５…ＵＳＢメモリ
８６…ＩＣチップ
１００…制御装置本体
１００…本体
１０１…アンテナ
１０２…デュプレクサ
１０３…シンセサイザ
１１０…低ノイズアンプ
１１１…ミキサ
１１２…ＩＦアンプ
１１３…直交ミキサ
１１４…コンバータ
１１５…復調器
１１６…チャネルデコーダ
１１７…音声デコーダ
１１８…コンバータ
１１９…アンプ
１２０…スピーカ
１３０…パワーアンプ
１３１…ミキサ
１３２…ＩＦアンプ
１３３…直交ミキサ
１３４…コンバータ
１３５…変調器
１３６…チャネルエンコーダ
１３７…音声エンコーダ
１３８…コンバータ
１３９…アンプ
１４０…マイク
１５０…タイムベース
１５１…ＥＥＰＲＯＭ
１５２…ＲＡＭ
１５２，ＥＥＰＲＯＭ１５１…ＲＡＭ
１５３…ＲＯＭ
１６４…ジャイロセンサ
１６５…ディスプレイ
１６５…液晶ディスプレイ
１６５…ＬＣＤ
１６６…操作ボタン
１６７…ＬＥＤ
１６８…タッチセンサ
１６９…加速度センサ
１７１…電源系電池
１７２…電源
１７３…コンバータ
１７４…バイブレータ
２００…ＣＰＵ
２０１…操作信号取得部
２０１ａ…操作位置検出部
２０２…アプリケーション実行部
２０４…表示情報生成部
２０４ａ…３Ｄ構成部
２０４ｂ…２Ｄ構成部
２０４ｃ…ＧＵＩ構成部
２０５…角速度検出部
２０６…操作デバイス
２１０…動作制御部
２１１…打撃検出部
３００…タッチパネル
３０４，３０５…パワーゲージ
３０６，３０７…選択領域
３０６ａ，３０７ａ…Ａ領域
３０６ｂ，３０７ｂ…Ｂ領域
３０６ｃ，３０７ｃ…Ｃ領域
【図１】
2016079828.tif 000003
【図２】
2016079828.tif 000004
【図３】
2016079828.tif 000005
【図４】
2016079828.tif 000006
【図５】
2016079828.tif 000007
【図６】
2016079828.tif 000008
【図７】
2016079828.tif 000009
【図８】
2016079828.tif 000010
【図９】
2016079828.tif 000011
【図１０】
2016079828.tif 000012
【図１１】
2016079828.tif 000013
【図１２】
2016079828.tif 000014
【図１３】
2016079828.tif 000015
【図１４】
2016079828.tif 000016
【手続補正書】
【提出日】平成27年10月14日(2015.10.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、
以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出部が、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラが前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項２】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項１に記載のユーザーインターフェースシステム。
【請求項３】
ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１又は２に記載のユーザーインターフェースシステム。
【請求項４】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出部は少なくとも２つの打撃検出法を備え、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項３に記載のユーザーインターフェースシステム。
【請求項５】
コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワーク等による機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出部が、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項６】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項５に記載のユーザーインターフェースシステム。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラのＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラの回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項７】
前記ユーザーインターフェースシステムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくは予備動作を実行させるための制御信号を送信する機能を持つ
ことを特徴とする請求項１ないし６のいずれかに記載のユーザーインターフェースシステム。
【請求項８】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出部が、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有する
ことを特徴とする請求項１ないし７のいずれかに記載のユーザーインターフェースシステム。
【請求項９】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含む。
３．前記打撃検出ステップが、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラが前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項１０】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項９に記載の操作信号解析方法。
【請求項１１】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項９又は１０に記載の操作信号解析方法。
【請求項１２】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項１１に記載の操作信号解析方法。
【請求項１３】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
３．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワーク等による機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出ステップが、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項１４】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項１３に記載のユーザーインターフェースシステムにおける操作信号解析方法。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラのＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラの回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項１５】
前記操作信号解析方法が、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項９ないし１４のいずれかに記載の操作信号解析方法。
【請求項１６】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項９ないし１５のいずれかに記載の操作信号解析方法。
【請求項１７】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含む。
３．前記打撃検出ステップが、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラが前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項１８】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラの自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法
を用いる請求項１７に記載の操作信号解析プログラム。
【請求項１９】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラの回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１７又は１８に記載の操作信号解析プログラム。
【請求項２０】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つ打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする、請求項２０に記載の操作信号解析プログラム。
【請求項２１】
コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
４．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワーク等による機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出ステップが、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項２２】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項２１に記載のユーザーインターフェースシステムにおける操作信号解析プログラム。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラのＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラの回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項２３】
前記操作信号解析プログラムが、前記コントローラから入力される情報を元に算出される前記コントローラの所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項１７ないし２２のいずれかに記載の操作信号解析プログラム。
【請求項２４】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項１７ないし２３のいずれかに記載の操作信号解析プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明は、上述したようなユーザーインターフェースシステム、即ち、コントローラ及びコントローラから入力される情報等を処理する演算装置を備え、演算処理装置若しくは演算処理装置で実行されるソフトウェアがコントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステム、であって、上記課題を解決するために、前記コントローラは、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持ち、前記打撃検出部は前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備え、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出部が、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラが前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
また、他の発明は、コントローラ及び前記コントローラから入力される情報等を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号等の情報を元に、ユーザーから打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能な本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラの角速度の一連の値を用いて、ユーザーが前記コントローラを両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラの回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワーク等による機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出部が、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
上記発明では、前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことが好ましい。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラのＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラの回転運動の自然な回転軸とみなせる所定の軸とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１９４
【補正方法】変更
【補正の内容】
【０１９４】
（４）以上の打撃検出法と改善処理を１つに統合した打撃検出の識別関数と機械学習について
これまで議論してきた打撃検出法と改善処理を一般化すれば、ユーザーによる打撃操作の入力があったかどうかは、Ｙ軸まわりの角速度ωy(t)の変化のパターン（波形）とゲーム装置１の加速度のＺ成分とを解析することで識別できる。例えば、直近に検出された１０回分の角速度の値と加速度のＺ成分の値をニューラルネットワーク等でパターン解析すれば、ニューラルネットワークを用いた識別関数を打撃検出法として用いることができる。しかし、この方法だと多層のネットワークが必要で学習に時間がかかってしまいあまり実用的ではない。そこで、直近に検出された１０回分のデータをそのまま使うのではなく、いくつかの特徴を抽出する必要がある。上記の打撃検出法１及び２，及び改善処理Ａ−１，Ｃ−１，Ｄ−１，Ｈ−１などを考慮すると、特徴としては、現在時刻tでの角速度ωy(t)及び角加速度αy(t)、ゲーム装置１の加速度のＺ成分az、式１５で推定されるＹ軸まわりの回転角がピークに逹した時刻tpにおける角加速度αy(tp)、及び時刻tpからの経過時間tpeekと時刻tpにおける角加速度αy(tp)を掛けた値(tpeek・αy(tp))、などがあれば良い。tpeekとαy(tp)を掛けた値を特徴として使うのは、式１４の右辺によるαy(tp)の減衰の計算を
αy(tp)・exp(−λtpeek) 〜αy(tp) −λtpeek・αy(tp) ……（式２５）
で近似するためである。また我々の経験では、１回前に検出された加速度のＺ成分も特徴に追加することでより良い識別関数を作ることができる。
【手続補正書】
【提出日】平成28年4月20日(2016.4.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラ及び前記コントローラから入力される情報を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号の情報を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、
以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出部が、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラ本体が前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項２】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラ本体の自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項１に記載のユーザーインターフェースシステム。
【請求項３】
ユーザーの打撃操作によるコントローラ本体の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１又は２に記載のユーザーインターフェースシステム。
【請求項４】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出部は少なくとも２つの打撃検出法を備え、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項３に記載のユーザーインターフェースシステム。
【請求項５】
コントローラ及び前記コントローラから入力される情報を処理する演算処理装置を備え、
前記演算処理装置若しくは前記演算処理装置で実行されるソフトウェアが前記コントローラから入力される操作信号の情報を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する手段である打撃検出部を有するユーザーインターフェースシステムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出部が、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワークを含む機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出部が、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項６】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項５に記載のユーザーインターフェースシステム。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラ本体のＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラ本体の回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項７】
前記ユーザーインターフェースシステムが、前記コントローラから入力される情報を元に算出される前記コントローラ本体の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させる機能、若しくは予備動作を実行させるための制御信号を送信する機能を持つ
ことを特徴とする請求項１ないし６のいずれかに記載のユーザーインターフェースシステム。
【請求項８】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出部が、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を有する
ことを特徴とする請求項１ないし７のいずれかに記載のユーザーインターフェースシステム。
【請求項９】
コントローラから入力される操作信号の情報を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含む。
３．前記打撃検出ステップが、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラ本体が前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項１０】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラ本体の自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法を用いる
ことを特徴とする請求項９に記載の操作信号解析方法。
【請求項１１】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラ本体の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項９又は１０に記載の操作信号解析方法。
【請求項１２】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つを打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする請求項１１に記載の操作信号解析方法。
【請求項１３】
コントローラから入力される操作信号の情報を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析方法であって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワークを含む機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出ステップが、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項１４】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項１３に記載のユーザーインターフェースシステムにおける操作信号解析方法。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラ本体のＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラ本体の回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項１５】
前記操作信号解析方法が、前記コントローラ本体から入力される情報を元に算出される前記コントローラ本体の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項９ないし１４のいずれかに記載の操作信号解析方法。
【請求項１６】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項９ないし１５のいずれかに記載の操作信号解析方法。
【請求項１７】
コントローラ本体から入力される操作信号の情報を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を含む。
３．前記打撃検出ステップが、次のいずれか若しくは両方を含む方法を用いて、前記打撃検出法によって検出された打撃操作の特徴が本当にユーザーの打撃操作によるものかを判断し、ユーザーの打撃操作によるものではないと判断した場合には、打撃操作の検出を抑制する誤検出改善処理を備える。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度を用いることで、前記コントローラ本体が前に押し出されているのか、後ろに引き戻されているのかを判断し、後ろに引き戻されていると判断した場合には打撃操作の検出を抑制する。
ｂ）前記角速度センサによって過去に検出された一連の角速度のデータを用い、前記打撃検出法によって打撃操作の特徴が検出された時点で打撃操作後の反動が起きているかを判断し、打撃操作後の反動が起きていると判断した場合には打撃操作の検出を抑制する。
４．前記打撃検出部が、前記打撃検出法及び前記誤検出改善処理を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する。
【請求項１８】
前記打撃検出法のひとつとして、
前記角速度センサによって検出される、前記打撃操作が行なわれた場合の前記コントローラ本体の自然な回転軸とみなせる所定の軸まわりの角速度の値、若しくは角速度の値の単位時間あたりの変化量、若しくは一連の角速度の値を用いて予測された微小時間先の角速度の値、若しくはこれらの値を結合することによって得られる値を、所定の、若しくは状況により変化し得る、若しくはユーザー設定やユーザーの環境によって変更可能な、しきい値と比較する方法
を用いる請求項１７に記載の操作信号解析プログラム。
【請求項１９】
前記打撃検出ステップが、ユーザーの打撃操作によるコントローラ本体の回転運動が停止した瞬間を検出し、その直後に反動が起こることを予測して前記打撃検出法による打撃操作の特徴の検出を制限することにより、前記ユーザーによる打撃操作の後の反動を誤って検出してしまうことを防ぐ機能を実現する
ことを特徴とする請求項１７又は１８に記載の操作信号解析プログラム。
【請求項２０】
ユーザーによる連続した打撃操作の入力を正確に検出するために、前記打撃検出ステップは少なくとも２つの打撃検出法を用い、１つを打撃操作が開始された瞬間の特徴を検出する方法にし、もう１つ打撃操作が行なわれている最中の特徴を検出する方法にすることを特徴とする、請求項１９に記載の操作信号解析プログラム。
【請求項２１】
コントローラ本体から入力される操作信号の情報 を元に、ユーザーが打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別し、ユーザーから前記打撃操作の入力があったことを判断する打撃検出ステップを有するユーザーインターフェースシステムにおける操作信号解析プログラムであって、以下の特徴を持つ。
１．前記コントローラが、角速度センサと、ユーザーが両手で持って操作を行なうことが可能なコントローラ本体とを持つ。
２．前記打撃検出ステップが、前記角速度センサによって連続的に検知される前記コントローラ本体の角速度の一連の値を用いて、ユーザーが前記コントローラ本体を両手で持ち左右どちらかの手を前に押し出す打撃操作を行なった際に生じ得る前記コントローラ本体の回転運動に関する前記打撃操作の特徴を検出する打撃検出法を備える。
３．前記打撃検出法として、ニューラルネットワークを含む機械学習が可能な識別関数を用い、前記識別関数がユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を習得している、若しくは機械学習によって習得可能である。
４．前記打撃検出ステップが、前記打撃検出法を用いることにより、ユーザーから打撃操作の入力があったかどうかを判断する機能を実現する若しくは機械学習によって実現することができる。
【請求項２２】
前記識別関数が、ユーザーによる前記打撃操作の入力があったかどうかを、ユーザーが前記打撃操作を止めた後の反動及びユーザーが前記打撃操作前に行なう予備動作と区別して識別する能力を、より効率的に機械学習によって習得できるように、次のａ），ｂ）いずれか若しくは両方を入力パラメータ若しくは入力パラメータを算出するためのデータとして含むことを特徴とする請求項２１に記載のユーザーインターフェースシステムにおける操作信号解析プログラム。
ａ）前記コントローラがさらに加速度センサを備え、前記加速度センサによって検出された加速度のＺ軸方向の値。
ｂ）前記コントローラ本体のＹ軸まわりの回転運動が停止した瞬間の時刻からの経過時間。
ここでＺ軸方向とは、前記打撃操作時にユーザーの手が押し出される方向とみなせる所定の方向とし、Ｙ軸とは、前記打撃操作による前記コントローラ本体の回転運動の自然な回転軸とみなせる所定の軸とする。
【請求項２３】
前記操作信号解析プログラムが、前記コントローラ本体から入力される情報を元に算出される前記コントローラ本体の所定の軸まわりの回転角と連動して、操作対象のオブジェクトに打撃動作に関する予備動作を実行させるステップ、若しくは予備動作を実行させるための制御信号を送信するステップを有する
ことを特徴とする請求項１７ないし２２のいずれかに記載の操作信号解析プログラム。
【請求項２４】
前記コントローラが、前記コントローラ本体に配置された入力部をさらに備え、
前記打撃検出ステップが、前記入力部への入力信号の有無又は種別に応じて、打撃の種別又は強弱を変化させる機能を実現する
ことを特徴とする請求項１７ないし２３のいずれかに記載の操作信号解析プログラム。
【国際調査報告】
2016079828.tif 000017
2016079828.tif 000018
2016079828.tif 000019
2016079828.tif 000020