JP6521460B2 - 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法 - Google Patents

情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法 Download PDF

Info

Publication number
JP6521460B2
JP6521460B2 JP2016255274A JP2016255274A JP6521460B2 JP 6521460 B2 JP6521460 B2 JP 6521460B2 JP 2016255274 A JP2016255274 A JP 2016255274A JP 2016255274 A JP2016255274 A JP 2016255274A JP 6521460 B2 JP6521460 B2 JP 6521460B2
Authority
JP
Japan
Prior art keywords
vibration
waveform
virtual
motion
unit
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
JP2016255274A
Other languages
English (en)
Other versions
JP2018106598A (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 JP2016255274A priority Critical patent/JP6521460B2/ja
Priority to US15/726,688 priority patent/US10441883B2/en
Publication of JP2018106598A publication Critical patent/JP2018106598A/ja
Application granted granted Critical
Publication of JP6521460B2 publication Critical patent/JP6521460B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • A63F13/28Output arrangements for video game devices responding to control signals received from the game device for affecting ambient conditions, e.g. for vibrating players' seats, activating scent dispensers or affecting temperature or light
    • A63F13/285Generating tactile feedback signals via the game input device, e.g. force feedback
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/24Constructional details thereof, e.g. game controllers with detachable joystick handles
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/54Controlling the output signals based on the game progress involving acoustic signals, e.g. for simulating revolutions per minute [RPM] dependent engine sounds in a driving game or reverberation against a virtual wall
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/30Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
    • A63F2300/302Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device specially adapted for receiving control signals not targeted to a display device or game input means, e.g. vibrating driver's seat, scent dispenser

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • User Interface Of Digital Computer (AREA)
  • Theoretical Computer Science (AREA)

Description

本発明は、情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法に関する。
従来より、入力装置を用いて画面上の位置を指示し、所定の場所が指示された場合に入力装置を振動させるものがある(例えば、特許文献1参照)。
特開2008−345号公報
しかしながら、上記従来技術では指示された位置によって振動するか振動しないかだけであり、仮想的なオブジェクトの動きを振動によって感じさせるものではなかった。
それ故、本発明の目的は、仮想的なオブジェクトの動きを振動によって感じさせることが可能な情報処理システムを提供することである。
上記の課題を解決すべく、本発明は、以下の構成を採用した。
本発明の一例は、操作部と、振動部と、運動演算部と、波形生成部と、波形出力部と、を備える情報処理システムである。振動部は、入力された振動波形を示す信号に応じた振動をする。運動演算部は、仮想オブジェクトの仮想的な運動を逐次演算し、前記操作部に対する操作に応じて当該仮想オブジェクトの運動に変化を加える。波形生成部は、前記運動演算部による演算に基づいて、前記仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成する。波形出力部は、前記波形生成部によって第1の振動波形を示す信号が生成されるときに前記波形生成部によって第2の振動波形を示す信号が生成される場合、前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する。
ここで、「仮想オブジェクトの運動状態」とは、仮想オブジェクトの速度、加速度、回転等の運動の状態を含む。また、「仮想オブジェクトが他のオブジェクトに接触しているときの前記仮想オブジェクトの運動状態」とは、仮想オブジェクトが他のオブジェクトと接触している状態を維持しているときの当該仮想オブジェクトの運動状態(速度、加速度、回転等)を意味する。また、「仮想オブジェクトが他のオブジェクトに接触するときの前記仮想オブジェクトの運動状態」とは、仮想オブジェクトが他のオブジェクトと接触する際の(接触する瞬間の)当該仮想オブジェクトの運動状態(速度、加速度、回転等)を意味する。
また、「振動波形を示す信号」は、例えば、振動波形の振幅及び周波数であってもよい。また、「振動波形を示す信号」は、振動波形自体であってもよいし、振動波形を示す振動パターンデータを指定する信号であってもよい。
また、「第1振動波形と第2振動波形とを合成する」とは、例えば、2つの振動波形の振幅を合計すること、2つの振動波形の周波数の平均(重み付きの平均であってもよいし重み無しの平均であってもよい)をとることであってもよい。また、「第1振動波形と第2振動波形とを合成する」とは、例えば波の重ね合わせの原理にしたがって第1振動波形と第2振動波形とを重ね合わせることであってもよい。
上記によれば、仮想オブジェクトと他のオブジェクトの接触によって発生する複数の振動を合成することができ、オブジェクトの運動によって生じる様々な振動をリアルに再現することができる。
また、前記操作部の姿勢及び/又は動きを算出する姿勢・動き算出部をさらに備えてもよい。前記運動演算部は、前記操作部の姿勢及び/又は動きに基づいて、前記仮想オブジェクトの運動に変化を加える。
上記によれば、操作部の姿勢及び/又は姿勢に基づいて仮想オブジェクトを運動させることができる。
また、前記操作部は、慣性センサを含んでもよい。前記姿勢・動き算出部は、前記慣性センサからのデータに基づいて、前記操作部の姿勢及び/又は動きを算出してもよい。
上記によれば、慣性センサによって操作部の姿勢及び/又は動きを算出することができる。
また、前記波形生成部は、前記仮想オブジェクトが前記他のオブジェクトと接触している状態で移動しているときの当該仮想オブジェクトの移動に応じた振動波形を示す信号を生成してもよい。
上記によれば、例えば、仮想オブジェクトが他のオブジェクト上を転がっているときに仮想オブジェクトの転がりに応じた振動を発生させることができる。
また、前記波形生成部は、前記仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該衝突に応じた振動波形を示す信号を生成してもよい。
上記によれば、仮想オブジェクトが他のオブジェクトと衝突する場合に衝突に応じた振動を発生させることができる。
また、前記波形生成部は、前記仮想オブジェクトの速度が大きいほど、振幅の大きな振動波形を示す信号を生成してもよい。
上記によれば、例えば、仮想オブジェクトが他のオブジェクトと接触している状態で移動している場合、仮想オブジェクトの移動速度が大きいほど、振動部を大きく振動させることができる。また、例えば、仮想オブジェクトが衝突する場合、衝突時の速度が大きいほど、振動部を大きく振動させることができる。
また、前記波形生成部は、前記仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該仮想オブジェクトの衝突に応じた振動波形を示す信号を生成してもよい。前記波形出力部は、前記仮想オブジェクトの移動に応じた振動波形と、前記仮想オブジェクトの衝突に応じた振動波形とを合成した合成波形を示す信号を出力してもよい。
上記によれば、仮想オブジェクトの移動に応じた振動と仮想オブジェクトの衝突に応じた振動を合成することができ、リアルな振動を再現することができる。
また、前記仮想オブジェクトは、仮想容器オブジェクトと、当該仮想容器オブジェクトに内包される少なくとも1つの内容物オブジェクトとを含んでもよい。前記運動演算部は、前記仮想容器オブジェクトの姿勢及び/又は動きに変化を加えることで前記内容物オブジェクトの運動に変化を加えてもよい。
上記によれば、仮想容器オブジェクト内で内容物オブジェクトを運動させることができ、内容物オブジェクトの仮想容器オブジェクト内での運動によって発生する振動を再現することができる。
また、前記内容物オブジェクトは複数の球体オブジェクトであってもよい。前記波形生成部は、前記複数の球体オブジェクトが前記仮想容器オブジェクト内を転がる場合に各球体オブジェクトの転がりに応じた振動波形を示す信号を生成し、前記複数の球体オブジェクトが衝突した場合に、各球体オブジェクトの衝突に応じた振動波形を示す信号を生成してもよい。
上記によれば、複数の球体オブジェクトを仮想容器オブジェクト内で運動させ、各球体オブジェクトの転がりに応じた振動と各球体オブジェクトの衝突に応じた振動とを合成することができ、複数の球体が容器内で運動するときの振動を再現することができる。
また、前記内容物オブジェクトは直方体オブジェクトであってもよい。前記波形生成部は、前記直方体オブジェクトが前記仮想容器オブジェクトに衝突した場合に、当該衝突に応じた振動波形を示す信号を生成してもよい。
上記によれば、直方体が容器内で運動するときの振動を再現することができる。
また、前記内容物オブジェクトは仮想的な点または粒子であってもよい。前記波形生成部は、前記内容物オブジェクトが前記仮想容器オブジェクト内を移動する場合、当該移動に応じた振動波形を示す信号を生成してもよい。
上記によれば、仮想的な点または粒子の仮想容器内での運動に応じて振動を発生させることができる。
また、前記波形出力部は、所定数を上限に複数の振動波形を合成し、当該合成した合成波形を示す信号を前記振動部に出力してもよい。
上記によれば、合成する振動波形の数に上限を設けることができる。
また、前記情報処理システムは、情報処理装置と操作装置を含んでもよい。前記操作部および前記振動部は、前記操作装置に設けられてもよい。前記運動演算部、前記波形生成部、および前記波形出力部は、前記情報処理装置に設けられてもよい。前記情報処理装置は、前記操作装置との通信により、前記操作部からの入力を受信し、前記波形出力部からの出力を前記操作装置に送信してもよい。
上記によれば、振動部を備える操作装置に対する操作に応じて、情報処理装置が仮想オブジェクトの運動を演算し、情報処理装置における演算の結果によって、操作装置を振動させることができる。
また、前記波形出力部から出力される信号は、単位時間毎の波形の振幅または振幅の差分と、周波数または周波数の差分とを含んでもよい。
上記によれば、単位時間毎に、振幅又は振幅の差分と、周波数又は周波数の差分とを、情報処理装置から操作装置に送信することができる。
また、前記波形生成部は、前記信号として振動の振幅及び/又は周波数を示すデータを生成し、前記仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成しているときに前記仮想オブジェクトの運動状態が変化した場合、前記振幅及び/又は周波数を変化させてもよい。
上記によれば、例えば、振動部が振動しているときに操作部に対する操作に応じて振動部の振動の振幅及び/又は周波数を変化させることができ、操作部に対する操作をリアルタイムに反映することができる。
また、前記運動演算部は、前記仮想オブジェクトの運動を示す数値を算出してもよい。前記振動波形を示す振動パターンデータが複数あってもよい。前記波形生成部は、前記数値に応じて複数の振動パターンデータの中からいずれかを選択し、選択した振動パターンデータに基づいて、前記振動波形を示す信号を生成してもよい。
上記によれば、仮想オブジェクトの運動を示す数値(例えば仮想オブジェクトの速度)の大きさに応じて複数の振動パターンデータの中から何れかを選択することができ、例えば、仮想オブジェクトの速度に応じて振動波形を変えることができる。
また、前記波形生成部は、前記信号として振動の振幅及び/又は周波数を示すデータを生成し、前記数値に応じて、前記振幅及び/又は周波数を変化させてもよい。
上記によれば、仮想オブジェクトの運動を示す数値(例えば仮想オブジェクトの速度)に応じて、振幅及び/又は周波数を変化させることができる。
また、他の形態は、入力された振動波形を示す信号に応じた振動をする振動部を振動させる情報処理装置のコンピュータにおいて実行される情報処理プログラムであってもよい。情報処理プログラムは、前記コンピュータに、仮想オブジェクトの仮想的な運動を逐次演算し、操作部に対する操作に応じて当該仮想オブジェクトの運動に変化を加える運動演算ステップと、前記運動演算ステップにおける演算に基づいて、前記仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成する波形生成ステップと、前記波形生成ステップにおいて第1の振動波形を示す信号が生成されるときに前記波形生成ステップにおいて第2の振動波形を示す信号が生成される場合、前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する波形出力ステップと、を実行させる。
また、他の形態は、上記情報処理プログラムを実行する情報処理装置であってもよい。また、他の形態は、上記情報処理装置や情報処理システムにおいて行われる情報処理方法であってもよい。
本発明によれば、仮想オブジェクトの仮想的な運動を振動によって感じさせることができる。
本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図 本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図 本体装置2の一例を示す六面図 左コントローラ3の一例を示す六面図 右コントローラ4の一例を示す六面図 本体装置2の内部構成の一例を示すブロック図 本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図 本実施形態の情報処理システム1における振動制御の機能ブロック図の一例 2つの振動波形が同時に生成されるときの2つの振動波形の合成を概念的に示す図 1の振動波形に基づく振動が行われているときに別の振動波形に基づく信号が生成されるときの2つの振動波形の合成を概念的に示す図 仮想オブジェクトの運動とその運動に応じた振動の一例について説明するための図 仮想オブジェクトの運動とその運動に応じた振動の一例について説明するための図 第1のゲームが行われる様子を示す図 第1のゲームにおける仮想オブジェクトと仮想容器の一例を示す図 左コントローラ3を現実空間で傾けたときに球オブジェクト70が運動する様子を示す図 左コントローラ3を現実空間で傾けたときに球オブジェクト70が運動する様子を示す図 左コントローラ3を現実空間で傾けたときに球オブジェクト70が運動する様子を示す図 第2のゲームが行われる様子を示す図 第2のゲームにおける仮想オブジェクトと仮想容器の一例を示す図 左コントローラ3が現実空間で水平方向に振られた場合にダイスオブジェクト71a、71bが運動する様子を示す図 左コントローラ3が現実空間で水平方向に振られた場合にダイスオブジェクト71a、71bが運動する様子を示す図 第3のゲームにおける仮想オブジェクトと仮想容器の一例を示す図 左コントローラ3の姿勢を変化させた場合の代表点72の運動およびそれに応じた振動を概念的に示す図 左コントローラ3の姿勢を変化させた場合の代表点72の運動およびそれに応じた振動を概念的に示す図 左コントローラ3が振られたときに左コントローラ3が振動する様子を概念的に示す図 第3のゲームにおける代表点の運動に基づく振動の振動パターンデータの一例を示す図 第3のゲームにおける加速度値に基づく振動の振動パターンデータの一例を示す図 コントローラから出力されるデータの一例を示す図 コントローラに入力されるデータの一例を示す図 第1のゲームまたは第2のゲームが行われる場合の本体装置2において行われる処理の詳細を示すフローチャート 図24のステップS8の波形出力処理の詳細を示すフローチャート 第3のゲームが行われる場合の本体装置2において行われる処理の詳細を示すフローチャート
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。以下では、まず本実施形態のゲームシステムのハードウェア構成について説明し、その後に本実施形態のゲームシステムの制御について説明する。
(本体装置、左コントローラ、右コントローラの説明)
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
図3に示すように、本体装置2は、第1スロット23を備える。第1スロット23は、ハウジング11の上側面に設けられる。第1スロット23は、第1の種類の記憶媒体を装着可能な形状を有する。第1の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。第1の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32が、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック押下する入力が可能である。
左コントローラ3は、各種操作ボタンを備える。まず、左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36)を備える。さらに、録画ボタン37、−(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、および、Yボタン56)を備える。さらに、+(プラス)ボタン57、ホームボタン58を備える。また、右コントローラ4は、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81〜98を備える。これらの構成要素81〜98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、CPU(Central Processing Unit)81を備える。CPU81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、厳密にはCPU機能、GPU機能等の複数の機能を含むSoC(System−on−a−chip)である。CPU81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、各スロット23および24に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、CPU81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、CPU81に接続される。スロットI/F91は、第1スロット23に接続され、第1スロット23に装着された第1の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。
CPU81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、CPU81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、CPU81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
CPU81は、上述の左側端子17、右側端子21、および、下側端子27に接続される。CPU81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、CPU81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、CPU81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、ユーザは、複数の左コントローラ3および複数の右コントローラ4を用いて本体装置2に対する入力を行うことができる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とCPU81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、CPU81へ出力する。
また、ディスプレイ12は、CPU81に接続される。CPU81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、CPU81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
上記の加速度センサ89および角速度センサ90は、CPU81に接続され、加速度センサ89および角速度センサ90の検出結果は、CPU81へ出力される。CPU81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびCPU81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、CPU81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39、43、44、46、47)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、慣性センサを備える。具体的には、加速度センサ104を備える。また、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、振動によってユーザに通知を行うための振動子107を備える。本実施形態においては、振動子107は、本体装置2からの指令によって制御される。すなわち、通信制御部101は、本体装置2からの上記指令を受け取ると、当該指令に従って振動子107を駆動させる。ここで、左コントローラ3は、コーデック部106を備える。通信制御部101は、上記指令を受け取ると、指令に応じた制御信号をコーデック部106へ出力する。コーデック部106は、通信制御部101からの制御信号から振動子107を駆動させるための駆動信号を生成して振動子107へ与える。これによって振動子107が動作する。
振動子107は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅、周波数で振動をさせることができる。本実施形態において、本体装置2から左コントローラ3に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、波形そのものを示す情報を送信するようにしてもよいが、振幅と周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅と周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部106は、通信制御部101から取得される振幅と周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子107を駆動させる。したがって、本体装置2は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子107を振動させる振幅と周波数を制御することができる。なお、本体装置2から左コントローラ3に送信される振幅と周波数は、1つに限らず、2つ以上送信するようにしてもよい。その場合、コーデック部106は、受信された複数の振幅と周波数それぞれが示す波形を合成することで、振動子107を制御する電圧の波形を生成することができる。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
また、右コントローラ4は、振動子117およびコーデック部116を備える。振動子117およびコーデック部116は、左コントローラ3の振動子107およびコーデック部106と同様に動作する。すなわち、通信制御部111は、本体装置2からの指令に従って、コーデック部116を用いて振動子117を動作させる。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
(本実施形態のゲームにおける振動制御の概要)
次に、上述した本体装置2およびコントローラを用いて行われるゲームについて説明する。本実施形態では、ゲームの実行中に、左右のコントローラ3,4に設けられた振動子107,117が振動する。以下、本実施形態の振動制御について説明する。
図8は、本実施形態の情報処理システム1における振動制御の機能ブロック図の一例である。
図8に示されるように、本体装置2は、姿勢・動き算出部120と、運動演算部121と、波形生成部122と、波形出力部123とを備える。これら各部120〜123は、本体装置2のCPU81が所定のゲームプログラム(例えばスロット23に装着された記憶媒体又はフラッシュメモリ84に記憶されたゲームプログラム)を実行することによって実現される。また、上述のように、左コントローラ3は慣性センサ(具体的には、加速度センサ104および角速度センサ105)を備え、右コントローラ4は慣性センサ(具体的には、加速度センサ114および角速度センサ115)を備える。
姿勢・動き算出部120は、コントローラ(3,4)の慣性センサからのデータに基づいて、コントローラの姿勢および動きを算出する。具体的には、姿勢・動き算出部120は、左コントローラ3の角速度センサ105からのデータに基づいて左コントローラ3の姿勢(傾き)を算出する。また、姿勢・動き算出部120は、左コントローラ3の加速度センサ104からのデータに基づいて左コントローラ3の動き(振られているか否か、振られているときの振り強さ)を算出する。同様に、姿勢・動き算出部120は、右コントローラ4の姿勢(傾き)および動きを算出する。
運動演算部121は、仮想オブジェクトの運動を演算する。運動演算部121は、姿勢・動き算出部120によって算出されたコントローラの姿勢および/または動きに基づいて、仮想オブジェクトに対する運動シミュレーションを行い、仮想オブジェクトの運動(位置、速度、加速度、回転等)を計算する。運動演算部121は、例えば、仮想オブジェクトの質量、仮想オブジェクトの大きさ、仮想オブジェクトにかかる力(重力、慣性力、仮想オブジェクトに加えられた重力以外の力等)、仮想オブジェクトと他のオブジェクトとの間の摩擦等を考慮して、仮想オブジェクトの運動シミュレーションを行う。本実施形態では、運動演算部121は、仮想オブジェクトが仮想容器(仮想容器オブジェクト)内を運動するものとして、当該仮想容器内における仮想オブジェクトの運動を計算する。仮想容器内に複数の仮想オブジェクトが存在する場合、運動演算部121は、仮想オブジェクト毎に運動を計算する。
波形生成部122は、運動演算部121による仮想オブジェクトの運動の演算結果に基づいて、仮想オブジェクトが他のオブジェクトに接触している又は接触するときの当該仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成する。具体的には、本体装置2には、振動波形を示す振動パターンデータが予め記憶されており、波形生成部122は、振動パターンデータに基づいて、振動波形を示す信号を生成する。
ここで、「仮想オブジェクトが他のオブジェクトに接触しているときの当該仮想オブジェクトの運動状態」とは、仮想オブジェクトが他のオブジェクトの少なくとも一部と接触している状態を維持しているときの仮想オブジェクトの運動の状態(速度、加速度、回転等)である。また、「仮想オブジェクトが他のオブジェクトに接触するときの当該仮想オブジェクトの運動状態」とは、仮想オブジェクトが他のオブジェクトの少なくとも一部と接触する際の(接触する瞬間の)仮想オブジェクトの運動の状態(速度、加速度、回転等)である。
波形生成部122は、上記仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成する。例えば、仮想オブジェクトが仮想容器の底面を転がる場合、波形生成部122は、仮想オブジェクトの転がりに応じた振動波形を示す信号を生成する。また、仮想オブジェクトが仮想容器の面に衝突する場合、波形生成部122は、仮想オブジェクトの衝突に応じた振動波形を示す信号を生成する。仮想オブジェクトが複数存在する場合、波形生成部122は、各仮想オブジェクトの運動状態に応じた振動波形を示す信号を生成する。このため、波形生成部122は、ある仮想オブジェクトの運動状態に応じた振動波形を示す信号と、別の仮想オブジェクトの運動状態に応じた振動波形(2つの波形は同じ形状であってもよいし異なっていてもよい)とを同時に生成する場合もある。また、仮想オブジェクトが1つの場合でも、波形生成部122は、1つの仮想オブジェクトの運動状態に応じた振動波形を示す信号を同時に2つ以上生成する場合もある。
波形出力部123は、波形生成部122によって生成された振動波形を示す信号をコントローラに出力する。これに応じて、コントローラ内の振動子107,117は振動する。波形生成部122によって複数の振動波形を示す信号が生成される場合、波形出力部123は、複数の振動波形を合成し、当該合成した合成波形を示す信号をコントローラに出力する。例えば、波形生成部122によって第1の振動波形を示す信号が生成されるときに波形生成部122によって第2の振動波形を示す信号が生成される場合、波形出力部123は、第1の振動波形と第2の振動波形とを合成し、合成波形を示す信号をコントローラに出力する。なお、波形生成部122によって同時に3つ以上の振動波形が生成される場合、これら3つ以上の振動波形を合成し、合成波形を示す信号をコントローラに出力する。なお、波形出力部123が合成する振動波形の数には上限があってもよい。例えば、波形出力部123は、最大で4つの振動波形を合成可能であってもよい。
波形出力部123から1の振動波形を示す信号、又は、複数の振動波形を合成した合成波形を示す信号が出力されると、その信号に基づいてコントローラの振動子が振動する。コントローラの振動子は、周波数および振幅を指定することにより、指定された周波数および振幅で振動するように構成されている。波形出力部123は、振動の周波数と振幅とを含む信号を出力する。波形出力部123は、上記信号を所定の時間間隔(例えば、5m秒毎)で出力する。コントローラの振動子は、当該信号に含まれる周波数および振幅で振動する。所定の時間間隔で波形出力部123から上記信号が出力されることにより、振動子は、1つの振動波形に合う振動、又は、複数の振動波形を合成した合成波形に合う振動をする。
なお、図8に示される姿勢・動き算出部120、運動演算部121、波形生成部122、波形出力部123、慣性センサ、および振動子は、本体装置2およびコントローラの何れに配置されてもよい。例えば、波形生成部122および波形出力部123が、コントローラに設けられてもよい。この場合、振動波形を示す振動パターンデータは、コントローラに予め記憶されてもよい。そして、本体装置2は、運動演算部121の演算結果に応じて振動波形を示す信号(振動パターンデータを指定する信号)を出力し、コントローラは、受信した信号に対応する振動パターンデータを読み取って振動子を振動させてもよい。また、姿勢・動き算出部120、運動演算部121、波形生成部122、波形出力部123、慣性センサ、および振動子の全てが、本体装置2に設けられてもよいし、コントローラに設けられてもよい。
ここで複数の振動波形の合成について説明する。図9は、2つの振動波形が同時に生成されるときの2つの振動波形の合成を概念的に示す図である。
図9に示されるように、波形生成部122は、仮想オブジェクトの運動状態に応じて、例えば振動波形1を生成する。この振動波形1による振動は、第1所定時間行われる。また、波形生成部122は、仮想オブジェクトの運動状態に応じて、例えば振動波形2を生成する。この振動波形2による振動は、上記第1所定時間と異なる又は同じ第2所定時間行われる。例えば、波形生成部122は、時刻t1のタイミングで振動波形1を生成し、同時に振動波形2を生成する場合がある。この場合、波形出力部123は、2つの振動波形1および振動波形2を合成した合成波形を示す信号を出力する。この合成波形を示す信号に基づいて、コントローラ内の振動子107,117が振動する。
具体的には、波形出力部123は、例えば5m秒毎に振動波形を示す信号(周波数および振幅)をコントローラに出力する。振動子107,117は、波形出力部123からの信号に応じた周波数および振幅で振動する。これにより、振動子107,117は、合成波形に合う振動をする。
なお、複数の振動波形は必ずしも同時に生成されなくてもよい。図10は、1の振動波形に基づく振動が行われているときに別の振動波形に基づく信号が生成されるときの2つの振動波形の合成を概念的に示す図である。
図10に示されるように、波形生成部122は、例えば時刻t1のタイミングで振動波形1を生成し、この振動波形1を示す信号が、波形出力部123によってコントローラに出力される。次に、波形生成部122は、時刻t1から所定時間経過後の時刻t2のタイミングで振動波形2を生成する。時刻t2においては、振動波形1に基づく振動が継続して行われている。この場合、波形出力部123は、振動波形1と振動波形2とを合成し、当該合成波形を示す信号をコントローラの振動子に出力する。これにより、時刻t1から時刻t2の間は、1つの振動波形1に基づく振動が行われ、時刻t2以降は2つの振動波形1および2を合成した合成波形に基づく振動が行われる。
このように波形出力部123は、第1の振動波形を示す信号を出力しているときに、別の第2の振動波形を示す信号が生成された場合、これらの振動波形を合成した合成波形を示す信号を出力する。これにより、振動子107,117は、第1の振動波形に基づく振動をしているときでも、別の第2の振動波形が発生した場合に、途中で振動波形を変化させる。
次に、仮想オブジェクトの運動とその運動に応じた振動について説明する。図11Aおよび図11Bは、仮想オブジェクトの運動とその運動に応じた振動の一例について説明するための図である。
図11Aに示されるように、例えば球形の仮想オブジェクトが仮想の平面上を転がる場合、すなわち、仮想オブジェクトが平面に接触したまま移動する場合、その仮想オブジェクトの転がりに応じた振動波形が生成される。例えば、仮想オブジェクトが平面上を転がる場合には、比較的小さな振幅を有する振動波形が生成される。仮想オブジェクトが平面上を転がっている間、転がりに応じた振動波形が継続的に生成される。
また、図11Bに示されるように、仮想オブジェクトが仮想の壁(側面)に衝突する場合、すなわち、仮想オブジェクトが壁に接触する場合、その仮想オブジェクトの衝突に応じた振動波形が生成される。例えば、仮想オブジェクトが他のオブジェクトと衝突する場合には、比較的大きな振幅を有する振動波形が生成される。仮想オブジェクトが衝突する場合、衝突の瞬間から所定期間だけ衝突に応じた振動波形が生成される。
本実施形態では、仮想オブジェクトの運動状態に応じた振動波形が予め用意されている。仮想オブジェクトに対する運動シミュレーションの結果に基づいて、仮想オブジェクトの運動状態に応じた振動波形が選択され、選択された振動波形を示す信号が生成される。なお、図11Aおよび図11Bに示す仮想オブジェクトの運動状態に応じた振動波形は単なる例示であり、他の振動波形が用意されてもよい。例えば、仮想オブジェクトの速度、回転、種類や形状、重さや硬さ、表面の状態等に応じて、異なる振動波形が用意されてもよい。例えば、仮想オブジェクトの速度が大きい場合には速度が小さい場合と比べて振動の周波数が高くてもよい。また、仮想オブジェクトが重い場合には軽い場合と比べて振動の周波数が低くてもよい。また、仮想オブジェクトの表面が滑らかな場合(凹凸が無い場合)は、表面が滑らかでない場合(凹凸がある場合)よりも、振動の周波数が低く、かつ、振幅が小さくてもよい。また、仮想オブジェクトと接触する他のオブジェクト(平面や壁、或いは別の仮想オブジェクト等)の形状や硬さ、表面の状態等に応じて、異なる振動波形が用意されてもよい。
(ゲームの具体例)
次に、上述した振動制御を用いたゲームの具体例について説明する。以下では、第1のゲームから第3のゲームの3つのゲームについて説明する。
(第1のゲーム)
図12は、第1のゲームが行われる様子を示す図である。第1のゲームは、2人のプレイヤによって行われるゲームであり、1人のプレイヤが左コントローラ3を把持し、別のプレイヤが右コントローラ4を把持してゲームを行う。図12に示されるように、本体装置2の画面には、ゲーム画像が表示される。第1のゲームは、コントローラを直方体の箱と見立てて、仮想的に直方体の箱の中にある球の数を当てるゲームである。球は上記仮想オブジェクトであり、直方体の箱は、上記仮想容器である。本体装置2は、仮想オブジェクトとしての球オブジェクトの運動シミュレーションを行い、球オブジェクトの運動シミュレーションの結果に応じて、コントローラ3,4を振動させる。各プレイヤは、コントローラを把持して、コントローラを傾けたり振ったりすることによりコントローラを振動させ、その振動に基づいて箱の中の球の数を推測する。
図13は、第1のゲームにおける仮想オブジェクトと仮想容器の一例を示す図である。図13に示されるように、第1のゲームでは、仮想空間に仮想容器(73、74)が定義され、仮想容器の中に複数の球オブジェクト70(例えば70a〜70c)が内包される。仮想容器73は左コントローラ3に対応し、仮想容器73内には複数の球オブジェクト70が配置される。また、仮想容器74は右コントローラ4に対応し、仮想容器74内には複数の球オブジェクト70が配置される。仮想容器内の球オブジェクト70の数は、ゲームの開始時にランダムに決定される。左コントローラ3に対応する仮想容器73内の球オブジェクトの数と、右コントローラ4に対応する仮想容器74内の球オブジェクトの数とは一致する。
図13のXYZ座標系は仮想空間に固定の座標系であり、XbYbZb座標系は仮想容器に固定の座標系である。
具体的には、XYZ座標系におけるY軸は、仮想空間の高さ方向の軸であり、X軸は仮想空間の横方向の軸であり、Z軸は仮想空間の奥行き方向の軸である。仮想空間のY軸負方向には、常に仮想の重力がかかるものとする。
また、仮想容器の横方向をXb軸方向、奥行き方向をZb軸方向、高さ方向をYb軸方向とする。仮想容器は、横方向に長い直方体であり、底面(Xb軸およびZb軸に平行な平面)、および、側面(Yb軸に平行な平面)を有する。
仮想容器の姿勢は、コントローラの現実空間における姿勢と連動する。例えば、左コントローラ3の長手方向(図12のy軸方向)は、左コントローラ3に対応する仮想容器73のXb軸負方向と一致し、左コントローラ3の厚さ方向(図12のz軸方向)は、仮想容器73のYb軸負方向と一致し、左コントローラ3の幅方向(図12のx軸方向)は、仮想容器73のZb軸負方向と一致する。右コントローラ4に対応する仮想容器74についても同様であり、右コントローラ4に対応する仮想容器74の姿勢は、右コントローラ4の現実空間における姿勢と連動する。
以下、左コントローラ3を例にとって左コントローラ3を傾けたときの仮想容器73および球オブジェクト70の運動について説明する。図14A〜図14Cは、左コントローラ3を現実空間で傾けたときに球オブジェクト70が運動する様子を示す図である。
図14Aに示されるように、左コントローラ3を例えばx軸まわりに回転させた場合、左コントローラ3に対応する仮想容器73もZb軸まわりに回転し、仮想容器73の底面が図14Aの左右方向に対して傾く。仮想空間に固定のY軸負方向には仮想の重力がかかるため、仮想容器73内の球オブジェクト70a〜70cには、仮想容器73の底面に沿った方向(図14の右方向)に力がかかる。この力によって、球オブジェクト70a〜70cは、Xb軸方向に転がる。
具体的には、球オブジェクト70a〜70cに対して運動シミュレーションが行われ、球オブジェクト70a〜70cの位置、速度、加速度、回転等が計算される。球オブジェクト70a〜70cが仮想容器73の底面を転がっている間、左コントローラ3が振動する。より具体的には、上述したように、球の転がりに応じた振動波形を示す信号が球オブジェクト70a〜70c毎に生成される。そして、各球オブジェクト70a〜70cの転がりに応じた振動波形が合成される。すなわち、球オブジェクト70aの転がりに応じた振動波形と、球オブジェクト70bの転がりに応じた振動波形と、球オブジェクト70cの転がりに応じた振動波形とが合成される。そして、これら3つの振動波形を合成した合成波形に応じた信号が本体装置2から左コントローラ3に出力され、左コントローラ3の振動子107が振動することにより、左コントローラ3が振動する。この本体装置2から出力される信号には、振動の周波数と振幅とが含まれる。振動子107は、入力された信号に含まれる周波数および振幅で振動する。
図14Bに示されるように、球オブジェクト70a〜70cが仮想容器73内を転がり始めてから所定時間が経過すると、右端の球オブジェクト70aが仮想容器73の側面(YbZb平面に平行な面)に衝突する。この球オブジェクト70aの衝突に応じて、衝突に応じた振動波形を示す信号が生成され、左コントローラ3の振動子107が振動する。具体的には、球オブジェクト70aが仮想容器73の側面に衝突する時点では、球オブジェクト70bおよび70cは仮想容器73の底面を転がっているため、球オブジェクト70aの衝突に応じた振動波形と、球オブジェクト70bの転がりに応じた振動波形と、球オブジェクト70cの転がりに応じた振動波形とが合成される。そして、合成された合成波形に応じた信号が左コントローラ3に出力され、左コントローラ3の振動子107が振動する。球オブジェクト70aが衝突する際には、他の球オブジェクトが転がる際の振動波形とは異なる振動波形が生成され、かつ、球オブジェクト70aが衝突する際の振動の振幅は、他の球オブジェクトが転がる際の振動の振幅よりも大きい。このため、プレイヤは、球オブジェクト70aが仮想容器73の側面に衝突したことを認識することができる。
さらに時間が経過すると、図14Cに示されるように、球オブジェクト70bが右端の球オブジェクト70aに衝突する。この衝突による衝撃が右端の球オブジェクト70aを介して仮想容器73の側面に伝わり、球オブジェクト70bの衝突に応じた振動波形が生成される。これにより、球オブジェクト70bの衝突に応じた振動が発生する。
本実施形態における第1のゲームでは、球オブジェクト70の運動状態に応じた振動波形を示す振動パターンデータが用意されている。具体的には、球オブジェクト70の転がりに応じた振動波形を示す振動パターンデータ(転がり用振動パターンデータ)と、球オブジェクト70の衝突に応じた振動波形を示す振動パターンデータ(衝突用振動パターンデータ)とが予め用意されている。各球オブジェクト70に対する運動シミュレーションの結果に基づいて、各球オブジェクト70がどのような運動状態か(すなわち、球オブジェクト70が転がっている状態か、球オブジェクト70が他のオブジェクトと衝突している状態か)が判定され、その判定結果に応じた振動パターンデータが選択される。
複数の振動パターンデータのうちの何れかが選択された場合、振動の振幅が調整される。例えば、球オブジェクト70が仮想容器内を転がる場合、その転がる速度に応じて、振幅が調整される。例えば、転がる速度が大きいほど、振幅が大きくなる。例えば、転がり用振動パターンデータが示す振動波形に、転がる速度に応じた係数がかけられてもよい。転がり用振動パターンデータに基づいて振動子が振動しているときに球オブジェクト70の速度が変化した場合、振幅が変化する。例えば、振動パターンデータに基づいて振動子が振動しているときに、コントローラに対する操作に応じて球オブジェクト70の転がる速度が変化した場合、振幅が変化してもよい。このように、コントローラに対して行われた操作が、球オブジェクト70の運動にリアルタイムに反映され、振動がリアルタイムで変化する。
また、球オブジェクト70が衝突する場合も同様に、衝突時の球オブジェクト70の運動状態に応じて、振幅が調整される。例えば衝突時の球オブジェクト70の速度が大きいほど、振幅が大きくなる。例えば、衝突用振動パターンデータが示す振動波形に、衝突時の速度に応じた係数がかけられてもよい。
なお、球オブジェクト70と仮想容器の側面とが衝突する場合に限らず、球オブジェクト70と仮想容器の底面との衝突に応じた振動が発生してもよい。また、仮想容器に上面(底面と平行な面:仮想容器の蓋)が設けられ、仮想オブジェクト70と仮想容器の上面との衝突に応じた振動が発生してもよい。また、上記では、球オブジェクト70同士が衝突しても球オブジェクト70同士の衝突によって振動は発生せず、球オブジェクト70同士の振動が仮想容器に伝わることによって振動が発生するものとしたが、球オブジェクト70同士の衝突により振動が発生してもよい。この場合、球オブジェクト70同士の衝突の振動波形と、球オブジェクト70と仮想容器の面との衝突の振動波形とが同じであってもよいし、異なってもよい。
また、上記では、振動パターンデータが2つ用意されるものとしたが、振動パターンデータは3つ以上用意されてもよい。例えば、球オブジェクト同士が衝突するときの振動パターンデータと、球オブジェクトと仮想容器の側面とが衝突するときの振動パターンデータとが別に用意されてもよい。また、球オブジェクトが転がる速度に応じて、異なる振動パターンデータが用意されてもよい。また、球の大きさや重さによって振幅の異なる振動パターンデータが用意されてもよい。
また、球オブジェクト70の速度に応じて、振幅に加えて又は代えて、振動の周波数が調整されてもよい。例えば、球オブジェクト70の速度が大きいほど、周波数が高くなるように調整されてもよいし、周波数が低くなるように調整されてもよい。例えば、複数の振動パターンデータのうちの何れかが選択された場合、選択された振動パターンデータに基づく周波数が、球オブジェクト70の速度に応じて調整されてもよい。また、周波数の異なる複数の振動パターンデータが予め用意され、球オブジェクト70の速度に応じて、複数の振動パターンデータの中から何れかが選択されてもよい。また、ある振動パターンデータに基づいて振動子が振動しているときに、例えば球オブジェクト70の速度が変化した場合、その速度に応じて振動の周波数が変化されてもよい。
このように、プレイヤは左コントローラ3を左右に傾けることによって、仮想容器73を傾け、球オブジェクト70を仮想容器73内で運動させる。プレイヤは、球オブジェクト70の運動(転がり、衝突)に応じた振動を感じることで、仮想容器73内に何個の球オブジェクト70が存在するかを推測する。
右コントローラ4についても同様である。右コントローラ4に対応する仮想容器74が仮想空間において定義され、仮想容器74内に1又は複数の球オブジェクト70が内包される。プレイヤが右コントローラ4を左右に傾けることによって、仮想容器74を傾け、球オブジェクト70を仮想容器73内で運動させる。そして、プレイヤは、球オブジェクト70の運動に応じた振動によって仮想容器73内に何個の球オブジェクト70が存在するかを推測する。そして、各プレイヤは、球オブジェクトが何個入っているかを答え、正解したプレイヤが勝利となる。なお、別の例では、第1のゲームは2人で対戦するものでなく、1人で仮想的な球の数を当てるゲームであってもよい。
(第2のゲーム)
次に、第2のゲームについて説明する。図15は、第2のゲームが行われる様子を示す図である。第2のゲームも2人のプレイヤによって行われ、1人のプレイヤが左コントローラ3を把持し、別のプレイヤが右コントローラ4を把持してゲームを行う。第2のゲームは、コントローラをダイスカップと見立てて、ダイスカップの中にある2つのダイスを振ってダイスの目の合計の大きさを競うゲームである。ダイスは上記仮想オブジェクトの一例であり、ダイスカップは、上記仮想容器の一例である。本体装置2は、仮想オブジェクトとしてのダイスオブジェクトの運動シミュレーションを行い、ダイスオブジェクトの運動シミュレーションの結果に応じて、コントローラ3,4を振動させる。なお、別の例においては、1人でプレイするゲームにおいてダイスを振る演出に同様の振動をさせるようにしてもよい。
図16は、第2のゲームにおける仮想オブジェクトと仮想容器の一例を示す図である。図16に示されるように、第2のゲームでは、仮想空間に仮想容器75、76(ダイスカップ)が定義され、仮想容器の中に2つのダイスオブジェクト71(71a、71b)が内包される。左コントローラ3に対応する仮想容器75およびダイスオブジェクト71a,71bが定義され、右コントローラ4に対応する仮想容器76およびダイスオブジェクト71a,71bが定義される。本実施形態では、仮想容器75,76は直方体であるものとするが、例えばカップ状であってもよい。また、ダイスオブジェクト71は立方体であるものとする。
第2のゲームにおいても第1のゲームと同様に、仮想容器75,76に固定のXbYbZb座標系がそれぞれ定義される。仮想容器75の姿勢は左コントローラ3の現実空間における姿勢と連動し、仮想容器76の姿勢は右コントローラ4の現実空間における姿勢と連動する。
以下、左コントローラ3を例にとって左コントローラ3を水平方向に振ったり、水平方向に傾けたりするときの仮想容器75およびダイスオブジェクト71a、71bの運動について説明する。図17Aおよび図17Bは、左コントローラ3が現実空間で水平方向に振られた場合にダイスオブジェクト71a、71bが運動する様子を示す図である。
図17Aに示されるように、左コントローラ3が水平方向(x軸方向またはy軸方向)に振られた場合、左コントローラ3に対応する仮想容器75も水平方向に移動する。なお、左コントローラ3が振られたか否かは、左コントローラ3に設けられた加速度センサ104が検出する加速度の値によって判定することができる。仮想容器75が水平方向に移動すると、仮想容器75内のダイスオブジェクト71a、71bが仮想容器75内を転がる。また、左コントローラ3を水平方向に傾けた場合、仮想容器75も水平方向に傾く。仮想空間に固定のY軸負方向には仮想の重力がかかるため、仮想容器75内のダイスオブジェクト71a、71bには、仮想容器75の底面に沿った方向(図17Aの左右方向)に力がかかる。この力によって、ダイスオブジェクト71a、71bは、Xb軸方向に転がる。
具体的には、ダイスオブジェクト71a、71bのそれぞれに対して運動シミュレーションが行われ、ダイスオブジェクト71a、71bの位置、速度、加速度、回転等が計算される。ダイスオブジェクト71a、71bが仮想容器75の底面を転がっている間、左コントローラ3が振動する。より具体的には、ダイスオブジェクトの転がりに応じた振動波形を示す信号がダイスオブジェクト71a、71b毎に生成される。そして、各ダイスオブジェクト71a、71bの転がりに応じた振動波形が合成される。すなわち、ダイスオブジェクト71aの転がりに応じた振動波形と、ダイスオブジェクト71bの転がりに応じた振動波形とが合成される。合成された合成波形に応じた信号が本体装置2から左コントローラ3に出力され、左コントローラ3の振動子107が振動することにより、左コントローラ3が振動する。
図17Bに示されるように、ダイスオブジェクト71a、71bが仮想容器75内を例えば左方向に転がると、ダイスオブジェクト71aが仮想容器75の側面(YbZb平面に平行な面)に衝突する。このダイスオブジェクト71aの衝突に応じて、衝突に応じた振動波形を示す信号が生成され、左コントローラ3の振動子107が振動する。
各ダイスオブジェクト71a、71bが仮想容器75内を転がる毎に、転がりに応じた振動波形が生成される。また、各ダイスオブジェクト71a、71bが仮想容器75の側面に衝突する毎に、衝突に応じた振動波形が生成される。そして、それぞれの振動波形が合成される。合成された合成波形を示す信号が、左コントローラ3に出力され、左コントローラ3の振動子107が振動することにより、左コントローラ3が振動する。これにより、プレイヤは、現実のダイスカップを実際に振ったときのような振動を感じることができる。
ダイスオブジェクト71が仮想容器75内を転がる場合と、仮想容器75の側面に衝突する場合とで、異なる振動波形が生成される。すなわち、ダイスオブジェクト71が仮想容器75内を転がる場合の振動パターンデータと、ダイスオブジェクト71が仮想容器75の側面に衝突する場合の振動パターンデータとが別々に用意される。なお、ダイスオブジェクト71が仮想容器75内を転がる場合と、仮想容器75の側面に衝突する場合とで、同じ振動波形が生成されてもよい。すなわち、ダイスオブジェクト71が仮想容器75内を転がる場合の振動パターンデータと、ダイスオブジェクト71が仮想容器75の側面に衝突する場合の振動パターンデータとが同じであってもよい。また、ダイスオブジェクト71の運動状態に応じた振動波形を示す振動パターンデータが3つ以上用意されてもよい。例えば、ダイスオブジェクト71同士が衝突する場合の振動パターンデータと、ダイスオブジェクト71が仮想容器75の面に衝突する場合の振動パターンデータとが別々に用意されてもよい。また、ダイスオブジェクト71が仮想容器75の底面を滑る(ダイスオブジェクト71が面上を回転せずに移動する)ときの振動パターンデータが別に用意されてもよい。また、ダイスオブジェクト71が仮想容器75の底面を転がるときの振動パターンデータと、ダイスオブジェクト71が中に浮いた状態から仮想容器75の底面に衝突するときの振動パターンデータとが別々に用意されてもよい。
また、第1のゲームと同様に、第2のゲームにおいても、ダイスオブジェクト71の運動状態に応じて振動の振幅が調整されてもよい。例えば、ダイスオブジェクト71が仮想容器内を転がる場合、その転がる速度に応じて、振幅が調整されてもよい。例えば、転がる速度が大きいほど、振幅が大きくてもよい。また、ダイスオブジェクト71が仮想容器の側面に衝突する場合に、衝突時の速度に応じて、振幅が調整されてもよい。例えば、衝突時の速度が大きいほど、振幅が大きくてもよい。
また、ダイスオブジェクト71が転がる速度に応じて、振幅に加えて又は代えて、周波数が調整されてもよい。例えば、ダイスオブジェクト71の速度が大きいほど、周波数が高くなるように調整されてもよいし、周波数が低くなるように調整されてもよい。また、ダイスオブジェクト71の回転も考慮し、回転速度が大きいほど、周波数が高く(又は低く)なるように調整されてもよい。
(第3のゲーム)
次に、第3のゲームについて説明する。第3のゲームでは、プレイヤがコントローラをシェイカーに見立ててコントローラを傾けたり振ったりする。シェイカーの例としては、マラカス等がある。コントローラが傾けられたり振られたりすることに応じて振動および音声が出力される。以下では、プレイヤが左コントローラ3を用いて第3のゲームを行うものとして説明する。なお、右コントローラ4が用いられた場合も同様である。
図18は、第3のゲームにおける仮想オブジェクトと仮想容器の一例を示す図である。実際のマラカス等のシェイカーは、容器と容器内の砂とで構成されるが、本実施形態では、シェイカーを振ったり傾けたりしたときの振動をシミュレートするために、シェイカーの容器を仮想容器77で表し、シェイカーの容器内の砂を1つの代表点で表すものとする。
図18に示されるように、仮想空間に仮想容器77が定義され、仮想容器77に代表点72が内包される。仮想容器77は、例えば直方体である。代表点72は、例えば大きさを持たない点又は粒子である。第1のゲームおよび第2のゲームと同様に、XYZ座標系は仮想空間に固定の座標系であり、XbYbZb座標系は仮想容器77に固定の座標系である。
現実空間において左コントローラ3の姿勢を変化させると、仮想空間において仮想容器77の姿勢も変化する。仮想容器77の姿勢の変化に応じて、代表点72が移動し、代表点72の移動に応じて左コントローラ3が振動する。また、現実空間において左コントローラ3が振られると、左コントローラ3が振動する。
図19Aおよび図19Bは、左コントローラ3の姿勢を変化させた場合の代表点72の運動およびそれに応じた振動を概念的に示す図である。図19Cは、左コントローラ3が振られたときに左コントローラ3が振動する様子を概念的に示す図である。
図19Aに示されるように、左コントローラ3を例えばx軸まわりに回転させた場合、仮想容器77もZb軸まわりに回転し、仮想容器77の底面が図19Aの左右方向に対して傾く。仮想空間に固定のY軸負方向には仮想の重力がかかるため、仮想容器77内の代表点72には、仮想容器77の底面に沿った方向(図19Aの右方向)に力がかかる。この力によって、代表点72はXb軸方向に移動する。具体的には、代表点72に対して運動シミュレーションが行われ、代表点72の位置、速度、加速度等が計算される。
代表点72が仮想容器77の底面を移動している間、左コントローラ3が振動する(図19A)。具体的には、代表点72の移動に応じた振動波形を示す信号が生成され、その信号が本体装置2から左コントローラ3に出力されて、左コントローラ3の振動子107が振動する。第3のゲームでは、代表点72の移動に応じた振動波形を示す振動パターンデータが複数用意されている。また、代表点72が仮想容器77の底面を移動している間、シェイカーを傾けたときにシェイカー内の砂が移動するような音声がスピーカから出力される。
また、代表点72が仮想容器77内を移動して仮想容器77の側面に衝突すると、その衝突に応じて左コントローラ3が振動する(図19B)。具体的には、代表点72の衝突に応じた振動波形を示す信号が生成され、その信号が左コントローラ3に出力されて、左コントローラ3の振動子107が振動する。代表点72の衝突に応じた振動波形は、代表点72の移動に応じた振動波形とは異なる。第3のゲームでは、代表点72の衝突に応じた振動波形を示す振動パターンデータが複数用意されている。また、代表点72が仮想容器77の側面に衝突すると、砂がシェイカーの容器の内面に衝突したような音声がスピーカから出力される。
ここでは、代表点72が仮想容器77の底面を移動することによる振動(図19A)、及び、代表点72が衝突することによる振動(図19B)を総称して「代表点の運動に基づく振動」ということがある。
一方、プレイヤが左コントローラ3を強く振った場合、その振りの強さに応じて左コントローラ3が振動する(図19C)。具体的には、左コントローラ3が振られると、左コントローラ3の加速度センサ104が加速度を検出する。加速度センサ104が検出した加速度値が所定の閾値を超えている場合、コントローラの振りに応じた振動波形を示す信号が生成されて左コントローラ3に出力され、左コントローラ3の振動子107が振動する。左コントローラ3の振りに応じた振動波形は、代表点72の移動に応じた振動波形、および、代表点72の衝突に応じた振動波形とは異なる。また、左コントローラ3の振りに応じた振動の振幅は、代表点72の移動および衝突に応じた振動の振幅よりも大きい。また、本実施形態では、コントローラの振りに応じた振動波形を示す振動パターンデータが複数用意されている。なお、左コントローラ3を振った場合、その振りの強さに応じた音量の音声(プレイヤがシェイカーを振ったときの音声)がスピーカから出力される。
ここでは、加速度値が所定の閾値を超えている場合に行われるコントローラの振りに応じた振動を「加速度値に基づく振動」ということがある。
このように、第3のゲームでは、コントローラの姿勢に基づいて代表点72に対する運動シミュレーションが行われ、その運動シミュレーションの結果、代表点72の運動に基づく振動(図19Aの移動に応じた振動、図19Bの衝突に応じた振動)が行われる。また、コントローラが強く振られた場合には、加速度値に基づく振動(図19C)が行われる。
図20は、第3のゲームにおける代表点の運動に基づく振動の振動パターンデータの一例を示す図である。図21は、第3のゲームにおける加速度値に基づく振動の振動パターンデータの一例を示す図である。
図20に示されるように、代表点72が移動しているときの振動パターンデータとして、振動パターンP1〜P3が本体装置2に予め記憶されている。代表点72が移動しているときは、振動パターンP1〜P3のうちの何れかがランダムに選択される。振動パターンP1〜P3は、実際のシェイカーが傾けられたときにシェイカー内の砂が移動する(流れる)ことによって発生する振動に類似した振動をコントローラの振動子に行わせる振動パターンであり、それぞれ異なる振動波形を示す振動パターンである。
具体的には、代表点72が仮想容器77の底面を移動開始する際に、振動パターンP1〜P3のうちの何れかがランダムに選択される。振動パターンP1〜P3のうちの何れかが選択された場合、その選択された振動パターンに応じた振動波形を示す信号が生成される。これにより、代表点72の移動(砂の移動)に応じた振動が行われる。このとき、振動の振幅が調整される。例えば、代表点72の移動速度が大きいほど、振幅が大きくなる。なお、代表点72の移動速度に応じて周波数が調整されてもよい。例えば、代表点72の速度が大きいほど、周波数が高く(又は低く)なるように調整されてもよい。
ここで、代表点72が仮想容器77の底面を移動している間、選択された振動パターンに基づく振動が繰り返し行われる。すなわち、代表点72が移動開始してから停止するまでの間、同じ振動パターンデータに基づく振動が行われる。代表点72が移動しているときに代表点72の速度が変化すると、その速度の変化に応じて振幅が変化する。例えば、速度が大きくなると、振幅が大きくなる。そして、例えば、代表点72が仮想容器77の側面に衝突することによって停止すると、振動パターンP1〜P3のうちの何れかに基づく振動が終了する。代表点72が再び仮想容器77の底面を移動開始すると、振動パターンP1〜P3のうちの何れかがランダムに選択され、選択された振動パターンに基づいて振動が行われる。
また、代表点72が衝突する場合、振動パターンP4〜P12のうちの何れかが選択される。振動パターンP4〜P12は、実際のシェイカーが傾けられたときにシェイカー内の砂がシェイカーの容器の内面に衝突することによって発生する振動に類似した振動をコントローラの振動子に行わせる振動パターンであり、それぞれ異なる振動波形を示す振動パターンである。具体的には、振動パターンP4〜P12は、衝突時の代表点の速度の大きさに応じて、3つに分類される。衝突時の代表点72の速度が大きい場合、「大」に分類される振動パターンP4〜P6のうちの何れかがランダムに選択される。また、衝突時の代表点72の速度が中くらいの場合、「中」に分類される振動パターンP7〜P9のうちの何れかがランダムに選択される。また、衝突時の代表点72の速度が小さい場合、「小」に分類される振動パターンP10〜P12のうちの何れかがランダムに選択される。
図20に示される振動パターンP4〜P12のうちの何れかが選択された場合、その選択された振動パターンに応じた振動波形を示す信号が生成される。これにより、代表点72の衝突(砂の衝突)に応じた振動が行われる。このとき、振動の振幅が調整される。例えば、衝突時の代表点72の速度が大きいほど、振幅が大きくなる。なお、衝突時の代表点72の速度に応じて周波数が調整されてもよい。例えば、衝突時の代表点72の速度が大きいほど、周波数が高く(又は低く)なるように調整されてもよい。
また、図21に示されるように、加速度値に基づく振動の振動パターンとして、振動パターンP13〜P21が本体装置2に予め記憶されている。振動パターンP13〜P21は、実際のシェイカーが振られたときに発生する振動に類似した振動をコントローラの振動子に行わせる振動パターンであり、それぞれ異なる振動波形を示す振動パターンである。具体的には、振動パターンP13〜P21は、加速度値の大きさに応じて、3つに分類される。加速度値が大きい場合、「大」に分類される振動パターンP13〜P15のうちの何れかがランダムに選択される。また、加速度値が中くらいの場合、「中」に分類される振動パターンP16〜P18のうちの何れかがランダムに選択される。また、加速度値が小さい場合、「小」に分類される振動パターンP19〜P21のうちの何れかがランダムに選択される。
図21に示される振動パターンP13〜P21のうちの何れかが選択された場合、その選択された振動パターンに応じた振動波形を示す信号が生成される。これにより、加速度値に応じた振動(コントローラの振りに応じた振動)が行われる。このとき、振動の振幅が調整される。例えば、加速度値が大きいほど、振幅が大きくなる。なお、加速度値に応じて周波数が調整されてもよい。例えば、加速度値が大きいほど、周波数が高く(又は低く)なるように調整されてもよい。
コントローラが振られると、コントローラの姿勢が変化するとともに、コントローラの加速度センサが比較的大きな加速度値を検出する。このため、プレイヤがコントローラを振ると、代表点72の運動に基づく振動と、加速度値に基づく振動とが同時に行われる。具体的には、代表点72の運動に基づく振動の振動波形と、加速度値に基づく振動の振動波形とが合成され、当該合成された合成波形を示す信号がコントローラに出力される。
ここで、振動パターンP13〜P21に基づく振動の振幅は、振動パターンP1〜P12に基づく振動の振幅よりも大きい。このため、プレイヤがコントローラを振る場合、代表点72の運動に基づく振動の振動波形と加速度値に基づく振動の振動波形とが合成されるものの、プレイヤは加速度値に基づく振動(すなわち、コントローラの振りに応じた振動)をより感じ易い。また、加速度値に基づく振動が発生するときには、代表点72の運動に基づく振動が発生するときよりも、大きな音声(シェイカーを振ったときの音声)が出力される。
なお、第3のゲームでは、コントローラが継続的に振られているときと、コントローラが振り始められたときとで、異なる振動パターンが用意されてもよい。例えば、コントローラが継続的に振られているときの加速度値に基づく振動の振動パターンとしては、図21に示される振動パターンが用いられる。一方、コントローラが振り始められたとき、すなわち、加速度値が所定の閾値を超えていない状態から、加速度値が所定の閾値を超えたとき、図21とは異なる振動パターンが用いられる。
以上のように、コントローラの振動子は、入力された振動波形を示す信号に応じた振動をする。具体的には、入力される信号には周波数と振幅とが含まれ、振動子は、入力された周波数および振幅で振動する。本実施形態では、仮想オブジェクト(70、71、72)が他のオブジェクト(仮想容器73〜77)と接触し、仮想オブジェクトと他のオブジェクトとが接触している又は接触するときの仮想オブジェクトの運動状態に応じて振動パターンデータが選択される。選択された振動パターンデータに基づく振動波形を示す信号が生成され、当該信号が本体装置2からコントローラに出力される。当該信号に基づいて、コントローラの振動子が振動する。同時に複数の振動波形が生成される場合、複数の振動波形が合成され、当該合成された合成波形を示す信号が出力され、振動子が振動する。
複数の振動波形が合成されるため、例えば複数の仮想オブジェクトが運動する場合、より強く(より大きく)振動子が振動する。これにより、プレイヤに複数の仮想オブジェクトの運動を振動により感じさせることができる。プレイヤに仮想オブジェクトの様々な動きを感じさせることができ、よりリアルな振動を体験させることができる。
(振動制御の詳細)
次に、上述した振動制御を行うための本体装置2において行われる処理の詳細について説明する。まず、コントローラから出力されるデータおよびコントローラに入力されるデータについて説明する。
図22は、コントローラから出力されるデータの一例を示す図である。図23は、コントローラに入力されるデータの一例を示す図である。上述したゲームが行われている間、図22に示すデータが、所定の時間間隔(例えば、5m秒毎)で左コントローラ3および右コントローラ4から本体装置2に出力される。また、上述したゲームが行われている間、図23に示すデータが、所定の時間間隔(例えば、5m秒毎)で本体装置2から左コントローラ3および右コントローラ4に入力される。
図22に示されるように、コントローラから出力されるデータには、加速度データD301と角速度データD302とが含まれる。加速度データD301は、コントローラの加速度センサ(104、114)が検出した各軸方向の加速度を示すデータである。また、角速度データD302は、コントローラの角速度センサ(105、115)が検出した各軸回りの角速度を示すデータである。
また、図23に示されるように、コントローラに入力されるデータには、周波数データD401と、振幅データD402とが含まれる。周波数データD401は、コントローラの振動子(107、117)を振動させるときの周波数を指定するためのデータである。振幅データD402は、コントローラの振動子を振動させるときの振幅を指定するためのデータである。
(本体装置の処理の詳細)
次に、本体装置2において行われる処理の詳細について説明する。図24は、第1のゲームまたは第2のゲームが行われる場合の本体装置2において行われる処理の詳細を示すフローチャートである。図24に示す処理は、本体装置2のCPU81が所定のゲームプログラムを実行することにより行われる。なお、本体装置2は、図24に示す処理を所定の時間間隔(例えば、5m秒毎)で実行する。
図24に示されるように、本体装置2は、各コントローラから図22に示すデータを取得する(ステップS1)。次に、本体装置2は、ステップS1で各コントローラから取得したデータに基づいて、各コントローラの姿勢および動きを算出する(ステップS2)。具体的には、本体装置2は、加速度データD301及び/又は角速度データD302に基づいて、各コントローラの姿勢および動きを算出する。
次に、本体装置2は、ステップS2で算出した各コントローラの姿勢および動きに基づいて、仮想オブジェクトの運動を演算する(ステップS3)。例えば、第1のゲームが行われている場合、本体装置2は、各コントローラに対応する仮想容器73、74を定義するとともに、各仮想容器73,74内に1又は複数の球オブジェクト70を配置する。本体装置2は、各コントローラの姿勢に応じて仮想容器73,74の姿勢を変化させ、各仮想容器73,74内の各球オブジェクト70に対する運動シミュレーションを行う。これにより、各仮想容器73,74内の各球オブジェクト70の位置、速度、加速度、回転等が算出される。また、第2のゲームが行われている場合、本体装置2は、各仮想容器75,76内の各ダイスオブジェクト71に対する運動シミュレーションを行うことにより、各仮想容器75,76内の各ダイスオブジェクト71の位置、速度、加速度、回転等を算出する。
本体装置2は、ステップS3の処理の結果に基づいて、仮想オブジェクトが移動しているか否かを判定する(ステップS4)。本体装置2は、複数の仮想オブジェクトのそれぞれについてステップS4の判定を行う。例えば、第1のゲームが行われている場合、本体装置2は、仮想容器73内の複数の球オブジェクト70毎に、球オブジェクト70が仮想容器73の底面を転がっているか否かを判定する。本体装置2は、仮想容器74内の複数の球オブジェクト70に対しても同様の判定を行う。また、例えば、第2のゲームが行われている場合、本体装置2は、仮想容器75内の複数のダイスオブジェクト71毎に、ダイスオブジェクト71が仮想容器75内を転がっているか否かを判定する。本体装置2は、仮想容器76内の複数のダイスオブジェクト71に対しても同様の判定を行う。
仮想オブジェクトが移動していると判定した場合(ステップS4:YES)、本体装置2は、仮想オブジェクトの移動に応じた振動波形を示す信号を生成する(ステップS5)。本体装置2は、複数の仮想オブジェクトが移動している場合、移動している仮想オブジェクト毎に振動波形を示す信号を生成する。
具体的には、本体装置2は、ステップS5の処理を所定の時間間隔(5m秒)で実行し、予め記憶された振動波形を示す振動パターンデータを時間経過に応じて順次読み取り、振動パターンデータに基づく振動を順次再生する。より具体的には、本体装置2は、振動パターンデータに基づいて、振動波形を示す信号を生成する。この振動波形を示す信号は、振動の周波数と振幅を含む。この信号が例えば5m秒毎にコントローラに出力されて振動子に入力される。コントローラの振動子は、本体装置2からの信号を受信して、その信号において指定された周波数および振幅で振動する。すなわち、5m秒毎に振動子の振動の周波数および振幅が変化する。これにより、コントローラの振動子は、振動パターンデータによって示される振動波形に合うように振動する。
例えば、第1のゲームが行われている場合、本体装置2は、ステップS5において、仮想容器の底面を転がっている球オブジェクト70毎に、転がりに応じた振動波形を示す信号を生成する。具体的には、本体装置2は、予め記憶された球オブジェクト70の転がりに応じた振動波形を示す振動パターンデータをメモリから読み取り、当該振動パターンデータに基づいて振動波形を示す信号を生成する。また、第2のゲームが行われている場合、本体装置2は、仮想容器の底面を転がっているダイスオブジェクト71毎に、転がりに応じた振動波形を示す信号を生成する。具体的には、本体装置2は、予め記憶されたダイスオブジェクト71の転がりに応じた振動波形を示す振動パターンデータをメモリから読み取り、当該振動パターンデータに基づいて振動波形を示す信号を生成する。
ステップS5を実行した場合、又は、ステップS4でNOと判定した場合、本体装置2は、仮想オブジェクトが衝突したか否かを判定する(ステップS6)。本体装置2は、複数の仮想オブジェクトのそれぞれについてステップS6の判定を行う。例えば、第1のゲームが行われている場合、本体装置2は、仮想容器73内の複数の球オブジェクト70毎に、球オブジェクト70が仮想容器73の側面に衝突したか否かを判定する。本体装置2は、仮想容器74内の複数の球オブジェクト70に対しても同様の判定を行う。また、例えば、第2のゲームが行われている場合、本体装置2は、仮想容器75内の複数のダイスオブジェクト71毎に、ダイスオブジェクト71が仮想容器75の側面に衝突したか否かを判定する。本体装置2は、仮想容器76内の複数のダイスオブジェクト71に対しても同様の判定を行う。
仮想オブジェクトが衝突したと判定した場合(ステップS6:YES)、本体装置2は、仮想オブジェクトの衝突に応じた振動波形を示す信号を生成する(ステップS7)。本体装置2は、複数の仮想オブジェクトが仮想容器の側面に衝突した場合、仮想容器の側面に衝突した仮想オブジェクト毎に、振動波形を示す信号(周波数および振幅)を生成する。例えば、第1のゲームが行われている場合、本体装置2は、仮想容器の側面に衝突した球オブジェクト70毎に、衝突に応じた振動波形を示す信号を生成する。具体的には、ステップS5と同様に、本体装置2は、予め記憶された球オブジェクト70の衝突に応じた振動波形を示す振動パターンデータをメモリから読み取り、当該振動パターンデータに基づいて振動波形を示す信号を生成する。また、第2のゲームが行われている場合、本体装置2は、仮想容器の側面に衝突したダイスオブジェクト71毎に、衝突に応じた振動波形を示す信号を生成する。具体的には、本体装置2は、予め記憶されたダイスオブジェクト71の衝突に応じた振動波形を示す振動パターンデータをメモリから読み取り、当該振動パターンデータに基づいて振動波形を示す信号を生成する。
ステップS7を実行した場合、又は、ステップS6でNOと判定した場合、本体装置2は、波形出力処理を行う(ステップS8)。以下、波形出力処理の詳細について説明する。
図25は、図24のステップS8の波形出力処理の詳細を示すフローチャートである。
本体装置2は、2つ以上の振動波形を示す信号を同時に出力するか否かを判定する(ステップS11)。上述のように、例えば第1のゲームでは仮想容器内に球オブジェクト70が複数存在する場合があり、複数の球オブジェクト70が同時に転がることによって、ステップS5において複数の振動波形に応じた信号が生成される場合がある。また、第2のゲームでは仮想容器内に2つのダイスオブジェクト71が存在するため、ステップS5において複数の振動波形に応じた信号が生成される場合がある。また、ステップS5において1又は複数の振動波形に応じた信号が生成されるとともに、ステップS7においても1又は複数の振動波形に応じた信号が生成される場合もある。このように、2以上の振動波形を示す信号が同時に出力される場合がある。また、仮に1つの仮想オブジェクトしか存在しない場合であっても、例えば、今回の処理ループより前に、ステップS4においてYESと判定されたことによって、ステップS5において振動パターンデータに基づく振動の再生が開始され、その振動の再生が終了していないときに、今回の処理ループにおいてステップS6においてYESと判定された場合、ステップS7において別の振動パターンデータに基づく振動の再生が開始される。このような場合でも、2つ以上の振動波形を示す信号が同時に出力される。
2つ以上の振動波形を示す信号を同時に出力すると判定した場合(ステップS11:YES)、本体装置2は、複数の振動波形を合成する(ステップS12)。具体的には、本体装置2は、今回の処理ループにおいて生成した各振動波形を示す信号(周波数および振幅)について、次のような計算を行う。まず、本体装置2は、各振動波形の振幅の合計を、合成波形の振幅Waとして算出する。次に、本体装置2は、各振動波形の周波数と振幅をかけた値を合計する。そして、その合計を合成波形の振幅Waで除した値を、合成波形の周波数Wfとして算出する。
例えば、波形1(周波数=Wf1、振幅=Wa1)と波形2(周波数=Wf2、振幅Wa2)とを合成する場合、本体装置2は以下の計算を行う。
合成波形の振幅Wa=Wa1+Wa2
合成波形の周波数Wf=(Wf1・Wa1+Wf2・Wa2)/Wa
このように、本体装置2は、複数の振動波形の振幅の和を合成波形の振幅Waとして算出する。また、本体装置2は、複数の振動波形の周波数について重みを付けた平均を算出することにより、合成波形の周波数Wfを算出する。
次に、本体装置2は、ステップS12において算出した合成波形を示す信号をコントローラに出力する(ステップS13)。具体的には、本体装置2は、合成波形の周波数Wfを図23に示す周波数データD401とし、合成波形の振幅Waを振幅データD402として、これらのデータをコントローラに出力する。
一方、2つ以上の振動波形を示す信号を同時に出力しないと判定した場合(ステップS11:NO)、本体装置2は、1つの振動波形を示す信号を出力するか否かを判定する(ステップS14)。1つの振動波形を示す信号を出力すると判定した場合(ステップS14:YES)、本体装置2は、1つの振動波形を示す信号をコントローラに出力する(ステップS15)。具体的には、本体装置2は、ステップS5又はステップS7によって生成された1つの振動波形の周波数を周波数データD401とし、当該振動波形の振幅を振幅データD402として、コントローラに出力する。
ステップS13の処理を行った場合、ステップS15の処理を行った場合、又は、ステップS14でNOと判定した場合、本体装置2は図26に示す処理を終了する。
(第3のゲームの処理の詳細)
次に、第3のゲームが行われる場合の本体装置2において行われる処理の詳細について説明する。図26は、第3のゲームが行われる場合の本体装置2において行われる処理の詳細を示すフローチャートである。図26において、図24と同様の処理については同様のステップ番号を付して説明を省略する。なお、本体装置2は、図26に示す処理を所定の時間間隔(例えば、5m秒毎)で実行する。
図26に示されるように、本体装置2は、ステップS4でYESと判定した場合、代表点72の移動に応じた振動波形を生成する(ステップS21)。ここでは、本体装置2は、図20に示す振動パターンP1〜P3の中から何れかの振動パターンデータをランダムに選択し、選択した振動パターンデータに基づいて、代表点72の移動に応じた振動波形を示す信号(周波数および振幅)を生成する。このとき、振幅が代表点72の速度に応じて調整される。具体的には、本体装置2は、選択した振動パターンデータに基づく振動波形の振幅に、代表点72の速度に応じた値をかける。
また、本体装置2は、ステップS6でYESと判定した場合、代表点72の衝突に応じた振動波形を生成する(ステップS22)。ここでは、本体装置2は、代表点72の衝突時の速度に応じて、図20に示す振動パターンP4〜P12の中から何れかの振動パターンデータを選択する。具体的には、本体装置2は、代表点72の衝突時の速度が「大」か、「中」か、「小」かを判定する。そして、本体装置2は、代表点72の速度に応じて、3つの振動パターンデータの中から何れか1つの振動パターンデータをランダムに選択し、選択した振動パターンデータに基づいて、代表点72の衝突に応じた振動波形を示す信号(周波数および振幅)を生成する。このとき、振幅が代表点72の速度に応じて調整される。具体的には、本体装置2は、選択した振動パターンデータに基づく振動波形の振幅に、衝突時の代表点72の速度に応じた値をかける。
ステップS22の処理を行った場合、又は、ステップS6においてNOと判定した場合、本体装置2は、コントローラの加速度センサが検出した加速度値が所定の閾値以上か否かを判定する(ステップS23)。具体的には、本体装置は、各コントローラから出力された3軸方向の加速度値によって示される加速度ベクトルの大きさを算出し、加速度ベクトルの大きさが所定の閾値以上か否かを判定する。
加速度値が所定の閾値以上と判定した場合(ステップS23:YES)、本体装置2は、加速度値に応じた振動波形を生成する(ステップS24)。ここでは、本体装置2は、加速度値に応じて、図21に示す振動パターンP13〜P21の中から何れかの振動パターンデータを選択する。具体的には、本体装置2は、加速度値が「大」か、「中」か、「小」かを判定する。そして、本体装置2は、加速度値に応じて、3つの振動パターンデータの中から何れか1つの振動パターンデータをランダムに選択し、選択した振動パターンデータに基づいて、加速度値に応じた振動波形を示す信号(周波数および振幅)を生成する。このとき、振幅が加速度値に応じて調整される。具体的には、本体装置2は、選択した振動パターンデータに基づく振動波形の振幅に、加速度値に応じた値をかける。
以上のように、図24又は図26の処理が所定の時間間隔で繰り返し行われることにより、複数の振動波形を合成した合成波形または1つの振動波形に合うように、各コントローラの振動子を振動させることができる。
なお、上記処理は単なる例示であり、例えば各ステップの順番を入れ替えたり、他のステップが加えられたり、上記ステップの一部が省略されたりしてもよい。
また、上述した実施形態に以下に示す種々の変形が行われてもよい。
例えば、上記実施形態では、合成波の周波数については各波形の周波数に重みを付けて平均をとり、合成波の振幅については各波形の振幅を足し合わせることにより複数の波形を合成したが、複数の波形を重ね合わせることにより複数の波形を合成してもよい。すなわち、波の重ね合わせの原理にしたがって複数の波形が合成されてもよい。この場合、複数の波形は互いに干渉(強めあったり、打ち消しあったり)する。
また、上記実施形態では、振動波形を示す信号として周波数および振幅が本体装置2から各コントローラに出力されるものとした。振動波形を示す信号は、例えば、高周波帯の信号(周波数および振幅)と、低周波帯の信号(周波数および振幅)とに分けて出力されてもよい。例えば、各コントローラの振動子107,117は、第1の方向に第1の共振周波数(例えば、320Hz)で振動し、第2の方向に第2の共振周波数(例えば、160Hz)で振動するリニア振動モータ(リニア振動アクチュエータとも言う)であってもよい。このような振動子は、第1の共振周波数を含む第1の周波数帯(高周波帯)で振動することが可能であるとともに、第2の共振周波数を含む第2の周波数帯(低周波帯)で振動することが可能である。振動子は、第1の共振周波数で第1の方向に大きく振動しやすく、かつ、第2の共振周波数で第2の方向に大きく振動しやすい。また、振動子は、高周波帯の振動と低周波帯の振動とを合成した合成波により第1の方向と第2の方向の間の方向に振動することができ、低周波帯から高周波帯までの周波数にて振動するこができる。このような振動子がコントローラに設けられる場合において、本体装置2は、高周波帯の信号と、低周波帯の信号とコントローラに出力してもよい。例えば、本体装置2は、高周波帯の信号と低周波帯の信号とを含む1つのパケットをコントローラに送信してもよいし、これらの信号を別のパケットに含めてコントローラに送信してもよい。振動子は、受信した高周波帯の信号と、低周波帯の信号とに基づいて、振動する。また、コントローラは、2つのリニア振動モータ(第1の共振周波数を有する第1の振動モータ、および、第2の共振周波数を有する第2の振動モータ)を備え、本体装置2は、高周波帯の信号と、低周波帯の信号とを当該コントローラに出力してもよい。この場合、コントローラは、受信した高周波帯の信号に基づいて第1の振動モータを振動させ、受信した低周波帯の信号に基づいて第2の振動モータを振動させる。
また、上記実施形態では、所定の時間間隔(例えば5m秒毎)で振動波形を示す信号として周波数および振幅が本体装置2から各コントローラに出力されるものとしたが、他の実施形態では、所定の時間間隔で周波数の差分および振幅の差分がコントローラに出力されてもよい。すなわち、前回の処理ループにおいて出力された周波数の差分が今回の処理ループにおいてコントローラに出力され、前回の処理ループにおいて出力された振幅の差分が今回の処理ループにおいてコントローラに出力されてもよい。
また、上記実施形態では、所定の時間間隔(例えば5m秒毎)で振動波形を示す信号として周波数および振幅が本体装置2から各コントローラに出力されるものとしたが、他の実施形態では、振動波形を示す信号として振動波形自体がコントローラに出力されてもよい。例えば、本体装置2に振動波形を示す振動パターンデータが記憶され、この振動パターンデータ自体が本体装置2からコントローラに出力されてもよい。また、他の実施形態では、コントローラに複数の振動パターンデータが記憶され、振動波形を示す信号として、どの振動パターンデータに基づく振動を行うかの情報が本体装置2からコントローラに出力されてもよい。各コントローラは、この信号を本体装置2から受信すると、信号に応じた振動パターンデータを選択し、当該振動パターンデータに基づいて振動子を振動させてもよい。
すなわち、本実施形態では、振動波形を示す信号は、上記周波数および振動であってもよいし、周波数の差分および振動の差分であってもよいし、振動波形自体(すなわち、振動波形を示す振動パターンデータ)であってもよい。また、振動波形を示す信号は、振動パターンデータ(言い換えると振動パターンを記憶したファイル)を指定する信号であってもよい。
また、上述したゲームは単なる一例であり、他のゲームが行われてもよい。例えば、球形の球オブジェクトや立方体のダイスオブジェクトに限らず、他の任意の仮想オブジェクトを用いたゲームが行われてもよい。仮想オブジェクトの形状は球形、立方体等に限らず、任意の形状でもよい。また、仮想オブジェクトが仮想容器に内包されて、仮想容器内で運動する場合に限らず、仮想オブジェクトが仮想空間を任意に運動してもよい。
また、上記では2人または1人で行うゲームを想定したが、3人以上で上記ゲームまたは他の任意のゲームが行われてもよい。
また、上記では左右のコントローラ3,4を本体装置2から外してゲームを行うものとしたが、他の実施形態では、左右のコントローラ3,4を本体装置2に装着した状態で上記ゲーム(又は他のゲーム)が行われてもよい。
また、上記では慣性センサからのデータに基づいてコントローラの姿勢を検出するものとしたが、他の方法によりコントローラの姿勢を検出してもよい。例えば、カメラを用いてコントローラを撮像し、撮像画像に基づいてコントローラの姿勢を検出してもよい。
また、上記ではコントローラの姿勢を変化させることにより仮想オブジェクトを運動させるものとした。他の実施形態では、例えば、コントローラのボタンや方向入力部に対する操作に基づいて仮想オブジェクトを運動させてもよい。また、タッチパネルに対する操作に基づいて仮想オブジェクトを運動させてもよい。すなわち、操作部に対する操作(操作部自体を傾けたり振ったりする操作、ボタンや方向入力部、タッチパネル等に対する操作)に基づいて、仮想オブジェクトを運動させてもよい。
また、上記実施形態では、操作部に対する操作(操作部自体を傾けたり振ったりする操作、ボタンや方向入力部、タッチパネル等に対する操作)に応じて仮想容器の姿勢を変化させることで仮想オブジェクトを運動させた。他の実施形態では、操作部に対する操作に応じて、仮想オブジェクト自体を直接運動させてもよい。例えば、コントローラに対する操作に応じて、仮想オブジェクトに仮想的な力が加わって仮想オブジェクトが運動するようにしてもよい。
また、上記実施形態では、ゲームが行われ、ゲームにおいて仮想オブジェクトの運動が計算され、仮想オブジェクトの運動に応じて振動を発生させた。他の実施形態では、ゲームに限らず、任意の仮想オブジェクトの運動に応じて振動を発生させてもよい。
上記ハードウェア構成は単なる一例であり、例えば、コントローラと本体装置2とが一体となった装置であってもよい。
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。
1 情報処理システム
2 本体装置
3 左コントローラ
4 右コントローラ
70、71 仮想オブジェクト
72 代表点
73、74、75、76、77 仮想容器
81 CPU
104、114 加速度センサ
105、115 角速度センサ
107、117 振動子
120 姿勢・動き算出部
121 運動演算部
122 波形生成部
123 波形出力部

