以下、本発明につき図面を参照しつつ詳細に説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。
まず、図1および図2を参照しながら、第1の実施例に係る表示装置1の全体的な構成について説明する。図1は、表示装置1の斜視図である。図2は、利用者によって装着された表示装置1を正面から見た図である。図1および図2に示すように、表示装置1は、利用者の頭部に装着されるヘッドマウントタイプの装置である。
表示装置1は、前面部1aと、側面部1bと、側面部1cとを有する。前面部1aは、装着時に、利用者の両目を覆うように利用者の正面に配置される。側面部1bは、前面部1aの一方の端部に接続され、側面部1cは、前面部1aの他方の端部に接続される。側面部1bおよび側面部1cは、装着時に、眼鏡の蔓のように利用者の耳によって支持され、表示装置1を安定させる。側面部1bおよび側面部1cは、装着時に、利用者の頭部の背面で接続されるように構成されてもよい。
前面部1aは、装着時に利用者の目と対向する面に表示部32aおよび表示部32bを備える。表示部32aは、装着時に利用者の右目と対向する位置に配設され、表示部32bは、装着時に利用者の左目と対向する位置に配設される。表示部32aは、右目用の画像を表示し、表示部32bは、左目用の画像を表示する。このように、装着時に利用者のそれぞれの目に対応した画像を表示する表示部32aおよび表示部32bを備えることにより、表示装置1は、両眼の視差を利用した3次元表示を実現することができる。
表示部32aおよび表示部32bは、利用者の右目と左目に異なる画像を独立して提供することができれば、1つの表示デバイスによって構成されてもよい。例えば、表示される画像が一方の目にしか見えないように遮蔽するシャッターを高速に切り替えることによって、1つの表示デバイスが右目と左目に異なる画像を独立して提供するように構成してもよい。前面部1aは、装着時に外光が利用者の目に入らないように、利用者の目を覆うように構成されてもよい。
前面部1aは、表示部32aおよび表示部32bが設けられている面とは反対側の面に撮影部40および撮影部42を備える。撮影部40は、前面部1aの一方の端部(装着時の右目側)の近傍に配設され、撮影部42は、前面部1aの他方の端部(装着時の左目側)の近傍に配設される。撮影部40は、利用者の右目の視界に相当する範囲の画像を取得する。撮影部42は、利用者の左目の視界に相当する範囲の画像を取得する。ここでいう視界とは、例えば、利用者が正面を見ているときの視界である。
表示装置1は、撮影部40によって撮影された画像を右目用の画像として表示部32aに表示し、撮影部42によって撮影された画像を左目用の画像として表示部32bに表示する。このため、表示装置1は、装着中の利用者に、前面部1aによって視界が遮られていても、表示装置1を装着していないときと同様の光景を提供することができる。
表示装置1は、このように現実の光景を利用者に提供する機能に加えて、仮想的な情報を3次元的に表示し、仮想的な情報を利用者が操作することを可能にする機能を有する。表示装置1によれば、仮想的な情報は、実際に存在しているかのように、現実の光景と重ねて表示される。そして、利用者は、例えば、手を使って仮想的な情報を実際に触っているかのように操作し、移動、回転、変形等の変化を仮想的な情報に施すことができる。このように、表示装置1は、仮想的な情報に関して、直感的で利便性の高い操作方法を提供する。以下の説明では、表示装置1によって3次元的に表示される仮想的な情報を「3次元オブジェクト」と呼ぶことがある。
表示装置1は、表示装置1を装着していない場合と同様の広い視界を利用者に提供する。そして、表示装置1は、この広い視界の中の任意の位置に任意の大きさで3次元オブジェクトを配置することができる。このように、表示装置1は、表示デバイスの大きさの制約を受けることなく、広い空間の様々な位置に様々な大きさの3次元オブジェクトを表示することができる。
図1および図2では、表示装置1が、眼鏡(ゴーグル)のような形状を有する例を示したが、表示装置1の形状はこれに限定されない。例えば、表示装置1は、図3に示す表示装置2のように、利用者の頭部のほぼ上半分を覆うようなヘルメットタイプの形状を有していてもよい。あるいは、表示装置1は、図4に示す表示装置3のように、利用者の顔面のほぼ全体を覆うようなマスクタイプの形状を有していてもよい。表示装置1は、図5に示す表示装置4のように、情報処理装置、バッテリ装置等の外部装置4dと有線または無線で接続される構成であってもよい。
次に、図6を参照しながら、表示装置1の機能的な構成について説明する。図6は、第1の実施例に係る表示装置1のブロック図である。図6に示すように、表示装置1は、操作部13と、制御部22と、記憶部24と、表示部32aおよび32bと、撮影部40および42と、検出部44と、測距部46とを有する。操作部13は、表示装置1の起動、停止、動作モードの変更等の基本的な操作を受け付ける。
表示部32aおよび32bは、液晶ディスプレイ(Liquid Crystal Display)、有機EL(Organic Electro−Luminescence)パネル等の表示デバイスを備え、制御部22から入力される制御信号に従って各種の情報を表示する。表示部32aおよび32bは、レーザー光線等の光源を用いて利用者の網膜に画像を投影する投影装置であってもよい。
撮影部40および42は、CCD(Charge Coupled Device Image Sensor)、CMOS(Complementary Metal Oxide Semiconductor)等のイメージセンサを用いて電子的に画像を撮影する。そして、撮影部40および42は、撮影した画像を信号に変換して制御部22へ出力する。
検出部44は、撮影部40および42の撮影範囲に存在する現実の物体を検出する。検出部44は、例えば、撮影範囲に存在する現実の物体のうち、予め登録された形状(例えば、人間の手の形状)にマッチする物体を検出する。検出部44は、予め形状が登録されていない物体についても、画素の明度、彩度、色相のエッジ等に基づいて、画像中の現実の物体の範囲(形状および大きさ)を検出するように構成されてもよい。
測距部46は、撮影部40および42の撮影範囲に存在する現実の物体までの距離を測定する。現実の物体までの距離は、表示装置1を装着している利用者のそれぞれの目の位置を基準として目毎に測定される。このため、測距部46が距離を測定する基準位置がそれぞれの目の位置とずれている場合には、測距部46の測定値は、そのずれに応じて、目の位置までの距離を表すように補正される。
本実施例においては、撮影部40および42が、検出部44および測距部46を兼ねる。すなわち、本実施例においては、撮影部40および42によって撮影される画像を解析することによって、撮影範囲内の物体が検出される。さらに、撮影部40によって撮影される画像に含まれる物体と撮影部42によって撮影される画像に含まれる物体とを比較することにより、物体との距離が測定(算出)される。
表示装置1は、撮影部40および42とは別に、検出部44を備えてもよい。検出部44は、例えば、可視光、赤外線、紫外線、電波、音波、磁気、静電容量の少なくとも1つを用いて、撮影範囲に存在する現実の物体を検出するセンサであってもよい。表示装置1は、撮影部40および42とは別に、測距部46を備えてもよい。測距部46は、例えば、可視光、赤外線、紫外線、電波、音波、磁気、静電容量の少なくとも1つを用いて、撮影範囲に存在する現実の物体までの距離を検出するセンサであってもよい。表示装置1は、TOF(Time-of-Flight)法を用いたセンサのように、検出部44および測距部46を兼ねることができるセンサを備えてもよい。
制御部22は、演算手段であるCPU(Central Processing Unit)と、記憶手段であるメモリとを備え、これらのハードウェア資源を用いてプログラムを実行することによって各種の機能を実現する。具体的には、制御部22は、記憶部24に記憶されているプログラムやデータを読み出してメモリに展開し、メモリに展開されたプログラムに含まれる命令をCPUに実行させる。そして、制御部22は、CPUによる命令の実行結果に応じて、メモリおよび記憶部24に対してデータの読み書きを行ったり、表示部32a等の動作を制御したりする。CPUが命令を実行するに際しては、メモリに展開されているデータや検出部44を介して検出される操作がパラメータや判定条件の一部として利用される。
記憶部24は、フラッシュメモリ等の不揮発性を有する記憶装置からなり、各種のプログラムやデータを記憶する。記憶部24に記憶されるプログラムには、制御プログラム24aが含まれる。記憶部24に記憶されるデータには、オブジェクトデータ24bと、作用データ24cと、仮想空間データ24dとが含まれる。記憶部24は、メモリカード等の可搬の記憶媒体と、記憶媒体に対して読み書きを行う読み書き装置との組み合わせによって構成されてもよい。この場合、制御プログラム24a、オブジェクトデータ24b、作用データ24c、仮想空間データ24dは、記憶媒体に記憶されていてもよい。また、制御プログラム24a、オブジェクトデータ24b、作用データ24c、仮想空間データ24dは、無線通信または有線通信によってサーバ装置等の他の装置から取得されてもよい。
制御プログラム24aは、表示装置1を稼働させるための各種制御に関する機能を提供する。制御プログラム24aが提供する機能には、撮影部40および42が取得する画像に3次元オブジェクトを重ねて表示部32aおよび32bに表示する機能、3次元オブジェクトに対する操作を検出する機能、検出した操作に応じて3次元オブジェクトを変化させる機能等が含まれる。
制御プログラム24aは、検出処理部25と、表示オブジェクト制御部26と、画像合成部27とを含む。検出処理部25は、撮影部40および42の撮影範囲に存在する現実の物体を検出するための機能を提供する。検出処理部25が提供する機能には、検出したそれぞれの物体までの距離を測定する機能が含まれる。
表示オブジェクト制御部26は、仮想空間にどのような3次元オブジェクトが配置され、それぞれの3次元オブジェクトがどのような状態にあるかを管理するための機能を提供する。表示オブジェクト制御部26が提供する機能には、検出処理部25の機能によって検出される現実の物体の動きに基づいて3次元オブジェクトに対する操作を検出し、検出した操作に基づいて3次元オブジェクトを変化させる機能が含まれる。
画像合成部27は、現実の空間の画像と仮想空間の画像とを合成することにより、表示部32aに表示する画像と表示部32bに表示する画像とを生成するための機能を提供する。画像合成部27が提供する機能には、検出処理部25の機能によって測定される現実の物体までの距離と、仮想空間における視点から3次元オブジェクトまでの距離とに基づいて、現実の物体と3次元オブジェクトの前後関係を判定し、重なりを調整する機能が含まれる。
オブジェクトデータ24bは、3次元オブジェクトの形状および性質に関する情報を含む。オブジェクトデータ24bは、3次元オブジェクトを表示するために用いられる。作用データ24cは、表示されている3次元オブジェクトに対する操作が3次元オブジェクトにどのように作用するかに関する情報を含む。作用データ24cは、表示されている3次元オブジェクトに対する操作が検出された場合に、3次元オブジェクトをどのように変化させるかを判定するために用いられる。ここでいう変化には、移動、回転、変形、消失、置換等が含まれる。仮想空間データ24dは、仮想空間に配置される3次元オブジェクトの状態に関する情報を保持する。3次元オブジェクトの状態には、例えば、位置、姿勢、変形の状況等が含まれる。なお、置換とは、一のオブジェクトを他のオブジェクトに置き換えることである。
次に、図7を参照しながら、制御プログラム24aが提供する機能に基づく制御の例について説明する。画像P1aは、撮影部40によって得られる画像、すなわち、現実の空間を右目で見た光景に相当する画像である。画像P1aには、テーブルT1と、利用者の手H1とが写っている。表示装置1は、同じ場面を撮影部42によって撮影した画像、すなわち、現実の空間を左目で見た光景に相当する画像も取得する。
画像P2aは、仮想空間データ24dおよびオブジェクトデータ24bに基づいて生成される右目用の画像である。この例において、仮想空間データ24dは、仮想空間中に存在するブロック状の3次元オブジェクトBL1の状態に関する情報を保持し、オブジェクトデータ24bは、3次元オブジェクトBL1の形状および性質に関する情報を保持する。表示装置1は、これらの情報に基づいて仮想空間を再現し、再現した仮想空間を右目の視点から見た画像P2aを生成する。仮想空間における右目(視点)の位置は、所定の規則に基づいて決定される。表示装置1は、同様に、再現した仮想空間を左目の視点で見た画像も生成する。すなわち、表示装置1は、画像P2aと組み合わせることによって3次元オブジェクトBL1が3次元的に表示される画像も生成する。
表示装置1は、図7に示すステップS1において、画像P1aおよび画像P2aを合成して、画像P3aを生成する。画像P3aは、右目用の画像として表示部32aに表示される画像である。このとき、表示装置1は、利用者の右目の位置を基準として、撮影部40の撮影範囲にある現実の物体と、仮想空間内に存在する3次元オブジェクトとの前後関係を判定する。そして、現実の物体と3次元オブジェクトとが重なっている場合には、利用者の右目により近いものが前面に見えるように重なりを調整する。
このような重なりの調整は、現実の物体と3次元オブジェクトとが重なる画像上の領域内の所定の大きさの範囲毎(例えば、1画素毎)に行われる。このため、現実の空間における視点から現実の物体までの距離は、画像上の所定の大きさの範囲毎に測定される。さらに、仮想空間における視点から3次元オブジェクトまでの距離は、3次元オブジェクトの位置、形状、姿勢等を考慮して、画像上の所定の大きさの範囲毎に算出される。
図7に示すステップS1の場面では、3次元オブジェクトBL1は、仮想空間において、テーブルT1が現実の空間で存在する位置のすぐ上に相当する位置に配置されている。さらに、図7に示すステップS1の場面では、利用者の手H1と3次元オブジェクトBL1が、利用者の右目の位置を基準として、ほぼ同じ方向に、ほぼ同じ距離で存在している。このため、所定の大きさの範囲毎に重なりを調整することにより、合成後の画像P3aでは、手H1と3次元オブジェクトBL1とが重なっている領域のうち、手H1の親指に相当する部分では手H1が前面に現れ、他の部分では3次元オブジェクトBL1が前面に現れている。さらに、テーブルT1と3次元オブジェクトBL1とが重なっている領域では、3次元オブジェクトBL1が前面に現れている。
このような重なりの調整により、図7に示すステップS1では、あたかもテーブルT1上に3次元オブジェクトBL1が置かれ、3次元オブジェクトBL1を利用者が手H1で摘んでいるかのような画像P3aが得られている。表示装置1は、同様の処理により、撮影部42によって撮影した画像と仮想空間を左目の視点から見た画像とを合成し、左目用の画像として表示部32bに表示される画像を生成する。左目用の画像を生成する場合、現実の物体と3次元オブジェクトとの重なりは、利用者の左目の位置を基準として調整される。
表示装置1は、こうして生成した合成画像を表示部32aおよび32bに表示する。その結果、利用者は、あたかも、3次元オブジェクトBL1がテーブルT1の上に置かれ、自分の手H1で3次元オブジェクトBL1を摘んでいるかのような光景を見ることができる。
図7に示すステップS2の場面では、利用者が手H1を矢印A1の方向に移動させている。この場合、撮影部40によって得られる画像は、手H1の位置が右へ移動した画像P1bに変化する。さらに、表示装置1は、手H1の動きを、3次元オブジェクトを摘んだままで右へ移動させる操作と判定し、操作に応じて、仮想空間における3次元オブジェクトの位置を右へ移動させる。仮想空間における3次元オブジェクトの移動は、仮想空間データ24dに反映される。その結果、仮想空間データ24dおよびオブジェクトデータ24bに基づいて生成される右目用の画像は、3次元オブジェクトBL1の位置が右へ移動した画像P2bに変化する。表示装置1による操作の検出の詳細については、後述する。
表示装置1は、画像P1bおよび画像P2bを合成して右目用の画像P3bを生成する。画像P3bは、画像P3aと比較して、テーブルT1上のより右側の位置で、3次元オブジェクトBL1を利用者が手H1で摘んでいるかのような画像となっている。表示装置1は、同様に左目用の合成画像を生成する。そして、表示装置1は、こうして生成した合成画像を表示部32aおよび32bに表示する。その結果、利用者は、あたかも、自分の手H1で3次元オブジェクトBL1を摘んで右へ移動させたかのような光景を見ることができる。
このような表示用の合成画像の更新は、一般的な動画のフレームレートと同等の頻度(例えば、毎秒30回)で実行される。その結果、利用者の操作に応じた3次元オブジェクトの変化は、表示装置1が表示する画像にほぼリアルタイムに反映され、利用者は、あたかも実際に存在しているかのように、違和感なく3次元オブジェクトを操作することができる。さらに、本実施例に係る構成では、3次元オブジェクトを操作する利用者の手が、利用者の目と表示部32aおよび32bの間に位置することがないため、利用者は、手によって3次元オブジェクトの表示が遮られることを気にすることなく操作を行うことができる。
次に、図8から図14を参照しながら、図6に示したオブジェクトデータ24bおよび作用データ24cについてさらに詳しく説明する。図8は、オブジェクトデータ24bに格納される情報の一例を示す図である。図9から図14は、作用データ24cに格納される情報の一例を示す図である。
図8に示すように、オブジェクトデータ24bには、種別、形状情報、色、透明度等を含む情報が3次元オブジェクト毎に格納される。種別は、3次元オブジェクトの物理的な性質を示す。種別は、例えば、「剛体」、「弾性体」等の値をとる。形状情報は、3次元オブジェクトの形状を示す情報である。形状情報は、例えば、3次元オブジェクトを構成する面の頂点座標の集合である。色は、3次元オブジェクトの表面の色である。透明度は、3次元オブジェクトが光を透過させる度合いである。オブジェクトデータ24bは、複数の3次元オブジェクトに関する情報を保持することができる。
図9から図14に示す例では、押す操作が検出された場合の変化に関する情報が3次元オブジェクトの種別毎に作用データ24cに格納されている。図9に示すように、3次元オブジェクトの種別が「剛体」の場合、支点の有無、押された方向における障害物の有無、押される速度に応じて、押す操作が検出された場合の変化が異なる。ここでいう障害物とは、他の3次元オブジェクトであってもよいし、現実の物体であってもよい。また、押される速度が速いか遅いかは閾値に基づいて判定される。
3次元オブジェクトに支点がなく、押された方向に障害物がない場合、3次元オブジェクトは、押された方向に押された量に応じて移動するように表示される。このように表示される3次元オブジェクトは、例えば、積み木、ペン、本である。移動の仕方については、滑るのか回転するのかを3次元オブジェクトの形状に基づいて決定してよい。また、押す物体と一緒に移動するのか、押す物体にはじかれるように物体と離れて移動するのかについては、押される速度に基づいて決定してよいし、3次元オブジェクトと底面の摩擦抵抗の算出値または設定値に基づいて決定してもよい。
3次元オブジェクトに支点がなく、押された方向に固定された障害物がある場合、3次元オブジェクトは、押された方向に押された量に応じて移動し、障害物と接触した時点で移動が停止するように表示される。このように表示される3次元オブジェクトは、例えば、積み木、ペン、本である。押された速度が速い場合は、3次元オブジェクトが障害物を破壊して移動を継続することとしてもよい。また、3次元オブジェクトが押す物体にはじかれるように物体と離れて移動している間に障害物と接触した場合は、跳ね返ったように3次元オブジェクトを逆方向に移動させてもよい。
3次元オブジェクトに支点がなく、押された方向に固定されていない他の剛体があり、押される速度が遅い場合、3次元オブジェクトは、押された方向に押された量に応じて移動し、他の剛体と接触した後は、他の剛体もともに移動するように表示される。また、3次元オブジェクトに支点がなく、押された方向に固定されていない他の剛体があり、押される速度が速い場合、3次元オブジェクトは、押された方向に押された量に応じて移動するように表示される。そして、3次元オブジェクトが他の剛体と接触した後は、他の剛体がはじかれて移動するように表示される。他の剛体と接触した後、3次元オブジェクトは、その場で停止してもよいし、速度を落として移動を継続してもよい。このように表示される3次元オブジェクトと他の剛体の組み合わせは、例えば、ボーリングの球とピンの組み合わせや、ビー玉同士の組み合わせである。
3次元オブジェクトに支点がなく、押された方向に固定されていない他の剛体があるが、他の剛体はすり抜け可能である場合、3次元オブジェクトは、押された方向に押された量に応じて移動し、他の剛体と接触した後も、他の剛体をすり抜けてそのまま移動し続けるように表示される。現実には、剛体が剛体をすり抜けることはないが、このようなすり抜けを可能にすることにより、利用者に斬新な体験を提供することができる。このように表示される3次元オブジェクトと他の剛体の組み合わせは、例えば、ボーリングの球とピンの組み合わせや、ビー玉同士の組み合わせである。押される速度に閾値を設け、押される速度が閾値以下の場合は、3次元オブジェクトが他の剛体をすり抜けないこととしてもよい。
3次元オブジェクトに支点がある場合、3次元オブジェクトは、押された方向および量に応じて、支点を中心に回転するように表示される。ここでいう回転とは、360度ぐるぐると回る回転であってもよいし、所定の回転範囲内を往復する回動であってもよい。このように表示される3次元オブジェクトは、例えば、振り子、ボクシングのサンドバック、風車である。
また、図10に示すように、3次元オブジェクトの種別が「弾性体」の場合、素材、変化量の制限の有無、押される速度に応じて、押す操作が検出された場合の変化が異なる。ここでいう素材は、3次元オブジェクトの想定上の素材であり、オブジェクトデータ24bにおいて定義される。
3次元オブジェクトの素材がゴム系であり、変化量に制限がなく、押される速度が遅い場合、3次元オブジェクトは、押された方向に押された量に応じて変形し、押される状態から解放されると元の形状に戻るように表示される。また、3次元オブジェクトの素材がゴム系であり、変化量に制限がなく、押される速度が速い場合、3次元オブジェクトは、押された方向に押された量に応じて変形し、その後、はじかれて、元の形状に戻りながら押された方向へ移動するように表示される。このように表示される3次元オブジェクトは、例えば、ゴムボール、消しゴムである。
3次元オブジェクトの素材がゴム系であり、変化量に制限がある場合、3次元オブジェクトは、押された方向に押された量に応じて変形可能範囲まで変形し、その後も押す操作が検出されると、元の形状に戻りながら押された方向へ移動するように表示される。このように表示される3次元オブジェクトは、例えば、ゴムボール、消しゴムである。
3次元オブジェクトの素材が金属系の場合、3次元オブジェクトは、押された方向に押された量に応じて変形可能範囲まで変形し、押される状態から解放されると元の形状に戻ったり変形したりを繰り返す(振動する)ように表示される。変形可能方向以外の方向に押された場合、3次元オブジェクトは、剛体と同様に移動する。このように表示される3次元オブジェクトは、例えば、板ばね、弦巻ばねである。
また、図11に示すように、3次元オブジェクトの種別が「塑性体」の場合、3次元オブジェクトは、押された箇所がへこんで全体形状が変化するように表示される。このように表示される3次元オブジェクトは、例えば、粘土である。
また、図12に示すように、3次元オブジェクトの種別が「液体」の場合、押される速度に応じて、押す操作が検出された場合の変化が異なる。押される速度が遅い場合、押す物体が3次元オブジェクト、すなわち、液体につかるように表示される。押される速度が中程度の場合、押す物体が液体につかり、液体に波紋が拡がるように表示される。押される速度が速い場合、押す物体が液体につかり、液体から水しぶきがあがるように表示される。このように表示される3次元オブジェクトは、例えば、コップに入った水である。
また、図13に示すように、3次元オブジェクトの種別が「気体」の場合、押される速度に応じて、押す操作が検出された場合の変化が異なる。押される速度が遅い場合、3次元オブジェクト、すなわち、気体が押す物体によってさえぎられてその周囲を漂うように表示される。押される速度が中程度の場合、気体が押す物体によって散乱されるように表示される。押される速度が速い場合、押す物体の移動方向の後ろ側で乱流により気体に渦が生まれるように表示される。このように表示される3次元オブジェクトは、例えば、煙である。
また、図14に示すように、3次元オブジェクトの種別が「集合体」の場合、集合体の要素の結合状況に応じて、押す操作が検出された場合の変化が異なる。集合体の要素の結合がない場合、3次元オブジェクトは、押された箇所がへこんで集合体としての全体形状が変化するように表示される。このように表示される3次元オブジェクトは、例えば、砂、砂糖である。
集合体の要素の結合がある場合、3次元オブジェクトは、押された箇所がへこんで集合体としての全体形状が変化するように表示される。さらに、押された箇所以外の要素が、押された箇所の要素に引っ張られて移動するように表示される。このように表示される3次元オブジェクトは、例えば、鎖である。
集合体の要素の結合はないが押す物体との間に引力または斥力が働く場合、3次元オブジェクトは、押す物体と接しなくても移動するように表示される。押す物体との間に引力が働く場合、3次元オブジェクトは、押す物体と接しなくても、押す物体と所定距離以内に入ると押す物体に引き寄せられる。また、押す物体との間に斥力が働く場合、3次元オブジェクトは、押す物体と接しなくても、押す物体と所定距離以内に入ると押す物体から遠ざかる。このように表示される3次元オブジェクトと押す物体の組み合わせは、例えば、鉄粉と磁石の組み合わせである。
このように、オブジェクトデータ24bに格納された情報と作用データ24cに格納された情報とに基づいて3次元オブジェクトを変化させることにより、押す操作に応じて、3次元オブジェクトを多様に変化させることができる。オブジェクトデータ24bおよび作用データ24cに格納される情報は、上記の例に限定されず、用途等に応じて適宜変更してよい。例えば、押す物体の種別および大きさや押す物体と3次元オブジェクトの接触面積の大きさに応じて、3次元オブジェクトの変化の仕方が切り替わるように設定してもよい。
次に、図15および図16を参照しながら、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明する。以下の説明では、表示装置1を装着した利用者が見る空間を、表示空間と呼ぶことがある。表示装置1は、利用者の右目および左目にそれぞれの目に対応する画像を提供することにより、表示空間内に現実の物体および3次元オブジェクトを3次元的(立体的)に表示することができる。表示装置1は、仮想空間データ24dに基づいて再現した仮想空間と、撮影部40および42によって撮影される現実の空間とを所定の規則に基づいて対応付け、これらの空間が重なった空間を表示空間として表示する。
図15および図16は、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明するための図である。図15に示すステップS11では、表示装置1は、表示空間50中に、3次元オブジェクトOB1を立体的に表示している。3次元オブジェクトOB1は、例えば、ボールを模したオブジェクトである。また、ステップS11では、3次元オブジェクトOB1を支持する底面B1が表示されている。
ステップS12では、利用者が指F1を3次元オブジェクトOB1と接触する位置に置き、そのまま静止させている。表示装置1は、表示空間内で現実の物体が検出され、かつ、その物体が3次元オブジェクトOB1と接触する状態が所定時間以上継続した場合、3次元オブジェクトOB1が操作対象として選択されたと判定する。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として選択されたことを利用者に通知する。
物体が3次元オブジェクトOB1と接触しているかの判定は、現実の空間における物体の位置と、3次元オブジェクトOB1の形状、姿勢、仮想空間における位置等に基づいて行われる。現実の空間での位置と仮想空間における位置との比較は、一方の空間の位置を上記の所定の規則に基づいて他方の空間の位置へ換算することによって行ってもよいし、両方の空間の位置を比較用の空間の位置へ換算することによって行ってもよい。現実の物体として指が検出された場合、指のつま先の位置を物体の位置として処理してもよい。人は、何かを操作するときに指のつま先を用いることが多いため、指のつま先の位置を物体の位置として処理することにより、より自然な操作感を利用者に提供することができる。
また、操作対象として選択されたことの通知は、例えば、3次元オブジェクトOB1の全体の色を変更することや、3次元オブジェクトOB1の表面のうち、物体と接触している位置の近傍の色を変更することによって実現される。表示装置1は、このような視覚的な通知に代えて、あるいは、このような視覚的な通知に加えて、音や振動による通知を行ってもよい。
このように、表示装置1は、指等の現実の物体が3次元オブジェクトOB1と接触する状態が所定時間以上継続して検出された場合に、3次元オブジェクトOB1が操作対象として選択されたと判定する。接触状態が所定時間以上継続して検出されることを条件として付加することにより、例えば、他の3次元オブジェクトを操作するために指を移動させる過程で、意図しない3次元オブジェクトが操作対象として選択される可能性を低くすることができる。
3次元オブジェクトOB1が操作対象として選択された後、ステップS13に示すように、利用者が、3次元オブジェクトOB1を押すように、指F1を3次元オブジェクトOB1の内側に侵入させたものとする。表示装置1は、操作対象として選択された3次元オブジェクト内に物体を侵入させる操作が検出された場合、操作に応じて3次元オブジェクトを変化させる。3次元オブジェクトをどのように変化させるかは、オブジェクトデータ24bにおいて定義されている3次元オブジェクトの種別と、作用データ24cにおいてその種別と対応付けて定義されている変化のルールとによって決定される。
例えば、オブジェクトデータ24bにおいて3次元オブジェクトOB1が弾性体であると定義され、作用データ24cにおいて弾性体は押された場合に押された量に応じて押された方向に変形することが定義されていたものとする。この場合、表示装置1は、ステップS14に示すように、指F1が侵入した部分が押されて凹んだように3次元オブジェクトOB1を変化させる。
また、オブジェクトデータ24bにおいて3次元オブジェクトOB1が剛体であると定義され、作用データ24cにおいて剛体は押された場合に押された量に応じて押された方向に移動することが定義されていたものとする。この場合、表示装置1は、図16のステップS15に示すように、指F1に押されたように3次元オブジェクトOB1を指F1の進行方向へ移動させる。図16のステップS15では、3次元オブジェクトOB1は、底面B1に支持されているため、剛体によって印加される力の底面B1と水平方向の成分に従って移動している。
このように、3次元オブジェクトを押す操作が検出された場合に、オブジェクトデータ24bおよび作用データ24cに基づいて3次元オブジェクトOB1を変化させることにより、3次元オブジェクトを操作に応じて様々に変化させることができる。押すという操作は、現実の世界の様々な場面で利用されている操作であり、3次元オブジェクトOB1を押す操作を検出して対応する処理を実行することにより、直感的で利便性の高い操作性を実現することができる。
3次元オブジェクトを操作するために用いられる物体は、指に限定されず、手、足、棒、器具等であってもよい。押す操作に応じて3次元オブジェクトを変化させる態様は、現実の物理法則に則していてもよいし、現実ではあり得ないものであってもよい。
表示装置1は、3次元オブジェクトに対する操作を検出する空間を操作可能範囲51に限定してもよい。操作可能範囲51は、例えば、表示装置1を装着している利用者の手が届く範囲である。このように、3次元オブジェクトに対する操作を検出する空間を限定することにより、表示装置1が操作を検出するために実行する演算処理の負荷を軽減することができる。
次に、図17および図18を参照しながら、3次元オブジェクトを押す操作に関して表示装置1が実行する処理手順の第1の例について説明する。図17は、3次元オブジェクトの接触検出処理の処理手順を示すフローチャートである。図17に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図17に示すように、制御部22は、まず、ステップSA01として、3次元オブジェクトを含む仮想空間の画像と現実の空間の画像とを合成して表示する。
続いて、制御部22は、ステップSA02として、検出部44、すなわち、撮影部40および42によって所定の物体が検出されたかを判定する。所定の物体は、例えば、利用者の指である。所定の物体が検出されない場合(ステップSA02,No)、制御部22は、ステップSA08として、操作終了が検出されたかを判定する。
操作終了は、例えば、操作部13に対する所定の操作が行われた場合に検出される。操作終了が検出された場合(ステップSA08,Yes)、制御部22は、接触検出処理を終了させる。操作終了が検出されない場合(ステップSA08,No)、制御部22は、ステップSA02以降を再実行する。
所定の物体が検出された場合(ステップSA02,Yes)、制御部22は、ステップSA03として、所定の物体の種別を判定する。所定の物体の種別は、例えば、撮影部40および42によって撮影された画像中の物体の大きさ、形状、色等に基づいて判定される。続いて、制御部22は、ステップSA04として、所定の物体に接触している3次元オブジェクトを探す。所定の物体に接触している3次元オブジェクトがない場合(ステップSA05,No)、制御部22は、ステップSA08へ進む。
所定の物体に接触している3次元オブジェクトがみつかった場合(ステップSA05,Yes)、制御部22は、ステップSA06として、オブジェクトデータ24bに基づいて、所定の物体に接触している3次元オブジェクトの種別を判定する。そして、制御部22は、ステップSA07として、後述する操作検出処理を実行する。その後、制御部22は、ステップSA08へ進む。
図18は、操作検出処理の処理手順を示すフローチャートである。図18に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図18に示すように、制御部22は、まず、ステップSB01として、所定の物体と3次元オブジェクトの接触時間を取得する。そして、制御部22は、ステップSB02として、所定の物体が3次元オブジェクトの内部に移動したかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップSB02,No)、制御部22は、ステップSB01以降を再実行する。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップSB02,Yes)、制御部22は、ステップSB03として、接触時間が所定時間以上であるかを判定する。接触時間が所定時間よりも短い場合(ステップSB03,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
接触時間が所定時間以上の場合(ステップSB03,Yes)、制御部22は、ステップSB04として、所定の物体の速度を算出する。そして、制御部22は、ステップSB05として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップSB06として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップSB06,No)、制御部22は、ステップSB04以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップSB06,Yes)、制御部22は、ステップSB07として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップSB07,Yes)、制御部22は、ステップSB08として、3次元オブジェクトを変化させ、その後、ステップSB07以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップSB07,No)、制御部22は、操作検出処理を終了させる。
上述してきたように、第1の例では、押す操作に応じて3次元オブジェクトを多様に変化させ、それにより、利用者に対して利便性の高い操作方法を提供することができる。
3次元オブジェクトを押す操作に関する処理手順の第2の例について説明する。第2の例における接触検出処理は、第1の例における接触検出処理と同一である。そこで、第2の例については、第1の例と重複する説明は省略し、主として、操作検出処理について説明する。
まず、図19を参照しながら、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明する。図19は、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明するための図である。図19に示すステップS21では、利用者が指F1を3次元オブジェクトOB1と接触させ、ステップS22では、利用者が指F1を3次元オブジェクトOB1の内側に侵入させている。
表示装置1は、表示空間内で現実の物体が検出され、かつ、その物体が3次元オブジェクトOB1と接触した後に3次元オブジェクトOB1の内部へ移動する状態が所定時間以上継続した場合、3次元オブジェクトOB1が操作対象として選択されたと判定する。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として選択されたことを利用者に通知する。さらに、表示装置1は、ステップS23に示すように、3次元オブジェクトOB1を、あたかもステップS21の段階で既に押す操作の対象として選択されていたかのように、接触検出以降の指F1による操作に応じて変化させる。
このように、物体と3次元オブジェクトの接触を検出した後は、物体がその場に留まらなくても押す操作を検出可能にすることにより、利用者は、3次元オブジェクトを押す操作を迅速に開始することができる。また、接触後に物体が3次元オブジェクトOB1の内部へ移動する状態が所定時間以上継続することを条件として付加することにより、例えば、他の3次元オブジェクトを操作するために指を移動させる過程で、意図しない3次元オブジェクトが操作対象として選択される可能性を低くすることができる。
次に、図20を参照しながら、第2の例における操作検出処理の処理手順について説明する。図20は、操作検出処理の処理手順を示すフローチャートである。図20に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。接触検出処理の処理手順は、図17に示した手順と同様である。
図20に示すように、制御部22は、まず、ステップSC01として、所定の物体が3次元オブジェクトの内部に移動しているかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップSC01,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップSC01,Yes)、制御部22は、ステップSC02として、接触検出からの経過時間が所定時間以上であるかを判定する。経過時間が所定時間よりも短い場合(ステップSC02,No)、制御部22は、ステップSC01以降を再実行する。
接触時間が所定時間以上の場合(ステップSC02,Yes)、制御部22は、ステップSC03として、所定の物体の速度を算出する。そして、制御部22は、ステップSC04として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップSC05として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップSC05,No)、制御部22は、ステップSC03以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップSC05,Yes)、制御部22は、ステップSC06として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップSC06,Yes)、制御部22は、ステップSC07として、3次元オブジェクトを変化させ、その後、ステップSC06以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップSC06,No)、制御部22は、操作検出処理を終了させる。
上述してきたように、第2の例では、指等の物体が3次元オブジェクトに接触する状態が所定時間以上継続しなくても押す操作が認識されることとしたので、利用者は、3次元オブジェクトを押す操作を迅速に開始することができる。
3次元オブジェクトを押す操作に関する処理手順の第3の例について説明する。第3の例における接触検出処理は、第1の例における接触検出処理と同一である。そこで、第3の例では、第1の例と重複する説明は省略し、主として、操作検出処理について説明する。
まず、図21および図22を参照しながら、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明する。図21および図22は、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明するための図である。図21に示すステップS31では、表示空間中に、3次元オブジェクトOB1が立体的に表示されている。また、利用者は、指F1を3次元オブジェクトOB1と接触させている。
ここで、利用者が指F1を3次元オブジェクトOB1の内側に侵入させたものとする。表示装置1は、3次元オブジェクトOB1に接触した物体が3次元オブジェクトOB1の内側に移動したことを検出すると、ステップS32に示すように、その時点から、3次元オブジェクトOB1を指F1による操作に応じて変化させる。図21に示す例では、ステップS32において、3次元オブジェクトOB1は、指F1の移動に合わせて移動を開始している。
そして、表示装置1は、ステップS33に示すように、指F1が3次元オブジェクトOB1の内側へ向けて移動することが所定時間以上継続した段階で、3次元オブジェクトOB1を操作対象として確定する。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として確定したことを利用者に通知する。その後も、指F1の3次元オブジェクトOB1の内側への移動が検出される間、表示装置1は、3次元オブジェクトOB1を変化させ続ける。
図22のステップS34に示すように、所定時間が経過する前に指F1の3次元オブジェクトOB1の内側への移動が検出されなくなった場合、表示装置1は、それまでに加えた変化と逆の変化を3次元オブジェクトOB1に加える。その結果、3次元オブジェクトOB1は、ステップS31の段階と同じ位置に同じ状態で表示される。逆の変化を3次元オブジェクトOB1に加える速度は、それまでに3次元オブジェクトOB1に変化が加えられた速度よりも速くてもよい。すなわち、高速に逆再生しているかのように3次元オブジェクトOB1を逆変化させてもよい。
このように、3次元オブジェクトの内側への物体の侵入が検出された段階から3次元オブジェクトに変化を加え始めることにより、利用者は、3次元オブジェクトが選択されつつあることを選択が確定する前から認識することができる。その結果、利用者は、意図した3次元オブジェクトが選択されたか否かを早期に知ることができる。意図しない3次元オブジェクトが選択された場合、利用者は、所定時間が経過する前に操作を中止することにより、意図せずに選択された3次元オブジェクトを元の状態に戻すことができる。
指F1の3次元オブジェクトOB1の内側への移動が所定時間以上継続するまでは、変化を加えられている3次元オブジェクトを通常時とも操作対象としての選択が確定した状態とも異なる態様(例えば、半透明)で表示してもよい。このように表示態様を変更することにより、利用者が3次元オブジェクトの状態を判別しやすくなる。
次に、図23を参照しながら、第3の例における操作検出処理の処理手順について説明する。図23は、操作検出処理の処理手順を示すフローチャートである。図23に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。接触検出処理の処理手順は、図17に示した手順と同様である。
図23に示すように、制御部22は、まず、ステップSD01として、所定の物体が3次元オブジェクトの内部に移動しているかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップSD01,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップSD01,Yes)、制御部22は、ステップSD02として、所定の物体の速度を算出する。そして、制御部22は、ステップSD03として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップSD04として、接触検出からの経過時間が所定時間以上であるかを判定する。経過時間が所定時間よりも短い場合、すなわち、3次元オブジェクトが押す操作の対象として確定していない場合(ステップSD04,No)、制御部22は、ステップSD05として、所定の物体の3次元オブジェクトの内部方向への移動が継続しているかを判定する。
3次元オブジェクトの内部方向への移動が継続している場合(ステップSD05,Yes)、制御部22は、ステップSD02以降を再実行する。3次元オブジェクトの内部方向への移動が継続していない場合(ステップSD05,No)、制御部22は、ステップSD06として、3次元オブジェクトを逆変化させて元の状態に戻す。そして、制御部22は、操作検出処理を終了させる。
接触検出からの経過時間が所定時間以上である場合(ステップSD04,Yes)、制御部22は、ステップSD07として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップSD07,No)、制御部22は、ステップSD02以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップSD07,Yes)、制御部22は、ステップSD08として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップSD08,Yes)、制御部22は、ステップSD09として、3次元オブジェクトを変化させ、その後、ステップSD08以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップSD08,No)、制御部22は、操作検出処理を終了させる。
上述してきたように、第3の例では、押す操作が検出された時点から、操作に応じて3次元オブジェクトを変化させることとしたので、利用者が、押す操作の対象となっている3次元オブジェクトを認識しやすい。
3次元オブジェクトに関する操作として、3次元オブジェクトを押す操作について説明したが、表示装置1が3次元オブジェクトに関して検出する操作は、押す操作に限定されない。表示装置1は、利用者が3次元オブジェクトを摘んで行う操作も検出することができる。以下に3次元オブジェクトを摘んで行う操作について説明する。
図24を参照しながら、3次元オブジェクトを摘んで行う操作の検出について説明する。図24は、3次元オブジェクトを摘んで行う操作の検出について説明するための図である。図24に示すステップS41では、表示空間50中に、3次元オブジェクトOB1が立体的に表示されている。
ここで、利用者が3次元オブジェクトOB1を摘んで何らかの操作を行いたいものとする。3次元オブジェクトOB1を摘んで何らかの操作を行うには、まず、操作の対象として3次元オブジェクトOB1を選択する必要がある。3次元オブジェクトOB1を選択するために、利用者は、ステップS42に示すように、指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させ、その状態を所定時間以上維持する。
表示装置1は、表示空間内で2つの現実の物体が検出され、かつ、それらの2つの物体の間に3次元オブジェクトOB1が位置する状態が所定時間以上継続した場合、3次元オブジェクトOB1が選択されたと判定し、3次元オブジェクトOB1を選択状態にする。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が選択状態になったことを利用者に通知する。
2つの物体の間に3次元オブジェクトOB1が位置しているかの判定は、現実の空間における2つの物体の位置と、3次元オブジェクトOB1の形状、姿勢、仮想空間における位置等に基づいて行われる。現実の空間での位置と仮想空間における位置との比較は、一方の空間の位置を上記の所定の規則に基づいて他方の空間の位置へ換算することによって行ってもよいし、両方の空間の位置を比較用の空間の位置へ換算することによって行ってもよい。現実の物体として指が検出された場合、指のつま先の位置を物体の位置として処理してもよい。
このように、表示装置1は、指等の現実の物体の間に3次元オブジェクトOB1が位置する状態が所定時間以上継続して検出された場合に、3次元オブジェクトOB1が選択されたと判定する。指の間に3次元オブジェクトOB1を挟むように指を配置するという操作は、人間が現実の空間の何かを選択するために何かを摘む操作と類似している。そのため、かかる操作は、3次元オブジェクトを選択するための操作として、直感的で分かりやすい。また、状態が所定時間以上継続して検出されることを条件として付加することにより、例えば、他の3次元オブジェクトを選択するために指を移動させる過程で、意図しない3次元オブジェクトが選択される可能性を低くすることができる。
表示装置1は、3次元オブジェクトOB1が選択状態になったと判定した後、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失、置換等の変化を加える。
次に、図25および図26を参照しながら、3次元オブジェクトを摘んで行う操作に関して表示装置1が実行する処理手順の第1の例について説明する。図25は、3次元オブジェクトの選択検出処理の処理手順を示すフローチャートである。図25に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図25に示すように、制御部22は、まず、ステップSE01として、3次元オブジェクトを含む仮想空間の画像と現実の空間の画像とを合成して表示する。
続いて、制御部22は、ステップSE02として、検出部44、すなわち、撮影部40および42によって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体は、現実の物体、例えば、利用者の指である。第1の物体および第2の物体が検出されない場合(ステップSE02,No)、制御部22は、ステップSE10として、操作終了が検出されたかを判定する。
操作終了は、例えば、操作部13に対する所定の操作が行われた場合に検出される。操作終了が検出された場合(ステップSE10,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップSE10,No)、制御部22は、ステップSE02以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップSE02,Yes)、制御部22は、ステップSE03として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。該当する3次元オブジェクトがない場合(ステップSE04,No)、制御部22は、ステップSE10へ進む。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップSE04,Yes)、制御部22は、ステップSE05として、第1の物体と第2の物体との間に3次元オブジェクトが位置している時間を取得する。取得した時間が所定時間未満の場合(ステップSE06,No)、制御部22は、ステップSE10へ進む。
取得した時間が所定時間以上の場合(ステップSE06,Yes)、制御部22は、ステップSE07として、第1の物体と第2の物体の距離を算出する。また、制御部22は、ステップSE08として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを選択状態にする。そして、制御部22は、ステップSE09として、後述する操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。操作検出処理が終了した後、制御部22は、ステップSE10へ進む。
図26は、操作検出処理の処理手順を示すフローチャートである。図26に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図26に示すように、制御部22は、まず、ステップSF01として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップSF02として、操作検出処理の開始時点以降の第1の物体と第2の物体の距離がほぼ一定であるかを判定する。距離がほぼ一定とは、例えば、現時点での第1の物体と第2の物体の距離の変化量が、操作検出処理の開始時点の距離と比較して、所定の範囲(第1の物体および第2の物体が通常の速度で移動した場合の距離の最大変化量の±10%等)以内に収まっていることを意味する。また、第1の物体と第2の物体の距離が操作検出処理の開始時点以降縮まり続けている場合(第1の物体および第2の物体が3次元オブジェクトを押しつぶす方向に移動している場合)に、距離がほぼ一定であると判定してもよい。また、手振れ等の範囲内でしか両者の距離が変化していない場合に、距離がほぼ一定であると判定してもよい。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップSF02,Yes)、制御部22は、ステップSF03として、第1の物体および第2の物体の移動速度を算出する。続いて、制御部22は、ステップSF04として、算出した移動速度が閾値以下であるかを判定する。ここで用いられる閾値は、例えば、人がものを放り投げるときの指先の移動速度である。また、閾値と比較される移動速度は、第1の物体の移動速度と第2の物体の移動速度の平均であってもよし、いずれか速い方であってもよいし、いずれか遅い方であってもよい。
移動速度が閾値以下の場合(ステップSF04,Yes)、制御部22は、ステップSF05として、検出された第1の物体および第2の物体の動きに応じて3次元オブジェクトに変化を加える。例えば、第1の物体および第2の物体の右方向への移動が検出された場合、制御部22は、第1の物体および第2の物体の移動に合わせて3次元オブジェクトを右方向へ移動させる。第1の物体および第2の物体の左回りでの回転が検出された場合、制御部22は、第1の物体および第2の物体の回転に合わせて3次元オブジェクトを左回りで回転させる。移動と回転が同時に検出された場合、移動と回転が同時に実行される。3次元オブジェクトの移動や回転に対する障害物がある場合、3次元オブジェクトが障害物に接触した時点で3次元オブジェクトの移動や回転を停止させてもよい。障害物は、現実の物体でもよいし、他の3次元オブジェクトでもよい。その後、制御部22は、ステップSF01以降を再実行する。
移動速度が閾値より速い場合(ステップSF04,No)、制御部22は、ステップSF06として、3次元オブジェクトを消去する。3次元オブジェクトを消去するに際して、3次元オブジェクトが第1の物体および第2の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部22は、操作検出処理を終了させる。このように、3次元オブジェクトを放り投げるように第1の物体および第2の物体が高速で移動した場合に3次元オブジェクトを消去することにより、直感的な操作によって3次元オブジェクトの消去を実現することができる。第1の物体および第2の物体を高速で移動させる操作ではなく、例えば、3次元オブジェクトを握りつぶす操作に3次元オブジェクトの消去を割り当ててもよい。また、3次元オブジェクトを消去する代わりに、3次元オブジェクトを当初の配置場所に戻すこととしてもよい。表示装置1は、ステップSF03、SF04およびステップSF06の処理を行わなくてもよい。すなわち、表示装置1は、ステップSF02で第1の物体と第2の物体の距離がほぼ一定と判定した場合には、2つの物体の移動速度にかかわらず、ステップSF05を実行してもよい。
第1の物体と第2の物体の距離がほぼ一定でない場合(ステップSF02,No)、制御部22は、ステップSF07として、距離が、3次元オブジェクトの選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合(ステップSF07,Yes)、制御部22は、ステップSF08として、3次元オブジェクトの選択状態を解除する。第1の物体と第2の物体の距離を拡大するという操作は、摘んでいる現実のオブジェクトを放す操作と類似している。そのため、かかる操作は、3次元オブジェクトの選択を解除するための操作として、直感的で分かりやすい。
続いて、制御部22は、ステップSF09として、選択状態を解除した3次元オブジェクトを重力等に従って移動させる。そして、制御部22は、操作検出処理を終了させる。ここでの移動は、例えば、3次元オブジェクトが重力に従って落下し、床やテーブルの上で停止するように表示される。3次元オブジェクトの動きを停止させる前に、3次元オブジェクトの弾性や床やテーブルの硬度に応じて3次元オブジェクトをバウンドさせてもよい。3次元オブジェクトが床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には3次元オブジェクトを破損したように表示してもよい。また、実際の重力が働く場合よりも3次元オブジェクトをゆっくりと移動させてもよい。
第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合(ステップSF07,No)、制御部22は、ステップSF10として、距離に応じて3次元オブジェクトを変形させる。そして、制御部22は、ステップSF01以降を再実行する。3次元オブジェクトを変形させる程度は、例えば、3次元オブジェクトに属性として設定されている弾性に応じて変更してもよい。制御部22は、ゴムボールを模した3次元オブジェクトのように属性として低い硬度を設定されているオブジェクトについては、第1の物体と第2の物体の距離が縮まるに応じて変形の度合いを高めてよい。また、制御部22は、積み木を模した3次元オブジェクトのように属性として高い硬度を設定されているオブジェクトについては、第1の物体と第2の物体の距離が縮まっても変形の度合いを小さく保ってよい。
第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合に、表示装置1は、3次元オブジェクトを変形させるのではなく縮小させてもよい。第1の物体と第2の物体の距離が所定の値以下になった場合に、表示装置1は、3次元オブジェクトを破損したように表示してもよい。
上述してきたように、第1の例では、指等の物体の間に3次元オブジェクトが位置する状態が所定時間以上継続した場合に3次元オブジェクトが選択されることとしたので、3次元オブジェクトの選択を直感的で分かりやすい操作により実現することができる。
図27に示すように、表示装置1は、第1の物体と第2の物体のうち少なくとも一方が3次元オブジェクトに接触している状態が所定時間以上継続することを、3次元オブジェクトを選択する条件としてもよい。3次元オブジェクトへの接触を選択の条件とすることにより、複数の3次元オブジェクトが近接して表示されている場合に、利用者が所望の3次元オブジェクトを選択し易くなる。
3次元オブジェクトを摘んで行う操作に関する処理手順の第2の例について説明する。第2の例における操作検出処理は、第1の例における操作検出処理と同一である。そこで、第2の例については、第1の例と重複する説明は省略し、主として、選択検出処理について説明する。
まず、図28を参照しながら、3次元オブジェクトを摘んで行う操作の検出について説明する。図28は、3次元オブジェクトを摘んで行う操作の検出について説明するための図である。図28に示すステップS51では、表示空間中に、3次元オブジェクトOB1が立体的に表示されている。また、3次元オブジェクトOB1を選択するために、利用者は、指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させている。
表示装置1は、表示空間内で2つの現実の物体が検出され、かつ、それらの2つの物体の間に3次元オブジェクトOB1が位置する場合、2つの物体の距離の変化を監視する。そして、距離が所定時間以上ほぼ一定であれば、3次元オブジェクトOB1が選択されたと判定し、3次元オブジェクトOB1を選択状態にする。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が選択状態になったことを利用者に通知する。
表示装置1が2つの物体の距離の変化を監視している間、2つの物体は、3次元オブジェクトOB1を挟む位置に留まる必要はない。すなわち、利用者は、ステップS51に示したように指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させた後、その状態を保つことなく、指F1および指F2を他の位置へ移動させて構わない。
ステップS51の状態から、ステップS52に示すように、利用者が、指F1と指F2の距離D1をほぼ一定に保ったまま移動させたものとする。この場合、表示装置1は、ステップS53に示すように、指F1と指F2の距離D1がほぼ一定に保たれた状態が所定時間以上継続した段階で、3次元オブジェクトOB1を選択状態にする。そして、表示装置1は、3次元オブジェクトOB1を、あたかもステップS51の段階で既に選択されていたかのように、指F1および指F2の間に移動させる。表示装置1は、ステップS51からステップS53までの指F1と指F2の動きを記憶しておき、記憶しておいた動きに合わせて3次元オブジェクトOB1を回転等させてもよい。その後、表示装置1は、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失、置換等の変化を加える。
このように、2つの物体が3次元オブジェクトを挟む位置に一旦移動した後は、物体がその場に留まらなくても3次元オブジェクトを選択可能にすることにより、利用者は、3次元オブジェクトを選択した後の操作を迅速に開始することができる。
次に、図29を参照しながら、第2の例における選択検出処理の処理手順について説明する。図29は、3次元オブジェクトの選択検出処理の処理手順を示すフローチャートである。図29に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図29に示すように、制御部22は、まず、ステップSG01として、3次元オブジェクトを含む仮想空間の画像と現実の空間の画像とを合成して表示する。続いて、制御部22は、ステップSG02として、検出部44、すなわち、撮影部40および42によって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体が検出されない場合(ステップSG02,No)、制御部22は、ステップSG14として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトの仮選択状態を解除する。仮選択状態とは、2つの物体の間に3次元オブジェクトが表示されている状態が検出された後、2つの物体の距離がほぼ一定に保たれているかが監視されている状態である。
そして、制御部22は、ステップSG15として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップSG15,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップSG15,No)、制御部22は、ステップSG02以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップSG02,Yes)、制御部22は、ステップSG03として、仮選択状態の3次元オブジェクトがあるか否かを判定する。仮選択状態の3次元オブジェクトがない場合(ステップSG03,No)、制御部22は、ステップSG04として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。該当する3次元オブジェクトがない場合(ステップSG05,No)、制御部22は、ステップSG15へ進む。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップSG05,Yes)、制御部22は、ステップSG06として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを仮選択状態にする。また、制御部22は、ステップSG07として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップSG15へ進む。
第1の物体および第2の物体が検出され、かつ、仮選択状態の3次元オブジェクトがある場合(ステップSG03,Yes)、制御部22は、ステップSG08として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップSG09として、距離がほぼ一定であるかを判定する。距離がほぼ一定でない場合(ステップSG09,No)、制御部22は、ステップSG14として、仮選択状態の3次元オブジェクトの仮選択状態を解除する。そして、制御部22は、ステップSG15へ進む。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップSG09,Yes)、制御部22は、ステップSG10として、距離がほぼ一定に保たれている期間が所定時間以上であるかを判定する。距離がほぼ一定に保たれている期間が所定時間未満の場合(ステップSG10,No)、制御部22は、ステップSG15へ進む。
距離がほぼ一定に保たれている期間が所定時間以上の場合(ステップSG10,Yes)、制御部22は、ステップSG11として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを選択状態にする。また、制御部22は、ステップSG12として、第1の物体と第2の物体との間に3次元オブジェクトを移動させる。そして、制御部22は、ステップSG13として、図26に示した操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。操作検出処理が終了した後、制御部22は、ステップSG15へ進む。
上述してきたように、第2の例では、指等の物体の間に3次元オブジェクトが位置した後、物体の距離が所定時間以上ほぼ一定に保たれた場合に3次元オブジェクトが選択されることとしたので、利用者は、3次元オブジェクトの選択後の操作を迅速に開始することができる。
図30に示すステップS61からステップS63のように、表示装置1は、第1の物体と第2の物体のうち少なくとも一方が3次元オブジェクトに接触した後に第1の物体と第2の物体の距離が所定時間以上ほぼ一定に保たれることを、3次元オブジェクトを選択する条件としてもよい。3次元オブジェクトへの接触を選択の条件とすることにより、複数の3次元オブジェクトが近接して表示されている場合に、利用者が所望の3次元オブジェクトを選択し易くなる。
3次元オブジェクトを摘んで行う操作に関する処理手順の第3の例について説明する。第3の例については、第1の例と重複する説明は省略し、主として、選択検出処理および操作検出処理について説明する。
まず、図31および図32を参照しながら、3次元オブジェクトを摘んで行う操作の検出について説明する。図31に示すステップS71では、表示空間中に、3次元オブジェクトOB1が立体的に表示されている。また、3次元オブジェクトOB1を選択するために、利用者は、指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させている。
表示装置1は、表示空間内で2つの現実の物体が検出され、かつ、それらの2つの物体の間に3次元オブジェクトOB1が位置する場合、2つの物体の距離の変化を監視する。そして、距離が所定時間以上ほぼ一定であれば、3次元オブジェクトOB1が選択されたと判定し、3次元オブジェクトOB1を選択状態にする。そして、表示装置1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が選択状態になったことを利用者に通知する。
表示装置1が2つの物体の距離の変化を監視している間、2つの物体は、3次元オブジェクトOB1を挟む位置に留まる必要はない。すなわち、利用者は、ステップS71に示したように指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させた後、その状態を保つことなく、指F1および指F2を他の位置へ移動させて構わない。
ステップS71の状態から、ステップS72に示すように、利用者が、指F1と指F2の距離D1をほぼ一定に保ったまま移動させたものとする。この場合、表示装置1は、指F1と指F2の間に3次元オブジェクトOB1が表示されていることが検出された段階、すなわち、ステップS71の段階から、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失、置換等の変化を加える。そして、表示装置1は、ステップS73に示すように、指F1と指F2の距離D1がほぼ一定に保たれた状態が所定時間以上継続した段階で、3次元オブジェクトOB1を選択状態にする。
図32のステップS74に示すように、所定時間が経過する前に指F1と指F2の距離D1が拡大した場合、すなわち、選択が行われなかった場合、表示装置1は、それまでに加えた変化と逆の変化を3次元オブジェクトOB1に加える。その結果、3次元オブジェクトOB1は、ステップS71の段階と同じ位置に同じ状態で表示される。逆の変化を3次元オブジェクトOB1に加える速度は、それまでに3次元オブジェクトOB1に変化が加えられた速度よりも速くてもよい。すなわち、高速に逆再生しているかのように3次元オブジェクトOB1を逆変化させてもよい。
このように、2つの物体の間に3次元オブジェクトが表示されていることが検出された段階から3次元オブジェクトに変化を加え始めることにより、利用者は、3次元オブジェクトが選択されつつあることを選択が確定する前から認識することができる。その結果、利用者は、意図した3次元オブジェクトが選択されたか否かを早期に知ることができる。表示装置1は、2つの物体の距離がほぼ一定に保たれた状態が所定時間以上継続するまでは、変化を加えられている3次元オブジェクトを通常時とも選択状態とも異なる態様(例えば、半透明)で表示することにより、利用者が3次元オブジェクトの状態を判別しやすくしてもよい。
次に、図33および図34を参照しながら、3次元オブジェクトを摘んで行う操作に関して表示装置1が実行する処理手順について説明する。図33は、3次元オブジェクトの選択検出処理の処理手順を示すフローチャートである。図33に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図33に示すように、制御部22は、まず、ステップSH01として、3次元オブジェクトを含む仮想空間の画像と現実の空間の画像とを合成して表示する。続いて、制御部22は、ステップSH02として、検出部44、すなわち、撮影部40および42によって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体が検出されない場合(ステップSH02,No)、制御部22は、ステップSH10として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトの仮選択状態を解除する。
そして、制御部22は、ステップSH11として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップSH11,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップSH11,No)、制御部22は、ステップSH02以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップSH02,Yes)、制御部22は、ステップSH03として、仮選択状態の3次元オブジェクトがあるか否かを判定する。仮選択状態の3次元オブジェクトがない場合(ステップSH03,No)、制御部22は、ステップSH04として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。該当する3次元オブジェクトがない場合(ステップSH05,No)、制御部22は、ステップSH11へ進む。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップSH05,Yes)、制御部22は、ステップSH06として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを仮選択状態にする。また、制御部22は、ステップSH07として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップSH11へ進む。
第1の物体および第2の物体が検出され、かつ、仮選択状態の3次元オブジェクトがある場合(ステップSH03,Yes)、制御部22は、ステップSH08として、第1の物体と第2の物体の少なくとも一方が移動しているかを判定する。第1の物体と第2の物体のいずれも移動していない場合(ステップSH08,No)、制御部22は、ステップSH11へ進む。
第1の物体と第2の物体の少なくとも一方が移動している場合(ステップSH08,Yes)、制御部22は、ステップSH09として、図34に示す操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。操作検出処理が終了した後、制御部22は、ステップSH11へ進む。
図34は、操作検出処理の処理手順を示すフローチャートである。図34に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。図34に示すように、制御部22は、まず、ステップSI01として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップSI02として、操作検出処理の開始時点以降の第1の物体と第2の物体の距離がほぼ一定であるかを判定する。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップSI02,Yes)、制御部22は、ステップSI03として、操作検出処理が開始されてから所定時間が経過したかを判定する。所定時間が経過していた場合(ステップSI03,Yes)、制御部22は、ステップSI04として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトを選択状態にする。所定時間が経過していない場合(ステップSI03,No)、ステップSI04は実行されない。
続いて、制御部22は、ステップSI05として、第1の物体および第2の物体の移動速度を算出する。そして、制御部22は、ステップSI06として、算出した移動速度が閾値以下であるかを判定する。移動速度が閾値以下の場合(ステップSI06,Yes)、制御部22は、ステップSI07として、検出された第1の物体および第2の物体の動きに応じて3次元オブジェクトを移動させたり回転させたりする。そして、制御部22は、ステップSI01以降を再実行する。
移動速度が閾値より速い場合(ステップSI06,No)、制御部22は、ステップSI08として、3次元オブジェクトを消去する。3次元オブジェクトを消去するに際して、3次元オブジェクトが第1の物体および第2の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部22は、操作検出処理を終了させる。第1の物体および第2の物体を高速で移動させる操作ではなく、例えば、3次元オブジェクトを握りつぶす操作に3次元オブジェクトの消去を割り当ててもよい。3次元オブジェクトを消去する代わりに、3次元オブジェクトを当初の配置場所に戻すこととしてもよい。表示装置1は、ステップSI05、SI06およびステップSI08の処理を行わなくてもよい。すなわち、表示装置1は、ステップSI03でNoと判定した場合またはステップSI04を実行した後に、2つの物体の移動速度にかかわらず、ステップSI07を実行してもよい。
第1の物体と第2の物体の距離がほぼ一定でない場合(ステップSI02,No)、制御部22は、ステップSI09として、距離が、3次元オブジェクトの選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合(ステップSI09,Yes)、制御部22は、ステップSI10として、第1の物体と第2の物体の間に表示されていた3次元オブジェクトが仮選択状態であるかを判定する。
3次元オブジェクトが仮選択状態である場合(ステップSI10,Yes)、制御部22は、ステップSI11として、3次元オブジェクトの仮選択状態を解除する。また、制御部22は、ステップSI12として、3次元オブジェクトを逆変化させて元の状態に戻す。そして、制御部22は、操作検出処理を終了させる。
3次元オブジェクトが仮選択状態でない場合、すなわち、選択状態の場合(ステップSI10,No)、制御部22は、ステップSI13として、3次元オブジェクトの選択状態を解除する。また、制御部22は、ステップSI14として、選択状態を解除した3次元オブジェクトを重力等に従って移動させる。そして、制御部22は、操作検出処理を終了させる。ここでの移動は、例えば、3次元オブジェクトが重力に従って落下し、床やテーブルの上で停止するように表示される。3次元オブジェクトの動きを停止させる前に、3次元オブジェクトの弾性や床やテーブルの硬度に応じて3次元オブジェクトをバウンドさせてもよい。3次元オブジェクトが床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には3次元オブジェクトを破損したように表示してもよい。また、実際の重力が働く場合よりも3次元オブジェクトをゆっくりと移動させてもよい。
第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合(ステップSI09,No)、制御部22は、ステップSI15として、距離に応じて3次元オブジェクトを変形させる。そして、制御部22は、ステップSI01以降を再実行する。3次元オブジェクトを変形させる程度は、例えば、3次元オブジェクトに属性として設定されている硬度に応じて変更してもよい。
上述してきたように、第3の例では、指等の物体の間に3次元オブジェクトが位置していることが検出された時点から、操作に応じて3次元オブジェクトを変化させることとしたので、利用者が3次元オブジェクトの選択を認識しやすい。
図35に示すステップS81からステップS83のように、第1の物体と第2の物体のうち少なくとも一方が3次元オブジェクトに接触した後に第1の物体と第2の物体の距離が所定時間以上ほぼ一定に保たれることを、3次元オブジェクトを選択する条件としてもよい。3次元オブジェクトへの接触を選択の条件とすることにより、複数の3次元オブジェクトが近接して表示されている場合に、利用者が所望の3次元オブジェクトを選択し易くなる。
上記の実施例において説明した表示装置1は各種の用途に適用できる。操作の対象となる3次元オブジェクト(表示物)は、例えば、本、積み木、スプーン、箸、トランプ、粘土、楽器のように現実に存在するものを模したオブジェクトであってもよいし、仮想のアバター、ゲームのキャラクター、仮想現実のARタグのように実在はしないオブジェクトであってもよい。また、検出された操作に応じて3次元オブジェクトに加えられる変化は、上記の移動、変形、消失、置換等に限定されない。また、押す操作に応じて3次元オブジェクトに加えられる変化は、上記の実施例に限定されず、3次元オブジェクトの種類に応じて変更してよい。
例えば、粘土を模した3次元オブジェクト(以下、単に「粘土」という)を操作対象とする場合、押す操作に応じて粘土を変形させて、利用者が粘土を任意の形に成形できるようにしてもよい。また、時間の経過にしたがって、あたかも粘土が乾いていくかのように、粘土を硬化させていってもよい。また、水の3次元オブジェクトに浸けた指や手で粘土を押す操作が検出された場合に、粘土の粘性を向上させてもよい。
また、レコード盤を模した3次元オブジェクト(以下、単に「レコード盤」という)を操作対象とする場合、押す操作に応じてレコード盤が支点を中心として回転するとともに、音を再生するようにしてもよい。回転と音の再生を連動させることにより、ディスクジョッキーによるスクラッチ等の技法を仮想的に実現してもよい。
実施例1では、表示装置が、3次元オブジェクトに対する操作を検出し、検出した操作に応じて3次元オブジェクトに変化を加える方法を説明した。以下の実施例2では、実施例1で説明した方法を、例えば、表計算アプリケーションを3次元の仮想空間で実行する場合に適用する例について説明する。
図36を参照しながら、表示装置1の機能的な構成について説明する。図36は、第2の実施例に係る表示装置1のブロック図である。第2の実施例に係る表示装置1の機能的な構成は、基本的には、第1の実施例(図6)と同様であるが、以下に説明する点が異なる。
記憶部24に記憶される制御プログラム24aには、第1の実施例と同様に、検出処理部25と、表示オブジェクト制御部26と、画像合成部27とが含まれる他、さらに、表計算処理部28が含まれる。記憶部24に記憶されるデータには、オブジェクトデータ24bと、作用データ24cと、仮想空間データ24dとが含まれる他、さらに、表計算データ24eが含まれる。
表計算処理部28は、数値データの集計、演算、および分析などの表計算に関わる処理を実現するための機能を提供する。表計算処理部28は、表計算に関わる処理を行うためのワークシートで各面が構成される立体状のオブジェクトを表示する。表計算処理部28は、ワークシートに対して検出される操作に応じて、表計算に関わる処理を実現する。ワークシートには、例えば、縦横に格子状のセルが複数配置される。ワークシートに対して検出される操作には、セルに対する操作が含まれる。
図37〜図39を用いて、表計算処理部28が処理内容を決定するためのルールについて説明する。図37は、利用者から見たときの表示空間に表示される立体状のオブジェクトの状態を示す図である。図38は、立体状のオブジェクトの展開図である。図37に示すE1は、利用者の目を示す。
図37に示すように、利用者は、利用者の視線方向α1に並行なZ軸方向に奥行きを持った空間として表示空間50を認識する。そして、利用者は、表示空間50内に、表計算に関わる処理を行うためのワークシートで各面が構成される立体状のオブジェクト(以下、キューブCB1と表記する)が空中に浮かんでいるかのように認識する。以下の説明において、Z軸方向という表記する場合は、利用者から表示空間50の奥側に向う方向、及び表示空間50の奥側から利用者に向う方向のどちらにも限定されず、Z軸方向(+)と表記する場合は、利用者から離れて表示空間50の奥側に向う方向であり、3次元座標系の原点へ向う方向とは逆方向を意味するものとする。X軸方向と表記する場合は、少なくとも、X軸に並行な方向であることを意味する。Y軸方向と表記する場合は、少なくとも、Y軸に並行な方向であることを意味する。Y軸方向(+)と表記する場合は、3次元座標系の原点へ向う方向とは逆方向を意味するものとする。Y軸方向(−)と表記する場合は、3次元座標系の原点へ向う方向を意味するものとする。
図38に示すように、キューブCB1は、キューブCB1の各面が、ワークシートWS1、ワークシートWS2、ワークシートWS3、ワークシートWS4、ワークシートWS5、ワークシートWS6で構成される。ワークシートWS1〜WS6は、それぞれが独立して、利用者からの操作に応じた表計算に関わる処理を実現する。
図39は、キューブ又はワークシートに対して検出される操作と、表計算に関わる処理に含まれる処理項目とが予め対応付けられた処理項目決定ルールの例を示す図である。表計算処理部28は、ワークシートに対して検出される操作に応じて実行すべき処理項目を、図39に示す処理項目決定ルールに基づいて決定し、決定した処理項目の処理を実行する。
図39に示すNo.1のルールには、「キューブの1面をZ軸方向(+)に移動させる」という検出操作と、「キューブCB1を構成する面が直交する部分(別々のワークシートのセルが隣り合う部分)において、演算が定義されている場合には、演算結果を更新」という処理項目とが対応付けられている。
図39に示すNo.2のルールには、「キューブの列又は行を回転させる」という検出操作と、「回転する列又は行を参照する演算及びグラフがある場合には、演算結果及びグラフを更新」という処理項目とが対応付けられている。
図39に示すNo.3のルールには、「キューブを手で切る」という検出操作と、「キューブの分割に応じてワークシートの構成情報を更新」という処理項目とが対応付けられている。キューブが分割された場合、ワークシートの数、ワークシートが有するセルの数、行数又は列数などを更新する趣旨である。
図39に示すNo.4のルールには、「2つのセルをX軸方向に移動させて衝突させる」という検出操作と、「セルの数値データ同士を乗算」という処理項目とが対応付けられている。
図39に示すNo.5のルールには、「2つのセルをY軸方向に移動させて衝突させる」という検出操作と、「Y軸方向(+)のセルの数値データをY軸方向(−)のセルの数値データで除算」という処理項目とが対応付けられている。
図39に示すNo.6のルールには、「キューブをY軸方向(−)に押しつぶす」という検出操作と、「Y軸方向(−)の移動量に応じて、ワークシートのデータを消去」という処理項目とが対応付けられている。
図39に示すNo.7のルールには、「キューブ内の特定のセルを押す」という検出操作と、「セルを含む列または行のセルを削除」という処理項目とが対応付けられている。
図39に示すNo.8のルールには、「分離されたセルを他のワークシートに衝突させる」という検出操作と、「セルが分離されたワークシートのデータ、およびセルが衝突したワークシートのデータを更新」という処理項目とが対応付けられている。
図39に示す処理項目決定ルールは、一例を示すものに過ぎず、図39に示す例のほかにも、検出される操作の種類、操作に対応付ける処理の内容を追加、変更、削除してもよい。
キューブCB1(キューブの6面を構成するワークシート)に対して検出される操作に応じたキューブCB1(キューブの6面を構成するワークシート)の表示態様の変化は、検出処理部25、表示オブジェクト制御部26、及び画像合成部27により提供される機能、及びオブジェクトデータ24b、作用データ24c、及び仮想空間データ24dに基づいて実現される。
検出処理部25は、第1の実施例と同様に、撮影部40および42の撮影範囲に存在する現実の物体を検出するための機能を提供する。検出処理部25が提供する機能には、検出したそれぞれの物体までの距離を測定する機能が含まれる。第2の実施例では、検出処理部25は、主に、利用者の手または指を検出し、検出した利用者の手または指までの距離を測定する。
表示オブジェクト制御部26は、第1の実施例と同様に、仮想空間にどのような3次元オブジェクトが配置され、それぞれの3次元オブジェクトがどのような状態にあるかを管理するための機能を提供する。表示オブジェクト制御部26が提供する機能には、検出処理部25の機能によって検出される現実の物体の動きに基づいて3次元オブジェクトに対する操作を検出し、検出した操作に基づいて3次元オブジェクトを変化させる機能が含まれる。第2の実施例では、表示オブジェクト制御部26は、主に、検出処理部25の機能によって検出される利用者の手の動きに基づいてキューブCB1(キューブの6面を構成するワークシート)に対する操作を検出し、検出した操作に基づいてキューブCB1(キューブの6面を構成するワークシート)の表示態様を変化させる。
画像合成部27は、第1の実施例と同様に、現実の空間の画像と仮想空間の画像とを合成することにより、表示部32aに表示する画像と表示部32bに表示する画像とを生成するための機能を提供する。画像合成部27が提供する機能には、検出処理部25の機能によって測定される現実の物体までの距離と、仮想空間における視点から3次元オブジェクトまでの距離とに基づいて、現実の物体と3次元オブジェクトの前後関係を判定し、重なりを調整する機能が含まれる。第2の実施例では、画像合成部27は、キューブCB1の画像と、現実の空間の画像と合成する。さらに、画像合成部27は、検出処理部25の機能によって検出される利用者の手までの距離と、仮想空間における視点からキューブCB1までの距離とに基づいて、利用者の手とキューブCB1の前後関係を判定し、重なりを調整する。
オブジェクトデータ24bは、第2の実施例では、例えば、キューブCB1を3次元オブジェクトとして表示するために用いられる。オブジェクトデータ24bには、第2の実施例において、キューブCB1(キューブの6面を構成するワークシート)の種別、形状情報、色、透明度等を含む情報が格納される。種別は、キューブCB1(キューブの6面を構成するワークシート)の物理的な性質を示す。種別は、例えば、「剛体」、「弾性体」等の値をとる。形状情報は、キューブCB1(キューブの6面を構成するワークシート)の形状を示す情報である。形状情報は、例えば、キューブCB1(キューブの6面を構成するワークシート)を構成する面の頂点座標の集合である。色は、キューブCB1(キューブの6面を構成するワークシート)の表面の色、あるいは色の構成である。透明度は、キューブCB1(キューブの6面を構成するワークシート)が光を透過させる度合いである。
作用データ24cは、第2の実施例では、3次元オブジェクトとして表示されるキューブCB1(キューブの6面を構成するワークシート)に対する操作が検出された場合に、キューブCB1(キューブの6面を構成するワークシート)の表示態様をどのように変化させるかを判定するために用いられる。ここでいう変化には、キューブCB1の消失、移動、回転、変形、置換、キューブCB1の6面を構成するワークシートのセルの消失、複製、拡大、縮小、変形、置換、ワークシートの縦横に格子状に配置された複数のセルの消失、複製、拡大、縮小、変形、置換等が含まれる。尚、置換とは、一のキューブやセル、シートが、他のキューブやセル、シートに置換されることをいう。
仮想空間データ24dは、第2の実施例では、3次元オブジェクトとして表示されるキューブCB1(キューブの6面を構成するワークシート)の状態に関する情報を保持する。キューブCB1(キューブの6面を構成するワークシート)の状態には、例えば、位置、姿勢、変形の状況等が含まれる。
表計算データ24eは、キューブCB1(キューブの6面を構成するワークシート)の構成情報、キューブCB1(キューブの6面を構成するワークシート)に保持されているデータ、表計算処理部28によりキューブCB1(キューブの6面を構成するワークシート)上で実行される各種処理に関するデータを記憶する。
以下、第2の実施例に係る制御プログラム24aが提供する機能に基づく種々の制御について説明する。第2の実施例に係る制御プログラム24aが提供する機能に基づく種々の制御には、キューブCB1(キューブの6面を構成するワークシート)に対して検出される操作に応じて前記ルールにより決定される表計算に関わる処理の制御、及びキューブCB1(キューブの6面を構成するワークシート)に対して検出される操作に応じてワークシートの表示態様を変化させる処理の制御が含まれる。
図40は、キューブCB1に対して行われる操作の例を示す図である。図41は、キューブCB1の表示態様の例を示す図である。
例えば、表示装置1は、図41に示すように、キューブCB1を、例えば、Y軸を中心として回転させる操作が行われると、図41に示すように、キューブCB1の表示面(ワークシート)を変更する。例えば、表示装置1は、Y軸を中心としてキューブCB1を回転させるための利用者の指の動きを予め記憶しておき、利用者の指に動きに応じて、キューブCB1を回転させて、キューブCB1の表示面(ワークシート)を変更する。
表示装置1は、例えば、図41のステップS91に示すように、キューブCB1のある1面を構成するワークシートWS1が利用者の正面を向くように表示されている状態で、Y軸を中心として90度左回りに回転する操作が行われると、図41のステップS92に示すように、キューブCB1の他の1面を構成するワークシートWS2が利用者の正面を向くように表示する。表示装置1は、例えば、図41のステップS91に示すように、キューブCB1のある1面を構成するワークシートWS1が利用者の正面を向くように表示されている状態で、Y軸を中心として45度左回りに回転する操作が行われると、図41のステップS93に示すように、キューブCB1のある1面を構成するワークシートWS1と、キューブCB1の他の1面を構成するワークシートWS2とが半分ずつ利用者の正面を向くように表示する。
図41のステップS93に示す場合、表示装置1は、図39に示すルールに特に記載されてはいないが、ワークシートWS1及びワークシートWS2について処理を有効な状態に切り替えるともに、表計算データ24eにその旨を記録してもよい。
図42は、キューブCB1に対して行われる操作の例を示す図である。図43は、キューブCB1にて表計算に関わる処理が実行される箇所の例を示す図である。図42及び図43の説明の前提として、キューブCB1の各面を構成するワークシートが直交する部分(別々のワークシートのセルが隣り合う部分)において、それぞれのワークシートに配置されたセルに入力されているデータを参照して演算が行われるように数式が定義されているものとする。
表示装置1は、図42に示すように、利用者の手H1のひらで、キューブCB1を構成する面のうち、ワークシートWS1で構成される面を、Z軸方向(+)に移動させる操作を検出すると、図43に示すように、操作された面がそのまま平行したかのように表示させる。表示装置1は、利用者の手H1がZ軸方向(+)に移動する距離に応じて、ワークシートWS1で構成される面を移動させる。
同時に、表示装置1は、図39に示すルールNo.1に基づいて、表計算に関わる処理を実行する。すなわち、表示装置1は、検出部(例えば、検出処理部25および表示オブジェクト制御部26)によってキューブCB1のワークシートWS1に対して検出される操作に応じて、ワークシートWS1と、ワークシートWS2とが角度(90度)を形成する位置に隣接している、ワークシートWS1に配置されているセルに入力されているデータとワークシートWS2に配置されているセルに入力されているデータとを参照する演算処理を実行する。同様に、表示装置1は、ワークシートWS1と、ワークシートWS5とが角度(90度)を形成する位置に隣接している、ワークシートWS1に配置されているセルに入力されているデータとワークシートWS5に配置されているセルに入力されているデータとを参照する演算処理を実行する。同様に、表示装置1は、ワークシートWS1と、ワークシートWS4とが角度(90度)を形成する位置に隣接している、ワークシートWS1に配置されているセルに入力されているデータとワークシートWS4に配置されているセルに入力されているデータとを参照する演算処理を実行する。同様に、表示装置1は、ワークシートWS1と、ワークシートWS6とが角度(90度)を形成する位置に隣接している、ワークシートWS1に配置されているセルに入力されているデータとワークシートWS6に配置されているセルに入力されているデータとを参照する演算処理を実行する。
図42に示す操作によって、図43に示すように、例えば、キューブCB1を構成する面のうち、ワークシートWS1で構成される面とワークシートWS2で構成される面とが交わる面OP1、ワークシートWS1で構成される面とワークシートWS5で構成される面とが交わる面OP2、ワークシートWS1で構成される面とワークシートWS4で構成される面とが交わる面OP3、ワークシートWS1で構成される面とワークシートWS6で構成される面とが交わる面OP4が、図42に示す場合から変更されるので、表示装置1は、改めて演算を実行し、表計算データ24eに記憶されている演算結果を更新する。
表示装置1は、例えば、図42に示す操作が行われる前、すなわち、ワークシートWS1と、ワークシートWS2、WS5、WS4、WS6とが交わる面が変更される前であっても、同様に、ワークシート間で隣接するセルを参照する演算処理を実行することができる。
図44は、ワークシートの構成例を示す図である。図45は、立体的なセルの例を示す図である。
図44に示すように、キューブCB1の各面を構成するワークシートの各セルを立方体状のオブジェクト(以下、セルキューブと表記する)で構成してもよい。図44に示す場合、ワークシートWS1は、セルキューブCC1を構成する面のうち、例えば、利用者側を向く面SF1と、この面に並行な面BF1とを表計算に関わる処理が有効な状態としてもよい。表示装置1は、面BF1を表示する場合、面SF1の透過処理を行うことにより表示してもよいし、キューブCB1への手の挿入が行われた場合に表示するようにしてもよい。あるいは、表示装置1は、セルキューブCC1を摘み、Y軸を中心として回転させる操作を検出した場合には、面SF1と、面BF1とが切り替えられたかのように表示してもよい。
図46は、キューブCB1内にグラフの表示する例を示す図である。図46に示すように、表示装置1は、キューブCB1の内部に、ワークシート上で実行された演算結果に対応するグラフGR1を表示してもよい。表示装置1は、表計算データ24eに記憶されている演算結果のデータに基づいて、キューブCB1の内部に表示させるグラフを作成する。
図47は、キューブCB1の列又は行の回転の概念を示す図である。図47には、キューブCB1の列又は行の回転の概念を説明するために、キューブCB1の各面を構成するワークシートに配置されるセルキューブの数、セルキューブがなす列数および行数を簡略化して、3列×3行で構成されるキューブを示したものである。例えば、表示装置1は、セルキューブCCxを含む9つのセルキューブを一塊として、回転軸Pyを中心に回転させる操作(矢印38−1の方向に回転させる操作)を検出した場合には、9つのセルキューブを1行ひと塊として回転されているかのように表示させる。同様に、表示装置1は、回転軸Pxを中心に回転させる操作(矢印38−2の方向に回転させる操作)を検出した場合には、9つのセルキューブを1列ひと塊として回転されているかのように表示させる。
このとき、表示装置1は、図46に示すグラフが、キューブCB1の1面を構成するワークシートWS1のセルデータに基づく演算結果を参照している場合には、図39に示すルールNo.2に基づいて、表示装置1は、表計算データ24eに記憶されている演算結果及びグラフを更新する。表示装置1は、図44に示すグラフに更新を反映させる。
図48は、キューブCB1の分割の概念を示す図である。表示装置1は、例えば、キューブCB1を手で割るような操作を検出した場合には、図48に示すように、キューブCB1が、キューブCB2とキューブCB3とに分割されたかのように表示してもよい。例えば、表示装置1は、Z軸方向(+)に移動する利用者の手H1のひらが、キューブCB1の内部をZ軸方向(+)に縦断する箇所を検出し、該当箇所からキューブCB1を分割する。キューブCB1が分割されたかのように表示させるための操作は、キューブCB1を手で割るような操作には限定されず、任意の操作であってよい。
同時に、表示装置1は、図39に示すルールNo.3に基づいて、表計算データ24eに記憶されているデータを更新する。すなわち、表示装置1は、キューブの分割に応じてワークシートの構成情報(ワークシートの数、ワークシートが有するセルの数、行数又は列数など)を更新する。
図49は、キューブCB1を構成するワークシート上のセルキューブの選択の概念を示す図である。表示装置1は、例えば、キューブCB1のある1面を構成するワークシートWS1と、キューブCB1の他の1面を構成するワークシートWS2とが半分ずつ利用者の正面を向くように表示されている場合(例えば、図41のステップS93参照)において、ワークシートWS1のセルキューブCC1と、ワークシートWS2のセルキューブCC2とを、同時に選択することを可能とする。
そして、表示装置1は、例えば、セルキューブCC1とセルキューブCC2とを摘んで、X軸方向に衝突させるように動かす操作を検出すると、セルキューブCC1とセルキューブCC2とが衝突するタイミングで双方のセルキューブを消失させる。そして、セルを消失させるタイミングにあわせて、表示装置1は、予め演算が定義されていたワークシートの所定のセルキューブなどに、演算結果を表示させる。セルの演算は、上記セルキューブの表示態様の制御と並列に実行されているものとする。
同時に、表示装置1は、図39に示すルールNo.4に基づいて、表計算データ24eに記憶されているデータを更新する。なお、表示装置1は、図39に示すルールNo.4の検出操作にある「セル」を「セルキューブ」に自動的に読み替えて、処理を実行するものとする。すなわち、表示装置1は、セルの数値データ同士を乗算し、乗算の結果で更新する。
図50は、キューブCB1を押しつぶす概念を示す図である。表示装置1は、図50のステップS101に示すように、キューブCB1の1面を構成するワークシートWS5の側から、Y軸方向(−)に押しつぶす操作を検出すると、図50のステップS102に示すように、キューブCB1が押しつぶされたかのように、押しつぶす操作が行われた側とは反対にある9つのセルキューブを消失させる。表示装置1は、利用者の手H1のひらのY軸方向(−)の移動量に応じて、消滅させるセルキューブの量を調整してもよい。
同時に、表示装置1は、図39に示すルールNo.6に基づいて、表計算データ24eに記憶されているデータを更新する。すなわち、表示装置1は、消失させるセルキューブに対応するワークシートのデータを消去する。図50に示す例では、ワークシートWS1〜WS4のセルデータの一部、及びワークシートWS6のデータが完全に消去されることになる。
図51は、キューブCB1の1列を消失させる概念を示す図である。図51に示すように、表示装置1は、キューブCB1の1面を構成するワークシートWS1のセルキューブCC1をZ軸方向(+)に押す操作を検出すると、セルキューブCC1を含むワークシートWS1の列L1を消失させる。例えば、表示装置1は、利用者の手H1とセルキューブCC1とが接触した状態で一定時間以上経過した場合には、セルキューブCC1が選択されたものと判定し、セルキューブCC1を含む列L1を消滅対象として確定させる。このとき、表示装置1は、列自体を消失させるか、列を構成するセルに記入されているデータのみを消去するかを、検出される操作に応じて区別してもよい。あるいは、表示装置1は、列の消失を、ワークシートWS1に対してのみ実行し、他のワークシートに影響を与えないようにしてもよい。この場合、表示装置1は、消去された列に代わる新たな列を自動生成する。
同時に、表示装置1は、図39に示すルールNo.7に基づいて、表計算データ24eに記憶されているデータを更新する。すなわち、表示装置1は、利用者の手H1により押されるセルを含む列又は行のセルを削除する。
図52は、キューブCB1からのセルキューブの分離の概念を示す図である。図52に示すように、表示装置1は、キューブCB1の1面を構成するワークシートに含まれるセルキューブCCxを摘んで、引っ張る操作を検出すると、セルキューブCCxがキューブCB1から分離されたかのように表示する。続いて、表示装置1は、例えば、分離されたかのように表示したセルキューブCCxを、他のワークシートに衝突させる操作を検出すると、セルキューブCCxのデータがコピーされたかのように、セルキューブCCxのデータを、セルキューブCCxが衝突されたワークシートに表示させる。
同時に、表示装置1は、図39に示すルールNo.8に基づいて、表計算データ24eに記憶されているデータを更新する。すなわち、表示装置1は、セルが分離されたワークシートのデータ、およびセルが衝突したワークシートのデータを更新する。
そのほか、表示装置1は、セルに記入されているデータを、表示上のセルの面積で表示仕切れない場合に、例えば、利用者の指でセルの表面を滑らせるような操作に応じて、セルに記入されているデータをスクロール表示してもよい。
あるいは、表示装置1は、利用者の操作に応じて、キューブCB1が任意の軸を中心として回転された場合であっても、利用者の正面に見えるワークシートに記入されているデータ(文字、数字など)の上下方向が、利用者に違和感を与えないように自動的に合わせて表示するようにしてもよい。
図53は、第2の実施例に係る処理手順を示すフローチャートである。図53に示す処理手順は、制御部22が、制御プログラム24aを実行することによって実現される。
図53に示すように、制御部22は、ステップSJ01として、ワークシートを6面に有するキューブCB1を合成表示する。
続いて、制御部22は、ステップSJ02として、ワークシートに対する操作が検出されたかを判定する。制御部22は、判定の結果、ワークシートに対する操作が検出された場合には(ステップSJ02,Yes)、ステップSJ03として、検出された操作に応じて処理を実行する。例えば、ステップSJ03において実行される処理には、キューブCB1(キューブの6面を構成するワークシート)に対して検出される操作に応じて前記ルールにより決定される表計算に関わる処理の制御、及びキューブCB1(キューブの6面を構成するワークシート)に対して検出される操作に応じてワークシートの表示態様を変化させる処理の制御が含まれる(図40〜図52など参照)。
続いて、制御部22は、ステップSJ04として、操作終了が検出されたかを判定する。操作終了は、例えば、操作部13に対する所定の操作が行われた場合に検出される。操作終了が検出された場合(ステップSJ04,Yes)、制御部22は、図53に示す処理手順を終了させる。操作終了が検出されない場合(ステップSJ04,No)、制御部22は、ステップSJ02以降を再実行する。
ステップSJ02において、制御部22は、判定の結果、ワークシートに対する操作が検出されない場合には(ステップSJ02,No)、上記ステップSJ04の処理手順に進む。
上記の各実施例で示した本発明の態様は、本発明の要旨を逸脱しない範囲で任意に変更することができる。また、上記の各実施例を適宜組み合わせてもよい。例えば、上記の実施例で示した制御プログラムは、複数のモジュールに分割されていてもよいし、他のプログラムと統合されていてもよい。
上記の実施例では、3次元オブジェクトを利用者自身が操作する例について説明したが、表示装置は、撮影部の撮影範囲における他人、動物、機械等の動きを3次元オブジェクトとして検出してもよい。また、表示装置は、仮想空間を他の装置と共有してもよい。すなわち、表示装置は、仮想空間内の3次元オブジェクトを当該表示装置の利用者以外の人が他の装置を介して見て操作できるように構成されてもよい。
上記の実施例では、表示装置が単独で3次元オブジェクトに対する操作を検出することとしたが、表示装置がサーバ装置と協業して3次元オブジェクトに対する操作を検出することとしてもよい。この場合、表示装置は、撮影部が撮影した画像または検出部の検出した情報をサーバ装置へ逐次送信し、サーバ装置が操作を検出して検出結果を表示装置へ通知する。このような構成とすることにより、表示装置の負荷を低減することができる。
上記の実施例で説明した表示装置により実行される各種制御は、スマートフォン、タブレットなどの携帯型の装置で実行することもできる。