JP6888960B2 - 振動制御システム、振動制御方法および振動制御プログラム - Google Patents

振動制御システム、振動制御方法および振動制御プログラム Download PDF

Info

Publication number
JP6888960B2
JP6888960B2 JP2017003244A JP2017003244A JP6888960B2 JP 6888960 B2 JP6888960 B2 JP 6888960B2 JP 2017003244 A JP2017003244 A JP 2017003244A JP 2017003244 A JP2017003244 A JP 2017003244A JP 6888960 B2 JP6888960 B2 JP 6888960B2
Authority
JP
Japan
Prior art keywords
vibration
vibration data
amplitude
time waveform
frequency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017003244A
Other languages
English (en)
Other versions
JP2018020089A (ja
Inventor
孝文 青木
孝文 青木
圭 山下
圭 山下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to US15/656,240 priority Critical patent/US10556176B2/en
Priority to EP17183179.5A priority patent/EP3275517B1/en
Publication of JP2018020089A publication Critical patent/JP2018020089A/ja
Application granted granted Critical
Publication of JP6888960B2 publication Critical patent/JP6888960B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)

Description

本技術は、ユーザに振動を与えることができる振動制御システム、その振動制御システムでの方法、およびその振動制御システムに向けられたプログラムに関する。
従来から、振動を利用したゲーム処理が提案されている。特開2006−068210号公報(特許文献1)は、キャラクタの表示態様の違いに応じて振動を変化させるので、新しい操作感を得ることができる構成を開示する。特開2013−236909号公報(特許文献2)は、グリップ部の内部に、情報処理装置からの制御信号に基づいて振動を発生させる振動部が配置されている構成を開示する。
特開2006−068210号公報 特開2013−236909号公報
本技術は、複数種類の振動をユーザに対して与える際の自由度を高める方法を提供するものである。
本実施の形態に従う振動制御システムは、第1の時間波形を示す第1の振動データを発生する第1の振動指令発生手段と、第2の時間波形を示す第2の振動データを発生する第2の振動指令発生手段と、第1の振動指令発生手段が発生した第1の振動データおよび第2の振動指令発生手段が発生した第2の振動データが入力された場合に、第1の振動データが示す第1の時間波形の振幅と第2の振動データが示す第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択する選択手段と、選択手段が選択した振動データに基づいて端末を振動させる振動制御手段とを含む。
選択手段は、第1の時間波形の周波数および第2の時間波形の周波数の異同によらず、振幅が大きい方の時間波形を示す振動データを選択してもよい。
第1の振動データは、第1の時間波形の周波数を示す値と振幅を示す値との組み合わせであってもよい。第2の振動データは、第2の時間波形の周波数を示す値と振幅を示す値との組み合わせであってもよい。第1の振動指令発生手段は、所定周期毎に第1の振動データを更新してもよい。第1の振動指令発生手段は、所定周期毎に第2の振動データを更新してもよい。
第1の振動指令発生手段は、第1の振動データを含む複数の振動データを同時に発生してもよい。第2の振動指令発生手段は、第2の振動データを含む複数の振動データを同時に発生してもよい。
選択手段は、第1の振動指令発生手段が発生した複数の振動データ、および、第2の振動指令発生手段が発生した複数の振動データが入力された場合に、第1の振動指令発生手段が発生した複数の各振動データと、第2の振動指令発生手段が発生した複数の各振動データとについて、それぞれの振動データが示す時間波形の振幅に基づいて、所定期間毎に
、振幅が最も大きい時間波形を示す振動データを含む方の複数の振動データをそれぞれ選択してもよい。
選択手段は、第1の振動指令発生手段が発生した第1の振動データを含む複数の振動データ、および、第2の振動指令発生手段が発生した第2の振動データを含む複数の振動データが入力された場合に、第1の振動指令発生手段が発生した複数の振動データが示す振幅の合計と第2の振動指令発生手段が発生した複数の振動データが示す振幅の合計とに基づいて、所定期間毎に、振幅の合計が大きい方の複数の振動データを選択してもよい。
第1の振動指令発生手段は、第1の振動データに加えて、第3の時間波形を示す第3の振動データを発生してもよい。第2の振動指令発生手段は、第2の振動データに加えて、第4の時間波形を示す第4の振動データを発生してもよい。選択手段は、第1の振動指令発生手段が発生した第1の振動データおよび第3の振動データ、ならびに、第2の振動指令発生手段が発生した第2の振動データおよび第4の振動データが入力された場合に、第1の振動データが示す第1の時間波形の振幅と第3の振動データが示す第3の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択し、第2の振動データが示す第2の時間波形の振幅と第4の振動データが示す第4の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択を発生してもよい。
第1の振動データは、第1の時間波形の周波数を示す値および振幅を示す値の組み合わせであってもよい。第2の振動データは、第2の時間波形の周波数を示す値および振幅を示す値の組み合わせであってもよい。第3の振動データは、第3の時間波形の周波数を示す値および振幅を示す値の組み合わせであってもよい。第4の振動データは、第4の時間波形の周波数を示す値および振幅を示す値の組み合わせであってもよい。第1の振動指令発生手段は、所定周期毎に第1の振動データおよび第3の振動データを更新してもよい。第2の振動指令発生手段は、所定周期毎に第2の振動データおよび第4の振動データを更新してもよい。
第3の時間波形の周波数は第1の時間波形の周波数より低く、第4の時間波形の周波数は第2の時間波形の周波数より低くてもよい。
振動制御システムは、ゲームアプリケーションを実行するゲーム進行手段をさらに含んでいてもよい。第1の振動指令発生手段は、ゲーム進行手段が発生するイベントに応じて、第1の振動データを発生してもよい。第2の振動指令発生手段は、ゲーム進行手段が発生するイベントに応じて、第2の振動データを発生してもよい。
第1の振動指令発生手段は、ゲーム進行手段が発生する第1のイベントに応じて、第1の振動データを発生してもよい。第2の振動指令発生手段は、第1のイベントとは異なる第2のイベントに応じて、第2の振動データを発生してもよい。
ゲーム進行手段は、ユーザ操作に応じて、イベントを発生してもよい。
第1の時間波形は、弱く継続的な振動を示すものであってもよい。第2の時間波形は、強く短い振動を示すものであってもよい。
端末は、複数の共振周波数を有する振動子を含む。第1の時間波形の周波数および第2の時間波形の周波数は、振動子の共振周波数に応じて設定されてもよい。
本実施の別の形態に従う振動制御方法は、第1の時間波形を示す第1の振動データを発生するステップと、第2の時間波形を示す第2の振動データを発生するステップと、第1
の振動データおよび第2の振動データが入力された場合に、第1の振動データが示す第1の時間波形の振幅と第2の振動データが示す第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップと、選択された振動データに基づいて端末を振動させるステップとを含む。
本実施の別の形態に従えば、端末のコンピュータで実行される振動制御プログラムが提供される。コンピュータに、第1の時間波形を示す第1の振動データを発生するステップと、第2の時間波形を示す第2の振動データを発生するステップと、第1の振動データおよび第2の振動データが入力された場合に、第1の振動データが示す第1の時間波形の振幅と第2の振動データが示す第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップと、選択された振動データに基づいて端末を振動させるステップとを実行させる。
本実施の別の形態に従えば、端末のコンピュータで実行される振動制御プログラムが提供される。振動制御プログラムは、コンピュータに、第1の時間波形を示す第1の振動データおよび第2の時間波形を示す第2の振動データを受付けるステップと、第1の振動データおよび第2の振動データが入力された場合に、第1の振動データが示す第1の時間波形の振幅と第2の振動データが示す第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップとを実行させる。
本技術によれば、複数種類の振動をユーザに対して与える際の自由度を高めることができる。
本実施の形態に従うゲームシステムの使用形態の一例を示す模式図である。 本実施の形態のゲームシステムに含まれる処理装置の構成例を示す模式図である。 本実施の形態のゲームシステムに含まれるコントローラの構成例を示す模式図である。 本実施の形態に従うゲームシステムにおける振動部を制御するための処理の一例を説明するための図である。 本実施の形態に従うゲームシステムにおける振動部を制御するための処理の一例を説明するための図である。 本実施の形態に従うゲームシステムにおいて振動波形を時間領域で指定する方法を説明するための図である。 本実施の形態に従うゲームシステムにおいて振動波形を周波数領域で指定する方法を説明するための図である。 本実施の形態に従う選択方式に従う振動パターンの合成方法を説明するための図である。 本実施の形態に従う選択方式に従う合成方法の実装例を示す模式図である。 本実施の形態に従う選択方式に従う合成方法の別の実装例を示す模式図である。 本実施の形態に従う加算方式に従う振動パターンの合成方法を説明するための図である。 本実施の形態に従う加算方式に従う合成方法の実装例を示す模式図である。 本実施の形態に従う合成モジュールを多段接続した場合の構成例を示す模式図である。 本実施の形態に従うゲームシステムに実装される機能的構成の要部を示すブロック図である。 本実施の形態に従うゲームシステムにおける駆動信号の生成処理を説明するための模式図である。 本実施の形態に従うゲームシステムにおける駆動信号の時間波形の連続性を保つための処理を説明するための模式図である。 本実施の形態に従うゲームシステムにおいて生成される駆動信号の時間波形の一例を示す図である。 本実施の形態に従うゲームシステムにおける参照テーブルを利用して駆動信号を生成する処理を説明するための図である。 本実施の形態に従うゲームシステムにおける変化量緩和処理を説明するための図である。 本実施の形態に従うゲームシステムにおいて振動部の制御に係る振動制御プログラムの配布形態の一例を示す模式図である。 本実施の形態に従うゲームシステムにおいて実行される処理手順を示すフローチャートである。
本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
本実施の形態に従う振動制御システムの一例として、据置型のゲーム装置および振動するコントローラ端末を含む構成について例示する。但し、本件発明の振動制御システムは据置型のゲームシステムのみに適用されるものではなく、携帯型ゲーム装置やスマートフォンをゲーム装置としてゲームが実行されるような場合にも適用できる。その場合、携帯型ゲーム装置やスマートフォン自体が振動する「端末」となり得る。また、振動を発生する装置を含むシステムであれば、どのような構成に対しても、振動制御システムを適用することができる。
[A.装置構成]
まず、本実施の形態に従うゲームシステムに係る装置構成について説明する。
(a1:ゲームシステム全体)
図1は、本実施の形態に従うゲームシステム1の使用形態の一例を示す模式図である。図1を参照して、ゲームシステム1は、処理装置100と、処理装置100と無線通信可能なコントローラ200とを含む。説明の便宜上、1つのコントローラ200が処理装置100と無線通信を行なう例を示すが、複数のコントローラ200が処理装置100と無線通信を行なうようにしてもよいし、コントローラ200に加えて、別の種類のコントローラが処理装置100と通信を行なうようにしてもよい。処理装置100とコントローラとの間の通信手段については、無線通信を採用してもよいし、有線通信を採用してもよい。さらに、専用のコントローラ200に代えて、携帯型ゲーム装置またはスマートフォンなどをコントローラとして用いるようにしてもよい。
処理装置100には、家庭用テレビジョン受像機などの表示装置300が接続されている。処理装置100は、ゲームシステム1において各種処理を実行する主体であり、アプリケーションプログラムを実行し、その実行により生成される画像(静止画像および動画像を含み得る)や音声を表示装置300などへ出力する。また、処理装置100に予め実装されているメニュー画面なども表示装置300などへ出力される。処理装置100で実行されるアプリケーションプログラムは、着脱可能な記憶媒体や、インターネットなどを通じて流通する。本実施の形態では、DVD(Digital Versatile Disk)などの光学記録媒体8から取得される。
(a2:処理装置)
図2は、本実施の形態のゲームシステム1に含まれる処理装置100の構成例を示す模式図である。図2を参照して、処理装置100は、一種のコンピュータであり、システムLSI(Large Scale Integration)110と、フラッシュメモリ116と、外部メモリ
118と、コントローラインターフェイス120と、同期ボタン122と、ネットワーク無線通信モジュール130と、近距離無線通信モジュール140と、ディスクドライブ150と、映像音声出力ドライバ160とを含むコンピュータである。
システムLSI110は、処理装置100における処理エンジンであり、CPU(Central Processing Unit)102と、GPU(Graphical Processing Unit)104と、メインメモリ106と、VRAM(Video Random Access Memory)108とを含む。CPU102は、基本システムプログラムやアプリケーションプログラムなどを実行する。GPU104は、主として表示に係る処理を実行する。メインメモリ106は、CPU102でのプログラム実行に必要な一時データを保持するワーキングメモリとして機能する。VRAM108は、GPU104での処理によって生成された画像を表示するためのワーキングメモリとして機能する。なお、システムLSI110に含まれるすべてのコンポーネントを単一のLSIに実装する必要はなく、その一部をLSI外に実装してもよい。
フラッシュメモリ116は、システムLSI110からアクセス可能になっており、基本システムプログラムやアプリケーションプログラムなどを不揮発的に保持する。例えば、フラッシュメモリ116は、本実施の形態に従うアプリケーションプログラム180を格納する。外部メモリ118は、システムLSI110内のメインメモリ106と連携してワーキングメモリとして機能する。
コントローラインターフェイス120は、図示しないコントローラを有線接続するためのコネクタおよび回路を含む。コントローラインターフェイス120は、有線接続されたコントローラとの間で、当該コントローラに対するユーザ操作を示す信号(操作情報)を遣り取りする。
ネットワーク無線通信モジュール130は、図示しないアクセスポイントなどと無線通信するための各種回路を含む。処理装置100は、ネットワーク無線通信モジュール130を介して、インターネットなどに接続する。ネットワーク無線通信モジュール130が用いる無線通信の方式としては、例えばIEEE802.11nの規格に準拠した方式の無線LAN、LTE(Long Term Evolution)やWiMAX(登録商標)などのモバイル
通信などが挙げられる。
近距離無線通信モジュール140は、コントローラ200(図1)などと無線通信するための各種回路を含む。処理装置100は、近距離無線通信モジュール140を介して、コントローラ200からの操作情報を受取る。近距離無線通信モジュール140が用いる無線通信の方式としては、例えばBluetooth(登録商標)の規格に従う方式、IRDA(Infrared Data Association)の規格に従う赤外線通信などが挙げられる。
これらの通信モジュールは、各通信方式に応じた構成が採用される。2つの通信モジュールの全部または一部を物理的に一体化した構成を採用することもできる。
ディスクドライブ150は、光学記録媒体8からデータを読み出して、その読み出したデータをシステムLSI110などへ出力する。映像音声出力ドライバ160は、システムLSI110から出力される映像信号および音声信号を表示装置300へ出力する。
(a3:コントローラ)
図3は、本実施の形態のゲームシステム1に含まれるコントローラ200の構成例を示す模式図である。図3を参照して、コントローラ200は、コントローラ制御部202と、ボタン類210と、アナログスティック212L,212Rと、振動部220と、センサ類230と、近距離無線通信モジュール240とを含む。
コントローラ制御部202は、コントローラ200における処理エンジンであり、例えば、マイコン等によって実装される。コントローラ制御部202は、ボタン類210および/またはアナログスティック212L,212Rに対するユーザ操作を示す信号(操作情報)、ならびに、センサ類230での検出結果などを収集して、近距離無線通信モジュール240を介して処理装置100へ送信する。また、コントローラ制御部202は、処理装置100からの振動に関する指令(以下、「振動指令」とも称す。)を受けて、振動部220を駆動する。
ボタン類210は、Aボタン210Aと、Bボタン210Bと、Xボタン210Xと、Yボタン210Yと、Lボタン210Lと、Rボタン210Rと、十字ボタン210Cとを含む。各ボタンは、ユーザ操作に応じて押下された信号をコントローラ制御部202へ出力する。
アナログスティック212L,212Rは、スティック部材の傾倒方向および傾倒量に応じた方向および大きさ、および、スティック部材の押下げ有無の操作情報を処理装置100へ出力する。
振動部220は、コントローラ200を把持するユーザに対して振動による知覚刺激を与える。具体的には、振動部220は、増幅器212および振動子214を含む。増幅器212は、コントローラ制御部202からの振動指令を増幅し、その増幅した振動指令で振動子214を駆動する。本実施の形態においては、複数の共振周波数を有する振動子214が採用されてもよい。このような複数の共振周波数を有する振動子214を採用することで、共振周波数近傍の周波数で励振することで、ユーザに対してより効率的に振動刺激を与えることができ、また、ユーザに対して多様な振動刺激を与えることができる。
センサ類230は、コントローラ200の動きおよび/または姿勢に関する情報を検出し、その検出結果を処理装置100へ出力する。本実施の形態においては、具体的には、センサ類230は、加速度センサ232および角速度センサ234を含む。加速度センサ232は、1または複数の軸方向(典型的には、互いに直交する3軸方向)に沿った直線加速度の大きさを検出する。角速度センサ234は、1または複数の軸回り(典型的には、互いに直交する3軸回り)の角速度を検出する。センサ類は、加速度センサと角速度センサのいずれか一方のみをコントローラに搭載してもよいし、両方をコントローラに搭載してもよい。
近距離無線通信モジュール240は、処理装置100と無線通信するための各種回路を含む。コントローラ制御部202は、近距離無線通信モジュール240を介して処理装置100との間でデータを遣り取りする。近距離無線通信モジュール240が用いる無線通信の方式としては、処理装置100の近距離無線通信モジュール140が用いる無線通信の方式と適合させることが好ましい。
[B.概要]
本実施の形態に従うゲームシステム1は、ゲーム処理の進行に応じた振動による知覚刺激をユーザに対して効果的に与える機能を有している。以下、この振動による知覚刺激を与える機能について説明する。
図4および図5は、本実施の形態に従うゲームシステム1における振動部220を制御するための処理の一例を説明するための図である。例えば、ゲーム処理の進行に応じて2種類の振動による知覚刺激をユーザに与えるようなアプリケーションを想定する。このような場合、それぞれの振動を発生する振動源1および振動源2が予め用意されているものとする。それぞれの振動源が発生する振動の時間波形を合成して、コントローラ200の振動部220を振動させる。ここで、振動源は、振動波形を示す情報を出力する機能に相当し、例えば、振動波形を示すパラメータを出力するプログラムにより実装される。
振動源1は、第1の時間波形を示す第1の振動データを発生する第1の振動指令発生機能に相当し、振動源2は、第2の時間波形を示す第2の振動データを発生する第2の振動指令発生手機能に相当する。振動源1および振動源2は、同一のプログラム上で実装されてもよいし、異なるプログラムにより実装されてもよい。
例えば、図4に示すように、ゲーム空間内において、岩のオブジェクトが坂を転がり、途中で障害物にぶつかるようなゲーム処理を想定する。このようなゲーム処理において、岩が坂を転がるというイベントに応じて発生する振動(振動源1が発生する振動の時間波形)と、障害物にぶつかるというイベントに応じて発生する振動(振動源2が発生する振動の時間波形)とを合成して、実際にコントローラ200を振動させるための振動の時間波形を合成する。
図5に示すように、振動源1が発生する振動の時間波形は、振幅の絶対的な大きさが小さいものを想定する。振動源2が発生する振動の時間波形は、振幅の最大値(ピーク値)が大きく、かつ、振幅の時間的変化が急峻(すなわち、主周波数成分が高い)ものを想定する。
本実施の形態に従うゲームシステム1においては、1または複数の振動源を予め用意しておき、イベントに応じてそれぞれの振動源が発生させる振動波形を合成してコントローラ200を振動させる。振動の振幅を単純に足し合わせて出力した場合、合成後の振動の振幅が、コントローラ200で再現できる振幅(すなわち、振動子の最大変位)を越えてしまう場合がある。越えてしまった範囲では振動の変化が表現できず、結果的に、想定していた振動刺激をユーザに与えることができない可能性がある。
このような事態を回避するために、予め用意する振動源からの振動の時間波形を、それぞれ足し合わせても大きくなりすぎないように調整する必要がある。一方で、それぞれの振動源は対応するイベントに応じて振動の時間波形を出力するので、実際のゲーム処理でどのように振動が足し合わせるかを予め完全に予想することは難しい。
このような課題に対して、本実施の形態に従う合成方法を用いることにより、足し合わせたときの振動をいちいち考慮せずに振動源を設定でき、イベントに応じた適切な振動刺激をユーザに与えることができる。
本実施の形態に従うゲームシステム1では、複数の振動源からの信号を適切に合成し、合成した結果に基づいて、ユーザに対してゲーム進行に応じた適切な振動刺激を与えることができる機能を提供する。
[C.振動波形の指定方法]
まず、本実施の形態に従うゲームシステム1における振動波形の指定方法について説明する。各振動波形は、振動部220の振動子214(図3参照)の変位に対応した振動の時間波形(時間軸波形)を示す。振動波形を指定する方法としては、典型的に、時間領域
での指定および周波数領域での指定が挙げられる。以下、それぞれの指定方法について説明する。
(c1:時間領域での指定)
図6は、本実施の形態に従うゲームシステム1において振動波形を時間領域で指定する方法を説明するための図である。図6を参照して、任意の振動波形(すなわち、振動の時間波形)が指定されると、その振動波形のサンプリング周期(例えば、数十μsec〜数千μsec)毎の変位(振動モータまたは振動子の基準位置からの移動量)に対応する値(例えば、電圧値)の時間変化を、例えば、データ集合(A1,A2,A3,…,An)として指定することができる。このデータ集合に基づいて、変位を時間的に変化させることで、目的の振動波形の時間波形を再現できる。このデータ集合は、指定された振動の時間波形を示す振動データに相当する。
(c2:周波数領域での指定)
図7は、本実施の形態に従うゲームシステム1において振動波形を周波数領域で指定する方法を説明するための図である。図7を参照して、任意の振動の時間波形が指定されると、その時間波形を所定時間幅(例えば、5msec〜数10msec)の単位区間(すなわち、サンプリング区間)T1,T2,T3,…に区切り、各単位区間の時間波形を周波数分解する。周波数分解の結果に含まれる、周波数成分と振幅との組み合わせのうち、主たる成分のみを抽出して、各単位区間を代表する値とする。
このような手法を採用することで、目的の振動波形を周波数fと振幅αとの組み合わせからなる、データ集合{(f11,α11),(f12,α12)},{(f21,α21),(f22,α22)},{(f31,α31),(f32,α32)},…,{(fn1,αn1),(fn2,αn2)}として指定することができる。このデータ集合に基づいて、サンプリング周期毎に対応する周波数および振幅の情報に基づいて振動波形を生成することで、目的の振動波形を再現できる。このデータ集合は、指定された振動の時間波形を示す振動データに相当する。図7に示す例では、周波数分解の結果に含まれる2つの主成分を抽出し、これらの2つの主成分で対応する単位区間の振動波形を表現する。図7で示したように、特に特徴的な周波数が2つ含まれた波形であれば、2つの主成分でおおよそ希望の波形を示すことが可能である。
なお、目的の振動波形を、周波数を示す値および振幅を示す値からなる組み合わせの1つまたは2つで指定する場合を例示したがこれに限らず、周波数を示す値および振幅を示す値からなる組み合わせをより多く用いて振動波形を指定するようにしてもよい。本実施の形態に従うゲームシステム1においては、コントローラ200に配置される振動子214が2つの共振周波数を有しているので、この2つの共振周波数に応じて、2つの周波数成分を含む振動波形を用いてもよい。また、振動の時間波形を周波数分解することで周波数と振幅のデータを得るのではなく、周波数と振幅を直接指定して、当該指定した周波数と振幅で示される時間波形を示すデータとして用いてもよい。
すなわち、各振動波形は、振動子214の共振周波数に対応させて、低周波成分と高周波成分とを含む時間波形を示すようにしてもよく、低周波成分を指定するための周波数および振幅の組と、高周波成分を指定するための周波数および振幅の組とにより規定されてもよい。この場合、第1の振動波形を構成する低周波成分の周波数および高周波成分の周波数、ならびに、第2の振動波形を構成する低周波成分の周波数および高周波成分の周波数は、振動子214が有する複数の共振周波数のいずれかに対応するように設定されることが好ましい。このように、振動パターンに含まれる各時間波形の周波数は、振動子の共振周波数に応じて設定されてもよい。
説明の便宜上、以下では、主として、振動波形を周波数領域で指定する方法を例にして説明する。すなわち、以下の説明においては、端末(以下の例では、コントローラ200)を振動させるための時間波形を示す振動データとして、当該時間波形を示す周波数および振幅の組み合わせを採用した場合の処理を説明する。振動データは、振動部220の振動子214を駆動するための駆動信号に相当する時間波形を示すことになる。また、周波数および振幅の組み合わせの1つまたは複数を「振動パターン」と称することもある。本明細書において、「振動パターン」は、指定された振動の時間波形およびそれを定義する振動データの両方を包含し得る概念である。但し、振動波形を時間領域で指定する方法でも同様に適用できることは自明である。
[D.振動パターンの合成方法]
次に、本実施の形態に従うゲームシステム1における振動パターンの合成方法について説明する。振動パターンを合成する方法として、典型的には、選択方式および加算方式が挙げられる。以下、それぞれの合成方法について説明する。
(d1:選択方式)
本実施の形態に従う振動パターンの合成方法の選択方式においては、入力された振動パターンについて、所定期間毎にいずれか1つを選択して出力する。1つの実施態様として、一方の振動パターンが示す時間波形の振幅および他方の振動データが示す他方の時間波形の振幅に基づいて、所定期間毎に、2つの振動パターンのうちいずれか一方を選択的に出力する。より具体的には、振動源から発生された第1の振動データ(振動パターン)および第2の振動データ(振動パターン)が入力された場合に、第1の振動データが示す第1の時間波形の振幅と第2の振動データが示す第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択する。
図8は、本実施の形態に従う選択方式に従う振動パターンの合成方法を説明するための図である。図8には、例えば、振動パターン1と振動パターン2とが入力された場合を示す。振動パターン1は、いわば、弱く継続的な振動を指定しており、振動パターン2は、いわば、強く短い振動を指定している。
合成モジュールは、所定期間毎(例えば、5msec〜数10msec)にいずれの振動パターンの振幅が大きいのかを判断し、より振幅の大きな振動パターンを選択して出力する。所定期間毎に出力される信号によって合成パターンが生成される。典型的には、合成モジュールは、各周期の開始タイミングにおいて、入力されている振動パターンを比較して、出力すべき振動パターンを決定する。そして、次の周期の到来まで、当該出力される振動パターンの決定を維持する。この場合、選択されない振動パターンの部分については、破棄されることになる。
ここで、「所定期間」とは、上述したような判断処理を含む各種処理が実行される周期を意味し、その長さおよび開始・終了タイミングは振動波形に関連付けて設定されてもよい。入力される振動波形の変位が予め定められたサンプリング周期毎に定義されているような場合には、サンプリング周期と同じ期間またはサンプリング周期の整数倍に設定されることが好ましい。
このような選択方式を採用することで、図8の振動パターン1が指定する、弱く継続的な振動の中に含まれる、強く短い振動をユーザに対して知覚させることができる。
図9は、本実施の形態に従う選択方式に従う合成方法の実装例を示す模式図である。図9には、振動パターン1および2の各々を周波数および振幅からなる組み合わせの1つで指定する場合の実装例を示す。振動パターン1を指定する周波数f1および振幅α1なら
びに振動パターン2を指定する周波数f2および振幅α2については、所定周期毎に更新されることが想定されている。
図9を参照して、合成モジュールは、各所定期間において、入力される振動パターン1の振幅α1と振動パターン2の振幅α2とを比較し、その値がより大きな振動パターンを有効な出力として選択する。すなわち、合成モジュールは、各所定期間において、関数max(α1,α2)の出力結果に従って、いずれか一方の振動パターンを指定する周波数fおよび振幅αを出力する。
このとき、振動パターン1の周波数f1および振動パターン2の周波数f2については考慮されず、各振動パターンの振幅のみが比較対象とされる。このように、選択方式においては、振動パターン1が示す時間波形の周波数f1および振動パターン2の時間波形の周波数f2の異同によらず、振幅の大きい方の時間波形を示す振動データが選択される。このような構成を採用することで、判断処理をより簡素化できる。
また、振動パターンが周波数および振幅の値の組み合わせによって示されているため、追加の処理を行なわなくても、振幅の比較による振動の強さを比較できる。このような方法を用いて、サンプリング周期に合わせて比較を行なうことで、所定期間中の振幅はひとつのパラメータで表されるので、比較を容易にできる。
図10は、本実施の形態に従う選択方式に従う合成方法の別の実装例を示す模式図である。図10には、振動パターン3および4の各々を低周波数帯の周波数および振幅からなる組み合わせおよび高周波数の周波数および振幅からなる組み合わせの2つの組み合わせで指定する場合の実装例を示す。すなわち、振動パターン3は、低周波側の周波数f3Lおよび振幅α3L、ならびに、高周波側の周波数f3Hおよび振幅α3Hで指定される。また、振動パターン4は、低周波側の周波数f4Lおよび振幅α4L、ならびに、高周波側の周波数f4Hおよび振幅α4Hで指定される。
このように、1つの振動源である第1の振動指令発生機能は、第1の振動データを含む複数の振動データ(この例では、第1の周波数(f3L)と第1の振幅(α3L)を示す値との組み合わせと、第2の周波数(f3H)と第2の振幅(α3H)を示す値との組み合わせ)を同時に発生し、別の振動源である第2の振動指令発生機能は、第2の振動データを含む複数の振動データ(この例では、第3の周波数(f4L)と第3の振幅(α4L)を示す値との組み合わせと、第4の周波数(f4H)と第2の振幅(α4H)を示す値との組み合わせ)を同時に発生する。
このように、振動源は、第1の振動データ(周波数f3H/振幅α3H)と第2の振動データ(周波数f3L/振幅α3L)とが組み合わせて振動パターン3として発生され、第3の振動データ(周波数f4H/振幅α4H)と第4の振動データ(周波数f4L/振幅α4L)とが組み合わせて振動パターン4として発生される。このとき、第3の振動データの時間波形の周波数(周波数f4H)は、第1の振動データの時間波形の周波数(周波数f3H)より低く、第4の振動データの時間波形の周波数(周波数f4L)は、第2の振動データの時間波形の周波数(周波数f3L)より低く設定される。
そして、これらの振動パターンを指定する周波数および振幅については、所定周期毎に更新されることが想定されている。すなわち、所定周期毎の周波数を示す値と振幅を示す値の組み合わせが、振動パターン3(第1の振動データ(周波数f3Lおよび振幅α3Lの波形)と第2の振動データ(周波数f3Hおよび振幅α3Hの波形)との組み合わせ)として発生され、所定周期毎の周波数を示す値と振幅を示す値の別の組み合わせが、振動パターン4(第3の振動データ(周波数f3Lおよび振幅α3Lの波形)と第4の振動デ
ータ(周波数f4Hおよび振幅α4Hの波形)との組み合わせ)として発生される。
このような場合、いずれの振幅を比較対象とするのかに応じて、以下のような2つの方法が考えられる。
図10(A)には、高周波側および低周波側をそれぞれ独立に判断する方法を示す。図10(A)を参照して、振動パターン3の低周波側の振幅α3Lと振動パターン4の低周波側の振幅α4Lとの比較(すなわち、関数max(α3L,α4L))、ならびに、振動パターン3の高周波側の振幅α1Hと振動パターン4の高周波側の振幅α2Hとの比較(すなわち、関数max(α3H,α4H))が行なわれ、それぞれの比較においてより大きな振幅を示す情報(低周波側の周波数fLおよび振幅αL、ならびに、高周波側の周波数fHおよび振幅αH)が合成パターンとして出力される。
このように、1つの振動源である第1の振動指令発生機能が発生した複数の振動データ、および、別の振動源である第2の振動指令発生機能が発生した複数の振動データが入力された場合に、第1の振動指令発生機能が発生した複数の各振動データと、第2の振動指令発生機能が発生した複数の各振動データとについて、それぞれの振動データが示す時間波形の振幅に基づいて、振幅が最も大きい時間波形を示す振動データを含む方の複数の振動データがそれぞれ選択される。すなわち、1つの振動源から発生された第1の振動データおよび第3の振動データを含む振動パターン3、ならびに、別の振動源から発生された第2の振動データおよび第4の振動データを含む振動パターン4が入力された場合に、第1の振動データが示す第1の時間波形の振幅α3Hと第2の振動データが示す第2の時間波形の振幅α4Hとに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データが選択される。同様に、第2の振動データが示す第3の時間波形の振幅α3Lと第4の振動データが示す第4の時間波形の振幅α4Hとに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データが選択される。
図10(A)に示す選択方式を採用することで、振動パターン3および4の各々に含まれる周波数成分のうち、それぞれの周波数においてより振幅の大きな成分が選択されることになり、ユーザに対してより特徴的な振動刺激を与えることができる。
このとき、振動パターン3の低周波側の周波数f3Lおよび振動パターン4の低周波側の周波数f4Lの異同、および、振動パターン3の高周波側の周波数f3Hおよび振動パターン4の高周波側の周波数f4Hの異同について考慮せず、各振動パターンの振幅のみを比較対象とするように構成してもよい。
図10(B)には、高周波側および低周波側をまとめて判断する方法を示す。図10(B)を参照して、振動パターン3の低周波側の振幅α3Lおよび高周波側の振幅α3Hを合成した振幅と、振動パターン4の低周波側の振幅α4Lおよび高周波側の振幅α4Hを合成した振幅との比較(すなわち、関数max(α3L+α3H,α4L+α4H))が行なわれ、当該比較においてより大きな振幅を示す振動パターンが合成パターンとして出力される。すなわち、振動パターン3に含まれる第1の振幅(α3L)および第2の振幅(α3H)から算出される値(α3L+α3H)と、振動パターン4に含まれる第3の振幅(α4L)および第4の振幅(α4H)から算出される値(α4L+α4H)とに基づいて、いずれかの振動パターンが選択的に出力される。
このように、1つの振動源である第1の振動指令発生機能が発生した第1の振動データを含む複数の振動データ、および、別の振動源である第2の振動指令発生機能が発生した第2の振動データを含む複数の振動データが入力された場合に、第1の振動指令発生機能が発生した複数の振動データが示す振幅の合計と第2の振動指令発生機能が発生した複数
の振動データが示す振幅の合計とに基づいて、所定期間毎に、振幅の合計が大きい方の複数の振動データが選択される。
また、図10(B)に示す選択方式においては、入力された振動パターンの振幅に対して周波数による重み付けをして評価するようにしてもよい。一般的に、人間は低周波側の振動に敏感であるので、例えば、高周波側の振幅より大きな重み係数(例えば、b>1)を低周波側の振幅に乗じるようにしてもよい。この場合、関数max(b×α3L+α3H,b×α4L+α4H)を利用して、いずれの振幅が大きいのかが判断されてもよい。
図10(B)に示す選択方式を採用することで、振動パターン3および4のうち、全体として振幅がより大きなものが選択されるので、入力される振動パターン全体の特徴を維持したまま、ユーザに対して振動刺激を与えることができる。
このとき、振動パターン3の低周波側の周波数f3Lおよび振動パターン4の低周波側の周波数f4Lの異同、および、振動パターン3の高周波側の周波数f3Hおよび振動パターン4の高周波側の周波数f4Hの異同について考慮せず、各振動パターンの振幅のみを比較対象とするように構成してもよい。
さらに、振動パターン3および4に含まれる周波数成分から、各振幅の大きさに基づいて、所定数の周波数成分を選択するようにしてもよい。すなわち、振動パターン3の低周波側の振幅α3L、振動パターン3の高周波側の振幅α3H、振動パターン4の低周波側の振幅α4L、および、振動パターン4の高周波側の振幅α4H、のうち大きなものから上位二つの周波数成分を抽出して、合成パターンとして出力するようにしてもよい。
(d2:加算方式)
図11は、本実施の形態に従う加算方式に従う振動パターンの合成方法を説明するための図である。図11には、例えば、振動パターン5と振動パターン6とが入力された場合を示す。振動パターン5および6は、互いに類似した時間的変化の特徴を有している。
合成モジュールは、所定周期毎に入力された振動パターンの振幅を加算した上で出力する。すなわち、合成パターンとしては、振動パターン5と振動パターン6とを時間軸上で結合したものとなる。
このような加算方式を採用することで、例えば、同じような種類の振動が複数重なり合うことが頻繁に生じ得る状況において、互いに重なり合った振動の個数自体をユーザに対して知覚させることができる。
図12は、本実施の形態に従う加算方式に従う合成方法の実装例を示す模式図である。図12には、振動パターン7および8の各々を周波数および振幅からなる組み合わせの2つで指定する場合の実装例を示す。すなわち、振動パターン7は、低周波側の周波数f7Lおよび振幅α7L、ならびに、高周波側の周波数f7Hおよび振幅α7Hで指定される。また、振動パターン8は、低周波側の周波数f8Lおよび振幅α8L、ならびに、高周波側の周波数f8Hおよび振幅α8Hで指定される。これらの振動パターンを指定する周波数および振幅については、所定周期毎に更新されることが想定されている。
図12を参照して、合成モジュールは、振動パターン7および8の入力を受けて、合成パターン(低周波側の周波数fLおよび振幅αL、ならびに、高周波側の周波数fHおよび振幅αH)を出力する。
合成パターンの低周波側の振幅αLおよび高周波側の振幅αHについては、それぞれ、
振動パターン7および8の低周波側の振幅および高周波側の振幅を加算することで算出してもよい。すなわち、合成パターンの低周波側の振幅αL=αL7+αL8、合成パターンの高周波側の振幅αH=αH7+αH8と算出できる。
入力される振動パターン7および8を指定する周波数が合計で4つ存在する一方で、出力される合成パターンの周波数は2つであるので、入力と出力との間で整合を取る必要がある。合成パターンの周波数の算出方式としては、以下のような3種類を想定できる。
(1)振幅が最も大きい振動パターンの周波数を採用する方式
この方式においては、低周波側については、振動パターン7の低周波側の振幅α7Lと振動パターン8の低周波側の振幅α8Lを比較し、より大きな振幅を有する周波数を採用する。高周波側については、振動パターン7の高周波側の振幅α7Hと振動パターン8の高周波側の振幅α8Hを比較し、より大きな振幅を有する周波数を採用する。
(2)入力された振動パターンの周波数の平均値を採用する方式
この方式においては、低周波側については、振動パターン7の低周波側の周波数f7Lと振動パターン8の低周波側の周波数f8Lとの平均値((f7L+f8L)/2)を合成パターンの低周波側の周波数fLとして算出し、高周波側については、振動パターン7の高周波側の周波数f7Hと振動パターン8の高周波側の周波数f8Hとの平均値((f7H+f8H)/2)を合成パターンの高周波側の周波数fHとして算出する。
なお、平均値の算出方法として、相加平均を利用してもよいし、相乗平均を利用してもよい。周波数の平均値は、相加平均ではなく相乗平均を用いる方が好ましいが、処理負担を軽減する観点からは、相加平均を用いるようにしてもよい。
(3)入力された振動パターンの周波数に振幅による重み付けして算出する方式
この方式においては、入力される振動パターンの各振幅に応じた重み付け加重平均に従って、低周波側および高周波側の周波数がそれぞれ算出される。具体的には、合成パターンの低周波側の周波数fL=(α7L・f7L+α8L・f8L)(α7L+α8L)、および、合成パターンの高周波側の周波数fH=(α7H・f7H+α8H・f8H)(α7H+α8H)として算出される。
入力される振動パターンを周波数領域で指定した場合には、上述したような方法を用いて、加算後の合成パターンを定義する周波数を決定できる。なお、平均値の算出方法として、相加平均を利用してもよいし、相乗平均を利用してもよい。周波数の平均値は、相加平均ではなく相乗平均を用いる方が好ましいが、処理負担を軽減する観点からは、相加平均を用いるようにしてもよい。このような方法を採用することで、出力される合成パターンを定義する周波数成分および振幅の組み合わせが増大することがないので、内部処理を効率化できる。
(d3:処理の選択)
図9、10および12に示す合成モジュールをプログラムモジュール(あるいは、ライブラリ)として実装する場合を考えると、同一のインターフェイスを有するプログラムモジュールとして構成するとともに、任意のオプションスイッチやコマンドなどで、処理を適宜切り替えできるようにすることが好ましい。
そこで、合成モジュールをプログラムモジュールとして実装する場合には、図9、10および12に示すような、入力される振動パターンを定義するインターフェイスに加えて、上述の選択方式および加算方式のいずれかを選択するためのインターフェイスが設けられる。その上で、選択方式においては、選択される振動パターンを評価する方法を選択す
るためのインターフェイスが設けられ、ならびに、加算方式においては、合成パターンの周波数を算出する方法を選択するためのインターフェイスが設けられてもよい。
(d4:多段方式)
図9、10および12に示す合成モジュール同士を接続してもよい。図13は、本実施の形態に従う合成モジュールを多段接続した場合の構成例を示す模式図である。図13を参照して、例えば、4つの振動パターン9〜13を入力して、1つの合成パターンを出力するような処理系を想定する。このような場合、前段に2つの合成モジュールを配置し、一方の合成モジュール(合成モジュール1)に2つの振動パターン9および10を入力し、他方の合成モジュール(合成モジュール2)に2つの振動パターン11および12を入力する。
合成モジュール1は、振動パターン9および10を合成した結果(低周波側の周波数fL’および振幅αL’、ならびに、高周波側の周波数fH’および振幅αH’)を出力し、合成モジュール2は、振動パターン11および12を合成した結果(低周波側の周波数fL”および振幅αL”、ならびに、高周波側の周波数fH”および振幅αH”)を出力する。これらの合成結果は、さらに別の合成モジュール(合成モジュール3)へ入力される。合成モジュール3は、合成モジュールからのそれぞれの合成結果を合成することで、最終的な合成パターン(低周波側の周波数fLおよび振幅αL、ならびに、高周波側の周波数fHおよび振幅αH)を出力する。
図13に示す配置例に限らず、任意の直列数および/または並列数で合成モジュールを結合してもよい。
(d5:適用例)
上述したように、本実施の形態に従う振動パターンの合成手法を採用することで、任意のアプリケーションにおいて、互いに異なる種類の振動パターンを当該アプリケーションの趣旨に沿って、ユーザに対して振動刺激を与えることができる。
このようなアプリケーションの例としては、上述の図4に示すような、岩のオブジェクトが坂を転がることを弱く継続的な振動パターンで表現し、当該オブジェクトが途中で障害物にぶつかることを強く短い振動パターンで表現する。このような場合、本実施の形態に従う合成モジュールに対して、それぞれの振動パターンをイベント発生に応じて入力することで、それぞれの振動パターンが表現する意味を失うことなく、その振動刺激をユーザに与えることができる。
あるいは、ユーザがゲーム空間内でユーザキャラクタを操作して当該ユーザキャラクタがバイクに跨って移動する場合に発せられるエンジン音を弱く継続的な第1の振動パターンで表現し、当該バイクが移動中に何らかの障害物をぶつかったまたは乗り越えたときに状態を強く短い第2の振動パターンで表現する。このような場合にも、上述と同様に、ユーザ操作によってユーザキャラクタが移動している間、第1の振動パターンを発生し、移動中に何らかの障害物をぶつかったまたは乗り越えたタイミングで第2の振動パターンを発生する。これらの振動パターンは、上述したような合成モジュールへ入力される。合成モジュールからの合成出力を利用することで、ユーザキャラクタの移動中に発生する弱く継続的な振動刺激に埋もれることなく、ジャンプによって発生する振動刺激をユーザは知覚することができる。
(d6:変形例)
選択基準として振幅を採用する例について説明したが、波形の変位(瞬時値)に基づいて選択を行なってもよい。振幅が大きいほど大きい変位を示すので、変位(瞬時値)に基
づいて振動パターンを選択することで、間接的に、振幅の大きなものを選択することができる。
[E.機能的構成]
次に、本実施の形態に従うゲームシステムに実装される機能的構成の要部について説明する。図14は、本実施の形態に従うゲームシステム1に実装される機能的構成の要部を示すブロック図である。
図14を参照して、処理装置100のシステムLSI110にてアプリケーションプログラムが実行されることで、ユーザ操作判断モジュール1101、ゲーム進行モジュール1102、映像音声制御モジュール1103、振動発生モジュール1104、合成モジュール1105、および、振動発生制御モジュール1106が実現される。
ユーザ操作判断モジュール1101は、コントローラ200の操作部(例えば、図3に示すボタン類210およびアナログスティック212L,212Rなど)に対するユーザ操作を示す信号(操作情報)、ならびに、コントローラ200のセンサ類230(図3参照)での検出結果などに基づいて、ユーザが行なった操作を判断する。ユーザ操作判断モジュール1101は、そのユーザ操作の内容を、ゲーム進行モジュール1102および振動発生モジュール1104へ出力する。
ゲーム進行モジュール1102は、ゲームアプリケーションを実行するゲーム進行機能に相当し、ユーザ操作に従ってゲーム処理を進行する。具体的には、ゲーム進行モジュール1102は、ユーザ操作に応じて出力すべき映像および音声の更新、ならびに、ユーザに与える振動の制御に必要なイベント情報の出力、などを行なう。
映像音声制御モジュール1103は、ゲーム進行モジュール1102からのデータに基づいて、映像出力および音声出力を生成し、映像音声出力ドライバ160へ出力する。映像音声出力ドライバ160は、映像音声制御モジュール1103からの出力に応じて、表示装置300へ与える映像信号および音声信号を生成する。
振動発生モジュール1104は、上述の図5に示す振動源の少なくとも一部として機能し、端末(本実施の形態では、コントローラ200)を振動させるための時間波形を示す振動データ(振動パターン)を発生する。各振動パターンが1種類の時間波形からなる場合には、振動発生モジュール1104は、端末を振動させるための第1の時間波形を示す第1の振動データ(例えば、図9に示す振動パターン1)および当該端末を振動させるための第2の時間波形を示す第2の振動データ(例えば、図9に示す振動パターン2)を発生する。
一方、各振動パターンが複数種類(例えば、2種類)の時間波形からなる場合には、振動発生モジュール1104は、端末を振動させるための第1の時間波形を示す第1の振動データおよび当該端末を振動させるための第2の時間波形を示す第2の振動データ(これらの2つの振動データを合わせて、例えば、図10に示す振動パターン3)を発生し、端末を振動させるための第3の時間波形を示す第3の振動データおよび当該端末を振動させるための第4の時間波形を示す第4の振動データ(これらの2つの振動データを合わせて、例えば、図10に示す振動パターン4)を発生する。
振動発生モジュール1104は、ゲーム処理の進行に応じて、振動パターンを発生するようにしてもよい。具体的には、振動発生モジュール1104は、ゲーム進行モジュール1102から何らかのイベント情報が通知されると、当該イベント情報に対応する振動パターンを予め用意された振動パターンセット1107から抽出し、合成モジュール110
5へ出力する。振動発生モジュール1104から合成モジュール1105へは、同期または非同期の態様で、複数の振動パターンが入力されることもある。振動発生モジュール1104は、発生する振動パターンを所定周期(例えば、5msec〜数10msec)毎に更新する。
このように、振動発生モジュール1104は、ゲーム進行モジュール1102が発生するイベントに応じて、1または複数の振動データ(振動パターン)を発生する。各振動パターンが1種類の時間波形からなる場合には、振動発生モジュール1104は、ゲーム進行モジュール1102が発生するイベントに応じて、第1の時間波形を示す第1の振動データまたは第2の時間波形を示す第2の振動データを発生する。一方、各振動パターンが複数種類(例えば、2種類)の時間波形からなる場合には、振動発生モジュール1104は、ゲーム進行モジュール1102が発生するイベントに応じて、第1の振動パターンとして第1の振動データと第2の振動データとを組み合わせを発生し、ゲーム進行モジュール1102が発生する別のイベントに応じて、第2の振動パターンとして第3の振動データと第4の振動データとを組み合わせて発生する。
ゲーム進行モジュール1102は、ユーザ操作などに応じて、イベントを発生してもよい。ゲーム進行モジュール1102は複数のイベントを発生するように構成されており、各イベントに対応する振動パターンを発生する。例えば、振動発生モジュール1104は、ゲーム進行モジュール1102が発生するあるイベントに応じて、ある振動パターンを発生し、当該イベントとは異なる別のイベントに応じて、別の振動パターンを発生する。
合成モジュール1105は、上述したような振動パターンの合成処理を行ない、合成パターンを出力する。すなわち、合成モジュール1105に対して選択方式が指令されると、一方の振動パターンが示す時間波形の振幅および他方の振動パターンが示す時間波形の振幅に基づいて、所定期間毎に、2つの振動パターンのうちいずれか一方を選択的に合成パターンとして出力する。また、合成モジュール1105に対して加算方式が指令されると、2つの振動パターンを加算して、合成パターンとして出力する。
この出力される合成パターンは、典型的には、低周波側の周波数fLおよび振幅αL、ならびに、高周波側の周波数fHおよび振幅αHで定義される。
振動発生制御モジュール1106は、駆動信号生成モジュール2021と連携して、合成モジュール1105からの出力(合成パターン)に基づいてコントローラ200の振動部220を駆動する。すなわち、振動発生制御モジュール1106は、選択手段である合成パターンが選択した振動データに基づいて端末(コントローラ200)を振動させる。より具体的には、振動発生制御モジュール1106は、合成モジュール1105からの合成パターンの情報に応じて、コントローラ200へ当該合成パターンの情報を送信する。振動発生制御モジュール1106からコントローラ200へ送信される合成パターンの情報は、所定周期で逐次更新されることもある。なお、図示していないが、振動発生制御モジュール1106からコントローラ200への情報の伝達経路には、処理装置100の近距離無線通信モジュール140(図2参照)およびコントローラ200の近距離無線通信モジュール240(図3参照)が存在していてもよい。
コントローラ200においては、コントローラ制御部202がその機能の一部として、駆動信号生成モジュール2021を有している。駆動信号生成モジュール2021は、プロセッサがプログラムを実行することで実現されてもよいし、ハードワイヤードな回路を含むマイクロコントローラがファームウェアを実行することで実現されてもよいし、ASIC(application specific integrated circuit)などの専用半導体などを用いて実現
されてもよい。駆動信号生成モジュール2021を有するコントローラ制御部202の実
装方法については、各時代に応じた公知技術を採用できる。
駆動信号生成モジュール2021は、処理装置100からの合成パターンの情報に基づいて、駆動信号を生成する。本実施の形態においては、一例として、合成パターンが周波数領域で指定されているので、駆動信号生成モジュール2021は、この周波数領域の情報を時間領域の駆動信号に変換する。駆動信号生成モジュール2021における駆動信号の生成処理については、後述する。駆動信号生成モジュール2021から出力される駆動信号は、コントローラ200の振動部220へ与えられ、振動部220は、その駆動信号に応じて振動を発生する。
本実施の形態に従うゲームシステム1においては、処理装置100からコントローラ200に対して、周波数領域の情報(周波数および振幅)が送信され、コントローラ200において時間領域の駆動信号に変換される。処理装置100とコントローラ200との間で遣り取りされるデータを周波数領域の情報にすることで、必要な伝送帯域を圧縮できるという利点がある。
但し、このような形態に限られることなく、時間領域の駆動信号を処理装置100で生成した上で、コントローラ200へ送信するようにしてもよい。また、上述の説明においては、処理装置100側に合成モジュールを実装する構成について例示したが、コントローラ200側に合成モジュールを実装するようにしてもよい。すなわち、処理装置100からコントローラ200に対して、1または複数の振動パターンが送信されるとともに、コントローラ200側にて振動パターンの合成処理および駆動信号の生成処理を行なうようにしてもよい。
[F.駆動信号の生成処理]
次に、周波数領域の情報(周波数および振幅)で指定される合成パターンから時間領域の駆動信号を生成する処理について説明する。
(f1:生成手順)
図15は、本実施の形態に従うゲームシステム1における駆動信号の生成処理を説明するための模式図である。図15には、一例として、コントローラ200のコントローラ制御部202(より正確には、駆動信号生成モジュール2021)が駆動信号を生成する場合を示す。
図15を参照して、駆動信号生成モジュール2021は、処理装置100から合成パターンを指定する情報(低周波側の周波数fLおよび振幅αL、ならびに、高周波側の周波数fHおよび振幅αH)を受取り、時間領域において駆動信号を生成する。
駆動信号生成モジュール2021は、補正係数βL,βHについても処理装置100から受取るものとする。補正係数βL,βHは、低周波側の振動と高周波側の振動との間のバランスを調整するものであり、基本的には、0<βL≦1,0<βH≦1の範囲の値に設定される。但し、補正係数βL,βHは必須の構成ではない。
駆動信号生成モジュール2021は、駆動信号の低周波側の成分として、αL×βL×sin(2π・fL・t)を逐次算出し、駆動信号の高周波側の成分として、αH×βH×sin(2π・fH・t)を逐次算出する。そして、これらの両成分を合成したものを駆動信号として出力する。
より具体的には、駆動信号生成モジュール2021は、その機能として、位相決定モジュール2022,2025と、乗算モジュール2023,2024,2026,2027
と、加算モジュール2028とを含む。駆動信号生成モジュール2021に含まれる各モジュールは、所定の演算周期(例えば、1/4000sec)毎に演算処理を事項する。上述したように、補正係数βL,βHを用いない構成においては、乗算モジュール2024および2027を省略してもよい。
位相決定モジュール2022および2025は、周波数fLおよびfHに応じて、各算出周期での位相成分(各算出タイミングにおけるsin値)をそれぞれ算出する。乗算モジュール2023および2026は、振幅αLおよびαHに応じて、位相成分に振幅成分を乗じる。乗算モジュール2024および2027は、補正係数βLおよびβHに応じて、振幅成分を乗じた結果に対して補正係数を乗じる。加算モジュール2028は、低周波側および高周波側においてそれぞれ算出された結果を足し合せることで、駆動信号f(t)を生成する。
図15に示すような算出ロジックを採用することで、周波数領域で指定された合成パターンに応じた駆動信号を生成することができる。
上述したように、合成パターンは所定周期(例えば、5msec〜数10msec)毎に更新される。この更新によって、合成パターンを定義する周波数および振幅がステップ的に変化することになる。このようなステップ的な変化に対して、駆動信号の時間波形の連続性を保つことが好ましい。以下、駆動信号の時間波形の連続性を保つための処理について説明する。
図16は、本実施の形態に従うゲームシステム1における駆動信号の時間波形の連続性を保つための処理を説明するための模式図である。図16(A)には、合成パターンの位相の時間波形の一例を示す。図16(A)に示す合成パターンでは、基準時刻から時刻t2までの区間において周波数faが指示されており、時刻t2以降は周波数fbが指示されている。すなわち、時刻t2において、周波数がfaからfbにステップ的に変化しているとする。
図16(B)には、図16(A)に示す時刻t1〜t4の各々における位相成分の算出方法を示す。時刻t1においては、初期位置(位相ゼロ)を基準として、周波数faと基準時刻から時刻t1までの時間幅とから変位角Δω1を算出し、基準角度に変位角Δω1を加算した角度に基づいて位相成分を算出する。
続く時刻t2においては、時刻t1の位相を基準として、周波数faと時刻t1から時刻t2までの時間幅とから変位角Δω2を算出し、時刻t1での角度に変位角Δω2を加算した角度に基づいて位相成分を算出する。
続く時刻t3においても同様に、前回の時刻t2の位相を基準として位相成分が算出される。但し、指定される位相の大きさが変化しているので、変更後の位相fbを用いる。具体的には、時刻t2の位相を基準として、周波数fbと時刻t2から時刻t3までの時間幅とから変位角Δω3を算出し、時刻t2での角度に変位角Δω3を加算した角度に基づいて位相成分を算出する。
続く時刻t4においては、時刻t3の位相を基準として、周波数fbと時刻t3から時刻t4までの時間幅とから変位角Δω4を算出し、時刻t3での角度に変位角Δω4を加算した角度に基づいて位相成分を算出する。
図16(B)に示すように、駆動信号の各算出タイミングにおいては、前回の算出タイミングにおいて算出された位相を基準として今回の位相を算出した上で、位相成分を出力
する。このような前回の算出タイミングから増加した位相量を順次加算する方法を採用することで、いずれのタイミングで合成パターンを指定する位相などがステップ的に更新されたとしても、駆動信号の時間波形の連続性を保つことができる。
図17は、本実施の形態に従うゲームシステム1において生成される駆動信号の時間波形の一例を示す図である。図17には、ある時刻において、合成パターンの周波数がfaからfbへ更新された例を示すが、この周波数の更新によっても、駆動信号の時間波形の連続性が保たれていることが分かる。
(f2:実装例)
図15および図16に示すような位相成分を算出する処理は、算術的な手法を用いて実現することが可能である。より具体的には、三角関数およびその逆関数を用いることで、位相成分を順次算出できる。このような算出方法を採用してもよいが、算出処理が複雑化し得るため、以下に例示するようなテーブルを利用する算出方法を採用してもよい。
図18は、本実施の形態に従うゲームシステム1における参照テーブルを利用して駆動信号を生成する処理を説明するための図である。図18を参照して、参照テーブル2029には、アドレス付けされた配列を含み、各列には、rad値および対応するsin値が格納されている。rad値は、所定ステップで単調増加するように配置されている。すなわち、参照テーブル2029は三角関数(すなわち、sin関数)をテーブル化したものに相当する。なお、参照テーブル2029としては、必ずしも、三角関数(sin関数またはcos関数)を用いる必要はなく、周期的な関数を用いればよい。例えば、所定周期をもつノコギリ波などを採用してもよい。また、図18には、1周期(2πラジアン)を4096で分割して、2π/4096ラジアンずつ増加するように構成されている参照テーブル2029を例示するが、分解能などはシステムの性能や要求などに応じて、適宜設計すればよい。
参照テーブル2029を利用して、位相決定モジュール2022,2025(図15)での位相成分の算出処理を実現する。具体的には、現在の位相に対応するカウント値が取得されているとする(図18の(1))。続いて、合成パターンの指定された周波数に基づいて次のカウント値が算出される(図18の(2))。すなわち、図16に示す変位角Δωが何カウント分に相当するのかが算出され、その算出された増分カウントが現在カウント値に加算されることで、次のカウント値が算出される。
そして、算出された次のカウント値に対応するsin値が読み出される(図18の(3))。この読み出されたsin値が、駆動信号の次の算出タイミングでの位相成分となる。
同様の処理が以下繰返される。すなわち、合成パターンの指定された周波数に基づいて次の次のカウント値が算出される(図18の(4))。そして、算出された次の次のカウント値に対応するsin値が読み出される(図18の(5))。この読み出されたsin値が、駆動信号の次の次の算出タイミングでの位相成分となる。
このような参照テーブル2029を参照する実装形態を採用することで、位相成分を算出するためにsin値を算出するような処理は不要となり、基本的には、各算出タイミングにおいて参照すべき行を示すカウント値のみを算出すればよいので、計算コストを低減しつつ、周波数が変化した場合でも、駆動信号の時間波形の連続性を保つことができる。
(f3:変化量緩和処理)
上述の図16には、説明の便宜上、合成パターンの周波数がfaからfbにステップ的
に変化する例を示す。本実施の形態に従うゲームシステム1においては、合成パターンの周波数がステップ的に変化した場合であっても、上述のような処理方法を採用することで、駆動信号の時間波形の連続性は保たれる。但し、ステップ的な変化の前後で、時間波形が大きく歪む可能性もあるので、このような時間波形に生じ得る変化量を緩和するような処理を採用してもよい。
図19は、本実施の形態に従うゲームシステム1における変化量緩和処理を説明するための図である。図19(A)には、合成パターンの周波数がfaからfbへ変化する例を示し、図19(B)には、合成パターンの振幅がαaからαbへ変化する例を示す。
図19(A)に示すように、時刻t10において、合成パターンの周波数がfaからfbへ更新されたとする。この場合、ある期間(補間区間)をかけて周波数をfaからfbへ変化させるとする。この周波数faからfbへの時間的変化はどのようなものであってもよく、1次関数を用いた補間であってもよいし、多次関数を用いた補間であってもよい。図19には、説明の便宜上、1次関数を用いた補間(すなわち、直線補間)の例を示す。
図19(A)に示す時刻t10〜t18が駆動信号の各算出タイミングに相当する。すなわち、各算出タイミングにおいて駆動信号を生成する際に、補間された特性を用いることで、生成される駆動信号が徐々に変化することになる。すなわち、各算出タイミングにおいて算出される位相の増分は、ある時刻においてステップ的に変化するのではなく、補間された特性に従って徐々に増加する。このような位相の増分の変化量を緩和することで、最終的に生成される駆動信号に現れる時間的変化も急峻なものから緩やかなものとなる。
図19(A)に示す変化量緩和処理を採用することで、アプリケーション開発者が意図していないような振動刺激をユーザへ与える可能性を抑制できる。
図19(B)には、合成パターンの振幅がステップ的に変化した場合にも、図19(A)と同様の手法により、変化量緩和処理を適用することができる。このような変化量緩和処理を適用することで、アプリケーション開発者が意図していないような振動刺激をユーザへ与える可能性を抑制できる。
但し、生成される駆動信号の変位は、位相成分と振幅との積によって決定されるので、振幅がステップ的に変化したとしても、生成される駆動信号に急峻な時間的変化が現れるとは限らない。そのため、周波数および振幅の両方について変化量緩和処理を適用する必要はない。
図19に示すように、周波数および/または振幅の値がステップ的に更新された後、実際にその更新後の値に変化するまでにある程度の遅延が生じることになるが、ゲーム処理の進行に比べて、この遅延は十分に小さくできるので、実用上の問題はない。
本実施の形態に従うゲームシステム1においては、周波数成分および振幅の組み合わせの2つを用いて振動刺激を表現するため、図19に示す処理は、組み合わせ毎に適用されることが好ましい。すなわち、低周波側および高周波側の各々に対して、図19に示すような変化量緩和処理が適用されてもよいし、いずれか一方のみに適用されてもよい。
図19に示すような補間処理は、コントローラ200のコントローラ制御部202(より正確には、駆動信号生成モジュール2021)側に実装してもよいし、処理装置100側に実装してもよい。但し、コントローラ200側に実装することで、処理装置100と
コントローラ200との間の通信速度に対する影響を抑制できる。
[G.プログラム配布形態]
次に、本実施の形態に従うゲームシステム1において合成パターンを生成するために用いる合成モジュールを含むプログラムの配布形態について説明する。
図20は、本実施の形態に従うゲームシステム1において振動部の制御に係る振動制御プログラムの配布形態の一例を示す模式図である。図20(A)には、アプリケーションプログラム180の一部に、振動部の制御に必要なプログラムモジュールをAPI(Application Programming Interface)として実装する例を示す。図20(B)には、振動部
の制御に必要なプログラムモジュールを含むSDK(Software Development Kit)として配布する例を示す。
図20に示す説明において、「API」とは、任意のアプリケーションプログラムが利用することのできる1または複数のプログラムモジュールを意味する。1または複数のプログラムモジュールの具体的な形態としては、どのようなものであってもよい。典型的には、ライブラリ、サブルーチン、オブジェクトクラスなどが挙げられる。
図20(A)を参照して、アプリケーションプログラム180(図2参照)は、典型的には、アプリケーションのプログラムの実体であるアプリケーションオブジェクトコード1801と、アプリケーションオブジェクトコード1801が実行時に利用するコアAPI1802とを含む。
コアAPI1802の一部として、上述したような合成パターンを生成するために用いる合成モジュールを含み得る。アプリケーションの開発者は、コアAPI1802に含まれる合成モジュールを利用するための宣言文や変数の指定をアプリケーションのコード中に記述することで、上述したような合成パターンの生成を実装できる。
図20(B)を参照して、アプリケーションの開発者へ提供されるSDK400は、典型的には、ソースコードエディタ401と、画面デザインツール402と、デバッガ403と、コンパイラ404と、シミュレータ405と、コアAPI406とを含む。コアAPI406には、上述したような合成パターンを生成するために用いる合成モジュールを含み得る。
アプリケーションの開発者は、SDK400を処理装置100または汎用のコンピュータなどにインストールして、任意のアプリケーションを開発することができる。開発者は、ソースコードエディタ401を用いて、コアAPI406に含まれる任意のAPIの利用に係る記述を追加することで、作成したアプリケーションプログラムをシミュレータ405上で実行させたときに、処理装置100で当該アプリケーションプログラムを実行したのと同様に、上述したような合成パターンを生成するために用いる合成モジュールを利用したロジックを容易に実装できる。
[H.処理手順]
次に、本実施の形態に従うゲームシステム1において実行される処理について説明する。図21は、本実施の形態に従うゲームシステム1において実行される処理手順を示すフローチャートである。図21に示す各ステップは、典型的には、処理装置100のCPU102がプログラムを実行することで実現される。
図21を参照して、CPU102は、コントローラ200の操作部に対するユーザ操作を示す操作情報、および、コントローラ200のセンサ類230(図3参照)での検出結
果などに基づいて、ユーザが行なったユーザ操作を判断する(ステップS100)。CPU102は、ステップS100において判断されたユーザ操作に従ってゲーム処理を進行する(ステップS102)。このゲーム処理の進行には、出力すべき映像および音声の更新処理を含む。併せて、CPU102は、ステップS100において判断されたユーザ操作に基づいてイベントを発生させる必要があるか否かを判断する(ステップS104)。イベントを発生させる必要がある場合(ステップS104においてYESの場合)、CPU102は、入力されたユーザ操作に応じたイベントを内部的に発生する(ステップS106)。続いて、CPU102は、内部的に発生したイベントに基づいて、何らかの振動パターンを発生させる必要があるか否かを判断する(ステップS108)。
イベントを発生させる必要がない場合(ステップS104においてNOの場合)、または、何らかの振動パターンを発生させる必要がない場合(ステップS108においてNOの場合)、処理はステップS112へ進む。
何らかの振動パターンを発生させる必要がある場合(ステップS108においてYESの場合)、CPU102は、当該イベントに対応する振動パターンを内部的に発生する(ステップS110)。
そして、CPU102は、発生している1または複数の振動パターンに対して、上述したような振動パターンの合成処理を行ない、合成パターンを生成する(ステップS112)。この場合、1つの振動パターンしか発生していない場合には、合成パターンの合成処理は実質的にスキップされ、発生している1つの振動パターンが出力される。一方、複数の振動パターンが発生している場合には、選択方式が指定されていれば、上記d1で説明した方法に従い、所定期間毎に、いずれか1つの振動パターンが出力される。一方、加算方式が指定されていれば、上記d2で説明した方法に従い、複数の振動パターンを合成した合成パターンが出力される。
最終的に、CPU102は、生成した合成パターンをコントローラ200へ送出する(ステップS114)。コントローラ200では、CPU102からの合成パターンの指令に基づいて、駆動信号が生成されて振動部220が駆動される。
CPU102は、ゲーム処理の終了の条件が成立したか否かを判断する(ステップS116)。例えば、ユーザ操作によって、ゲーム処理の終了が指示されたか否かといった判断が行なわれる。ゲーム処理の終了の条件が成立していなければ(ステップS116においてNOの場合)、ステップS100以下の処理が繰返される。
ゲーム処理の終了の条件が成立していなければ(ステップS116においてYESの場合)、ゲーム処理は終了する。
[I.利点]
本実施の形態に従うゲームシステムにおいては、合成モジュールを任意のアプリケーションで利用することができる。この合成モジュールによれば、複数の振動パターンを用意しておくとともに、ゲーム進行(ユーザ操作に伴なるイベント発生)に応じた種類の振動パターンを発生させるようなアプリケーションを作成する際の自由度を高めることができる。すなわち、合成モジュールを選択方式で動作させる場合に、より振幅の大きな振動パターンを優先して出力することで、ゲーム進行に応じて、アプリケーション開発者の意図に最も沿った振動パターンに従う振動刺激をユーザにあたることができる。また、合成モジュールを加算方式で動作させることで、複数の振動パターンを組み合わせた振動刺激をユーザに対して与えたいようなシーンにも適用できる。
このように、本実施の形態に従う合成モジュールは、選択方式および加算方式の各々についてもアプリケーション開発者の自由度を高めるという利点が得られるとともに、これらの方式を任意に選択できるので、自由度をより高めることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 ゲームシステム、8 光学記録媒体、100 処理装置、102 CPU、104
GPU、106 メインメモリ、108 VRAM、110 システムLSI、116
フラッシュメモリ、118 外部メモリ、120 コントローラインターフェイス、122 同期ボタン、130 ネットワーク無線通信モジュール、140,240 近距離無線通信モジュール、150 ディスクドライブ、160 映像音声出力ドライバ、180 アプリケーションプログラム、200 コントローラ、202 コントローラ制御部、210 ボタン類、210A Aボタン、210B Bボタン、210C 十字ボタン、210L Lボタン、210R Rボタン、210X Xボタン、210Y Yボタン、212 増幅器、212L,212R アナログスティック、214 振動子、220
振動部、230 センサ類、232 加速度センサ、234 角速度センサ、300 表示装置、401 ソースコードエディタ、402 画面デザインツール、403 デバッガ、404 コンパイラ、405 シミュレータ、1101 ユーザ操作判断モジュール、1102 ゲーム進行モジュール、1103 映像音声制御モジュール、1104 振動発生モジュール、1105 合成モジュール、1106 振動発生制御モジュール、1107 振動パターンセット、1801 アプリケーションオブジェクトコード、2006,2013 特開、2021 駆動信号生成モジュール、2022,2025 位相決定モジュール、2023,2024,2026,2027 乗算モジュール、2028
加算モジュール、2029 参照テーブル、406,1802 コアAPI。