Claims (28)

  1. 操作部と、
    入力された振動波形を示す信号に応じた振動をする振動部と、
    第1の仮想オブジェクト及び第2の仮想オブジェクトを含む複数の仮想オブジェクトの仮想的な運動をそれぞれ逐次演算し、前記操作部に対する操作に応じて当該複数の仮想オブジェクトのそれぞれの運動に変化を加える運動演算部と、
    前記運動演算部による演算に基づいて、前記第1の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第1の仮想オブジェクトの運動状態に応じた第1の振動波形を示す信号を生成する第1波形生成部と、
    前記運動演算部による演算に基づいて、前記第2の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第2の仮想オブジェクトの運動状態に応じた第2の振動波形を示す信号を生成する第2波形生成部と、
    前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する波形出力部と、を備える、情報処理システム。
  2. 前記操作部の姿勢及び/又は動きを算出する姿勢・動き算出部をさらに備え、
    前記運動演算部は、前記操作部の姿勢及び/又は動きに基づいて、前記複数の仮想オブジェクトのそれぞれの運動に変化を加える、請求項1に記載の情報処理システム。
  3. 前記操作部は、慣性センサを含み、
    前記姿勢・動き算出部は、前記慣性センサからのデータに基づいて、前記操作部の姿勢及び/又は動きを算出する、請求項2に記載の情報処理システム。
  4. 前記第1波形生成部は、前記第1の仮想オブジェクトが前記他のオブジェクトと接触している状態で移動しているときの当該第1の仮想オブジェクトの移動に応じた第1の振動波形を示す信号を生成する、請求項1から3のいずれかに記載の情報処理システム。
  5. 前記第1波形生成部は、前記第1の仮想オブジェクトの移動速度が大きいほど、振幅の大きな振動波形を示す信号を生成する、請求項4に記載の情報処理システム。
  6. 前記第1波形生成部は、前記第1の仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該衝突に応じた振動波形を示す信号を生成する、請求項1から5のいずれかに記載の情報処理システム。
  7. 前記第2波形生成部は、前記第2の仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該第2の仮想オブジェクトの衝突に応じた振動波形を示す信号を生成し、
    前記波形出力部は、前記第1の仮想オブジェクトの移動に応じた振動波形と、前記第2の仮想オブジェクトの衝突に応じた振動波形とを合成した合成波形を示す信号を出力する、請求項4又は5に記載の情報処理システム。
  8. 前記複数の仮想オブジェクトは、仮想容器オブジェクトと、当該仮想容器オブジェクトに内包される複数の内容物オブジェクトとを含み、
    前記運動演算部は、前記仮想容器オブジェクトの姿勢及び/又は動きに変化を加えることで前記複数の内容物オブジェクトのそれぞれの運動に変化を加える、請求項1から7のいずれかに記載の情報処理システム。
  9. 前記複数の内容物オブジェクトは第1の球体オブジェクトおよび第2の球体オブジェクトを含み、
    前記第1波形生成部は、前記第1の球体オブジェクトが前記仮想容器オブジェクト内を転がる場合に当該第1の球体オブジェクトの転がりに応じた第1の振動波形を示す信号を生成し、前記第1の球体オブジェクトが衝突した場合に、当該第1の球体オブジェクトの衝突に応じた第1の振動波形を示す信号を生成し、
    前記第2波形生成部は、前記第2の球体オブジェクトが前記仮想容器オブジェクト内を転がる場合に当該第2の球体オブジェクトの転がりに応じた第2の振動波形を示す信号を生成し、前記第2の球体オブジェクトが衝突した場合に、当該第2の球体オブジェクトの衝突に応じた第2の振動波形を示す信号を生成する、請求項8に記載の情報処理システム。
  10. 前記複数の内容物オブジェクトは第1の直方体オブジェクトおよび第2の直方体オブジェクトを含み、
    前記第1波形生成部は、前記第1の直方体オブジェクトが前記仮想容器オブジェクトに衝突した場合に、当該衝突に応じた第1の振動波形を示す信号を生成し、
    前記第2波形生成部は、前記第2の直方体オブジェクトが前記仮想容器オブジェクトに衝突した場合に、当該衝突に応じた第2の振動波形を示す信号を生成する、請求項8に記載の情報処理システム。
  11. 前記波形出力部は、所定数を上限に複数の振動波形を合成し、当該合成した合成波形を示す信号を前記振動部に出力する、請求項1から10のいずれかに記載の情報処理システム。
  12. 前記情報処理システムは、情報処理装置と操作装置を含み、
    前記操作部および前記振動部は、前記操作装置に設けられ、
    前記運動演算部、前記第1波形生成部、前記第2波形生成部、および前記波形出力部は、前記情報処理装置に設けられ、
    前記情報処理装置は、前記操作装置との通信により、前記操作部からの入力を受信し、前記波形出力部からの出力を前記操作装置に送信する、請求項1から11のいずれかに記載の情報処理システム。
  13. 前記波形出力部から出力される信号は、単位時間毎の波形の振幅または振幅の差分と、周波数または周波数の差分とを含む、請求項12に記載の情報処理システム。
  14. 前記第1波形生成部は、前記信号として振動の振幅及び/又は周波数を示すデータを生成し、前記第1の仮想オブジェクトの運動状態に応じた第1の振動波形を示す信号を生成しているときに前記第1の仮想オブジェクトの運動状態が変化した場合、前記振幅及び/又は周波数を変化させる、請求項1から13のいずれかに記載の情報処理システム。
  15. 前記運動演算部は、前記第1の仮想オブジェクトの運動を示す数値を算出し、
    前記第1の振動波形を示す振動パターンデータが複数あり、
    前記第1波形生成部は、前記数値に応じて複数の振動パターンデータの中からいずれかを選択し、選択した振動パターンデータに基づいて、前記第1の振動波形を示す信号を生成する、請求項1から14のいずれかに記載の情報処理システム。
  16. 前記第1波形生成部は、前記信号として振動の振幅及び/又は周波数を示すデータを生成し、前記数値に応じて、前記振幅及び/又は周波数を変化させる、請求項15に記載の情報処理システム。
  17. 前記第2の振動波形は、前記第1の振動波形とは異なる波形である、請求項1から16の何れかに記載の情報処理システム。
  18. 入力された振動波形を示す信号に応じた振動をする振動部を振動させる情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータに、
    第1の仮想オブジェクト及び第2の仮想オブジェクトを含む複数の仮想オブジェクトの仮想的な運動をそれぞれ逐次演算し、操作部に対する操作に応じて当該複数の仮想オブジェクトのそれぞれの運動に変化を加える運動演算ステップと、
    前記運動演算ステップにおける演算に基づいて、前記第1の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第1の仮想オブジェクトの運動状態に応じた第1の振動波形を示す信号を生成する第1波形生成ステップと、
    前記運動演算ステップにおける演算に基づいて、前記第2の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第2の仮想オブジェクトの運動状態に応じた第2の振動波形を示す信号を生成する第2波形生成ステップと、
    前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する波形出力ステップと、を実行させる、情報処理プログラム。
  19. 前記コンピュータに、前記操作部の姿勢及び/又は動きを算出する姿勢・動き算出ステップをさらに実行させ、
    前記運動演算ステップは、前記操作部の姿勢及び/又は動きに基づいて、前記複数の仮想オブジェクトのそれぞれの運動に変化を加える、請求項18に記載の情報処理プログラム。
  20. 前記第1波形生成ステップは、前記第1の仮想オブジェクトが前記他のオブジェクトと接触している状態で移動しているときの当該第1の仮想オブジェクトの移動に応じた振動波形を示す信号を生成する、請求項18又は19に記載の情報処理プログラム。
  21. 前記第1波形生成ステップは、前記第1の仮想オブジェクトの移動速度が大きいほど、振幅の大きな振動波形を示す信号を生成する、請求項20に記載の情報処理プログラム。
  22. 前記第1波形生成ステップは、前記第1の仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該衝突に応じた振動波形を示す信号を生成する、請求項1から20のいずれかに記載の情報処理プログラム。
  23. 前記第2波形生成ステップは、前記第2の仮想オブジェクトが前記他のオブジェクトと衝突した場合、当該第2の仮想オブジェクトの衝突に応じた振動波形を示す信号を生成し、
    前記波形出力ステップは、前記第1の仮想オブジェクトの移動に応じた振動波形と、前記第2の仮想オブジェクトの衝突に応じた振動波形とを合成した合成波形を示す信号を出力する、請求項20又は21に記載の情報処理プログラム。
  24. 前記複数の仮想オブジェクトは、仮想容器オブジェクトと、当該仮想容器オブジェクトに内包される複数の内容物オブジェクトとを含み、
    前記運動演算ステップは、前記仮想容器オブジェクトの姿勢及び/又は動きに変化を加えることで前記複数の内容物オブジェクトのそれぞれの運動に変化を加える、請求項18から23のいずれかに記載の情報処理プログラム。
  25. 入力された振動波形を示す信号に応じた振動をする振動部を振動させる情報処理装置であって、
    第1の仮想オブジェクト及び第2の仮想オブジェクトを含む複数の仮想オブジェクトの仮想的な運動をそれぞれ逐次演算し、操作部に対する操作に応じて当該複数の仮想オブジェクトのそれぞれの運動に変化を加える運動演算部と、
    前記運動演算部による演算に基づいて、前記第1の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第1の仮想オブジェクトの運動状態に応じた第1の振動波形を示す信号を生成する第1波形生成部と、
    前記運動演算部による演算に基づいて、前記第2の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第2の仮想オブジェクトの運動状態に応じた第2の振動波形を示す信号を生成する第2波形生成部と、
    前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する波形出力部と、を備える、情報処理装置。
  26. 前記操作部の姿勢及び/又は動きを算出する姿勢・動き算出部をさらに備え、
    前記運動演算部は、前記操作部の姿勢及び/又は動きに基づいて、前記複数の仮想オブジェクトのそれぞれの運動に変化を加える、請求項25に記載の情報処理装置。
  27. 前記第1波形生成部は、前記第1の仮想オブジェクトが前記他のオブジェクトと接触している状態で移動しているときの当該第1の仮想オブジェクトの移動に応じた第1の振動波形を示す信号を生成する、請求項25又は26に記載の情報処理装置。
  28. 入力された振動波形を示す信号に応じた振動をする振動部を振動させる情報処理方法であって、
    第1の仮想オブジェクト及び第2の仮想オブジェクトを含む複数の仮想オブジェクトの仮想的な運動をそれぞれ逐次演算し、操作部に対する操作に応じて当該複数の仮想オブジェクトのそれぞれの運動に変化を加える運動演算ステップと、
    前記運動演算ステップにおける演算に基づいて、前記第1の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第1の仮想オブジェクトの運動状態に応じた第1の振動波形を示す信号を生成する第1波形生成ステップと、
    前記運動演算ステップにおける演算に基づいて、前記第2の仮想オブジェクトが他のオブジェクトに接触しているとき又は接触するときの前記第2の仮想オブジェクトの運動状態に応じた第2の振動波形を示す信号を生成する第2波形生成ステップと、
    前記第1の振動波形と前記第2の振動波形とを合成した合成波形を示す信号を前記振動部に出力する波形出力ステップと、を含む、情報処理方法。
