(57)【要約】【課題】使い勝手が良好なシミュレーションシステムを提供する。【解決手段】シミュレーションシステムは、ポインタを表示する表示部と、利用者がポインタの位置を指示する指示動作を検出する第１検出部と、指示動作に基づき、表示部の座標系におけるポインタの位置を検出する第２検出部と、指示動作に基づき、利用者の腕の伸ばし度合を計算する伸ばし度合計算部と、指示動作に基づき、利用者の手の第１移動速度を計算する速度計算部と、腕の伸ばし度合が所定度合以上で、かつ、第１移動速度が第１速度閾値以上である場合に、指示動作が押し動作であると判定する押し動作判定部と、腕の伸ばし度合が所定度合以上で、かつ、第１移動速度が第２速度閾値以下である場合に、指示動作が引き動作であると判定する引き動作判定部と、押し動作及び引き動作がこの順で行われた場合に、押し動作及び引き動作が決定動作であると判定する決定判定部とを含む。【選択図】図１
2017204126.tif 000002
【特許請求の範囲】
【請求項１】
利用者によって位置が操作されるポインタを表示する表示部と、
前記利用者が前記ポインタの位置を指示する指示動作を検出する第１検出部と、
前記第１検出部によって検出される前記指示動作に基づき、前記表示部の座標系におけるポインタの位置を検出する第２検出部と、
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の腕伸ばし量を計算する腕伸ばし量計算部と、
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の手の第１移動速度を計算する速度計算部と、
前記腕伸ばし量が所定量以上で、かつ、前記第１移動速度が第１閾値速度以上である場合に、前記指示動作が押し動作であると判定する押し動作判定部と、
前記腕伸ばし量が前記所定量以上で、かつ、前記第１移動速度が第２閾値速度以下である場合に、前記指示動作が引き動作であると判定する引き動作判定部と、
前記押し動作及び前記引き動作がこの順で行われた場合に、前記押し動作及び前記引き動作が決定動作であると判定する決定動作判定部と
を含む、シミュレーションシステム。
【請求項２】
前記速度計算部は、前記利用者の肩と手を結ぶ方向における前記第１移動速度を計算する、請求項１記載のシミュレーションシステム。
【請求項３】
前記決定動作判定部は、前記押し動作及び前記引き動作がこの順で第１所定時間内に行われた場合に、前記押し動作及び前記引き動作が決定動作であると判定する、請求項１又は２記載のシミュレーションシステム。
【請求項４】
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記速度履歴保持部によって保持される前記第１移動速度の最大値の所定割合の速度を前記第１閾値速度に設定する閾値速度設定部と
をさらに含む、請求項１乃至３のいずれか一項記載のシミュレーションシステム。
【請求項５】
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記決定動作判定部によって判定される前記決定動作の履歴を保持する決定動作履歴保持部と、
前記決定動作履歴保持部によって保持される前記決定動作の履歴に基づき、過去の第２所定時間内に、前記決定動作が行われたと判定すると、前記過去の第２所定時間内における前記第１移動速度の最大値を前記第１閾値速度に設定する閾値速度設定部と
をさらに含む、請求項１乃至３のいずれか一項記載のシミュレーションシステム。
【請求項６】
前記閾値速度設定部は、前記過去の第２所定時間内に、前記決定動作が行われていないと判定すると、過去の第３所定時間内に前記第１閾値速度から所定値を引いた所定の移動速度があるかどうかを判定し、前記所定の移動速度があると判定すると、前記第１閾値速度を前記所定の移動速度に更新する、請求項５記載のシミュレーションシステム。
【請求項７】
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記第１検出部によって検出される前記指示動作が、前記決定動作をキャンセルするキャンセル動作であるかどうかを判定するキャンセル動作判定部と、
過去の第４所定時間内に、前記キャンセル動作判定部によって前記キャンセル動作が行われたと判定されると、前記第１閾値速度を所定速度だけ増大させる閾値速度設定部と
をさらに含む、請求項１乃至３のいずれか一項記載のシミュレーションシステム。
【請求項８】
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の他方の手の第２移動速度を計算する第２速度計算部をさらに含み、
前記押し動作判定部は、前記腕伸ばし量が所定量以上で、かつ、前記第１移動速度が第１閾値速度以上である場合において、前記第２移動速度が正の値であって前記第１閾値速度以上ではない場合、又は、前記第２移動速度が負の値であって前記第２移動速度の絶対値が前記第１閾値速度より大きくない場合に、前記指示動作が押し動作であると判定する、請求項１乃至７のいずれか一項記載のシミュレーションシステム。
【請求項９】
前記押し動作判定部によって前記指示動作が押し動作であると判定されると、前記ポインタを表示する位置を固定する位置固定部と、
前記引き動作判定部によって前記指示動作が引き動作であると判定されると、前記位置固定部による前記ポインタの位置の固定を解除する固定解除部と
をさらに含む、請求項１乃至８のいずれか一項記載のシミュレーションシステム。
【請求項１０】
前記固定解除部は、前記押し動作判定部によって前記指示動作が押し動作であると判定されてから所定時間が経過すると、前記位置固定部による前記ポインタの位置の固定を解除する、請求項９記載のシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションシステムに関する。
【背景技術】
【０００２】
従来より、ディスプレイ上に表示されるグラフィックカーソルをユーザが制御するための情報入力装置がある。ユーザの身体の一部の動きである第１種のユーザ動作に反応して第１センサデータを生成する第１センサと、前記第１種のユーザ動作よりも細かいユーザの身体の一部の動きである第２種のユーザ動作に反応して第２センサデータを生成する第２センサとを備える。
【０００３】
前記第１種のユーザ動作に対応した広範囲移動成分と、前記第２種のユーザ動作に対応し、前記広範囲移動成分よりも高精度な移動を表す高精度範囲移動成分とを有し、前記グラフィックカーソルを移動させる信号であるハイブリッドカーソル移動信号を算出する、少なくとも１つのプロセッサをさらに備える。
【０００４】
前記少なくとも１つのプロセッサは、前記第１センサデータに前記第２センサデータを加味して決定される、前記第１種のユーザ動作に対する前記第１センサの感度を表す第１感度パラメータに基づいて前記広範囲移動成分を算出する。
【０００５】
前記少なくとも１つのプロセッサは、前記第２センサデータに前記第１センサデータを加味して決定される、前記第２種のユーザ動作に対する前記第２センサの感度を表す第２感度パラメータに基づいて前記高精度範囲移動成分を算出する（例えば、特許文献１参照）。
【０００６】
前記少なくとも１つのプロセッサは、前記第１種のユーザ動作及び前記第２種のユーザ動作の双方が実行されている場合、前記第２種のユーザ動作が激しいほど前記第１感度パラメータを小さく設定して前記広範囲移動成分を抑制し、前記第１種のユーザ動作が激しいほど前記第２感度パラメータを小さく設定して前記高精度範囲移動成分を抑制する。
【０００７】
前記グラフィックカーソルは、少なくとも第１カーソルと、前記第１カーソル内に位置し前記第１カーソルよりも小さい第２カーソルとで構成され、前記少なくとも１つのプロセッサは、さらに、前記第１感度パラメータが大きいほど、または、前記第２感度パラメータが小さいほど、前記第１カーソルのサイズを小さく設定する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−５２８６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、従来の情報入力装置は、第１カーソルと第２カーソルという２つのカーソルを操作することになるため、使い勝手が良好ではないという課題がある。
【００１０】
そこで、使い勝手が良好なシミュレーションシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の実施の形態のシミュレーションシステムは、利用者によって位置が操作されるポインタを表示する表示部と、前記利用者が前記ポインタの位置を指示する指示動作を検出する第１検出部と、前記第１検出部によって検出される前記指示動作に基づき、前記表示部の座標系におけるポインタの位置を検出する第２検出部と、前記第１検出部によって検出される前記指示動作に基づき、前記利用者の腕の伸ばし度合を計算する伸ばし度合計算部と、前記第１検出部によって検出される前記指示動作に基づき、前記利用者の手の第１移動速度を計算する速度計算部と、前記腕の伸ばし度合が所定度合以上で、かつ、前記第１移動速度が第１速度閾値以上である場合に、前記指示動作が押し動作であると判定する押し動作判定部と、前記腕の伸ばし度合が前記所定度合以上で、かつ、前記第１移動速度が第２速度閾値以下である場合に、前記指示動作が引き動作であると判定する引き動作判定部と、前記押し動作及び前記引き動作がこの順で行われた場合に、前記押し動作及び前記引き動作が決定動作であると判定する決定判定部とを含む。
【発明の効果】
【００１２】
使い勝手が良好なシミュレーションシステムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１のシミュレーションシステムを示す図である。
【図２】シミュレーションシステムの処理装置の構成を示す図である。
【図３】実施の形態１の処理装置が適用されるコンピュータシステムの斜視図である。
【図４】コンピュータシステムの本体部内の要部の構成を説明するブロック図である。
【図５】形状データを示す図である。
【図６】物品の画像の一例を示す図である。
【図７】タップ動作の腕伸ばし量を説明する図である。
【図８】右手の移動速度と閾値を示す特性図である。
【図９】移動速度を計測する方向を説明する図である。
【図１０】閾値速度ＴｈＶｐの設定方法を説明する図である。
【図１１】実施の形態１の処理装置１２０が実行する処理を示すフローチャートである。
【図１２】タップ動作で入力を行った結果を示す図である。
【図１３】評価結果を示す図である。
【図１４】実施の形態２のシミュレーションシステムの処理装置１２０Ａの構成を示す図である。
【図１５】閾値速度設定部１２７による閾値速度の設定方法を説明する図である。
【図１６】閾値速度設定部１２７による閾値速度の設定方法を説明する図である。
【図１７】実施の形態２の処理装置１２０Ａが実行する処理を示すフローチャートである。
【図１８】実施の形態３のシミュレーションシステムの処理装置１２０Ｂの構成を示す図である。
【図１９】動作判定部１２６による動作の判定方法を説明する図である。
【図２０】動作判定部１２６による動作の判定方法を説明する図である。
【図２１】実施の形態３の処理装置１２０Ｂが実行する処理を示すフローチャートである。
【図２２】実施の形態４のシミュレーションシステムの処理装置１２０Ｃの構成を示す図である。
【図２３】右腕の動作とポインタ１３０Ａの動きの関係を説明する図である。
【図２４】実施の形態４の処理装置１２０Ｃが実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明のシミュレーションシステムを適用した実施の形態について説明する。
【００１５】
＜実施の形態１＞
図１は、実施の形態１のシミュレーションシステム１００を示す図である。図２は、シミュレーションシステム１００の処理装置１２０の構成を示す図である。
【００１６】
シミュレーションシステム１００は、スクリーン１１０Ａ、投影装置１１０Ｂ、３Ｄ(3  Dimension)眼鏡１１０Ｃ、処理装置１２０、及び位置計測装置１４０を含む。
【００１７】
実施の形態１のシミュレーションシステム１００は、例えば、組み立て作業性を仮想空間において把握するため組立支援システムに適用することができる。組立支援システムでは、例えば、ＣＰＵ(Central  Processing  Unit：中央演算処理装置)モジュール、メモリモジュール、通信モジュール、又はコネクタ等の電子部品をマザーボード等に組み付ける作業を仮想空間で模擬的に行うことができる。
【００１８】
しかしながら、実施の形態１のシミュレーションシステム１００は、組立支援システムに限らず、三次元空間での作業性を確認する様々なシステムに適用することができる。
【００１９】
スクリーン１１０Ａは、例えば、プロジェクタ用スクリーンを用いることができる。スクリーン１１０Ａのサイズは、用途に応じて適宜設定すればよい。スクリーン１１０Ａには、投影装置１１０Ｂによって投影される画像が表示される。ここでは、物品１１１、ボタン１１１Ａ、１１１Ｂ、及びポインタ１３０Ａの画像がスクリーン１１０Ａに表示されていることとする。
【００２０】
シミュレーションシステム１００では、一例として、利用者１がスクリーン１１０Ａに向けた手が指す方向にポインタ１３０Ａが表示される。利用者１は、右手の指先を開いた状態にしても、握った状態にしてもよい。利用者１が右腕を動かして手で指す方向において、スクリーン１１０Ａ上にポインタ１３０Ａが表示される。利用者１がポインタ１３０Ａを移動させるために右腕で指示する動作を指示動作と称す。
【００２１】
投影装置１１０Ｂは、スクリーン１１０Ａに画像を投影できる装置であればよく、例えば、プロジェクタを用いることができる。投影装置１１０Ｂは、ケーブル１１０Ｂ１によって処理装置１２０に接続されており、処理装置１２０から入力される画像をスクリーン１１０Ａに投影する。ここでは、投影装置１１０Ｂは、３Ｄ画像（立体視の画像）をスクリーン１１０Ａに投影できるタイプのものである。
【００２２】
なお、スクリーン１１０Ａと投影装置１１０Ｂは、表示部の一例である。
【００２３】
３Ｄ眼鏡１１０Ｃは、シミュレーションシステム１００を利用する利用者１が装着する。３Ｄ眼鏡１１０Ｃは、投影装置１１０Ｂによってスクリーン１１０Ａに投影される画像を３Ｄ画像に変換できる眼鏡であればよく、例えば、入射光を偏光する偏光眼鏡、又は、液晶シャッターを有する液晶シャッター眼鏡を用いることができる。
【００２４】
なお、スクリーン１１０Ａ及び投影装置１１０Ｂの代わりに、例えば、液晶ディスプレイパネルを用いてもよい。また、３Ｄ眼鏡１１０Ｃが不要な場合は、３Ｄ眼鏡１１０Ｃを用いなくてもよい。また、スクリーン１１０Ａ及び投影装置１１０Ｂの代わりに、３Ｄ画像を見ることができるヘッドマウントディスプレイを用いてもよい。
【００２５】
処理装置１２０は、人体検出部１２１、位置検出部１２２、動作検出部１２３、腕伸ばし量計算部１２４、速度計算部１２５、動作判定部１２６、閾値速度設定部１２７、データ保持部１２８Ａ、履歴保持部１２８Ｂ、及び映像出力部１２９を有する。処理装置１２０は、例えば、メモリを有するコンピュータによって実現される。
【００２６】
人体検出部１２１は、位置計測装置１４０から入力される利用者１の体の位置及び形状等を三次元的に表すデータに基づいて、利用者１の体が存在するかどうかを判定し、存在する場合には、利用者１の体の各部の位置を表す座標を求める。利用者１の体の各部の位置は、一例として、利用者１の骨格の位置によって表される。骨格の位置には、例えば、頭部、肩、肘、手首、手の位置が含まれる。なお、人体検出部１２１は、位置検出部１２２とともに、第２検出部の一例である。
【００２７】
位置検出部１２２は、人体検出部１２１から入力される利用者１の体の各部の位置を表す座標に基づいて、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を求める。位置検出部１２２は、人体検出部１２１とともに、第２検出部の一例である。
【００２８】
位置検出部１２２は、人体検出部１２１から入力される利用者１の体の各部の位置を表す座標に基づいて、利用者１の右肩と右手首とを結ぶ直線を求め、直線とスクリーン１１０Ａとの交点の座標を求める。
【００２９】
位置検出部１２２は、直線とスクリーン１１０Ａとの交点の座標値をスクリーン１１０Ａに投影される画像の中の座標に変換し、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）として出力する。なお、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）は、位置計測装置１４０が検出するようにしてもよい。
【００３０】
ここで、スクリーン１１０Ａと平行な水平方向にＸ軸、鉛直方向にＹ軸、スクリーン１１０Ａと垂直な水平方向にＺ軸を定義する。ここで、利用者１の右肩の座標をＳ（Ｓｘ，Ｓｙ，Ｓｚ）、右手首の座標をＨ（Ｈｘ，Ｈｙ，Ｈｚ）とすると、右肩と右手首とを結ぶ方向のベクトルＳＨは以下の式（１）で表される。ベクトルＳＨは、利用者１が右手でポインタ１３０Ａの位置を指示する方向を表す。
【００３１】
【数１】
2017204126.tif 000003
【００３２】
ベクトルＳＨの大きさは、右肩の座標Ｓ（Ｓｘ，Ｓｙ，Ｓｚ）と、右手首の座標Ｈ（Ｈｘ，Ｈｙ，Ｈｚ）とを用いると、次式（２）で表される。
【００３３】
【数２】
2017204126.tif 000004
【００３４】
利用者１がスクリーン１０ＡからＺ軸方向にオフセットしている量（オフセット量）をΔＬとして、次式（３）で表される座標Ｐ１（Ｐ１ｘ，Ｐ１ｙ，Ｐ１ｚ）を求める。
【００３５】
【数３】
2017204126.tif 000005
【００３６】
座標Ｐ１（Ｐ１ｘ，Ｐ１ｙ，Ｐ１ｚ）は、式（１）、（２）、（３）によって求まる座標であり、利用者１の右肩と右手首とを結ぶ直線とスクリーン１１０Ａとの交点の座標である。この交点の座標は、現実の空間における座標である。
【００３７】
位置検出部１２２は、交点の座標Ｐ１（Ｐ１ｘ，Ｐ１ｙ，Ｐ１ｚ）をスクリーン１１０Ａに投影される画像の中の座標に変換し、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）として出力する。座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）は、交点の座標Ｐ１（Ｐ１ｘ，Ｐ１ｙ，Ｐ１ｚ）をスクリーン１１０Ａに投影される画像の中の座標に変換した座標である。
【００３８】
以上のようにして、位置検出部１２２は、現実空間における交点の座標Ｐ１（Ｐ１ｘ，Ｐ１ｙ，Ｐ１ｚ）を仮想空間における座標系の値に変換した座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を求める。
【００３９】
動作検出部１２３は、人体検出部１２１から入力される利用者１の体の各部の位置を表す座標に基づいて、利用者１の動作を検出する。利用者１の動作とは、利用者１が行うゼスチャー等の動作あり、ここでは、一例として、ボタン１１１Ａ又は１１１Ｂへの入力を決定する動作、ボタン１１１Ａ又は１１１Ｂへの入力をキャンセルする動作、物品１１１を選択する動作、物品１１１の選択をキャンセルする動作がある。
【００４０】
ボタン１１１Ａ及び１１１Ｂへの入力を決定する動作は、それぞれ、ボタン１１１Ａ及び１１１Ｂをタップする動作である。また、ボタン１１１Ａへの入力をキャンセルする動作は、ボタン１１１Ａをなぞりながら腕を横に払う動作である。ここでは、利用者１は右手２Ｒを利用して操作するため、より具体的には、ボタン１１１Ａへの入力をキャンセルする動作は、ポインタ１３０Ａがボタン１１１Ａに触れた状態で、ポインタ１３０Ａを横方向に移動させる動作である。ボタン１１１Ｂへの入力をキャンセルする動作も同様である。
【００４１】
また、物品１１１を選択する動作は、物品１１１をタップする動作である。物品１１１の選択をキャンセルする動作は、物品１１１を選択した状態で、腕を横に払う動作である。
【００４２】
ポインタ１３０Ａは、利用者の指示動作に従って移動し、スクリーン１１０Ａに表示される物品１１１又はボタン１１１Ａあるいは１１１Ｂとの接触の判定に用いられる。
【００４３】
ポインタ１３０Ａと、物品１１１又はボタン１１１Ａあるいは１１１Ｂとが接触しているかどうかは、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を中心とし、所定の半径を有するポインタ１３０Ａの内部に、物品１１１又はボタン１１１Ａあるいは１１１Ｂの表示領域の少なくとも一部が含まれるかどうかで判定すればよい。ポインタ１３０Ａの内部は、ポインタ１３０Ａの表面を含む。
【００４４】
ポインタ１３０Ａの内部に、物品１１１又はボタン１１１Ａあるいは１１１Ｂの表示領域の少なくとも一部が含まれるかどうかは、ポインタ１３０Ａと、物品１１１又はボタン１１１Ａあるいは１１１Ｂの表示領域とが、交点を有するかどうかで判定すればよい。
【００４５】
ポインタ１３０Ａの内部に物品１１１又はボタン１１１Ａあるいは１１１Ｂの表示領域の少なくとも一部が含まれる場合には、ポインタ１３０Ａの表面（境界）上に、物品１１１又はボタン１１１Ａあるいは１１１Ｂの表示領域が位置する場合も含まれるものとする。
【００４６】
なお、実施の形態１では、ポインタ１３０Ａと、物品１１１又はボタン１１１Ａあるいは１１１Ｂとが接触しているかどうかについては、詳しく説明しないが、例えば、ポインタ１３０Ａと、物品１１１又はボタン１１１Ａあるいは１１１Ｂとが接触している場合に、ポインタ１３０Ａの色を変えることにより、接触していることを利用者１に伝達すればよい。
【００４７】
腕伸ばし量計算部１２４は、動作検出部１２３によって検出される利用者１の体の各部の位置を表す座標に基づいて、利用者１が腕を伸ばす量（腕伸ばし量）を計算する。腕伸ばし量計算部１２４は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手する利用者１の体の各部の位置を表す座標に基づいて、利用者１の右肩から右手２Ｒまでの距離を腕伸ばし量として計算する。
【００４８】
実施の形態１では、利用者１がポインタ１３０Ａを操作して、スクリーン１１０Ａに表示される物品をタップすることが、入力内容を決定（確定）する決定動作として決められている。タップとは、右手２Ｒで行う場合には、利用者１が右腕をくの字に曲げて右手２Ｒを胸の手前に置いた状態から、右腕を伸ばして右手２Ｒを突き出す動作である。
【００４９】
このため、利用者１がタップを行う際には、右肩と右手２Ｒの間の距離が長くなる。実施の形態１では、利用者１がタップを行ったかどうかを判定する１つの基準として、腕伸ばし量が所定量以上になることを採用している。
【００５０】
利用者１が右手２Ｒを胸の手前に置いた状態で撮影されたフレームの画像から得られる右手２Ｒの位置を表す座標と、利用者１が右腕を伸ばして右手２Ｒを突き出した状態で撮影されたフレームの画像から得られる右手２Ｒの位置を表す座標との差を求めれば、腕伸ばし量を計算することができる。なお、左手２Ｌで行うタップも同様である。
【００５１】
速度計算部１２５は、動作検出部１２３によって検出される利用者１の体の各部の位置を表す座標に基づいて、利用者１がタップを行う際の右手２Ｒの移動速度を計算する。速度計算部１２５は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手する利用者１の体の各部の位置を表す座標に基づいて、右手２Ｒの移動速度を計算する。
【００５２】
例えば、位置計測装置１４０が取得する動画のフレームレートが、３０フレーム／秒であれば、フレーム間の経過時間と、フレーム間での右手２Ｒの移動量とに基づいて、右手２Ｒの移動速度を計算することができる。なお、速度計算部１２５は、左手２Ｌの移動速度も同様に計算することができる。
【００５３】
動作判定部１２６は、腕伸ばし量計算部１２４によって計算される腕伸ばし量と、速度計算部１２５によって計算される移動速度とに基づいて、右手２Ｒ又は左手２Ｌの押し動作と引き動作が行われたかどうかを判定する。動作判定部１２６は、右手２Ｒ又は左手２Ｌによって押し動作と引き動作がこの順で所定時間（Ｔ１秒）以内に行われた場合に決定動作が行われたと判定する。動作判定部１２６は、押し動作判定部、引き動作判定部、決定動作判定部の一例である。
【００５４】
閾値速度設定部１２７は、動作判定部１２６によって決定動作が行われたと判定されない場合等の所定の場合に、決定動作の判定処理に用いる右手２Ｒ又は左手２Ｌの移動速度の閾値の設定を変更する。
【００５５】
データ保持部１２８Ａは、物品１１１又はボタン１１１Ａあるいは１１１Ｂの座標と形状を表す物品データ、及び、ポインタ１３０Ａの画像データ、ポインタ１３０Ａのサイズを表すデータ等のデータを保持する。データ保持部１２８Ａは、メモリによって実現され、データ格納部の一例である。
【００５６】
履歴保持部１２８Ｂは、所定の場合に、右手２Ｒ又は左手２Ｌの移動速度の履歴を保持する。履歴保持部１２８Ｂは、速度計算部１２５が計算する右手２Ｒ又は左手２Ｌの移動速度の履歴を保持する。右手２Ｒの移動速度は、フレーム間の経過時間と、フレーム間での右手２Ｒの移動量とから計算されるため、移動速度の履歴は、動画のフレーム数に応じた数だけ得られる。なお、左手２Ｌの移動速度も同様である。
【００５７】
履歴保持部１２８Ｂは、例えば、ＲＡＭ(Random  Access  Memory)又はレジスタによって実現される。また、履歴保持部１２８Ｂは、データ保持部１２８Ａと一体化されていてもよい。この場合には、履歴保持部１２８Ｂは、データ保持部１２８Ａを構築するメモリの一部である。
【００５８】
映像出力部１２９の出力端子は、ケーブル１１０Ｂ１によって投影装置１１０Ｂに接続されている。映像出力部１２９は、データ保持部１２８Ａに保持される物品１１１の物品データによって特定される画像を投影装置１１０Ｂに出力し、スクリーン１１０Ａに表示させる。
【００５９】
また、映像出力部１２９は、投影装置１１０Ｂにポインタ１３０Ａを表示させる。ポインタ１３０Ａの画像は、データ保持部１２８Ａに保持される画像に基づいて生成される。
【００６０】
位置計測装置１４０は、利用者１の体の位置及び形状等を三次元的に表すデータを取得する装置である。位置計測装置１４０は、スクリーン１１０Ａの上方に設置されており、スクリーン１１０Ａの正面に、検出範囲１４２を有する。検出範囲１４２は、位置計測装置１４０のカメラ１４０Ａから、スクリーン１１０Ａの正面にかけて延在する。位置計測装置１４０は、ケーブル１４１によって処理装置１２０に接続されている。
【００６１】
位置計測装置１４０は、より具体的には、例えば、赤外線レーザを被写体に向けて照射し、反射光を受光するまでの時間に基づいて、画像に含まれる点までの距離（深度）を算出する装置である。位置計測装置１４０は、スクリーン１１０Ａに向かって指示動作を行う利用者１の画像を取得し、利用者１の姿勢、及び、ゼスチャー等を表す三次元的な距離画像のデータを取得する。位置計測装置１４０は、取得した三次元的なデータを、ケーブル１４１を介して処理装置１２０に伝送する。
【００６２】
図３は、実施の形態１の処理装置１２０が適用されるコンピュータシステムの斜視図である。図３に示すコンピュータシステム１０は、本体部１１、ディスプレイ１２、キーボード１３、マウス１４、及びモデム１５を含む。
【００６３】
本体部１１は、ＣＰＵ（Central  Processing  Unit：中央演算装置）、ＨＤＤ（Hard  Disk  Drive：ハードディスクドライブ）、及びディスクドライブ等を内蔵する。ディスプレイ１２は、本体部１１からの指示により画面１２Ａ上に解析結果等を表示する。ディスプレイ１２は、例えば、液晶モニタであればよい。キーボード１３は、コンピュータシステム１０に種々の情報を入力するための入力部である。マウス１４は、ディスプレイ１２の画面１２Ａ上の任意の位置を指定する入力部である。モデム１５は、外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする。
【００６４】
コンピュータシステム１０に処理装置１２０としての機能を持たせるプログラムは、ディスク１７等の可搬型記録媒体に格納されるか、モデム１５等の通信装置を使って他のコンピュータシステムの記録媒体１６からダウンロードされ、コンピュータシステム１０に入力されてコンパイルされる。
【００６５】
コンピュータシステム１０に処理装置１２０としての機能を持たせるプログラムは、コンピュータシステム１０を処理装置１２０として動作させる。このプログラムは、例えばディスク１７等のコンピュータ読み取り可能な記録媒体に格納されていてもよい。コンピュータ読み取り可能な記録媒体は、ディスク１７、ＩＣカードメモリ、フロッピー（登録商標）ディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＵＳＢ(Universal  Serial  Bus)メモリ等の可搬型記録媒体に限定されるものではない。コンピュータ読み取り可能な記録媒体は、モデム１５又はＬＡＮ等の通信装置を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【００６６】
図４は、コンピュータシステム１０の本体部１１内の要部の構成を説明するブロック図である。本体部１１は、バス２０によって接続されたＣＰＵ２１、ＲＡＭ又はＲＯＭ等を含むメモリ部２２、ディスク１７用のディスクドライブ２３、及びハードディスクドライブ（ＨＤＤ）２４を含む。実施の形態１では、ディスプレイ１２、キーボード１３、及びマウス１４は、バス２０を介してＣＰＵ２１に接続されているが、これらはＣＰＵ２１に直接的に接続されていてもよい。また、ディスプレイ１２は、入出力画像データの処理を行う周知のグラフィックインタフェース（図示せず）を介してＣＰＵ２１に接続されていてもよい。
【００６７】
コンピュータシステム１０において、キーボード１３及びマウス１４は、処理装置１２０の入力部である。ディスプレイ１２は、処理装置１２０に対する入力内容等を画面１２Ａ上に表示する表示部である。
【００６８】
なお、コンピュータシステム１０は、図３及び図４に示す構成のものに限定されず、各種周知の要素を付加してもよく、又は代替的に用いてもよい。
【００６９】
図５は、形状データを示す図である。
【００７０】
物品データは、スクリーン１１０Ａに表示する物品の座標と形状を表すデータである。物品データは、物品ＩＤ、形状タイプ、基準座標、サイズ、及び回転角度を有する。
【００７１】
形状タイプは、物品の外形を表す。図５では、一例として、形状タイプがCuboid(直方体)とCylinder(円柱体)を示す。
【００７２】
基準座標は、物品の全体を表す座標の基準になる点の座標値を示す。座標値の単位はメートル（ｍ）である。なお、座標系としては、ＸＹＺ座標系を用いる。
【００７３】
サイズは、物品のＸ軸方向の長さ、Ｙ軸方向の長さ、Ｚ軸方向の長さを表す。単位はメートル（ｍ）である。一例として、Ｘ軸方向の長さは縦の長さを表し、Ｙ軸方向の長さは高さを表し、Ｚ軸方向の長さは奥行き（横方向の長さ）を表す。
【００７４】
回転角度は、Ｘ軸方向、Ｙ軸方向、Ｚ軸方向に対する回転角度θｘ、θｙ、θｚで表される。単位は度(deg.)である。回転角度θｘは、Ｘ軸を回転軸として物品を回転させる角度である。同様に、回転角度θｙ及びθｚは、それぞれ、Ｙ軸及びＺ軸を回転軸として物品を回転させる角度である。回転角度θｘ、θｙ、θｚの正方向は、予め決めておけばよい。
【００７５】
このような物品データを用いれば、ＣＡＤデータによって表示される物品の画像と同様に、物品データによって特定される画像を表すことができる。
【００７６】
なお、物品データは、処理装置１２０のデータ保持部１２８Ａに格納されている。
【００７７】
図６は、物品の画像の一例を示す図である。
【００７８】
図６には、図８の物品データによって表される３つの物品を示す。
【００７９】
物品ＩＤが001の物品は、形状タイプがCuboid(直方体)で、基準座標（Ｘ，Ｙ，Ｚ）が（０．０，０．０，０．０）であり、サイズが（０．８，０．２，０．４）であり、回転角度θｘ、θｙ、θｚが（０．０，０．０，０．０）である。
【００８０】
基準座標（Ｘ，Ｙ，Ｚ）が（０．０，０．０，０．０）であるため、物品ＩＤが001の物品の１つの頂点は、ＸＹＺ座標系の原点Ｏと一致している。
【００８１】
物品ＩＤが002の物品は、形状タイプがCuboid(直方体)で、基準座標（Ｘ，Ｙ，Ｚ）が（０．６，０．２，０．０）であり、サイズが（０．２，０．２，０．１）であり、回転角度θｘ、θｙ、θｚが（０．０，０．０，０．０）である。
【００８２】
このため、物品ＩＤが002の物品は、物品ＩＤが001の物品の上に配置されている。
【００８３】
物品ＩＤが003の物品は、形状タイプがCylinder(円柱体)で、基準座標（Ｘ，Ｙ，Ｚ）が（０．８，０．３，０．１）であり、サイズが（０．２，１．０，０．３）であり、回転角度θｘ、θｙ、θｚが（０．０，０．０，９０．０）である。
【００８４】
このため、物品ＩＤが003の物品は、Ｚ軸を回転軸として９０度回転させた状態で、物品ＩＤが002の物品のＸ軸正方向側に接続されている。
【００８５】
なお、上述のように、実施の形態１では、図８に示す物品ＩＤ、形状タイプ、基準座標、サイズ、及び回転角度を有する物品データを用いて、スクリーン１１０Ａに投影される画像の中における物品の座標と形状を規定する。
【００８６】
例えば、形状タイプがCuboid(直方体)の場合に、８つの頂点の座標は、基準座標に対して、サイズで表される物品のＸ軸方向の長さ、Ｙ軸方向の長さ、Ｚ軸方向の長さを加算又は減算することによって求めることができる。８つの頂点の座標は、形状タイプがCuboid(直方体)の物品のCorner(角)の座標を表す。
【００８７】
８つの頂点の座標を求めれば、１２本の辺を表す式を求めることができる。１２本の辺を表す式は、形状タイプがCuboid(直方体)の物品のEdge(辺)の座標を表す式である。
【００８８】
また、８つの頂点の座標、及び／又は、１２本の辺を表す式を求めれば、形状タイプがCuboid(直方体)の物品の６つの表面を表す式が求まり、Surface(面)の座標を求めることができる。
【００８９】
また、形状タイプがCylinder(円柱体)の場合には、サイズで表される物品のＸ軸方向の長さ、Ｙ軸方向の長さ、Ｚ軸方向の長さに基づいて、円柱の両端にある円（又は楕円）を表す式を求めることができる。また、両端の円（又は楕円）を表す式と基準座標とを用いれば、両端の円（又は楕円）の座標を表す式を求めることができる。円柱体の側面の座標は、両端の円（又は楕円）の座標を表す式を用いることよって求めることができる。
【００９０】
ここでは、形状タイプがCuboid(直方体)とCylinder(円柱体)の物品について説明したが、球体、三角錐、凹部を有する直方体等の様々な形状の物品についても、同様にスクリーン１１０Ａに投影される画像の中における座標と形状を求めることができる。
【００９１】
図７は、タップ動作の腕伸ばし量を説明する図である。図８は、右手の移動速度と閾値を示す特性図である。
【００９２】
図７（Ａ）に示すように、スクリーン１１０Ａの前に立っている利用者１は、右腕をくの字に曲げて右手２Ｒを胸の手前に置いている。これは、タップ動作を開始するときの状態である。
【００９３】
図７（Ｂ）、（Ｃ）に示すように、利用者１は、右腕を伸ばして右手２ＲをＺ軸正方向に突き出す。そして、図７（Ｄ）に示すように、右手２ＲをＺ軸負方向に引き戻し、図７（Ｅ）に示すように右腕をくの字に曲げて右手２Ｒを胸の手前に置く。Ｚ軸正方向における右手２Ｒの移動速度を正にすると、図７（Ｂ）に示すように右手２Ｒを突き出すときの右手２Ｒの移動速度ＶＲは正の値であり、図７（Ｄ）に示すように右手２Ｒを引き戻すときの右手２Ｒの移動速度ＶＲは負の値（−ＶＲ）である。
【００９４】
図８において、横軸はフレーム数を表し、縦軸は右手２Ｒの移動速度を表す。フレーム数は、経過時間に対応しており、左から右に向かって経過時間が増える。また、移動速度は上方向が正である。
【００９５】
タップ動作が行われたことを判定する際には、図８に示すように、閾値ＴｈＬ、閾値速度ＴｈＶｐ、ＴｈＶｎを用いる。閾値ＴｈＬは、腕伸ばし量の閾値である。閾値速度ＴｈＶｐは、移動速度が正の領域における閾値であるため、正の値である。閾値速度ＴｈＶｎは、移動速度が負の領域における閾値であるため、負の値である。図８では、腕伸ばし量を実線で示し、右手２Ｒの移動速度を破線で示す。
【００９６】
利用者１がフレームｆ１で右手２Ｒでタップ動作を開始すると、腕伸ばし量が増大し、移動速度は上昇する。実施の形態１では、腕伸ばし量が閾値ＴｈＬ以上であるときに、移動速度が閾値速度ＴｈＶｐ以上になり、その後閾値速度ＴｈＶｎ以下になった場合に、タップ動作が行われたと判定する。
【００９７】
ある程度腕を伸ばした状態で、素早く右手２Ｒを突き出し、その後に素早く右手２Ｒを引き込んだ場合に、タップ動作が行われたと判定するようにするためである。
【００９８】
このため、フレームｆ２で腕伸ばし量が閾値ＴｈＬ以上になり、フレームｆ３で右手２Ｒの移動速度が閾値速度ＴｈＶｐ以上になり、その後、フレームｆ４で右手２Ｒの移動速度が閾値速度ＴｈＶｎ以下になり、フレームｆ５で腕伸ばし量が閾値ＴｈＬ未満になる動作が行われた場合には、タップ動作が行われたと判定される。なお、左手２Ｌで行うタップも同様である。
【００９９】
図９は、移動速度を計測する方向を説明する図である。図７では、右手２ＲをＺ軸方向に移動させる場合について説明したが、図９に示すように、利用者１の右肩２ＲＳを始点とし、右手２Ｒを終点とするベクトル（矢印参照）に沿った移動速度を計算してもよい。右肩２ＲＳと右手２Ｒの座標は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手するので、速度算出部１２５が右肩２ＲＳと右手２Ｒの座標に基づいて移動速度を算出すればよい。
【０１００】
なお、移動速度の算出方法は、このような方法に限られず、図７に示すようにＺ軸方向の速度成分を用いてもよいし、Ｘ軸方向、Ｙ軸方向、Ｚ軸方向の各成分の二乗和の平方根を算出してもよい。
【０１０１】
図１０は、閾値速度ＴｈＶｐの設定方法を説明する図である。
【０１０２】
図１０（Ａ）に示すように、腕伸ばし量がＴｈＬ以上になっても、移動速度が閾値速度ＴｈＶｐ以上にならない場合には、タップ動作を行うことができない。例えば、右手２Ｒの移動速度が比較的低い場合には、このようなことが起こり得る。
【０１０３】
このような場合には、閾値速度設定部１２７が閾値速度ＴｈＶｐを変更する。具体的には、図１０（Ｂ）に示すように、移動速度の最大値Ｖｍａｘの８０％に閾値速度ＴｈＶｐを変更する。図１０（Ｂ）には変更後の閾値速度ＴｈＶｐを新ＴｈＶｐとして示す。図１０（Ｂ）に示す新ＴｈＶｐは、図１０（Ａ）に示す閾値速度ＴｈＶｐよりも低い。
【０１０４】
このように、利用者１の右手２Ｒの移動速度に応じて閾値速度ＴｈＶｐを変更すれば、利用者１の右手２Ｒの移動速度に拘わらずに、タップ動作を行うことができるようになる。
【０１０５】
図１１は、実施の形態１の処理装置１２０が実行する処理を示すフローチャートである。
【０１０６】
ここでは、一例として、図１に示すように、スクリーン１１０Ａに物品１１１とボタン１１１Ａ、１１１Ｂの画像を表示させる場合について説明する。
【０１０７】
処理装置１２０は、電源投入後に処理を開始する（スタート）。
【０１０８】
処理装置１２０は、電源がオンであるかどうかを判定する（ステップＳ１）。電源がオンでなければ処理を終了（エンド）するためである。
【０１０９】
処理装置１２０は、位置計測装置１４０から利用者１の体の位置及び形状等を三次元的に表すデータを取得する（ステップＳ２）。ステップＳ２の処理は、人体検出部１２１によって行われる。
【０１１０】
処理装置１２０は、ステップＳ２で取得したデータに基づいて、利用者１の体が存在するかどうかを判定する（ステップＳ３）。ステップＳ３の処理は、人体検出部１２１によって行われる。
【０１１１】
処理装置１２０は、利用者１の体が存在する（Ｓ３：ＹＥＳ）と判定すると、操作がスタートしているかどうかを判定する（ステップＳ４）。ステップＳ４の処理は、図１１に示すフローがスタートしているかどうかを判定する処理であり、後述するステップＳ８でスタートフラグが１に設定されているかどうかを判定する処理である。従って、ステップＳ８の処理を未だ行っていない場合は、フローはステップＳ５に進行する。
【０１１２】
処理装置１２０は、操作がスタートしていない（Ｓ４：ＮＯ）と判定すると、右手２Ｒの移動速度ＶＲを計算する（ステップＳ５）。ステップＳ５の処理は、速度計算部１２５によって行われる。
【０１１３】
処理装置１２０は、ステップＳ５で計算した移動速度のデータを速度履歴として保持する（ステップＳ６）。ステップＳ６の処理は、履歴保持部１２８Ｂによって行われる。なお、移動速度は、フレーム間での右手２Ｒの移動量に基づいて計算されるため、例えば、移動速度のデータをフレーム番号と関連付けて速度履歴として保持しておけばよい。
【０１１４】
処理装置１２０は、利用者１が右手２Ｒを上げているかどうかを判定する（ステップＳ７）。ステップＳ７の処理は、動作検出部１２３によって行われる。動作検出部１２３は、人体検出部１２１から入力される利用者１の体の各部の位置を表す座標に基づいて、利用者１が右手２Ｒを上げているかどうかを判定する。
【０１１５】
処理装置１２０は、利用者１が右手２Ｒを上げている（Ｓ７：ＹＥＳ）と判定すると、操作をスタートさせる（ステップＳ８）。具体的には、スタートフラグが１に設定される。
【０１１６】
次いで、処理装置１２０は、操作画面を表示する（ステップＳ９）。ステップＳの処理は、映像出力部１２９によって行われる。具体的には、処理装置１２０は、データ保持部１２８Ａから物品データを取得し、物品データを用いて映像信号を生成し、投影装置１１０Ｂに画像を投影させる。これにより、スクリーン１１０Ａに物品１１１とボタン１１１Ａ、１１１Ｂの立体視のモデルの画像が表示される。スクリーン１１０Ａに表示される物品１１１とボタン１１１Ａ、１１１Ｂの画像は、仮想空間に存在する仮想物体を表す。
【０１１７】
処理装置１２０は、速度履歴から最大の移動速度Ｖｍａｘを取得する（ステップＳ１０）。ステップＳ１０の処理は、閾値速度設定部１２７によって行われる。
【０１１８】
処理装置１２０は、ステップＳ１０で取得した最大の移動速度Ｖｍａｘの８０％の移動速度を閾値速度ＴｈＶｐとして設定する（ステップＳ１１）。ステップＳ１１の処理は、閾値速度設定部１２７によって行われる。このように、利用者１の右手２Ｒの移動速度ＶＲに合わせて、閾値速度ＴｈＶｐを設定することができる。すなわち、個人個人の運動特性に合わせて閾値速度ＴｈＶｐを設定することができる。
【０１１９】
処理装置１２０は、ステップＳ１１の処理を終えると、フローをステップＳ１にリターンする。
【０１２０】
なお、処理装置１２０は、ステップＳ７において、利用者１が右手２Ｒを上げていない（Ｓ７：ＮＯ）と判定した場合も、フローをステップＳ１にリターンする。
【０１２１】
処理装置１２０は、ステップＳ４において、操作がスタートしている（Ｓ４：ＹＥＳ）と判定すると、利用者１の体の各部の位置を表す座標を求め、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を検出する（ステップＳ１２）。座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）は、利用者１の右肩と右手首とを結ぶ直線とスクリーン１１０Ａとの交点の座標をスクリーン１１０Ａに投影される画像の中の座標に変換した座標である。
【０１２２】
ステップＳ１２の処理のうち、利用者１の体の各部の位置を表す座標を求める処理は、人体検出部１２１によって行われ、座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を検出する処理は、位置検出部１２２によって行われる。
【０１２３】
処理装置１２０は、腕伸ばし量Ｌを計算する（ステップＳ１３）。ステップＳ１３の処理は、腕伸ばし量計算部１２４によって行われる。腕伸ばし量計算部１２４は、利用者１の右肩から右手２Ｒまでの距離を腕伸ばし量として計算する。利用者１の右肩から右手２Ｒまでの距離は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手する利用者１の体の各部の位置を表す座標に基づいて計算される。
【０１２４】
処理装置１２０は、腕伸ばし量Ｌが閾値ＴｈＬ以上であるかどうかを判定する（ステップＳ１４）。ステップＳ１４の処理は、動作判定部１２６によって行われる。
【０１２５】
処理装置１２０は、腕伸ばし量Ｌが閾値ＴｈＬ以上ではない（Ｓ１４：ＮＯ）と判定すると、フローをステップＳ１５に進行させて、ポインタ１３０Ａを表示させる（ステップＳ１５）。ステップＳ１５の処理は、映像出力部１２９によって行われる。
【０１２６】
処理装置１２０は、腕伸ばし量Ｌが閾値ＴｈＬ以上である（Ｓ１４：ＹＥＳ）と判定すると、右手２Ｒの移動速度ＶＲを計算する（ステップＳ１６）。ステップＳ１６の処理は、速度計算部１２５によって行われる。速度計算部１２５は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手する利用者１の体の各部の位置を表す座標に基づいて、右手２Ｒの移動速度ＶＲを計算する。
【０１２７】
処理装置１２０は、押し動作を検出済みであるかどうかを判定する（ステップＳ１７）。ステップＳ１７の処理は、動作判定部１２６によって行われ、押し動作フラグが１であるかどうかを判定することによって行われる。押し動作フラグは、動作判定部１２６によって押し動作を検出されると１に設定され、後述するステップＳ２０Ａでリセットされる。
【０１２８】
処理装置１２０は、押し動作を検出済みではない（Ｓ１７：ＮＯ）と判定すると、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｐ以上であるかどうかを判定する（ステップＳ１８）。ステップＳ１８の処理は、動作判定部１２６によって行われる。
【０１２９】
処理装置１２０は、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｐ以上ではない（Ｓ１８：ＮＯ）と判定すると、フローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。
【０１３０】
処理装置１２０は、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｐ以上である（Ｓ１８：ＹＥＳ）と判定すると、押し動作を検出する（ステップＳ１９）。ステップＳ１９の処理は、動作判定部１２６によって行われ、押し動作フラグが１に設定される。ステップＳ１９の処理を終えると、処理装置１２０はフローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。
【０１３１】
処理装置１２０は、ステップＳ１７において、押し動作を検出済みである（Ｓ１７：ＹＥＳ）と判定すると、押し動作を検出してからＴ１秒経過したかどうかを判定する（ステップＳ２０）。ステップＳ２０の処理は、動作判定部１２６によって行われる。
【０１３２】
動作判定部１２６は、ステップＳ１９で押し動作を検出して押し動作フラグを１に設定してから、Ｔ１秒が経過したかどうかを判定する。Ｔ１秒は、例えば、１秒程度である。ステップＳ２０は、タップ動作の押し動作と引き動作との間の時間がＴ１秒以内であるかどうかを判定するための判定処理である。
【０１３３】
処理装置１２０は、押し動作を検出してからＴ１秒経過していない（Ｓ２０：ＮＯ）と判定すると、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｎ以下であるかどうかを判定する（ステップＳ２１）。ステップＳ２１の処理は、動作判定部１２６によって行われる。引き動作の速度を閾値速度ＴｈＶｎと比較するためである。なお、閾値速度ＴｈＶｎを表すデータは、予めデータ保持部１２８Ａによって保持されている。
【０１３４】
処理装置１２０は、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｎ以下である（Ｓ２１：ＹＥＳ）と判定すると、引き動作を検出する（ステップＳ２２）。ステップＳ２２の処理は、動作判定部１２６によって行われる。
【０１３５】
次いで、処理装置１２０は、タップ動作を検出する（ステップＳ２３）。ステップＳ２３の処理は、動作判定部１２６によって行われる。
【０１３６】
次いで、処理装置１２０は、操作画面の更新時刻であるかどうかを判定する（ステップＳ２４）。ステップＳ２４の処理は、映像出力部１２９によって行われる。図１１に示すフローを実行する制御周期と、フレームレートとは異なるため、操作画面の更新時刻であるかどうかを判定することとしたものである。
【０１３７】
処理装置１２０は、操作画面の更新時刻である（Ｓ２４：ＹＥＳ）と判定すると、操作画面を切り替える（ステップＳ２５）。ステップＳ２５の処理は、映像出力部１２９によって行われる。例えば、タップ動作によって物品１１１が選択された場合には、物品１１１の表示色を変更する、又は、ポインタ１３０Ａの表示色を変更するという処理が行われることによって操作画面が切り替えられる。
【０１３８】
処理装置１２０は、ステップＳ２５の処理を終えると、一連の処理を終了する。以上のように、処理装置１２０によって設定される閾値速度を用いて、図１１に示すフローは、繰り返し実行される。
【０１３９】
なお、処理装置１２０は、押し動作を検出してからＴ１秒経過した（Ｓ２０：ＹＥＳ）と判定すると、押し動作フラグを０に設定する（ステップＳ２０Ａ）。ステップＳ２０Ａの処理は、押し動作を検出していない状態に戻すために、動作判定部１２６によって行われる。
【０１４０】
また、処理装置１２０は、操作画面の更新時刻ではない（Ｓ２４：ＮＯ）と判定すると、フローをステップＳ１５にリターンする。これにより、ポインタ１３０Ａが表示される。
【０１４１】
以上のように、実施の形態１のシミュレーションシステム１００は、右手２Ｒによって押し動作と引き動作がこの順で所定時間（Ｔ１）以内に行われた場合に決定動作が行われたと判定する。この判定は、動作判定部１２６によって行われる。
【０１４２】
このため、タップ動作を高精度に判別することができ、使い勝手が良好なシミュレーションシステム１００を提供することができる。
【０１４３】
利用者１がタップ動作以外の動作（例えば、手を振る動作、又は、意図せずに手を動かす動作等）を行った場合に、タップ動作として誤検出することを抑制でき、シミュレーションシステム１００において、利用者１が自分の意志通りにタップ動作で入力を確定することができる。
【０１４４】
なお、以上では、ステップＳ５で計算した移動速度の履歴を作成し（ステップＳ６）、履歴の中の最大速度Ｖｍａｘの８０％の値を閾値速度に設定する（ステップＳ１０、Ｓ１１）形態について説明したが、閾値速度は８０％以外の割合であってもよい。最大速度に対する割合は、例えば、実験等で最適値を求めればよい。
【０１４５】
また、閾値速度ＴｈＶｐを設定する際に、移動速度の最大値Ｖｍａｘを用いる代わりに、移動速度の最大値Ｖｍａｘと、最大値Ｖｍａｘの次に大きな１又は複数の値の平均値等を用いてもよい。
【０１４６】
また、ステップＳ５、Ｓ６、Ｓ１０、Ｓ１１を行わずに、予め所定の閾値速度を設定しておき、ステップＳ１８及びＳ２１の判定を行ってもよい。
【０１４７】
ここで、実際のシミュレーションシステム１００において、タップ動作で入力を行った結果を図１２に示す。
【０１４８】
図１２は、タップ動作で入力を行った結果を示す図である。図１２において、横軸はフレーム（時間経過）を示し、縦軸は右手２Ｒの移動速度ＶＲを示す。移動速度は、スクリーン１１０Ａに向かって右手２Ｒを突き出す方向における速度を正の値で示し、スクリーン１１０Ａから右手２Ｒを引き込む方向における速度を負の値で示す。
【０１４９】
図１２には、５回連続でタップ動作を行った場合の１０００フレームにおける結果を示す。利用者１がタップを行っている区間をグレーで示す。また、シミュレーションシステム１００によってタップ動作が認識されたフレームを矢印で指し示す。
【０１５０】
図１３は、評価結果を示す図である。図１３には、１０００フレームのうち、タップ動作を正確に検出したフレーム数（正解のフレーム数）と、タップ動作を正確に検出しなかったフレーム数（不正解のフレーム数）とを示す。
【０１５１】
図１３に示すように、５回のタップ動作は、５つのフレームによってすべて正確に検出されており、タップ動作を誤検出したフレームは０であった。従って、正解率は１００％であった。
【０１５２】
なお、ここには詳細を示さないが、腕伸ばし量が閾値ＴｈＬ以上であるかどうかの判定、閾値速度ＴｈＶｎによる指示動作の判定、及び、押し動作と引き動作がこの順で所定時間（Ｔ１）以内に行われたどうかの判定を行わずに、閾値速度ＴｈＶｐのみを用いて指示動作を検出した場合には、正解率は約２１％であった。
【０１５３】
この結果より、シミュレーションシステム１００がタップ動作を検出する精度の高さを確認することができた。
【０１５４】
＜実施の形態２＞
図１４は、実施の形態２のシミュレーションシステムの処理装置１２０Ａの構成を示す図である。
【０１５５】
処理装置１２０Ａは、人体検出部１２１、位置検出部１２２、動作検出部１２３、腕伸ばし量計算部１２４、速度計算部１２５、動作判定部１２６、閾値速度設定部１２７、データ保持部１２８Ａ、履歴保持部１２８Ｂ、及び映像出力部１２９を有する。
【０１５６】
実施の形態２では、動作検出部１２３が、さらに、タップ動作をキャンセルするキャンセル動作を検出する点と、履歴保持部１２８Ｂが速度履歴に加えてタップ動作の履歴とタップ動作のキャンセル履歴を保持する点と、閾値速度設定部１２７の機能とが実施の形態１の処理装置１２０と異なる。
【０１５７】
動作検出部１２３がタップ動作をキャンセルするキャンセル動作を検出するのは、キャンセル動作判定部としての機能の一例である。履歴保持部１２８Ｂがタップ動作の履歴を保持するのは、決定動作履歴保持部としての機能の一例である。
【０１５８】
図１５及び図１６は、閾値速度設定部１２７による閾値速度の設定方法を説明する図である。
【０１５９】
例えば、過去の所定時間（Ｔ３）の間にタップ動作が検出されておらず、タップ動作に近い動作が行われている場合には、閾値速度ＴｈＶｐ、ＴｈＶｎを再設定する。図１５（Ａ）に示すように、過去の所定時間（Ｔ３）の間に、１度目の動作ではタップ動作が検出されずに、２度目の動作でタップ動作が検出される場合には、図１５（Ｂ）に示すように、閾値速度ＴｈＶｐ、ＴｈＶｎを絶対値の小さいＴｈＶｐ１、ＴｈＶｎ１に変更すると、１度目の動作もタップ動作として検出されるようになる。なお、閾値速度ＴｈＶｐとＴｈＶｎのいずれか一方のみを変更してもよい。
【０１６０】
また、例えば、過去の所定時間（Ｔ２）以内に複数のタップ動作を検出した場合には、タップ動作を検出する感度が過敏であるため、過去の所定時間（Ｔ２）以内における押し動作における移動速度の最大値を閾値速度ＴｈＶｐに設定する。また、これに加えて、過去の所定時間（Ｔ２）以内における引き動作における移動速度の最小値（絶対値が最大の速度）を閾値速度ＴｈＶｎに設定してもよい。
【０１６１】
また、過去の所定時間（Ｔ４）以内にタップ動作がキャンセルされた場合には、閾値速度ＴｈＶｐ、ＴｈＶｎを再設定し、絶対値を増大させる。図１６（Ａ）に示すように、過去の所定時間（Ｔ４）の間に、３回タップ動作が検出され、３回目のタップ動作がキャンセルされたような場合には、図１６（Ｂ）に示すように、閾値速度ＴｈＶｐ、ＴｈＶｎを絶対値の大きいＴｈＶｐ２、ＴｈＶｎ２に変更すると、２度目の動作のみがタップ動作として検出されるようになる。なお、閾値速度ＴｈＶｐとＴｈＶｎのいずれか一方のみを変更してもよい。
【０１６２】
図１７は、実施の形態２の処理装置１２０Ａが実行する処理を示すフローチャートである。図１７では、図１１に示す実施の形態１のフローにおけるステップと同様のステップには同一のステップ番号を付し、その説明を省略する。
【０１６３】
図１７に示すフローは、図１１に示すフローのステップＳ５、Ｓ６、Ｓ１０、Ｓ１１を省略し、予め設定した所定の閾値速度でステップＳ１８及びＳ２１の判定を行うようにするとともに、ステップＳ１６Ａ、Ｓ２３Ａ、Ｓ２６Ａ、Ｓ２６Ｂ、Ｓ２６Ｃ、Ｓ２７Ａ、Ｓ２７Ｂ、Ｓ２８Ａ、Ｓ２８Ｂを追加したものである。
【０１６４】
処理装置１２０Ａは、ステップＳ１６で右手２Ｒの移動速度ＶＲを計算すると、移動速度ＶＲのデータを速度履歴として保持する（ステップＳ１６Ａ）。これは、実施の形態１のステップＳ６と同様に、履歴保持部１２８Ｂが移動速度ＶＲの履歴を作成するステップである。
【０１６５】
処理装置１２０Ａは、ステップＳ１６で移動速度ＶＲのデータを速度履歴として保持すると、ステップＳ１７にフローを進める。
【０１６６】
処理装置１２０Ａは、ステップＳ２３でタップ動作を検出すると、タップ動作を検出したことを表すデータをタップ履歴として保持する（ステップＳ２３Ａ）。ステップＳ２３Ａの処理は、履歴保持部１２８Ｂが行う。
【０１６７】
処理装置１２０Ａは、ステップＳ２３Ａでタップ履歴を保持すると、ステップＳ２４にフローを進める。
【０１６８】
処理装置１２０Ａは、ステップＳ２５で操作画面を切り替えると、過去の所定時間（Ｔ２）以内にタップ動作を検出していたかどうかを判定する（ステップＳ２６Ａ）。ステップＳ２６Ａの処理は、閾値速度設定部１２７が、履歴保持部１２８Ｂに保持されているタップ履歴があるかどうかを判定する処理である。
【０１６９】
処理装置１２０Ａは、過去の所定時間（Ｔ２）以内にタップ動作を検出していた（Ｓ２６Ａ：ＹＥＳ）と判定すると、過去の所定時間（Ｔ２）以内における押し動作における移動速度の最大値を取得する（ステップＳ２６Ｂ）。ステップＳ２６Ｂの処理は、閾値速度設定部１２７が実行する。
【０１７０】
処理装置１２０Ａは、ステップＳ２６Ｂで取得した移動速度の最大値を閾値速度ＴｈＶｐに設定する（ステップＳ２６Ｃ）。ステップＳ２６Ｃの処理は、閾値速度設定部１２７が実行する。なお、ステップＳ２６Ｂで引き動作における移動速度の最小値も取得して、ステップＳ２６Ｃで最小値を閾値速度ＴｈＶｎに設定してもよい。
【０１７１】
処理装置１２０Ａは、ステップＳ２６Ｃの処理を終えると、フローをステップＳ２８Ａに進める。なお、ステップＳ２８Ａについては後述する。
【０１７２】
また、処理装置１２０Ａは、過去の所定時間（Ｔ２）以内にタップ動作を検出していない（Ｓ２６Ａ：ＮＯ）と判定すると、過去の所定時間（Ｔ３秒）の間に、速度（ＴｈＶｐ−Ａ）以上の移動速度ＶＲがあったかどうかを判定する（ステップＳ２７Ａ）。なお、速度（ＴｈＶｐ−Ａ）は、閾値速度ＴｈＶｐから所定速度Ａを引いた値であり、所定速度Ａは正の値で、例えば、閾値速度ＴｈＶｐの２０％程度の値である。
【０１７３】
ステップＳ２７Ａの処理は、閾値速度設定部１２７が履歴保持部１２８Ｂに保持されている速度履歴に、速度（ＴｈＶｐ−Ａ）以上の移動速度ＶＲがあるかどうかを判定する処理である。
【０１７４】
処理装置１２０Ａは、過去の所定時間（Ｔ３）の間に、速度（ＴｈＶｐ−Ａ）以上の移動速度ＶＲがあった（Ｓ２７Ａ：ＹＥＳ）と判定すると、閾値速度ＴｈＶｐを速度（ＴｈＶｐ−Ａ）に変更する（ステップＳ２７Ｂ）。ステップＳ２７Ｂの処理は、閾値速度設定部１２７によって実行され、変更後の閾値速度は、（ＴｈＶｐ−Ａ）になる。すなわち、閾値速度が（ＴｈＶｐ−Ａ）に低下する。
【０１７５】
処理装置１２０Ａは、ステップＳ２７Ｂの処理を終えると、フローをステップＳ２８Ａに進める。
【０１７６】
処理装置１２０Ａは、過去の所定時間（Ｔ３）の間に、速度（ＴｈＶｐ−Ａ）以上の移動速度ＶＲがなかった（Ｓ２７Ａ：ＮＯ）と判定すると、過去の所定時間（Ｔ４秒）以内にタップ動作がキャンセルされたかどうかを判定する（ステップＳ２８Ａ）。ステップＳ２８Ａの処理は、閾値速度設定部１２７が履歴保持部１２８Ｂに保持されているタップ動作のキャンセル履歴があるかどうかを判定する処理である。
【０１７７】
処理装置１２０Ａは、過去の所定時間（Ｔ４）以内にタップ動作がキャンセルされた（Ｓ２８Ａ：ＹＥＳ）と判定すると、閾値速度ＴｈＶｐを速度（ＴｈＶｐ＋Ｂ）に変更する（ステップＳ２８Ｂ）。
【０１７８】
ステップＳ２８Ｂの処理は、閾値速度設定部１２７によって実行される。速度（ＴｈＶｐ＋Ｂ）は、閾値速度ＴｈＶｐに所定速度Ｂを加えた値であり、所定速度Ｂは正の値で、例えば、閾値速度ＴｈＶｐの２０％程度の値である。変更後の閾値速度は、（ＴｈＶｐ＋Ｂ）になる。すなわち、閾値速度が（ＴｈＶｐ＋Ｂ）に増大する。
【０１７９】
処理装置１２０は、ステップＳ２８Ｂの処理を終えると、一連の処理を終了する（エンド）。以上のように、処理装置１２０Ａによって設定される閾値速度を用いて、図１１に示すフローは、繰り返し実行される。
【０１８０】
また、  処理装置１２０Ａは、過去の所定時間（Ｔ４）以内にタップ動作がキャンセルされていない（Ｓ２８Ａ：ＮＯ）と判定すると、一連の処理を終了する（エンド）。
【０１８１】
以上のように、実施の形態２のシミュレーションシステムは、過去の所定時間（Ｔ２）以内にタップ動作を検出していた場合には、移動速度の最大値を閾値速度ＴｈＶｐに設定する。
【０１８２】
また、過去の所定時間（Ｔ３）の間に、速度（ＴｈＶｐ−Ａ）以上の移動速度ＶＲがあった場合には、閾値速度ＴｈＶｐを速度（ＴｈＶｐ−Ａ）に低下させる。
【０１８３】
また、過去の所定時間（Ｔ４）以内にタップ動作がキャンセルされた場合には、閾値速度ＴｈＶｐを速度（ＴｈＶｐ＋Ｂ）に増大する。
【０１８４】
このように、利用者１の過去の所定時間内の動作状況に応じて、閾値速度ＴｈＶｐを設定するため、タップ動作を高精度に判別することができ、使い勝手が良好なシミュレーションシステムを提供することができる。
【０１８５】
なお、過去の所定時間（Ｔ２）以内における押し動作における移動速度の最大値を閾値速度ＴｈＶｐに設定する代わりに、過去の所定時間（Ｔ２）以内における押し動作における移動速度の最大値と、最大値の次に大きな１又は複数の値の平均値等を用いてもよい。
【０１８６】
＜実施の形態３＞
図１８は、実施の形態３のシミュレーションシステムの処理装置１２０Ｂの構成を示す図である。
【０１８７】
処理装置１２０Ｂは、人体検出部１２１、位置検出部１２２、動作検出部１２３、腕伸ばし量計算部１２４、速度計算部１２５、動作判定部１２６、閾値速度設定部１２７、データ保持部１２８Ａ、及び映像出力部１２９を有する。処理装置１２０Ｂは、履歴保持部１２８Ｂ（図２参照）を含まない。
【０１８８】
実施の形態３では、速度計算部１２５が動作検出部１２３によって検出される利用者１の体の各部の位置を表す座標に基づいて、利用者１がタップを行う際の右手２Ｒ及び左手２Ｌの移動速度を計算し、動作判定部１２６が動作を判定する点が実施の形態１の処理装置１２０と異なる。速度計算部１２５が左手２Ｌの移動速度を計算するのは、第２速度計算部としての機能の一例である。
【０１８９】
図１９及び図２０は、動作判定部１２６による動作の判定方法を説明する図である。図１９及び図２０において、横軸はフレーム数（経過時間）を示し、縦軸は移動速度を示す。また、右手２Ｒの移動速度ＶＲを実線で示し、左手２Ｌの移動速度を一点鎖線で示す。
【０１９０】
図１９に示すように、右手２Ｒと左手２Ｌの移動速度の絶対値が各フレームでほぼ同一であり、かつ、移動速度の符号が反対である場合には、利用者１は歩行しており、タップ動作を行っているのではないと考えられる。
【０１９１】
また、図２０に示すように、右手２Ｒと左手２Ｌの移動速度の絶対値が各フレームでほぼ同一であり、かつ、移動速度の符号が等しい場合には、利用者１は両手で動作を行っており、タップ動作を行っているのではないと考えられる。タップ動作は片手で行うものである。
【０１９２】
実施の形態３のシミュレーションシステムは、このような利用者１の動作をタップ動作と判別する。
【０１９３】
図２１は、実施の形態３の処理装置１２０Ｂが実行する処理を示すフローチャートである。図２１では、図１１に示す実施の形態１のフローにおけるステップと同様のステップには同一のステップ番号を付し、その説明を省略する。
【０１９４】
図２１に示すフローは、図１１に示すフローのステップＳ５、Ｓ６、Ｓ１０、Ｓ１１を省略し、予め設定した所定の閾値速度でステップＳ１８及びＳ２１の判定を行うようにするとともに、ステップＳ３１、Ｓ３２、Ｓ３３、Ｓ３４を追加したものである。
【０１９５】
処理装置１２０Ｂは、右手２Ｒの移動速度ＶＲが閾値速度ＴｈＶｐ以上である（Ｓ１８：ＹＥＳ）と判定すると、左手２Ｌの移動速度ＶＬを計算する（ステップＳ３１）。ステップＳ３１の処理は、速度計算部１２５によって行われる。速度計算部１２５は、動作検出部１２３が動画のフレーム毎に人体検出部１２１から入手する利用者１の体の各部の位置を表す座標に基づいて、左手２Ｌの移動速度を計算する。
【０１９６】
次いで、処理装置１２０Ｂは、移動速度ＶＬが正の速度（ＶＬ＞０）であるかどうかを判定する（ステップＳ３２）。ステップＳ３２の処理は、速度計算部１２５によって行われる。
【０１９７】
処理装置１２０Ｂは、移動速度ＶＬが正の速度（ＶＬ＞０）である（Ｓ３２：ＹＥＳ）と判定すると、移動速度ＶＬが閾値速度ＴｈＶｐ以上であるかどうかを判定する（ステップＳ３３）。ステップＳ３３の処理は、動作判定部１２６によって行われる。
【０１９８】
処理装置１２０Ｂは、左手２Ｌの移動速度ＶＬが閾値速度ＴｈＶｐ以上である（Ｓ３３：ＹＥＳ）と判定すると、フローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。図２０に示すように、両手で動作を行っていたと考えられるからである。
【０１９９】
処理装置１２０Ｂは、左手２Ｌの移動速度ＶＬが閾値速度ＴｈＶｐ以上ではない（Ｓ３３：ＮＯ）と判定すると、押し動作を検出する（ステップＳ１９）。ステップＳ１９の処理は、動作判定部１２６によって行われ、押し動作フラグが１に設定される。左手２Ｌの移動速度ＶＬは低いため、右手で押し動作を行ったと考えられるからである。
【０２００】
なお、ステップＳ１９の処理を終えると、処理装置１２０はフローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。
【０２０１】
処理装置１２０Ｂは、移動速度ＶＬが正の速度（ＶＬ＞０）ではない（Ｓ３２：ＮＯ）と判定すると、移動速度ＶＬの絶対値が閾値速度ＴｈＶｐ以上であるかどうかを判定する（ステップＳ３４）。ステップＳ３４の処理は、動作判定部１２６によって行われる。
【０２０２】
処理装置１２０Ｂは、左手２Ｌの移動速度ＶＬの絶対値が閾値速度ＴｈＶｐ以上である（Ｓ３４：ＹＥＳ）と判定すると、フローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。図１９に示すように、歩行していたと考えられるからである。
【０２０３】
処理装置１２０Ｂは、左手２Ｌの移動速度ＶＬの絶対値が閾値速度ＴｈＶｐ以上ではない（Ｓ３４：ＮＯ）と判定すると、押し動作を検出する（ステップＳ１９）。ステップＳ１９の処理は、動作判定部１２６によって行われ、押し動作フラグが１に設定される。左手２Ｌの移動速度ＶＬは低いため、右手で押し動作を行ったと考えられるからである。
【０２０４】
なお、ステップＳ１９の処理を終えると、処理装置１２０はフローをステップＳ１５にリターンし、映像出力部１２９にポインタ１３０Ａを表示させる（ステップＳ１５）。
【０２０５】
以上のように、実施の形態３のシミュレーションシステムは、利用者１の歩行及び両手での動作と、タップ動作とを判別することができる。
【０２０６】
このため、タップ動作を高精度に判別することができ、使い勝手が良好なシミュレーションシステムを提供することができる。
【０２０７】
また、実施の形態１と同様に、利用者１がタップ動作以外の動作（例えば、手を振る動作、又は、意図せずに手を動かす動作等）を行った場合に、タップ動作として誤検出することを抑制でき、シミュレーションシステムにおいて、利用者１が自分の意志通りにタップ動作で入力を確定することができる。
【０２０８】
＜実施の形態４＞
図２２は、実施の形態４のシミュレーションシステムの処理装置１２０Ｃの構成を示す図である。
【０２０９】
処理装置１２０Ｃは、人体検出部１２１、位置検出部１２２、動作検出部１２３、腕伸ばし量計算部１２４、速度計算部１２５、動作判定部１２６、閾値速度設定部１２７、データ保持部１２８Ａ、ポインタ固定制御部１２８Ｃ、及び映像出力部１２９を有する。処理装置１２０Ｃは、履歴保持部１２８Ｂ（図２参照）の変わりにポインタ固定制御部１２８Ｃを含む点が実施の形態１の処理装置１２０と異なる。
【０２１０】
実施の形態４では、押し動作が検出されると、ポインタ１３０Ａの表示位置を固定する。これにより、押し動作を行った後に右手２Ｒの位置が振れても、ポインタ１３０Ａの表示位置を固定することができる。このような機能は、ポインタ固定制御部１２８Ｃによって実現される。
【０２１１】
図２３は、右腕の動作とポインタ１３０Ａの動きの関係を説明する図である。右手２Ｒと右肩２ＲＳで右腕を示す。右手２Ｒと右肩２ＲＳを結ぶ破線の矢印の延長上にポインタ１３０Ａが表示される。
【０２１２】
図２３（Ａ１）〜（Ａ３）は、比較用に、ポインタ固定制御部１２８Ｃでポインタ１３０Ａの表示位置を固定しない場合を示す。
【０２１３】
図２３（Ａ１）では、押し動作を行っている。図２３（Ａ２）では、押し動作が確定し、引き動作に切り替えようとしているが、右腕が振れてしまい、ポインタ１３０Ａの表示位置が振れている。図２３（Ａ３）では、引き動作を行うために、利用者１は右手を引き寄せている。
【０２１４】
図２３（Ｂ１）〜（Ｂ３）は、ポインタ固定制御部１２８Ｃでポインタ１３０Ａの表示位置を固定する場合を示す。
【０２１５】
図２３（Ｂ１）では、図２３（Ａ１）と同様に、押し動作を行っている。図２３（Ｂ２）では、押し動作が確定し、引き動作に切り替えようとしており、このときにポインタ固定制御部１２８Ｃがポインタ１３０Ａの表示位置を固定するため、ポインタ１３０Ａの表示位置が固定される。そして、図２３（Ｂ３）では、引き動作を行うために、利用者１は右手を引き寄せている。
【０２１６】
図２４は、実施の形態４の処理装置１２０Ｃが実行する処理を示すフローチャートである。図２４では、図１１に示す実施の形態１のフローにおけるステップと同様のステップには同一のステップ番号を付し、その説明を省略する。
【０２１７】
図２４に示すフローは、図１１に示すフローのステップＳ５、Ｓ６、Ｓ１０、Ｓ１１を省略し、予め設定した所定の閾値速度でステップＳ１８及びＳ２１の判定を行うようにするとともに、ステップＳ４１、Ｓ４２、Ｓ４３、Ｓ４４を追加したものである。
【０２１８】
処理装置１２０Ｃは、ステップＳ４において、操作がスタートしている（Ｓ４：ＹＥＳ）と判定すると、ポインタ１３０Ａの表示位置が固定されているかどうかを判定する（ステップＳ４１）。ステップＳ４１の処理は、ポインタ固定制御部１２８Ｃによって行われる。
【０２１９】
具体的には、ポインタ固定制御部１２８Ｃは、ポインタ１３０Ａの表示位置が固定されているかどうかを表すポインタ固定フラグの値に基づいて判定を行う。ポインタ固定フラグは、ポインタ１３０Ａの表示位置が固定されている場合に１に設定され、ポインタ１３０Ａの表示位置が固定されていない場合に０に設定される。
【０２２０】
処理装置１２０Ｃは、ポインタ１３０Ａの表示位置が固定されていない（Ｓ４１：ＮＯ）と判定すると、フローをステップＳ１２に進めて座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を検出する。処理装置１２０Ｃは、ステップＳ１２の処理が終了すると、フローをステップＳ１３に進める。
【０２２１】
処理装置１２０Ｃは、ポインタ１３０Ａの表示位置が固定されている（Ｓ４１：ＹＥＳ）と判定すると、フローをステップＳ１３に進める。座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を検出する必要がないからである。
【０２２２】
処理装置１２０Ｃは、ステップＳ１９において、押し動作を検出すると、ポインタ１３０Ａの表示位置を固定する（ステップＳ４２）。ステップＳ４２の処理は、ポインタ固定制御部１２８Ｃによって行われる。
【０２２３】
具体的には、ポインタ固定制御部１２８Ｃは、押し動作を検出した時点における座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を保持し、保持している座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）を映像出力部１２９に伝送し、保持している座標Ｐ（Ｐｘ，Ｐｙ，Ｐｚ）にポインタ１３０Ａを表示させる。
【０２２４】
処理装置１２０Ｃは、ステップＳ４２の処理を終えると、フローをステップＳ１５にリターンする。
【０２２５】
処理装置１２０Ｃは、ステップＳ２２において、引き動作を検出すると、ポインタ１３０Ａの表示位置の固定を解除する（ステップＳ４３）。ステップＳ４３の処理は、ポインタ固定制御部１２８Ｃによって行われる。
【０２２６】
処理装置１２０Ｃは、ステップＳ４３の処理を終えると、タップ動作を検出する（ステップＳ２３）。
【０２２７】
処理装置１２０Ｃは、ステップＳ２０Ａにおいて押し動作フラグを０に設定すると、ポインタ１３０Ａの表示位置の固定を解除する（ステップＳ４４）。ステップＳ４４の処理は、ポインタ固定制御部１２８Ｃによって行われる。
【０２２８】
以上のように、実施の形態４のシミュレーションシステムは、押し動作が検出されると、ポインタ１３０Ａの表示位置を固定するため、押し動作を行った後に右手２Ｒの位置が振れるような場合には、ポインタ１３０Ａの表示位置を固定することにより、狙った位置において引き動作を容易に完了することができる。このため、利用者１の右手２Ｒ又は右腕の振れが大きい場合においても、タップ動作をより確実に入力できるようになる。
【０２２９】
このため、タップ動作を高精度に判別することができ、使い勝手が良好なシミュレーションシステムを提供することができる。
【０２３０】
また、実施の形態１と同様に、利用者１がタップ動作以外の動作（例えば、手を振る動作、又は、意図せずに手を動かす動作等）を行った場合に、タップ動作として誤検出することを抑制でき、シミュレーションシステムにおいて、利用者１が自分の意志通りにタップ動作で入力を確定することができる。
【０２３１】
なお、利用者１の右手２Ｒ又は右腕の振れがそれほど大きくない場合には、ポインタ１３０Ａの表示位置を固定しなくてよい。
【０２３２】
以上、本発明の例示的な実施の形態のシミュレーションシステムについて説明したが、本発明は、具体的に開示された実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
利用者によって位置が操作されるポインタを表示する表示部と、
前記利用者が前記ポインタの位置を指示する指示動作を検出する第１検出部と、
前記第１検出部によって検出される前記指示動作に基づき、前記表示部の座標系におけるポインタの位置を検出する第２検出部と、
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の腕伸ばし量を計算する腕伸ばし量計算部と、
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の手の第１移動速度を計算する速度計算部と、
前記腕伸ばし量が所定量以上で、かつ、前記第１移動速度が第１閾値速度以上である場合に、前記指示動作が押し動作であると判定する押し動作判定部と、
前記腕伸ばし量が前記所定量以上で、かつ、前記第１移動速度が第２閾値速度以下である場合に、前記指示動作が引き動作であると判定する引き動作判定部と、
前記押し動作及び前記引き動作がこの順で行われた場合に、前記押し動作及び前記引き動作が決定動作であると判定する決定動作判定部と
を含む、シミュレーションシステム。
（付記２）
前記速度計算部は、前記利用者の肩と手を結ぶ方向における前記第１移動速度を計算する、付記１記載のシミュレーションシステム。
（付記３）
前記決定動作判定部は、前記押し動作及び前記引き動作がこの順で第１所定時間内に行われた場合に、前記押し動作及び前記引き動作が決定動作であると判定する、付記１又は２記載のシミュレーションシステム。
（付記４）
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記速度履歴保持部によって保持される前記第１移動速度の最大値の所定割合の速度を前記第１閾値速度に設定する閾値速度設定部と
をさらに含む、付記１乃至３のいずれか一項記載のシミュレーションシステム。
（付記５）
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記決定動作判定部によって判定される前記決定動作の履歴を保持する決定動作履歴保持部と、
前記決定動作履歴保持部によって保持される前記決定動作の履歴に基づき、過去の第２所定時間内に、前記決定動作が行われたと判定すると、前記過去の第２所定時間内における前記第１移動速度の最大値を前記第１閾値速度に設定する閾値速度設定部と
をさらに含む、付記１乃至３のいずれか一項記載のシミュレーションシステム。
（付記６）
前記閾値速度設定部は、前記過去の第２所定時間内に、前記決定動作が行われていないと判定すると、過去の第３所定時間内に前記第１閾値速度から所定値を引いた所定の移動速度があるかどうかを判定し、前記所定の移動速度があると判定すると、前記第１閾値速度を前記所定の移動速度に更新する、付記５記載のシミュレーションシステム。
（付記７）
前記速度計算部によって計算される前記第１移動速度の履歴を保持する速度履歴保持部と、
前記第１検出部によって検出される前記指示動作が、前記決定動作をキャンセルするキャンセル動作であるかどうかを判定するキャンセル動作判定部と、
過去の第４所定時間内に、前記キャンセル動作判定部によって前記キャンセル動作が行われたと判定されると、前記第１閾値速度を所定速度だけ増大させる閾値速度設定部と
をさらに含む、付記１乃至３のいずれか一項記載のシミュレーションシステム。
（付記８）
前記第１検出部によって検出される前記指示動作に基づき、前記利用者の他方の手の第２移動速度を計算する第２速度計算部をさらに含み、
前記押し動作判定部は、前記腕伸ばし量が所定量以上で、かつ、前記第１移動速度が第１閾値速度以上である場合において、前記第２移動速度が正の値であって前記第１閾値速度以上ではない場合、又は、前記第２移動速度が負の値であって前記第２移動速度の絶対値が前記第１閾値速度より大きくない場合に、前記指示動作が押し動作であると判定する、付記１乃至７のいずれか一項記載のシミュレーションシステム。
（付記９）
前記押し動作判定部によって前記指示動作が押し動作であると判定されると、前記ポインタを表示する位置を固定する位置固定部と、
前記引き動作判定部によって前記指示動作が引き動作であると判定されると、前記位置固定部による前記ポインタの位置の固定を解除する固定解除部と
をさらに含む、付記１乃至８のいずれか一項記載のシミュレーションシステム。
（付記１０）
前記固定解除部は、前記押し動作判定部によって前記指示動作が押し動作であると判定されてから所定時間が経過すると、前記位置固定部による前記ポインタの位置の固定を解除する、付記９記載のシミュレーションシステム。
【符号の説明】
【０２３３】
１０  コンピュータシステム
１１  本体部
１２  ディスプレイ
１３  キーボード
１４  マウス
１５  モデム
１００  シミュレーションシステム
１１０Ａ  スクリーン
１１０Ｂ  投影装置
１１０Ｃ  ３Ｄ眼鏡
１２０、１２０Ａ、１２０Ｂ、１２０Ｃ  処理装置
１２１  人体検出部
１２２  位置検出部
１２３  動作検出部
１２４  腕伸ばし量計算部
１２５  速度計算部
１２６  動作判定部
１２７  閾値速度設定部
１２８Ａ  データ保持部
１２８Ｂ  履歴保持部
１２９  映像出力部
１３０Ａ  ポインタ
１４０  位置計測装置
【図１】
2017204126.tif 000006
【図２】
2017204126.tif 000007
【図３】
2017204126.tif 000008
【図４】
2017204126.tif 000009
【図５】
2017204126.tif 000010
【図６】
2017204126.tif 000011
【図７】
2017204126.tif 000012
【図８】
2017204126.tif 000013
【図９】
2017204126.tif 000014
【図１０】
2017204126.tif 000015
【図１１】
2017204126.tif 000016
【図１２】
2017204126.tif 000017
【図１３】
2017204126.tif 000018
【図１４】
2017204126.tif 000019
【図１５】
2017204126.tif 000020
【図１６】
2017204126.tif 000021
【図１７】
2017204126.tif 000022
【図１８】
2017204126.tif 000023
【図１９】
2017204126.tif 000024
【図２０】
2017204126.tif 000025
【図２１】
2017204126.tif 000026
【図２２】
2017204126.tif 000027
【図２３】
2017204126.tif 000028
【図２４】
2017204126.tif 000029