Claims (17)

  1. 第1の時間波形を示す第1の振動データを発生する第1の振動指令発生手段と、
    第2の時間波形を示す第2の振動データを発生する第2の振動指令発生手段と、
    前記第1の振動指令発生手段が発生した前記第1の振動データおよび前記第2の振動指令発生手段が発生した前記第2の振動データが入力された場合に、前記第1の振動データが示す前記第1の時間波形の振幅と前記第2の振動データが示す前記第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択する選択手段と、
    前記選択手段が選択した振動データに基づいて端末を振動させる振動制御手段とを備える、振動制御システム。
  2. 前記選択手段は、前記第1の時間波形の周波数および前記第2の時間波形の周波数の異同によらず、振幅が大きい方の時間波形を示す振動データを選択する、請求項1に記載の振動制御システム。
  3. 前記第1の振動データは、前記第1の時間波形の周波数を示す値と振幅を示す値との組み合わせからなり、
    前記第2の振動データは、前記第2の時間波形の周波数を示す値と振幅を示す値との組み合わせからなり、
    前記第1の振動指令発生手段は、所定周期毎の周波数を示す値と振幅を示す値との前記組み合わせを前記第1の振動データとして発生し、
    前記第1の振動指令発生手段は、所定周期毎の周波数を示す値と振幅を示す値との前記組み合わせを前記第2の振動データとして発生する、請求項1または2に記載の振動制御システム。
  4. 前記第1の振動指令発生手段は、前記第1の振動データを含む複数の振動データを同時に発生し、
    前記第2の振動指令発生手段は、前記第2の振動データを含む複数の振動データを同時に発生する、請求項1〜3のいずれか1項に記載の振動制御システム。
  5. 前記選択手段は、前記第1の振動指令発生手段が発生した複数の振動データ、および、前記第2の振動指令発生手段が発生した複数の振動データが入力された場合に、前記第1の振動指令発生手段が発生した複数の各振動データと、前記第2の振動指令発生手段が発生した複数の各振動データとについて、それぞれの振動データが示す時間波形の振幅に基づいて、所定期間毎に、振幅が最も大きい時間波形を示す振動データを含む方の複数の振動データをそれぞれ選択する、請求項4に記載の振動制御システム。
  6. 前記選択手段は、前記第1の振動指令発生手段が発生した複数の振動データ、および、前記第2の振動指令発生手段が発生した複数の振動データが入力された場合に、前記第1の振動指令発生手段が発生した複数の振動データが示す振幅の合計と前記第2の振動指令発生手段が発生した複数の振動データが示す振幅の合計とに基づいて、所定期間毎に、振幅の合計が大きい方の複数の振動データを選択する、請求項4に記載の振動制御システム。
  7. 前記第1の振動指令発生手段は、前記第1の振動データに加えて、第3の時間波形を示す第3の振動データを発生し、
    前記第2の振動指令発生手段は、前記第2の振動データに加えて、第4の時間波形を示す第4の振動データを発生し、
    前記選択手段は、前記第1の振動指令発生手段が発生した前記第1の振動データおよび第3の振動データ、ならびに、前記第2の振動指令発生手段が発生した前記第2の振動データおよび第4の振動データが入力された場合に、
    前記第1の振動データが示す前記第1の時間波形の振幅と前記第3の振動データが示す前記第3の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択し、
    前記第2の振動データが示す前記第2の時間波形の振幅と前記第4の振動データが示す前記第4の時間波形の振幅とに基づいて、前記所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択する、請求項1に記載の振動制御システム。
  8. 前記第1の振動データは、前記第1の時間波形の周波数を示す値および振幅を示す値の組み合わせからなり、
    前記第2の振動データは、前記第2の時間波形の周波数を示す値および振幅を示す値の組み合わせからなり、
    前記第3の振動データは、前記第3の時間波形の周波数を示す値および振幅を示す値の組み合わせからなり、
    前記第4の振動データは、前記第4の時間波形の周波数を示す値および振幅を示す値の組み合わせからなり、
    前記第1の振動指令発生手段は、所定周期毎に前記第1の振動データおよび前記第3の振動データを更新し、
    前記第2の振動指令発生手段は、所定周期毎に前記第2の振動データおよび前記第4の振動データを更新する、請求項7に記載の振動制御システム。
  9. 前記第3の時間波形の周波数は前記第1の時間波形の周波数より低く、前記第4の時間波形の周波数は前記第2の時間波形の周波数より低い、請求項7または8に記載の振動制御システム。
  10. ゲームアプリケーションを実行するゲーム進行手段をさらに備え、
    前記第1の振動指令発生手段は、前記ゲーム進行手段が発生するイベントに応じて、前記第1の振動データを発生し、
    前記第2の振動指令発生手段は、前記ゲーム進行手段が発生するイベントに応じて、前記第2の振動データを発生する、請求項1〜9のいずれか1項に記載の振動制御システム。
  11. 前記第1の振動指令発生手段は、前記ゲーム進行手段が発生する第1のイベントに応じて、前記第1の振動データを発生し、
    前記第2の振動指令発生手段は、前記第1のイベントとは異なる第2のイベントに応じて、前記第2の振動データを発生する、請求項10に記載の振動制御システム。
  12. 前記ゲーム進行手段は、ユーザ操作に応じて、イベントを発生する、請求項10または11に記載の振動制御システム。
  13. 前記第1の時間波形は、前記前記第2の振動データが示す振動に比較して、弱く継続的な振動を示すものであり、
    前記第2の時間波形は、前記前記第1の振動データが示す振動に比較して、強く短い振動を示すものである、請求項1〜12のいずれか1項に記載の振動制御システム。
  14. 前記端末は、複数の共振周波数を有する振動子を含み、
    前記第1の時間波形の周波数および前記第2の時間波形の周波数は、前記振動子の共振周波数に応じて設定される、請求項1〜13のいずれか1項に記載の振動制御システム。
  15. コンピュータで実行される方法であり、前記コンピュータが実行する処理は、
    第1の時間波形を示す第1の振動データを発生するステップと、
    第2の時間波形を示す第2の振動データを発生するステップと、
    前記第1の振動データおよび前記第2の振動データが入力された場合に、前記第1の振動データが示す前記第1の時間波形の振幅と前記第2の振動データが示す前記第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップと、
    選択された振動データに基づいて端末を振動させるステップとを備える、振動制御方法。
  16. 端末のコンピュータで実行される振動制御プログラムであって、前記コンピュータに
    第1の時間波形を示す第1の振動データを発生するステップと、
    第2の時間波形を示す第2の振動データを発生するステップと、
    前記第1の振動データおよび前記第2の振動データが入力された場合に、前記第1の振動データが示す前記第1の時間波形の振幅と前記第2の振動データが示す前記第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップと、
    選択された振動データに基づいて端末を振動させるステップとを実行させる、振動制御プログラム。
  17. 端末のコンピュータで実行される振動制御プログラムであって、前記コンピュータに
    第1の時間波形を示す第1の振動データおよび第2の時間波形を示す第2の振動データを受付けるステップと、
    前記第1の振動データおよび前記第2の振動データが入力された場合に、前記第1の振動データが示す前記第1の時間波形の振幅と前記第2の振動データが示す前記第2の時間波形の振幅とに基づいて、所定期間毎に、振幅が大きい方の時間波形を示す振動データを選択するステップとを実行させる、振動制御プログラム。