JP2016255274A 2016-12-28 2016-12-28 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法 Active JP6521460B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016255274A JP6521460B2 (ja) 2016-12-28 2016-12-28 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
US15/726,688 US10441883B2 (en) 2016-12-28 2017-10-06 Information processing system, non-transitory storage medium having information processing program stored therein, information processing apparatus, and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016255274A JP6521460B2 (ja) 2016-12-28 2016-12-28 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法

Publications (2)

Publication Number Publication Date
JP2018106598A JP2018106598A (ja) 2018-07-05
JP6521460B2 true JP6521460B2 (ja) 2019-05-29

Family

ID=62625642

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016255274A Active JP6521460B2 (ja) 2016-12-28 2016-12-28 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法

Country Status (2)

Country Link
US (1) US10441883B2 (ja)
JP (1) JP6521460B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD819696S1 (en) * 2016-08-30 2018-06-05 Nintendo Co., Ltd. Computer
JP6868397B2 (ja) * 2017-01-12 2021-05-12 任天堂株式会社 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
JP7042061B2 (ja) * 2017-11-10 2022-03-25 株式会社バンダイナムコエンターテインメント 操作入力システム、操作入力装置及びゲームシステム
JP7319786B2 (ja) * 2019-02-19 2023-08-02 株式会社コーエーテクモゲームス ゲームプログラム、記録媒体、ゲーム処理方法
WO2023153232A1 (ja) * 2022-02-08 2023-08-17 ソニーグループ株式会社 情報処理装置、情報処理方法およびプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002045568A (ja) * 2000-08-04 2002-02-12 Konami Co Ltd ゲーム用音源合成処理方法、装置、ゲーム用音源合成処理プログラムを記録した可読記憶媒体及びビデオゲーム機
JP4372571B2 (ja) * 2004-02-06 2009-11-25 任天堂株式会社 ゲーム装置およびゲームプログラム
WO2007030603A2 (en) * 2005-09-08 2007-03-15 Wms Gaming Inc. Gaming machine having display with sensory feedback
JP5004518B2 (ja) 2006-06-22 2012-08-22 任天堂株式会社 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
US8157650B2 (en) * 2006-09-13 2012-04-17 Immersion Corporation Systems and methods for casino gaming haptics
JP5360499B2 (ja) * 2010-02-01 2013-12-04 国立大学法人東北大学 力覚提示方法および力覚提示装置
KR101328054B1 (ko) * 2011-08-09 2013-11-08 엘지전자 주식회사 실감 진동을 발생시키는 영상표시장치 및 실감 진동 구현방법
KR102178845B1 (ko) * 2013-01-29 2020-11-13 삼성전자주식회사 햅틱을 제어하는 휴대 단말 및 방법
US20160048209A1 (en) * 2013-05-21 2016-02-18 Samsung Electronics Co., Ltd. Method and apparatus for controlling vibration
CN106133636B (zh) * 2014-03-21 2020-01-21 意美森公司 用于触觉使能的弯曲装置的***和方法
CN106102848B (zh) 2014-03-26 2020-03-13 索尼公司 感觉导入装置、感觉导入***和感觉导入方法
JP6445921B2 (ja) * 2015-04-21 2018-12-26 任天堂株式会社 振動信号生成プログラム、振動信号生成システム、振動信号生成装置、振動信号生成方法、およびデータ出力プログラム
US10748448B2 (en) * 2017-04-17 2020-08-18 Facebook, Inc. Haptic communication using interference of haptic outputs on skin

