情報処理装置
【課題】省スペースの実現及び操作の自由度の向上を図りながらも、オペレータにより操作される操作物の検出結果を反映した画像をディスプレイ装置に表示できる情報処理装置を提供する。
【解決手段】赤外発光ダイオード7により、間欠的に赤外光が照射される剣3を撮像ユニット5により撮影して、剣3の動きを検出する。剣3が振られたことを検知したことをトリガとして、剣3の移動軌跡を表す剣軌跡オブジェクトをディスプレイ装置に表示する。
【解決手段】赤外発光ダイオード7により、間欠的に赤外光が照射される剣3を撮像ユニット5により撮影して、剣3の動きを検出する。剣3が振られたことを検知したことをトリガとして、剣3の移動軌跡を表す剣軌跡オブジェクトをディスプレイ装置に表示する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オペレータに保持されて動きが与えられる操作物を、ストロボスコープを用いて検出した結果に基づいて、ディスプレイ装置に画像を表示す情報処理装置及びその関連技術に関する。
【背景技術】
【0002】
日本国特開2003−79943号公報(図1、図3)に記載された従来の画像生成システムについて、図面を用いて説明する。
【特許文献1】特開2003−79943号公報
【0003】
図65は、従来の画像生成システムの説明図である。図65に示すように、検知面形成枠1000内に、二次元の検知面1100が形成される。検知面形成枠1000の辺sd1の2つ角部には、センサs1,s2が設けられる。
【0004】
センサs1は、発光部及び受光部を有している。発光部は、角度θ1が0度〜90度の間で赤外線を出力し、受光部は、その戻り光を検知する。被検出物である操作物に反射部材が取り付けられているため、その反射部材により反射された赤外線が、受光部により受光される。センサs2についても同様である。
【0005】
センサs1によって受光された結果は、結像im1として得られる。センサs2によって受光された結果は、結像im2として得られる。結像im1,im2では、被検出物としての操作物が、検知面1100を横切ると、操作物に遮光されない部分が影となって現れるので、影とならない部分を、角度θ1,θ2として判別できる。センサs1,s2が固定されているため、角度θ1,θ2から、操作物が検知面1100を横切る位置p(x,y)を特定できる。
【0006】
検知面枠1000内に形成される検知面1100の各位置と、画面の各位置と、を一対一に対応付けておくことで、操作物が検知面1100を横切る位置に対応した画面上での位置を特定できる。
【0007】
このようにして、操作物の画面上での位置あるいは位置の変化量を求めて、それを画面上のオブジェクトの動きに反映する。
【0008】
しかしながら、上記のように、従来の画像生成システムでは、検知面枠1000を形成し、さらに、その両角部にセンサs1,s2を配置する必要がある。このため、システムが大掛かりなものとなって、高価になるばかりでなく、広い設置場所が必要となる。従って、この従来のシステムは、一般家庭に向いているとは言い難い。
【0009】
また、検知面1100の各位置と、画面の各位置と、を一対一に対応付ける必要があるため、検知面枠1000の形状を決定する際の制約が大きい。このことも、設置場所が制限される一因となる。
【0010】
さらに、オペレータは、検知面枠1000の範囲で、操作物を操作しなければならず、操作物を操作する際の制約が大きい。一方、操作物の操作の制約を小さくしようとすると、検知面枠1000を大きくしなければならず、設置場所の制限が大きくなるとともに、高価なものとなって、一般家庭での購入が困難となる。
【0011】
さらに、二次元の検知面1100を横切るように、操作物を操作しなければならず、このこともまた、操作物を操作する際の制約を大きくする。つまり、二次元の検知面1100を横切らなければならないので、オペレータは、検知面1100に垂直なz軸方向に操作物を移動させることができなくなって、操作の自由度が小さくなる。上記文献に開示されているように、検知面枠を2つ設けても、この問題を十分に解消することはできない。しかも、検知面枠を増やせば、上記した設置場所の問題及び価格の問題がさらに大きくなり、一般家庭での購入がさらに困難なものとなる。
【発明の概要】
【発明が解決しようとする課題】
【0012】
そこで、本発明は、省スペースの実現及び操作の自由度の向上を図りながらも、オペレータにより操作される操作物の検出結果を反映した画像をディスプレイ装置に表示できる情報処理装置及びその関連技術を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の第1の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号を基に、前記操作物の状態情報を算出し、その状態情報に基づいて、第1のトリガを発生する状態情報算出手段と、前記第1のトリガに基づいて、前記操作物の移動軌跡を表現する第1のオブジェクトを前記ディスプレイ装置に表示させる画像表示処理ユニットと、を備える。
【0014】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0015】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0016】
さらに、操作物の状態情報に基づく第1のトリガにより、操作物の移動軌跡を表現する第1のオブジェクトがディスプレイ装置に表示される。このため、オペレータは、現実に目で見ることができない移動軌跡を、ディスプレイ装置上で見ることができ、操作物を操作した実感をより味合うことができる。
【0017】
さらに、ディスプレイ装置に表示される仮想世界に、オペレータが操作した操作物の移動軌跡が出現する。このような操作物の移動軌跡の表示を通じて、オペレータは、仮想世界との接触が可能となり、仮想世界をより楽しむことができる。例えば、本発明の情報処理装置をゲーム装置として使用する場合は、オペレータは、あたかも、ディスプレイ装置に表示されるゲーム世界で、ゲームを楽しんでいるような実感を得ることができる。
【0018】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0019】
ここで、本明細書において、操作物の「操作」とは、操作物を移動させること、又は、操作物を回転させること、等を意味し、スイッチを押下したり、アナログスティックを動かしたり、等は含まない。
【0020】
上記の情報処理装置において、前記移動軌跡を表現する前記第1のオブジェクトは、帯状オブジェクトであり、前記画像表示処理ユニットは、フレームごとに幅の異なる前記帯状オブジェクトを前記ディスプレイ装置に表示することにより、前記操作物の移動軌跡を表現し、前記帯状オブジェクトの前記幅は、フレームの更新とともに太くなった後、フレームの更新とともに細くなる。
【0021】
この構成によれば、鋭い閃光が走ったような移動軌跡を表示できる。特に、帯状オブジェクトの色を工夫することで、その効果をより高めることができる。
【0022】
上記の情報処理装置において、前記画像表示処理ユニットは、第2のオブジェクトを前記ディスプレイ装置に表示し、前記状態情報算出手段は、前記第2のオブジェクトと、前記操作物の移動軌跡を表現する前記第1のオブジェクトと、の位置関係が所定条件を満たしたときに、第2のトリガを発生し、前記画像表示処理ユニットは、前記第2のトリガに基づいて、予め定められたエフェクトを与えた前記第2のオブジェクトを前記ディスプレイ装置に表示する。
【0023】
この構成によれば、位置関係が所定の条件を満たすように、オペレータが操作物を操作すると、その移動軌跡を表現する第1のオブジェクトを通じて、ディスプレイ装置に表示された、言わば仮想世界の第2のオブジェクトにエフェクトを与えることができる。このため、オペレータは、仮想世界をより一層楽しむことができる。
【0024】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報としての速さ情報が、予め定められた第1の閾値を超えてから、予め定められた第2の閾値を下回るまでの、前記操作物の前記状態情報としての位置情報を算出し、あるいは、前記操作物の前記速さ情報が、前記予め定められた第1の閾値を超えてから、前記撮像手段による撮影範囲を超える前までの、前記操作物の前記位置情報を算出し、かつ、前記操作物の前記位置情報の取得回数が3以上の場合に、前記操作物の最初の前記位置情報と、前記操作物の最後の前記位置情報と、に基づいて、前記操作物の移動軌跡を表現する前記第1のオブジェクトの態様を決定し、かつ、前記操作物の前記位置情報の取得回数が3以上の場合に、前記状態情報に基づいて、前記第1のトリガを発生する。
【0025】
この構成によれば、操作物の位置情報の取得回数、つまり、操作物の検知回数が3以上の場合に、第1のトリガを発生するため、オペレータが意図しない操作により、意図しないときに、第1のオブジェクトが出現することを防止できる。
【0026】
また、操作物の位置情報の取得回数(操作物の検知回数)が3以上の場合に、操作物の最初の位置情報と最後の位置情報とに基づいて、操作物の移動軌跡を表現する第1のオブジェクトの態様が決定される。このため、操作物の移動軌跡をより的確に反映した第1のオブジェクトの態様を決定できる。
【0027】
なお、操作物の近接する2つの位置情報に基づいて、第1のオブジェクトの態様を決定すると、例えば、次の不都合がある。オペレータが、自分の感覚で直線的に操作物を移動させた場合でも、実際には、若干の円弧を描いている場合もある。この場合には、当然、撮像手段には、円弧を描くように操作物が撮影される。このときに、近接する2つの位置情報に基づいて、第1のオブジェクトの態様を決定すると、オペレータの感覚とずれた態様の第1のオブジェクトが表示されることになる。
【0028】
ここで、第1のオブジェクトの態様とは、第1のオブジェクトの角度及び/又は方向等の、表示する第1のオブジェクトの形態のことである。
【0029】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報としての面積情報を算出し、その面積情報が、予め定められた第3の閾値を超えたときに、第3のトリガを発生し、前記画像表示処理ユニットは、前記第3のトリガに基づいて、第3のオブジェクトを前記ディスプレイ装置に表示する。
【0030】
この構成によれば、操作物の広い反射面が撮影されたときに、第3のオブジェクトが表示されることになる。つまり、オペレータが、操作物の広い反射面を撮像手段に向けると、第3のオブジェクトが表示される。従って、単一の操作物の操作により、様々な画像を表示できる。また、様々な画像を表示するために、複数の操作物を用意したり、操作物にスイッチやアナログスティック等を設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0031】
上記の情報処理装置において、前記画像表示処理ユニットは、文字列を前記ディスプレイ装置に表示し、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第4のトリガを発生し、前記画像表示処理ユニットは、前記第4のトリガに基づいて、前記文字列と異なる文字列を前記ディスプレイ装置に表示する。
【0032】
この構成によれば、操作物の状態情報に基づいて、ディスプレイ装置上に文字列を次々に表示させることができるため、文字列の更新に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0033】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第5のトリガを発生し、前記画像表示処理ユニットは、前記第5のトリガに基づいて、背景画像を更新する。
【0034】
この構成によれば、操作物の状態情報に基づいて、背景を更新することができるため、背景の更新に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0035】
上記の情報処理装置において、前記操作物の前記状態情報としての位置情報を補正する補正情報を取得する補正情報取得ユニット、をさらに備え、前記状態情報算出手段は、前記補正情報を用いて、補正後の位置情報を算出する。
【0036】
この構成によれば、オペレータが操作物を操作する感覚と、状態情報算出手段が算出する操作物の状態情報と、のずれを極力解消できるため、オペレータによる操作物の操作をより的確に反映した画像を表示できる。
【0037】
上記の情報処理装置において、前記画像表示処理ユニットは、カーソルを前記ディスプレイ装置に表示し、かつ、前記操作物の前記状態情報としての位置情報に応じて、前記カーソルを移動させる。
【0038】
この構成によれば、操作物の状態情報に基づいて、カーソルを移動することができるため、カーソルの移動に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0039】
上記の情報処理装置において、前記操作物の前記状態情報に基づいて、予め定められた処理を実行することを確定する。
【0040】
この構成によれば、操作物の状態情報に基づいて、処理の実行の確定ができるため、処理の実行の確定に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0041】
上記の情報処理装置において、前記画像表示処理ユニットは、前記カーソルが第4のオブジェクトに重ねて表示されたときに、その第4のオブジェクトに関連付けられた画像を前記ディスプレイ装置に表示する。
【0042】
この構成によれば、オペレータは、操作物の操作によりカーソルを移動させるだけで、表示されている第4のオブジェクトに関連付けられた画像を表示させることができる。
【0043】
上記の情報処理装置において、前記画像表示処理ユニットは、前記カーソルにより選択された文字を前記ディスプレイ装置に表示する。
【0044】
この構成によれば、オペレータは、操作物の操作によりカーソルを移動させて所望の文字を選択するだけで、文字を入力できるため、文字入力に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0045】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第6のトリガを発生し、前記画像表示処理ユニットは、前記第6のトリガに基づいて、前記操作物の動きに応じた第5のオブジェクトを前記ディスプレイ装置に表示する。
【0046】
この構成によれば、操作物の移動軌跡を表現する第1のオブジェクトと異なった視覚的効果を、オペレータに与えることができる。
【0047】
上記の情報処理装置において、前記画像表示処理ユニットは、前記第1のトリガが発生してから、所定時間経過後に、前記操作物の移動軌跡を表現する前記第1のオブジェクトを前記ディスプレイ装置に表示する。
【0048】
この構成によれば、操作物の移動軌跡を表現する第1のオブジェクトを、第1のトリガの発生とほぼ同時(人間の感覚で同時)に表示する場合と比較して、異なった効果を、オペレータに与えることができる。
【0049】
上記の情報処理装置において、前記画像表示処理ユニットは、前記操作物の連続した前記状態情報が所定条件を満足したときに、第6のオブジェクトを表示する。
【0050】
この構成によれば、操作物の操作が所定条件を満足したときにのみ、第6のオブジェクトが表示されるため、この所定条件の設定の仕方によって、第6のオブジェクトを表示させるための、オペレータによる操作物の操作を任意にコントロールできる。
【0051】
上記の情報処理装置において、前記画像表示処理ユニットは、前記操作物の操作方向及び操作タイミングを指示するガイドを表示する。
【0052】
この構成によれば、オペレータは、情報処理装置が要求する操作物の操作方向及び操作タイミングを視覚的に認識できる。
【0053】
上記の情報処理装置において、前記操作物の前記状態情報は、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、である。
【0054】
この構成によれば、オペレータによる操作物の様々な動きに応じたオブジェクトをディスプレイ装置に表示できる。
【0055】
上記の情報処理装置において、前記第1のトリガに基づいて、スピーカから効果音を発生させる効果音生成ユニット、をさらに備える。
【0056】
この構成によれば、オペレータに対して、視覚的効果に加えて、聴覚的効果を与えることができる。従って、オペレータは、ディスプレイ装置に表示される仮想世界をより一層楽しむことができる。例えば、オペレータが操作した操作物の移動軌跡が仮想世界に出現すると同時に、効果音を発生させれば、オペレータは、仮想世界をより一層楽しむことができる。
【0057】
本発明の第2の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、複数の反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号を基に、前記操作物の状態情報を算出して、その状態情報に基づいて、前記複数の反射面のいずれの反射面が撮影されたかを判別する状態情報算出手段と、判別された前記反射面に応じて、前記ディスプレイ装置に異なる画像を表示させる画像表示処理ユニットと、を備える。
【0058】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0059】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0060】
さらに、検知された反射面に応じて、異なる画像が表示されるため、単一の操作物を操作するだけで、反射面の数に応じた、異なる画像を表示できる。このため、異なる画像ごとに、対応する操作物を用意したり、スイッチやアナログスティック等を操作物に設けたり、する必要がない。従って、操作物のコストの低減が可能になるとともに、オペレータによる操作物の操作性を向上できる。
【0061】
さらに、オペレータは、操作物のどの反射面を撮像手段に向けるかによって、所望の画像を表示できる。例えば、本発明の情報処理装置をゲーム装置として使用する場合は、オペレータは、単一の操作物で、様々な画像を表示させることができて、ゲームを円滑に実行できる。
【0062】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0063】
上記の情報処理装置において、前記状態情報は、前記反射面の面積情報、数情報、形状情報、若しくは、形状を表す比率情報、のいずれか、又は、それらの組み合わせ、である。
【0064】
この構成によれば、状態情報算出手段は、これらの情報により、操作物のいずれの反射面が撮影されたのかを判別することができる。従って、反射面のサイズ又は形状を異ならせるだけで、いずれの反射面が撮影されたのかを容易に判別できる。特に、面積情報により、反射面を判別する場合は、過った判別を極力減少させることができるだけでなく、処理を容易にできて処理の高速化を図ることができる。
【0065】
本発明の第3の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、複数の反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号に基づいて、前記反射面ごとの状態情報を算出する状態情報算出手段と、前記複数の反射面の前記状態情報に応じて、画像を表示させる画像表示処理ユニットと、を備える。
【0066】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0067】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0068】
さらに、複数の反射面の状態情報に応じて画像を表示するため、単一の反射面の状態情報に応じて画像を表示する場合と比較して、操作物の状態をより反映した画像を表示できる。
【0069】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0070】
本発明の第4の形態によると、ゲームシステムは、ゲームを行うためのゲームシステムであって、オペレータによって実際に動かされる操作物と、オペレータによって動かされている操作物を撮影するイメージセンサと、ゲームを行う際にディスプレイ装置に接続され、前記イメージセンサからイメージ信号を受け取り、前記ゲームのコンテンツを前記ディスプレイ装置に表示する処理装置と、を備え、前記操作物は、前記イメージセンサによって撮影された前記操作物のイメージに基づいて、前記ゲームにおいて所定の役割を担っており、前記ゲームを行っている際に、前記処理装置によって前記ディスプレイ装置に表示される前記ゲームのコンテンツにおける、前記操作物の移動軌跡の表示は、帯状イメージに簡略化されており、この帯状イメージは、前記オペレータによって動かされる前記操作物の、前記ディスプレイ装置上の表示における移動動跡の少なくとも2点を結ぶものであり、この少なくとも2点は、前記イメージセンサで撮影されたイメージから取得される。
【0071】
本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
【図面の簡単な説明】
【0072】
【図1】本発明の実施の形態における情報処理システムの全体構成を示す図である。
【図2】図1の情報処理装置及び剣の拡大図である。
【図3】図2の剣の上面図である。
【図4】図1の剣の他の例の拡大図である。
【図5】図4の剣の上面図である。
【図6】図2の撮像手段の一例を示す図解図である。
【図7】図1の情報処理装置の電気的な構成を示す図である。
【図8】図7の高速プロセッサのブロック図である。
【図9】図7のイメージセンサから高速プロセッサへピクセルデータを取り込む構成及びLED駆動回路を示す回路図である。
【図10】(a)図9のイメージセンサが出力するフレームステータスフラグ信号FSFのタイミング図である。(b)図9のイメージセンサが出力するピクセルデータストローブ信号PDSのタイミング図である。(c)図9のイメージセンサが出力するピクセルデータD(X,Y)のタイミング図である。(d)図9の高速プロセッサが出力するLEDコントロール信号LEDCのタイミング図である。(e)図9の赤外発光ダイオードの点灯状態を示すタイミング図である。(f)図9のイメージセンサの露光期間を示すタイミング図である。
【図11】(a)は、図10のフレームステータスフラグ信号FSFの拡大図である。(b)図10のピクセルデータストローブ信号PDSの拡大図である。(c)図10のピクセルデータD(X,Y)の拡大図である。
【図12】図1のテレビジョンモニタのスクリーンに表示される選択画面の例示図である。
【図13】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面の例示図である。
【図14】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面の他の例示図である。
【図15】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図16】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図17】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図18】(a)図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。(b)図18(a)の更新後のゲーム画面の例示図である。
【図19】図12の選択画面で「対戦モード」の項目オブジェクトが選択されたときのゲーム画面の例示図である。
【図20】図7のROMに格納されたプログラム及びデータを示す概念図である。
【図21】(a)一般的なイメージセンサにより撮影された、特別な処理を施さない画像の例示図である。(b)図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(c)赤外フィルタを介したイメージセンサの点灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(d)赤外フィルタを介したイメージセンサの消灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(e)点灯時の画像信号と消灯時の画像信号との差分信号の例示図である。
【図22】図7の高速プロセッサが剣のスイングを検出する際の説明図である。
【図23】(a)実施の形態における角度フラグの値と角度との関係図である。(b)実施の形態における方向フラグの値と方向を表す符号との関係図である。(c)実施の形態における角度フラグ及び方向フラグと、スイング情報と、の関係図である。
【図24】図23(c)のスイング情報と、剣の操作方向と、の関係図である。
【図25】図23(c)のスイング情報とアニメーションテーブル格納位置情報との関係図である。
【図26】図7のROMに格納された、剣軌跡オブジェクトをアニメーションするためのアニメーションテーブルの例示図である。
【図27】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの例示図である。
【図28】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの他の例示図である。
【図29】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの他の例示図である。
【図30】図7の高速プロセッサによるヒット判定の説明図である。
【図31】図12の選択画面で「スイング補正」の項目オブジェクトが選択されたときの、スイング補正画面の例示図である。
【図32】図1の情報処理装置の全体の処理の流れを示すフローチャートである。
【図33】図32のステップS1の初期設定処理の流れを示すフローチャートである。
【図34】図33のステップS20のセンサ初期設定処理の流れを示すフローチャートである。
【図35】図34のステップS31のコマンド送信処理の流れを示すフローチャートである。
【図36】(a)図9のレジスタ設定クロックCLKのタイミング図である。(b)図9のレジスタデータのタイミング図である。
【図37】図34のステップS33のレジスタ設定処理の流れを示すフローチャートである。
【図38】図32のステップS7のストーリーモードの流れを示すフローチャートである。
【図39】図38のステップS60のピクセルデータ群取得処理の流れを示すフローチャートである。
【図40】図39のステップS81のピクセルデータ取得処理の流れを示すフローチャートである。
【図41】図38のステップS61の注目領域抽出処理の流れを示すフローチャートである。
【図42】図38のステップS62の注目点抽出処理の流れを示すフローチャートである。
【図43】図38のステップS63のスイング検出処理の流れを示すフローチャートである。
【図44】図43のステップS166の剣軌跡種類決定処理の流れを示すフローチャートである。
【図45】図43のステップS167の剣軌跡座標算出処理の流れを示すフローチャートである。
【図46】図38のステップS64のヒット判定処理の流れを示すフローチャートである。
【図47】図38のステップS65の盾検出処理の流れを示すフローチャートである。
【図48】図38のステップS66の説明進行処理の流れを示すフローチャートである。
【図49】図38のステップS67の前進処理の流れを示すフローチャートである。
【図50】図38のステップS70の画像表示処理の流れを示すフローチャートである。
【図51】図32のステップS5のモード選択処理の流れを示すフローチャートである。
【図52】図51のステップS303のカーソル移動処理の流れを示すフローチャートである。
【図53】図51のステップS304の項目オブジェクト移動処理の流れを示すフローチャートである。
【図54】図32のステップS6のスイング補正モードの流れを示すフローチャートである。
【図55】図54のステップS404の補正情報取得処理の流れを示すフローチャートである。
【図56】図6の撮像手段によるストロボスコープ撮影処理の流れを示すフローチャートである。
【図57】本実施の形態におけるゲーム画面の他の例示図である。
【図58】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図59】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図60】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図61】(a)図1の剣のさらに他の例示図である。(b)図1の剣のさらに他の例示図である。図61は、図1の剣のさらに他の例示図である。
【図62】実施の形態における操作物の他の例示図である。
【図63】実施の形態における第1の反射シートの注目点の座標算出の説明図である。
【図64】実施の形態における第2の反射シートの注目点の座標算出の説明図である。
【図65】従来の画像生成システムの説明図である。
【発明を実施するための形態】
【0073】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。
【0074】
図1は、本発明の実施の形態における情報処理システムの全体構成を示す図である。図1に示すように、この情報処理システムは、情報処理装置1、操作物3、及び、テレビジョンモニタ90、を含む。
【0075】
本実施の形態では、操作物3の1例として、剣型の操作物3(以下、本実施の形態では、「剣3」と呼ぶ。)を挙げている。そして、本実施の形態では、情報処理の1例として、ゲーム処理を挙げる。
【0076】
情報処理装置1には、ACアダプタ92により、直流電源電圧が与えられる。ただし、ACアダプタ92に代えて、電池(図示せず)により、直流電源電圧を与えることもできる。
【0077】
テレビジョンモニタ90には、その前面にスクリーン91が設けられる。テレビジョンモニタ90と情報処理装置1とは、AVケーブル93により接続される。
【0078】
情報処理装置1は、例えば、図1に示すように、テレビジョンモニタ90の上面に載置される。
【0079】
図2は、図1の情報処理装置1及び剣3の拡大図である。図3は、図2の剣3の上面図である。
【0080】
図2に示すように、情報処理装置1のハウジング11には、撮像手段5が組み込まれる。撮像手段5は、4つの赤外発光ダイオード7及び赤外フィルタ9を含む。赤外発光ダイオード7の発光部は、赤外フィルタ9から露出している。
【0081】
撮像手段5の赤外発光ダイオード7は、間欠的に赤外光を発光する。赤外発光ダイオード7からの赤外光は、剣3により反射され、赤外フィルタ9の内部に設けられた撮像素子(後述)に入力される。このようにして、剣3が間欠的に撮影される。従って、情報処理装置1は、オペレータ94により振り動かされた剣3の間欠的な画像信号を取得できる。情報処理装置1は、この画像信号を解析して、その解析結果を、ゲーム処理に反映する。
【0082】
また、情報処理装置1の背面から、メモリカートリッジ13を装着することができる。このメモリカートリッジ13には、EEPROM(electrically
erasable and programmable read only memory)が内蔵されている(図示せず)。このEEPROMには、1人でプレイするストーリーモードのゲーム結果を保存することができる。
【0083】
また、図2及び図3に示すように、剣3の刀身部15の両面には、反射シート17が取り付けられる。この反射シート17により、反射面が形成される。また、剣3の鍔部19の両面には、半円柱状部材21が取り付けられる。この半円柱状部材21の曲面には、反射シート23が取り付けられる。この反射シート23により、反射面が形成される。反射シート17,23は、例えば、再帰反射シートである。
【0084】
また、図2に示すように、剣3の柄頭25には、ストラップ27が取り付けられる。オペレータ94は、このストラップ27を手首に通して、剣3の柄29を握る。これにより、オペレータ94が、過って柄29から手を離した場合でも、剣3が予期せぬ所へ飛んでいくの防止し、安全が図られる。
【0085】
図4は、図1の剣3の他の例の拡大図である。図5は、図4の剣3の上面図である。図4及び図5の剣3には、図2及び図3の半円柱状部材21が設けられていない。その代わり、図4及び図5の剣3では、その刃先部に反射シート31(例えば、再帰反射シート)が取り付けられる。図4及び図5の剣3では、反射シート31が、図2及び図3の剣3の反射シート23の機能を果たすことになる。なお、以下では、図2及び図3に示した剣3を用いて説明を行う。
【0086】
図6は、図2の撮像手段5の一例を示す図解図である。図6に示すように、この撮像手段5は、たとえばプラスチック成型によって形成されるユニットベース45を含み、このユニットベース45内には支持筒47が取り付けられる。支持筒47の上面には内面が逆円錐形状であるラッパ状の開口41が形成され、その開口41の下方の筒状部内部には、いずれもがたとえば透明プラスチックの成型によって形成された凹レンズ49および凸レンズ51を含む光学系が設けられ、凸レンズ51の下方において、撮像素子としてのイメージセンサ43が固着される。したがって、イメージセンサ43は、開口41からレンズ49および51を通して入射する光に応じた画像を撮影することができる。
【0087】
イメージセンサ43は、低解像度のCMOSイメージセンサ(たとえば32ピクセル×32ピクセル:グレースケール)である。ただし、このイメージセンサ43は、画素数のもっと多いものでもよいし、CCD等の他の素子からなるものであってよい。以下では、イメージセンサ43が、32ピクセル×32ピクセルからなるものとして説明を行う。
【0088】
また、ユニットベース45には、光出射方向がいずれも上方向とされた複数(実施の形態では4つ)の赤外発光ダイオード7が取り付けられる。この赤外発光ダイオード7によって、撮像手段5の上方に赤外光が照射される。また、ユニットベース45の上方には、赤外フィルタ(赤外光のみを透過するフィルタ)9が上記開口41を覆うように、取り付けられる。そして、赤外発光ダイオード7は後述のように、点灯/消灯(非点灯)が連続的に繰り返されるので、ストロボスコープとして機能する。ただし、「ストロボスコープ」とは、運動体を間欠的に照らす装置の総称である。したがって、上記イメージセンサ43は、その撮影範囲内で移動する物体、実施の形態では、剣3を撮影することになる。なお、後述する図9に示すように、ストロボスコープは、主に、赤外発光ダイオード7、LED駆動回路82、及び、高速プロセッサ200、により構成される。
【0089】
ここで、撮像手段5は、イメージセンサ43の受光面が、水平面から所定角度(例えば、90度)だけ傾くように、ハウジング11に組み込まれる。また、凹レンズ49および凸レンズ51により、イメージセンサ43の撮影範囲は、例えば、60度の範囲である。
【0090】
図7は、図1の情報処理装置1の電気的な構成を示す図である。図7に示すように、情報処理装置1は、イメージセンサ43、赤外発光ダイオード7、映像信号出力端子61、音声信号出力端子63、高速プロセッサ200、ROM(read
only memory)65、及び、バス67、を含む。
【0091】
高速プロセッサ200には、バス67が接続される。さらに、バス67には、ROM65が接続される。従って、高速プロセッサ200は、バス67を介して、ROM65にアクセスすることができるので、ROM65に格納された制御プログラムをリードして実行でき、また、ROM65に格納された画像データ及び音声データをリードして処理し、映像信号及び音声信号を生成して、映像信号出力端子61及び音声信号出力端子63に出力することができる。
【0092】
また、情報処理装置1の背面にはメモリカートリッジ13を装着するためのコネクタ(図示せず)が設けられる。従って、高速プロセッサ200は、バス67を介して、そのコネクタに装着されたメモリカートリッジ13に内蔵されるEEPROM69にアクセスできる。これにより、高速プロセッサ200は、バス67を介して、EEPROM69に格納されたデータをリードして、ゲーム処理に利用することができる。
【0093】
さて、剣3は、赤外発光ダイオード7が発光する赤外光に照射され、その赤外光を反射シート17,23で反射する。この反射シート17,23からの反射光がイメージセンサ43によって検知され、したがって、イメージセンサ43からは反射シート17,23の画像信号が出力される。イメージセンサ43からのこのアナログ画像信号は高速プロセッサ200に内蔵されたA/Dコンバータ(後述)によってデジタルデータに変換される。そして、高速プロセッサ200は、このデジタルデータを解析して、その解析結果をゲーム処理に反映する。
【0094】
図8は、図7の高速プロセッサ200のブロック図である。図8に示すように、この高速プロセッサ200は、中央演算処理装置(CPU:central
processing unit)201、グラフィックプロセッサ202、サウンドプロセッサ203、DMA(direct memory access)コントローラ204、第1バス調停回路205、第2バス調停回路206、内部メモリ207、A/Dコンバータ(ADC:analog
to digital converter)208、入出力制御回路209、タイマ回路210、DRAM(dynamic random access memory)リフレッシュ制御回路211、外部メモリインタフェース回路212、クロックドライバ213、PLL(phase−locked
loop)回路214、低電圧検出回路215、第1バス218、及び、第2バス219、を含む。
【0095】
CPU201は、メモリ(内部メモリ207、又は、ROM65)に格納されたプログラムに従い、各種演算やシステム全体の制御を行う。CPU201は、第1バス218及び第2バス219のバスマスタであり、それぞれのバスに接続された資源にアクセスが可能である。
【0096】
グラフィックプロセッサ202は、第1バス218及び第2バス219のバスマスタであり、内部メモリ207、又は、ROM65に格納されたデータを基に、映像信号を生成して、映像信号出力端子61へ出力する。グラフィックプロセッサ202は、第1バス218を通じて、CPU201により制御される。また、グラフィックプロセッサ202は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0097】
サウンドプロセッサ203は、第1バス218及び第2バス219のバスマスタであり、内部メモリ207、又は、ROM65に格納されたデータを基に、音声信号を生成して、音声信号出力端子63へ出力する。サウンドプロセッサ203は、第1バス218を通じて、CPU201により制御される。また、サウンドプロセッサ203は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0098】
DMAコントローラ204は、ROM65及びEEPROM69から、内部メモリ207へのデータ転送を司る。また、DMAコントローラ204は、データ転送の完了を通知するために、CPU201に対する割込み要求信号220を発生する機能を有する。DMAコントローラ204は、第1バス218及び第2バス219のバスマスタである。DMAコントローラ204は、第1バス218を通じてCPU201により制御される。
【0099】
第1バス調停回路205は、第1バス218の各バスマスタからの第1バス使用要求信号を受け付け調停を行い、各バスマスタへの第1バス使用許可信号を発行する。各バスマスタは、第1バス使用許可信号を受領することによって第1バス218に対するアクセスが許可される。ここで、第1バス使用要求信号及び第1バス使用許可信号は、図8では、第1バス調停信号222として示されている。
【0100】
第2バス調停回路206は、第2バス219の各バスマスタからの第2バス使用要求信号を受け付け、調停を行い、各バスマスタへの第2バス使用許可信号を発行する。各バスマスタは、第2バス使用許可信号を受領することによって第2バス219に対するアクセスが許可される。ここで、第2バス使用要求信号及び第2バス使用許可信号は、図8では、第2バス調停信号223として示されている。
【0101】
内部メモリ207は、マスクROM、SRAM(static
random access memory)、及び、DRAMのうち、必要なものを備える。バッテリによるSRAMのデータ保持が必要とされる場合、バッテリ217が必要となる。DRAMが搭載される場合、定期的にリフレッシュと呼ばれる記憶内容保持のための動作が必要とされる。
【0102】
ADC208は、アナログ入力信号をデジタル信号に変換する。このデジタル信号は、第1バス218を介してCPU201によってリードされる。また、ADC208は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0103】
このADC208が、イメージセンサ43からのピクセルデータ(アナログ)を受けて、デジタルデータに変換する。
【0104】
入出力制御回路209は、外部入出力装置や外部の半導体素子との通信等を入出力信号を介して行う。入出力信号は、第1バス218を介して、CPU201からリード/ライトされる。また、入出力制御回路209は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0105】
この入出力制御回路209から、赤外発光ダイオード7を制御するLEDコントロール信号LEDCが出力される。
【0106】
タイマ回路210は、設定された時間間隔に基づき、CPU201に対する割込み要求信号220を発生する機能を有する。時間間隔等の設定は、第1バス218を介してCPU201によって行われる。
【0107】
DRAMリフレッシュ制御回路211は、一定期間毎に第1バス218の使用権を無条件に獲得し、DRAMのリフレッシュ動作を行う。なお、DRAMリフレッシュ制御回路211は、内部メモリ207がDRAMを含む場合に設けられる。
【0108】
PLL回路214は、水晶振動子216より得られる正弦波信号を逓倍した高周波クロック信号を生成する。
【0109】
クロックドライバ213は、PLL回路214より受け取った高周波クロック信号を、各ブロックへクロック信号225を供給するのに十分な信号強度へ増幅する。
【0110】
低電圧検出回路215は、電源電圧Vccを監視し、電源電圧Vccが一定電圧以下のときに、PLL回路214のリセット信号226、その他のシステム全体のリセット信号227を発行する。また、内部メモリ207がSRAMで構成されており、かつ、SRAMのバッテリ217によるデータ保持が要求される場合、電源電圧Vccが一定電圧以下のときに、バッテリバックアップ制御信号224を発行する機能を有する。
【0111】
外部メモリインタフェース回路212は、第2バス219をバス67に接続するための機能を有する。
【0112】
ここで、図9〜図11を参照して、イメージセンサ43から高速プロセッサ200へピクセルデータを取り込むための構成を詳細に説明する。
【0113】
図9は、図7のイメージセンサ43から高速プロセッサ200へピクセルデータを取り込む構成及びLED駆動回路を示す回路図である。図10は、図7のイメージセンサ43から高速プロセッサ200へピクセルデータを取り込む際の動作を示すタイミング図である。図11は、図10の一部を拡大して示すタイミング図である。
【0114】
図9に示すように、イメージセンサ43は、ピクセルデータD(X,Y)をアナログ信号として出力するタイプのものであるため、このピクセルデータD(X,Y)は高速プロセッサ200のアナログ入力ポートに入力される。アナログ入力ポートは、この高速プロセッサ200においてADC208に接続され、したがって、高速プロセッサ200は、ADC208からデジタルデータに変換されたピクセルデータをその内部に取得する。
【0115】
上述のアナログピクセルデータD(X,Y)の中点は、イメージセンサ43の基準電圧端子Vrefに与えられる基準電圧によって決定される。そのため、イメージセンサ43に関連して例えば低抗分圧回路からなる基準電圧発生回路81が設けられ、この回路81から基準電圧端子Vrefに常に一定の大きさの基準電圧が与えられる。
【0116】
イメージセンサ43を制御するための各デジタル信号は、高速プロセッサ200のI/Oポートに与えられ、またはそこから出力される。このI/Oポートは各々入力/出力の制御が可能なデジタルポートであり、この高速プロセッサ200で入出力制御回路209に接続されている。
【0117】
詳しく言うと、高速プロセッサ200の出力ポートからはイメージセンサ43をリセットするためのリセット信号resetが出力され、イメージセンサ43に与えられる。また、イメージセンサ43からは、ピクセルデータストローブ信号PDSおよびフレームステータスフラグ信号FSFが出力され、それらの信号が高速プロセッサ200の入力ポートに与えられる。
【0118】
ピクセルデータストローブ信号PDSは上述の各ピクセルデータD(X,Y)を読み込むための図10(b)に示すようなストローブ信号である。フレームステータスフラグ信号FSFはイメージセンサ43の状態を示すフラグ信号で、図10(a)に示すように、このイメージセンサ43の露光期間を規定する。つまり、フレームステータスフラグ信号FSFの図10(a)に示すローレベルが露光期間を示し、図10(a)に示すハイレベルが非露光期間を示す。
【0119】
また、高速プロセッサ200は、イメージセンサ43の制御レジスタ(図示せず)に設定するコマンド(またはコマンド+データ)をレジスタデータとしてI/Oポートから出力するとともに、たとえばハイレベルおよびローレベルを繰り返すレジスタ設定クロックCLKを出力し、それらをイメージセンサ43に与える。
【0120】
なお、赤外発光ダイオードとして、図9に示すように互いに並列接続された4つの赤外発光ダイオード7a,7b,7cおよび7dを用いる。この4つの赤外発光ダイオード7a〜7dは、上で説明したように、剣3を照らすように、イメージセンサ43の視点方向と同一方向に赤外光を照射するようにかつイメージセンサ43を囲むように配置される。ただし、これら個別の赤外発光ダイオード7a〜7dは、特に区別する必要がある場合を除いて、単に赤外発光ダイオード7と呼ばれる。
【0121】
この赤外発光ダイオード7はLED駆動回路82によって、点灯されまたは消灯(非点灯)される。LED駆動回路82は、イメージセンサ43から上述のフレームステータスフラグ信号FSFを受け、このフラグ信号FSFは、抵抗83およびコンデンサ84からなる微分回路85を通してPNPトランジスタ86のベースに与えられる。このPNPトランジスタ86にはさらにプルアップ抵抗87が接続されていて、このPNPトランジスタ86のベースは、通常は、ハイレベルにプルアップされている。そして、フレームステータス信号FSFがローレベルになると、そのローレベルが微分回路85を経てベースに入力されるため、PNPトランジスタ86は、フラグ信号FSFがローレベル期間にのみオンする。
【0122】
PNPトランジスタ86のエミッタは抵抗88および89を介して接地される。そして、エミッタ抵抗88および89の接続点がNPNトランジスタ31のベースに接続される。このNPNトランジスタ31のコレクタが各赤外発光ダイオード7a〜7dのアノードに共通に接続される。NPNトランジスタ31のエミッタが別のNPNトランジスタ33のベースに直接接続される。NPNトランジスタ33のコレクタが各赤外発光ダイオード7a〜7dのカソードに共通接続され、エミッタが接地される。
【0123】
このLED駆動回路82では、高速プロセッサ200のI/Oポートから出力されるLEDコントロール信号LEDCがアクティブ(ハイレベル)でありかつイメージセンサ43からのフレームステータスフラグ信号FSFがローレベルである期間にのみ赤外発光ダイオード7が点灯される。
【0124】
図10(a)に示すようにフレームステータスフラグ信号FSFがローレベルになると、そのローレベル期間中(実際には微分回路85の時定数での遅れがあるが)、PNPトランジスタ86がオンする。したがって、図10(d)に示すLEDコントロール信号LEDCが高速プロセッサ200からハイレベルで出力されると、NPNトランジスタ31のベースがハイベルとなり、このトランジスタ31がオンとなる。トランジスタ31がオンするとトランジスタ33はオンとなる。したがって、電源(図9では小さい白丸で示す)から各赤外発光ダイオード7a〜7dおよびトランジスタ33を経て電流が流れ、応じて図10(e)に示すように各赤外発光ダイオード7a〜7dが点灯される。
【0125】
LED駆動回路82では、このように、図10(d)のLEDコントロール信号LEDCがアクティブでありかつ図10(a)のフレームステータスフラグ信号FSFがローレベルである期間にのみ赤外発光ダイオード7が点灯されるので、イメージセンサ43の露光期間(図10(f)参照)にのみ赤外発光ダイオード7が点灯されることになる。
【0126】
したがって、無駄な電力消費を抑制することができる。さらに、フレームステータスフラグ信号FSFはコンデンサ84によってカップリングされているので、万一イメージセンサ43の暴走等によりそのフラグ信号FSFがローレベルのまま停止した場合でも、一定時間後にはトランジスタ86は必ずオフされ、赤外発光ダイオード7も一定時間後には必ずオフされる。
【0127】
このように、フレームステータス信号FSFの持続期間を変更することによって、イメージセンサ43の露光時間を任意にかつ自在に設定または変更することができる。
【0128】
さらに、フレームステータス信号FSFおよびLEDコントロール信号LEDCの持続時間や周期を変更することによって、赤外発光ダイオード7すなわちストロボスコープの発光期間、非発光期間、発光/非発光周期などを任意にかつ自在に変更または設定できる。
【0129】
先に説明したように、赤外発光ダイオード7からの赤外光によって剣3が照射されると、剣3からの反射光によってイメージセンサ43が露光される。応じて、イメージセンサ43から上述のピクセルデータD(X,Y)が出力される。詳しく説明すると、イメージセンサ43は、上述の図10(a)のフレームステータスフラグ信号FSFがハイレベルの期間(赤外発光ダイオード7の非点灯期間)に図10(b)に示すピクセルデータストローブPDSに同期して、図10(c)に示すようにアナログのピクセルデータD(X,Y)を出力する。
【0130】
高速プロセッサ200では、そのフレームステータスフラグ信号FSFとピクセルデータストローブPDSとを監視しながら、ADC208を通じて、デジタルのピクセルデータを取得する。
【0131】
ただし、ピクセルデータは、図11(c)に示すように、第0行,第1行,…第31行と行順次に出力される。ただし、後に説明するように、各行の先頭の1ピクセルはダミーデータとなる。ここで、イメージセンサ43の水平方向(横方向、行方向)をX軸とし、垂直方向(縦方向、列方向)をY軸として、原点を左上の角とする。
【0132】
さて、次に、情報処理装置1によるゲーム処理について、具体例を挙げながら説明する。
【0133】
図12は、図1のテレビジョンモニタ90のスクリーン91に表示される選択画面の例示図である。オペレータ94が、情報処理装置1の背面に設けられた電源スイッチ(図示せず)をオンにすると、例えば、図12に示すような選択画面が表示される。本実施の形態では、選択できる項目の1例として、「ストーリーモードA」〜「ストーリーモードE」(包括的に表すときは、「ストーリーモード」と表記する。)、「対戦モード」、及び、「スイング補正モード」、を挙げている。
【0134】
選択画面には、剣型のカーソル101、左移動指示オブジェクト103、右移動指示オブジェクト105、選択枠107、及び、項目オブジェクト109、が表示される。オペレータ94が、剣3を動かすと、その動きに応じて、画面上のカーソル101が移動する。このカーソル101を、左移動指示オブジェクト103に重ねると、項目オブジェクト109が、左方向に移動する。同様に、このカーソル101を、右移動指示オブジェクト105に重ねると、項目オブジェクト109が、右方向に移動する。
【0135】
このように、オペレータ94は、剣3によりカーソル101を操作して、選択したい項目オブジェクト109を、選択枠107内に静止させる。オペレータ94が、剣3を一定速度以上の大きさで振り下ろすと、選択が確定する。すると、情報処理装置1は、選択が確定した項目オブジェクト109に対応した処理を実行する。以下、オペレータ94が選択可能な各項目での処理について、図面を用いて説明する。
【0136】
図13〜図18(a)(b)は、図12の選択画面で「ストーリーモード」の項目オブジェクト109が選択されたときのゲーム画面の例示図である。ストーリーモードでは、スクリーン91には、図13示すようなゲーム画面が表示され、オペレータ94が1人で行うゲーム処理が実行される。このゲーム画面には、ゲームストーリに沿って、敵オブジェクト115が表示される。
【0137】
また、オペレータ94が剣3を横方向(水平方向)に振ると、剣3を振ったことがトリガとなって、ゲーム画面には、図14に示すような横方向の剣軌跡オブジェクト117が出現する。剣軌跡オブジェクト117は、剣3の実空間での移動軌跡(斬り跡)を表現するオブジェクトである。従って、図示は省略しているが、剣3が斜めに振られると、斜め方向に、剣軌跡オブジェクト117が出現し、剣3が縦方向(垂直方向)に振られると、縦方向に、剣軌跡オブジェクト117が出現する。
【0138】
このような剣軌跡オブジェクト117を出現させるには、オペレータ94は、剣3の刀身部15の縁を撮像手段5に向けて、一定以上の速度で振る必要がある。つまり、オペレータ94が、このように剣3を振ると、剣3の半円柱状部材21の反射シート23が、撮像手段5により撮像され、その処理結果を基に剣軌跡オブジェクト117のトリガが発生する。
【0139】
さて、オペレータ94が剣3を振ったときに出現する剣軌跡オブジェクト117の一部が、敵オブジェクト115を含む所定範囲内に存在する場合は、図15に示すように、エフェクト119が与えられた敵オブジェクト121が表示される。こうすることで、オペレータ94は、剣軌跡オブジェクト117が敵オブジェクト115にヒットしたことを判断できる。敵オブジェクト115への連続したヒット回数が所定値を超えると、強さ情報が更新され、強さがアップする。強さ情報には、例えば、生命力を表現するライフ情報、及び、使用できる特殊技の数を表現するポイント情報、等が含まれる。このような強さ情報は、例えば、対戦モードを実行するときのために、メモリカートリッジ13に格納される。
【0140】
また、オペレータ94が、剣3の刀身部15の側面を撮像手段5に向けると、図16に示すように、盾オブジェクト123が出現する。つまり、剣3の刀身部15の側面を撮像手段5に向けると、刀身部15の側面に取り付けられた反射シート17が撮像手段5により撮影され、その処理結果を基に盾オブジェクト123のトリガが発生する。
【0141】
この盾オブジェクト123は、剣3の刀身部15の側面を撮像手段5に向けて動かすと、その動きに沿って画面上を移動する。従って、剣3を操作して、盾オブジェクト123を動かすことで、敵オブジェクト125の攻撃(図16の例では、炎オブジェクト127)を防御できる。つまり、オペレータ94が、剣3を動かして、盾オブジェクト123を移動させ、敵オブジェクト125からの炎オブジェクト127にタイミングよく盾オブジェクト123を重ねることができれば、炎オブジェクト127は消滅し、敵オブジェクト125の攻撃を防御できる。
【0142】
さて、ストーリーモードでは、図17に示すような、説明オブジェクト129が、スクリーン91に表示される場合がある。この場合、オペレータ94は、説明オブジェクト129の指示に従って、剣3を操作して、ゲームを進める。図17の例では、オペレータ94が剣3を振ると、その時表示されていた説明オブジェクト129が消滅して、次の説明オブジェクトがスクリーン91に表示される。つまり、オペレータ94が、剣3の刀身部15の縁を撮像手段5に向けて振ると、剣3の半円柱状部材21の反射シート23が、撮像手段5により撮影され、その処理結果を基に、説明オブジェクト129を次の説明オブジェクトに進めるためのトリガが発生する。
【0143】
また、ストーリーモードでは、図18(a)に示すような説明オブジェクト132が表示される場合もある。この場合、オペレータ94が、剣3の刃先部を撮像手段5に向けると、図18(b)に示すように、オペレータ94が実空間を前進したような画面が表示される。つまり、オペレータ94が、剣3の刃先を撮像手段5に向けると、静止した剣3の半円柱状部材21の反射シート23が、撮像手段5により撮影され、その処理結果を基に、画面(背景画像)を次に進めるためのトリガが発生する。
【0144】
さて次に、対戦モードについて説明する。対戦モードでは、情報処理装置1が、2人のオペレータ94のそれぞれのメモリカートリッジ13に格納された強さ情報を読み取り、その強さ情報を前提にして、対戦ゲームが実行される。メモリカートリッジ13に格納されている強さ情報は、2人のオペレータ94のそれぞれが、ストーリーモードによるゲームで取得した強さ情報である。情報処理装置1は、2人のオペレータ94のそれぞれの強さ情報を読み取ると、次のようなゲーム画面を表示する。
【0145】
図19は、図12の選択画面で「対戦モード」の項目オブジェクト109が選択されたときのゲーム画面の例示図である。図19に示すように、対戦モードのゲーム画面には、生命力を表現するライフ情報131a,131b、使用できる特殊技の数を表現するポイント情報141a,141b、対戦オブジェクト133a,133b、及び、コマンド選択部135a,135b、が表示される。コマンド選択部135a,135bには、選択枠137a,137b及びコマンドオブジェクト139a,139bが表示される。
【0146】
ライフ情報131a,131bは、それぞれ、各オペレータ94のメモリカートリッジ13から取得したライフ情報である。図19の例では、残りライフを棒グラフで表現している。ポイント情報141a,141bは、それぞれ、各オペレータ94のメモリカートリッジ13から取得したポイント情報である。
【0147】
2人のオペレータ94のいずれかが、剣3を振ると、コマンド選択部135a,135bのコマンドオブジェクト139a,139bが、左方向へ回転する。そして、一方のオペレータ94が、自分の剣3を振って、コマンド選択部135aで回転しているコマンドオブジェクト139aを静止させる。同様に、他方のオペレータ94が、自分の剣3を振って、コマンド選択部135bで回転しているコマンドオブジェクト139bを静止させる。
【0148】
そして、選択枠137a,137b内で静止したコマンドオブジェクト139a,139bに従って対戦処理が実行される。図19の例では、対戦オブジェクト133aは、「無防備」の状態となり、対戦オブジェクト133bから、「攻撃C」を受ける。すると、対戦オブジェクト133aのライフ情報131aが減少する。このように、オペレータ94のそれぞれが静止させたコマンドオブジェクト139a,139bに従って、対戦が行われる。
【0149】
攻撃のコマンド139a,139bの強さは、A、B、Cの順となっている。同様に、防御のコマンド139a,139bの強さも、A、B、Cの順となっている。
【0150】
強さに差がある攻撃のコマンドが選択された場合、弱いコマンドを選択したほうがダメージを受け、強さの差に応じてライフ情報が減少する。また、強さが同じ攻撃のコマンドが選択された場合、鍔迫り合いとなる。このときは、所定時間内に、より多く剣3を振ったオペレータの対戦オブジェクトが、振りの少ないオペレータの対戦オブジェクトにダメージを与えることができ、ライフを減少させることができる。
【0151】
強い攻撃のコマンド及び弱い防御のコマンドが選択された場合、弱い防御のコマンドを選択したほうがダメージを受け、強さの差に応じてライフ情報が減少する。弱い攻撃のコマンド及び強い防御のコマンドが選択された場合、防御側はダメージを受けない。強さが同じ攻撃のコマンド及び防御のコマンドが選択された場合は、両者ダメージを受けない。
【0152】
ポイント情報141a,141bは、特殊技を使用したら減少する。特殊技は、特殊技のコマンドオブジェクト139a,139bを静止させたときに実行される。
【0153】
さて、次に、情報処理装置1によるゲーム処理の詳細を説明する。
【0154】
図20は、図7のROM65に格納されたプログラム及びデータを示す概念図である。図20に示すように、ROM65には、制御プログラム102、画像データ103、及び、音声データ105、が格納される。これらのプログラム及びデータの内容は以下の説明の中で明らかになる。
【0155】
図8のCPU201は、イメージセンサ43が出力したアナログのピクセルデータを変換したデジタルのピクセルデータを取得して、配列P[X][Y]に代入する。なお、上記のように、イメージセンサ43の水平方向(横方向、行方向)をX軸、垂直方向(縦方向、列方向)をY軸としている。
【0156】
そして、CPU201は、赤外発光ダイオード7の点灯時のピクセルデータP[X][Y]と、消灯時のピクセルデータP[X][Y]と、の差分を算出して、差分データを配列Dif[X][Y]に代入する。ここで、図面を用いて、差分を求める効果を説明する。ここで、ピクセルデータは輝度を表す。よって、差分データも輝度を表す。
【0157】
図21(a)は、一般的なイメージセンサにより撮影された、特別な処理を施さない画像の例示図、図21(b)は、図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(c)は、赤外フィルタ9を介したイメージセンサ43の点灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(d)は、赤外フィルタ9を介したイメージセンサ43の消灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(e)は、点灯時の画像信号と消灯時の画像信号との差分信号の例示図、である。
【0158】
上記のように、剣3に赤外光を照射し、赤外フィルタ9を介してイメージセンサ43に入射した反射赤外光による画像を撮影している。一般的な室内環境で一般的な光源を用いて剣3をストロボスコープ撮影した場合には、一般的なイメージセンサ(図6のイメージセンサ43に相当する。)には、図21(a)に示すように、剣3による画像以外に、蛍光灯光源、白熱灯光源、太陽光(窓)のような光源だけでなく、室内のすべてのものの画像がすべて写り込む。したがって、この図21(a)の画像を処理して剣3の画像のみを抽出するのは、かなり高速のコンピュータまたはプロセサが必要である。しかしながら、安価が条件の装置ではそのような高性能コンピュータを使えない。そこで種々の処理を行って負担を軽減することが考えられる。
【0159】
なお、図21(a)の画像は、本来ならば、白黒の階調により表される画像であるが、その図示を省略している。また、図21(a)〜図21(e)は、剣3の刀身部15の縁をイメージセンサに向けた場合の画像であるため、反射シート17ではなく、反射シート23が撮影されている。なお、2つの反射シート23の距離が近いため、通常、2つの反射シート23は、1点として撮影される。
【0160】
さて、図21(b)は、図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号である。このようなレベル弁別処理は専用のハードウェア回路でも、ソフトウェア的にでも、実行することができるが、いずれの方法によっても、一定以下の光量のピクセルデータをカットするレベル弁別を実行すると、剣3や光源以外の低輝度画像を除去することができる。この図21(b)の画像では剣3および室内の光源以外の画像の処理を省略でき、したがって、コンピュータの負担を軽減できるが、それでも、光源画像を含む高輝度画像が依然として写り込んでいるので、剣3と他の光源を分別することは難しい。
【0161】
そこで、図6に示したように赤外フィルタ9を利用して、イメージセンサ43に赤外光による画像以外の画像が写らないようにした。それによって、図21(c)に示すように、赤外光を殆ど含まない蛍光灯光源の画像は除去できる。しかしながら、それでもなお太陽光や白熱灯が画像信号中に含まれてしまう。したがって、更なる負担軽減のために、赤外ストロボスコープの点灯時のピクセルデータと消灯時のピクセルデータとの差分を計算することとした。
【0162】
そのため、図21(c)の点灯時の画像信号のピクセルデータと、図21(d)の消灯時の画像信号のピクセルデータとの差分を計算した。すると、図21(e)に示すように、その差分だけの画像が取得できる。この差分データによる画像は、図21(a)と対比すれば明らかなように、剣3によって得られる画像のみを含むことになる。したがって、処理の軽減を図りながらも、剣3の状態情報を取得できる。状態情報とは、例えば、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、等である。
【0163】
以上のような理由で、CPU201は、赤外発光ダイオード7の点灯時のピクセルデータと、消灯時のピクセルデータと、の差分を算出して、差分データを得る。
【0164】
CPU201は算出した差分データDif[X][Y]を基に、剣3の反射面(反射シート17,23)を検出する。具体的には次の通りである。
【0165】
イメージセンサ43は、上記のように、例えば、32ピクセル×32ピクセルからなる。CPU201は、X方向に32ピクセル分の差分データをスキャンし、そして、Y座標をインクリメントし、X方向に32ピクセル分の差分データをスキャンし、そして、Y座標をインクリメントし、というように、Y座標をインクリメントしながら、X方向に32ピクセル分の差分データをスキャンして、所定の閾値Thより大きい差分データを持つピクセル数をカウントしていく。所定の閾値Thより大きい差分データを持つピクセルが存在する場合は、反射シート17又は反射シート23が検出されたと判断される。
【0166】
そして、CPU201は、所定の閾値Thを超えた差分データから最大値を求める。最大の差分データを持つピクセルを剣3の注目点とする。従って、注目点のX座標及びY座標は、最大の差分データを持つピクセルのX座標及びY座標である。さらに、CPU201は、イメージセンサ43上(イメージセンサ43によるイメージ上)のX座標及びY座標を、スクリーン91上(表示画面上)のx座標及びy座標に変換して、x座標及びy座標をそれぞれ配列Px[M]及びPy[M]に代入する。スクリーン91には、グラフィックプロセッサ202が生成した横256画素×縦224画素の画像が表示される。従って、スクリーン91上の位置(x,y)は、スクリーン91の中心を原点(0,0)として、画素の位置で示される。なお、「M」は整数であり、M回目に撮影されたことを意味する。以上のようにして、CPU201は、剣3の注目点を抽出する。
【0167】
CPU201は、抽出した前回と今回の注目点の座標に基づいて、剣3がスイングされたか否かを判断する。詳細は次の通りである。
【0168】
CPU201は、現在の注目点(M)の座標(Px[M],Py[M])と、前回の注目点(M−1)の座標(Px[M−1],Py[M−1])と、を用いて、次式により、剣3の注目点(M)の速度ベクトル(Vx[M],Vy[M])を求める。
【0169】
Vx[M]=Px[M]−Px[M−1] …(1)
Vy[M]=Py[M]−Py[M−1] …(2)
そして、CPU201は、次式により、剣3の注目点(M)の速さV[M]を求める。
【0170】
V[M]=√(Vx[M]2+Vy[M]2) …(3)
CPU201は、注目点(M)の速さV[M]と、所定の閾値ThVと、を比較して、速さV[M]が大きい場合は、剣3が振られたと判断して、スイングフラグをオンにする。
【0171】
CPU201は、剣3のスイング方向を検出する。詳細は次の通りである。
【0172】
図22は、図8のCPU201が剣3のスイング方向を検出する際の説明図である。図22に示すように、スクリーン91の中心を原点とし、256画素×256画素の仮想平面を想定する。仮想平面上の座標は、スクリーン91上の座標と一致する。この仮想平面の範囲外に、仮想の注目点(0)を設定し、この注目点の座標を、(Px[0],Py[0])とする。
【0173】
注目点(1)の速さV[1]が所定の閾値ThVを超えたとする。そして、注目点(2)の速さV[2]及び注目点(3)の速さV[3]も引き続き、所定の閾値ThVをこえており、注目点[4]の速さV[4]が所定の閾値ThV以下になったとする。
【0174】
CPU201は、所定の閾値ThVを最初に超えた注目点(1)の座標(Px[1],Py[1])と、最初に所定の閾値ThV以下になった注目点(4)の座標(Px[4],Py[4])と、に基づいて、剣3のスイング方向を検出する。具体的には、次の通りである。なお、速さが所定の閾値ThVを最初に超えた注目点(S)のx座標及びy座標をそれぞれPx[S]及びPy[S]とし、速さが最初に所定の閾値ThV以下になった注目点(E)のx座標及びy座標をそれぞれPx[E]及びPy[E]とする。
【0175】
CPU201は、次式により、これら2点間の距離を求める。
【0176】
Lx=Px[E]−Px[S] …(4)
Ly=Py[E]−Py[S] …(5)
そして、距離Lx,Lyを、所定の閾値ThVを超えた注目点の数「n」で除算する。図22の例では、n=3である。
【0177】
LxA=Lx/n …(6)
LyA=Ly/n …(7)
なお、CPU201は、所定の閾値ThVを最初に超えた注目点(S)から、イメージセンサ43の撮影範囲内の注目点(図22の例では注目点(4))まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合は、イメージセンサ43の撮影範囲外になる直前に抽出された注目点(図22の例では注目点(4))を注目点(E)として、この注目点(E)と所定の閾値ThVを最初に超えた注目点(S)と、を基に、式(4)〜式(7)の計算を実行する。なお、この場合、n=n−1となる。
【0178】
次に、CPU201は、x方向のスイング長の平均値LxAの絶対値と所定値xrとの間で大小を判断する。また、CPU201は、y方向のスイング長の平均値LyAの絶対値と所定値yrとの間で大小を判断する。その判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより大きく、平均値LyAの絶対値が所定値yrより小さい場合は、剣3が横方向(水平方向)に振られたと判断して、角度フラグを対応する値にセットする。
【0179】
また、判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより小さく、平均値LyAの絶対値が所定値yrより大きい場合は、剣3が縦方向(垂直方向)に振られたと判断して、角度フラグを対応する値にセットする。また、判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより大きく、平均値LyAの絶対値が所定値yrより大きい場合は、剣3が斜め方向に振られたと判断して、角度フラグを対応する値にセットする。
【0180】
さらに、CPU201は、平均値LxAの符号を判断して、x方向フラグを対応する値にセットする。また、CPU201は、平均値LyAの符号を判断して、y方向フラグを対応する値にセットする。なお、x方向フラグ及びy方向フラグを包括して表現するときは、単に方向フラグと呼ぶ。
【0181】
CPU201は、角度フラグ、x方向フラグ、及び、y方向フラグ、にセットされている値に従って、剣3のスイング情報を決定する。剣3のスイング情報は、剣3のスイング方向を表す情報である。このスイング情報により、剣軌跡ブジェクト117の種類が決定される。この点の詳細を説明する。
【0182】
図23(a)は、角度フラグの値と角度との関係図、図23(b)は、方向フラグの値と方向を表す符号との関係図、図23(c)は、角度フラグ及び方向フラグと、スイング情報と、の関係図、である。上記のように、CPU201は、平均値LxA及び平均値LyAの絶対値と、所定値xr及び所定値yrと、の間で大小を判断して、図23(a)に示すように、角度フラグをセットする。
【0183】
また、上記のように、CPU201は、平均値LxA及び平均値LyAの符号を判断して、図23(b)に示すように、x方向フラグ及びy方向フラグをセットする。
【0184】
さらに、図23(c)に示すように、CPU201は、角度フラグ、x方向フラグ、及び、y方向フラグ、にセットされている値から、剣3のスイング情報を決定する。
【0185】
図24は、図23(c)のスイング情報と、剣3の操作方向と、の関係図である。図23及び図24に示すように、スイング情報A0は、剣3が、横方向に、かつ、x軸の正方向(右方向)に操作されたことを意味する。スイング情報A1は、剣3が、横方向に、かつ、x軸の負方向(左方向)に操作されたことを意味する。スイング情報A2は、剣3が、縦方向に、かつ、y軸の正方向(上方向)に操作されたことを意味する。スイング情報A3は、剣3が、縦方向に、かつ、y軸の負方向(下方向)に操作されたことを意味する。スイング情報A4は、剣3が、右上斜め方向に操作されたことを意味する。スイング情報A5は、剣3が、右下斜め方向に操作されたことを意味する。スイング情報A6は、剣3が、左上斜め方向に操作されたことを意味する。スイング情報A7は、剣3が、左下斜め方向に操作されたことを意味する。
【0186】
CPU201は、上記のようにして取得したスイング情報A0〜A7に関連付けられたアニメーションテーブル格納位置情報を登録する(剣軌跡登録:トリガ発生を意味)。アニメーションテーブル格納位置情報は、アニメーションテーブルの格納位置を示す情報である。また、この場合のアニメーションテーブルには、剣軌跡オブジェクト117をアニメーションするための様々な情報が含まれている。
【0187】
なお、注目点の速さ情報が、所定の閾値ThVを超えてから、所定の閾値ThV以下になるまでの、注目点の数が3以上の場合に、上記のアニメーションテーブル絡納位置情報の登録が行われ、3より小さい場合は、登録は行われない。つまり、注目点の数が、2点以下の場合は、上記登録は行われない。また、所定の閾値ThVを最初に超えた注目点から、イメージセンサ43の撮影範囲内の注目点まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合も同様に、注目点の数が3以上の場合に、上記のアニメーションテーブル格納位置情報の登録が行われ、3より小さい場合は、登録は行われない。
【0188】
図25は、スイング情報A0〜A7とアニメーションテーブル格納位置情報との関係図である。図25では、例えば、スイング情報A0,A1とアニメーションテーブル格納位置情報address0とが関連付けられている。ここで、アニメーションテーブル格納位置情報は、アニメーションテーブルが格納されている領域の先頭アドレス情報である。
【0189】
図26は、剣軌跡オブジェクト117をアニメーションするためのアニメーションテーブルの例示図である。図26に示すように、アニメーションテーブルは、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。画像格納位置情報は、画像データの格納位置を示す情報である。この画像データは、アニメーションを行うためのものであるため、コマごとのオブジェクト画像データからなる。なお、画像格納位置情報は、最初のコマのオブジェクト画像データが格納されている領域の先頭アドレス情報である。コマ指定情報は、何コマ目のオブジェクト画像データであるかを示す情報である。持続フレーム数情報は、コマ指定情報が指定するコマのオブジェクト画像データを、何フレーム継続して表示するかを示す情報である。サイズ情報は、オブジェクト画像データのサイズを示す情報である。
【0190】
ここで、図26のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションを行うためのものである。従って、例えば、スイング情報A0,A1は、剣3が横方向に振られたことを示す情報であるため、アニメーションテーブル格納位置情報address0が示すアニメーションテーブルの画像格納位置情報a0は、横方向の剣軌跡を表す剣軌跡オブジェクト117の格納位置を示す。
【0191】
図27(a)〜図27(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの例示図である。図27(a)〜図27(m)のそれぞれが、コマに相当する。図27(a)〜図27(m)に示すように、最初は幅wの狭い帯状の画像(剣軌跡オブジェクト117)が、コマ(時間t)が進むに従って、幅wが広くなり、さらに、コマが進むに従って、幅wが小さくなる。この例は、スイング情報A0,A1に対応する図26の画像格納位置情報a0が示す位置に格納された画像データの1例である。なお、画像格納位置情報a0は、図27(a)のオブジェクト画像データの先頭アドレスを示す。
【0192】
ここで、スプライト及び背景について簡単に説明する。剣軌跡オブジェクト117や盾オブジェクト123等のオブジェクトは、単数又は複数のスプライトから構成される。プライトは、スクリーン91のいずれの位置にでも配置可能な1つの矩形の画素集合(例えば、16画素×16画素)からなる。一方、背景は、矩形の画素集合(例えば、16画素×16画素)の二次元配列からなり、スクリーン91全体を覆う大きさを持つ(例えば、横256画素×縦256画素)。スプライトや背景を構成する矩形の画素集合を、キャラクタと呼ぶ。
【0193】
図27(a)のオブジェクト画像データを構成する各スプライトの格納位置情報(先頭アドレス)は、剣軌跡オブジェクト117の格納位置情報a0とスプライトのサイズとから算出される。また、図27(b)〜図27(m)の各オブジェクト画像データの格納位置情報(先頭アドレス)は、画像格納位置情報a0並びにアニメーションテーブルのコマ指定情報及びサイズ情報から算出される。オブジェクト画像データの各々を構成する各スプライトの格納位置情報(先頭アドレス)は、各オブジェクト画像データの格納位置情報とスプライトのサイズとから算出される。ただし、オブジェクト画像データや各スプライトの格納位置情報を計算で求めるのではなく、アニメーションテーブルに予め持っていてもよい。
【0194】
なお、図27(a)〜図27(m)において、黒く塗りつぶした部分は、透明であることを意味する。また、ハッチングの種類の違いは、色の違いを示している。さらに、この例では、1コマを1フレームだけ表示するため、13コマを13フレームで表示する。なお、フレームの更新は、例えば、1/60秒ごとに行われる。以上のように、コマ(時間t)の進行とともに、剣軌跡オブジェクト117の幅wを、小→大→小、と変化させることで、剣3が振られたことに応じて、鋭い閃光が走ったような剣軌跡の表現が可能となる。
【0195】
図28(a)〜図28(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの他の例示図である。図28(a)〜図28(m)に示すように、最初は幅wの広い帯状の画像(剣軌跡オブジェクト117)が、コマ(時間t)が進むに従って、幅wが狭くなる。また、最初は短い剣軌跡オブジェクト117であるが、コマが進むに従って、長くなり、そして、一定長さになっている。なお、この例は、スイング情報A1に対応する剣軌跡オブジェクト117のアニメーションのためのオブジェクト画像データの1例である。従って、剣軌跡画像は、剣3が移動する方向(図24参照)に対応して右側から出現している。ここで、スイング情報がA0の場合は、図28(a)〜図28(m)のオブジェクト画像データの方向が逆になる。つまり、図28(a)〜図28(d)においては、剣軌跡画像が左側から出現する。同様に、他のスイング情報A2〜A7に対応するオブジェクト画像データにおいても、剣3が移動する方向(図24参照)に対応した方向から剣軌跡画像が出現する。
【0196】
図29(a)〜図29(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの他の例示図である。図29(f)〜図29(m)に示すように、幅wの画像(白で表記)に、残像(ハッチングで表記)を付加することもできる。なお、この例は、スイング情報A1に対応する剣軌跡オブジェクト117のアニメーションのためのオブジェクト画像データの1例である。従って、剣軌跡画像は、剣3が移動する方向(図24参照)に対応して右側から出現している。ここで、スイング情報がA0の場合は、図29(a)〜図29(m)のオブジェクト画像データの方向が逆になる。つまり、図29(a)〜図29(d)においては、剣軌跡画像が左側から出現する。同様に、他のスイング情報A2〜A7に対応するオブジェクト画像データにおいても、剣3が移動する方向(図24参照)に対応した方向から剣軌跡画像が出現する。
【0197】
なお、図27〜図29において、剣軌跡画像を白色で表している部分が存在するが、実際には、所望の色(白色含む。)が付される。
【0198】
さて、CPU201は、剣軌跡オブジェクト117のスクリーン91上の座標を算出する。まず、スイング情報が「A0」又は「A1」の例を挙げる。従って、CPU201は、速さが所定の閾値ThVを最初に超えた注目点(S)のy座標(Py[S])と、速さが最初に所定の閾値ThV以下になった注目点(E)のy座標(Py[E])と、を用いて、剣軌跡オブジェクト117の中心のy座標(yt)を決定する。つまり、次式の通りである。
【0199】
yt=(Py[S]+Py[E])/2 …(8)
一方、剣軌跡オブジェクト117の中心のx座標(xt)は、次式のようになる。
【0200】
xt=0 …(9)
こうすれば、剣軌跡オブジェクト117が出現する縦方向(垂直方向)位置は、オペレータ94による剣3の操作に応じたものとなる。一方、この例では、スイング情報が「A0」又は「A1」であるため、すなわち、剣3が横方向に振られているため、剣軌跡オブジェクト117の中心のx座標(xt)は、画面の中心のx座標、即ち、「0」とすることが適切である。
【0201】
次に、スイング情報が「A2」あるいは「A3」の場合、つまり、剣3が縦方向に振られた場合、を説明する。この場合、速さが所定の閾値ThVを最初に超えた注目点(S)のx座標をPx[S]とし、速さが最初に所定の閾値ThV以下になった注目点(E)のx座標をPx[E]とする。そうすると、剣軌跡オブジェクト117の中心の座標(xt,yt)は、次式のようになる。
【0202】
xt=(Px[S]+Px[E])/2 …(10)
yt=0 …(11)
こうすれば、剣軌跡オブジェクト117が出現する横方向(水平方向)の位置は、オペレータ94による剣3の操作に応じたものとなる。一方、この例では、スイング情報が「A2」又は「A3」であるため、すなわち、剣3が縦方向に振られているため、剣軌跡オブジェクト117の中心のy座標(yt)は、画面の中心のy座標、即ち、「0」とすることが適切である。
【0203】
次に、スイング情報が「A4」あるいは「A7」の場合、つまり、剣3が斜め右上方向あるいは斜め左下方向に振られた場合、を説明する。この場合、CPU201は、剣軌跡オブジェクト117の中心座標算出のため、次式により、仮の座標(xs,ys)を求める。
【0204】
xs=(Px[S]+Px[E])/2 …(12)
ys=(Py[S]+Py[E])/2 …(13)
そして、CPU201は、座標(xs,ys)を通る直線と、スクリーン91の右下がりの対角線と、の交点座標(xI,yI)を求める。この場合の、座標(xs,ys)を通る直線は、スクリーン91の右上がりの対角線と平行な直線である。なお、厳密な交点座標(xI,yI)を求める必要は必ずしもない。こうして求めた交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0205】
スイング情報が「A5」あるいは「A6」の場合、つまり、剣3が斜め右下方向あるいは斜め左上方向に振られた場合、CPU201は、仮の座標(xs,ys)を通る直線と、スクリーン91の右上がりの対角線と、の交点座標(xI,yI)を求める。この場合の、座標(xs,ys)を通る直線は、画面の右下がりの対角線と平行な直線である。なお、厳密な交点座標(xI,yI)を求める必要は必ずしもない。こうして求めた交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0206】
なお、CPU201は、所定の閾値ThVを最初に超えた注目点(S)から、イメージセンサ43の撮影範囲内の注目点(図22の例では注目点(4))まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合は、イメージセンサ43の撮影範囲外になる直前に抽出された注目点(図22の例では注目点(4))を注目点(E)として、この注目点(E)と所定の閾値ThVを最初に超えた注目点(S)と、を基に、式(8)〜式(13)の計算を実行する。
【0207】
次に、剣軌跡オブジェクト117が、敵オブジェクト115にヒットしたかどうかの判定手法を説明する。
【0208】
図30は、図8のCPU201によるヒット判定の説明図である。図30に示すように、図22と同じ仮想平面を想定する。また、スイング情報が「A0」又「A1」の剣軌跡オブジェクト117の長手方向の中心線327を想定する。さらに、この中心線327に中心座標が存在する5つの仮想矩形329〜337を想定する。ここで、各仮想矩形329〜337の頂点座標を包括して、座標(xpq,ypq)と表記する。ここで、「p」は、各仮想矩形329〜337を示しており、図30の例では、p=1〜5、である。また、「q」は、仮想矩形329〜337の各々において、各頂点を示しており、図30の例では、q=1〜4、である。
【0209】
一方、m番目(mは自然数)の敵オブジェクト115の中心座標を中心として、ヒットレンジ325を想定する。また、m番目のヒットレンジ325の各頂点の座標を、(xm1,ym1)、(xm1,ym2)、(xm2,ym2)、(xm2,ym1)、とする。
【0210】
CPU201は、xm1<xpq<xm2、を満たし、かつ、ym1<ypq<ym2、を満たすかどうかを、全ての仮想矩形329〜337の全ての頂点座標(xpq,ypq)について判断する。そして、CPU201は、このような条件を満たした頂点座標(xpq,ypq)が存在する場合は、m番目の敵オブジェクト115に剣軌跡オブジェクト117がヒットしたと判定する。つまり、仮想矩形329〜337のうちのいずれかが、ヒットレンジ325と重なった場合は、ヒットしたと判定される。
【0211】
上記のような判定が、表示されている全ての敵オブジェクト115に対して行われる。また、スイング情報が、「A2」〜「A7」の場合も、「A0」及び「A1」の場合と同様であり、仮想矩形がヒットレンジと重なったかどうかで、ヒット判定がなされる。なお、仮想矩形及びヒットレンジが実際に画像として表示されるわけではなく、あくまでも仮想のものである。
【0212】
また、CPU201は、ヒットと判定したときは、エフェクト119を表示するためのヒット登録(トリガ発生を意味)を行う。具体的には、CPU201は、ヒットしたときのスイング情報「A0」〜「A7」に関連付けられたアニメーションテーブル格納位置情報を登録する。この場合のアニメーションテーブル格納位置情報は、エフェクト119のアニメーションを行うためのアニメーションテーブルの格納位置情報である。エフェクト119には方向があるため、スイング情報「A0」〜「A7」の各々に対して、アニメーションテーブル格納位置情報が関連付けられている。図15のエフェクト119は、スイング情報「A0」に関連付けられたアニメーションテーブル格納位置情報が示す位置に格納されたアニメーションテーブルに基づく画像である。なお、エフェクト119のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0213】
また、CPU201は、ヒットと判定したときは、敵オブジェクト115の座標を基に、出現させるエフェクト119の座標を算出する。なぜなら、エフェクト119は、ヒットした敵オブジェクト115の位置に出現させるからである。
【0214】
次に、盾オブジェクト123の制御について説明する。CPU201は、所定の閾値Thより大きい差分データを持つピクセル数と、所定の閾値ThAと、を比較する。そして、CPU201は、所定の閾値Thより大きい差分データを持つピクセル数が、所定の閾値ThAより大きかった場合、反射シート17、つまり、剣3の刀身部15の側面、が検出されたと判断する。即ち、所定の閾値Thより大きい差分データを持つピクセル数が、所定の閾値ThAより多いということは、赤外光を反射する面積が広いということであるから、検知された反射シートは、面積が小さい反射シート23ではなく、面積が大きい反射シート17ということになる。
【0215】
CPU201は、面積の大きい反射シート17を検出したときは、盾オブジェクト123を表示するための盾登録(トリガ発生を意味)を行う。具体的には、CPU201は、盾オブジェクト123のアニメーションのためのアニメーションテーブル格納位置情報を登録する。なお、盾オブジェクト123のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0216】
また、CPU201は、面積の大きい反射シート17が最初に検出されたときの注目点の座標を、最初の盾オブジェクト123の座標(xs,ys)として設定する。
【0217】
さらに、CPU201は、剣3の移動に応じて、盾オブジェクト123を移動させるべく、移動後の盾オブジェクト123の座標を算出する。具体的には、次の通りである。ここで、移動後の剣3の注目点の座標を(Px(M),Py(M))とする。
【0218】
そうすると、CPU201は、次式により、まず、x方向の移動距離lx及びy方向の移動距離lyを求める。なお、次式において、「N」は2以上の整数であり、所定値である。
【0219】
lx=(Px[M]−xs)/N …(14)
ly=(Py[M]−ys)/N …(15)
そして、CPU201は、前回の盾オブジェクト123の座標(xs,ys)から、この移動距離lx,lyだけ移動させた座標を移動後の盾オブジェクト123の座標(xs,ys)とする。つまり、CPU201は、次式により、移動後の盾オブジェクト123の座標を計算する。
【0220】
xs=lx+xs …(16)
ys=ly+ys …(17)
次に、説明オブジェクト129の制御について説明する。CPU201は、説明オブジェクト129が表示されているときに、剣3が縦方向に振り下ろされた場合は、説明進行登録(トリガ発生を意味)を行う。具体的には、CPU201は、次の説明オブジェクト129を表示するためのアニメーションテーブル格納位置情報を登録する。なお、説明オブジェクト129のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。ここで、説明オブジェクト129のように、アニメーションを行わない静止画の場合は、コマは1つであり、また、持続フレーム数情報として、最大の値を入れておき、さらに、ループするようにしている。こうすることで、アニメーションテーブルを用いて、静止画を表示できる。
【0221】
次に、前進制御について説明する。CPU201は、スクリーン91に前進を指示する表示がなされている場合に、剣3の注目点が、所定フレーム数の間、スクリーン91の中心座標を中心にした所定範囲に存在すれば、前進登録(トリガ発生を意味)を行う(図18(a)及び図18(b)参照)。
【0222】
CPU201は、前進登録がされたことを条件として、仮想空間内を前進した距離に基づいて、背景を更新する。例えば、仮想空間内を一定距離進むたびに背景を更新する。具体的には次の通りである。
【0223】
内部メモリ207には、背景を構成する全キャラクタ数と同じ要素数の配列が用意される。そして、配列には、対応するキャラクタの格納位置情報(先頭アドレス)が代入される。従って、背景を更新するときは、配列の全要素を更新する。
【0224】
次に、カーソル101の制御について説明する。CPU201は、選択画面において、剣3の注目点を検出したときに、カーソル登録(トリガ発生を意味)を行う(図12参照)。具体的には、CPU201は、カーソル101のアニメーションのためのアニメーションテーブル格納位置情報を登録する。なお、カーソル101のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0225】
また、CPU201は、剣3の注目点の座標を、最初のカーソル101の座標として設定する。さらに、CPU201は、剣3の移動に応じて、カーソル101を移動させるべく、移動後のカーソル101の座標を算出する。この算出方法は、移動後の盾オブジェクト123の座標の算出方法と同様であり説明を省略する。
【0226】
次に、項目オブジェクト109の制御について説明する。CPU201は、選択画面において、左移動指示オブジェクト103を中心とした所定範囲R1あるいは右移動指示オブジェクト105を中心とした所定範囲R2、にカーソル101が存在するかどうかを判断する。CPU201は、カーソル101が、所定範囲R1内に存在する場合、各項目オブジェクト109の静止位置のx座標から所定値vを差し引く。同様に、CPU201は、カーソル101が、所定範囲R2内に存在する場合、各項目オブジェクト109の静止位置のx座標に所定値vを加える。以上のようにして、移動後の各項目オブジェクト109のx座標を求める。この場合、y座標は固定である。また、項目オブジェクト109が、画面外に移動した場合は、再び右側から出現するように(ループするように)、x座標が設定される。
【0227】
また、CPU201は、項目オブジェクト109の登録を行う。具体的には、CPU201は、項目オブジェクト109の表示のためのアニメーションテーブル格納位置情報を登録する。なお、項目オブジェクト109のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。ただし、説明オブジェクト129と同様に、項目オブジェクト109のアニメーションは行わない。
【0228】
次に、スイング補正について説明する。CPU201は、x方向の補正情報Kx及びy方向の補正情報Kyを取得する。そして、CPU201は、注目点の座標(x,y)に、これらの補正情報Kx,Kyを加味して、注目点の座標(Px[M],Py[M])とする。つまり、CPU201は、Px[M]=x+Kx、Py[M]=y+Ky、とする。以下、補正情報の取得について詳細に説明する。
【0229】
図31は、図12の選択画面で「スイング補正」の項目オブジェクト109が選択されたときの、スイング補正画面の例示図である。図31に示すように、スクリーン91のスイング補正画面には、円形オブジェクト111及び説明オブジェクト113が表示される。オペレータ94は、説明オプジェクト113の説明に従って、画面中心に位置する円形オブジェクト111をねらって、剣3を縦(垂直方向)又は横(水平方向)に振る。
【0230】
オペレータ94が、中心と思って剣3を振った場合でも、イメージセンサ43の向き及び位置と剣3を振る位置との関係により、必ずしも、剣軌跡オブジェクト117が、スクリーン91の中心に表示されるとは限らない。つまり、円形オブジェクト111をねらって、剣3を縦に振った場合でも、x方向に所定距離ずれて、剣軌跡オブジェクト117が表示されたり、また、円形オブジェクト111をねらって、剣3を横に振った場合でも、y方向に所定距離ずれて、剣軌跡オブジェクト117が表示されたり、する場合もある。このずれが、補正情報Kx,Kyであり、これを、剣3の注目点の座標に補正してやれば、オペレータ94がねらった位置に剣軌跡オブジェクト117を出現させることができる。
【0231】
ここで、剣3を一振りしたときに、注目点が複数検出される。そうすると、縦振りのときは、各注目点のx座標の平均値xAを用いて、Kx=xc−xA、とする。また、横振りのときは、各注目点のy座標の平均値yAを用いて、Ky=yc−yA、とする。ここで、座標(xc,yc)は、スクリーン91の中心座標(0,0)である。
【0232】
さて、これまで説明してきた剣軌跡オブジェクト117等の各オブジェクトの座標は、例えば、そのオブジェクトの中心の座標として定義することができる。また、スプライトの座標は、そのスプライトの中心座標として定義することができる。なお、オブジェクトの座標を、例えば、そのオブジェクトを構成する複数のスプライトのうち、左上角のスプライトの中心座標として定義することもできる。
【0233】
次に、図1の情報処理装置1の全体の処理の流れを、フローチャートを用いて説明する。
【0234】
図32は、図1の情報処理装置1の全体の処理の流れを示すフローチャートである。図32に示すように、ステップS1にて、CPU201は、システムの初期設定を実行する。
【0235】
ステップS2にて、CPU201は、ゲーム状態をチェックする。ステップS3にて、CPU201は、ゲームが終了したかどうかを判断する。ゲームが終了していない場合は、CPU201は、ステップS4に進み、ゲーム終了の場合は処理を終了する。
【0236】
ステップS4にて、CPU201は、現在のステートを判断する。モード選択のステートであれば、ステップS5に進み、スイング補正モードであれば、ステップS6に進み、ストーリーモードであれば、ステップS7に進み、対戦モードであれば、ステップS8に進む。なお、ステップS8では、CPU201は、対戦モードのゲーム処理を実行する(図19参照)。
【0237】
ステップS9では、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。本実施の形態では、CPU201は、テレビジョンモニタ90の表示画面を更新するため画像データを、垂直ブランキング期間の開始後にグラフィックプロセッサ202に与える。従って、表示画面を更新するための演算処理が完了したら、ビデオ同期割込みがあるまで処理を進めないようにしている。
【0238】
ステップS9で「YES」であれば、即ち、ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS9に戻る。一方、ステップS9で「NO」であれば、即ち、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS10に進む。
【0239】
ステップS10では、CPU201は、ステップS5〜S8による処理結果に基づいて、画像表示処理を実行し、その後ステップS2に進む。この場合の画像表示処理とは、表示対象の全スプライトの画像情報(各スプライトの格納位置情報及び座標情報)の取得指示および背景表示のための配列の全要素の取得指示をグラフィックプロセッサ202に与えることを言う。グラフィックプロセッサ202は、これらの情報を取得して、必要な処理を施し、各オブジェクトや背景を表す映像信号を生成する。
【0240】
図33は、図32のステップS1の初期設定処理の流れを示すフローチャートである。図33に示すように、ステップS20にて、CPU201は、イメージセンサ43の初期設定処理を行う。ステップS21にて、CPU201は、各種フラグ及びカウンタを初期化する。
【0241】
ステップS22にて、CPU201は、タイマ回路210を発音のための割込み源としてセットする。この割込み処理により、音声処理が実行されて、テレビジョンモニタ90のスピーカから、効果音や音楽などの音声が発生される。具体的には次の通りである。
【0242】
サウンドプロセッサ203は、タイマ割込みに応じたCPU201の指示により、内部メモリ207から音声データ105の格納位置情報を取得する。
【0243】
サウンドプロセッサ203は、取得した格納位置情報を基に、ROM65から音声データ105を読み出して、必要な処理を施し、効果音や音楽などの音声信号を生成する。サウンドプロセッサ203は、生成した音声信号を、音声信号出力端子63に与える。これにより、テレビジョンモニタ90のスピーカから、効果音や音楽などの音声が発生される。なお、音声データ105には、波形データ(音源データ)、及び/又は、エンベロープデータ、が含まれる。
【0244】
例えば、CPU201は、剣軌跡登録がされた場合に(これをトリガとして)、タイマ割込みに応じて、効果音データの格納位置情報の取得指示を出す。すると、サウンドプロセサ203は、その格納位置情報を取得して、ROM65から効果音データを読み出して、効果音の音声信号を生成する。これにより、剣軌跡オブジェクト117の出現と同時に、効果音が発生され、オペレータ94は、剣3を振った実感をより認識できる。
【0245】
図34は、図33のステップS20のセンサ初期設定処理の流れを示すフローチャートである。図34に示すように、最初のステップS30では、高速プロセッサ200は、設定データとして、コマンド“CONF”を設定する。ただし、このコマンド“CONF”は、イメージセンサ43に、高速プロセッサ200からコマンドを送信する設定モードに入ることを知らせるためのコマンドである。そして、次のステップS31にて、コマンド送信処理を実行する。
【0246】
図35は、図34のステップS31のコマンド送信処理の流れを示すフローチャートである。図35に示すように、最初のステップS40では、高速プロセッサ200は、設定データ(ステップS31の場合はコマンド“CONF”)をレジスタデータ(I/Oポート)に設定し、次のステップS41でレジスタ設定クロックCLK(I/Oポート)をローレベルに設定する。その後、ステップS42で規定時間待機した後、ステップS43で、レジスタ設定クロックCLKをハイレベルに設定する。そして、さらにステップS44での規定時間の待機の後、ステップS45でレジスタ設定クロックCLKを再びローレベルに設定する。
【0247】
このようにして、図36に示すように、規定時間の待機を行いながら、レジスタ設定クロックCLKをローレベル,ハイレベルそしてローレベルとすることによって、コマンド(コマンドまたはコマンド+データ)の送信処理が行われる。
【0248】
図34の説明に戻る。ステップS32では、ピクセルモードを設定するとともに、露光時間の設定を行う。この実施の形態の場合、イメージセンサ43は先に述べたようにたとえば32ピクセル×32ピクセルのCMOSイメージセンサであるため、設定アドレス“0”のピクセルモードレジスタに32ピクセル×32ピクセルであることを示す“0h”を設定する。次のステップS33において、高速プロセッサ200は、レジスタ設定処理を実行する。
【0249】
図37は、図34のステップS33のレジスタ設定処理の流れを示すフローチャートである。図37に示すように、最初のステップS50では、高速プロセッサ200は、設定データとして、コマンド“MOV”+アドレスを設定し、次のステップS51で、図35で先に説明したコマンド送信処理を実行して、それを送信する。次にステップS52において、高速プロセッサ200は、設定データとして、コマンド“LD”+データを設定し、次のステップS53でコマンド送信処理を実行して、それを送信する。そして、ステップS54で、高速プロセッサ200は、設定データとして、コマンド“SET”を設定し、次のステップS55でそれを送信する。なお、コマンド“MOV”は制御レジスタのアドレスを送信することを示すコマンドで、コマンド“LD”はデータを送信することを示すコマンドで、コマンド“SET”はデータをそのアドレスに実際に設定させるためのコマンドである。なお、この処理は、設定する制御レジスタが複数ある場合には、繰り返し実行される。
【0250】
図34の説明に戻る。ステップS34では、設定アドレスを“1”(露光時間設定レジスタのローニブルのアドレスを示す)とし、最大露光時間を示す“FFh”のローニブルデータ“Fh”を設定すべきデータとして設定する。そして、ステップS35で図37のレジスタ設定処理を実行する。同様にして、ステップS36において、設定アドレスを“2”(露光時間設定レジスタのハイニブルのアドレスを示す)とし、最大露光時間を示す“FFh”のハイニブルデータ“Fh”を設定すべきデータとして設定し、ステップS37でレジスタ設定処理を実行する。
【0251】
その後、ステップS38で設定終了を示しかつイメージセンサ43にデータの出力を開始させるためのコマンド“RUN”を設定し、ステップS39で送信する。このようにして、図33に示すステップS20でのセンサ初期設定処理が実行される。ただし、図34〜図37に示す具体例は、使用されるイメージセンサ43の仕様に応じて、適宜変更され得るものである。
【0252】
図38は、図32のステップS7のストーリーモードの流れを示すフローチャートである。図38に示すように、ステップS60にて、CPU201は、ADC208からデジタルのピクセルデータを取得する。このデジタルのピクセルデータは、イメージセンサ43からのアナログのピクセルデータが、ADC208により、デジタルに変換されたものである。
【0253】
ステップS61にて、注目領域抽出処理が実行される。具体的には、CPU201は、赤外発光ダイオード7の発光時のピクセルデータと消灯時のピクセルデータとの差分を算出して、差分データを得る。そして、CPU201は、その差分データと所定の閾値Thとを比較して、所定の閾値Thを超える差分データを持つピクセル数をカウントする。
【0254】
ステップS62にて、CPU201は、所定の閾値Thを超える差分データから最大値を求め、その最大の差分データを持つピクセルの座標を、剣3の注目点とする。
【0255】
ステップS63にて、CPU201は、オペレータ94による剣3のスイング動作を検出して、剣3のスイングに応じた剣軌跡オブジェクト117を表示するためのトリガを発生する。
【0256】
ステップS64にて、CPU201は、剣軌跡オブジェクト117が、敵オブジェクト115にヒットしたかどうかを判定して、ヒットしたときに、エフェクト119を表示するためのトリガを発生する。
【0257】
ステップS65にて、CPU201は、剣3の刀身部15の側面に取り付けられた反射シート17を検知したときに、盾オブジェクト123を表示するためのトリガを発生する。
【0258】
ステップS66にて、CPU201は、説明オブジェクト129が表示されている場合において、剣3が縦方向に振り下ろされたときに、次の説明オブジェクト129を表示するためのトリガを発生する。
【0259】
ステップS67にて、CPU201は、前進指示が表示されている場合において、所定フレーム数の間、剣3の注目点が所定範囲に存在するときに、前進するような背景のアニメーションを行うべく、背景表示のための配列の各要素の更新処理を行う。
【0260】
ステップS68にて、CPU201は、「M」が所定値「K」より小さいかどうかを判断する。CPU201は、「M」が所定値「K」以上である場合、ステップS69に進み、「M」に「0」を代入して、ステップS70に進む。一方、CPU201は、「M」が所定値「K」より小さい場合、ステップS68からステップS70に進む。この「M」については、後述の説明の中で明らかになる。
【0261】
ステップS70では、上記処理結果に基づいて、表示対象の全スプライトの画像情報(各スプライトの格納位置情報や表示位置情報など)を内部メモリ207にセットする。
【0262】
図39は、図38のステップS60のピクセルデータ群取得処理の流れを示すフローチャートである。図39に示すように、最初のステップS80で、CPU201は、ピクセルデータ配列の要素番号としてXに「−1」、Yに「0」を設定する。本実施の形態におけるピクセルデータ配列は、X=0〜31、Y=0〜31の2次元配列であるが、前述のように各行の先頭ピクセルのデータとしてダミーデータが出力されるので、Xの初期値として「−1」が設定される。続くステップS81では、ピクセルデータの取得処理を実行する。
【0263】
図40は、図39のステップS81のピクセルデータ取得処理の流れを示すフローチャートである。図40に示すように、最初のステップS100で、CPU201は、イメージセンサ43からのフレームステータスフラグ信号FSFをチェックし、ステップS101でそのアップエッジ(ローレベルからハイレベルへの)が発生したかどうか判断する。そして、ステップS101でフラグ信号FSFのアップエッジを検出すると、次のステップS102において、CPU201は、ADC208に入力されてきたアナログのピクセルデータのデジタルデータへの変換の開始を指示する。その後、ステップS103でイメージセンサ43からのピクセルストローブPDSをチェックし、ステップS104でそのストローブ信号PDSのローレベルからハイレベルへのアップエッジが発生したかどうか判断する。
【0264】
ステップS104で“YES”が判断されると、CPU201は、ステップS105において、X=−1かどうか、すなわち先頭ピクセルかどうか判断する。先に述べたように、各行の先頭ピクセルはダミーピクセルとして設定されているので、このステップS105で“YES”が判断されると、次のステップS107でそのときのピクセルデータを取得しないで、要素番号Xをインクリメントする。
【0265】
ステップS105で“NO”が判断されると、行の第2番目以降のピクセルデータであるので、ステップS106およびS108において、そのときのピクセルデータを取得し、テンポラリレジスタ(図示せず)にそのピクセルデータを格納する。その後、図39のステップS82に進む。
【0266】
図39のステップS82では、テンポラリレジスタに格納されたピクセルデータをピクセルデータ配列P[Y][X]に代入する。
【0267】
続くステップS83でXをインクリメントする。Xが32に満たない場合、前述のS81からS83の処理を繰り返し実行する。Xが32の場合、すなわちピクセルデータの取得が行の終端に到達した場合には、続くステップS85でXに「−1」を設定し、ステップS86でYをインクリメントし、次の行の先頭からピクセルデータの取得処理を繰り返す。
【0268】
ステップS87でYが32の場合、すなわちピクセルデータの取得がピクセルデータ配列P[Y][X]の終端に到達した場合、図38のステップS61に進む。
【0269】
図41は、図38のステップS61の注目領域抽出処理の流れを示すフローチャートである。図41に示すように、ステップS120にて、CPU201は、イメージセンサ43からの、赤外発光ダイオード7の点灯時のピクセルデータと、赤外発光ダイオード7の消灯時のピクセルデータと、の差分を算出して、差分データを得る。
【0270】
ステップS121にて、CPU201は、配列Dif[X][Y]に、算出した差分データを代入する。ここで、実施の形態では、32ピクセル×32ピクセルのイメージセンサ43を用いているため、X=0〜31、Y=0〜31、である。
【0271】
ステップS122にて、CPU201は、配列Dif[X][Y]の要素を所定の閾値Thと比較する。
【0272】
ステップS123にて、CPU201は、配列Dif[X][Y]の要素が所定の閾値Thより大きい場合は、ステップS124に進み、所定の閾値Th以下の場合は、ステップS125に進む。
【0273】
ステップS124にて、CPU201は、所定の閾値Thを超えた差分データ(配列Dif[X][Y]の要素)の数を計数すべく、カウント値cを1つインクリメントする。
【0274】
CPU201は、配列Dif[X][Y]の全要素について、所定の閾値Thとの比較が終了するまで、ステップS122からステップS124の処理を繰り返す(ステップS125)。
【0275】
CPU201は、配列Dif[X][Y]の全要素について、所定の閾値Thとの比較が終了した場合は、ステップS126にて、カウント値cが「0」より大きいかどうかを判断する。
【0276】
CPU201は、カウント値cが「0」より大きい場合は、図38のステップS62に進む。カウント値cが「0」より大きいということは、剣3の反射面(反射シート17,23)が検出されたことを意味する。
【0277】
一方、CPU201は、カウント値cが「0」の場合は、ステップS127に進む。カウント値cが「0」ということは、剣3の反射面(反射シート17,23)が検出されなかったことを意味する。つまり、剣3が、撮像手段5の撮影範囲外に存在することを意味する。従って、ステップS127にて、CPU201は、剣3が撮影範囲外であることを示すレンジアウトフラグをオンにする。
【0278】
図42は、図38のステップS62の注目点抽出処理の流れを示すフローチャートである。図42に示すように、ステップS140にて、CPU201は、レンジアウトフラグをチェックする。
【0279】
CPU201は、レンジアウトフラグがオンであれば、図38のステップS63に進む(ステップS141)。なぜなら、剣3が撮像手段5の撮影範囲外ならば、注目点の抽出処理を実行する意味はないからである。一方、CPU201は、レンジアウトフラグがオフであれば、つまり、剣3が検出された場合は、ステップS142に進む(ステップS141)。
【0280】
ステップS142にて、CPU201は、配列Dif[X][Y]の要素(差分データ)から、最大値を検出する。
【0281】
ステップS143にて、CPU201は、「M」を1つインクリメントする。なお、「M」は、図33のステップS21にて「0」に初期化されている。
【0282】
ステップS144にて、CPU201は、ステップS142で検出された最大の差分データを持つピクセルの座標(X,Y)を、スクリーン91上の座標(x,y)に変換する。つまり、CPU201は、イメージセンサ43による画像(32ピクセル×32ピクセル)の座標空間から、スクリーン91(横256画素×縦224画素)の座標空間への変換を実行する。
【0283】
ステップS145にて、CPU201は、配列Px[M]に、変換後のx座標に補正情報Kxを加えたものを代入し、配列Py[M]に、変換後のy座標に補正情報Kyを加えたものを代入する。このようにして、剣3の注目点の座標(Px[M],Py[M])が算出される。
【0284】
図43は、図38のステップS63のスイング検出処理の流れを示すフローチャートである。図43に示すように、ステップS150にて、CPU201は、レンジアウトフラグをチェックする。
【0285】
CPU201は、レンジアウトフラグがオンであれば、ステップS160に進み、オフであれば、ステップS152に進む。
【0286】
ステップS152にて、CPU201は、式(1)及び式(2)により、剣3の注目点(Px[M],Py[M])の速度ベクトル(Vx[M],Vy[M])を求める。
【0287】
ステップS153にて、CPU201は、式(3)により、剣3の注目点(Px[M],Py[M])の速さV[M]を求める。
【0288】
ステップS154にて、CPU201は、剣3の注目点(Px[M],Py[M])の速さV[M]と所定の閾値ThVとを比較して、その大小を判断する。CPU201は、注目点の速さV[M]が、所定の閾値ThVを超えていれば、ステップS155に進み、所定の閾値ThV以下の場合は、ステップS162に進む。
【0289】
ステップS155にて、CPU201は、スイングフラグをチェックする。
【0290】
スイングフラグがオンであれば、CPU201は、ステップS159に進み、オフであれば、ステップS157に進む(ステップS156)。
【0291】
ステップS157にて、CPU201は、スイングフラグをオンにする。つまり、速さV[M]が所定の閾値ThVを超えた場合は、剣3が振られたと判断され、スイングフラグがオンにされる。
【0292】
ステップS158にて、CPU201は、「S」に、最初に所定の閾値ThVを超えた注目点の要素番号「M」を代入する。
【0293】
ステップS159にて、CPU201は、剣3を1回振ったときに検出される注目点の数を計数すべく、注目点カウンタn(カウント値n)を1つインクリメントする。この場合に計数されるのは、速さが所定の閾値を超えた注目点のみである(ステップS154)。ステップS159の後、図38のステップS64に進む。
【0294】
さて、ステップS162にて、CPU201は、スイングフラグをチェックする。
【0295】
スイングフラグがオンであれば、CPU201は、ステップS164に進み、オフであれば、ステップS171に進む(ステップS163)。
【0296】
スイングフラグがオンであって(ステップS163)、速さが所定の閾値ThV以下である(ステップS154)ということは、剣3のスイングが終了したことを意味する。従って、ステップS164にて、CPU201は、スイング終了フラグをオンにする。
【0297】
ステップS165にて、CPU201は、「E」に、最初に所定の閾値ThV以下になった注目点の要素番号「M」を代入する。
【0298】
ステップS166にて、CPU201は、剣3のスイングに応じた剣軌跡オブジェクト117の種類を決定する。
【0299】
ステップS167にて、CPU201は、表示すべき剣軌跡オブジェクト117のスクリーン91上の座標を算出する。
【0300】
ステップS168にて、CPU201は、ステップS166で決定した剣軌跡オブジェクト117のアニメーションのためのアニメーションテーブル格納位置情報を登録する(剣軌跡登録:トリガに相当)。
【0301】
ステップS169にて、CPU201は、注目点カウンタn(カウント値n)をリセットする。
【0302】
ステップS170にて、CPU201は、スイングフラグをオフにする。
【0303】
さて、ステップS160にて、CPU201は、注目点カウンタn(カウント値n)を1つデクリメントする。この理由は、後述の図44で説明する。
【0304】
ステップS161にて、CPU201は、オンとなっているレンジアウトフラグをオフにする。
【0305】
そして、ステップS162及びS163を経て、スイングフラグがオンであるということは、注目点の速さが所定の閾値ThV以下になる前にレンジアウトしたことを意味する。この場合は、上記したように、レンジアウトする直前の注目点を利用して、剣軌跡オブジェクト117の種類及び座標を決定するため、ステップS164〜ステップS170の処理が実行される。
【0306】
さて、一方、ステップS163にて、スイングフラグがオフと判断された場合は、ステップS171において、CPU201は、注目点カウンタn(カウント値n)をリセットする。
【0307】
図44は、図43のステップS166の剣軌跡種類決定処理の流れを示すフローチャートである。図44に示すように、ステップS180にて、CPU201は、注目点カウンタnをチェックする。
【0308】
カウント値nが「1」より大きい場合は、ステップS182に進み、カウント値nが「1」以下の場合は、ステップS188に進む(ステップS181)。つまり、カウント値nが2以上、即ち、速さが所定の閾値ThVより大きい注目点の数が2以上、の場合にステップS182に進む。さらに、言い換えると、速さが所定の閾値ThVより大きい注目点の数が2以上の場合は、オペレータ94が意図しないスイング(誤動作)ではなく、オペレータ94が意図してスイングしたと判断されて、ステップS182に進む。
【0309】
ステップS182にて、CPU201は、式(4)及び式(5)により、スイング長Lx、Lyを求める。
【0310】
ステップS183にて、CPU201は、式(6)及び式(7)により、スイング長Lx、Lyの平均値LxA,LyAを求める。なお、注目点の速さが所定の閾値ThV以下になる前にレンジアウトした場合は、上記したように、レンジアウトする直前の注目点を利用して、剣軌跡オブジェクト117の種類及び座標を決定する。このときは、注目点カウンタnの値は、通常の場合より1つ多いため、図43のステップS160では、注目点カウンタnをデクリメントしている。
【0311】
ステップS184にて、CPU201は、x方向のスイング長Lxの平均値LxAの絶対値と、所定値xrと、を比較する。また、CPU201は、y方向のスイング長Lyの平均値LyAの絶対値と、所定値yrと、を比較する。
【0312】
ステップS185にて、CPU201は、ステップS184の結果を基に、角度フラグをセットする(図23(a)参照)。
【0313】
ステップS186にて、CPU201は、スイング長Lx,Lyの平均値LxA,LyAの符号を判断する。
【0314】
ステップS187にて、CPU201は、ステップS186の結果を基に、方向フラグをセットして(図23(b)参照)、図43のステップS167へ進む。
【0315】
さて、ステップS188にて、CPU201は、注目点カウンタnをリセットする。ステップS189にて、CPU201は、スイングフラグ及びスイング終了フラグをオフにする。そして、図38のステップS65に処理が進められる。
【0316】
図45は、図43のステップS167の剣軌跡座標算出処理の流れを示すフローチャートである。図45に示すように、ステップS200にて、CPU201は、角度フラグ及び方向フラグに基づいて、スイング情報を決定する(図23(a)〜図23(c)参照)。そして、CPU201は、スイング情報が「A0」又は「A1」の場合は、ステップS201に進み、スイング情報が「A2」又は「A3」の場合は、ステップS202に進み、スイング情報が「A4」〜「A7」の場合は、ステップS203に進む。
【0317】
ステップS201にて、CPU201は、式(8)及び式(9)により、剣軌跡オブジェクト117の中心座標(xt,yt)を求める。
【0318】
また、ステップS202にて、CPU201は、式(10)及び式(11)により、剣軌跡オブジェクト117の中心座標(xt,yt)を求める。
【0319】
また、ステップS203にて、CPU201は、式(12)及び式(13)により、仮の座標(xs,ys)を求めて、これを通る直線と、画面の対角線と、の交点座標(xI,yI)を求める。
【0320】
そして、ステップS204にて、CPU201は、交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0321】
なお、ステップS201,S202,S204の後、図43のステップS168に進む。
【0322】
図46は、図38のステップS64のヒット判定処理の流れを示すフローチャートである。図46に示すように、ステップS210にて、スイング終了フラグがオフであれば、ステップS211〜S221の処理をスキップして、図38のステップS65に進む。なぜなら、スイング終了フラグがオフということは、注目点の速さが所定の閾値以下になったわけでもなく、また、注目点がレンジアウトもしていない、ということであるから、剣3のスイングが未だ確定しておらず、剣軌跡オブジェクト117も表示されていないため、敵オブジェクト115へのヒット判定を行う必要がないからである。
【0323】
さて、ステップS211とステップS220との間で、ステップS212〜ステップS219の処理が繰り返される。ここで、「m」は、敵オブジェクト115の番号を示しており、「i」は、敵オブジェクト115の数である。従って、ステップS212〜ステップS219の処理が、敵オブジェクト115の数だけ繰り返される。つまり、全ての敵オブジェクト115に対して、ヒット判定が実行される。
【0324】
また、ステップS212とステップS219との間で、ステップS213〜ステップS218の処理が繰り返される。ここで、「p」は、仮想矩形の番号を示し、「j」は、仮想矩形の数を示す。図30の例では、j=5である。従って、ステップS213〜ステップS218の処理が、仮想矩形の数だけ繰り返される。つまり、全ての仮想矩形が、敵オブジェクト115に重なるかどうかが判断される。なお、上記したように、仮想矩形は、剣軌跡オブジェクト117に仮想的に付加された矩形であり、これが敵オブジェクト115を含むヒットレンジ325と重なれば、ヒットとなる。
【0325】
また、ステップS213とステップS218との間で、ステップS214,S215の処理が繰り返される。ここで、「q」は、仮想矩形の頂点の番号を示している。従って、ステップS215,S216の処理が、仮想矩形の頂点の数だけ繰り返される。つまり、仮想矩形のいずれかの頂点が、敵オブジェクト115を含むヒットレンジ325に含まれれば、ヒットとなる。
【0326】
さて、ステップS214にて、CPU201は、仮想矩形の頂点のx座標(xpq)が、ヒットレンジ325のx座標の範囲xm1〜xm2に入っているかどうかを判断する。範囲内でない場合は、ステップS218に進み、範囲内の場合は、ステップS215に進む。
【0327】
ステップS215にて、CPU201は、仮想矩形の頂点のy座標(ypq)が、ヒットレンジ325のy座標の範囲ym1〜ym2に入っているかどうかを判断する。範囲内でない場合は、ステップS218に進み、範囲内の場合は、ステップS216に進む。
【0328】
ステップS216にて、CPU201は、敵オブジェクト115の座標を基に、エフェクト119の座標を算出する。なぜなら、xm1<xpq<xm2、を満たし、かつ、ym1<ypq<ym2、が満たされたということは、剣軌跡オブジェクト117が敵オブジェクト115にヒットしたということであるから、エフェクト119を発生させる必要があるからである。
【0329】
ステップS217にて、CPU201は、スイング情報A0〜A7を基に、エフェクト119のアニメーションのためのアニメーションテーブル格納位置情報を登録する(ヒット登録:トリガに相当)。
【0330】
ステップS221にて、CPU201は、スイング終了フラグをオフにする。
【0331】
図47は、図38のステップS65の盾検出処理の流れを示すフローチャートである。図47に示すように、ステップS230にて、CPU201は、注目点カウンタのカウント値cと、所定の閾値ThAと、を比較する。
【0332】
ステップS231にて、CPU201は、カウント値cが、所定の閾値ThAより大きいと判断した場合、つまり、剣3の刀身部15の側面に取り付けられた反射シート17が検出された場合、ステップS232に進む。
【0333】
ステップS232にて、CPU201は、式(14)及び式(15)により、盾オブジェクト123のx方向の移動距離lx及びy方向の移動距離lyを求める。
【0334】
ステップS233にて、CPU201は、式(16)及び式(17)により、移動後の盾オブジェクト123の座標(xs,ys)を求める。
【0335】
ステップS234にて、CPU201は、盾オブジェクト123のアニメーションのためのアニメーションテーブル格納位置情報を登録する(盾登録:トリガに相当)。
【0336】
ステップS235にて、CPU201は、盾フラグをオンにする。
【0337】
ステップS242にて、CPU201は、注目点カウンタcをリセットして、図38のステップS66に進む。
【0338】
さて、ステップS231にて、CPU201は、カウント値cが、所定の閾値ThA以下と判断した場合、つまり、剣3の刀身部15の側面に取り付けられた反射シート17が検出されなかった場合、ステップS236に進む。
【0339】
ステップS236にて、CPU201は、盾フラグがオンかどうかを判断する。盾フラグがオンならば、ステップS237に進み、オフならば、ステップS242に進む。
【0340】
ステップS237にて、CPU201は、盾消消滅カウンタeをインクリメントする。
【0341】
ステップS238にて、CPU201は、盾消滅カウンタeが、所定値Eを下回っているかどうかを判断する。盾消滅カウンタeが、所定値Eを下回っている場合は、ステップS242に進み、所定値E以上の場合は、ステップS239に進む。つまり、ステップS238では、盾フラグがオンになった後、剣3の側面の反射シート17が、E回連続して検出されなかった場合に、盾オブジェクト123を消滅させるべく、処理をステップS239に進める。
【0342】
ステップS239にて、CPU201は、盾オブジェクト123の表示座標をスクリーン91の範囲外とする(消滅登録)。これにより、スクリーン91に盾オブジェクト123が表示されない。
【0343】
ステップS240にて、CPU201は、盾フラグをオフにする。ステップS241にて、CPU201は、盾消滅カウンタeをリセットする。
【0344】
図48は、図38のステップS66の説明進行処理の流れを示すフローチャートである。図48に示すように、ステップS250にて、CPU201は、画面に説明オブジェクト129が表示されているかどうかを判断する。説明オブジェクト129が表示されていない場合は、ステップS254に進み、表示されている場合は、ステップS251に進む。
【0345】
ステップS251にて、CPU201は、角度フラグ及び方向フラグを参照して、剣3のスイングをチェックする。
【0346】
CPU201は、剣3が縦方向に振り下ろされた(スイング情報が「A3」)場合は、ステップS253に進み、それ以外では、ステップS254に進む(ステップS252)。
【0347】
ステップS253にて、CPU201は、次の説明オブジェクト129を表示するためのアニメーションテーブル格納位置情報を登録する(説明進行登録:トリガに相当)。
【0348】
ステップS254にて、CPU201は、角度フラグ及び方向フラグをリセットして、図38のステップS67に処理を進める。
【0349】
図49は、図38のステップS67の前進処理の流れを示すフローチャートである。図49に示すように、ステップS260にて、CPU201は、スクリーン91に、前進を指示する説明オブジェクト132が表示されているかどうかを判断する。この説明オブジェクト132が表示されている場合は、ステップS261に処理が進められ、表示されていない場合は、図38のステップS68に処理が進められる。
【0350】
ステップS261にて、CPU201は、所定フレーム数の間、剣3の注目点が画面の中心座標を中心にした所定範囲に存在するかどうかをチェックする。
【0351】
CPU201は、所定フレーム数の間、剣3の注目点が画面の中心座標を中心にした所定範囲に存在する場合は、ステップS263へ進み、そうでない場合は、図38のステップS68に処理が進められる(ステップS262)。
【0352】
ステップS263にて、CPU201は、仮想空間内を一定距離進むたびに、背景表示のための配列の全要素を更新する(前進登録)。
【0353】
図50は、図38のステップS70の画像情報セット処理の流れを示すフローチャートである。図50に示すように、ステップS270では、CPU201は、剣軌跡登録がなされている場合は、剣軌跡オブジェクト117に関する画像情報をセットする。具体的には、次の通りである。
【0354】
CPU201は、剣軌跡オブジェクト117の中心座標(xt,yt)と、剣軌跡オブジェクト117のサイズ情報と、スプライトのサイズ情報と、に基づいて、剣軌跡オブジェクト117を構成する各スプライトの座標を算出する。
【0355】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき剣軌跡オブジェクト117の格納位置情報を算出する。さらに、CPU201は、スプライトのサイズ情報を基に、表示すべき剣軌跡オブジェクト117を構成する各スプライトの格納位置情報を算出する。
【0356】
ステップS271では、CPU201は、ヒット登録がなされている場合は、エフェクト119に関する画像情報をセットする。具体的には、次の通りである。
【0357】
CPU201は、エフェクト119の座標と、エフェクト119のサイズ情報と、スプライトのサイズ情報と、に基づいて、エフェクト119を構成する各スプライトの座標を算出する。
【0358】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべきエフェクト119の格納位置情報を算出する。さらに、CPU201は、表示すべきエフェクト119を構成する各スプライトの格納位置情報を算出する。
【0359】
ステップS272では、CPU201は、盾登録がなされている場合は、盾オブジェクト123に関する画像情報をセットする。具体的には、次の通りである。
【0360】
CPU201は、盾オブジェクト123の中心座標(xs、ys)と、盾オブジェクト123のサイズ情報と、スプライトのサイズ情報と、に基づいて、盾オブジェクト123を構成する各スプライトの座標を算出する。
【0361】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき盾オブジェクト123の格納位置情報を算出する。さらに、CPU201は、表示すべき盾オブジェクト123を構成する各スプライトの格納位置情報を算出する。
【0362】
ステップS273では、CPU201は、スプライトからなる他のオブジェクト(例えば、説明オブジェクト129等)に関する画像情報(各スプライトの格納位置情報及び表示座標)をセットする。
【0363】
図51は、図32のステップS5のモード選択処理の流れを示すフローチャートである。図51に示すように、ステップS300〜ステップS302の処理は、それぞれ、図38のステップS60〜ステップS62の処理と同様であり、説明を省略する。
【0364】
ステップS303にて、CPU201は、カーソル101の移動処理を実行する。
【0365】
図52は、図51のステップS303のカーソル移動処理の流れを示すフローチャートである。図52に示すように、ステップS320にて、CPU201は、剣3の注目点の座標を基に、カーソル101の座標を算出する。
【0366】
ステップS321にて、CPU201は、カーソル101のアニメーションのためのアニメーションテーブル格納位置情報を登録する(カーソル登録)。
【0367】
図51の説明に戻る。ステップS304にて、CPU201は、項目オブジェクト109の移動処理を実行する。
【0368】
図53は、図51のステップS304の項目オブジェクト移動処理の流れを示すフローチャートである。図53に示すように、ステップS330にて、CPU201は、カーソル101が、図12の左移動指示オブジェクト103を中心としたレンジR1内に存在するかどうかを判断する。CPU201は、カーソル101がレンジR1内に存在する場合は、ステップS331に進み、存在しない場合は、ステップS332に進む。
【0369】
ステップS331にて、CPU201は、項目オブジェクト109のx方向の速さvxを「−v」とする。
【0370】
一方、ステップS332にて、CPU201は、カーソル101が、図12の右移動指示オブジェクト105を中心としたレンジR2内に存在するかどうかを判断する。CPU201は、カーソル101がレンジR2内に存在する場合は、ステップS334に進み、存在しない場合は、ステップS333に進む。
【0371】
ステップS334にて、CPU201は、項目オブジェクト109のx方向の速さvxを「v」とする。
【0372】
一方、ステップS333にて、CPU201は、項目オブジェクト109のx方向の速さvxを「0」とする。
【0373】
ステップS335にて、CPU201は、項目オブジェクト109のx座標に速さvxを加えて、項目オブジェクト109の移動後のx座標とする。
【0374】
ステップS336にて、CPU201は、項目オブジェクト109の表示のためのアニメーションテーブル格納位置情報を登録する(項目オブジェクト登録)。
【0375】
図51の説明に戻る。ステップS305及びステップS306の処理は、それぞれ、図38のステップS68及びステップS69の処理と同様であり、説明を省略する。
【0376】
ステップS307にて、CPU201は、カーソル101に関する画像情報をセットする。具体的には、次の通りである。
【0377】
CPU201は、カーソル101の座標と、カーソル101のサイズ情報と、スプライトのサイズ情報と、に基づいて、カーソル101を構成する各スプライトの座標を算出する。
【0378】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべきカーソル101の格納位置情報を算出する。さらに、CPU201は、表示すべきカーソル101を構成する各スプライトの格納位置情報を算出する。
【0379】
また、CPU201は、項目オブジェクト109に関する画像情報をセットする。具体的には、次の通りである。
【0380】
CPU201は、項目オブジェクト109の座標と、項目オブジェクト109のサイズ情報と、スプライトのサイズ情報と、に基づいて、項目オブジェクト109を構成する各スプライトの座標を算出する。
【0381】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき項目オブジェクト109の格納位置情報を算出する。さらに、CPU201は、表示すべき項目オブジェクト109を構成する各スプライトの格納位置情報を算出する。
【0382】
図54は、図32のステップS6のスイング補正モードの流れを示すフローチャートである。図54に示すように、ステップS400〜ステップS403の処理は、それぞれ、図38のステップS60〜ステップS63の処理と同様であり、説明を省略する。
【0383】
ステップS404にて、CPU201は、補正情報Kx,Kyを取得する(図31参照)。
【0384】
図55は、図54のステップS404の補正情報取得処理の流れを示すフローチャートである。図55に示すように、ステップS410にて、CPU201は、角度フラグ及び方向フラグに基づいて、スイング情報を決定する(図23(a)〜図23(c)参照)。そして、CPU201は、スイング情報が「A0」の場合は、ステップS411に進み、スイング情報が「A3」の場合は、ステップS412に進み、スイング情報がそれら以外の場合は、図54のステップS405に進む。
【0385】
ステップS411では、剣3が横に振られているため、CPU201は、y方向の補正情報Kyを求める。
【0386】
一方、ステップS412では、剣3が縦に振られているため、CPU201は、x方向の補正情報Kxを求める。
【0387】
図54の説明に戻る。ステップS405,S406の処理は、それぞれ、図38のステップS68,S69の処理と同様であり、説明を省略する。
【0388】
ステップS407にて、CPU201は、スイング補正画面(図31参照)を表示するための全スプライトの画像情報をセットする。
【0389】
図56は、撮像手段5によるストロボスコープ撮影処理の流れを示すフローチャートである。ステップS500において、高速プロセッサ200は、ストロボスコープ撮影のために赤外発光ダイオード7を点灯する。具体的には、図10に示すLEDコントロール信号LEDCをHレベルとする。その後、ステップS501で、イメージセンサ43は、ピクセルデータを出力する。
【0390】
ステップS502において、高速プロセッサ200は、ストロボスコープ撮影のために赤外発光ダイオード7を消灯する。具体的には、図10に示すLEDコントロール信号LEDCをLレベルとする。その後、ステップS503で、イメージセンサ43は、ピクセルデータを出力する。
【0391】
以上の処理がゲームが終了するまで繰り返される(ステップS504)。
【0392】
さて、次に、ゲーム画面の上記以外の例をいくつか挙げる。図57は、ゲーム画面の他の例示図である。図57に示すように、このゲーム画面には、人オブジェクト501及び動物オブジェクト502が表示される。そして、剣3の動きに応じて、カーソル503が移動する。このカーソル503を人オブジェクト501に重ねると、人オブジェクト501に関連付けられた説明オブジェクト500が表示される。一方、図示していないが、オペレータ94が、剣3を動かして、カーソル503を、動物オブジェクト502に重ねると、動物オブジェクト502に関連付けられた説明オブジェクトが表示される。
【0393】
ここで、カーソル503の移動処理は、カーソル101の移動処理と同様である。そして、カーソル502が、人オブジェクト501を含む所定範囲内に移動してきた場合、人オブジェクト501に関連付けられた説明オブジェクト500が表示される。動物オブジェクト502についても同様である。
【0394】
図58は、ゲーム画面のさらに他の例示図である。図58に示すように、このゲーム画面には、文字選択部505、選択枠506、左移動指示オブジェクト103、右移動指示オブジェクト105、文字表示部507、及び、カーソル101、が表示される。オペレータ94が剣3を操作してカーソル101を動かし、左移動指示オブジェクト103に重ねると、文字選択部505の文字が左方向に回転する。一方、右移動指示オブジェクト105に重ねると、文字選択部505の文字が右方向に回転する。このようにして、ア〜ンまでの文字を選択できる。そして、剣3を、一定以上の速度で縦方向に振り下ろすと、選択枠506に入った文字が、文字表示部507に表示される。このようにして、オペレータ94は、剣3を操作して、文字表示部507に文字を表示することができる。
【0395】
ここで、文字選択部505における文字の回転処理は、図12における項目オブジェクト109の回転処理と同様である。
【0396】
図59は、ゲーム画面のさらに他の例示図である。図59に示すように、このゲーム画面には、斜め方向に炎オブジェクト510が表示されている。これは、オペレータ94が剣3を斜め方向に振ったことに応じて、表示されたものである。つまり、これまでの例では、オペレータ94が剣3を振ると、その動作に応じた剣軌跡オブジェクト117を表示していたが、その代わりに、炎オブジェクト510を表示している。炎オブジェクト510の表示のためのトリガ発生の処理は、剣軌跡オブジェクト117の表示のためのトリガ発生の処理と同様である。また、例えば、炎オブジェクト510は、注目点の座標に出現させる。
【0397】
図60は、ゲーム画面のさらに他の例示図である。図60に示すように、このゲーム画面には、スイングガイド520,521,522および進行バー523が表示される。スイングガイド520〜522においては、切り欠いた方向から剣3を振ることを意味する。オペレータ94は、進行バー523がスイングガイド520〜522に重なったタイミングで、進行バー523が重なったスイングガイド520〜522が指示する方向から、剣3を振る。図60の例では、オペレータ94は、進行バー523が重なったスイングガイド520が指示するように、左から横方向に、剣3を振る。
【0398】
また、オペレータ94が、進行バー523が指示するタイミングで、かつ、スイングガイド520〜522が指示する方向から、剣3を適正に振ることができれば、特別なオブジェクトを表示するようにすることもできる。
【0399】
さて、図61(a)〜図61(c)は、図1の剣3のさらに他の例示図である。図61(a)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、円形の反射シート550及び反射シート551が、所定間隔で取り付けられている。従って、2点(反射シート550及び反射シート551)が検出された場合と、1点(半円柱状部材21に取り付けられた反射シート23)が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、2点検出の場合と、1点検出の場合と、で異なる画像を、グラフィックプロセッサ202に表示させる。2点検出については、後で詳細に説明する。なお、一方の半円柱状部材21に取り付けられた反射シート23と、他方の半円柱状部材21に取り付けられた反射シート23と、は近距離のため、イメージセンサ43には、1点として撮影される。
【0400】
また、図61(b)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、長方形の反射シート555が取り付けられている。CPU201は、検出した反射シートの長辺と短辺との比を求めて、この比が所定値より大きければ、長方形の反射シート555が検出されたと判断する。従って、長方形の反射シート555が検出された場合と、反射シート23が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、検出した反射面に応じて、異なる画像を、グラフィックプロセッサ202に表示させる。
【0401】
さらに、図61(c)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、三角形の反射シート560が取り付けられている。CPU201は、検出した反射シートの形状を求めて、三角形であれば、反射シート560が検出されたと判断する。従って、三角形の反射シート560が検出された場合と、反射シート23が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、検出した反射面に応じて、異なる画像を、グラフィックプロセッサ202に表示させる。
【0402】
なお、図61(a)〜図61(c)において、半円柱状部材21及び反射シート23を剣3に設ける代わりに、図4及び図5の反射シート31を、剣3の刃先部に設けることもできる。
【0403】
上記では、剣型の操作物3を例に挙げた。次に、剣型以外の操作物3の一例を説明する。図62は、オペレータ94によって操作される操作物の例示図である。この操作物3は、スティック570の両端に球状部材571,572を取り付けたものである。球状部材571,572には、反射シート575,576が取り付けられる。オペレータ94は、スティック570を握って、操作物3を操作する。2つの反射シート575,576は、所定間隔で取り付けられているため、イメージセンサ43により、2つの注目点が撮影される。CPU201は、2つの反射シート575,576の状態情報を求める。そして、CPU201は、その2つの反射シート575,576の状態情報に応じて、グラフィックプロセッサ202に画像を表示させる。
【0404】
次に、図61(a)及び図62で実行する2点の抽出処理について説明する。この場合、一方の反射シートを第1の反射シートと呼び、他方の反射シートを第2の反射シートと呼ぶ。
【0405】
図63は、第1の反射シートの注目点(第1注目点)の座標算出の説明図である。図63に示すように、イメージセンサ43は、例えば、32ピクセル×32ピクセルからなる。CPU201は、Y方向に32ピクセル分の差分データをスキャンし、そして、X座標をインクリメントし、Y方向に32ピクセル分の差分データをスキャンし、そして、X座標をインクリメントし、というように、X座標をインクリメントしながら、Y方向(列方向)に32ピクセル分の差分データをスキャンしていく。
【0406】
この場合、CPU201は、Y方向にスキャンした32ピクセル分の差分データから、最大輝度値の差分データを求め、その最大輝度値と所定の閾値Thとを比較する。そして、CPU201は、その最大輝度値が所定の閾値Thより大きい場合は、その値を配列max[n]に代入する。一方、状CPU201は、その最大輝度値が所定の閾値Th以下の場合は、所定値(例えば、「0」)を配列max[n]に代入する。
【0407】
ここで、nはX座標であり、さらに、CPU201が、最大輝度値を有するピクセルのY座標を関連付けて格納することで、後に、最大輝度値を有するピクセルのX座標及びY座標を取得できる。
【0408】
さらに、CPU201は、配列max[0]〜配列max[31]をスキャンして、さらにその中の最大値を求める。そして、CPU201は、その最大値のX座標及びY座標を、第1の反射シートの注目点の座標(X1,Y1)として保存する。
【0409】
次に、第2の反射シートの注目点(第2注目点)の座標算出について説明する。CPU201は、配列max[0]〜max[31]のうちの最大値、つまり、第1の反射シートの注目点の座標(X1,Y1)に位置するピクセルの差分データ、を中心に所定範囲をマスクする。この点を図面を用いて説明する。
【0410】
図64は、第2の反射シートの注目点の座標算出の説明図である。図64に示すように、CPU201は、配列max[0]〜max[31]のうちの最大値(図64の例では、X=9、Y=9)を中心に所定範囲をマスク(太枠で囲った部分)する。
【0411】
そして、CPU201は、このマスクした範囲を除いて、配列max[0]〜max[31]をスキャンする。つまり、この例では、CPU201は、配列max[0]〜max[6]、及び、配列max[12]〜max[31]をスキャンする。
【0412】
そして、CPU201は、そのスキャンした配列max[0]〜max[6]、及び、配列max[12]〜max[31]のうちから、最大値を求める。状CPU201は、求めた最大値のX座標及びY座標を、第2の反射シートの注目点の座標(X2,Y2)として保存する。図64の例では、最大値は、配列max[22]であり、従って、第2の反射シートの注目点の座標は、X2=22、Y2=10、である。なお、図64の例では、第1の反射シートの注目点の座標は、X1=9、Y1=9、となっている。
【0413】
なお、第1注目点及び第2注目点の座標を求める際の最大値の検出は、実際は、スキャンしながら行われる。上記では、説明の便宜のため、スキャンした後に、最大値を求めるように記載している。
【0414】
さて、以上のように本実施の形態によれば、ストロボスコープにより間欠的に光が照射される剣3をイメージセンサ43により撮影して、剣3の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、イメージセンサ43の撮影範囲である検知空間(三次元)に存在する剣3の状態情報を取得できる。従って、剣3の操作範囲が二次元平面に制限されることがないため、オペレータ94による剣3の操作の制約が小さく、操作の自由度を大きくできる。
【0415】
また、テレビジョンモニタ90のスクリーン91に対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0416】
さらに、剣3を振ったことに基づくトリガ(剣軌跡登録に相当)により、剣3の移動軌跡を表現する剣軌跡オブジェクト117がスクリーン91に表示される。このため、オペレータ94は、現実に目で見ることができない移動軌跡を、スクリーン91上で見ることができ、剣3を振った実感をより味合うことができる。
【0417】
この場合、フレームごとに幅の異なる帯状オブジェクトを表示することにより、剣3の移動軌跡を表現する。このときの帯状オブジェクトの幅は、フレームの更新とともに太くなった後、フレームの更新とともに細くなる(図27〜図29参照)。
【0418】
このため、鋭い閃光が走ったような、剣3の移動軌跡を表示できる。特に、帯状オブジェクトの色を工夫することで、その効果をより高めることができる。
【0419】
さらに、スクリーン91に表示される仮想世界に、オペレータ94が操作した剣3の移動軌跡が出現するため、このような剣3の移動軌跡の表示を通じて、オペレータ94は、仮想世界との接触が可能となり、仮想世界をより楽しむことができる。つまり、オペレータ94は、あたかも、スクリーン91に表示されるゲーム世界で、ゲームを楽しんでいるような実感を得ることができる。
【0420】
さらに、撮像手段5により検知された反射面(例えば、反射シート17,23)に応じて、異なる画像(例えば、剣軌跡オブジェクト117、盾オブジェクト123)が表示されるため、単一の操作物3を操作するだけで、反射面の数に応じた、異なる画像を表示できる。このため、異なる画像ごとに、対応する操作物を用意したり、スイッチやアナログスティック等を操作物に設けたり、する必要がない。従って、操作物3のコストの低減が可能になるとともに、オペレータ94による操作物3の操作性を向上できる。
【0421】
さらに、オペレータ94は、剣3のどの反射面(例えば、反射シート17,23)を撮像手段5に向けるかによって、所望の画像を表示できる(例えば、剣軌跡オブジェクト117、盾オブジェクト123)。従って、オペレータ94は、単一の剣3で、様々な画像を表示させることができて、ゲームを円滑に実行できる。
【0422】
さらに、CPU201は、剣3の面積情報(図2〜図5参照)、数情報(図61(a)参照)、形状情報(図61(c)参照)、若しくは、形状を表す比率情報(図61(b)参照)、のいずれか、又は、そのうちのいくつかの情報、を算出することができる。従って、これらの情報により、剣3の刀身部の側面の反射シート17,550,551,555,560が撮影されたのか、あるいは、剣3の半円柱状部材21の反射シート23/剣3の刃先部の反射シート31が撮影されたのか、を判別することができる。
【0423】
このように、剣3の刀身部15に取り付ける反射シートのサイズ又は形状を、剣3の半円柱状部材21あるいは剣3の刃先部に取り付ける反射シートと異ならせるだけで、いずれの反射シートが撮影されたのかを容易に判別できる。特に、剣3の面積情報により、反射シートを判別する場合は、過った判別を極力減少させることができるだけでなく、処理を容易にできて処理の高速化を図ることができる。
【0424】
さらに、剣軌跡オブジェクト117と敵オブジェクト115との位置関係が所定条件を満たしたことに基づくトリガ(エフェクト登録)により、エフェクト119が加えられた敵オブジェクト121がスクリーン91に表示される(図15参照)。
【0425】
このように、オペレータ94の操作に基づいて表示される剣軌跡オブジェクト117を通じて、スクリーン91に表示された、言わば仮想世界の敵オブジェクト115にエフェクトを与えることができる。このため、オペレータ94は、仮想世界をより一層楽しむことができる。
【0426】
さらに、CPU201は、剣3の注目点の数、つまり、剣3の検知回数が3以上の場合に、剣軌跡オブジェクト117を表示させるトリガ(剣軌跡登録)を発生するため、オペレータ94が意図しない操作により、意図しないときに、剣軌跡オブジェクト117が出現することを防止できる(図22参照)。
【0427】
さらに、CPU201は、剣3の注目点の数(剣3の検知回数)が3以上の場合に、剣3の最初の注目点と最後の注目点とに基づいて、剣軌跡オブジェクト117の態様(スイング情報)を決定する(図22〜図26参照)。このため、剣3の移動軌跡をより的確に反映した剣軌跡オブジェクト117の態様を決定できる。
【0428】
なお、剣3の近接する2つの注目点に基づいて、剣軌跡オブジェクト117の態様を決定すると、例えば、次の不都合がある。オペレータ94が、自分の感覚で直線的に剣3を移動させた場合でも、実際には、若干の円弧を描いている場合もある。この場合には、当然、イメージセンサ43には、円弧を描くように剣3が撮影される。このときに、近接する2つの注目点に基づいて、剣軌跡オブジェクト117の態様を決定すると、オペレータ94の感覚とずれた態様の剣軌跡オブジェクト117が表示されることになる。例えば、剣3を横に振ったつもりが、斜め方向の剣軌跡オブジェクト117が表示されるような事態である。
【0429】
さらに、剣3の状態情報に基づくトリガ(説明進行登録に相当)により、スクリーン91に文字列を次々に表示させることができるため、文字列の更新に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図17参照)。
【0430】
さらに、剣3の状態情報に基づくトリガ(進行登録に相当)により、背景を更新することができるため、背景の更新に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図18参照)。
【0431】
さらに、CPU201は、剣3の位置情報を補正する補正情報Kx,Kyを取得する。そして、CPU201は、補正情報Kx,Kyを用いて、補正後の位置情報を算出する。このため、オペレータ94が剣3を操作する感覚と、CPU201が算出する剣3の位置情報と、のずれを極力解消できるため、オペレータ94による剣3の操作をより的確に反映した画像を表示できる。
【0432】
さらに、剣3の位置情報に基づいて、カーソル101を移動させることができるため、カーソル101の移動に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図12参照)。
【0433】
さらに、剣3の状態情報に基づいて、予め定められた処理を実行することを確定する。例えば、剣3を一定以上の速さで、縦方向に振り下ろすことで、項目オブジェクト109の選択が確定され、選択された項目に応じた処理の実行が開始される(図12参照)。このように、剣3の状態情報に基づいて、処理の実行の確定ができるため、処理の実行の確定に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0434】
さらに、カーソル503が人オブジェクト501に重なったときに、その人オブジェクト501に関連付けられた説明オブジェクト500が表示される(図57参照)。このため、オペレータ94は、剣3の操作によりカーソル503を移動させるだけで、表示されている人オブジェクト501に関連付けられた画像を表示させることができる。
【0435】
さらに、カーソル101により選択された文字をスクリーン91に表示できる(図58参照)。このため、オペレータ94は、剣3の操作によりカーソル101を移動させて所望の文字を選択するだけで、文字を入力できるため、文字入力に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0436】
さらに、剣3の状態情報に基づくトリガにより、剣3の動きに応じた炎オブジェクト510をスクリーン91に表示できる。これにより、剣3の移動軌跡を表現する剣オブジェクト117と異なった視覚的効果を、オペレータ94に与えることができる(図59参照)。
【0437】
さらに、剣軌跡登録が行われてから(トリガが発生してから)、所定時間経過後に(人間の感覚で)、剣3の移動軌跡を表現する剣軌跡オブジェクト117をスクリーン91に表示することもできる。この場合、剣軌跡オブジェクト117を、剣軌跡登録(トリガの発生)とほぼ同時(人間の感覚で同時)に表示する場合と比較して、異なった効果を、オペレータ94に与えることができる。
【0438】
さらに、剣3の連続した状態情報が所定条件(例えば、剣3を、縦→横→縦、に連続して振る、等)を満足したときに、所定のオブジェクトを表示することもできる。これにより、剣3の操作が所定条件を満足したときにのみ、所定のオブジェクトが表示されるため、この所定条件の設定の仕方によって、所定のオブジェクトを表示させるための、オペレータ94による剣3の操作を任意にコントロールできる。
【0439】
さらに、剣3の操作方向を指示するガイドオブジェクト520〜522及び操作タイミングを指示する進行バー523を表示することもできる。この場合は、オペレータは、情報処理装置1が要求する剣3の操作方向及び操作タイミングを視覚的に認識できる。
【0440】
さらに、CPU201は、状態情報として、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、それらのうちのいくつか、又は、それらの全部、を算出できる。このため、オペレータ94による剣3の様々な動きに応じたオブジェクトをスクリーン91に表示できる。
【0441】
さらに、剣軌跡登録(トリガ)に基づいて、テレビジョンモニタ90のスピーカから効果音を発生させることができる。このため、オペレータ94に対して、視覚的効果に加えて、聴覚的効果を与えることができる。従って、オペレータ94は、スクリーン91に表示される仮想世界をより一層楽しむことができる。例えば、オペレータ94が操作した剣3の移動軌跡117が仮想世界に出現すると同時に、効果音を発生させれば、オペレータ94は、仮想世界をより一層楽しむことができる。
【0442】
さらに、操作物3の複数の反射シート575,576の状態情報に応じて画像を表示することもできるため、単一の反射シートの状態情報に応じて画像を表示する場合と比較して、操作物3の状態をより反映した画像を表示できる(図62参照)。
【0443】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置1のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0444】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0445】
(1)実施の形態では、剣型の操作物3を例に挙げたが(図2、図4、図61)、本発明は、これに限定されない。また、本発明は、図62の操作物3にも限定されない。つまり、光を反射できる部材(例えば、再帰反射シート)を備えていれば、任意の形状の操作物3を使用できる。
【0446】
(2)実施の形態では、図27〜図29のアニメーションにより、剣軌跡オブジェクト117を表現したが、本発明は、これに限定されない。
【0447】
(3)実施の形態では、2種類の反射面(例えば、図2の反射シート17,23)を操作物3に設けたが、1種類でもよく、また、3種類以上でもよい。
【0448】
(4)図7の高速プロセッサ200として、任意の種類のプロセッサを使用できるが、本件出願人が既に特許出願している高速プロセッサ(商品名:XaviX)を用いることが好ましい。この高速プロセッサは、例えば、特開平10−307790号公報およびこれに対応するアメリカ特許第6,070,205号に詳細に開示されている。
【0449】
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。従って、本願の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。
【技術分野】
【0001】
本発明は、オペレータに保持されて動きが与えられる操作物を、ストロボスコープを用いて検出した結果に基づいて、ディスプレイ装置に画像を表示す情報処理装置及びその関連技術に関する。
【背景技術】
【0002】
日本国特開2003−79943号公報(図1、図3)に記載された従来の画像生成システムについて、図面を用いて説明する。
【特許文献1】特開2003−79943号公報
【0003】
図65は、従来の画像生成システムの説明図である。図65に示すように、検知面形成枠1000内に、二次元の検知面1100が形成される。検知面形成枠1000の辺sd1の2つ角部には、センサs1,s2が設けられる。
【0004】
センサs1は、発光部及び受光部を有している。発光部は、角度θ1が0度〜90度の間で赤外線を出力し、受光部は、その戻り光を検知する。被検出物である操作物に反射部材が取り付けられているため、その反射部材により反射された赤外線が、受光部により受光される。センサs2についても同様である。
【0005】
センサs1によって受光された結果は、結像im1として得られる。センサs2によって受光された結果は、結像im2として得られる。結像im1,im2では、被検出物としての操作物が、検知面1100を横切ると、操作物に遮光されない部分が影となって現れるので、影とならない部分を、角度θ1,θ2として判別できる。センサs1,s2が固定されているため、角度θ1,θ2から、操作物が検知面1100を横切る位置p(x,y)を特定できる。
【0006】
検知面枠1000内に形成される検知面1100の各位置と、画面の各位置と、を一対一に対応付けておくことで、操作物が検知面1100を横切る位置に対応した画面上での位置を特定できる。
【0007】
このようにして、操作物の画面上での位置あるいは位置の変化量を求めて、それを画面上のオブジェクトの動きに反映する。
【0008】
しかしながら、上記のように、従来の画像生成システムでは、検知面枠1000を形成し、さらに、その両角部にセンサs1,s2を配置する必要がある。このため、システムが大掛かりなものとなって、高価になるばかりでなく、広い設置場所が必要となる。従って、この従来のシステムは、一般家庭に向いているとは言い難い。
【0009】
また、検知面1100の各位置と、画面の各位置と、を一対一に対応付ける必要があるため、検知面枠1000の形状を決定する際の制約が大きい。このことも、設置場所が制限される一因となる。
【0010】
さらに、オペレータは、検知面枠1000の範囲で、操作物を操作しなければならず、操作物を操作する際の制約が大きい。一方、操作物の操作の制約を小さくしようとすると、検知面枠1000を大きくしなければならず、設置場所の制限が大きくなるとともに、高価なものとなって、一般家庭での購入が困難となる。
【0011】
さらに、二次元の検知面1100を横切るように、操作物を操作しなければならず、このこともまた、操作物を操作する際の制約を大きくする。つまり、二次元の検知面1100を横切らなければならないので、オペレータは、検知面1100に垂直なz軸方向に操作物を移動させることができなくなって、操作の自由度が小さくなる。上記文献に開示されているように、検知面枠を2つ設けても、この問題を十分に解消することはできない。しかも、検知面枠を増やせば、上記した設置場所の問題及び価格の問題がさらに大きくなり、一般家庭での購入がさらに困難なものとなる。
【発明の概要】
【発明が解決しようとする課題】
【0012】
そこで、本発明は、省スペースの実現及び操作の自由度の向上を図りながらも、オペレータにより操作される操作物の検出結果を反映した画像をディスプレイ装置に表示できる情報処理装置及びその関連技術を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の第1の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号を基に、前記操作物の状態情報を算出し、その状態情報に基づいて、第1のトリガを発生する状態情報算出手段と、前記第1のトリガに基づいて、前記操作物の移動軌跡を表現する第1のオブジェクトを前記ディスプレイ装置に表示させる画像表示処理ユニットと、を備える。
【0014】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0015】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0016】
さらに、操作物の状態情報に基づく第1のトリガにより、操作物の移動軌跡を表現する第1のオブジェクトがディスプレイ装置に表示される。このため、オペレータは、現実に目で見ることができない移動軌跡を、ディスプレイ装置上で見ることができ、操作物を操作した実感をより味合うことができる。
【0017】
さらに、ディスプレイ装置に表示される仮想世界に、オペレータが操作した操作物の移動軌跡が出現する。このような操作物の移動軌跡の表示を通じて、オペレータは、仮想世界との接触が可能となり、仮想世界をより楽しむことができる。例えば、本発明の情報処理装置をゲーム装置として使用する場合は、オペレータは、あたかも、ディスプレイ装置に表示されるゲーム世界で、ゲームを楽しんでいるような実感を得ることができる。
【0018】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0019】
ここで、本明細書において、操作物の「操作」とは、操作物を移動させること、又は、操作物を回転させること、等を意味し、スイッチを押下したり、アナログスティックを動かしたり、等は含まない。
【0020】
上記の情報処理装置において、前記移動軌跡を表現する前記第1のオブジェクトは、帯状オブジェクトであり、前記画像表示処理ユニットは、フレームごとに幅の異なる前記帯状オブジェクトを前記ディスプレイ装置に表示することにより、前記操作物の移動軌跡を表現し、前記帯状オブジェクトの前記幅は、フレームの更新とともに太くなった後、フレームの更新とともに細くなる。
【0021】
この構成によれば、鋭い閃光が走ったような移動軌跡を表示できる。特に、帯状オブジェクトの色を工夫することで、その効果をより高めることができる。
【0022】
上記の情報処理装置において、前記画像表示処理ユニットは、第2のオブジェクトを前記ディスプレイ装置に表示し、前記状態情報算出手段は、前記第2のオブジェクトと、前記操作物の移動軌跡を表現する前記第1のオブジェクトと、の位置関係が所定条件を満たしたときに、第2のトリガを発生し、前記画像表示処理ユニットは、前記第2のトリガに基づいて、予め定められたエフェクトを与えた前記第2のオブジェクトを前記ディスプレイ装置に表示する。
【0023】
この構成によれば、位置関係が所定の条件を満たすように、オペレータが操作物を操作すると、その移動軌跡を表現する第1のオブジェクトを通じて、ディスプレイ装置に表示された、言わば仮想世界の第2のオブジェクトにエフェクトを与えることができる。このため、オペレータは、仮想世界をより一層楽しむことができる。
【0024】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報としての速さ情報が、予め定められた第1の閾値を超えてから、予め定められた第2の閾値を下回るまでの、前記操作物の前記状態情報としての位置情報を算出し、あるいは、前記操作物の前記速さ情報が、前記予め定められた第1の閾値を超えてから、前記撮像手段による撮影範囲を超える前までの、前記操作物の前記位置情報を算出し、かつ、前記操作物の前記位置情報の取得回数が3以上の場合に、前記操作物の最初の前記位置情報と、前記操作物の最後の前記位置情報と、に基づいて、前記操作物の移動軌跡を表現する前記第1のオブジェクトの態様を決定し、かつ、前記操作物の前記位置情報の取得回数が3以上の場合に、前記状態情報に基づいて、前記第1のトリガを発生する。
【0025】
この構成によれば、操作物の位置情報の取得回数、つまり、操作物の検知回数が3以上の場合に、第1のトリガを発生するため、オペレータが意図しない操作により、意図しないときに、第1のオブジェクトが出現することを防止できる。
【0026】
また、操作物の位置情報の取得回数(操作物の検知回数)が3以上の場合に、操作物の最初の位置情報と最後の位置情報とに基づいて、操作物の移動軌跡を表現する第1のオブジェクトの態様が決定される。このため、操作物の移動軌跡をより的確に反映した第1のオブジェクトの態様を決定できる。
【0027】
なお、操作物の近接する2つの位置情報に基づいて、第1のオブジェクトの態様を決定すると、例えば、次の不都合がある。オペレータが、自分の感覚で直線的に操作物を移動させた場合でも、実際には、若干の円弧を描いている場合もある。この場合には、当然、撮像手段には、円弧を描くように操作物が撮影される。このときに、近接する2つの位置情報に基づいて、第1のオブジェクトの態様を決定すると、オペレータの感覚とずれた態様の第1のオブジェクトが表示されることになる。
【0028】
ここで、第1のオブジェクトの態様とは、第1のオブジェクトの角度及び/又は方向等の、表示する第1のオブジェクトの形態のことである。
【0029】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報としての面積情報を算出し、その面積情報が、予め定められた第3の閾値を超えたときに、第3のトリガを発生し、前記画像表示処理ユニットは、前記第3のトリガに基づいて、第3のオブジェクトを前記ディスプレイ装置に表示する。
【0030】
この構成によれば、操作物の広い反射面が撮影されたときに、第3のオブジェクトが表示されることになる。つまり、オペレータが、操作物の広い反射面を撮像手段に向けると、第3のオブジェクトが表示される。従って、単一の操作物の操作により、様々な画像を表示できる。また、様々な画像を表示するために、複数の操作物を用意したり、操作物にスイッチやアナログスティック等を設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0031】
上記の情報処理装置において、前記画像表示処理ユニットは、文字列を前記ディスプレイ装置に表示し、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第4のトリガを発生し、前記画像表示処理ユニットは、前記第4のトリガに基づいて、前記文字列と異なる文字列を前記ディスプレイ装置に表示する。
【0032】
この構成によれば、操作物の状態情報に基づいて、ディスプレイ装置上に文字列を次々に表示させることができるため、文字列の更新に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0033】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第5のトリガを発生し、前記画像表示処理ユニットは、前記第5のトリガに基づいて、背景画像を更新する。
【0034】
この構成によれば、操作物の状態情報に基づいて、背景を更新することができるため、背景の更新に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0035】
上記の情報処理装置において、前記操作物の前記状態情報としての位置情報を補正する補正情報を取得する補正情報取得ユニット、をさらに備え、前記状態情報算出手段は、前記補正情報を用いて、補正後の位置情報を算出する。
【0036】
この構成によれば、オペレータが操作物を操作する感覚と、状態情報算出手段が算出する操作物の状態情報と、のずれを極力解消できるため、オペレータによる操作物の操作をより的確に反映した画像を表示できる。
【0037】
上記の情報処理装置において、前記画像表示処理ユニットは、カーソルを前記ディスプレイ装置に表示し、かつ、前記操作物の前記状態情報としての位置情報に応じて、前記カーソルを移動させる。
【0038】
この構成によれば、操作物の状態情報に基づいて、カーソルを移動することができるため、カーソルの移動に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0039】
上記の情報処理装置において、前記操作物の前記状態情報に基づいて、予め定められた処理を実行することを確定する。
【0040】
この構成によれば、操作物の状態情報に基づいて、処理の実行の確定ができるため、処理の実行の確定に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0041】
上記の情報処理装置において、前記画像表示処理ユニットは、前記カーソルが第4のオブジェクトに重ねて表示されたときに、その第4のオブジェクトに関連付けられた画像を前記ディスプレイ装置に表示する。
【0042】
この構成によれば、オペレータは、操作物の操作によりカーソルを移動させるだけで、表示されている第4のオブジェクトに関連付けられた画像を表示させることができる。
【0043】
上記の情報処理装置において、前記画像表示処理ユニットは、前記カーソルにより選択された文字を前記ディスプレイ装置に表示する。
【0044】
この構成によれば、オペレータは、操作物の操作によりカーソルを移動させて所望の文字を選択するだけで、文字を入力できるため、文字入力に使用するスイッチやアナログスティック等を操作物に設ける必要もなく、操作物の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0045】
上記の情報処理装置において、前記状態情報算出手段は、前記操作物の前記状態情報に基づいて、第6のトリガを発生し、前記画像表示処理ユニットは、前記第6のトリガに基づいて、前記操作物の動きに応じた第5のオブジェクトを前記ディスプレイ装置に表示する。
【0046】
この構成によれば、操作物の移動軌跡を表現する第1のオブジェクトと異なった視覚的効果を、オペレータに与えることができる。
【0047】
上記の情報処理装置において、前記画像表示処理ユニットは、前記第1のトリガが発生してから、所定時間経過後に、前記操作物の移動軌跡を表現する前記第1のオブジェクトを前記ディスプレイ装置に表示する。
【0048】
この構成によれば、操作物の移動軌跡を表現する第1のオブジェクトを、第1のトリガの発生とほぼ同時(人間の感覚で同時)に表示する場合と比較して、異なった効果を、オペレータに与えることができる。
【0049】
上記の情報処理装置において、前記画像表示処理ユニットは、前記操作物の連続した前記状態情報が所定条件を満足したときに、第6のオブジェクトを表示する。
【0050】
この構成によれば、操作物の操作が所定条件を満足したときにのみ、第6のオブジェクトが表示されるため、この所定条件の設定の仕方によって、第6のオブジェクトを表示させるための、オペレータによる操作物の操作を任意にコントロールできる。
【0051】
上記の情報処理装置において、前記画像表示処理ユニットは、前記操作物の操作方向及び操作タイミングを指示するガイドを表示する。
【0052】
この構成によれば、オペレータは、情報処理装置が要求する操作物の操作方向及び操作タイミングを視覚的に認識できる。
【0053】
上記の情報処理装置において、前記操作物の前記状態情報は、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、である。
【0054】
この構成によれば、オペレータによる操作物の様々な動きに応じたオブジェクトをディスプレイ装置に表示できる。
【0055】
上記の情報処理装置において、前記第1のトリガに基づいて、スピーカから効果音を発生させる効果音生成ユニット、をさらに備える。
【0056】
この構成によれば、オペレータに対して、視覚的効果に加えて、聴覚的効果を与えることができる。従って、オペレータは、ディスプレイ装置に表示される仮想世界をより一層楽しむことができる。例えば、オペレータが操作した操作物の移動軌跡が仮想世界に出現すると同時に、効果音を発生させれば、オペレータは、仮想世界をより一層楽しむことができる。
【0057】
本発明の第2の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、複数の反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号を基に、前記操作物の状態情報を算出して、その状態情報に基づいて、前記複数の反射面のいずれの反射面が撮影されたかを判別する状態情報算出手段と、判別された前記反射面に応じて、前記ディスプレイ装置に異なる画像を表示させる画像表示処理ユニットと、を備える。
【0058】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0059】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0060】
さらに、検知された反射面に応じて、異なる画像が表示されるため、単一の操作物を操作するだけで、反射面の数に応じた、異なる画像を表示できる。このため、異なる画像ごとに、対応する操作物を用意したり、スイッチやアナログスティック等を操作物に設けたり、する必要がない。従って、操作物のコストの低減が可能になるとともに、オペレータによる操作物の操作性を向上できる。
【0061】
さらに、オペレータは、操作物のどの反射面を撮像手段に向けるかによって、所望の画像を表示できる。例えば、本発明の情報処理装置をゲーム装置として使用する場合は、オペレータは、単一の操作物で、様々な画像を表示させることができて、ゲームを円滑に実行できる。
【0062】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0063】
上記の情報処理装置において、前記状態情報は、前記反射面の面積情報、数情報、形状情報、若しくは、形状を表す比率情報、のいずれか、又は、それらの組み合わせ、である。
【0064】
この構成によれば、状態情報算出手段は、これらの情報により、操作物のいずれの反射面が撮影されたのかを判別することができる。従って、反射面のサイズ又は形状を異ならせるだけで、いずれの反射面が撮影されたのかを容易に判別できる。特に、面積情報により、反射面を判別する場合は、過った判別を極力減少させることができるだけでなく、処理を容易にできて処理の高速化を図ることができる。
【0065】
本発明の第3の形態によると、情報処理装置は、オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、複数の反射面を有する前記操作物に、予め定められた周期で、光を照射するストロボスコープと、前記ストロボスコープの発光時及び消灯時のそれぞれにおいて、前記操作物を撮影して、発光時画像及び消灯時画像を取得する撮像手段と、前記発光時画像と前記消灯時画像との差分信号を生成する差分信号生成ユニットと、前記差分信号に基づいて、前記反射面ごとの状態情報を算出する状態情報算出手段と、前記複数の反射面の前記状態情報に応じて、画像を表示させる画像表示処理ユニットと、を備える。
【0066】
この構成によれば、ストロボスコープにより間欠的に光が照射される操作物を撮像手段により撮影して、操作物の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、撮像手段の撮影範囲である検知空間(三次元)に存在する操作物の状態情報を取得できる。従って、操作物の操作範囲が二次元平面に制限されることがないため、オペレータによる操作物の操作の制約が小さく、操作の自由度を大きくできる。
【0067】
また、ディスプレイ装置のスクリーンに対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0068】
さらに、複数の反射面の状態情報に応じて画像を表示するため、単一の反射面の状態情報に応じて画像を表示する場合と比較して、操作物の状態をより反映した画像を表示できる。
【0069】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0070】
本発明の第4の形態によると、ゲームシステムは、ゲームを行うためのゲームシステムであって、オペレータによって実際に動かされる操作物と、オペレータによって動かされている操作物を撮影するイメージセンサと、ゲームを行う際にディスプレイ装置に接続され、前記イメージセンサからイメージ信号を受け取り、前記ゲームのコンテンツを前記ディスプレイ装置に表示する処理装置と、を備え、前記操作物は、前記イメージセンサによって撮影された前記操作物のイメージに基づいて、前記ゲームにおいて所定の役割を担っており、前記ゲームを行っている際に、前記処理装置によって前記ディスプレイ装置に表示される前記ゲームのコンテンツにおける、前記操作物の移動軌跡の表示は、帯状イメージに簡略化されており、この帯状イメージは、前記オペレータによって動かされる前記操作物の、前記ディスプレイ装置上の表示における移動動跡の少なくとも2点を結ぶものであり、この少なくとも2点は、前記イメージセンサで撮影されたイメージから取得される。
【0071】
本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
【図面の簡単な説明】
【0072】
【図1】本発明の実施の形態における情報処理システムの全体構成を示す図である。
【図2】図1の情報処理装置及び剣の拡大図である。
【図3】図2の剣の上面図である。
【図4】図1の剣の他の例の拡大図である。
【図5】図4の剣の上面図である。
【図6】図2の撮像手段の一例を示す図解図である。
【図7】図1の情報処理装置の電気的な構成を示す図である。
【図8】図7の高速プロセッサのブロック図である。
【図9】図7のイメージセンサから高速プロセッサへピクセルデータを取り込む構成及びLED駆動回路を示す回路図である。
【図10】(a)図9のイメージセンサが出力するフレームステータスフラグ信号FSFのタイミング図である。(b)図9のイメージセンサが出力するピクセルデータストローブ信号PDSのタイミング図である。(c)図9のイメージセンサが出力するピクセルデータD(X,Y)のタイミング図である。(d)図9の高速プロセッサが出力するLEDコントロール信号LEDCのタイミング図である。(e)図9の赤外発光ダイオードの点灯状態を示すタイミング図である。(f)図9のイメージセンサの露光期間を示すタイミング図である。
【図11】(a)は、図10のフレームステータスフラグ信号FSFの拡大図である。(b)図10のピクセルデータストローブ信号PDSの拡大図である。(c)図10のピクセルデータD(X,Y)の拡大図である。
【図12】図1のテレビジョンモニタのスクリーンに表示される選択画面の例示図である。
【図13】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面の例示図である。
【図14】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面の他の例示図である。
【図15】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図16】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図17】図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。
【図18】(a)図12の選択画面で「ストーリーモード」の項目オブジェクトが選択されたときのゲーム画面のさらに他の例示図である。(b)図18(a)の更新後のゲーム画面の例示図である。
【図19】図12の選択画面で「対戦モード」の項目オブジェクトが選択されたときのゲーム画面の例示図である。
【図20】図7のROMに格納されたプログラム及びデータを示す概念図である。
【図21】(a)一般的なイメージセンサにより撮影された、特別な処理を施さない画像の例示図である。(b)図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(c)赤外フィルタを介したイメージセンサの点灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(d)赤外フィルタを介したイメージセンサの消灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図である。(e)点灯時の画像信号と消灯時の画像信号との差分信号の例示図である。
【図22】図7の高速プロセッサが剣のスイングを検出する際の説明図である。
【図23】(a)実施の形態における角度フラグの値と角度との関係図である。(b)実施の形態における方向フラグの値と方向を表す符号との関係図である。(c)実施の形態における角度フラグ及び方向フラグと、スイング情報と、の関係図である。
【図24】図23(c)のスイング情報と、剣の操作方向と、の関係図である。
【図25】図23(c)のスイング情報とアニメーションテーブル格納位置情報との関係図である。
【図26】図7のROMに格納された、剣軌跡オブジェクトをアニメーションするためのアニメーションテーブルの例示図である。
【図27】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの例示図である。
【図28】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの他の例示図である。
【図29】図14の剣軌跡オブジェクトのアニメーションを行うためのオブジェクト画像データの他の例示図である。
【図30】図7の高速プロセッサによるヒット判定の説明図である。
【図31】図12の選択画面で「スイング補正」の項目オブジェクトが選択されたときの、スイング補正画面の例示図である。
【図32】図1の情報処理装置の全体の処理の流れを示すフローチャートである。
【図33】図32のステップS1の初期設定処理の流れを示すフローチャートである。
【図34】図33のステップS20のセンサ初期設定処理の流れを示すフローチャートである。
【図35】図34のステップS31のコマンド送信処理の流れを示すフローチャートである。
【図36】(a)図9のレジスタ設定クロックCLKのタイミング図である。(b)図9のレジスタデータのタイミング図である。
【図37】図34のステップS33のレジスタ設定処理の流れを示すフローチャートである。
【図38】図32のステップS7のストーリーモードの流れを示すフローチャートである。
【図39】図38のステップS60のピクセルデータ群取得処理の流れを示すフローチャートである。
【図40】図39のステップS81のピクセルデータ取得処理の流れを示すフローチャートである。
【図41】図38のステップS61の注目領域抽出処理の流れを示すフローチャートである。
【図42】図38のステップS62の注目点抽出処理の流れを示すフローチャートである。
【図43】図38のステップS63のスイング検出処理の流れを示すフローチャートである。
【図44】図43のステップS166の剣軌跡種類決定処理の流れを示すフローチャートである。
【図45】図43のステップS167の剣軌跡座標算出処理の流れを示すフローチャートである。
【図46】図38のステップS64のヒット判定処理の流れを示すフローチャートである。
【図47】図38のステップS65の盾検出処理の流れを示すフローチャートである。
【図48】図38のステップS66の説明進行処理の流れを示すフローチャートである。
【図49】図38のステップS67の前進処理の流れを示すフローチャートである。
【図50】図38のステップS70の画像表示処理の流れを示すフローチャートである。
【図51】図32のステップS5のモード選択処理の流れを示すフローチャートである。
【図52】図51のステップS303のカーソル移動処理の流れを示すフローチャートである。
【図53】図51のステップS304の項目オブジェクト移動処理の流れを示すフローチャートである。
【図54】図32のステップS6のスイング補正モードの流れを示すフローチャートである。
【図55】図54のステップS404の補正情報取得処理の流れを示すフローチャートである。
【図56】図6の撮像手段によるストロボスコープ撮影処理の流れを示すフローチャートである。
【図57】本実施の形態におけるゲーム画面の他の例示図である。
【図58】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図59】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図60】本実施の形態におけるゲーム画面のさらに他の例示図である。
【図61】(a)図1の剣のさらに他の例示図である。(b)図1の剣のさらに他の例示図である。図61は、図1の剣のさらに他の例示図である。
【図62】実施の形態における操作物の他の例示図である。
【図63】実施の形態における第1の反射シートの注目点の座標算出の説明図である。
【図64】実施の形態における第2の反射シートの注目点の座標算出の説明図である。
【図65】従来の画像生成システムの説明図である。
【発明を実施するための形態】
【0073】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。
【0074】
図1は、本発明の実施の形態における情報処理システムの全体構成を示す図である。図1に示すように、この情報処理システムは、情報処理装置1、操作物3、及び、テレビジョンモニタ90、を含む。
【0075】
本実施の形態では、操作物3の1例として、剣型の操作物3(以下、本実施の形態では、「剣3」と呼ぶ。)を挙げている。そして、本実施の形態では、情報処理の1例として、ゲーム処理を挙げる。
【0076】
情報処理装置1には、ACアダプタ92により、直流電源電圧が与えられる。ただし、ACアダプタ92に代えて、電池(図示せず)により、直流電源電圧を与えることもできる。
【0077】
テレビジョンモニタ90には、その前面にスクリーン91が設けられる。テレビジョンモニタ90と情報処理装置1とは、AVケーブル93により接続される。
【0078】
情報処理装置1は、例えば、図1に示すように、テレビジョンモニタ90の上面に載置される。
【0079】
図2は、図1の情報処理装置1及び剣3の拡大図である。図3は、図2の剣3の上面図である。
【0080】
図2に示すように、情報処理装置1のハウジング11には、撮像手段5が組み込まれる。撮像手段5は、4つの赤外発光ダイオード7及び赤外フィルタ9を含む。赤外発光ダイオード7の発光部は、赤外フィルタ9から露出している。
【0081】
撮像手段5の赤外発光ダイオード7は、間欠的に赤外光を発光する。赤外発光ダイオード7からの赤外光は、剣3により反射され、赤外フィルタ9の内部に設けられた撮像素子(後述)に入力される。このようにして、剣3が間欠的に撮影される。従って、情報処理装置1は、オペレータ94により振り動かされた剣3の間欠的な画像信号を取得できる。情報処理装置1は、この画像信号を解析して、その解析結果を、ゲーム処理に反映する。
【0082】
また、情報処理装置1の背面から、メモリカートリッジ13を装着することができる。このメモリカートリッジ13には、EEPROM(electrically
erasable and programmable read only memory)が内蔵されている(図示せず)。このEEPROMには、1人でプレイするストーリーモードのゲーム結果を保存することができる。
【0083】
また、図2及び図3に示すように、剣3の刀身部15の両面には、反射シート17が取り付けられる。この反射シート17により、反射面が形成される。また、剣3の鍔部19の両面には、半円柱状部材21が取り付けられる。この半円柱状部材21の曲面には、反射シート23が取り付けられる。この反射シート23により、反射面が形成される。反射シート17,23は、例えば、再帰反射シートである。
【0084】
また、図2に示すように、剣3の柄頭25には、ストラップ27が取り付けられる。オペレータ94は、このストラップ27を手首に通して、剣3の柄29を握る。これにより、オペレータ94が、過って柄29から手を離した場合でも、剣3が予期せぬ所へ飛んでいくの防止し、安全が図られる。
【0085】
図4は、図1の剣3の他の例の拡大図である。図5は、図4の剣3の上面図である。図4及び図5の剣3には、図2及び図3の半円柱状部材21が設けられていない。その代わり、図4及び図5の剣3では、その刃先部に反射シート31(例えば、再帰反射シート)が取り付けられる。図4及び図5の剣3では、反射シート31が、図2及び図3の剣3の反射シート23の機能を果たすことになる。なお、以下では、図2及び図3に示した剣3を用いて説明を行う。
【0086】
図6は、図2の撮像手段5の一例を示す図解図である。図6に示すように、この撮像手段5は、たとえばプラスチック成型によって形成されるユニットベース45を含み、このユニットベース45内には支持筒47が取り付けられる。支持筒47の上面には内面が逆円錐形状であるラッパ状の開口41が形成され、その開口41の下方の筒状部内部には、いずれもがたとえば透明プラスチックの成型によって形成された凹レンズ49および凸レンズ51を含む光学系が設けられ、凸レンズ51の下方において、撮像素子としてのイメージセンサ43が固着される。したがって、イメージセンサ43は、開口41からレンズ49および51を通して入射する光に応じた画像を撮影することができる。
【0087】
イメージセンサ43は、低解像度のCMOSイメージセンサ(たとえば32ピクセル×32ピクセル:グレースケール)である。ただし、このイメージセンサ43は、画素数のもっと多いものでもよいし、CCD等の他の素子からなるものであってよい。以下では、イメージセンサ43が、32ピクセル×32ピクセルからなるものとして説明を行う。
【0088】
また、ユニットベース45には、光出射方向がいずれも上方向とされた複数(実施の形態では4つ)の赤外発光ダイオード7が取り付けられる。この赤外発光ダイオード7によって、撮像手段5の上方に赤外光が照射される。また、ユニットベース45の上方には、赤外フィルタ(赤外光のみを透過するフィルタ)9が上記開口41を覆うように、取り付けられる。そして、赤外発光ダイオード7は後述のように、点灯/消灯(非点灯)が連続的に繰り返されるので、ストロボスコープとして機能する。ただし、「ストロボスコープ」とは、運動体を間欠的に照らす装置の総称である。したがって、上記イメージセンサ43は、その撮影範囲内で移動する物体、実施の形態では、剣3を撮影することになる。なお、後述する図9に示すように、ストロボスコープは、主に、赤外発光ダイオード7、LED駆動回路82、及び、高速プロセッサ200、により構成される。
【0089】
ここで、撮像手段5は、イメージセンサ43の受光面が、水平面から所定角度(例えば、90度)だけ傾くように、ハウジング11に組み込まれる。また、凹レンズ49および凸レンズ51により、イメージセンサ43の撮影範囲は、例えば、60度の範囲である。
【0090】
図7は、図1の情報処理装置1の電気的な構成を示す図である。図7に示すように、情報処理装置1は、イメージセンサ43、赤外発光ダイオード7、映像信号出力端子61、音声信号出力端子63、高速プロセッサ200、ROM(read
only memory)65、及び、バス67、を含む。
【0091】
高速プロセッサ200には、バス67が接続される。さらに、バス67には、ROM65が接続される。従って、高速プロセッサ200は、バス67を介して、ROM65にアクセスすることができるので、ROM65に格納された制御プログラムをリードして実行でき、また、ROM65に格納された画像データ及び音声データをリードして処理し、映像信号及び音声信号を生成して、映像信号出力端子61及び音声信号出力端子63に出力することができる。
【0092】
また、情報処理装置1の背面にはメモリカートリッジ13を装着するためのコネクタ(図示せず)が設けられる。従って、高速プロセッサ200は、バス67を介して、そのコネクタに装着されたメモリカートリッジ13に内蔵されるEEPROM69にアクセスできる。これにより、高速プロセッサ200は、バス67を介して、EEPROM69に格納されたデータをリードして、ゲーム処理に利用することができる。
【0093】
さて、剣3は、赤外発光ダイオード7が発光する赤外光に照射され、その赤外光を反射シート17,23で反射する。この反射シート17,23からの反射光がイメージセンサ43によって検知され、したがって、イメージセンサ43からは反射シート17,23の画像信号が出力される。イメージセンサ43からのこのアナログ画像信号は高速プロセッサ200に内蔵されたA/Dコンバータ(後述)によってデジタルデータに変換される。そして、高速プロセッサ200は、このデジタルデータを解析して、その解析結果をゲーム処理に反映する。
【0094】
図8は、図7の高速プロセッサ200のブロック図である。図8に示すように、この高速プロセッサ200は、中央演算処理装置(CPU:central
processing unit)201、グラフィックプロセッサ202、サウンドプロセッサ203、DMA(direct memory access)コントローラ204、第1バス調停回路205、第2バス調停回路206、内部メモリ207、A/Dコンバータ(ADC:analog
to digital converter)208、入出力制御回路209、タイマ回路210、DRAM(dynamic random access memory)リフレッシュ制御回路211、外部メモリインタフェース回路212、クロックドライバ213、PLL(phase−locked
loop)回路214、低電圧検出回路215、第1バス218、及び、第2バス219、を含む。
【0095】
CPU201は、メモリ(内部メモリ207、又は、ROM65)に格納されたプログラムに従い、各種演算やシステム全体の制御を行う。CPU201は、第1バス218及び第2バス219のバスマスタであり、それぞれのバスに接続された資源にアクセスが可能である。
【0096】
グラフィックプロセッサ202は、第1バス218及び第2バス219のバスマスタであり、内部メモリ207、又は、ROM65に格納されたデータを基に、映像信号を生成して、映像信号出力端子61へ出力する。グラフィックプロセッサ202は、第1バス218を通じて、CPU201により制御される。また、グラフィックプロセッサ202は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0097】
サウンドプロセッサ203は、第1バス218及び第2バス219のバスマスタであり、内部メモリ207、又は、ROM65に格納されたデータを基に、音声信号を生成して、音声信号出力端子63へ出力する。サウンドプロセッサ203は、第1バス218を通じて、CPU201により制御される。また、サウンドプロセッサ203は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0098】
DMAコントローラ204は、ROM65及びEEPROM69から、内部メモリ207へのデータ転送を司る。また、DMAコントローラ204は、データ転送の完了を通知するために、CPU201に対する割込み要求信号220を発生する機能を有する。DMAコントローラ204は、第1バス218及び第2バス219のバスマスタである。DMAコントローラ204は、第1バス218を通じてCPU201により制御される。
【0099】
第1バス調停回路205は、第1バス218の各バスマスタからの第1バス使用要求信号を受け付け調停を行い、各バスマスタへの第1バス使用許可信号を発行する。各バスマスタは、第1バス使用許可信号を受領することによって第1バス218に対するアクセスが許可される。ここで、第1バス使用要求信号及び第1バス使用許可信号は、図8では、第1バス調停信号222として示されている。
【0100】
第2バス調停回路206は、第2バス219の各バスマスタからの第2バス使用要求信号を受け付け、調停を行い、各バスマスタへの第2バス使用許可信号を発行する。各バスマスタは、第2バス使用許可信号を受領することによって第2バス219に対するアクセスが許可される。ここで、第2バス使用要求信号及び第2バス使用許可信号は、図8では、第2バス調停信号223として示されている。
【0101】
内部メモリ207は、マスクROM、SRAM(static
random access memory)、及び、DRAMのうち、必要なものを備える。バッテリによるSRAMのデータ保持が必要とされる場合、バッテリ217が必要となる。DRAMが搭載される場合、定期的にリフレッシュと呼ばれる記憶内容保持のための動作が必要とされる。
【0102】
ADC208は、アナログ入力信号をデジタル信号に変換する。このデジタル信号は、第1バス218を介してCPU201によってリードされる。また、ADC208は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0103】
このADC208が、イメージセンサ43からのピクセルデータ(アナログ)を受けて、デジタルデータに変換する。
【0104】
入出力制御回路209は、外部入出力装置や外部の半導体素子との通信等を入出力信号を介して行う。入出力信号は、第1バス218を介して、CPU201からリード/ライトされる。また、入出力制御回路209は、CPU201に対して、割込み要求信号220を発生する機能を有する。
【0105】
この入出力制御回路209から、赤外発光ダイオード7を制御するLEDコントロール信号LEDCが出力される。
【0106】
タイマ回路210は、設定された時間間隔に基づき、CPU201に対する割込み要求信号220を発生する機能を有する。時間間隔等の設定は、第1バス218を介してCPU201によって行われる。
【0107】
DRAMリフレッシュ制御回路211は、一定期間毎に第1バス218の使用権を無条件に獲得し、DRAMのリフレッシュ動作を行う。なお、DRAMリフレッシュ制御回路211は、内部メモリ207がDRAMを含む場合に設けられる。
【0108】
PLL回路214は、水晶振動子216より得られる正弦波信号を逓倍した高周波クロック信号を生成する。
【0109】
クロックドライバ213は、PLL回路214より受け取った高周波クロック信号を、各ブロックへクロック信号225を供給するのに十分な信号強度へ増幅する。
【0110】
低電圧検出回路215は、電源電圧Vccを監視し、電源電圧Vccが一定電圧以下のときに、PLL回路214のリセット信号226、その他のシステム全体のリセット信号227を発行する。また、内部メモリ207がSRAMで構成されており、かつ、SRAMのバッテリ217によるデータ保持が要求される場合、電源電圧Vccが一定電圧以下のときに、バッテリバックアップ制御信号224を発行する機能を有する。
【0111】
外部メモリインタフェース回路212は、第2バス219をバス67に接続するための機能を有する。
【0112】
ここで、図9〜図11を参照して、イメージセンサ43から高速プロセッサ200へピクセルデータを取り込むための構成を詳細に説明する。
【0113】
図9は、図7のイメージセンサ43から高速プロセッサ200へピクセルデータを取り込む構成及びLED駆動回路を示す回路図である。図10は、図7のイメージセンサ43から高速プロセッサ200へピクセルデータを取り込む際の動作を示すタイミング図である。図11は、図10の一部を拡大して示すタイミング図である。
【0114】
図9に示すように、イメージセンサ43は、ピクセルデータD(X,Y)をアナログ信号として出力するタイプのものであるため、このピクセルデータD(X,Y)は高速プロセッサ200のアナログ入力ポートに入力される。アナログ入力ポートは、この高速プロセッサ200においてADC208に接続され、したがって、高速プロセッサ200は、ADC208からデジタルデータに変換されたピクセルデータをその内部に取得する。
【0115】
上述のアナログピクセルデータD(X,Y)の中点は、イメージセンサ43の基準電圧端子Vrefに与えられる基準電圧によって決定される。そのため、イメージセンサ43に関連して例えば低抗分圧回路からなる基準電圧発生回路81が設けられ、この回路81から基準電圧端子Vrefに常に一定の大きさの基準電圧が与えられる。
【0116】
イメージセンサ43を制御するための各デジタル信号は、高速プロセッサ200のI/Oポートに与えられ、またはそこから出力される。このI/Oポートは各々入力/出力の制御が可能なデジタルポートであり、この高速プロセッサ200で入出力制御回路209に接続されている。
【0117】
詳しく言うと、高速プロセッサ200の出力ポートからはイメージセンサ43をリセットするためのリセット信号resetが出力され、イメージセンサ43に与えられる。また、イメージセンサ43からは、ピクセルデータストローブ信号PDSおよびフレームステータスフラグ信号FSFが出力され、それらの信号が高速プロセッサ200の入力ポートに与えられる。
【0118】
ピクセルデータストローブ信号PDSは上述の各ピクセルデータD(X,Y)を読み込むための図10(b)に示すようなストローブ信号である。フレームステータスフラグ信号FSFはイメージセンサ43の状態を示すフラグ信号で、図10(a)に示すように、このイメージセンサ43の露光期間を規定する。つまり、フレームステータスフラグ信号FSFの図10(a)に示すローレベルが露光期間を示し、図10(a)に示すハイレベルが非露光期間を示す。
【0119】
また、高速プロセッサ200は、イメージセンサ43の制御レジスタ(図示せず)に設定するコマンド(またはコマンド+データ)をレジスタデータとしてI/Oポートから出力するとともに、たとえばハイレベルおよびローレベルを繰り返すレジスタ設定クロックCLKを出力し、それらをイメージセンサ43に与える。
【0120】
なお、赤外発光ダイオードとして、図9に示すように互いに並列接続された4つの赤外発光ダイオード7a,7b,7cおよび7dを用いる。この4つの赤外発光ダイオード7a〜7dは、上で説明したように、剣3を照らすように、イメージセンサ43の視点方向と同一方向に赤外光を照射するようにかつイメージセンサ43を囲むように配置される。ただし、これら個別の赤外発光ダイオード7a〜7dは、特に区別する必要がある場合を除いて、単に赤外発光ダイオード7と呼ばれる。
【0121】
この赤外発光ダイオード7はLED駆動回路82によって、点灯されまたは消灯(非点灯)される。LED駆動回路82は、イメージセンサ43から上述のフレームステータスフラグ信号FSFを受け、このフラグ信号FSFは、抵抗83およびコンデンサ84からなる微分回路85を通してPNPトランジスタ86のベースに与えられる。このPNPトランジスタ86にはさらにプルアップ抵抗87が接続されていて、このPNPトランジスタ86のベースは、通常は、ハイレベルにプルアップされている。そして、フレームステータス信号FSFがローレベルになると、そのローレベルが微分回路85を経てベースに入力されるため、PNPトランジスタ86は、フラグ信号FSFがローレベル期間にのみオンする。
【0122】
PNPトランジスタ86のエミッタは抵抗88および89を介して接地される。そして、エミッタ抵抗88および89の接続点がNPNトランジスタ31のベースに接続される。このNPNトランジスタ31のコレクタが各赤外発光ダイオード7a〜7dのアノードに共通に接続される。NPNトランジスタ31のエミッタが別のNPNトランジスタ33のベースに直接接続される。NPNトランジスタ33のコレクタが各赤外発光ダイオード7a〜7dのカソードに共通接続され、エミッタが接地される。
【0123】
このLED駆動回路82では、高速プロセッサ200のI/Oポートから出力されるLEDコントロール信号LEDCがアクティブ(ハイレベル)でありかつイメージセンサ43からのフレームステータスフラグ信号FSFがローレベルである期間にのみ赤外発光ダイオード7が点灯される。
【0124】
図10(a)に示すようにフレームステータスフラグ信号FSFがローレベルになると、そのローレベル期間中(実際には微分回路85の時定数での遅れがあるが)、PNPトランジスタ86がオンする。したがって、図10(d)に示すLEDコントロール信号LEDCが高速プロセッサ200からハイレベルで出力されると、NPNトランジスタ31のベースがハイベルとなり、このトランジスタ31がオンとなる。トランジスタ31がオンするとトランジスタ33はオンとなる。したがって、電源(図9では小さい白丸で示す)から各赤外発光ダイオード7a〜7dおよびトランジスタ33を経て電流が流れ、応じて図10(e)に示すように各赤外発光ダイオード7a〜7dが点灯される。
【0125】
LED駆動回路82では、このように、図10(d)のLEDコントロール信号LEDCがアクティブでありかつ図10(a)のフレームステータスフラグ信号FSFがローレベルである期間にのみ赤外発光ダイオード7が点灯されるので、イメージセンサ43の露光期間(図10(f)参照)にのみ赤外発光ダイオード7が点灯されることになる。
【0126】
したがって、無駄な電力消費を抑制することができる。さらに、フレームステータスフラグ信号FSFはコンデンサ84によってカップリングされているので、万一イメージセンサ43の暴走等によりそのフラグ信号FSFがローレベルのまま停止した場合でも、一定時間後にはトランジスタ86は必ずオフされ、赤外発光ダイオード7も一定時間後には必ずオフされる。
【0127】
このように、フレームステータス信号FSFの持続期間を変更することによって、イメージセンサ43の露光時間を任意にかつ自在に設定または変更することができる。
【0128】
さらに、フレームステータス信号FSFおよびLEDコントロール信号LEDCの持続時間や周期を変更することによって、赤外発光ダイオード7すなわちストロボスコープの発光期間、非発光期間、発光/非発光周期などを任意にかつ自在に変更または設定できる。
【0129】
先に説明したように、赤外発光ダイオード7からの赤外光によって剣3が照射されると、剣3からの反射光によってイメージセンサ43が露光される。応じて、イメージセンサ43から上述のピクセルデータD(X,Y)が出力される。詳しく説明すると、イメージセンサ43は、上述の図10(a)のフレームステータスフラグ信号FSFがハイレベルの期間(赤外発光ダイオード7の非点灯期間)に図10(b)に示すピクセルデータストローブPDSに同期して、図10(c)に示すようにアナログのピクセルデータD(X,Y)を出力する。
【0130】
高速プロセッサ200では、そのフレームステータスフラグ信号FSFとピクセルデータストローブPDSとを監視しながら、ADC208を通じて、デジタルのピクセルデータを取得する。
【0131】
ただし、ピクセルデータは、図11(c)に示すように、第0行,第1行,…第31行と行順次に出力される。ただし、後に説明するように、各行の先頭の1ピクセルはダミーデータとなる。ここで、イメージセンサ43の水平方向(横方向、行方向)をX軸とし、垂直方向(縦方向、列方向)をY軸として、原点を左上の角とする。
【0132】
さて、次に、情報処理装置1によるゲーム処理について、具体例を挙げながら説明する。
【0133】
図12は、図1のテレビジョンモニタ90のスクリーン91に表示される選択画面の例示図である。オペレータ94が、情報処理装置1の背面に設けられた電源スイッチ(図示せず)をオンにすると、例えば、図12に示すような選択画面が表示される。本実施の形態では、選択できる項目の1例として、「ストーリーモードA」〜「ストーリーモードE」(包括的に表すときは、「ストーリーモード」と表記する。)、「対戦モード」、及び、「スイング補正モード」、を挙げている。
【0134】
選択画面には、剣型のカーソル101、左移動指示オブジェクト103、右移動指示オブジェクト105、選択枠107、及び、項目オブジェクト109、が表示される。オペレータ94が、剣3を動かすと、その動きに応じて、画面上のカーソル101が移動する。このカーソル101を、左移動指示オブジェクト103に重ねると、項目オブジェクト109が、左方向に移動する。同様に、このカーソル101を、右移動指示オブジェクト105に重ねると、項目オブジェクト109が、右方向に移動する。
【0135】
このように、オペレータ94は、剣3によりカーソル101を操作して、選択したい項目オブジェクト109を、選択枠107内に静止させる。オペレータ94が、剣3を一定速度以上の大きさで振り下ろすと、選択が確定する。すると、情報処理装置1は、選択が確定した項目オブジェクト109に対応した処理を実行する。以下、オペレータ94が選択可能な各項目での処理について、図面を用いて説明する。
【0136】
図13〜図18(a)(b)は、図12の選択画面で「ストーリーモード」の項目オブジェクト109が選択されたときのゲーム画面の例示図である。ストーリーモードでは、スクリーン91には、図13示すようなゲーム画面が表示され、オペレータ94が1人で行うゲーム処理が実行される。このゲーム画面には、ゲームストーリに沿って、敵オブジェクト115が表示される。
【0137】
また、オペレータ94が剣3を横方向(水平方向)に振ると、剣3を振ったことがトリガとなって、ゲーム画面には、図14に示すような横方向の剣軌跡オブジェクト117が出現する。剣軌跡オブジェクト117は、剣3の実空間での移動軌跡(斬り跡)を表現するオブジェクトである。従って、図示は省略しているが、剣3が斜めに振られると、斜め方向に、剣軌跡オブジェクト117が出現し、剣3が縦方向(垂直方向)に振られると、縦方向に、剣軌跡オブジェクト117が出現する。
【0138】
このような剣軌跡オブジェクト117を出現させるには、オペレータ94は、剣3の刀身部15の縁を撮像手段5に向けて、一定以上の速度で振る必要がある。つまり、オペレータ94が、このように剣3を振ると、剣3の半円柱状部材21の反射シート23が、撮像手段5により撮像され、その処理結果を基に剣軌跡オブジェクト117のトリガが発生する。
【0139】
さて、オペレータ94が剣3を振ったときに出現する剣軌跡オブジェクト117の一部が、敵オブジェクト115を含む所定範囲内に存在する場合は、図15に示すように、エフェクト119が与えられた敵オブジェクト121が表示される。こうすることで、オペレータ94は、剣軌跡オブジェクト117が敵オブジェクト115にヒットしたことを判断できる。敵オブジェクト115への連続したヒット回数が所定値を超えると、強さ情報が更新され、強さがアップする。強さ情報には、例えば、生命力を表現するライフ情報、及び、使用できる特殊技の数を表現するポイント情報、等が含まれる。このような強さ情報は、例えば、対戦モードを実行するときのために、メモリカートリッジ13に格納される。
【0140】
また、オペレータ94が、剣3の刀身部15の側面を撮像手段5に向けると、図16に示すように、盾オブジェクト123が出現する。つまり、剣3の刀身部15の側面を撮像手段5に向けると、刀身部15の側面に取り付けられた反射シート17が撮像手段5により撮影され、その処理結果を基に盾オブジェクト123のトリガが発生する。
【0141】
この盾オブジェクト123は、剣3の刀身部15の側面を撮像手段5に向けて動かすと、その動きに沿って画面上を移動する。従って、剣3を操作して、盾オブジェクト123を動かすことで、敵オブジェクト125の攻撃(図16の例では、炎オブジェクト127)を防御できる。つまり、オペレータ94が、剣3を動かして、盾オブジェクト123を移動させ、敵オブジェクト125からの炎オブジェクト127にタイミングよく盾オブジェクト123を重ねることができれば、炎オブジェクト127は消滅し、敵オブジェクト125の攻撃を防御できる。
【0142】
さて、ストーリーモードでは、図17に示すような、説明オブジェクト129が、スクリーン91に表示される場合がある。この場合、オペレータ94は、説明オブジェクト129の指示に従って、剣3を操作して、ゲームを進める。図17の例では、オペレータ94が剣3を振ると、その時表示されていた説明オブジェクト129が消滅して、次の説明オブジェクトがスクリーン91に表示される。つまり、オペレータ94が、剣3の刀身部15の縁を撮像手段5に向けて振ると、剣3の半円柱状部材21の反射シート23が、撮像手段5により撮影され、その処理結果を基に、説明オブジェクト129を次の説明オブジェクトに進めるためのトリガが発生する。
【0143】
また、ストーリーモードでは、図18(a)に示すような説明オブジェクト132が表示される場合もある。この場合、オペレータ94が、剣3の刃先部を撮像手段5に向けると、図18(b)に示すように、オペレータ94が実空間を前進したような画面が表示される。つまり、オペレータ94が、剣3の刃先を撮像手段5に向けると、静止した剣3の半円柱状部材21の反射シート23が、撮像手段5により撮影され、その処理結果を基に、画面(背景画像)を次に進めるためのトリガが発生する。
【0144】
さて次に、対戦モードについて説明する。対戦モードでは、情報処理装置1が、2人のオペレータ94のそれぞれのメモリカートリッジ13に格納された強さ情報を読み取り、その強さ情報を前提にして、対戦ゲームが実行される。メモリカートリッジ13に格納されている強さ情報は、2人のオペレータ94のそれぞれが、ストーリーモードによるゲームで取得した強さ情報である。情報処理装置1は、2人のオペレータ94のそれぞれの強さ情報を読み取ると、次のようなゲーム画面を表示する。
【0145】
図19は、図12の選択画面で「対戦モード」の項目オブジェクト109が選択されたときのゲーム画面の例示図である。図19に示すように、対戦モードのゲーム画面には、生命力を表現するライフ情報131a,131b、使用できる特殊技の数を表現するポイント情報141a,141b、対戦オブジェクト133a,133b、及び、コマンド選択部135a,135b、が表示される。コマンド選択部135a,135bには、選択枠137a,137b及びコマンドオブジェクト139a,139bが表示される。
【0146】
ライフ情報131a,131bは、それぞれ、各オペレータ94のメモリカートリッジ13から取得したライフ情報である。図19の例では、残りライフを棒グラフで表現している。ポイント情報141a,141bは、それぞれ、各オペレータ94のメモリカートリッジ13から取得したポイント情報である。
【0147】
2人のオペレータ94のいずれかが、剣3を振ると、コマンド選択部135a,135bのコマンドオブジェクト139a,139bが、左方向へ回転する。そして、一方のオペレータ94が、自分の剣3を振って、コマンド選択部135aで回転しているコマンドオブジェクト139aを静止させる。同様に、他方のオペレータ94が、自分の剣3を振って、コマンド選択部135bで回転しているコマンドオブジェクト139bを静止させる。
【0148】
そして、選択枠137a,137b内で静止したコマンドオブジェクト139a,139bに従って対戦処理が実行される。図19の例では、対戦オブジェクト133aは、「無防備」の状態となり、対戦オブジェクト133bから、「攻撃C」を受ける。すると、対戦オブジェクト133aのライフ情報131aが減少する。このように、オペレータ94のそれぞれが静止させたコマンドオブジェクト139a,139bに従って、対戦が行われる。
【0149】
攻撃のコマンド139a,139bの強さは、A、B、Cの順となっている。同様に、防御のコマンド139a,139bの強さも、A、B、Cの順となっている。
【0150】
強さに差がある攻撃のコマンドが選択された場合、弱いコマンドを選択したほうがダメージを受け、強さの差に応じてライフ情報が減少する。また、強さが同じ攻撃のコマンドが選択された場合、鍔迫り合いとなる。このときは、所定時間内に、より多く剣3を振ったオペレータの対戦オブジェクトが、振りの少ないオペレータの対戦オブジェクトにダメージを与えることができ、ライフを減少させることができる。
【0151】
強い攻撃のコマンド及び弱い防御のコマンドが選択された場合、弱い防御のコマンドを選択したほうがダメージを受け、強さの差に応じてライフ情報が減少する。弱い攻撃のコマンド及び強い防御のコマンドが選択された場合、防御側はダメージを受けない。強さが同じ攻撃のコマンド及び防御のコマンドが選択された場合は、両者ダメージを受けない。
【0152】
ポイント情報141a,141bは、特殊技を使用したら減少する。特殊技は、特殊技のコマンドオブジェクト139a,139bを静止させたときに実行される。
【0153】
さて、次に、情報処理装置1によるゲーム処理の詳細を説明する。
【0154】
図20は、図7のROM65に格納されたプログラム及びデータを示す概念図である。図20に示すように、ROM65には、制御プログラム102、画像データ103、及び、音声データ105、が格納される。これらのプログラム及びデータの内容は以下の説明の中で明らかになる。
【0155】
図8のCPU201は、イメージセンサ43が出力したアナログのピクセルデータを変換したデジタルのピクセルデータを取得して、配列P[X][Y]に代入する。なお、上記のように、イメージセンサ43の水平方向(横方向、行方向)をX軸、垂直方向(縦方向、列方向)をY軸としている。
【0156】
そして、CPU201は、赤外発光ダイオード7の点灯時のピクセルデータP[X][Y]と、消灯時のピクセルデータP[X][Y]と、の差分を算出して、差分データを配列Dif[X][Y]に代入する。ここで、図面を用いて、差分を求める効果を説明する。ここで、ピクセルデータは輝度を表す。よって、差分データも輝度を表す。
【0157】
図21(a)は、一般的なイメージセンサにより撮影された、特別な処理を施さない画像の例示図、図21(b)は、図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(c)は、赤外フィルタ9を介したイメージセンサ43の点灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(d)は、赤外フィルタ9を介したイメージセンサ43の消灯時の画像信号を或る閾値でレベル弁別したときの画像信号の例示図、図21(e)は、点灯時の画像信号と消灯時の画像信号との差分信号の例示図、である。
【0158】
上記のように、剣3に赤外光を照射し、赤外フィルタ9を介してイメージセンサ43に入射した反射赤外光による画像を撮影している。一般的な室内環境で一般的な光源を用いて剣3をストロボスコープ撮影した場合には、一般的なイメージセンサ(図6のイメージセンサ43に相当する。)には、図21(a)に示すように、剣3による画像以外に、蛍光灯光源、白熱灯光源、太陽光(窓)のような光源だけでなく、室内のすべてのものの画像がすべて写り込む。したがって、この図21(a)の画像を処理して剣3の画像のみを抽出するのは、かなり高速のコンピュータまたはプロセサが必要である。しかしながら、安価が条件の装置ではそのような高性能コンピュータを使えない。そこで種々の処理を行って負担を軽減することが考えられる。
【0159】
なお、図21(a)の画像は、本来ならば、白黒の階調により表される画像であるが、その図示を省略している。また、図21(a)〜図21(e)は、剣3の刀身部15の縁をイメージセンサに向けた場合の画像であるため、反射シート17ではなく、反射シート23が撮影されている。なお、2つの反射シート23の距離が近いため、通常、2つの反射シート23は、1点として撮影される。
【0160】
さて、図21(b)は、図21(a)の画像信号を或る閾値でレベル弁別したときの画像信号である。このようなレベル弁別処理は専用のハードウェア回路でも、ソフトウェア的にでも、実行することができるが、いずれの方法によっても、一定以下の光量のピクセルデータをカットするレベル弁別を実行すると、剣3や光源以外の低輝度画像を除去することができる。この図21(b)の画像では剣3および室内の光源以外の画像の処理を省略でき、したがって、コンピュータの負担を軽減できるが、それでも、光源画像を含む高輝度画像が依然として写り込んでいるので、剣3と他の光源を分別することは難しい。
【0161】
そこで、図6に示したように赤外フィルタ9を利用して、イメージセンサ43に赤外光による画像以外の画像が写らないようにした。それによって、図21(c)に示すように、赤外光を殆ど含まない蛍光灯光源の画像は除去できる。しかしながら、それでもなお太陽光や白熱灯が画像信号中に含まれてしまう。したがって、更なる負担軽減のために、赤外ストロボスコープの点灯時のピクセルデータと消灯時のピクセルデータとの差分を計算することとした。
【0162】
そのため、図21(c)の点灯時の画像信号のピクセルデータと、図21(d)の消灯時の画像信号のピクセルデータとの差分を計算した。すると、図21(e)に示すように、その差分だけの画像が取得できる。この差分データによる画像は、図21(a)と対比すれば明らかなように、剣3によって得られる画像のみを含むことになる。したがって、処理の軽減を図りながらも、剣3の状態情報を取得できる。状態情報とは、例えば、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、等である。
【0163】
以上のような理由で、CPU201は、赤外発光ダイオード7の点灯時のピクセルデータと、消灯時のピクセルデータと、の差分を算出して、差分データを得る。
【0164】
CPU201は算出した差分データDif[X][Y]を基に、剣3の反射面(反射シート17,23)を検出する。具体的には次の通りである。
【0165】
イメージセンサ43は、上記のように、例えば、32ピクセル×32ピクセルからなる。CPU201は、X方向に32ピクセル分の差分データをスキャンし、そして、Y座標をインクリメントし、X方向に32ピクセル分の差分データをスキャンし、そして、Y座標をインクリメントし、というように、Y座標をインクリメントしながら、X方向に32ピクセル分の差分データをスキャンして、所定の閾値Thより大きい差分データを持つピクセル数をカウントしていく。所定の閾値Thより大きい差分データを持つピクセルが存在する場合は、反射シート17又は反射シート23が検出されたと判断される。
【0166】
そして、CPU201は、所定の閾値Thを超えた差分データから最大値を求める。最大の差分データを持つピクセルを剣3の注目点とする。従って、注目点のX座標及びY座標は、最大の差分データを持つピクセルのX座標及びY座標である。さらに、CPU201は、イメージセンサ43上(イメージセンサ43によるイメージ上)のX座標及びY座標を、スクリーン91上(表示画面上)のx座標及びy座標に変換して、x座標及びy座標をそれぞれ配列Px[M]及びPy[M]に代入する。スクリーン91には、グラフィックプロセッサ202が生成した横256画素×縦224画素の画像が表示される。従って、スクリーン91上の位置(x,y)は、スクリーン91の中心を原点(0,0)として、画素の位置で示される。なお、「M」は整数であり、M回目に撮影されたことを意味する。以上のようにして、CPU201は、剣3の注目点を抽出する。
【0167】
CPU201は、抽出した前回と今回の注目点の座標に基づいて、剣3がスイングされたか否かを判断する。詳細は次の通りである。
【0168】
CPU201は、現在の注目点(M)の座標(Px[M],Py[M])と、前回の注目点(M−1)の座標(Px[M−1],Py[M−1])と、を用いて、次式により、剣3の注目点(M)の速度ベクトル(Vx[M],Vy[M])を求める。
【0169】
Vx[M]=Px[M]−Px[M−1] …(1)
Vy[M]=Py[M]−Py[M−1] …(2)
そして、CPU201は、次式により、剣3の注目点(M)の速さV[M]を求める。
【0170】
V[M]=√(Vx[M]2+Vy[M]2) …(3)
CPU201は、注目点(M)の速さV[M]と、所定の閾値ThVと、を比較して、速さV[M]が大きい場合は、剣3が振られたと判断して、スイングフラグをオンにする。
【0171】
CPU201は、剣3のスイング方向を検出する。詳細は次の通りである。
【0172】
図22は、図8のCPU201が剣3のスイング方向を検出する際の説明図である。図22に示すように、スクリーン91の中心を原点とし、256画素×256画素の仮想平面を想定する。仮想平面上の座標は、スクリーン91上の座標と一致する。この仮想平面の範囲外に、仮想の注目点(0)を設定し、この注目点の座標を、(Px[0],Py[0])とする。
【0173】
注目点(1)の速さV[1]が所定の閾値ThVを超えたとする。そして、注目点(2)の速さV[2]及び注目点(3)の速さV[3]も引き続き、所定の閾値ThVをこえており、注目点[4]の速さV[4]が所定の閾値ThV以下になったとする。
【0174】
CPU201は、所定の閾値ThVを最初に超えた注目点(1)の座標(Px[1],Py[1])と、最初に所定の閾値ThV以下になった注目点(4)の座標(Px[4],Py[4])と、に基づいて、剣3のスイング方向を検出する。具体的には、次の通りである。なお、速さが所定の閾値ThVを最初に超えた注目点(S)のx座標及びy座標をそれぞれPx[S]及びPy[S]とし、速さが最初に所定の閾値ThV以下になった注目点(E)のx座標及びy座標をそれぞれPx[E]及びPy[E]とする。
【0175】
CPU201は、次式により、これら2点間の距離を求める。
【0176】
Lx=Px[E]−Px[S] …(4)
Ly=Py[E]−Py[S] …(5)
そして、距離Lx,Lyを、所定の閾値ThVを超えた注目点の数「n」で除算する。図22の例では、n=3である。
【0177】
LxA=Lx/n …(6)
LyA=Ly/n …(7)
なお、CPU201は、所定の閾値ThVを最初に超えた注目点(S)から、イメージセンサ43の撮影範囲内の注目点(図22の例では注目点(4))まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合は、イメージセンサ43の撮影範囲外になる直前に抽出された注目点(図22の例では注目点(4))を注目点(E)として、この注目点(E)と所定の閾値ThVを最初に超えた注目点(S)と、を基に、式(4)〜式(7)の計算を実行する。なお、この場合、n=n−1となる。
【0178】
次に、CPU201は、x方向のスイング長の平均値LxAの絶対値と所定値xrとの間で大小を判断する。また、CPU201は、y方向のスイング長の平均値LyAの絶対値と所定値yrとの間で大小を判断する。その判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより大きく、平均値LyAの絶対値が所定値yrより小さい場合は、剣3が横方向(水平方向)に振られたと判断して、角度フラグを対応する値にセットする。
【0179】
また、判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより小さく、平均値LyAの絶対値が所定値yrより大きい場合は、剣3が縦方向(垂直方向)に振られたと判断して、角度フラグを対応する値にセットする。また、判断の結果、CPU201は、平均値LxAの絶対値が所定値xrより大きく、平均値LyAの絶対値が所定値yrより大きい場合は、剣3が斜め方向に振られたと判断して、角度フラグを対応する値にセットする。
【0180】
さらに、CPU201は、平均値LxAの符号を判断して、x方向フラグを対応する値にセットする。また、CPU201は、平均値LyAの符号を判断して、y方向フラグを対応する値にセットする。なお、x方向フラグ及びy方向フラグを包括して表現するときは、単に方向フラグと呼ぶ。
【0181】
CPU201は、角度フラグ、x方向フラグ、及び、y方向フラグ、にセットされている値に従って、剣3のスイング情報を決定する。剣3のスイング情報は、剣3のスイング方向を表す情報である。このスイング情報により、剣軌跡ブジェクト117の種類が決定される。この点の詳細を説明する。
【0182】
図23(a)は、角度フラグの値と角度との関係図、図23(b)は、方向フラグの値と方向を表す符号との関係図、図23(c)は、角度フラグ及び方向フラグと、スイング情報と、の関係図、である。上記のように、CPU201は、平均値LxA及び平均値LyAの絶対値と、所定値xr及び所定値yrと、の間で大小を判断して、図23(a)に示すように、角度フラグをセットする。
【0183】
また、上記のように、CPU201は、平均値LxA及び平均値LyAの符号を判断して、図23(b)に示すように、x方向フラグ及びy方向フラグをセットする。
【0184】
さらに、図23(c)に示すように、CPU201は、角度フラグ、x方向フラグ、及び、y方向フラグ、にセットされている値から、剣3のスイング情報を決定する。
【0185】
図24は、図23(c)のスイング情報と、剣3の操作方向と、の関係図である。図23及び図24に示すように、スイング情報A0は、剣3が、横方向に、かつ、x軸の正方向(右方向)に操作されたことを意味する。スイング情報A1は、剣3が、横方向に、かつ、x軸の負方向(左方向)に操作されたことを意味する。スイング情報A2は、剣3が、縦方向に、かつ、y軸の正方向(上方向)に操作されたことを意味する。スイング情報A3は、剣3が、縦方向に、かつ、y軸の負方向(下方向)に操作されたことを意味する。スイング情報A4は、剣3が、右上斜め方向に操作されたことを意味する。スイング情報A5は、剣3が、右下斜め方向に操作されたことを意味する。スイング情報A6は、剣3が、左上斜め方向に操作されたことを意味する。スイング情報A7は、剣3が、左下斜め方向に操作されたことを意味する。
【0186】
CPU201は、上記のようにして取得したスイング情報A0〜A7に関連付けられたアニメーションテーブル格納位置情報を登録する(剣軌跡登録:トリガ発生を意味)。アニメーションテーブル格納位置情報は、アニメーションテーブルの格納位置を示す情報である。また、この場合のアニメーションテーブルには、剣軌跡オブジェクト117をアニメーションするための様々な情報が含まれている。
【0187】
なお、注目点の速さ情報が、所定の閾値ThVを超えてから、所定の閾値ThV以下になるまでの、注目点の数が3以上の場合に、上記のアニメーションテーブル絡納位置情報の登録が行われ、3より小さい場合は、登録は行われない。つまり、注目点の数が、2点以下の場合は、上記登録は行われない。また、所定の閾値ThVを最初に超えた注目点から、イメージセンサ43の撮影範囲内の注目点まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合も同様に、注目点の数が3以上の場合に、上記のアニメーションテーブル格納位置情報の登録が行われ、3より小さい場合は、登録は行われない。
【0188】
図25は、スイング情報A0〜A7とアニメーションテーブル格納位置情報との関係図である。図25では、例えば、スイング情報A0,A1とアニメーションテーブル格納位置情報address0とが関連付けられている。ここで、アニメーションテーブル格納位置情報は、アニメーションテーブルが格納されている領域の先頭アドレス情報である。
【0189】
図26は、剣軌跡オブジェクト117をアニメーションするためのアニメーションテーブルの例示図である。図26に示すように、アニメーションテーブルは、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。画像格納位置情報は、画像データの格納位置を示す情報である。この画像データは、アニメーションを行うためのものであるため、コマごとのオブジェクト画像データからなる。なお、画像格納位置情報は、最初のコマのオブジェクト画像データが格納されている領域の先頭アドレス情報である。コマ指定情報は、何コマ目のオブジェクト画像データであるかを示す情報である。持続フレーム数情報は、コマ指定情報が指定するコマのオブジェクト画像データを、何フレーム継続して表示するかを示す情報である。サイズ情報は、オブジェクト画像データのサイズを示す情報である。
【0190】
ここで、図26のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションを行うためのものである。従って、例えば、スイング情報A0,A1は、剣3が横方向に振られたことを示す情報であるため、アニメーションテーブル格納位置情報address0が示すアニメーションテーブルの画像格納位置情報a0は、横方向の剣軌跡を表す剣軌跡オブジェクト117の格納位置を示す。
【0191】
図27(a)〜図27(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの例示図である。図27(a)〜図27(m)のそれぞれが、コマに相当する。図27(a)〜図27(m)に示すように、最初は幅wの狭い帯状の画像(剣軌跡オブジェクト117)が、コマ(時間t)が進むに従って、幅wが広くなり、さらに、コマが進むに従って、幅wが小さくなる。この例は、スイング情報A0,A1に対応する図26の画像格納位置情報a0が示す位置に格納された画像データの1例である。なお、画像格納位置情報a0は、図27(a)のオブジェクト画像データの先頭アドレスを示す。
【0192】
ここで、スプライト及び背景について簡単に説明する。剣軌跡オブジェクト117や盾オブジェクト123等のオブジェクトは、単数又は複数のスプライトから構成される。プライトは、スクリーン91のいずれの位置にでも配置可能な1つの矩形の画素集合(例えば、16画素×16画素)からなる。一方、背景は、矩形の画素集合(例えば、16画素×16画素)の二次元配列からなり、スクリーン91全体を覆う大きさを持つ(例えば、横256画素×縦256画素)。スプライトや背景を構成する矩形の画素集合を、キャラクタと呼ぶ。
【0193】
図27(a)のオブジェクト画像データを構成する各スプライトの格納位置情報(先頭アドレス)は、剣軌跡オブジェクト117の格納位置情報a0とスプライトのサイズとから算出される。また、図27(b)〜図27(m)の各オブジェクト画像データの格納位置情報(先頭アドレス)は、画像格納位置情報a0並びにアニメーションテーブルのコマ指定情報及びサイズ情報から算出される。オブジェクト画像データの各々を構成する各スプライトの格納位置情報(先頭アドレス)は、各オブジェクト画像データの格納位置情報とスプライトのサイズとから算出される。ただし、オブジェクト画像データや各スプライトの格納位置情報を計算で求めるのではなく、アニメーションテーブルに予め持っていてもよい。
【0194】
なお、図27(a)〜図27(m)において、黒く塗りつぶした部分は、透明であることを意味する。また、ハッチングの種類の違いは、色の違いを示している。さらに、この例では、1コマを1フレームだけ表示するため、13コマを13フレームで表示する。なお、フレームの更新は、例えば、1/60秒ごとに行われる。以上のように、コマ(時間t)の進行とともに、剣軌跡オブジェクト117の幅wを、小→大→小、と変化させることで、剣3が振られたことに応じて、鋭い閃光が走ったような剣軌跡の表現が可能となる。
【0195】
図28(a)〜図28(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの他の例示図である。図28(a)〜図28(m)に示すように、最初は幅wの広い帯状の画像(剣軌跡オブジェクト117)が、コマ(時間t)が進むに従って、幅wが狭くなる。また、最初は短い剣軌跡オブジェクト117であるが、コマが進むに従って、長くなり、そして、一定長さになっている。なお、この例は、スイング情報A1に対応する剣軌跡オブジェクト117のアニメーションのためのオブジェクト画像データの1例である。従って、剣軌跡画像は、剣3が移動する方向(図24参照)に対応して右側から出現している。ここで、スイング情報がA0の場合は、図28(a)〜図28(m)のオブジェクト画像データの方向が逆になる。つまり、図28(a)〜図28(d)においては、剣軌跡画像が左側から出現する。同様に、他のスイング情報A2〜A7に対応するオブジェクト画像データにおいても、剣3が移動する方向(図24参照)に対応した方向から剣軌跡画像が出現する。
【0196】
図29(a)〜図29(m)は、剣軌跡オブジェクト117のアニメーションを行うためのオブジェクト画像データの他の例示図である。図29(f)〜図29(m)に示すように、幅wの画像(白で表記)に、残像(ハッチングで表記)を付加することもできる。なお、この例は、スイング情報A1に対応する剣軌跡オブジェクト117のアニメーションのためのオブジェクト画像データの1例である。従って、剣軌跡画像は、剣3が移動する方向(図24参照)に対応して右側から出現している。ここで、スイング情報がA0の場合は、図29(a)〜図29(m)のオブジェクト画像データの方向が逆になる。つまり、図29(a)〜図29(d)においては、剣軌跡画像が左側から出現する。同様に、他のスイング情報A2〜A7に対応するオブジェクト画像データにおいても、剣3が移動する方向(図24参照)に対応した方向から剣軌跡画像が出現する。
【0197】
なお、図27〜図29において、剣軌跡画像を白色で表している部分が存在するが、実際には、所望の色(白色含む。)が付される。
【0198】
さて、CPU201は、剣軌跡オブジェクト117のスクリーン91上の座標を算出する。まず、スイング情報が「A0」又は「A1」の例を挙げる。従って、CPU201は、速さが所定の閾値ThVを最初に超えた注目点(S)のy座標(Py[S])と、速さが最初に所定の閾値ThV以下になった注目点(E)のy座標(Py[E])と、を用いて、剣軌跡オブジェクト117の中心のy座標(yt)を決定する。つまり、次式の通りである。
【0199】
yt=(Py[S]+Py[E])/2 …(8)
一方、剣軌跡オブジェクト117の中心のx座標(xt)は、次式のようになる。
【0200】
xt=0 …(9)
こうすれば、剣軌跡オブジェクト117が出現する縦方向(垂直方向)位置は、オペレータ94による剣3の操作に応じたものとなる。一方、この例では、スイング情報が「A0」又は「A1」であるため、すなわち、剣3が横方向に振られているため、剣軌跡オブジェクト117の中心のx座標(xt)は、画面の中心のx座標、即ち、「0」とすることが適切である。
【0201】
次に、スイング情報が「A2」あるいは「A3」の場合、つまり、剣3が縦方向に振られた場合、を説明する。この場合、速さが所定の閾値ThVを最初に超えた注目点(S)のx座標をPx[S]とし、速さが最初に所定の閾値ThV以下になった注目点(E)のx座標をPx[E]とする。そうすると、剣軌跡オブジェクト117の中心の座標(xt,yt)は、次式のようになる。
【0202】
xt=(Px[S]+Px[E])/2 …(10)
yt=0 …(11)
こうすれば、剣軌跡オブジェクト117が出現する横方向(水平方向)の位置は、オペレータ94による剣3の操作に応じたものとなる。一方、この例では、スイング情報が「A2」又は「A3」であるため、すなわち、剣3が縦方向に振られているため、剣軌跡オブジェクト117の中心のy座標(yt)は、画面の中心のy座標、即ち、「0」とすることが適切である。
【0203】
次に、スイング情報が「A4」あるいは「A7」の場合、つまり、剣3が斜め右上方向あるいは斜め左下方向に振られた場合、を説明する。この場合、CPU201は、剣軌跡オブジェクト117の中心座標算出のため、次式により、仮の座標(xs,ys)を求める。
【0204】
xs=(Px[S]+Px[E])/2 …(12)
ys=(Py[S]+Py[E])/2 …(13)
そして、CPU201は、座標(xs,ys)を通る直線と、スクリーン91の右下がりの対角線と、の交点座標(xI,yI)を求める。この場合の、座標(xs,ys)を通る直線は、スクリーン91の右上がりの対角線と平行な直線である。なお、厳密な交点座標(xI,yI)を求める必要は必ずしもない。こうして求めた交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0205】
スイング情報が「A5」あるいは「A6」の場合、つまり、剣3が斜め右下方向あるいは斜め左上方向に振られた場合、CPU201は、仮の座標(xs,ys)を通る直線と、スクリーン91の右上がりの対角線と、の交点座標(xI,yI)を求める。この場合の、座標(xs,ys)を通る直線は、画面の右下がりの対角線と平行な直線である。なお、厳密な交点座標(xI,yI)を求める必要は必ずしもない。こうして求めた交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0206】
なお、CPU201は、所定の閾値ThVを最初に超えた注目点(S)から、イメージセンサ43の撮影範囲内の注目点(図22の例では注目点(4))まで、全てが所定の閾値ThVを超えており、所定の閾値ThV以下にならなかった場合は、イメージセンサ43の撮影範囲外になる直前に抽出された注目点(図22の例では注目点(4))を注目点(E)として、この注目点(E)と所定の閾値ThVを最初に超えた注目点(S)と、を基に、式(8)〜式(13)の計算を実行する。
【0207】
次に、剣軌跡オブジェクト117が、敵オブジェクト115にヒットしたかどうかの判定手法を説明する。
【0208】
図30は、図8のCPU201によるヒット判定の説明図である。図30に示すように、図22と同じ仮想平面を想定する。また、スイング情報が「A0」又「A1」の剣軌跡オブジェクト117の長手方向の中心線327を想定する。さらに、この中心線327に中心座標が存在する5つの仮想矩形329〜337を想定する。ここで、各仮想矩形329〜337の頂点座標を包括して、座標(xpq,ypq)と表記する。ここで、「p」は、各仮想矩形329〜337を示しており、図30の例では、p=1〜5、である。また、「q」は、仮想矩形329〜337の各々において、各頂点を示しており、図30の例では、q=1〜4、である。
【0209】
一方、m番目(mは自然数)の敵オブジェクト115の中心座標を中心として、ヒットレンジ325を想定する。また、m番目のヒットレンジ325の各頂点の座標を、(xm1,ym1)、(xm1,ym2)、(xm2,ym2)、(xm2,ym1)、とする。
【0210】
CPU201は、xm1<xpq<xm2、を満たし、かつ、ym1<ypq<ym2、を満たすかどうかを、全ての仮想矩形329〜337の全ての頂点座標(xpq,ypq)について判断する。そして、CPU201は、このような条件を満たした頂点座標(xpq,ypq)が存在する場合は、m番目の敵オブジェクト115に剣軌跡オブジェクト117がヒットしたと判定する。つまり、仮想矩形329〜337のうちのいずれかが、ヒットレンジ325と重なった場合は、ヒットしたと判定される。
【0211】
上記のような判定が、表示されている全ての敵オブジェクト115に対して行われる。また、スイング情報が、「A2」〜「A7」の場合も、「A0」及び「A1」の場合と同様であり、仮想矩形がヒットレンジと重なったかどうかで、ヒット判定がなされる。なお、仮想矩形及びヒットレンジが実際に画像として表示されるわけではなく、あくまでも仮想のものである。
【0212】
また、CPU201は、ヒットと判定したときは、エフェクト119を表示するためのヒット登録(トリガ発生を意味)を行う。具体的には、CPU201は、ヒットしたときのスイング情報「A0」〜「A7」に関連付けられたアニメーションテーブル格納位置情報を登録する。この場合のアニメーションテーブル格納位置情報は、エフェクト119のアニメーションを行うためのアニメーションテーブルの格納位置情報である。エフェクト119には方向があるため、スイング情報「A0」〜「A7」の各々に対して、アニメーションテーブル格納位置情報が関連付けられている。図15のエフェクト119は、スイング情報「A0」に関連付けられたアニメーションテーブル格納位置情報が示す位置に格納されたアニメーションテーブルに基づく画像である。なお、エフェクト119のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0213】
また、CPU201は、ヒットと判定したときは、敵オブジェクト115の座標を基に、出現させるエフェクト119の座標を算出する。なぜなら、エフェクト119は、ヒットした敵オブジェクト115の位置に出現させるからである。
【0214】
次に、盾オブジェクト123の制御について説明する。CPU201は、所定の閾値Thより大きい差分データを持つピクセル数と、所定の閾値ThAと、を比較する。そして、CPU201は、所定の閾値Thより大きい差分データを持つピクセル数が、所定の閾値ThAより大きかった場合、反射シート17、つまり、剣3の刀身部15の側面、が検出されたと判断する。即ち、所定の閾値Thより大きい差分データを持つピクセル数が、所定の閾値ThAより多いということは、赤外光を反射する面積が広いということであるから、検知された反射シートは、面積が小さい反射シート23ではなく、面積が大きい反射シート17ということになる。
【0215】
CPU201は、面積の大きい反射シート17を検出したときは、盾オブジェクト123を表示するための盾登録(トリガ発生を意味)を行う。具体的には、CPU201は、盾オブジェクト123のアニメーションのためのアニメーションテーブル格納位置情報を登録する。なお、盾オブジェクト123のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0216】
また、CPU201は、面積の大きい反射シート17が最初に検出されたときの注目点の座標を、最初の盾オブジェクト123の座標(xs,ys)として設定する。
【0217】
さらに、CPU201は、剣3の移動に応じて、盾オブジェクト123を移動させるべく、移動後の盾オブジェクト123の座標を算出する。具体的には、次の通りである。ここで、移動後の剣3の注目点の座標を(Px(M),Py(M))とする。
【0218】
そうすると、CPU201は、次式により、まず、x方向の移動距離lx及びy方向の移動距離lyを求める。なお、次式において、「N」は2以上の整数であり、所定値である。
【0219】
lx=(Px[M]−xs)/N …(14)
ly=(Py[M]−ys)/N …(15)
そして、CPU201は、前回の盾オブジェクト123の座標(xs,ys)から、この移動距離lx,lyだけ移動させた座標を移動後の盾オブジェクト123の座標(xs,ys)とする。つまり、CPU201は、次式により、移動後の盾オブジェクト123の座標を計算する。
【0220】
xs=lx+xs …(16)
ys=ly+ys …(17)
次に、説明オブジェクト129の制御について説明する。CPU201は、説明オブジェクト129が表示されているときに、剣3が縦方向に振り下ろされた場合は、説明進行登録(トリガ発生を意味)を行う。具体的には、CPU201は、次の説明オブジェクト129を表示するためのアニメーションテーブル格納位置情報を登録する。なお、説明オブジェクト129のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。ここで、説明オブジェクト129のように、アニメーションを行わない静止画の場合は、コマは1つであり、また、持続フレーム数情報として、最大の値を入れておき、さらに、ループするようにしている。こうすることで、アニメーションテーブルを用いて、静止画を表示できる。
【0221】
次に、前進制御について説明する。CPU201は、スクリーン91に前進を指示する表示がなされている場合に、剣3の注目点が、所定フレーム数の間、スクリーン91の中心座標を中心にした所定範囲に存在すれば、前進登録(トリガ発生を意味)を行う(図18(a)及び図18(b)参照)。
【0222】
CPU201は、前進登録がされたことを条件として、仮想空間内を前進した距離に基づいて、背景を更新する。例えば、仮想空間内を一定距離進むたびに背景を更新する。具体的には次の通りである。
【0223】
内部メモリ207には、背景を構成する全キャラクタ数と同じ要素数の配列が用意される。そして、配列には、対応するキャラクタの格納位置情報(先頭アドレス)が代入される。従って、背景を更新するときは、配列の全要素を更新する。
【0224】
次に、カーソル101の制御について説明する。CPU201は、選択画面において、剣3の注目点を検出したときに、カーソル登録(トリガ発生を意味)を行う(図12参照)。具体的には、CPU201は、カーソル101のアニメーションのためのアニメーションテーブル格納位置情報を登録する。なお、カーソル101のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。
【0225】
また、CPU201は、剣3の注目点の座標を、最初のカーソル101の座標として設定する。さらに、CPU201は、剣3の移動に応じて、カーソル101を移動させるべく、移動後のカーソル101の座標を算出する。この算出方法は、移動後の盾オブジェクト123の座標の算出方法と同様であり説明を省略する。
【0226】
次に、項目オブジェクト109の制御について説明する。CPU201は、選択画面において、左移動指示オブジェクト103を中心とした所定範囲R1あるいは右移動指示オブジェクト105を中心とした所定範囲R2、にカーソル101が存在するかどうかを判断する。CPU201は、カーソル101が、所定範囲R1内に存在する場合、各項目オブジェクト109の静止位置のx座標から所定値vを差し引く。同様に、CPU201は、カーソル101が、所定範囲R2内に存在する場合、各項目オブジェクト109の静止位置のx座標に所定値vを加える。以上のようにして、移動後の各項目オブジェクト109のx座標を求める。この場合、y座標は固定である。また、項目オブジェクト109が、画面外に移動した場合は、再び右側から出現するように(ループするように)、x座標が設定される。
【0227】
また、CPU201は、項目オブジェクト109の登録を行う。具体的には、CPU201は、項目オブジェクト109の表示のためのアニメーションテーブル格納位置情報を登録する。なお、項目オブジェクト109のアニメーションテーブルは、剣軌跡オブジェクト117のアニメーションテーブルと同様に、画像格納位置情報、コマ指定情報、持続フレーム数情報、及び、サイズ情報、からなる。ただし、説明オブジェクト129と同様に、項目オブジェクト109のアニメーションは行わない。
【0228】
次に、スイング補正について説明する。CPU201は、x方向の補正情報Kx及びy方向の補正情報Kyを取得する。そして、CPU201は、注目点の座標(x,y)に、これらの補正情報Kx,Kyを加味して、注目点の座標(Px[M],Py[M])とする。つまり、CPU201は、Px[M]=x+Kx、Py[M]=y+Ky、とする。以下、補正情報の取得について詳細に説明する。
【0229】
図31は、図12の選択画面で「スイング補正」の項目オブジェクト109が選択されたときの、スイング補正画面の例示図である。図31に示すように、スクリーン91のスイング補正画面には、円形オブジェクト111及び説明オブジェクト113が表示される。オペレータ94は、説明オプジェクト113の説明に従って、画面中心に位置する円形オブジェクト111をねらって、剣3を縦(垂直方向)又は横(水平方向)に振る。
【0230】
オペレータ94が、中心と思って剣3を振った場合でも、イメージセンサ43の向き及び位置と剣3を振る位置との関係により、必ずしも、剣軌跡オブジェクト117が、スクリーン91の中心に表示されるとは限らない。つまり、円形オブジェクト111をねらって、剣3を縦に振った場合でも、x方向に所定距離ずれて、剣軌跡オブジェクト117が表示されたり、また、円形オブジェクト111をねらって、剣3を横に振った場合でも、y方向に所定距離ずれて、剣軌跡オブジェクト117が表示されたり、する場合もある。このずれが、補正情報Kx,Kyであり、これを、剣3の注目点の座標に補正してやれば、オペレータ94がねらった位置に剣軌跡オブジェクト117を出現させることができる。
【0231】
ここで、剣3を一振りしたときに、注目点が複数検出される。そうすると、縦振りのときは、各注目点のx座標の平均値xAを用いて、Kx=xc−xA、とする。また、横振りのときは、各注目点のy座標の平均値yAを用いて、Ky=yc−yA、とする。ここで、座標(xc,yc)は、スクリーン91の中心座標(0,0)である。
【0232】
さて、これまで説明してきた剣軌跡オブジェクト117等の各オブジェクトの座標は、例えば、そのオブジェクトの中心の座標として定義することができる。また、スプライトの座標は、そのスプライトの中心座標として定義することができる。なお、オブジェクトの座標を、例えば、そのオブジェクトを構成する複数のスプライトのうち、左上角のスプライトの中心座標として定義することもできる。
【0233】
次に、図1の情報処理装置1の全体の処理の流れを、フローチャートを用いて説明する。
【0234】
図32は、図1の情報処理装置1の全体の処理の流れを示すフローチャートである。図32に示すように、ステップS1にて、CPU201は、システムの初期設定を実行する。
【0235】
ステップS2にて、CPU201は、ゲーム状態をチェックする。ステップS3にて、CPU201は、ゲームが終了したかどうかを判断する。ゲームが終了していない場合は、CPU201は、ステップS4に進み、ゲーム終了の場合は処理を終了する。
【0236】
ステップS4にて、CPU201は、現在のステートを判断する。モード選択のステートであれば、ステップS5に進み、スイング補正モードであれば、ステップS6に進み、ストーリーモードであれば、ステップS7に進み、対戦モードであれば、ステップS8に進む。なお、ステップS8では、CPU201は、対戦モードのゲーム処理を実行する(図19参照)。
【0237】
ステップS9では、CPU201は、ビデオ同期の割込み待ちかどうかを判断する。本実施の形態では、CPU201は、テレビジョンモニタ90の表示画面を更新するため画像データを、垂直ブランキング期間の開始後にグラフィックプロセッサ202に与える。従って、表示画面を更新するための演算処理が完了したら、ビデオ同期割込みがあるまで処理を進めないようにしている。
【0238】
ステップS9で「YES」であれば、即ち、ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS9に戻る。一方、ステップS9で「NO」であれば、即ち、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS10に進む。
【0239】
ステップS10では、CPU201は、ステップS5〜S8による処理結果に基づいて、画像表示処理を実行し、その後ステップS2に進む。この場合の画像表示処理とは、表示対象の全スプライトの画像情報(各スプライトの格納位置情報及び座標情報)の取得指示および背景表示のための配列の全要素の取得指示をグラフィックプロセッサ202に与えることを言う。グラフィックプロセッサ202は、これらの情報を取得して、必要な処理を施し、各オブジェクトや背景を表す映像信号を生成する。
【0240】
図33は、図32のステップS1の初期設定処理の流れを示すフローチャートである。図33に示すように、ステップS20にて、CPU201は、イメージセンサ43の初期設定処理を行う。ステップS21にて、CPU201は、各種フラグ及びカウンタを初期化する。
【0241】
ステップS22にて、CPU201は、タイマ回路210を発音のための割込み源としてセットする。この割込み処理により、音声処理が実行されて、テレビジョンモニタ90のスピーカから、効果音や音楽などの音声が発生される。具体的には次の通りである。
【0242】
サウンドプロセッサ203は、タイマ割込みに応じたCPU201の指示により、内部メモリ207から音声データ105の格納位置情報を取得する。
【0243】
サウンドプロセッサ203は、取得した格納位置情報を基に、ROM65から音声データ105を読み出して、必要な処理を施し、効果音や音楽などの音声信号を生成する。サウンドプロセッサ203は、生成した音声信号を、音声信号出力端子63に与える。これにより、テレビジョンモニタ90のスピーカから、効果音や音楽などの音声が発生される。なお、音声データ105には、波形データ(音源データ)、及び/又は、エンベロープデータ、が含まれる。
【0244】
例えば、CPU201は、剣軌跡登録がされた場合に(これをトリガとして)、タイマ割込みに応じて、効果音データの格納位置情報の取得指示を出す。すると、サウンドプロセサ203は、その格納位置情報を取得して、ROM65から効果音データを読み出して、効果音の音声信号を生成する。これにより、剣軌跡オブジェクト117の出現と同時に、効果音が発生され、オペレータ94は、剣3を振った実感をより認識できる。
【0245】
図34は、図33のステップS20のセンサ初期設定処理の流れを示すフローチャートである。図34に示すように、最初のステップS30では、高速プロセッサ200は、設定データとして、コマンド“CONF”を設定する。ただし、このコマンド“CONF”は、イメージセンサ43に、高速プロセッサ200からコマンドを送信する設定モードに入ることを知らせるためのコマンドである。そして、次のステップS31にて、コマンド送信処理を実行する。
【0246】
図35は、図34のステップS31のコマンド送信処理の流れを示すフローチャートである。図35に示すように、最初のステップS40では、高速プロセッサ200は、設定データ(ステップS31の場合はコマンド“CONF”)をレジスタデータ(I/Oポート)に設定し、次のステップS41でレジスタ設定クロックCLK(I/Oポート)をローレベルに設定する。その後、ステップS42で規定時間待機した後、ステップS43で、レジスタ設定クロックCLKをハイレベルに設定する。そして、さらにステップS44での規定時間の待機の後、ステップS45でレジスタ設定クロックCLKを再びローレベルに設定する。
【0247】
このようにして、図36に示すように、規定時間の待機を行いながら、レジスタ設定クロックCLKをローレベル,ハイレベルそしてローレベルとすることによって、コマンド(コマンドまたはコマンド+データ)の送信処理が行われる。
【0248】
図34の説明に戻る。ステップS32では、ピクセルモードを設定するとともに、露光時間の設定を行う。この実施の形態の場合、イメージセンサ43は先に述べたようにたとえば32ピクセル×32ピクセルのCMOSイメージセンサであるため、設定アドレス“0”のピクセルモードレジスタに32ピクセル×32ピクセルであることを示す“0h”を設定する。次のステップS33において、高速プロセッサ200は、レジスタ設定処理を実行する。
【0249】
図37は、図34のステップS33のレジスタ設定処理の流れを示すフローチャートである。図37に示すように、最初のステップS50では、高速プロセッサ200は、設定データとして、コマンド“MOV”+アドレスを設定し、次のステップS51で、図35で先に説明したコマンド送信処理を実行して、それを送信する。次にステップS52において、高速プロセッサ200は、設定データとして、コマンド“LD”+データを設定し、次のステップS53でコマンド送信処理を実行して、それを送信する。そして、ステップS54で、高速プロセッサ200は、設定データとして、コマンド“SET”を設定し、次のステップS55でそれを送信する。なお、コマンド“MOV”は制御レジスタのアドレスを送信することを示すコマンドで、コマンド“LD”はデータを送信することを示すコマンドで、コマンド“SET”はデータをそのアドレスに実際に設定させるためのコマンドである。なお、この処理は、設定する制御レジスタが複数ある場合には、繰り返し実行される。
【0250】
図34の説明に戻る。ステップS34では、設定アドレスを“1”(露光時間設定レジスタのローニブルのアドレスを示す)とし、最大露光時間を示す“FFh”のローニブルデータ“Fh”を設定すべきデータとして設定する。そして、ステップS35で図37のレジスタ設定処理を実行する。同様にして、ステップS36において、設定アドレスを“2”(露光時間設定レジスタのハイニブルのアドレスを示す)とし、最大露光時間を示す“FFh”のハイニブルデータ“Fh”を設定すべきデータとして設定し、ステップS37でレジスタ設定処理を実行する。
【0251】
その後、ステップS38で設定終了を示しかつイメージセンサ43にデータの出力を開始させるためのコマンド“RUN”を設定し、ステップS39で送信する。このようにして、図33に示すステップS20でのセンサ初期設定処理が実行される。ただし、図34〜図37に示す具体例は、使用されるイメージセンサ43の仕様に応じて、適宜変更され得るものである。
【0252】
図38は、図32のステップS7のストーリーモードの流れを示すフローチャートである。図38に示すように、ステップS60にて、CPU201は、ADC208からデジタルのピクセルデータを取得する。このデジタルのピクセルデータは、イメージセンサ43からのアナログのピクセルデータが、ADC208により、デジタルに変換されたものである。
【0253】
ステップS61にて、注目領域抽出処理が実行される。具体的には、CPU201は、赤外発光ダイオード7の発光時のピクセルデータと消灯時のピクセルデータとの差分を算出して、差分データを得る。そして、CPU201は、その差分データと所定の閾値Thとを比較して、所定の閾値Thを超える差分データを持つピクセル数をカウントする。
【0254】
ステップS62にて、CPU201は、所定の閾値Thを超える差分データから最大値を求め、その最大の差分データを持つピクセルの座標を、剣3の注目点とする。
【0255】
ステップS63にて、CPU201は、オペレータ94による剣3のスイング動作を検出して、剣3のスイングに応じた剣軌跡オブジェクト117を表示するためのトリガを発生する。
【0256】
ステップS64にて、CPU201は、剣軌跡オブジェクト117が、敵オブジェクト115にヒットしたかどうかを判定して、ヒットしたときに、エフェクト119を表示するためのトリガを発生する。
【0257】
ステップS65にて、CPU201は、剣3の刀身部15の側面に取り付けられた反射シート17を検知したときに、盾オブジェクト123を表示するためのトリガを発生する。
【0258】
ステップS66にて、CPU201は、説明オブジェクト129が表示されている場合において、剣3が縦方向に振り下ろされたときに、次の説明オブジェクト129を表示するためのトリガを発生する。
【0259】
ステップS67にて、CPU201は、前進指示が表示されている場合において、所定フレーム数の間、剣3の注目点が所定範囲に存在するときに、前進するような背景のアニメーションを行うべく、背景表示のための配列の各要素の更新処理を行う。
【0260】
ステップS68にて、CPU201は、「M」が所定値「K」より小さいかどうかを判断する。CPU201は、「M」が所定値「K」以上である場合、ステップS69に進み、「M」に「0」を代入して、ステップS70に進む。一方、CPU201は、「M」が所定値「K」より小さい場合、ステップS68からステップS70に進む。この「M」については、後述の説明の中で明らかになる。
【0261】
ステップS70では、上記処理結果に基づいて、表示対象の全スプライトの画像情報(各スプライトの格納位置情報や表示位置情報など)を内部メモリ207にセットする。
【0262】
図39は、図38のステップS60のピクセルデータ群取得処理の流れを示すフローチャートである。図39に示すように、最初のステップS80で、CPU201は、ピクセルデータ配列の要素番号としてXに「−1」、Yに「0」を設定する。本実施の形態におけるピクセルデータ配列は、X=0〜31、Y=0〜31の2次元配列であるが、前述のように各行の先頭ピクセルのデータとしてダミーデータが出力されるので、Xの初期値として「−1」が設定される。続くステップS81では、ピクセルデータの取得処理を実行する。
【0263】
図40は、図39のステップS81のピクセルデータ取得処理の流れを示すフローチャートである。図40に示すように、最初のステップS100で、CPU201は、イメージセンサ43からのフレームステータスフラグ信号FSFをチェックし、ステップS101でそのアップエッジ(ローレベルからハイレベルへの)が発生したかどうか判断する。そして、ステップS101でフラグ信号FSFのアップエッジを検出すると、次のステップS102において、CPU201は、ADC208に入力されてきたアナログのピクセルデータのデジタルデータへの変換の開始を指示する。その後、ステップS103でイメージセンサ43からのピクセルストローブPDSをチェックし、ステップS104でそのストローブ信号PDSのローレベルからハイレベルへのアップエッジが発生したかどうか判断する。
【0264】
ステップS104で“YES”が判断されると、CPU201は、ステップS105において、X=−1かどうか、すなわち先頭ピクセルかどうか判断する。先に述べたように、各行の先頭ピクセルはダミーピクセルとして設定されているので、このステップS105で“YES”が判断されると、次のステップS107でそのときのピクセルデータを取得しないで、要素番号Xをインクリメントする。
【0265】
ステップS105で“NO”が判断されると、行の第2番目以降のピクセルデータであるので、ステップS106およびS108において、そのときのピクセルデータを取得し、テンポラリレジスタ(図示せず)にそのピクセルデータを格納する。その後、図39のステップS82に進む。
【0266】
図39のステップS82では、テンポラリレジスタに格納されたピクセルデータをピクセルデータ配列P[Y][X]に代入する。
【0267】
続くステップS83でXをインクリメントする。Xが32に満たない場合、前述のS81からS83の処理を繰り返し実行する。Xが32の場合、すなわちピクセルデータの取得が行の終端に到達した場合には、続くステップS85でXに「−1」を設定し、ステップS86でYをインクリメントし、次の行の先頭からピクセルデータの取得処理を繰り返す。
【0268】
ステップS87でYが32の場合、すなわちピクセルデータの取得がピクセルデータ配列P[Y][X]の終端に到達した場合、図38のステップS61に進む。
【0269】
図41は、図38のステップS61の注目領域抽出処理の流れを示すフローチャートである。図41に示すように、ステップS120にて、CPU201は、イメージセンサ43からの、赤外発光ダイオード7の点灯時のピクセルデータと、赤外発光ダイオード7の消灯時のピクセルデータと、の差分を算出して、差分データを得る。
【0270】
ステップS121にて、CPU201は、配列Dif[X][Y]に、算出した差分データを代入する。ここで、実施の形態では、32ピクセル×32ピクセルのイメージセンサ43を用いているため、X=0〜31、Y=0〜31、である。
【0271】
ステップS122にて、CPU201は、配列Dif[X][Y]の要素を所定の閾値Thと比較する。
【0272】
ステップS123にて、CPU201は、配列Dif[X][Y]の要素が所定の閾値Thより大きい場合は、ステップS124に進み、所定の閾値Th以下の場合は、ステップS125に進む。
【0273】
ステップS124にて、CPU201は、所定の閾値Thを超えた差分データ(配列Dif[X][Y]の要素)の数を計数すべく、カウント値cを1つインクリメントする。
【0274】
CPU201は、配列Dif[X][Y]の全要素について、所定の閾値Thとの比較が終了するまで、ステップS122からステップS124の処理を繰り返す(ステップS125)。
【0275】
CPU201は、配列Dif[X][Y]の全要素について、所定の閾値Thとの比較が終了した場合は、ステップS126にて、カウント値cが「0」より大きいかどうかを判断する。
【0276】
CPU201は、カウント値cが「0」より大きい場合は、図38のステップS62に進む。カウント値cが「0」より大きいということは、剣3の反射面(反射シート17,23)が検出されたことを意味する。
【0277】
一方、CPU201は、カウント値cが「0」の場合は、ステップS127に進む。カウント値cが「0」ということは、剣3の反射面(反射シート17,23)が検出されなかったことを意味する。つまり、剣3が、撮像手段5の撮影範囲外に存在することを意味する。従って、ステップS127にて、CPU201は、剣3が撮影範囲外であることを示すレンジアウトフラグをオンにする。
【0278】
図42は、図38のステップS62の注目点抽出処理の流れを示すフローチャートである。図42に示すように、ステップS140にて、CPU201は、レンジアウトフラグをチェックする。
【0279】
CPU201は、レンジアウトフラグがオンであれば、図38のステップS63に進む(ステップS141)。なぜなら、剣3が撮像手段5の撮影範囲外ならば、注目点の抽出処理を実行する意味はないからである。一方、CPU201は、レンジアウトフラグがオフであれば、つまり、剣3が検出された場合は、ステップS142に進む(ステップS141)。
【0280】
ステップS142にて、CPU201は、配列Dif[X][Y]の要素(差分データ)から、最大値を検出する。
【0281】
ステップS143にて、CPU201は、「M」を1つインクリメントする。なお、「M」は、図33のステップS21にて「0」に初期化されている。
【0282】
ステップS144にて、CPU201は、ステップS142で検出された最大の差分データを持つピクセルの座標(X,Y)を、スクリーン91上の座標(x,y)に変換する。つまり、CPU201は、イメージセンサ43による画像(32ピクセル×32ピクセル)の座標空間から、スクリーン91(横256画素×縦224画素)の座標空間への変換を実行する。
【0283】
ステップS145にて、CPU201は、配列Px[M]に、変換後のx座標に補正情報Kxを加えたものを代入し、配列Py[M]に、変換後のy座標に補正情報Kyを加えたものを代入する。このようにして、剣3の注目点の座標(Px[M],Py[M])が算出される。
【0284】
図43は、図38のステップS63のスイング検出処理の流れを示すフローチャートである。図43に示すように、ステップS150にて、CPU201は、レンジアウトフラグをチェックする。
【0285】
CPU201は、レンジアウトフラグがオンであれば、ステップS160に進み、オフであれば、ステップS152に進む。
【0286】
ステップS152にて、CPU201は、式(1)及び式(2)により、剣3の注目点(Px[M],Py[M])の速度ベクトル(Vx[M],Vy[M])を求める。
【0287】
ステップS153にて、CPU201は、式(3)により、剣3の注目点(Px[M],Py[M])の速さV[M]を求める。
【0288】
ステップS154にて、CPU201は、剣3の注目点(Px[M],Py[M])の速さV[M]と所定の閾値ThVとを比較して、その大小を判断する。CPU201は、注目点の速さV[M]が、所定の閾値ThVを超えていれば、ステップS155に進み、所定の閾値ThV以下の場合は、ステップS162に進む。
【0289】
ステップS155にて、CPU201は、スイングフラグをチェックする。
【0290】
スイングフラグがオンであれば、CPU201は、ステップS159に進み、オフであれば、ステップS157に進む(ステップS156)。
【0291】
ステップS157にて、CPU201は、スイングフラグをオンにする。つまり、速さV[M]が所定の閾値ThVを超えた場合は、剣3が振られたと判断され、スイングフラグがオンにされる。
【0292】
ステップS158にて、CPU201は、「S」に、最初に所定の閾値ThVを超えた注目点の要素番号「M」を代入する。
【0293】
ステップS159にて、CPU201は、剣3を1回振ったときに検出される注目点の数を計数すべく、注目点カウンタn(カウント値n)を1つインクリメントする。この場合に計数されるのは、速さが所定の閾値を超えた注目点のみである(ステップS154)。ステップS159の後、図38のステップS64に進む。
【0294】
さて、ステップS162にて、CPU201は、スイングフラグをチェックする。
【0295】
スイングフラグがオンであれば、CPU201は、ステップS164に進み、オフであれば、ステップS171に進む(ステップS163)。
【0296】
スイングフラグがオンであって(ステップS163)、速さが所定の閾値ThV以下である(ステップS154)ということは、剣3のスイングが終了したことを意味する。従って、ステップS164にて、CPU201は、スイング終了フラグをオンにする。
【0297】
ステップS165にて、CPU201は、「E」に、最初に所定の閾値ThV以下になった注目点の要素番号「M」を代入する。
【0298】
ステップS166にて、CPU201は、剣3のスイングに応じた剣軌跡オブジェクト117の種類を決定する。
【0299】
ステップS167にて、CPU201は、表示すべき剣軌跡オブジェクト117のスクリーン91上の座標を算出する。
【0300】
ステップS168にて、CPU201は、ステップS166で決定した剣軌跡オブジェクト117のアニメーションのためのアニメーションテーブル格納位置情報を登録する(剣軌跡登録:トリガに相当)。
【0301】
ステップS169にて、CPU201は、注目点カウンタn(カウント値n)をリセットする。
【0302】
ステップS170にて、CPU201は、スイングフラグをオフにする。
【0303】
さて、ステップS160にて、CPU201は、注目点カウンタn(カウント値n)を1つデクリメントする。この理由は、後述の図44で説明する。
【0304】
ステップS161にて、CPU201は、オンとなっているレンジアウトフラグをオフにする。
【0305】
そして、ステップS162及びS163を経て、スイングフラグがオンであるということは、注目点の速さが所定の閾値ThV以下になる前にレンジアウトしたことを意味する。この場合は、上記したように、レンジアウトする直前の注目点を利用して、剣軌跡オブジェクト117の種類及び座標を決定するため、ステップS164〜ステップS170の処理が実行される。
【0306】
さて、一方、ステップS163にて、スイングフラグがオフと判断された場合は、ステップS171において、CPU201は、注目点カウンタn(カウント値n)をリセットする。
【0307】
図44は、図43のステップS166の剣軌跡種類決定処理の流れを示すフローチャートである。図44に示すように、ステップS180にて、CPU201は、注目点カウンタnをチェックする。
【0308】
カウント値nが「1」より大きい場合は、ステップS182に進み、カウント値nが「1」以下の場合は、ステップS188に進む(ステップS181)。つまり、カウント値nが2以上、即ち、速さが所定の閾値ThVより大きい注目点の数が2以上、の場合にステップS182に進む。さらに、言い換えると、速さが所定の閾値ThVより大きい注目点の数が2以上の場合は、オペレータ94が意図しないスイング(誤動作)ではなく、オペレータ94が意図してスイングしたと判断されて、ステップS182に進む。
【0309】
ステップS182にて、CPU201は、式(4)及び式(5)により、スイング長Lx、Lyを求める。
【0310】
ステップS183にて、CPU201は、式(6)及び式(7)により、スイング長Lx、Lyの平均値LxA,LyAを求める。なお、注目点の速さが所定の閾値ThV以下になる前にレンジアウトした場合は、上記したように、レンジアウトする直前の注目点を利用して、剣軌跡オブジェクト117の種類及び座標を決定する。このときは、注目点カウンタnの値は、通常の場合より1つ多いため、図43のステップS160では、注目点カウンタnをデクリメントしている。
【0311】
ステップS184にて、CPU201は、x方向のスイング長Lxの平均値LxAの絶対値と、所定値xrと、を比較する。また、CPU201は、y方向のスイング長Lyの平均値LyAの絶対値と、所定値yrと、を比較する。
【0312】
ステップS185にて、CPU201は、ステップS184の結果を基に、角度フラグをセットする(図23(a)参照)。
【0313】
ステップS186にて、CPU201は、スイング長Lx,Lyの平均値LxA,LyAの符号を判断する。
【0314】
ステップS187にて、CPU201は、ステップS186の結果を基に、方向フラグをセットして(図23(b)参照)、図43のステップS167へ進む。
【0315】
さて、ステップS188にて、CPU201は、注目点カウンタnをリセットする。ステップS189にて、CPU201は、スイングフラグ及びスイング終了フラグをオフにする。そして、図38のステップS65に処理が進められる。
【0316】
図45は、図43のステップS167の剣軌跡座標算出処理の流れを示すフローチャートである。図45に示すように、ステップS200にて、CPU201は、角度フラグ及び方向フラグに基づいて、スイング情報を決定する(図23(a)〜図23(c)参照)。そして、CPU201は、スイング情報が「A0」又は「A1」の場合は、ステップS201に進み、スイング情報が「A2」又は「A3」の場合は、ステップS202に進み、スイング情報が「A4」〜「A7」の場合は、ステップS203に進む。
【0317】
ステップS201にて、CPU201は、式(8)及び式(9)により、剣軌跡オブジェクト117の中心座標(xt,yt)を求める。
【0318】
また、ステップS202にて、CPU201は、式(10)及び式(11)により、剣軌跡オブジェクト117の中心座標(xt,yt)を求める。
【0319】
また、ステップS203にて、CPU201は、式(12)及び式(13)により、仮の座標(xs,ys)を求めて、これを通る直線と、画面の対角線と、の交点座標(xI,yI)を求める。
【0320】
そして、ステップS204にて、CPU201は、交点座標(xI,yI)を、剣軌跡オブジェクト117の中心座標(xt,yt)とする。
【0321】
なお、ステップS201,S202,S204の後、図43のステップS168に進む。
【0322】
図46は、図38のステップS64のヒット判定処理の流れを示すフローチャートである。図46に示すように、ステップS210にて、スイング終了フラグがオフであれば、ステップS211〜S221の処理をスキップして、図38のステップS65に進む。なぜなら、スイング終了フラグがオフということは、注目点の速さが所定の閾値以下になったわけでもなく、また、注目点がレンジアウトもしていない、ということであるから、剣3のスイングが未だ確定しておらず、剣軌跡オブジェクト117も表示されていないため、敵オブジェクト115へのヒット判定を行う必要がないからである。
【0323】
さて、ステップS211とステップS220との間で、ステップS212〜ステップS219の処理が繰り返される。ここで、「m」は、敵オブジェクト115の番号を示しており、「i」は、敵オブジェクト115の数である。従って、ステップS212〜ステップS219の処理が、敵オブジェクト115の数だけ繰り返される。つまり、全ての敵オブジェクト115に対して、ヒット判定が実行される。
【0324】
また、ステップS212とステップS219との間で、ステップS213〜ステップS218の処理が繰り返される。ここで、「p」は、仮想矩形の番号を示し、「j」は、仮想矩形の数を示す。図30の例では、j=5である。従って、ステップS213〜ステップS218の処理が、仮想矩形の数だけ繰り返される。つまり、全ての仮想矩形が、敵オブジェクト115に重なるかどうかが判断される。なお、上記したように、仮想矩形は、剣軌跡オブジェクト117に仮想的に付加された矩形であり、これが敵オブジェクト115を含むヒットレンジ325と重なれば、ヒットとなる。
【0325】
また、ステップS213とステップS218との間で、ステップS214,S215の処理が繰り返される。ここで、「q」は、仮想矩形の頂点の番号を示している。従って、ステップS215,S216の処理が、仮想矩形の頂点の数だけ繰り返される。つまり、仮想矩形のいずれかの頂点が、敵オブジェクト115を含むヒットレンジ325に含まれれば、ヒットとなる。
【0326】
さて、ステップS214にて、CPU201は、仮想矩形の頂点のx座標(xpq)が、ヒットレンジ325のx座標の範囲xm1〜xm2に入っているかどうかを判断する。範囲内でない場合は、ステップS218に進み、範囲内の場合は、ステップS215に進む。
【0327】
ステップS215にて、CPU201は、仮想矩形の頂点のy座標(ypq)が、ヒットレンジ325のy座標の範囲ym1〜ym2に入っているかどうかを判断する。範囲内でない場合は、ステップS218に進み、範囲内の場合は、ステップS216に進む。
【0328】
ステップS216にて、CPU201は、敵オブジェクト115の座標を基に、エフェクト119の座標を算出する。なぜなら、xm1<xpq<xm2、を満たし、かつ、ym1<ypq<ym2、が満たされたということは、剣軌跡オブジェクト117が敵オブジェクト115にヒットしたということであるから、エフェクト119を発生させる必要があるからである。
【0329】
ステップS217にて、CPU201は、スイング情報A0〜A7を基に、エフェクト119のアニメーションのためのアニメーションテーブル格納位置情報を登録する(ヒット登録:トリガに相当)。
【0330】
ステップS221にて、CPU201は、スイング終了フラグをオフにする。
【0331】
図47は、図38のステップS65の盾検出処理の流れを示すフローチャートである。図47に示すように、ステップS230にて、CPU201は、注目点カウンタのカウント値cと、所定の閾値ThAと、を比較する。
【0332】
ステップS231にて、CPU201は、カウント値cが、所定の閾値ThAより大きいと判断した場合、つまり、剣3の刀身部15の側面に取り付けられた反射シート17が検出された場合、ステップS232に進む。
【0333】
ステップS232にて、CPU201は、式(14)及び式(15)により、盾オブジェクト123のx方向の移動距離lx及びy方向の移動距離lyを求める。
【0334】
ステップS233にて、CPU201は、式(16)及び式(17)により、移動後の盾オブジェクト123の座標(xs,ys)を求める。
【0335】
ステップS234にて、CPU201は、盾オブジェクト123のアニメーションのためのアニメーションテーブル格納位置情報を登録する(盾登録:トリガに相当)。
【0336】
ステップS235にて、CPU201は、盾フラグをオンにする。
【0337】
ステップS242にて、CPU201は、注目点カウンタcをリセットして、図38のステップS66に進む。
【0338】
さて、ステップS231にて、CPU201は、カウント値cが、所定の閾値ThA以下と判断した場合、つまり、剣3の刀身部15の側面に取り付けられた反射シート17が検出されなかった場合、ステップS236に進む。
【0339】
ステップS236にて、CPU201は、盾フラグがオンかどうかを判断する。盾フラグがオンならば、ステップS237に進み、オフならば、ステップS242に進む。
【0340】
ステップS237にて、CPU201は、盾消消滅カウンタeをインクリメントする。
【0341】
ステップS238にて、CPU201は、盾消滅カウンタeが、所定値Eを下回っているかどうかを判断する。盾消滅カウンタeが、所定値Eを下回っている場合は、ステップS242に進み、所定値E以上の場合は、ステップS239に進む。つまり、ステップS238では、盾フラグがオンになった後、剣3の側面の反射シート17が、E回連続して検出されなかった場合に、盾オブジェクト123を消滅させるべく、処理をステップS239に進める。
【0342】
ステップS239にて、CPU201は、盾オブジェクト123の表示座標をスクリーン91の範囲外とする(消滅登録)。これにより、スクリーン91に盾オブジェクト123が表示されない。
【0343】
ステップS240にて、CPU201は、盾フラグをオフにする。ステップS241にて、CPU201は、盾消滅カウンタeをリセットする。
【0344】
図48は、図38のステップS66の説明進行処理の流れを示すフローチャートである。図48に示すように、ステップS250にて、CPU201は、画面に説明オブジェクト129が表示されているかどうかを判断する。説明オブジェクト129が表示されていない場合は、ステップS254に進み、表示されている場合は、ステップS251に進む。
【0345】
ステップS251にて、CPU201は、角度フラグ及び方向フラグを参照して、剣3のスイングをチェックする。
【0346】
CPU201は、剣3が縦方向に振り下ろされた(スイング情報が「A3」)場合は、ステップS253に進み、それ以外では、ステップS254に進む(ステップS252)。
【0347】
ステップS253にて、CPU201は、次の説明オブジェクト129を表示するためのアニメーションテーブル格納位置情報を登録する(説明進行登録:トリガに相当)。
【0348】
ステップS254にて、CPU201は、角度フラグ及び方向フラグをリセットして、図38のステップS67に処理を進める。
【0349】
図49は、図38のステップS67の前進処理の流れを示すフローチャートである。図49に示すように、ステップS260にて、CPU201は、スクリーン91に、前進を指示する説明オブジェクト132が表示されているかどうかを判断する。この説明オブジェクト132が表示されている場合は、ステップS261に処理が進められ、表示されていない場合は、図38のステップS68に処理が進められる。
【0350】
ステップS261にて、CPU201は、所定フレーム数の間、剣3の注目点が画面の中心座標を中心にした所定範囲に存在するかどうかをチェックする。
【0351】
CPU201は、所定フレーム数の間、剣3の注目点が画面の中心座標を中心にした所定範囲に存在する場合は、ステップS263へ進み、そうでない場合は、図38のステップS68に処理が進められる(ステップS262)。
【0352】
ステップS263にて、CPU201は、仮想空間内を一定距離進むたびに、背景表示のための配列の全要素を更新する(前進登録)。
【0353】
図50は、図38のステップS70の画像情報セット処理の流れを示すフローチャートである。図50に示すように、ステップS270では、CPU201は、剣軌跡登録がなされている場合は、剣軌跡オブジェクト117に関する画像情報をセットする。具体的には、次の通りである。
【0354】
CPU201は、剣軌跡オブジェクト117の中心座標(xt,yt)と、剣軌跡オブジェクト117のサイズ情報と、スプライトのサイズ情報と、に基づいて、剣軌跡オブジェクト117を構成する各スプライトの座標を算出する。
【0355】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき剣軌跡オブジェクト117の格納位置情報を算出する。さらに、CPU201は、スプライトのサイズ情報を基に、表示すべき剣軌跡オブジェクト117を構成する各スプライトの格納位置情報を算出する。
【0356】
ステップS271では、CPU201は、ヒット登録がなされている場合は、エフェクト119に関する画像情報をセットする。具体的には、次の通りである。
【0357】
CPU201は、エフェクト119の座標と、エフェクト119のサイズ情報と、スプライトのサイズ情報と、に基づいて、エフェクト119を構成する各スプライトの座標を算出する。
【0358】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべきエフェクト119の格納位置情報を算出する。さらに、CPU201は、表示すべきエフェクト119を構成する各スプライトの格納位置情報を算出する。
【0359】
ステップS272では、CPU201は、盾登録がなされている場合は、盾オブジェクト123に関する画像情報をセットする。具体的には、次の通りである。
【0360】
CPU201は、盾オブジェクト123の中心座標(xs、ys)と、盾オブジェクト123のサイズ情報と、スプライトのサイズ情報と、に基づいて、盾オブジェクト123を構成する各スプライトの座標を算出する。
【0361】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき盾オブジェクト123の格納位置情報を算出する。さらに、CPU201は、表示すべき盾オブジェクト123を構成する各スプライトの格納位置情報を算出する。
【0362】
ステップS273では、CPU201は、スプライトからなる他のオブジェクト(例えば、説明オブジェクト129等)に関する画像情報(各スプライトの格納位置情報及び表示座標)をセットする。
【0363】
図51は、図32のステップS5のモード選択処理の流れを示すフローチャートである。図51に示すように、ステップS300〜ステップS302の処理は、それぞれ、図38のステップS60〜ステップS62の処理と同様であり、説明を省略する。
【0364】
ステップS303にて、CPU201は、カーソル101の移動処理を実行する。
【0365】
図52は、図51のステップS303のカーソル移動処理の流れを示すフローチャートである。図52に示すように、ステップS320にて、CPU201は、剣3の注目点の座標を基に、カーソル101の座標を算出する。
【0366】
ステップS321にて、CPU201は、カーソル101のアニメーションのためのアニメーションテーブル格納位置情報を登録する(カーソル登録)。
【0367】
図51の説明に戻る。ステップS304にて、CPU201は、項目オブジェクト109の移動処理を実行する。
【0368】
図53は、図51のステップS304の項目オブジェクト移動処理の流れを示すフローチャートである。図53に示すように、ステップS330にて、CPU201は、カーソル101が、図12の左移動指示オブジェクト103を中心としたレンジR1内に存在するかどうかを判断する。CPU201は、カーソル101がレンジR1内に存在する場合は、ステップS331に進み、存在しない場合は、ステップS332に進む。
【0369】
ステップS331にて、CPU201は、項目オブジェクト109のx方向の速さvxを「−v」とする。
【0370】
一方、ステップS332にて、CPU201は、カーソル101が、図12の右移動指示オブジェクト105を中心としたレンジR2内に存在するかどうかを判断する。CPU201は、カーソル101がレンジR2内に存在する場合は、ステップS334に進み、存在しない場合は、ステップS333に進む。
【0371】
ステップS334にて、CPU201は、項目オブジェクト109のx方向の速さvxを「v」とする。
【0372】
一方、ステップS333にて、CPU201は、項目オブジェクト109のx方向の速さvxを「0」とする。
【0373】
ステップS335にて、CPU201は、項目オブジェクト109のx座標に速さvxを加えて、項目オブジェクト109の移動後のx座標とする。
【0374】
ステップS336にて、CPU201は、項目オブジェクト109の表示のためのアニメーションテーブル格納位置情報を登録する(項目オブジェクト登録)。
【0375】
図51の説明に戻る。ステップS305及びステップS306の処理は、それぞれ、図38のステップS68及びステップS69の処理と同様であり、説明を省略する。
【0376】
ステップS307にて、CPU201は、カーソル101に関する画像情報をセットする。具体的には、次の通りである。
【0377】
CPU201は、カーソル101の座標と、カーソル101のサイズ情報と、スプライトのサイズ情報と、に基づいて、カーソル101を構成する各スプライトの座標を算出する。
【0378】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべきカーソル101の格納位置情報を算出する。さらに、CPU201は、表示すべきカーソル101を構成する各スプライトの格納位置情報を算出する。
【0379】
また、CPU201は、項目オブジェクト109に関する画像情報をセットする。具体的には、次の通りである。
【0380】
CPU201は、項目オブジェクト109の座標と、項目オブジェクト109のサイズ情報と、スプライトのサイズ情報と、に基づいて、項目オブジェクト109を構成する各スプライトの座標を算出する。
【0381】
また、CPU201は、アニメーションテーブルを参照して、画像格納位置情報、コマ指定情報、及び、サイズ情報、を基に、表示すべき項目オブジェクト109の格納位置情報を算出する。さらに、CPU201は、表示すべき項目オブジェクト109を構成する各スプライトの格納位置情報を算出する。
【0382】
図54は、図32のステップS6のスイング補正モードの流れを示すフローチャートである。図54に示すように、ステップS400〜ステップS403の処理は、それぞれ、図38のステップS60〜ステップS63の処理と同様であり、説明を省略する。
【0383】
ステップS404にて、CPU201は、補正情報Kx,Kyを取得する(図31参照)。
【0384】
図55は、図54のステップS404の補正情報取得処理の流れを示すフローチャートである。図55に示すように、ステップS410にて、CPU201は、角度フラグ及び方向フラグに基づいて、スイング情報を決定する(図23(a)〜図23(c)参照)。そして、CPU201は、スイング情報が「A0」の場合は、ステップS411に進み、スイング情報が「A3」の場合は、ステップS412に進み、スイング情報がそれら以外の場合は、図54のステップS405に進む。
【0385】
ステップS411では、剣3が横に振られているため、CPU201は、y方向の補正情報Kyを求める。
【0386】
一方、ステップS412では、剣3が縦に振られているため、CPU201は、x方向の補正情報Kxを求める。
【0387】
図54の説明に戻る。ステップS405,S406の処理は、それぞれ、図38のステップS68,S69の処理と同様であり、説明を省略する。
【0388】
ステップS407にて、CPU201は、スイング補正画面(図31参照)を表示するための全スプライトの画像情報をセットする。
【0389】
図56は、撮像手段5によるストロボスコープ撮影処理の流れを示すフローチャートである。ステップS500において、高速プロセッサ200は、ストロボスコープ撮影のために赤外発光ダイオード7を点灯する。具体的には、図10に示すLEDコントロール信号LEDCをHレベルとする。その後、ステップS501で、イメージセンサ43は、ピクセルデータを出力する。
【0390】
ステップS502において、高速プロセッサ200は、ストロボスコープ撮影のために赤外発光ダイオード7を消灯する。具体的には、図10に示すLEDコントロール信号LEDCをLレベルとする。その後、ステップS503で、イメージセンサ43は、ピクセルデータを出力する。
【0391】
以上の処理がゲームが終了するまで繰り返される(ステップS504)。
【0392】
さて、次に、ゲーム画面の上記以外の例をいくつか挙げる。図57は、ゲーム画面の他の例示図である。図57に示すように、このゲーム画面には、人オブジェクト501及び動物オブジェクト502が表示される。そして、剣3の動きに応じて、カーソル503が移動する。このカーソル503を人オブジェクト501に重ねると、人オブジェクト501に関連付けられた説明オブジェクト500が表示される。一方、図示していないが、オペレータ94が、剣3を動かして、カーソル503を、動物オブジェクト502に重ねると、動物オブジェクト502に関連付けられた説明オブジェクトが表示される。
【0393】
ここで、カーソル503の移動処理は、カーソル101の移動処理と同様である。そして、カーソル502が、人オブジェクト501を含む所定範囲内に移動してきた場合、人オブジェクト501に関連付けられた説明オブジェクト500が表示される。動物オブジェクト502についても同様である。
【0394】
図58は、ゲーム画面のさらに他の例示図である。図58に示すように、このゲーム画面には、文字選択部505、選択枠506、左移動指示オブジェクト103、右移動指示オブジェクト105、文字表示部507、及び、カーソル101、が表示される。オペレータ94が剣3を操作してカーソル101を動かし、左移動指示オブジェクト103に重ねると、文字選択部505の文字が左方向に回転する。一方、右移動指示オブジェクト105に重ねると、文字選択部505の文字が右方向に回転する。このようにして、ア〜ンまでの文字を選択できる。そして、剣3を、一定以上の速度で縦方向に振り下ろすと、選択枠506に入った文字が、文字表示部507に表示される。このようにして、オペレータ94は、剣3を操作して、文字表示部507に文字を表示することができる。
【0395】
ここで、文字選択部505における文字の回転処理は、図12における項目オブジェクト109の回転処理と同様である。
【0396】
図59は、ゲーム画面のさらに他の例示図である。図59に示すように、このゲーム画面には、斜め方向に炎オブジェクト510が表示されている。これは、オペレータ94が剣3を斜め方向に振ったことに応じて、表示されたものである。つまり、これまでの例では、オペレータ94が剣3を振ると、その動作に応じた剣軌跡オブジェクト117を表示していたが、その代わりに、炎オブジェクト510を表示している。炎オブジェクト510の表示のためのトリガ発生の処理は、剣軌跡オブジェクト117の表示のためのトリガ発生の処理と同様である。また、例えば、炎オブジェクト510は、注目点の座標に出現させる。
【0397】
図60は、ゲーム画面のさらに他の例示図である。図60に示すように、このゲーム画面には、スイングガイド520,521,522および進行バー523が表示される。スイングガイド520〜522においては、切り欠いた方向から剣3を振ることを意味する。オペレータ94は、進行バー523がスイングガイド520〜522に重なったタイミングで、進行バー523が重なったスイングガイド520〜522が指示する方向から、剣3を振る。図60の例では、オペレータ94は、進行バー523が重なったスイングガイド520が指示するように、左から横方向に、剣3を振る。
【0398】
また、オペレータ94が、進行バー523が指示するタイミングで、かつ、スイングガイド520〜522が指示する方向から、剣3を適正に振ることができれば、特別なオブジェクトを表示するようにすることもできる。
【0399】
さて、図61(a)〜図61(c)は、図1の剣3のさらに他の例示図である。図61(a)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、円形の反射シート550及び反射シート551が、所定間隔で取り付けられている。従って、2点(反射シート550及び反射シート551)が検出された場合と、1点(半円柱状部材21に取り付けられた反射シート23)が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、2点検出の場合と、1点検出の場合と、で異なる画像を、グラフィックプロセッサ202に表示させる。2点検出については、後で詳細に説明する。なお、一方の半円柱状部材21に取り付けられた反射シート23と、他方の半円柱状部材21に取り付けられた反射シート23と、は近距離のため、イメージセンサ43には、1点として撮影される。
【0400】
また、図61(b)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、長方形の反射シート555が取り付けられている。CPU201は、検出した反射シートの長辺と短辺との比を求めて、この比が所定値より大きければ、長方形の反射シート555が検出されたと判断する。従って、長方形の反射シート555が検出された場合と、反射シート23が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、検出した反射面に応じて、異なる画像を、グラフィックプロセッサ202に表示させる。
【0401】
さらに、図61(c)に示すように、この剣3の刀身部15の側面には、図2の反射シート17に代えて、三角形の反射シート560が取り付けられている。CPU201は、検出した反射シートの形状を求めて、三角形であれば、反射シート560が検出されたと判断する。従って、三角形の反射シート560が検出された場合と、反射シート23が検出された場合と、でその後の処理を異ならせることができる。例えば、CPU201は、検出した反射面に応じて、異なる画像を、グラフィックプロセッサ202に表示させる。
【0402】
なお、図61(a)〜図61(c)において、半円柱状部材21及び反射シート23を剣3に設ける代わりに、図4及び図5の反射シート31を、剣3の刃先部に設けることもできる。
【0403】
上記では、剣型の操作物3を例に挙げた。次に、剣型以外の操作物3の一例を説明する。図62は、オペレータ94によって操作される操作物の例示図である。この操作物3は、スティック570の両端に球状部材571,572を取り付けたものである。球状部材571,572には、反射シート575,576が取り付けられる。オペレータ94は、スティック570を握って、操作物3を操作する。2つの反射シート575,576は、所定間隔で取り付けられているため、イメージセンサ43により、2つの注目点が撮影される。CPU201は、2つの反射シート575,576の状態情報を求める。そして、CPU201は、その2つの反射シート575,576の状態情報に応じて、グラフィックプロセッサ202に画像を表示させる。
【0404】
次に、図61(a)及び図62で実行する2点の抽出処理について説明する。この場合、一方の反射シートを第1の反射シートと呼び、他方の反射シートを第2の反射シートと呼ぶ。
【0405】
図63は、第1の反射シートの注目点(第1注目点)の座標算出の説明図である。図63に示すように、イメージセンサ43は、例えば、32ピクセル×32ピクセルからなる。CPU201は、Y方向に32ピクセル分の差分データをスキャンし、そして、X座標をインクリメントし、Y方向に32ピクセル分の差分データをスキャンし、そして、X座標をインクリメントし、というように、X座標をインクリメントしながら、Y方向(列方向)に32ピクセル分の差分データをスキャンしていく。
【0406】
この場合、CPU201は、Y方向にスキャンした32ピクセル分の差分データから、最大輝度値の差分データを求め、その最大輝度値と所定の閾値Thとを比較する。そして、CPU201は、その最大輝度値が所定の閾値Thより大きい場合は、その値を配列max[n]に代入する。一方、状CPU201は、その最大輝度値が所定の閾値Th以下の場合は、所定値(例えば、「0」)を配列max[n]に代入する。
【0407】
ここで、nはX座標であり、さらに、CPU201が、最大輝度値を有するピクセルのY座標を関連付けて格納することで、後に、最大輝度値を有するピクセルのX座標及びY座標を取得できる。
【0408】
さらに、CPU201は、配列max[0]〜配列max[31]をスキャンして、さらにその中の最大値を求める。そして、CPU201は、その最大値のX座標及びY座標を、第1の反射シートの注目点の座標(X1,Y1)として保存する。
【0409】
次に、第2の反射シートの注目点(第2注目点)の座標算出について説明する。CPU201は、配列max[0]〜max[31]のうちの最大値、つまり、第1の反射シートの注目点の座標(X1,Y1)に位置するピクセルの差分データ、を中心に所定範囲をマスクする。この点を図面を用いて説明する。
【0410】
図64は、第2の反射シートの注目点の座標算出の説明図である。図64に示すように、CPU201は、配列max[0]〜max[31]のうちの最大値(図64の例では、X=9、Y=9)を中心に所定範囲をマスク(太枠で囲った部分)する。
【0411】
そして、CPU201は、このマスクした範囲を除いて、配列max[0]〜max[31]をスキャンする。つまり、この例では、CPU201は、配列max[0]〜max[6]、及び、配列max[12]〜max[31]をスキャンする。
【0412】
そして、CPU201は、そのスキャンした配列max[0]〜max[6]、及び、配列max[12]〜max[31]のうちから、最大値を求める。状CPU201は、求めた最大値のX座標及びY座標を、第2の反射シートの注目点の座標(X2,Y2)として保存する。図64の例では、最大値は、配列max[22]であり、従って、第2の反射シートの注目点の座標は、X2=22、Y2=10、である。なお、図64の例では、第1の反射シートの注目点の座標は、X1=9、Y1=9、となっている。
【0413】
なお、第1注目点及び第2注目点の座標を求める際の最大値の検出は、実際は、スキャンしながら行われる。上記では、説明の便宜のため、スキャンした後に、最大値を求めるように記載している。
【0414】
さて、以上のように本実施の形態によれば、ストロボスコープにより間欠的に光が照射される剣3をイメージセンサ43により撮影して、剣3の状態情報を求めている。このように、実空間に検知面(二次元)を形成することなく、イメージセンサ43の撮影範囲である検知空間(三次元)に存在する剣3の状態情報を取得できる。従って、剣3の操作範囲が二次元平面に制限されることがないため、オペレータ94による剣3の操作の制約が小さく、操作の自由度を大きくできる。
【0415】
また、テレビジョンモニタ90のスクリーン91に対応した検知面を実空間に形成する必要もないため、設置場所の制限を小さくできる(省スペースの実現)。
【0416】
さらに、剣3を振ったことに基づくトリガ(剣軌跡登録に相当)により、剣3の移動軌跡を表現する剣軌跡オブジェクト117がスクリーン91に表示される。このため、オペレータ94は、現実に目で見ることができない移動軌跡を、スクリーン91上で見ることができ、剣3を振った実感をより味合うことができる。
【0417】
この場合、フレームごとに幅の異なる帯状オブジェクトを表示することにより、剣3の移動軌跡を表現する。このときの帯状オブジェクトの幅は、フレームの更新とともに太くなった後、フレームの更新とともに細くなる(図27〜図29参照)。
【0418】
このため、鋭い閃光が走ったような、剣3の移動軌跡を表示できる。特に、帯状オブジェクトの色を工夫することで、その効果をより高めることができる。
【0419】
さらに、スクリーン91に表示される仮想世界に、オペレータ94が操作した剣3の移動軌跡が出現するため、このような剣3の移動軌跡の表示を通じて、オペレータ94は、仮想世界との接触が可能となり、仮想世界をより楽しむことができる。つまり、オペレータ94は、あたかも、スクリーン91に表示されるゲーム世界で、ゲームを楽しんでいるような実感を得ることができる。
【0420】
さらに、撮像手段5により検知された反射面(例えば、反射シート17,23)に応じて、異なる画像(例えば、剣軌跡オブジェクト117、盾オブジェクト123)が表示されるため、単一の操作物3を操作するだけで、反射面の数に応じた、異なる画像を表示できる。このため、異なる画像ごとに、対応する操作物を用意したり、スイッチやアナログスティック等を操作物に設けたり、する必要がない。従って、操作物3のコストの低減が可能になるとともに、オペレータ94による操作物3の操作性を向上できる。
【0421】
さらに、オペレータ94は、剣3のどの反射面(例えば、反射シート17,23)を撮像手段5に向けるかによって、所望の画像を表示できる(例えば、剣軌跡オブジェクト117、盾オブジェクト123)。従って、オペレータ94は、単一の剣3で、様々な画像を表示させることができて、ゲームを円滑に実行できる。
【0422】
さらに、CPU201は、剣3の面積情報(図2〜図5参照)、数情報(図61(a)参照)、形状情報(図61(c)参照)、若しくは、形状を表す比率情報(図61(b)参照)、のいずれか、又は、そのうちのいくつかの情報、を算出することができる。従って、これらの情報により、剣3の刀身部の側面の反射シート17,550,551,555,560が撮影されたのか、あるいは、剣3の半円柱状部材21の反射シート23/剣3の刃先部の反射シート31が撮影されたのか、を判別することができる。
【0423】
このように、剣3の刀身部15に取り付ける反射シートのサイズ又は形状を、剣3の半円柱状部材21あるいは剣3の刃先部に取り付ける反射シートと異ならせるだけで、いずれの反射シートが撮影されたのかを容易に判別できる。特に、剣3の面積情報により、反射シートを判別する場合は、過った判別を極力減少させることができるだけでなく、処理を容易にできて処理の高速化を図ることができる。
【0424】
さらに、剣軌跡オブジェクト117と敵オブジェクト115との位置関係が所定条件を満たしたことに基づくトリガ(エフェクト登録)により、エフェクト119が加えられた敵オブジェクト121がスクリーン91に表示される(図15参照)。
【0425】
このように、オペレータ94の操作に基づいて表示される剣軌跡オブジェクト117を通じて、スクリーン91に表示された、言わば仮想世界の敵オブジェクト115にエフェクトを与えることができる。このため、オペレータ94は、仮想世界をより一層楽しむことができる。
【0426】
さらに、CPU201は、剣3の注目点の数、つまり、剣3の検知回数が3以上の場合に、剣軌跡オブジェクト117を表示させるトリガ(剣軌跡登録)を発生するため、オペレータ94が意図しない操作により、意図しないときに、剣軌跡オブジェクト117が出現することを防止できる(図22参照)。
【0427】
さらに、CPU201は、剣3の注目点の数(剣3の検知回数)が3以上の場合に、剣3の最初の注目点と最後の注目点とに基づいて、剣軌跡オブジェクト117の態様(スイング情報)を決定する(図22〜図26参照)。このため、剣3の移動軌跡をより的確に反映した剣軌跡オブジェクト117の態様を決定できる。
【0428】
なお、剣3の近接する2つの注目点に基づいて、剣軌跡オブジェクト117の態様を決定すると、例えば、次の不都合がある。オペレータ94が、自分の感覚で直線的に剣3を移動させた場合でも、実際には、若干の円弧を描いている場合もある。この場合には、当然、イメージセンサ43には、円弧を描くように剣3が撮影される。このときに、近接する2つの注目点に基づいて、剣軌跡オブジェクト117の態様を決定すると、オペレータ94の感覚とずれた態様の剣軌跡オブジェクト117が表示されることになる。例えば、剣3を横に振ったつもりが、斜め方向の剣軌跡オブジェクト117が表示されるような事態である。
【0429】
さらに、剣3の状態情報に基づくトリガ(説明進行登録に相当)により、スクリーン91に文字列を次々に表示させることができるため、文字列の更新に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図17参照)。
【0430】
さらに、剣3の状態情報に基づくトリガ(進行登録に相当)により、背景を更新することができるため、背景の更新に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図18参照)。
【0431】
さらに、CPU201は、剣3の位置情報を補正する補正情報Kx,Kyを取得する。そして、CPU201は、補正情報Kx,Kyを用いて、補正後の位置情報を算出する。このため、オペレータ94が剣3を操作する感覚と、CPU201が算出する剣3の位置情報と、のずれを極力解消できるため、オペレータ94による剣3の操作をより的確に反映した画像を表示できる。
【0432】
さらに、剣3の位置情報に基づいて、カーソル101を移動させることができるため、カーソル101の移動に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる(図12参照)。
【0433】
さらに、剣3の状態情報に基づいて、予め定められた処理を実行することを確定する。例えば、剣3を一定以上の速さで、縦方向に振り下ろすことで、項目オブジェクト109の選択が確定され、選択された項目に応じた処理の実行が開始される(図12参照)。このように、剣3の状態情報に基づいて、処理の実行の確定ができるため、処理の実行の確定に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0434】
さらに、カーソル503が人オブジェクト501に重なったときに、その人オブジェクト501に関連付けられた説明オブジェクト500が表示される(図57参照)。このため、オペレータ94は、剣3の操作によりカーソル503を移動させるだけで、表示されている人オブジェクト501に関連付けられた画像を表示させることができる。
【0435】
さらに、カーソル101により選択された文字をスクリーン91に表示できる(図58参照)。このため、オペレータ94は、剣3の操作によりカーソル101を移動させて所望の文字を選択するだけで、文字を入力できるため、文字入力に使用するスイッチやアナログスティック等を剣3に設ける必要もなく、剣3の製造コストを低減できるばかりでなく、操作性をも向上できる。
【0436】
さらに、剣3の状態情報に基づくトリガにより、剣3の動きに応じた炎オブジェクト510をスクリーン91に表示できる。これにより、剣3の移動軌跡を表現する剣オブジェクト117と異なった視覚的効果を、オペレータ94に与えることができる(図59参照)。
【0437】
さらに、剣軌跡登録が行われてから(トリガが発生してから)、所定時間経過後に(人間の感覚で)、剣3の移動軌跡を表現する剣軌跡オブジェクト117をスクリーン91に表示することもできる。この場合、剣軌跡オブジェクト117を、剣軌跡登録(トリガの発生)とほぼ同時(人間の感覚で同時)に表示する場合と比較して、異なった効果を、オペレータ94に与えることができる。
【0438】
さらに、剣3の連続した状態情報が所定条件(例えば、剣3を、縦→横→縦、に連続して振る、等)を満足したときに、所定のオブジェクトを表示することもできる。これにより、剣3の操作が所定条件を満足したときにのみ、所定のオブジェクトが表示されるため、この所定条件の設定の仕方によって、所定のオブジェクトを表示させるための、オペレータ94による剣3の操作を任意にコントロールできる。
【0439】
さらに、剣3の操作方向を指示するガイドオブジェクト520〜522及び操作タイミングを指示する進行バー523を表示することもできる。この場合は、オペレータは、情報処理装置1が要求する剣3の操作方向及び操作タイミングを視覚的に認識できる。
【0440】
さらに、CPU201は、状態情報として、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、それらのうちのいくつか、又は、それらの全部、を算出できる。このため、オペレータ94による剣3の様々な動きに応じたオブジェクトをスクリーン91に表示できる。
【0441】
さらに、剣軌跡登録(トリガ)に基づいて、テレビジョンモニタ90のスピーカから効果音を発生させることができる。このため、オペレータ94に対して、視覚的効果に加えて、聴覚的効果を与えることができる。従って、オペレータ94は、スクリーン91に表示される仮想世界をより一層楽しむことができる。例えば、オペレータ94が操作した剣3の移動軌跡117が仮想世界に出現すると同時に、効果音を発生させれば、オペレータ94は、仮想世界をより一層楽しむことができる。
【0442】
さらに、操作物3の複数の反射シート575,576の状態情報に応じて画像を表示することもできるため、単一の反射シートの状態情報に応じて画像を表示する場合と比較して、操作物3の状態をより反映した画像を表示できる(図62参照)。
【0443】
さらに、発光時画像信号と消灯時画像信号との差分信号を生成するといった簡単な処理のみで、ノイズや外乱の影響を抑えた精度の高い検出が可能であるので、コスト、許容される消費電力等の条件により情報処理装置1のパフォーマンスが制限されるシステムの上でも容易に達成が可能である。
【0444】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0445】
(1)実施の形態では、剣型の操作物3を例に挙げたが(図2、図4、図61)、本発明は、これに限定されない。また、本発明は、図62の操作物3にも限定されない。つまり、光を反射できる部材(例えば、再帰反射シート)を備えていれば、任意の形状の操作物3を使用できる。
【0446】
(2)実施の形態では、図27〜図29のアニメーションにより、剣軌跡オブジェクト117を表現したが、本発明は、これに限定されない。
【0447】
(3)実施の形態では、2種類の反射面(例えば、図2の反射シート17,23)を操作物3に設けたが、1種類でもよく、また、3種類以上でもよい。
【0448】
(4)図7の高速プロセッサ200として、任意の種類のプロセッサを使用できるが、本件出願人が既に特許出願している高速プロセッサ(商品名:XaviX)を用いることが好ましい。この高速プロセッサは、例えば、特開平10−307790号公報およびこれに対応するアメリカ特許第6,070,205号に詳細に開示されている。
【0449】
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。従って、本願の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。
【特許請求の範囲】
【請求項1】
オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、 複数の反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出して、その状態情報に基づいて、前記複数の反射面のいずれの反射面が撮影されたかを判別する状態情報算出ユニットと、 判別された前記反射面に応じて、前記ディスプレイ装置に異なる画像を表示させる画像表示処理ユニットと、を備える情報処理装置。
【請求項2】
前記状態情報は、前記反射面の面積情報、形状情報、若しくは、形状を表す比率情報、のいずれか、又は、それらの組み合わせ、である、請求項1記載の情報処理装置。
【請求項3】
オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、 複数の反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像に基づいて、前記反射面ごとの状態情報を算出する状態情報算出ユニットと、 前記複数の反射面の前記状態情報に応じて、画像を表示させる画像表示処理ユニットと、を備える情報処理装置。
【請求項4】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の面積情報を算出し、その面積情報が、予め定められた閾値を超えたときに、トリガを発生する面積情報算出ユニットと、 前記トリガに基づいて、所定のオブジェクトを前記ディスプレイ装置に表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項5】
前記画像表示処理ユニットは、前記反射面の位置情報に応じて、前記所定のオブジェクトを移動し、 前記所定のオブジェクトの色彩は、透明又は半透明である、請求項4記載の情報処理装置。
【請求項6】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出し、その状態情報に基づいて、トリガを発生する状態情報算出ユニットと、 文字列を前記ディスプレイ装置に表示する画像表示処理ユニットと、を備え、 前記画像表示処理ユニットは、前記トリガに基づいて、前記文字列と異なる文字列を前記ディスプレイ装置に表示する、情報処理装置。
【請求項7】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出し、その状態情報に基づいて、トリガを発生する状態情報算出ユニットと、 前記トリガに基づいて、背景画像を更新する画像表示処理ユニットと、を備える情報処理装置。
【請求項8】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の位置情報を算出する位置情報算出ユニットと、 カーソルを前記ディスプレイ装置に表示し、かつ、前記反射面の前記位置情報に応じて、前記カーソルを移動させる画像表示処理ユニットと、を備える情報処理装置。
【請求項9】
前記画像表示処理ユニットは、前記カーソルが所定のオブジェクトに重ねて表示されたときに、その所定のオブジェクトに関連付けられた画像を前記ディスプレイ装置に表示する、請求項8記載の情報処理装置。
【請求項10】
前記画像表示処理ユニットは、前記カーソルにより選択された文字を前記ディスプレイ装置に表示する、請求項8記載の情報処理装置。
【請求項11】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出する状態情報算出ユニットと、 前記反射面の連続した前記状態情報が所定条件を満足したときに、所定のオブジェクトを表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項12】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出する状態情報算出ユニットと、 前記ディスプレイ装置に、前記状態情報に応じて、画像を表示するとともに、前記操作物の操作方向及び操作タイミングを指示するガイドを表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項13】
前記状態情報は、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、である、請求項3、6、7、11又は12に記載の情報処理装置。
【請求項14】
請求項1記載の情報処理装置のオペレータが操作する操作物であって、 複数の反射面を有する操作物。
【請求項15】
請求項3記載の情報処理装置のオペレータが操作する操作物であって、 複数の反射面を有する操作物。
【請求項1】
オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、 複数の反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出して、その状態情報に基づいて、前記複数の反射面のいずれの反射面が撮影されたかを判別する状態情報算出ユニットと、 判別された前記反射面に応じて、前記ディスプレイ装置に異なる画像を表示させる画像表示処理ユニットと、を備える情報処理装置。
【請求項2】
前記状態情報は、前記反射面の面積情報、形状情報、若しくは、形状を表す比率情報、のいずれか、又は、それらの組み合わせ、である、請求項1記載の情報処理装置。
【請求項3】
オペレータに保持されて動きが与えられる操作物を検出した結果に基づいて、ディスプレイ装置に画像を表示させる情報処理装置であって、 複数の反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像に基づいて、前記反射面ごとの状態情報を算出する状態情報算出ユニットと、 前記複数の反射面の前記状態情報に応じて、画像を表示させる画像表示処理ユニットと、を備える情報処理装置。
【請求項4】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の面積情報を算出し、その面積情報が、予め定められた閾値を超えたときに、トリガを発生する面積情報算出ユニットと、 前記トリガに基づいて、所定のオブジェクトを前記ディスプレイ装置に表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項5】
前記画像表示処理ユニットは、前記反射面の位置情報に応じて、前記所定のオブジェクトを移動し、 前記所定のオブジェクトの色彩は、透明又は半透明である、請求項4記載の情報処理装置。
【請求項6】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出し、その状態情報に基づいて、トリガを発生する状態情報算出ユニットと、 文字列を前記ディスプレイ装置に表示する画像表示処理ユニットと、を備え、 前記画像表示処理ユニットは、前記トリガに基づいて、前記文字列と異なる文字列を前記ディスプレイ装置に表示する、情報処理装置。
【請求項7】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出し、その状態情報に基づいて、トリガを発生する状態情報算出ユニットと、 前記トリガに基づいて、背景画像を更新する画像表示処理ユニットと、を備える情報処理装置。
【請求項8】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の位置情報を算出する位置情報算出ユニットと、 カーソルを前記ディスプレイ装置に表示し、かつ、前記反射面の前記位置情報に応じて、前記カーソルを移動させる画像表示処理ユニットと、を備える情報処理装置。
【請求項9】
前記画像表示処理ユニットは、前記カーソルが所定のオブジェクトに重ねて表示されたときに、その所定のオブジェクトに関連付けられた画像を前記ディスプレイ装置に表示する、請求項8記載の情報処理装置。
【請求項10】
前記画像表示処理ユニットは、前記カーソルにより選択された文字を前記ディスプレイ装置に表示する、請求項8記載の情報処理装置。
【請求項11】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出する状態情報算出ユニットと、 前記反射面の連続した前記状態情報が所定条件を満足したときに、所定のオブジェクトを表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項12】
オペレータに保持されて動きが与えられる操作物の動きを加味した画像をディスプレイ装置に表示させる情報処理装置であって、 反射面を有する前記操作物を撮影する撮像ユニットと、 前記撮像ユニットにより得られた画像を基に、前記反射面の状態情報を算出する状態情報算出ユニットと、 前記ディスプレイ装置に、前記状態情報に応じて、画像を表示するとともに、前記操作物の操作方向及び操作タイミングを指示するガイドを表示する画像表示処理ユニットと、を備える情報処理装置。
【請求項13】
前記状態情報は、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報、若しくは、位置情報、のいずれか、又は、それらの2以上の組み合わせ、である、請求項3、6、7、11又は12に記載の情報処理装置。
【請求項14】
請求項1記載の情報処理装置のオペレータが操作する操作物であって、 複数の反射面を有する操作物。
【請求項15】
請求項3記載の情報処理装置のオペレータが操作する操作物であって、 複数の反射面を有する操作物。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55】
【図56】
【図57】
【図58】
【図59】
【図60】
【図61】
【図62】
【図63】
【図64】
【図65】
【公開番号】特開2010−191980(P2010−191980A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2010−87369(P2010−87369)
【出願日】平成22年4月5日(2010.4.5)
【分割の表示】特願2005−511370(P2005−511370)の分割
【原出願日】平成16年6月29日(2004.6.29)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願日】平成22年4月5日(2010.4.5)
【分割の表示】特願2005−511370(P2005−511370)の分割
【原出願日】平成16年6月29日(2004.6.29)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
[ Back to top ]