JP2017003244A 2016-07-26 2017-01-12 振動制御システム、振動制御方法および振動制御プログラム Active JP6888960B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/656,240 US10556176B2 (en) 2016-07-26 2017-07-21 Vibration control system, vibration control method, and non-transitory computer-readable storage medium with executable vibration control program stored thereon
EP17183179.5A EP3275517B1 (en) 2016-07-26 2017-07-26 Vibration control system, vibration control method, and vibration control program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016146079 2016-07-26
JP2016146079 2016-07-26

Publications (2)

Publication Number Publication Date
JP2018020089A JP2018020089A (ja) 2018-02-08
JP6888960B2 true JP6888960B2 (ja) 2021-06-18

Family

ID=61164019

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017003243A Active JP6888959B2 (ja) 2016-07-26 2017-01-12 振動制御システム、振動制御方法および振動制御プログラム
JP2017003244A Active JP6888960B2 (ja) 2016-07-26 2017-01-12 振動制御システム、振動制御方法および振動制御プログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017003243A Active JP6888959B2 (ja) 2016-07-26 2017-01-12 振動制御システム、振動制御方法および振動制御プログラム

Country Status (1)

Country Link
JP (2) JP6888959B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7066469B2 (ja) * 2018-03-26 2022-05-13 株式会社三共 遊技機
CN109144606A (zh) * 2018-08-06 2019-01-04 瑞声科技(新加坡)有限公司 一种马达驱动方法、终端设备以及计算机可读存储介质
JP7386137B2 (ja) * 2019-08-30 2023-11-24 任天堂株式会社 情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置
JP6731531B1 (ja) * 2019-08-30 2020-07-29 任天堂株式会社 情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置
JP7310677B2 (ja) * 2020-03-27 2023-07-19 豊田合成株式会社 触感提示装置
CN112346561B (zh) * 2020-10-15 2022-10-25 瑞声新能源发展(常州)有限公司科教城分公司 一种振动驱动方法和系统、振动设备以及存储介质
CN112394817B (zh) * 2020-11-26 2022-04-26 瑞声新能源发展(常州)有限公司科教城分公司 响应振动事件的方法、装置、电子设备和存储介质
CN115586829B (zh) * 2021-07-05 2023-10-20 腾讯科技(深圳)有限公司 触觉振动控制方法、装置、电子设备以及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5275025B2 (ja) * 2005-06-27 2013-08-28 コアクティヴ・ドライヴ・コーポレイション 触覚フィードバック用の同期式振動装置
US8610549B2 (en) * 2009-10-16 2013-12-17 Immersion Corporation Systems and methods for providing haptic feedback at multiple resonance frequencies
WO2013186847A1 (ja) * 2012-06-11 2013-12-19 富士通株式会社 駆動装置、電子機器、及び駆動制御プログラム
US20140267076A1 (en) * 2013-03-15 2014-09-18 Immersion Corporation Systems and Methods for Parameter Modification of Haptic Effects
JP6225989B2 (ja) * 2013-06-21 2017-11-08 株式会社ニコン 振動データ生成プログラム、および振動データ生成装置
JP2015066291A (ja) * 2013-09-30 2015-04-13 株式会社バンダイナムコゲームス 遊戯装置およびプログラム
KR20150091692A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 형용사 공간에서 진동 생성 방법 및 디바이스

