本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.ゲームシステムの構成>
まず、本実施の形態に従うゲームシステム1の構成について説明する。
(a1:システム全体構成)
図1は、本実施の形態に従うゲームシステム1の外観構成の一例を示す模式図である。図1を参照して、ゲームシステム1は、1または複数のゲームコントローラ100(以下、単に「コントローラ100」とも記す。)と、1または複数のコントローラ100と通信可能な本体装置200とを含む。本体装置200には、テレビジョン装置などの表示装置204が接続されており、表示装置204からは、本体装置200から出力された映像信号および/または音声信号に従って、映像および/または音声が出力される。
図1には、コントローラ100と本体装置200との間で、無線通信により互いに情報を遣り取りする構成例を示すが、有線通信で互いに情報を遣り取りするようにしてもよい。
本実施の形態に従うゲームシステム1を構成するコントローラ100は、その一端に撮像部120を有している。コントローラ100の撮像部120には、アタッチメント300を装着することができる。アタッチメント300の詳細については後述する。
以下の説明においては、図1に示すような、本体装置200と通信するコントローラ100をゲームコントローラの典型例として説明するが、これに限らず、撮像部120に相当する機能を有する任意の装置をゲームコントローラとして用いることができる。例えば、ディスプレイおよび操作部を含む携帯型ゲーム装置自体をゲームコントローラとして用いてもよいし、携帯電話、スマートフォン、タブレットなどの汎用的な携帯型端末をゲームコントローラとして用いてもよい。
(a2:ゲームコントローラ)
図2は、図1に示すゲームコントローラ100のハードウェア構成の一例を示す模式図である。図2を参照して、ゲームコントローラ100は、制御部110と、操作部102と、インジケータ104と、音声出力部106と、無線通信部108と、加速度センサ130と、ジャイロセンサ132と、撮像部120とを含む。
制御部110は、コントローラ100における処理全体を制御する主体であり、その主要なコンポーネントとして、CPU(Central Processing Unit)112と、メインメモリ114と、制御プログラム118を格納したフラッシュメモリ116とを含む。プロセッサの一例であるCPU112は、フラッシュメモリ116に格納された制御プログラム118をメインメモリ114に読み出して実行することで、後述するような各種制御を実現する。
制御部110は、上述したコンポーネントを含むシステムLSI(Large Scale Integration)として実装してもよい。
操作部102は、ユーザ操作を受付け、そのユーザ操作の内容を示す情報を制御部110へ出力する。典型的には、操作部102は、押ボタン、操作レバー、タッチパネル、マウスなどを含む。あるいは、操作部102としては、コントローラ100とは別体の、有線または無線で接続されるコントローラを含むようにしてもよい。
インジケータ104は、コントローラ100の表面に露出して配置され、制御部110からの指令に従って、ユーザに対して視覚的な態様で通知を行なう。典型的には、インジケータ104は、LED(Light Emitting Diode)などを含む。
音声出力部106は、コントローラ100の表面に部分的に露出して配置され、制御部110からの指令に従って、ユーザに対して聴覚的な態様で通知を行なう。典型的には、音声出力部106は、1または複数のスピーカなどを含む。
無線通信部108は、制御部110からの指令に従って他の装置との間で無線信号を遣り取りするとともに、他の装置から受信したデータを制御部110へ出力する。無線通信部108は、図示しない、周波発生回路、変調回路、復調回路、符号化回路などを含む。無線通信部108は、IEEE(Institute of Electrical and Electronic Engineers)802.15規格に従うBluetooth(登録商標)や、IEEE802.11規格に従う無線LAN(Local Area Network)などに従った通信方式を採用してもよい。
加速度センサ130は、コントローラ100に生じる加速度を検出し、その検出結果を制御部110へ出力する。ジャイロセンサ132は、コントローラ100の傾きなどを検出し、その検出結果を制御部110へ出力する。加速度センサ130およびジャイロセンサ132の少なくとも一方もしくは両方を用いて、コントローラ100の姿勢および動きの少なくとも一方を検出することができる。
撮像部120は、コントローラ100の周囲に存在する光を受けて画像データを生成する部位であり、カメラ122および発光部124からなる。
カメラ122は、CCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサ、フォトダイオードアレイといった、任意の撮像デバイスを含んで構成される。カメラ122の受光感度は被写体が発する光の波長に応じて適宜設定すればよいが、本実施の形態においては、一例として、赤外領域に受光感度を有する撮像デバイスが用いられる。この場合、カメラ122は、入射した赤外線の強度分布に対応する画像データを出力することができる。すなわち、カメラ122としては、赤外線カメラを採用してもよい。
発光部124は、カメラ122により被写体を撮影するために、被写体に光を照射するための光源である。一例として、発光部124は、LED(light emitting diode)やレーザダイオードといった任意の発光デバイスを用いることができる。上述したように、カメラ122が赤外領域での画像を取得する場合には、発光部124は、赤外線を照射するように構成されることが好ましい。すなわち、発光部124は、被写体に光に対して赤外光(IR(Infrared)光)を照射することができる。発光部124は、従来のカメラに装着されているフラッシュのような機能を兼用するようにしてもよい。
(a3:本体装置)
図3は、図1に示す本体装置200のハードウェア構成の一例を示す模式図である。図3を参照して、本体装置200はコンピュータの一種であり、主要なコンポーネントとして、制御部210と、無線通信部220と、ネットワーク通信モジュール230と、フラッシュメモリ232と、外部メインメモリ234と、映像音声出力ドライバ236と、ディスクドライブ238とを含む。
制御部210は、本体装置200における処理全体を制御する主体であり、その主要なコンポーネントとして、CPU212と、メインメモリ214と、GPU(Graphical Processing Unit)216と、VRAM(Video Random Access Memory)218とを含む。CPU212は、基本システムプログラムやアプリケーションなどを実行する。メインメモリ214は、CPU212でのプログラム実行に必要な一時データを保持するワーキングメモリとして機能する。GPU216は、主として表示に係る処理を実行する。VRAM218は、GPU216での処理によって生成された画像を表示するためのワーキングメモリとして機能する。
制御部210は、上述したコンポーネントを含むシステムLSI(Large Scale Integration)として実装してもよい。
無線通信部220は、制御部210からの指令に従って他の装置との間で無線信号を遣り取りするとともに、他の装置から受信したデータを制御部210へ出力する。典型的には、無線通信部220は、コントローラ100との間で情報を遣り取りする。無線通信部220のより具体的な構成については、図2に示すコントローラ100の無線通信部108と同様である。
ネットワーク通信モジュール230は、アクセスポイントなどの装置と無線通信するための各種回路を含む。ネットワーク通信モジュール230は、例えば、IEEE802.11規格に従う無線LAN(Local Area Network)、赤外線通信、LTE(Long Term Evolution)などに従うモバイル通信、などを用いて実装されてもよい。
無線通信部220およびネットワーク通信モジュール230については、いずれも無線通信するための回路を含むため、これらを同一のチップ内に実装するようにしてもよい。
フラッシュメモリ232は、制御部210からアクセス可能になっており、基本システムプログラムやアプリケーションなどを不揮発的に保持する。例えば、フラッシュメモリ232は、各種のアプリケーション233を格納していてもよい。アプリケーション233は、ディスクドライブ238によって光学記録媒体208から読み出されて、インストールされる。
外部メインメモリ234は、制御部210内のメインメモリ214と連携してワーキングメモリとして機能してもよい。
映像音声出力ドライバ236は、制御部210から出力される映像信号および音声信号を表示装置204(図1参照)へ出力する。
<B.アタッチメントの概要>
次に、本実施の形態に従うゲームシステム1において用いることのできるアタッチメント300の概要について説明する。アタッチメント300は、様々なゲーム操作が可能に構成された部材であり、基本的には、筐体と、筐体に設けられた操作部とからなる。操作部は、ユーザ操作に応じて位置、速度、加速度、向き、角度、姿勢などを変化させる。
図1に示すように、アタッチメント300にはコントローラ100が装着され、コントローラ100の撮像部120(カメラ122)の撮影により取得された画像(以下、「カメラ画像」とも称す。)に基づいて、操作部に生じた変化が検出され、その検出された変化に基づいて操作データが生成される。操作部は、筐体内部に配置され、当該操作部に対するユーザ操作に応じて、外形上の変化を生じる可動部を有しており、この可動部を撮影することで、その外径上の変化を検出し、その検出した変化に基づいてユーザ操作の内容を検出する。外径上の変化としては、例えば、位置、形状、模様などが挙げられる。また、筐体の内部には、コントローラ100を支持する支持部が設けられている。
アタッチメント300は、その内部にある程度の空間が形成されればよい。そのため、筐体としては、鉄やアルミなどの金属材料や、プラスチックなどの樹脂材料に加えて、段ボールなどの紙材料などを用いてもよい。
本実施の形態に従うゲームシステム1は、コントローラ100および本体装置200の各々において処理が実行可能である。カメラ122の撮影によるカメラ画像の生成、および、カメラ画像から操作データの生成といった一連の処理は、コントローラ100および本体装置200の間で、分散処理させることもできるし、一方の装置ですべての処理を実行させることもできる。すなわち、典型的には、以下のような態様が想定される。
(a)コントローラ100のみで実行される態様。
(b)コントローラ100で撮像されたカメラ画像が本体装置200に送信されて、本体装置200において実行される態様。
(c)コントローラ100と本体装置200とが協働して実行される態様。
以下、典型例として、コントローラ100と本体装置200とが協働して実行される一態様について説明する。但し、以下に示す処理手順に限定されることなく、ゲームシステムの構成、処理能力、要求性能などに応じて、任意の実装形態を採用できる。
図4は、本実施の形態に従うゲームシステム1における処理の概要を説明するための模式図である。図4を参照して、コントローラ100のカメラ122の撮影によりカメラ画像400が取得される。コントローラ100は、カメラ122の撮影により取得される画像データを本体装置200に送信する機能を有しており、コントローラ100において取得されたカメラ画像400が本体装置200に送信される。つまり、コントローラ100は、カメラ122の撮影により取得される赤外線画像に関する画像データを本体装置200に送信する送信機能を有している。このカメラ画像400の撮影および本体装置200への送信は所定周期で繰返されてもよい。
本体装置200は、画像データに基づいて、操作部に対する操作を検出する操作検出機能を有している。より具体的には、本体装置200は、コントローラ100からのカメラ画像400に対して、カメラ画像400内に生じる可動部の外形上の変化を検出する処理を行なって、アタッチメント300の操作部に対するユーザ操作を検出する(操作検出処理)。
本体装置200は、操作検出機能によって検出された操作に基づいて、所定のゲーム処理を実行するゲーム処理実行機能を有している。より具体的には、本体装置200は、検出されたユーザ操作の内容を示す操作データを生成し、その生成した操作データに基づいてゲーム処理を進行する。
なお、本体装置200においては、装着されているアタッチメント300の種別に応じて異なるゲーム処理が実行される。具体的には、特定されたアタッチメント300の種別に応じて異なる操作データが生成されるようにしてもよいし、同一の操作データに対して、特定されたアタッチメント300の種別に応じて異なるゲーム処理が実行されるようにしてもよい。
このように、本実施の形態に従うアタッチメント300は、カメラ122を有するコントローラ100と共に用いられることで、任意のユーザ操作を検出する、一種のゲームコントローラあるいは入力デバイスとして機能する。
以下、本実施の形態に従うゲームシステム1において用いることのできるアタッチメントのいくつかの具体例について説明する。
<C.実施の形態1に従うアタッチメント>
まず、実施の形態1として、押下操作および回転操作が可能なアタッチメント300Aについて説明する。
図5は、実施の形態1に従うアタッチメント300Aの外観構成を示す模式図である。図5を参照して、アタッチメント300Aは、コントローラ100と接続可能な筐体310Aを有している。鳥を模式化した球状の操作部320Aの一部が筐体310Aの開口部と回転可能に係合されている。ユーザは、操作部320Aを押下する操作(押下操作)、および、操作部320Aを回転させる操作(回転操作)を行なうことができる。すなわち、アタッチメント300Aは、ボタン機構、および、回転機構を含む。なお、押下機構または回転機構のいずれか一方のみが設けられた構成を採用してもよい。
図6は、図5に示すアタッチメント300Aに対するユーザ操作を検出するための構造を説明するための模式図である。図6(A)は、図5に示すアタッチメント300Aの断面構造の一例を示す。図6(A)には、コントローラ100が装着された状態を例示している。
図6(A)を参照して、アタッチメント300Aの一端には開口部が設けてあり、この開口部にコントローラ100が装着される。コントローラ100とアタッチメント300Aとの間の結合は密結合であってもよいし、疎結合であってもよい。装着時には、アタッチメント300Aの筐体310Aの一部に形成される支持部312Aがコントローラ100を支持する。支持部312Aは、コントローラ100のカメラ122の撮影方向が筐体310Aの内部へ向くようにコントローラ100を支持できる構造であれば、どのような構造を採用してもよい。支持部312Aは、アタッチメント300の筐体310の形状などに適合する形状に構成することが好ましい。
コントローラ100が筐体310Aの支持部312Aにより位置決めされることで、コントローラ100のカメラ122の撮影視野には、筐体310Aの内部に存在する部材が被写体として含まれることになる。操作部320Aは、筐体310A内の位置に配置され、操作部320Aに対する操作に応じて位置が変化する可動部としての円筒部330Aを有している。円筒部330Aは、その少なくとも一部がコントローラ100のカメラ122の撮影視野内に存在するように配置される。ユーザが操作部320Aを操作すると、操作部320Aと一体的に形成されている円筒部330Aも連動して移動するため、カメラ122から見ると、円筒部330Aの外周面に外形上の変化が生じる。
これにより、カメラ122の撮影により取得されるカメラ画像400Aには、円筒部330Aが被写体として写ることになり、カメラ画像400A内の円筒部330Aに相当する領域を検出することで、操作部320Aに対するユーザ操作を検出できる。すなわち、コントローラ100のカメラ122の撮影により取得されたカメラ画像から、ユーザが操作部320Aに対して行なう、回転操作および/または押下操作をそれぞれ独立に検出することができる。
図6(A)に示すように、ユーザが操作部320Aを回転させる操作(回転操作)に対して抗力を発生するためのラッチ機構322などの付勢機構、および/または、ユーザが操作部320を押下する操作(押下操作)に対して抗力を発生するためのバネ324などの付勢機構を採用してもよい。
ラッチ機構322を採用することで、ユーザが操作部320Aを回転させる際に、いわゆる「クリック」感を得ることができる。バネ324を採用することで、ユーザが押下しているときだけ操作部320Aが下側に移動するといったボタンの動きを実現できる。このように、操作部320Aに対する操作に抗する付勢機構をアタッチメント300Aに付加することによって、直感的で物理的なフィードバックをユーザに与えることのできる、コントローラを実現できる。
図6に示す構成例においては、円筒部330Aの外周面には、操作部320Aに対するユーザ操作に応じて外形上の変化を生じるための領域(以下、「マーカ」とも称す。)332Aが形成されている。図6に示すマーカ332Aとしては、幅が周方向の位置に沿って変化する、くさび形状のものが採用されている。典型的には、マーカ332Aは、円筒部330Aの他の領域とは異なる反射率を有する材料で構成される。コントローラ100のカメラ122は、IR光の反射光の反射強度に対応したカメラ画像を生成するので、円筒部330Aにおけるマーカ332Aとそれ以外の領域とは、IR光に対する反射率が互いに異なるように構成される。マーカ332Aとそれ以外の領域との反射率は、互いに異なる値に設定されていればどのような値に設定してもよい。
一例として、マーカ332Aの反射率を高く設定し、それ以外の領域の反射率を低く設定してもよい。言い換えれば、マーカ332Aを「白色」の素材で構成し、それ以外の領域を「白色」の素材または円筒部330Aを構成する素材そのもので構成してもよい。「白色」の素材としては、任意の反射材を用いることができる。この反射材としては、再帰性反射材がより好ましい。再帰性反射材は、一般的に市販されている材料を用いることができ、あるいは、蛍光ペンの素材などを利用するようにしてもよい。
図6(B)に示すように、コントローラ100のカメラ122の撮影により取得されるカメラ画像400Aは、筐体300A内に存在する円筒部330Aに対応する被写体画像430Aを含む。被写体画像430Aの外形上の変化を検出した結果に基づいて、ユーザ操作が検出される。
図7は、図6に示すアタッチメント300Aに対するユーザ操作の検出方法を説明するための模式図である。図7(A)には、操作部320Aに対して何らのユーザ操作も行なわれていない初期状態で撮影されたカメラ画像400Aの一例を示す。このカメラ画像400Aに対して、マーカ332Aに相当するパターンを探索する処理が実行される。このパターンの探索処理においては、典型的には、カメラ画像400Aに含まれる他の領域とは異なる色などを有する部分(画素の集合であり、「クラスタ」とも称される。)を特定する処理が用いられる。このクラスタを探索する処理においては、入力されたカメラ画像400Aから、クラスタの重心位置、クラスタの大きさ、クラスタを包含する領域(典型的には、領域の左上座標および右下座標)が検出される。
図7(A)には、マーカ332Aに相当するパターンを包含する矩形領域の左上座標P1および右下座標P2が検出された例を示す。その上で、例えば、マーカ332Aに相当するパターンの、カメラ画像400Aの左右中心部での幅(縦方向の厚み)を検出する処理が実行される。図7(A)には、マーカ332Aに相当するパターンの幅D1が検出された例を示す。
図7(B)には、操作部320Aに対して押下操作がなされた状態で撮影されたカメラ画像400A’の一例を示す。図7(A)に示すカメラ画像400Aに対するのと同様の処理が、カメラ画像400A’に対しても実行されて、マーカ332Aに相当するパターンを包含する矩形領域の左上座標P1’および右下座標P2’が検出されたとする。このような、左上座標P1から左上座標P1’への変化、および/または、右下座標P2から右下座標P2’への変化に基づいて、操作部320Aに対する押下操作を検出することができる。
図7(C)には、操作部320Aに対して回転操作がなされた状態で撮影されたカメラ画像400A’’の一例を示す。図7(A)に示すカメラ画像400Aに対するのと同様の処理が、カメラ画像400A’’に対しても実行されて、マーカ332Aに相当するパターンの幅D1’が検出されたとする。このような、幅D1から幅D1’への変化に基づいて、操作部320Aに対する回転操作を検出することができる。
図7(A)および図7(B)に示すように、可動部としての円筒部330Aは、操作部320Aに対する押下操作に応じて位置が変化する。また、図7(A)および図7(C)に示すように、可動部としての円筒部330Aは、操作部320Aに対する回転操作に応じてカメラ122から見た形状および模様の少なくとも一方が変化する。このとき、可動部として円筒部330Aは、操作部320Aに対する押下操作の方向と実質的に平行な方向に沿った回転によって、形状および模様の少なくとも一方が徐々に変化する。このとき、図7に示すように、可動部としての円筒部330Aは、回転操作に伴って幅が変化してもよい。
但し、操作部320Aに対する押下操作の方向と実質的に垂直な方向に沿った回転によって、円筒部330Aが形状および模様の少なくとも一方を徐々に変化させるようにしてもよい。この場合には、円筒部330Aの構造などについても、押下操作の方向と実質的に垂直な方向に沿った回転に応じたものとなる。
なお、回転操作の検出については、マーカ332Aに相当するパターンの幅に基づくものに限らず、マーカ332Aに相当するパターンの輝度(例えば、パターンを構成する画素についての輝度値の総和または平均値)、マーカ332Aに相当するパターンの位置、などを利用してもよい。
図8は、実施の形態1に従うアタッチメント300Aに対するユーザ操作を検出する処理手順を示すフローチャートである。図8に示す各ステップは、コントローラ100の制御部110のCPU112が制御プログラム118(いずれも図2参照)を実行すること、または、本体装置200の制御部210のCPU212がアプリケーション233(いずれも図2参照)を実行することで実現される。
図8を参照して、コントローラ100のカメラ122がアタッチメント300Aの内部を撮影することでカメラ画像400Aを取得する(ステップS100)。取得されたカメラ画像400Aに対してクラスタを探索する処理が実行される(ステップS102)。クラスタの探索に成功したか否かが判断され(ステップS104)、クラスタの探索が失敗すれば(ステップS104においてNOの場合)、ステップS100以下の処理が繰返される。
一方、クラスタの探索が成功すれば(ステップS104においてYESの場合)、探索されたクラスタを包含する領域の座標に基づいて、押下操作の有無を判断する(ステップS106)。すなわち、検出された領域の座標が基準位置より下側にあれば、押下操作がなされていると判断し、そうでなければ、押下操作がなされていないと判断する。
続いて、探索されたクラスタの左右中心部での幅(縦方向の厚み)を算出し(ステップS108)、その算出された幅の大きさに基づいて、回転操作の有無または回転操作の度合いを判断する(ステップS110)。すなわち、前回の処理において算出された幅の大きさと今回の処理において算出された幅との差分に基づいて、前回からの回転量の変位が算出され、あるいは、算出された幅と予め定められた基準の幅との比率に基づいて、回転位置が決定される。
そして、ステップS106において検知された押下操作の有無、および、ステップS110において決定された回転操作の有無あるいは回転操作の度合い、を含む操作データが生成される(ステップS112)。そして、ステップS100以下の処理が繰返される。
図9は、実施の形態1に従うアタッチメント300Aの操作部の可動部に付与されるマーカのいくつかの変形例を示す図である。
図9(A)に示すマーカ332A’は、円筒部330Aの円周面に沿って、白抜き部分の位置が段階的に変化するようなパターンを示す。マーカ332A’については、白抜き部分の位置を逐次検出することで、押下操作および回転操作をそれぞれ独立に検出できる。
図9(B)に示すマーカ332A’’は、円筒部330Aの円周面に沿って、それぞれ異なる長さを有する複数の線が伸びており、円周面の各位置(各角度)での、円筒部330Aの軸方向に延びる線と交差する線の数が異なるようになっている。マーカ332A’については、円筒部330Aの円周面の各位置において何本の線が視認できるかに基づいて、押下操作および回転操作をそれぞれ独立に検出できる。
図9(C)に示すマーカ332A’’’は、円筒部330Aの円周面に沿って、白抜き部分と黒部分とが交互に配置されているパターンを示す。マーカ332A’については、円筒部330Aの円周面を監視することで、白色と黒色との領域のうちどの程度の高さ(上下方向の幅)が視認できるかに応じて押下操作を検出することができ、白色と黒色とが変化する回数に応じて回転操作を検出することができる。
図10は、実施の形態1に従うアタッチメント300Aに対する押下操作の検出精度を高める構造の一例を示す模式図である。図10(A)には、遮蔽部材を用いる構成例を示し、図10(B)には、反射部材を用いる構成例を示す。
図10(A)を参照して、カメラ122の撮影方向において、可動部である円筒部330Aの手前側であって、円筒部330Aの押下側に、遮蔽部材342がさらに配置されている。操作部320Aに対して押下操作がなされると、円筒部330Aの側面に配置されたマーカ332Aが遮蔽部材342により遮蔽されることになり、押下操作をより確実に検出できる。
また、図10(B)を参照して、カメラ122の撮影方向において、可動部である円筒部330Aの後側であって、円筒部330Aの押下側に、反射部材344がさらに配置されている。操作部320Aに対して押下操作がなされると、円筒部330Aにより反射部材344が遮蔽されることになり、押下操作をより確実に検出できる。
上述したように、実施の形態1においては、円筒部330Aに配置されたマーカをカメラ122で検出することにより、操作部320Aに対するユーザ操作(押下操作および回転操作)をそれぞれ独立に検出できる。
<D.実施の形態1の変形例1に従うアタッチメント>
上述した実施の形態1に従うアタッチメント300Aにおいては、押下操作および回転操作が可能であったが、さらにスライド操作を可能にしてもよい。
図11は、実施の形態1の変形例1に従うアタッチメント300Bの外観構成を示す模式図である。図11を参照して、アタッチメント300Bは、図5に示すアタッチメント300Aに対してスライド操作を行なうための機構が付加されたものに相当する。
具体的には、アタッチメント300Bは、コントローラ100と接続可能な筐体310Bを有している。鳥を模式化した球状の操作部320Bの一部が筐体310Bの開口部と回転可能に係合されている。ユーザは、操作部320Bを押下する操作(押下操作)、および、操作部320Bを回転させる操作(回転操作)を行なうことができる。さらに、アタッチメント300Bにおいては、操作部340Bが筐体310Bに対してスライド可能に取り付けられている。ユーザは、操作部340Bを紙面上下方向に移動させるスライド操作を行なうことができる。操作部340Bは、カメラ122の撮影方向と実質的に垂直な方向にスライドするスライド機構に相当する。
図12は、図11に示すアタッチメント300Bに対するユーザ操作を検出するための構造を説明するための模式図である。図12(A)は、図11に示すアタッチメント300Bの断面構造の一例を示す。図12(A)を参照して、アタッチメント300Bの一端には開口部が設けてあり、装着時には、アタッチメント300Bの筐体310Bの一部に形成される支持部312Bがコントローラ100を支持する。
操作部320Bは、筐体310B内の位置に配置され、操作部320Bに対する操作に応じて位置が変化する可動部としての円筒部330Bを有している。ユーザが操作部320Bを操作すると、操作部320Bと一体的に形成されている円筒部330Bも連動して移動するため、カメラ122から見ると、円筒部330Bの外周面に外形上の変化が生じる。
操作部340Bは、筐体310B内の位置に配置され、操作部340Bに対する操作に応じて位置が変化する可動部350Bを有している。ユーザが操作部340Bを操作すると、操作部340Bと一体的に形成されている可動部350Bも連動して移動するため、カメラ122から見ると、可動部350Bの位置が変化する。
図12(B)に示すように、コントローラ100のカメラ122の撮影により取得されるカメラ画像400Bは、筐体300B内に存在する円筒部330Bに対応する被写体画像430Bを含む。被写体画像430Bの外形上の変化を検出した結果に基づいて、押下操作および回転操作が検出される。この押下操作および回転操作の検出方法については、上述した実施の形態1と同様であるので、詳細な説明は繰返さない。
カメラ画像400Bは、また、筐体300B内に存在する可動部350Bに対応する被写体画像450Bを含む。被写体画像450Bの位置の変化を検出した結果に基づいて、スライド操作が検出される。すなわち、ユーザが操作部340Bに対してスライド操作を行なうと、カメラ画像400Bに含まれる被写体画像450Bの位置も変化するため、この被写体画像450Bの位置変化に基づいて、操作部340Bに対するスライド量を検出することができる。すなわち、図12(B)に示すように、可動部350Bは、操作部340Bに対するスライド操作に応じて位置が変化する。
カメラ画像400Bに含まれる被写体画像450Bがより明瞭に現れるように、可動部350Bの表面には、反射材を配置することが好ましい。反射材としては、再帰性反射材がより好ましい。
操作部340Bに対するスライド操作のそれぞれの端を検出するために、レファレンスマーカを筐体310B内部のしかるべき位置に予め配置しておくことが好ましい。このようなレファレンスマーカを用いることで、カメラ画像400Bには、レファレンスマーカを示すレファレンス画像460Bが含まれることになり、このレファレンス画像460Bを基準位置として、スライド量を算出できる。
なお、スライド操作の検出については、被写体画像450Bの位置の変化に基づくものに限らず、被写体画像450Bの大きさの変化などを利用してもよい。
上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態1の変形例1においては、アタッチメント300Bの筐体310Bの内部をカメラ122で撮影することにより、操作部320Bに対するユーザ操作(押下操作および回転操作)ならびに操作部340Bに対するユーザ操作(スライド操作)をそれぞれ独立に検出できる。
<E.実施の形態1の変形例2に従うアタッチメント>
上述した実施の形態1に従うアタッチメント300Aにおいては、押下操作および回転操作が可能であったが、回転操作のみを有する構成を採用してもよい。
図13は、実施の形態1の変形例2に従うアタッチメント300Cの外観構成を示す模式図である。図13を参照して、アタッチメント300Cは、釣り用のリールをモチーフとした外観形状を有している。具体的には、アタッチメント300Cは、コントローラ100と接続可能な筐体310Cを有している。釣り用のリールのハンドルを模した操作部320Cが筐体310Cに対して回転可能に配置されている。ユーザは、操作部320Cを回転させる操作(回転操作)を行なうことができる。
ユーザが操作部320Cに対して行なう回転操作については、上述した実施の形態1またはその変形例1と同様の方法で検出することができる。上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態1の変形例2においては、ユーザは、リールを模擬したアタッチメント300Cを操作することで、釣りなどに関するゲームをプレイすることができ、ユーザに対してリアリティを与えることができる。
<F.実施の形態2に従うアタッチメント>
次に、実施の形態2として、回転操作およびスライド操作が可能なアタッチメント300Dについて説明する。
図14は、実施の形態2に従うアタッチメント300Dの外観構成を示す模式図である。図14を参照して、アタッチメント300Dは、コントローラ100と接続可能な筐体310Dを有している。異なる軸径をそれぞれ有する2つの円筒を重ねたような構造を有する操作部320Dが筐体310Dに対してスライド可能に配置されている。また、操作部320Dについては、その軸を中心に回転させることも可能である。このような構成を採用することで、ユーザは、操作部320Dを回転させる操作(回転操作)、および、操作部320Dをスライドさせる操作(スライド操作)を行なうことができる。操作部320Dは、カメラ122の撮影方向と実質的に平行な方向にスライドするスライド機構に相当する。このように、アタッチメント300Dは、回転機構、および、スライド機構を含む。なお、回転機構またはスライド機構のいずれか一方のみが設けられた構成を採用してもよい。
図15は、図14に示すアタッチメント300Dに対するユーザ操作を検出するための構造を説明するための模式図である。図15(A)は、図14に示すアタッチメント300Dの断面構造の一例を示す。図15(A)を参照して、アタッチメント300Dの一端には開口部が設けてあり、装着時には、アタッチメント300Dの筐体310Dの一部に形成される支持部312Dがコントローラ100を支持する。
操作部320Dは、筐体310D内の位置に配置され、操作部320Dに対する操作に応じて位置が変化する可動部としての円筒部330Dを有している。ユーザが操作部320Dを操作すると、操作部320Dと一体的に形成されている円筒部330Dも連動して移動するため、カメラ122から見ると、円筒部330Dの外周面に外形上の変化が生じる。
図15(A)に示すように、ユーザが操作部320Dをスライドさせる操作(スライド作)に対して抗力を発生するためのバネ326などの付勢機構を採用してもよい。バネ326を採用することで、ユーザがスライド操作しているときだけ操作部320Dが紙面左側に移動するといったスライド機構の動きを実現できる。このように、操作部320Dに対する操作に抗する付勢機構をアタッチメント300Fに付加することによって、直感的で物理的なフィードバックをユーザに与えることのできる、コントローラを実現できる。
図15に示す構成例においては、円筒部330Dの外周面には、操作部320Dに対するユーザ操作に応じて外形上の変化を生じるための領域(マーカ)332Aが形成されている。図15に示すマーカ332Dとしては、幅が周方向のいずれの位置においても一定である部分と、幅が周方向の位置に沿って変化するテーパ形状の部分とを組み合わせたものが採用されている。マーカ332Dは、円筒部330Dの他の領域とは異なる反射率を有する材料で構成される。典型的には、マーカ332Dは、反射材を用いてそのパターンが形成される。反射材としては、再帰性反射材がより好ましい。マーカ332Dについては、実施の形態1に従うアタッチメント300Aのマーカ332Aと同様に構成すればよく、同様の説明はここでは繰返さない。
図15(B)に示すように、コントローラ100のカメラ122の撮影により取得されるカメラ画像400Dは、筐体300D内に存在する円筒部330Dに対応する被写体画像430Dを含む。被写体画像430Dの外形上の変化を検出した結果に基づいて、ユーザ操作が検出される。
図16は、図15に示すアタッチメント300Dに対するユーザ操作の検出方法を説明するための模式図である。図16(A)には、操作部320Dに対して何らのユーザ操作も行なわれていない初期状態で撮影されたカメラ画像400Dの一例を示す。このカメラ画像400Dに対して、マーカ332Dに相当するパターンを探索する処理が実行される。このパターンの探索処理においては、上述したようなクラスタを探索する処理が用いられる。
図16(A)には、マーカ332Dに相当するパターンを包含する矩形領域の横幅Wおよび縦幅Hが検出された例を示す。その上で、例えば、マーカ332Dのテーパ形状に相当するパターンの、カメラ画像400Dの左右中心部での幅(縦方向の厚み)を検出する処理が実行される。図16(A)には、マーカ332Dに相当するパターンの幅D2が検出された例を示す。
図16(B)には、操作部320Dに対して回転操作がなされた状態で撮影されたカメラ画像400D’の一例を示す。図16(A)に示すカメラ画像400Dに対するのと同様の処理が、カメラ画像400D’に対しても実行されて、マーカ332Dに相当するパターンを包含する矩形領域の横幅Wおよび縦幅Hが検出されるとともに、マーカ332Dに相当するパターンの幅D2’が検出されたとする。このような、幅D2から幅D2’への変化に基づいて、操作部320Dに対する回転操作を検出することができる。
なお、回転操作の検出については、マーカ332Dに相当するパターンを包含する矩形領域の大きさに基づくものに限らず、マーカ332Dに相当するパターンの輝度(例えば、パターンを構成する画素についての輝度値の総和または平均値)、マーカ332Dに相当するパターンの位置、などを利用してもよい。
図16(C)には、操作部320Dに対してスライド操作がなされた状態で撮影されたカメラ画像400D’’の一例を示す。図16(A)に示すカメラ画像400Dに対するのと同様の処理が、カメラ画像400D’’に対しても実行されて、マーカ332Dに相当するパターンを包含する矩形領域の横幅W’および縦幅H’が検出されるとともに、マーカ332Dに相当するパターンの幅D2’’が検出されたとする。このような検出された矩形領域の面積の変化(横幅W×縦幅Hから横幅W’×縦幅H’への変化)に基づいて、操作部320Dに対するスライド操作を検出することができる。すなわち、操作部320Dに対してスライド操作が行なわれることで、コントローラ100のカメラ122と円筒部330Dとの距離が変化するため、撮影されるカメラ画像内のパターンの大きさを用いて距離変化を検出することができる。
なお、スライド操作の検出については、マーカ332Dに相当するパターンの大きさに基づくものに限らず、マーカ332Dに相当するパターンの位置の変化などを利用してもよい。
一方、幅D2から幅D2’’への変化については、矩形領域の面積の変化が考慮されて、操作部320Dに対する回転操作がなされたか否かが判断される。すなわち、検出された矩形領域の面積の変化に応じて、幅D2から幅D2’’への変化が補正される。
なお、操作部320Dに対するスライド操作については、検出された矩形領域の面積の変化ではなく、横幅方向の変化(横幅Wから横幅W’への変化)、縦幅方向の変化(縦幅Hから縦幅H’への変化)、カメラ全体の明るさ(例えば、全画素についての輝度値の総和または平均値)などを利用してもよい。
図16(A)および図16(B)に示すように、可動部としての円筒部330Dは、操作部320Dに対する回転操作に応じてカメラ122から見た形状および模様の少なくとも一方が変化する。また、図16(A)および図16(C)に示すように、可動部としての円筒部330Dは、操作部320Dに対するスライド操作に応じて位置が変化する。
図16においては、テーパ形状のパターンと一定幅のパターンとを組み合わせたマーカ332Dを用いることで、回転操作およびスライド操作をそれぞれ独立に検出できる構成について例示したが、これに限られない。例えば、テーパ形状のパターンのみを有するマーカ332Dを用いるとともに、当該テーパ形状のパターンの横幅の変化に基づいて、スライド操作を検出するようにしてもよい。あるいは、回転操作を検出するためのテーパ形状のパターンに加えて、スライド操作を検出するための大きさの基準となるマーカ(例えば、円状のパターンを有するマーカ)を別途配置して、その別途配置されたマーカに基づいてスライド操作の度合いを検出するようにしてもよい。
図17は、実施の形態2に従うアタッチメント300Dに対するユーザ操作を検出する処理手順を示すフローチャートである。図17に示す各ステップは、コントローラ100の制御部110のCPU112が制御プログラム118(いずれも図2参照)を実行すること、または、本体装置200の制御部210のCPU212がアプリケーション233(いずれも図2参照)を実行することで実現される。
図17を参照して、コントローラ100のカメラ122がアタッチメント300Dの内部を撮影することでカメラ画像400Dを取得する(ステップS200)。取得されたカメラ画像400Dに対してクラスタを探索する処理が実行される(ステップS202)。クラスタの探索に成功したか否かが判断され(ステップS204)、クラスタの探索が失敗すれば(ステップS204においてNOの場合)、ステップS200以下の処理が繰返される。
一方、クラスタの探索が成功すれば(ステップS204においてYESの場合)、探索されたクラスタを包含する矩形領域の横幅および縦幅に基づいて、スライド操作の有無およびスライド操作の度合いを判断する(ステップS206)。すなわち、検出された矩形領域の横幅および縦幅から算出される面積の大きさと基準の面積の大きさとの比率が1より大きければ、スライド操作がなされていると判断し、併せて、その比率に基づいてスライド操作の大きさが算出される。
続いて、探索されたクラスタの下側部分(テーパ形状に相当するパターン)の左右中心部での幅(縦方向の厚み)を算出し(ステップS208)、その算出された幅の大きさおよびステップS206において算出した面積に基づいて、回転操作の有無または回転操作の度合いを判断する(ステップS210)。すなわち、ステップS206において算出した面積に基づいて算出された幅の大きさを補正した上で、前回の処理において算出された幅の大きさと補正後の幅との差分に基づいて、前回からの回転量の変位が算出され、あるいは、補正後の幅と予め定められた基準の幅との比率に基づいて、回転位置が決定される。
そして、ステップS206において検知されたスライド操作の有無あるいはスライド操作の度合い、および、ステップS210において決定された回転操作の有無あるいは回転操作の度合い、を含む操作データが生成される(ステップS212)。そして、ステップS200以下の処理が繰返される。
上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態2においては、アタッチメント300Dの筐体310Dの内部をカメラ122で撮影することにより、操作部320Dに対するユーザ操作(回転操作およびスライド操作)をそれぞれ独立に検出できる。
<G.実施の形態2の変形例1に従うアタッチメント>
上述した実施の形態2に従うアタッチメント300Dにおいては、回転操作およびスライド操作が可能であったが、スライド操作に代えて、スライド操作に関連した引張操作を可能にしてもよい。引張操作は、ピンボールのプッシャのような動作を含み、ユーザが操作部を引き出した後、操作部から手を離すと元の位置に戻るような機構が想定される。
図18は、実施の形態2の変形例1に従うアタッチメント300Eの外観構成を示す模式図である。図18を参照して、アタッチメント300Eは、コントローラ100と接続可能な筐体310Eを有している。筐体310Eのコントローラ100と接続される側とは反対側の端には、円筒状の操作部320Eが配置されている。操作部320Eは、筐体310Eから引き出すことが可能になっている。また、操作部320Eについては、その軸を中心に回転させることも可能である。このような構成を採用することで、ユーザは、操作部320Eを回転させる操作(回転操作)、および、操作部320Eを引き出す操作(引張操作)を行なうことができる。すなわち、アタッチメント300Eは、回転機構、および、引張機構を含む。なお、回転機構または引張機構のいずれか一方のみが設けられた構成を採用してもよい。
図19は、図18に示すアタッチメント300Eに対するユーザ操作を検出するための構造を説明するための模式図である。図19(A)は、図18に示すアタッチメント300Eの断面構造の一例を示す。図19(A)を参照して、アタッチメント300Eの一端には開口部が設けてあり、装着時には、アタッチメント300Eの筐体310Eの一部に形成される支持部312Eがコントローラ100を支持する。
操作部320Eは、筐体310E内の位置に配置され、操作部320Eに対する操作に応じて位置が変化する可動部としての円筒部330Eを有している。操作部320Eは、円筒部330Eにつながるプランジャー329、および、プランジャー329の外周側に配置されたコイル328を含む。コイル328は、円筒部330Eと筐体310Eとの間に抗力を発生させる付勢機構であり、ユーザが操作部320Eを引き出したときに、元の位置に戻ろうとする抗力を発生させる。
コントローラ100のカメラ122側に面した円筒部330Eの端円面には、操作部320Eに対するユーザ操作に応じて外形上の変化を生じるための領域(マーカ)332Eが形成されている。また、円筒部330Eの端円面の回転中心には、基準マーカ334Eが形成されている。基準マーカ334Eとマーカ332Eとの位置関係により回転操作が検出される。
マーカ332Eとしては、円筒部330Eの端円面上の中心からずれた位置に所定領域をもつものが採用される。マーカ332Eの形状は任意でよいが、検出精度の観点から、正方形または真円が好ましい。マーカ332Eは、円筒部330Eの円端面の他の領域とは異なる反射率を有する材料で構成される。典型的には、マーカ332Eは、反射材を用いてそのパターンが形成される。反射材としては、再帰性反射材がより好ましい。マーカ332Eについては、実施の形態1に従うアタッチメント300Aのマーカ332Aと同様に構成すればよく、同様の説明はここでは繰返さない。
図19(B)に示すように、コントローラ100のカメラ122の撮影により取得されるカメラ画像400Eは、筐体300E内に存在する円筒部330Eに対応する被写体画像430Eを含む。被写体画像430Eの外形上の変化を検出した結果に基づいて、ユーザ操作が検出される。
より具体的には、カメラ画像400Eにおいて、基準マーカ334Eに対応する領域を基準としてマーカ332Eに対応する領域がいずれの位置(角度)にあるのかに基づいて、操作部320Eに対してなされた回転操作が検出される。また、カメラ画像400Eにおいて、マーカ332Eに対応する領域の大きさに基づいて、操作部320Eに対してなされた引張操作が検出される。このように、可動部としての円筒部330Eは、操作部320Eに対する回転操作に応じてカメラ122から見た形状および模様の少なくとも一方が変化する。また、可動部としての円筒部330Eは、操作部320Eに対する引張操作に応じて位置が変化する。これらのユーザ操作の検出方法は、上述した実施の形態2における回転操作およびスライド操作の検出方法と同様であるので、詳細な説明は繰返さない。
上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態2の変形例1においては、アタッチメント300Eの筐体310Eの内部をカメラ122で撮影することにより、操作部320Eに対するユーザ操作(回転操作および引張操作)をそれぞれ独立に検出できる。
<H.実施の形態2の変形例2に従うアタッチメント>
上述した実施の形態2の変形例1に従うアタッチメント300Eにおいては、操作部に対する引張操作に抗する付勢機構として、プランジャーの周囲に配置されたコイルを用いる構成について例示したが、他の付勢機構を採用してもよい。以下、実施の形態2の変形例2に従うアタッチメント300Fにおいては、バックテンションを付与する巻取機構を付勢機構として採用した例を示す。
図20は、実施の形態2の変形例2に従うアタッチメント300Fの外観構成を示す模式図である。図20(A)を参照して、アタッチメント300Fは、コントローラ100と接続可能な筐体310Fを有している。筐体310Fのコントローラ100と接続される側とは反対側の端には、円筒状の操作部320Fが配置されている。図20(B)に示すように、操作部320Fは、筐体310Fから引き出すことが可能になっている。このような構成を採用することで、ユーザは、操作部320Fを引き出す操作(引張操作)を行なうことができる。すなわち、アタッチメント300Fは、引張機構を含む。
図21は、図20に示すアタッチメント300Fに対するユーザ操作を検出するための構造を説明するための模式図である。図21には、図20に示すアタッチメント300Fの要部の斜視図を示す。
図21を参照して、アタッチメント300Fは、操作部320Fにつながるワイヤ321Fを収納するリール323Fと、リール323Fと係合してリール323Fの回転に従動する歯車325Fとを含む。リール323Fの回転軸周辺には、ぜんまいバネなどが配置されており、ワイヤ321Fを巻き取る方向にバックテンションを発生させる。このとき、リール323Fから引き出されるワイヤ321Fが長くなるほど、大きなバックテンションが発生するようになっている。
コントローラ100のカメラ122側に面した歯車325Fの側面には、操作部320Fに対するユーザ操作に応じて外形上の変化を生じるための領域(マーカ)332Fが形成されている。マーカ332Fは、リール323Fおよび歯車325Fの回転を検出するためのものである。図21に示す例においては、軸方向に沿って3つの領域に区切られており、2つの領域は、それぞれ白色および黒色のレファレンスマーカとして用いられる。残りの領域は、回転量(回転位相)を検出するためのマーカとして用いられる。すなわち、白色のレファレンスマーカおよび黒色のレファレンスマーカをそれぞれ輝度値の上限値および下限値として設定し、その設定された輝度範囲において、検出されたマーカの輝度値がいずれのレベルに位置しているのかに基づいて、回転量(回転位相)を検出できる。なお、回転量(回転位相)の検出方法については、上述した他の方法を採用してもよい。このように、可動部としてのリール323Fは、操作部320Fに対する回転操作に応じてカメラ122から見た形状および模様の少なくとも一方が変化する。回転量(回転位相)の検出方法については、種々説明したので、ここでは同様の説明は繰返さない。
上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態2の変形例2においては、アタッチメント300Fの筐体310Fの内部をカメラ122で撮影することにより、操作部320Fに対するユーザ操作(回転操作および引張操作)をそれぞれ独立に検出できる。
<I.実施の形態3に従うアタッチメント>
次に、実施の形態3として、複数種類の押下操作が可能なアタッチメント300Gについて説明する。
図22は、実施の形態3に従うアタッチメント300Gの外観構成を示す模式図である。図22を参照して、アタッチメント300Gは、大型のゲームコントローラを模したものであり、ゲームコントローラの方向操作ボタンに相当する第1操作部320G1と、ゲームコントローラのAボタンおよびBボタンにそれぞれ相当する第2操作部320G2および第3操作部320G3とを含む。図22に示すように、アタッチメント300Gは比較的大型であるため、複数のユーザが操作して楽しむことができる。
アタッチメント300Gの筐体310Gには、コントローラ100と接続可能な開口部および開口部周辺に形成された支持部312Gが設けられている。コントローラ100の装着時には、コントローラ100は支持部312Gによって支持される。
図22に示すような構成を採用することで、ユーザは、第1操作部320G1、第2操作部320G2、および第3操作部320G3をそれぞれ押下することができる。
図23は、図22に示すアタッチメント300Gに対するユーザ操作を検出するための構造を説明するための模式図である。図23を参照して、第1操作部320G1、第2操作部320G2、および第3操作部320G3の可動部として機能するように配置されており、この可動部の表面には、コントローラ100のカメラ122の撮影視野に含まれるように、第1マーカ332G1、第2マーカ332G2および第3マーカ332G3が配置されている。これらのマーカは、筐体310F内部の他の領域とは異なる反射率を有する材料で構成される。典型的には、第1マーカ332G1、第2マーカ332G2および第3マーカ332G3は、反射材を用いてそのパターンが形成される。反射材としては、再帰性反射材がより好ましい。これらのマーカの構成などについては、実施の形態1において説明したので、同様の説明はここでは繰返さない。
コントローラ100のカメラ122が筐体310Gの内部を撮影することで生成されるカメラ画像に対して各マーカの位置などを探索する処理を行なって、アタッチメント300Gの操作部に対するユーザ操作を検出する(操作検出処理)。
具体的には、第1マーカ332G1は、多面立方体である第1操作部320G1の側面のうち、少なくとも2つの側面にパターンが形成されるように配置される。第1操作部320G1は、少なくとも4方向のうち任意の方向に押下されることができるため、いずれかの方向に押下されたのかを検出する必要がある。そこで、第1操作部320G1が有する複数の側面のそれぞれに配置された第1マーカ332G1の位置、位置間隔、向き、向きの差などに基づいて、いずれかの方向が押下されたのかを判断する。第1マーカ332G1のパターンが形成される側面の数は多い方が好ましい。このように、方向操作ボタンとして機能する第1操作部320G1については、複数の側面にそれぞれ配置されたマーカに対応する領域の挙動に基づいて、いずれの方向が押下されたのかを検出する。
第2マーカ332G2および第3マーカ332G3に対する押下操作については、上述の実施の形態1において説明したのと同様の方法で検出することができる。
図23を参照して説明したように、第1操作部320G1、第2操作部320G2、および第3操作部320G3の可動部は、これらの操作部に対する押下操作に応じて、位置が変化する。
図24は、実施の形態3に従うアタッチメント300Gに対するユーザ操作を検出する処理手順を示すフローチャートである。図24に示す各ステップは、コントローラ100の制御部110のCPU112が制御プログラム118(いずれも図2参照)を実行すること、または、本体装置200の制御部210のCPU212がアプリケーション233(いずれも図2参照)を実行することで実現される。
図24を参照して、コントローラ100のカメラ122がアタッチメント300Gの内部を撮影することでカメラ画像400Gを取得する(ステップS300)。取得されたカメラ画像400Gに対してクラスタを探索する処理が実行される(ステップS302)。クラスタの探索に成功したか否かが判断され(ステップS304)、クラスタの探索が失敗すれば(ステップS304においてNOの場合)、ステップS300以下の処理が繰返される。
一方、クラスタの探索が成功すれば(ステップS304においてYESの場合)、カメラ画像400G内の第1マーカ332G1に相当する領域の位置、位置間隔、向き、向きの差などに基づいて、第1操作部320G1のいずれの方向が押下されたのかを判断する(ステップS306)。
続いて、カメラ画像400G内の第2マーカ332G2に相当する領域の位置などに基づいて、第2操作部320G2に対する押下操作の有無を判断する(ステップS308)。検出された領域の座標が基準位置より下側にあれば、押下操作がなされていると判断し、そうでなければ、押下操作がなされていないと判断する。
同様に、カメラ画像400G内の第3マーカ332G3に相当する領域の位置などに基づいて、第3操作部320G3に対する押下操作の有無を判断する(ステップS310)。検出された領域の座標が基準位置より下側にあれば、押下操作がなされていると判断し、そうでなければ、押下操作がなされていないと判断する。
そして、ステップS306〜S310において判断された結果に基づいて操作データが生成される(ステップS312)。そして、ステップS300以下の処理が繰返される。
上述した内容以外については、実施の形態1と同様であるので、詳細な説明は繰返さない。実施の形態3においては、アタッチメント300Gの筐体310Gの内部をカメラ122で撮影することにより、第1操作部320G1、第2操作部320G2および第3操作部320G3に対するユーザ操作(押下操作)をそれぞれ独立に検出できる。
<J.実施の形態4に従うアタッチメント>
次に、実施の形態4として、スライド操作が可能なアタッチメント300Hについて説明する。
図25は、実施の形態4に従うアタッチメント300Hの外観構成を示す模式図である。図25を参照して、アタッチメント300Hは、望遠鏡を模したものであり、筒状の筐体310Hに対して操作部である外筒部320Hがスライド可能に構成されている。筐体310Hの下側から鉛直方向にコントローラ100が装着可能になっており、このコントローラ100は支持部312Hによって支持される。筐体310Hおよび外筒部320Hはいずれも中空になっており、ユーザが筐体310Hの一端から覗くと、他端側を見通すことができる。すなわち、ユーザは、アタッチメント300Hを望遠鏡のように把持するとともに、外筒部320Hに対してスライド操作することで、望遠鏡を覗きながらズームするような使い方が可能である。
図26は、図25に示すアタッチメント300Hに対するユーザ操作を検出するための構造を説明するための模式図である。図26を参照して、アタッチメント300Hに装着された状態において、コントローラ100のカメラ122の撮影視野には、外筒部320Hの内面側に配置されたマーカ332Hと、ユーザが覗く筐体310Hの開口部が含まれる。
マーカ332Hは、反射材を用いてそのパターンが形成される。反射材としては、再帰性反射材がより好ましい。マーカ332Hについては、実施の形態1に従うアタッチメント300Aのマーカ332Aと同様に構成すればよく、同様の説明はここでは繰返さない。
コントローラ100のカメラ122の撮影視野に含まれるマーカ332Hの位置を監視することで、外筒部320Hに対するスライド操作の有無およびその量を検出することができる。すなわち、ユーザが外筒部320Hを動かすことで、マーカ332Hの位置も連動して変化するので、カメラ122の撮影による取得されたカメラ画像からマーカ332Hの位置を検出することで、外筒部320Hに対するスライド操作を検出できる。このように、筐体310Hの表面に沿った外筒部320Hに対するスライド操作に応じて可動部の位置が変化する。
また、コントローラ100のカメラ122の撮影視野に含まれる筐体310Hの開口部からの光量の大きさなどに基づいて、ユーザが筐体310Hを覗いているか否かを判断できる。つまり、ユーザが筐体310Hを覗いていない場合、開口部が塞がっていないので、発光部124からのIR光に対する反射が少なく、カメラ122で受光される光量は減る一方で、ユーザが筐体310Hを覗いている場合、発光部124からのIR光はユーザの顔の表面で多く反射されるようになり、カメラ122で受光される光量は増える。このような光量の増加減度合いに基づいて、ユーザが筐体310Hに近付いているか否かを判断できる。
このように、実施の形態4に従うアタッチメント300Hにおいては、外筒部320Hに対するスライド操作、および、ユーザの筐体310Hへの接近の両方を検出することができる。この2種類の検出される情報に基づいて、以下のようなアプリケーションを提供することができる。
図27は、図26に示すアタッチメント300Hを用いたアプリケーションの一例を説明するための模式図である。図27に示すアプリケーションは、ユーザがアタッチメント300Hを操作することで、表示装置204(図1参照)に表示される内容が変化する。
図27を参照して、まず、ユーザがアタッチメント300Hを覗いていない状態(図中左側)においては、表示装置204には、対象のゲームオブジェクト(図27に示す例では、マンションの画像)が引いた状態で表示される(アプリケーション画像500)。すなわち、ユーザがアタッチメント300Hから目を離した状態においては、表示装置204にはアプリケーション画像500が表示される。
なお、コントローラ100のジャイロセンサ132(図2参照)にて検出される姿勢情報に基づいて、アタッチメント300Hが向いている方向を特定して、対応する位置にポインティングオブジェクト510を表示してもよい。
次に、ユーザがアタッチメント300Hを覗く操作を行なうと、表示装置204に表示されるアプリケーション画像の内容がよりズームされたものとなる。すなわち、アタッチメント300Hが示す望遠鏡で対象物を覗いた場合が表示装置204上に再現される。
このとき、ユーザの外筒部320Hに対するスライド操作に対する操作の度合いに応じて、疑似的に提供される「ズーム」の度合いも変化する。外筒部320Hのスライド量が相対的に小さい状態(図中中央)においては、対象のゲームオブジェクトに対するズームの度合いが相対的に小さく、一方、外筒部320Hのスライド量が相対的に大きい状態(図中右側)においては、対象のゲームオブジェクトに対するズームの度合いが相対的に大きくなっている。
このようなゲームオブジェクトに対するズーム処理は、ユーザがアタッチメント300Hを覗いている状態において継続され、覗いている状態が解除されると、元のアプリケーション画像の表示に戻る。
図28は、図27に示すアプリケーションに係る処理手順を示すフローチャートである。図28に示す各ステップは、コントローラ100の制御部110のCPU112が制御プログラム118(いずれも図2参照)を実行すること、または、本体装置200の制御部210のCPU212がアプリケーション233(いずれも図2参照)を実行することで実現される。図28を参照して、コントローラ100のカメラ122がアタッチメント300Hの内部を撮影することでカメラ画像400Hを取得する(ステップS400)。取得されたカメラ画像400Hに対してクラスタを探索する処理が実行される(ステップS402)。クラスタの探索に成功したか否かが判断され(ステップS404)、クラスタの探索が失敗すれば(ステップS404においてNOの場合)、ステップS400以下の処理が繰返される。
一方、クラスタの探索が成功すれば(ステップS404においてYESの場合)、探索されたクラスタを包含する領域の座標に基づいて、スライド操作の度合いを判断する(ステップS406)。続いて、カメラ画像400Hに含まれる各画素の輝度値の大きさに基づいて、ユーザがアタッチメント300Hを覗いている状態であるか否かを判断する(ステップS408)。すなわち、カメラ画像400Hに含まれる画素の輝度値の全体または局所的な平均値が相対的に小さければ、ユーザがアタッチメント300Hを覗いている状態ではなく、逆に、カメラ画像400Hに含まれる画素の輝度値の全体または局所的な平均値が相対的に大きければ、ユーザがアタッチメント300Hを覗いている状態であると判断する。
そして、ステップS406において検知されたスライド操作の度合い、および、ステップS408において決定されたユーザがアタッチメント300Hを覗いている状態であるか否か、を含む操作データが生成される(ステップS410)。
生成された操作データの内容に基づいてアプリケーション画像を生成し、表示装置204(図1参照)へ出力する(ステップS412)。そして、ステップS400以下の処理が繰返される。
図27に示すように、実施の形態4に従うアタッチメント300Hを用いることで、ユーザに対して、ズームするという機能を直感的に実現できる。
<K.実施の形態5に従うアタッチメント>
次に、実施の形態5として、ユーザの操作を直接的に検出できるアタッチメント300Jについて説明する。
図29は、実施の形態5に従うアタッチメント300Jの外観構成を示す模式図である。図29を参照して、アタッチメント300Jは、いわゆる「もぐらたたき」を提供可能な構成に向けられており、筐体310Jの上面には複数の孔314Jが設けられている。ユーザは、この孔314Jを操作部に相当するスティック320Jで塞ぐというユーザ操作を行なう。このスティック320Jの先端は、孔314Jの大きさに適合するように広げられており、少なくとも一方面には、マーカ332Jが配置されている。マーカ332Jは、反射材を用いてそのパターンが形成される。反射材としては、再帰性反射材がより好ましい。また、筐体310Jの下面側にコントローラ100が装着される。
図30は、図29に示すアタッチメント300Jに対するユーザ操作を検出するための処理を説明するための模式図である。図30(A)には、ユーザが孔314Jを塞ぐユーザ操作を行なっていない状態において撮影されたカメラ画像400Jの一例を示し、図30(B)には、ユーザが左上の孔314Jをスティック320Jで塞ぐユーザ操作を行なっている状態において撮影されたカメラ画像400Jの一例を示す。
図30(A)に示すように、ユーザが孔314Jを塞ぐ操作を行なっていなければ、複数の孔314Jに対応する部分が相対的に輝度の低い状態になっている。つまり、孔314Jが塞がっていない場合には、発光部124からのIR光に対する反射が少ない。一方、図30(B)に示すように、ユーザがいずれかの孔314Jを塞ぐ操作を行なうと、その塞がれた孔314Jに対応する部分は全体としては相対的に輝度の高い状態になるとともに、マーカ332Jに相当する小領域については特に輝度の高い状態になる。このようなマーカ332Jに相当する小領域が検出されることをもって、対応する位置にある孔314Jを塞ぐ操作を行なったと検出できる。
実施の形態5に従うアタッチメント300Jを用いることで、簡易な構成を維持しつつ、「もぐらたたき」またはそれに類似したゲームをユーザに提供できる。
<L.利点>
本実施の形態によれば、簡素な構成を維持しつつ、ゲームコントローラ等と共に用いることで、多様なゲーム操作を実現することのできる、アタッチメントを提供できる。典型的には、本実施の形態に従うアタッチメントは、押下操作、回転操作、スライド操作、引張操作などのうち1または複数を、単一のカメラ122を用いてそれぞれ独立に検出することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。