Also Published As

Publication number Publication date
US20180178119A1 (en) 2018-06-28
US10441883B2 (en) 2019-10-15
JP2018106598A (ja) 2018-07-05

Similar Documents

Publication Publication Date Title
JP6588421B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
JP6521460B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
JP6613267B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
US10350491B2 (en) Techniques for variable vibration waveform generation based on number of controllers
JP6975683B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
US10758819B2 (en) Game system, non-transitory storage medium having stored therein game program, information processing apparatus, and game control method
US10661162B2 (en) Game system, non-transitory storage medium having stored therein game program, game apparatus, and game method
JP6776132B2 (ja) ゲームシステム、ゲームプログラム、ゲーム装置およびゲーム方法
JP6653293B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
JP6670768B2 (ja) ゲームシステム、ゲームプログラム、情報処理装置、および、情報処理方法
US11045728B2 (en) Game system, non-transitory storage medium having stored therein game program, information processing apparatus, and game control method
JP6893417B2 (ja) ゲームシステム、ゲームプログラム、情報処理装置、および、情報処理方法
US10661163B2 (en) Video game with haptic signal that is disabled based on losing contact with a surface
JP6973967B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP7170680B2 (ja) ゲームシステム、ゲームプログラム、情報処理装置、および、ゲーム処理方法
JP6842368B2 (ja) 情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190409

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190419

R150 Certificate of patent or registration of utility model

Ref document number: 6521460

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250