Also Published As

Publication number Publication date
JP2018020088A (ja) 2018-02-08
JP6888959B2 (ja) 2021-06-18
JP2018020089A (ja) 2018-02-08

Similar Documents

Publication Publication Date Title
JP6888960B2 (ja) 振動制御システム、振動制御方法および振動制御プログラム
EP3275517B1 (en) Vibration control system, vibration control method, and vibration control program
EP3275518A1 (en) Vibration control system, vibration control method, and vibration control program
JP6877995B2 (ja) 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
JP6552463B2 (ja) ハプティック空間化システム
JP6959349B2 (ja) 操作デバイス、及びその制御装置
JP6893561B2 (ja) 振動制御装置
JP2016131018A (ja) 触覚信号を制御するためのシステムおよび方法
CN111033441B (zh) 振动控制装置
US8812142B2 (en) Numerical controller of machine tool having sound converting unit
WO2019043781A1 (ja) 振動制御装置、振動制御方法、及びプログラム
WO2020153116A1 (ja) 情報処理装置、情報処理方法、及びプログラム
US20150123897A1 (en) Gesture detection system, gesture detection apparatus, and mobile communication terminal
CN104714684B (zh) 车用显示装置
EP3231492B1 (en) Vibration control system, vibration output apparatus, vibration output program, and vibration output method
US10983490B2 (en) Vibration control system, method and apparatus with game controller
JP2000157734A (ja) ゲーム装置、イベント発生処理方法及びコンピュータ読取可能な記録媒体
JP7386137B2 (ja) 情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置
CN116322913A (zh) 信号生成装置、信号生成方法以及信号生成程序
JP2018054617A (ja) サンプリング周波数制御装置、サンプリング周波数制御方法及びプログラム
JP6681504B1 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
JP6731531B1 (ja) 情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置
JP2015177848A (ja) センサ装置及びプログラム
JP6903137B2 (ja) 振動制御装置
WO2019229936A1 (ja) 情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210520

R150 Certificate of patent or registration of utility model

Ref document number: 6888960

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250