以下、本発明につき図面を参照しつつ詳細に説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。以下においては、表示機器の一例として携帯電話端末について説明するが、本発明の適用対象は携帯電話端末に限定されるものではなく、例えば、PHS(Personal Handyphone System)、PDA、ポータブルナビゲーション装置、ノートパソコン、ゲーム機等に対しても本発明は適用できる。
まず、図1から図3を参照しながら、第1の実施例に係る携帯電話端末(表示機器)1の外観について説明する。図1は、携帯電話端末1の外観を示す正面図である。図2は、開状態の携帯電話端末1の側面図である。図3は、閉状態の携帯電話端末1の側面図である。
図1から図3に示すように、携帯電話端末1は、第1筐体1Aと、第2筐体1Bと、ヒンジ部1Cとを有する。第1筐体1Aは、面の1つにタッチパネル32と、撮影部40aと、撮影部40bとを有する。第2筐体1Bは、面の1つにタッチパネル34と、撮影部42aと、撮影部42bとを有する。ヒンジ部1Cは、第1筐体1Aと第2筐体1Bとを相対的に回動可能に接続する。
図1および図2に示す開状態では、第1筐体1Aが有するタッチパネル32と、第2筐体1Bが有するタッチパネル34とが、ほぼ連続する平坦な平面を形成する。携帯電話端末1は、図1および図2に示す開状態から、第1筐体1Aがヒンジ部1Cを回転軸としてRの方向へ約180度回動することにより、図3に示す閉状態へ変形する。閉状態において、タッチパネル32およびタッチパネル34は、外部からは見えなくなる。
閉状態は、利用者が携帯電話端末1を持ち運ぶために適した形態である。開状態は、利用者が携帯電話端末1を持ち利用するために適した形態である。携帯電話端末1は、開状態と閉状態の中間的な状態、例えば、第1筐体1Aが第2筐体1Bとほぼ垂直な状態でも利用されることがある。
次に、図4を参照しながら、携帯電話端末1の機能的な構成について説明する。図4は、携帯電話端末1の機能的な構成を示すブロック図である。図4に示すように、携帯電話端末1は、操作部13と、マイク15と、レシーバ16と、制御部22と、記憶部24と、通信部26と、音声処理部30と、タッチパネル32と、タッチパネル34と、撮影部40aと、撮影部40bと、撮影部42aと、撮影部42bとを有する。
操作部13は、物理的なボタンを有し、押下されたボタンに対応する信号を制御部22へ出力する。なお、図1に示す例では、操作部13はボタンを1つしか有していないが、操作部13は複数のボタンを有していてもよい。また、図1に示す例では、操作部13は、第2筐体1Bのタッチパネル34が設けられている面に設けられているが、操作部13は、どちらの筐体のどの面に設けられていてもよい。
マイク15は、外部の音声を取得する。レシーバ16は、通話時に通話相手の音声を出力する。音声処理部30は、マイク15から入力される音声をデジタル信号化して制御部22へ出力する。また、音声処理部30は、制御部22から入力されるデジタル信号を復号してレシーバ16へ出力する。
通信部26は、アンテナ26aを有し、基地局によって割り当てられるチャネルを介して、基地局との間にCDMA(Code Division Multiple Access)方式などによる無線信号回線を確立する。通信部26は、基地局との間に確立された無線信号回線を通じて、他の装置との間で電話通信および情報通信を行う。
タッチパネル32およびタッチパネル34は、文字、図形、画像等の各種の情報を表示するとともに、表示されたアイコン、ボタン、文字入力領域等の所定領域に対する入力操作を検出する。タッチパネル32は、表示部32aと、タッチセンサ32bとを重畳して構成される。タッチパネル34は、表示部34aと、タッチセンサ34bとを重畳して構成される。
表示部32aおよび表示部34aは、液晶ディスプレイ(Liquid Crystal Display)や有機EL(Organic Electro−Luminescence)パネル等の表示装置を備え、制御部22から入力される制御信号に従って各種の情報を表示する。タッチセンサ32bおよびタッチセンサ34bは、それぞれ、タッチパネル32およびタッチパネル34の表面に対して行われる入力操作を検出し、検出した入力操作に応じた信号を制御部22へ出力する。タッチセンサ32bおよびタッチセンサ32bが各種操作を検出する方式は、静電容量式、抵抗膜式、感圧式等の任意の方式でよい。
タッチパネル32およびタッチパネル34は、3次元オブジェクトを表示できる。3次元オブジェクトは、視差を利用して立体的に見えるように作成された画像や形状等の表示物である。タッチパネル32およびタッチパネル34は、3次元オブジェクトをタッチパネル32およびタッチパネル34よりも手前に飛び出しているように表示することができる。また、タッチパネル32およびタッチパネル34は、3次元オブジェクトをタッチパネル32およびタッチパネル34よりも奥に引っ込んでいるように表示することができる。なお、3次元オブジェクトを表示する方式は、眼鏡等の器具を用いて立体視を実現する方式であってもよいし、裸眼で立体視を実現する方式であってもよい。
タッチパネル32に表示される3次元オブジェクトと、タッチパネル34に表示される3次元オブジェクトは、関連づけられていることがある。関連づけの一例として、タッチパネル32に表示される3次元オブジェクトと、タッチパネル34に表示される3次元オブジェクトとが、連続する1つの3次元オブジェクトとして表示されるように制御されることがある。タッチパネル32およびタッチパネル34にまたがって3次元オブジェクトが表示される場合、タッチパネル32およびタッチパネル34は、3次元オブジェクトのうち、それぞれが表示すべき部分を分担して表示する。
関連づけの他の例として、タッチパネル32に表示される3次元オブジェクトと、タッチパネル34に表示される3次元オブジェクトとが、連動して変化するように制御されることがある。例えば、タッチパネル32に表示される3次元オブジェクトが変化する場合に、タッチパネル34に表示される他の3次元オブジェクトが連動して変化する場合がある。
撮影部40a、40b、42a、および42bは、CCD(Charge Coupled Device Image Sensor)やCMOS(Complementary Metal Oxide Semiconductor)等のイメージセンサを用いて電子的に画像を撮影する。そして、撮影部40a、40b、42a、および42bは、撮影した画像を信号に変換して制御部22へ出力する。撮影部40a、40b、42a、および42bは、3次元オブジェクトが立体的に表示される空間(以下、「視認空間」ということがある)において3次元オブジェクトを選択して操作する物体を検出する検出部としても機能する。
撮影部40aおよび撮影部40bは、主として第1筐体1A側の視認空間内に位置する物体を撮影する。撮影部42aおよび撮影部42bは、主として第2筐体1B側の視認空間内に位置する物体を撮影する。なお、撮影部40a、40b、42a、および42bは、視認空間内のどこに指等の物体が位置していても、少なくともいずれか1つがその物体を撮影することができるように画角や配置が設定されていることが好ましい。また、撮影部40a、40b、42a、および42bは、可視光の画像を取得する装置であってもよいし、赤外線等の不可視光の画像を取得する装置であってもよい。以下の説明では、撮影部40aおよび40bを、いずれかを特定することなく撮影部40と称することがある。また、撮影部42aおよび42bを、いずれかを特定することなく撮影部42と称することがある。
制御部22は、演算手段であるCPU(Central Processing Unit)と、記憶手段であるメモリとを備え、これらのハードウェア資源を用いてプログラムを実行することによって各種の機能を実現する。具体的には、制御部22は、記憶部24に記憶されているプログラムやデータを読み出してメモリに展開し、メモリに展開されたプログラムに含まれる命令をCPUに実行させる。そして、制御部22は、CPUによる命令の実行結果に応じて、メモリおよび記憶部24に対してデータの読み書きを行ったり、通信部26や表示部32a等の動作を制御したりする。CPUが命令を実行するに際しては、メモリに展開されているデータやタッチセンサ32b等から入力される信号がパラメータや判定条件の一部として利用される。
記憶部24は、フラッシュメモリ等の不揮発性を有する記憶装置からなり、各種のプログラムやデータを記憶する。記憶部24に記憶されるプログラムには、制御プログラム24aが含まれる。また、記憶部24に記憶されるデータには、オブジェクトデータ24bと、作用データ24cとが含まれる。なお、記憶部24は、メモリカード等の可搬の記憶媒体と、記憶媒体に対して読み書きを行う読み書き装置との組み合わせによって構成されてもよい。この場合、制御プログラム24a、オブジェクトデータ24b、作用データ24cは、記憶媒体に記憶されていてもよい。また、制御プログラム24a、オブジェクトデータ24b、作用データ24cは、通信部26による無線通信によってサーバ装置等の他の装置から取得することとしてもよい。
制御プログラム24aは、携帯電話端末1を稼働させるための各種制御に関する機能を提供する。制御プログラム24aが提供する機能には、タッチパネル32での3次元オブジェクトの表示を制御する機能や、タッチパネル32によって表示される3次元オブジェクトに対する利用者の操作を検出する機能が含まれる。
オブジェクトデータ24bは、3次元オブジェクトの形状や性質に関する情報を含む。オブジェクトデータ24bは、3次元オブジェクトを表示するために用いられる。作用データ24cは、表示されている3次元オブジェクトに対する操作が3次元オブジェクトにどのように作用するかに関する情報を含む。作用データ24cは、表示されている3次元オブジェクトに対する操作が検出された場合に3次元オブジェクトを変化させるために用いられる。ここでいう変化には、移動、回転、変形、消失等が含まれる。
次に、図5および図6を参照しながら、3次元オブジェクトの表示と、3次元オブジェクトに対する操作とについて説明する。図5は、3次元オブジェクトの表示と、3次元オブジェクトに対する操作とについて説明するための図である。図6は、オブジェクトデータ24bに格納される情報の一例を示す図である。
図5に示すように、タッチパネル32およびタッチパネル34が3次元オブジェクトを立体的に表示することができる視認空間50は、開状態の第1筐体1Aと第2筐体1Bとにまたがって形成される。図5に示す例では、開状態の第1筐体1Aと第2筐体1Bとの境界付近に3次元オブジェクトOB1が表示されている。3次元オブジェクトOB1は、関連づけられた2つの3次元オブジェクト、すなわち、タッチパネル32によって表示される第1のオブジェクトと、タッチパネル34によって表示される第2のオブジェクトとによって構成される。
3次元オブジェクトOB1は、オブジェクトデータ24bに基づいて表示される。図6に示すように、オブジェクトデータ24bには、種別、形状情報、色、透明度等を含む情報が3次元オブジェクト毎に格納される。種別は、3次元オブジェクトの物理的な性質を示す。種別は、例えば、「剛体」、「弾性体」等の値をとる。形状情報は、3次元オブジェクトの形状を示す情報である。形状情報は、例えば、3次元オブジェクトを構成する面の頂点座標の集合である。色は、3次元オブジェクトの表面の色である。透明度は、3次元オブジェクトが光を透過させる度合いである。なお、オブジェクトデータ24bは、複数の3次元オブジェクトに関する情報を保持することができる。
図5に示す例では、第1筐体1A側にいる利用者U1は、視認空間50内に手H1を移動させ、手H1で3次元オブジェクトOB1を操作しようとしている。携帯電話端末1は、撮影部40が撮影する画像に基づいて、第1筐体1A側の視認空間における手H1等の物体の位置および動作を検出する。そして、携帯電話端末1は、検出結果に基づいて、手H1等の物体によって3次元オブジェクトOB1に対する操作が行われたと判断した場合には、操作に応じて3次元オブジェクトOB1を変化させる。その場合、携帯電話端末1は、タッチパネル32によって表示される第1のオブジェクトと、タッチパネル34によって表示される第2のオブジェクトとを連動して変化させることによって、3次元オブジェクトOB1を変化させる。
また、図5に示す例では、第2筐体1B側にいる利用者U11は、視認空間50内に手H11を移動させ、手H11で3次元オブジェクトOB1を操作しようとしている。携帯電話端末1は、撮影部42が撮影する画像に基づいて、第2筐体1B側の視認空間における手H11等の物体の位置および動作を検出する。そして、携帯電話端末1は、検出結果に基づいて、手H11等の物体によって3次元オブジェクトOB1に対する操作が行われたと判断した場合には、操作に応じて3次元オブジェクトOB1を変化させる。その場合、携帯電話端末1は、タッチパネル32によって表示される第1のオブジェクトと、タッチパネル34によって表示される第2のオブジェクトとを連動して変化させることによって、3次元オブジェクトOB1を変化させる。
このように、携帯電話端末1は、視認空間50に表示されている3次元オブジェクトに対する操作を、第1筐体1A側と第2筐体1B側とで別々に検出する。このため、携帯電話端末1が検出された操作に応じて3次元オブジェクトOB1を変化させる場合に、第1筐体1A側で検出された操作と、第2筐体1B側で検出された操作とが競合することがある。競合は、例えば、関連づけられた3次元オブジェクトに対する操作が、第1筐体1A側と第2筐体1B側との両方で短時間の間に検出された場合に生じる。
携帯電話端末1は、操作が検出された時刻に基づいて競合を解消する。原則として、携帯電話端末1は、競合が生じた場合、より早く検出された方の操作を有効にして、より後に検出された方の操作を無視する。ただし、携帯電話端末1は、検出された時刻の差が閾値よりも小さい場合には、検出されたいずれの操作も無視する。すなわち、携帯電話端末1は、検出された時刻の差が閾値よりも小さい場合には、操作に応じて3次元オブジェクトOB1を変化させない。
ここで用いられる閾値は、例えば、利用者の手等の動作が3次元オブジェクトに対する操作であるか否かを判定するために要する期間に基づいて設定される。3次元オブジェクトに対する操作であるか否かの判定に要する時間は、利用者の手等の動作の複雑さに応じて変動する。検出された時刻の差が閾値よりも小さい場合にいずれの操作も無視することにより、後から実行された操作が誤って有効とされる可能性を低くすることができる。
次に、図7を参照しながら、操作の有効性を判定するための処理手順について説明する。図7は、操作の有効性を判定するための処理手順を示すフローチャートである。図7に示す処理手順は、撮影部40と撮影部42の少なくとも一方の撮影した画像に基づいて操作が検出されたこと等を契機として、制御部22が制御プログラム24aを実行することによって実現される。
図7に示すように、制御部22は、ステップS11として、操作の検出結果を取得する。そして、制御部22は、ステップS12として、オブジェクトに対する操作が競合しているかを判定する。操作が競合している場合(ステップS12,Yes)、制御部22は、ステップS13として、競合する操作の検出時刻の差が閾値よりも小さいかを判定する。
検出時刻の差が閾値よりも小さくない場合(ステップS13,No)、制御部22は、ステップS14として、早く検出された方の操作を有効とする。この場合、遅く検出された方の操作は無視される。検出時刻の差が閾値よりも小さい場合(ステップS13,Yes)、制御部22は、ステップS15として、両方の操作を無視する。
操作が競合していない場合(ステップS12,No)、制御部22は、ステップS16として、検出された操作を有効とする。
次に、図8から図10を参照しながら、操作の有効性の判定の応用例について説明する。図8は、棒取りゲームの一例を示す図である。棒取りゲームにおいて、携帯電話端末1は、タッチパネル32およびタッチパネル34に棒状の3次元オブジェクトOB2を表示させる。3次元オブジェクトOB2の一方の端部は、第1筐体1A側の視認空間に表示され、他方の端部は、第2筐体1B側の視認空間に表示される。
棒取りゲームでは、第1筐体1A側にいる第1の対戦者と第2筐体1B側にいる第2の対戦者とが、3次元オブジェクトOB2が表示されるのを待ち、表示された3次元オブジェクトOB2を先に掴むことを目指す。携帯電話端末1は、第1筐体1A側の視認空間で第1の対戦者の手H1が3次元オブジェクトOB2を掴む操作を、撮影部40によって撮影された画像に基づいて検出する。また、携帯電話端末1は、第2筐体1B側の視認空間で第2の対戦者の手H2が3次元オブジェクトOB2を掴む操作を、撮影部42によって撮影された画像に基づいて検出する。
そして、手H1が3次元オブジェクトOB2を掴む操作と、手H2が3次元オブジェクトOB2を掴む操作とが検出された時刻の差が閾値より小さい場合、携帯電話端末1は、いずれの操作も無効と判定する。この場合、3次元オブジェクトOB2は消去され、2人の対戦者は、3次元オブジェクトOB2が表示されるのを再び待つ。一方、検出時刻の差が閾値よりも小さくない場合、携帯電話端末1は、先に3次元オブジェクトOB2を掴んだ対戦者を勝者と判定する。
図9は、シーソーゲームの一例を示す図である。シーソーゲームにおいて、携帯電話端末1は、タッチパネル32およびタッチパネル34にシーソーの形状をもつ3次元オブジェクトOB3を表示させる。3次元オブジェクトOB3の可動部の一方の端部は、第1筐体1A側の視認空間に表示され、他方の端部は、第2筐体1B側の視認空間に表示される。
シーソーゲームでは、3次元オブジェクトOB3の可動部の第1筐体1A側の端部を押し下げる操作と、第2筐体1B側の端部を押し下げる操作とが交互に行われる。携帯電話端末1は、操作に応じて、押し下げられた方の端部が下がり、他方の端部が持ち上げられるように3次元オブジェクトOB3を表示させる。第1筐体1A側の端部を押し下げる操作と、第2筐体1B側の端部を押し下げる操作とが適切な間隔で行われることにより、3次元オブジェクトOB3の端部は、リズミカルに上下運動を繰り返す。
携帯電話端末1は、第1筐体1A側の視認空間で端部を押し下げる操作を、撮影部40によって撮影された画像に基づいて検出する。また、携帯電話端末1は、第2筐体1B側の視認空間で端部を押し下げる操作を、撮影部42によって撮影された画像に基づいて検出する。そして、第1筐体1A側の視認空間で端部を押し下げる操作と、第2筐体1B側の視認空間で端部を押し下げる操作とが検出された時刻の差が閾値より小さい場合、携帯電話端末1は、いずれの操作も無効と判定する。この場合、携帯電話端末1は、3次元オブジェクトOB3の動きを停止させる。
シーソーゲームでは、3次元オブジェクトOB3の可動部の2つの端部を押し下げる操作を1人が行ってもよいし、それぞれの端部で別の者が行ってもよい。また、携帯電話端末1は、3次元オブジェクトOB3の端部の上下運動が継続する時間の長さに応じて得点を計上してもよいし、所定時間内に3次元オブジェクトOB3の端部が上下した回数に応じて得点を計上してもよい。
図10は、もぐらたたきゲームの一例を示す図である。もぐらたたきゲームにおいて、携帯電話端末1は、タッチパネル32およびタッチパネル34に対応付けられた複数の3次元オブジェクトを表示させる。タッチパネル32に表示される3次元オブジェクトOB11aは、タッチパネル34に表示される3次元オブジェクトOB11bと対応付けられる。同様に、タッチパネル32に表示される3次元オブジェクトOB12a、OB13a、OB14aおよびOB15aは、それぞれ、タッチパネル34に表示される3次元オブジェクトOB12b、OB13b、OB14bおよびOB15bと対応付けられる。
携帯電話端末1は、対応付けられた3次元オブジェクトの一方を押し下げる操作が検出されると、押し下げられた3次元オブジェクトの高さを下げ、他方の3次元オブジェクトの高さを上げる。このような3次元オブジェクトの連動を基礎として、もぐらたたきゲームでは、第1筐体1A側にいる第1の対戦者と第2筐体1B側にいる第2の対戦者とが、自分の側の3次元オブジェクトが低くなるように争う。
携帯電話端末1は、第1筐体1A側の視認空間で3次元オブジェクトを押し下げる操作を、撮影部40によって撮影された画像に基づいて検出する。また、携帯電話端末1は、第2筐体1B側の視認空間で3次元オブジェクトを押し下げる操作を、撮影部42によって撮影された画像に基づいて検出する。
そして、第1筐体1A側の視認空間で3次元オブジェクトを押し下げる操作と、第2筐体1B側の視認空間で対応する3次元オブジェクトを押し下げる操作とが検出された時刻の差が閾値より小さい場合、携帯電話端末1は、いずれの操作も無効と判定する。この場合、一方の3次元オブジェクトは高さが低い状態を維持し、他方の3次元オブジェクトは高さが高い状態を維持する。すなわち、対戦者は、既に低くなっている3次元オブジェクトを押し下げる操作を適切なタイミングで行うことにより、他方の対戦者が対応する3次元オブジェクトの高さを下げることを妨害することができる。
もぐらたたきゲームでは、携帯電話端末1は、例えば、それぞれの3次元オブジェクトの高さが低くなっている時間を第1筐体1A側と第2筐体1B側とで別々に積算することによって勝者を決定してもよい。また、携帯電話端末1は、自分の側の全ての3次元オブジェクトの高さが低くなった対戦者を勝者としてもよい。
次に、3次元オブジェクトに対する操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明する。以下では、第1筐体1A側での操作を検出する場合について説明するが、第2筐体1B側での操作も同様にして検出される。第1筐体1A側で検出された操作と第2筐体1B側で検出された操作とが競合する場合、上述したように操作の有効性が判定される。また、携帯電話端末1は、第1筐体1A側で検出された操作に応じて3次元オブジェクトを変化させる場合に、関連づけられた他の3次元オブジェクトを連動して変化させることがある。
図11および図12は、3次元オブジェクトを押す操作の検出と、検出された操作に応じた3次元オブジェクトの変化について説明するための図である。図11に示すステップSA1では、タッチパネル32によって、第1筐体1A側の視認空間に、3次元オブジェクトOB1が立体的に表示されている。3次元オブジェクトOB1は、例えば、ボールを模したオブジェクトである。また、ステップSA1では、タッチパネル32によって、3次元オブジェクトOB1を支持する底面B1が表示されている。
ステップSA2では、利用者が指F1を3次元オブジェクトOB1と接触する位置に置き、そのまま静止させている。携帯電話端末1は、視認空間内で現実の物体が検出され、かつ、その物体が3次元オブジェクトOB1と接触する状態が所定時間以上継続した場合、3次元オブジェクトOB1が操作対象として選択されたと判定する。そして、携帯電話端末1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として選択されたことを利用者に通知する。
物体が3次元オブジェクトOB1と接触しているかの判定は、視認空間における物体の現実の位置と、視認空間における3次元オブジェクトOB1の形状および計算上の位置とに基づいて行われる。3次元オブジェクトOB1の形状は、オブジェクトデータ24bにおいて定義される。
物体の位置は、撮影部40または撮影部42が撮影する画像に基づいて算出される。物体の位置の算出は、予め登録されている物体の大きさと画像中の物体の大きさおよび位置とに基づいて行ってもよい。また、物体の位置の算出は、例えば、撮影部40aが撮影した画像における物体の大きさおよび位置と撮影部40bが撮影した画像における物体の大きさおよび位置とを照合するというように、異なる撮影部によって撮影された複数の画像を解析して行ってもよい。なお、指等の物体の検出は、周知の技術を用いて実現してよい。また、指が物体の場合、指のつま先の位置を物体の位置として処理することが好ましい。
視認空間における3次元オブジェクトOB1の計算上の位置は、タッチパネル32の表示面上での3次元オブジェクトOB1の位置と、視認空間内での3次元オブジェクトOB1の浮き上がり量とに基づいて算出される。視認空間内での3次元オブジェクトOB1の浮き上がり量は、表示時に決定された値であってもよいし、3次元オブジェクトOB1を立体的に表示するために用いられる右目用の画像と左目用の画像における3次元オブジェクトOB1の位置の差から算出された値であってもよい。
また、操作対象として選択されたことの通知は、例えば、3次元オブジェクトOB1の全体の色を変更することや、3次元オブジェクトOB1の表面のうち、物体と接触している位置の近傍の色を変更することによって実現される。このような視覚的な通知に代えて、あるいは、このような視覚的な通知に加えて、音や振動による通知を行ってもよい。
このように、携帯電話端末1は、指等の現実の物体が3次元オブジェクトOB1と接触する状態が所定時間以上継続して検出された場合に、3次元オブジェクトOB1が操作対象として選択されたと判定する。接触状態が所定時間以上継続して検出されることを条件として付加することにより、他の3次元オブジェクトを操作するために指を移動させる過程で、意図しない3次元オブジェクトが操作対象として選択されることを抑止できる。
3次元オブジェクトOB1が操作対象として選択された後、ステップSA3に示すように、利用者が、3次元オブジェクトOB1を押すように、指F1を3次元オブジェクトOB1の内側に侵入させたものとする。携帯電話端末1は、操作対象として選択された3次元オブジェクト内に物体を侵入させる操作が検出された場合、操作に応じて3次元オブジェクトを変化させる。3次元オブジェクトをどのように変化させるかは、オブジェクトデータ24bにおいて定義されている3次元オブジェクトの種別と、作用データ24cにおいてその種別と対応付けて定義されている変化のルールとによって決定される。
例えば、オブジェクトデータ24bにおいて3次元オブジェクトOB1が弾性体であると定義され、作用データ24cにおいて弾性体は押された場合に押された量に応じて押された方向に変形することが定義されていたものとする。この場合、携帯電話端末1は、ステップSA4に示すように、指F1が侵入した部分が押されて凹んだように3次元オブジェクトOB1を変化させる。
また、オブジェクトデータ24bにおいて3次元オブジェクトOB1が剛体であると定義され、作用データ24cにおいて剛体は押された場合に押された量に応じて押された方向に移動することが定義されていたものとする。この場合、携帯電話端末1は、図12のステップSA5に示すように、指F1に押されたように3次元オブジェクトOB1を指F1の進行方向へ移動させる。なお、図12のステップSA5では、3次元オブジェクトOB1は、底面B1に支持されているため、剛体によって印加される力の底面B1と水平方向の成分に従って移動している。
このように、3次元オブジェクトOB1を押す操作が検出された場合に、オブジェクトデータ24bおよび作用データ24cに基づいて3次元オブジェクトOB1を変化させることにより、3次元オブジェクトOB1を操作に応じて様々に変化させることができる。押すという操作は、現実の世界の様々な場面で利用されている操作であり、3次元オブジェクトOB1を押す操作を検出して対応する処理を実行することにより、直感的で利便性の高い操作性を実現することができる。
なお、3次元オブジェクトを操作するために用いられる物体は、指に限定されず、手、足、棒、器具等であってもよい。また、押す操作に応じて3次元オブジェクトを変化させる態様は、現実の物理法則に則していてもよいし、現実ではあり得ないものであってもよい。
また、携帯電話端末1は、3次元オブジェクトが押される方向がタッチパネル32の表示面と平行でない場合、すなわち、検出された物体の移動方向がタッチパネル32の表示面または表示面と水平な平面と交わる場合にも操作に応じて3次元オブジェクトを変化させる。このように、3次元オブジェクトを押す操作を立体的に判定することにより、3次元オブジェクトに対して多様な操作を行うことが可能になる。なお、3次元オブジェクトを押す操作を立体的に判定するためには、障害物が死角を作らないように、複数の撮影部を用意して異なる方向から指F1等を撮影することが望ましい。
次に、図13から図18を参照しながら、図4に示した作用データ24cについてさらに詳しく説明する。図13から図18は、作用データ24cに格納される情報の一例を示す図である。
作用データ24cには、押す操作が検出された場合の変化に関する情報が3次元オブジェクトの種別毎に格納される。図13に示すように、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次元オブジェクトは、例えば、振り子、ボクシングのサンドバック、風車である。
また、図14に示すように、3次元オブジェクトの種別が「弾性体」の場合、素材、変化量の制限の有無、押される速度に応じて、押す操作が検出された場合の変化が異なる。なお、ここでいう素材は、3次元オブジェクトの想定上の素材であり、オブジェクトデータ24bにおいて定義される。
3次元オブジェクトの素材がゴム系であり、変化量に制限がなく、押される速度が遅い場合、3次元オブジェクトは、押された方向に押された量に応じて変形し、押される状態から解放されると元の形状に戻るように表示される。また、3次元オブジェクトの素材がゴム系であり、変化量に制限がなく、押される速度が速い場合、3次元オブジェクトは、押された方向に押された量に応じて変形し、その後、はじかれて、元の形状に戻りながら押された方向へ移動するように表示される。このように表示される3次元オブジェクトは、例えば、ゴムボール、消しゴムである。
3次元オブジェクトの素材がゴム系であり、変化量に制限がある場合、3次元オブジェクトは、押された方向に押された量に応じて変形可能範囲まで変形し、その後も押す操作が検出されると、元の形状に戻りながら押された方向へ移動するように表示される。このように表示される3次元オブジェクトは、例えば、ゴムボール、消しゴムである。
3次元オブジェクトの素材が金属系の場合、3次元オブジェクトは、押された方向に押された量に応じて変形可能範囲まで変形し、押される状態から解放されると元の形状に戻ったり変形したりを繰り返す(振動する)ように表示される。なお、変形可能方向以外の方向に押された場合、3次元オブジェクトは、剛体と同様に移動する。このように表示される3次元オブジェクトは、例えば、板ばね、弦巻ばねである。
また、図15に示すように、3次元オブジェクトの種別が「塑性体」の場合、3次元オブジェクトは、押された箇所がへこんで全体形状が変化するように表示される。このように表示される3次元オブジェクトは、例えば、粘土である。
また、図16に示すように、3次元オブジェクトの種別が「液体」の場合、押される速度に応じて、押す操作が検出された場合の変化が異なる。押される速度が遅い場合、押す物体が3次元オブジェクト、すなわち、液体につかるように表示される。押される速度が中程度の場合、押す物体が液体につかり、液体に波紋が拡がるように表示される。押される速度が速い場合、押す物体が液体につかり、液体から水しぶきがあがるように表示される。このように表示される3次元オブジェクトは、例えば、コップに入った水である。
また、図17に示すように、3次元オブジェクトの種別が「気体」の場合、押される速度に応じて、押す操作が検出された場合の変化が異なる。押される速度が遅い場合、3次元オブジェクト、すなわち、気体が押す物体によってさえぎられてその周囲を漂うように表示される。押される速度が中程度の場合、気体が押す物体によって散乱されるように表示される。押される速度が速い場合、押す物体の移動方向の後ろ側で乱流により気体に渦が生まれるように表示される。このように表示される3次元オブジェクトは、例えば、煙である。
また、図18に示すように、3次元オブジェクトの種別が「集合体」の場合、集合体の要素の結合状況に応じて、押す操作が検出された場合の変化が異なる。集合体の要素の結合がない場合、3次元オブジェクトは、押された箇所がへこんで集合体としての全体形状が変化するように表示される。このように表示される3次元オブジェクトは、例えば、砂、砂糖である。
集合体の要素の結合がある場合、3次元オブジェクトは、押された箇所がへこんで集合体としての全体形状が変化するように表示される。さらに、押された箇所以外の要素が、押された箇所の要素に引っ張られて移動するように表示される。このように表示される3次元オブジェクトは、例えば、鎖である。
集合体の要素の結合はないが押す物体との間に引力または斥力が働く場合、3次元オブジェクトは、押す物体と接しなくても移動するように表示される。押す物体との間に引力が働く場合、3次元オブジェクトは、押す物体と接しなくても、押す物体と所定距離以内に入ると押す物体に引き寄せられる。また、押す物体との間に斥力が働く場合、3次元オブジェクトは、押す物体と接しなくても、押す物体と所定距離以内に入ると押す物体から遠ざかる。このように表示される3次元オブジェクトと押す物体の組み合わせは、例えば、鉄粉と磁石の組み合わせである。このとき、例えば、指を磁石として扱ってもよい。
このように、オブジェクトデータ24bに格納された情報と作用データ24cに格納された情報とに基づいて3次元オブジェクトを変化させることにより、押す操作に応じて、3次元オブジェクトを多様に変化させることができる。なお、オブジェクトデータ24bおよび作用データ24cに格納される情報は、上記の例に限定されず、用途等に応じて適宜変更してよい。例えば、押す物体の種別および大きさや押す物体と3次元オブジェクトの接触面積の大きさに応じて、3次元オブジェクトの変化の仕方が切り替わるように設定してもよい。
次に、図19および図20を参照しながら、3次元オブジェクトを押す操作に関して携帯電話端末1が実行する処理手順について説明する。図19は、3次元オブジェクトを押す操作における接触検出処理の処理手順を示すフローチャートである。図19に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部22が制御プログラム24aを実行することによって実現される。
図19に示すように、制御部22は、まず、ステップS101として、オブジェクトデータ24bに基づいて3次元オブジェクトを立体的に表示する。オブジェクトデータ24bは、予め記憶部24に記憶されていてもよいし、通信部26による無線通信によってサーバ装置等の他の装置から取得してもよい。
続いて、制御部22は、ステップS102として、検出部、すなわち、撮影部40または撮影部42によって所定の物体が検出されたかを判定する。所定の物体は、例えば、利用者の指である。所定の物体が検出されない場合(ステップS102,No)、制御部22は、ステップS108として、操作終了が検出されたかを判定する。
操作終了は、例えば、操作部13に対する所定の操作が行われた場合に検出されてもよいし、タッチパネル32またはタッチパネル34に対する所定の操作が行われた場合に検出されてもよい。また、操作終了は、撮影部40または撮影部42で利用者の手による所定のジェスチャーが撮影された場合に検出されてもよい。操作終了が検出された場合(ステップS108,Yes)、制御部22は、接触検出処理を終了させる。操作終了が検出されない場合(ステップS108,No)、制御部22は、ステップS102以降を再実行する。
所定の物体が検出された場合(ステップS102,Yes)、制御部22は、ステップS103として、所定の物体の種別を判定する。所定の物体の種別は、例えば、撮影部40または撮影部42によって撮影された画像中の物体の大きさ、形状、色等に基づいて判定される。続いて、制御部22は、ステップS104として、所定の物体に接触している3次元オブジェクトを探す。
所定の物体に接触している3次元オブジェクトがない場合(ステップS105,No)、制御部22は、ステップS108として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS108,Yes)、制御部22は、接触検出処理を終了させる。操作終了が検出されない場合(ステップS108,No)、制御部22は、ステップS102以降を再実行する。
所定の物体に接触している3次元オブジェクトがみつかった場合(ステップS105,Yes)、制御部22は、ステップS106として、オブジェクトデータ24bに基づいて、所定の物体に接触している3次元オブジェクトの種別を判定する。そして、制御部22は、ステップS107として、後述する操作検出処理を実行する。その後、制御部22は、ステップS108として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS108,Yes)、制御部22は、接触検出処理を終了させる。操作終了が検出されない場合(ステップS108,No)、制御部22は、ステップS102以降を再実行する。
図20は、3次元オブジェクトを押す操作における操作検出処理の処理手順を示すフローチャートである。図20に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図20に示すように、制御部22は、まず、ステップS201として、所定の物体と3次元オブジェクトの接触時間を取得する。そして、制御部22は、ステップS202として、所定の物体が3次元オブジェクトの内部に移動したかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップS202,No)、制御部22は、ステップS201以降を再実行する。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップS202,Yes)、制御部22は、ステップS203として、接触時間が所定時間以上であるかを判定する。接触時間が所定時間よりも短い場合(ステップS203,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
接触時間が所定時間以上の場合(ステップS203,Yes)、制御部22は、ステップS204として、所定の物体の速度を算出する。そして、制御部22は、ステップS205として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップS206として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップS206,No)、制御部22は、ステップS204以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップS206,Yes)、制御部22は、ステップS207として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップS207,Yes)、制御部22は、ステップS208として、3次元オブジェクトを変化させ、その後、ステップS207以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップS207,No)、制御部22は、操作検出処理を終了させる。
図19および図20に示した処理手順に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS203で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。
3次元オブジェクトを押す操作の検出方式は、上記の方式に限定されない。図21は、3次元オブジェクトを押す操作の検出方式の第1の変形例について説明するための図である。図21に示すステップSB1では、利用者が指F1を3次元オブジェクトOB1と接触させ、ステップSB2では、利用者が指F1を3次元オブジェクトOB1の内側に侵入させている。
携帯電話端末1は、視認空間内で現実の物体が検出され、かつ、その物体が3次元オブジェクトOB1と接触した後に3次元オブジェクトOB1の内部へ移動する状態が所定時間以上継続した場合、3次元オブジェクトOB1が操作対象として選択されたと判定する。そして、携帯電話端末1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として選択されたことを利用者に通知する。さらに、携帯電話端末1は、ステップSB3に示すように、3次元オブジェクトOB1を、あたかもステップSB1の段階で既に押す操作の対象として選択されていたかのように、接触検出以降の指F1による操作に応じて変化させる。
このように、物体と3次元オブジェクトの接触を検出した後は、物体がその場に留まらなくても押す操作を検出可能にすることにより、利用者は、3次元オブジェクトを押す操作を迅速に開始することができる。また、接触後に物体が3次元オブジェクトOB1の内部へ移動する状態が所定時間以上継続することを条件として付加することにより、他の3次元オブジェクトを操作するために指を移動させる過程で、意図しない3次元オブジェクトが操作対象として選択されることを抑止できる。
図22は、3次元オブジェクトを押す操作の検出方式の第1の変形例における操作検出処理の処理手順を示すフローチャートである。図22に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。なお、第1の変形例における接触検出処理の処理手順は、図19に示した手順と同様である。
図22に示すように、制御部22は、まず、ステップS301として、所定の物体が3次元オブジェクトの内部に移動しているかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップS301,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップS301,Yes)、制御部22は、ステップS302として、接触検出からの経過時間が所定時間以上であるかを判定する。経過時間が所定時間よりも短い場合(ステップS302,No)、制御部22は、ステップS301以降を再実行する。
接触時間が所定時間以上の場合(ステップS302,Yes)、制御部22は、ステップS303として、所定の物体の速度を算出する。そして、制御部22は、ステップS304として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップS305として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップS305,No)、制御部22は、ステップS303以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップS305,Yes)、制御部22は、ステップS306として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップS306,Yes)、制御部22は、ステップS307として、3次元オブジェクトを変化させ、その後、ステップS306以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップS306,No)、制御部22は、操作検出処理を終了させる。
第1の変形例に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS302で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。
図23および図24は、3次元オブジェクトを押す操作の検出方式の第2の変形例について説明するための図である。図23に示すステップSC1では、タッチパネル32によって、視認空間中に、3次元オブジェクトOB1が立体的に表示されている。また、利用者は、指F1を3次元オブジェクトOB1と接触させている。
ここで、利用者が指F1を3次元オブジェクトOB1の内側に侵入させたものとする。携帯電話端末1は、3次元オブジェクトOB1に接触した物体が3次元オブジェクトOB1の内側に移動したことを検出すると、ステップSC2に示すように、その時点から、3次元オブジェクトOB1を指F1による操作に応じて変化させる。図23に示す例では、ステップSC2において、3次元オブジェクトOB1は、指F1の移動に合わせて移動を開始している。
そして、携帯電話端末1は、ステップSC3に示すように、指F1が3次元オブジェクトOB1の内側へ向けて移動することが所定時間以上継続した段階で、3次元オブジェクトOB1を操作対象として確定する。そして、携帯電話端末1は、3次元オブジェクトOB1の表示態様を変更する等して、3次元オブジェクトOB1が操作対象として確定したことを利用者に通知する。その後も、指F1の3次元オブジェクトOB1の内側への移動が検出される間、携帯電話端末1は、3次元オブジェクトOB1を変化させ続ける。
なお、図24のステップSC4に示すように、所定時間が経過する前に指F1の3次元オブジェクトOB1の内側への移動が検出されなくなった場合、携帯電話端末1は、それまでに加えた変化と逆の変化を3次元オブジェクトOB1に加える。その結果、3次元オブジェクトOB1は、ステップSC1の段階と同じ位置に同じ状態で表示される。逆の変化を3次元オブジェクトOB1に加える速度は、それまでに3次元オブジェクトOB1に変化が加えられた速度よりも速くてもよい。すなわち、高速に逆再生しているかのように3次元オブジェクトOB1を逆変化させてもよい。
このように、3次元オブジェクトの内側への物体の侵入が検出された段階から3次元オブジェクトに変化を加え始めることにより、利用者は、3次元オブジェクトが選択されつつあることを選択が確定する前から認識することができる。その結果、利用者は、意図した3次元オブジェクトが選択されたか否かを早期に知ることができる。意図しない3次元オブジェクトが選択された場合、利用者は、所定時間が経過する前に操作を中止することにより、意図せずに選択された3次元オブジェクトを元の状態に戻すことができる。
なお、指F1の3次元オブジェクトOB1の内側への移動が所定時間以上継続するまでは、変化を加えられている3次元オブジェクトを通常時とも操作対象としての選択が確定した状態とも異なる態様(例えば、半透明)で表示してもよい。このように表示態様を変更することにより、利用者が3次元オブジェクトの状態を判別しやすくなる。
図25は、3次元オブジェクトを押す操作の検出方式の第2の変形例における操作検出処理の処理手順を示すフローチャートである。図25に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。なお、第2の変形例における接触検出処理の処理手順は、図19に示した手順と同様である。
図25に示すように、制御部22は、まず、ステップS401として、所定の物体が3次元オブジェクトの内部に移動しているかを判定する。所定の物体が3次元オブジェクトの内部に移動していない場合(ステップS401,No)、その3次元オブジェクトは操作対象ではないと判断されるため、制御部22は、操作検出処理を終了させる。
所定の物体が3次元オブジェクトの内部に移動している場合(ステップS401,Yes)、制御部22は、ステップS402として、所定の物体の速度を算出する。そして、制御部22は、ステップS403として、所定の物体の種別、位置および速度と、3次元オブジェクトの種別等に基づいて3次元オブジェクトを変化させる。具体的な変化のさせ方は、作用データ24cに従って決定される。
続いて、制御部22は、ステップS404として、接触検出からの経過時間が所定時間以上であるかを判定する。経過時間が所定時間よりも短い場合、すなわち、3次元オブジェクトが押す操作の対象として確定していない場合(ステップS404,No)、制御部22は、ステップS405として、所定の物体の3次元オブジェクトの内部方向への移動が継続しているかを判定する。
3次元オブジェクトの内部方向への移動が継続している場合(ステップS405,Yes)、制御部22は、ステップS402以降を再実行する。3次元オブジェクトの内部方向への移動が継続していない場合(ステップS405,No)、制御部22は、ステップS406として、3次元オブジェクトを逆変化させて元の状態に戻す。そして、制御部22は、操作検出処理を終了させる。
また、接触検出からの経過時間が所定時間以上である場合(ステップS404,Yes)、制御部22は、ステップS407として、所定の物体が3次元オブジェクトの外部に移動したかを判定する。所定の物体が3次元オブジェクトの外部に移動していない場合、すなわち、押す操作が継続している場合(ステップS407,No)、制御部22は、ステップS402以降を再実行する。
所定の物体が3次元オブジェクトの外部に移動した場合、すなわち、3次元オブジェクトが解放された場合(ステップS407,Yes)、制御部22は、ステップS408として、3次元オブジェクトの変化が継続するかを判定する。例えば、作用データ24cにおいて解放後も振動が所定時間継続することが定義されている場合に、3次元オブジェクトの変化が継続すると判定される。
3次元オブジェクトの変化が継続する場合(ステップS408,Yes)、制御部22は、ステップS409として、3次元オブジェクトを変化させ、その後、ステップS408以降を再実行する。3次元オブジェクトの変化が継続しない場合(ステップS408,No)、制御部22は、操作検出処理を終了させる。
第2の変形例に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS404で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。
上記の説明では、3次元オブジェクトを押す操作に関して説明したが、携帯電話端末1は、3次元オブジェクトを掴んで行う操作を検出することができる。図26は、3次元オブジェクトを掴んで行う操作の検出について説明するための図である。図26では、タッチパネル32によって、第1筐体1A側の視認空間に、3次元オブジェクトOB1が立体的に表示されている。
ここで、利用者が3次元オブジェクトOB1を掴んで行う操作を実行したいものとする。3次元オブジェクトOB1を掴んで行う操作を実行するには、まず、操作の対象として3次元オブジェクトOB1を選択する必要がある。3次元オブジェクトOB1を選択するために、利用者は、図26に示すように、指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の形状および計算上の位置とに基づいて行われる。また、選択状態になったことの通知は、例えば、3次元オブジェクトOB1の全体の色を変更することや、3次元オブジェクトOB1の表面のうち、2つの物体を結ぶ直線と交わる位置の近傍の色を変更することによって実現される。このような視覚的な通知に代えて、あるいは、このような視覚的な通知に加えて、音や振動による通知を行ってもよい。
このように、携帯電話端末1は、指等の現実の物体の間に3次元オブジェクトOB1が位置する状態が所定時間以上継続して検出された場合に、3次元オブジェクトOB1が選択されたと判定する。指の間に3次元オブジェクトOB1を挟むように指を配置するという操作は、人間が現実のオブジェクトを選択するためにオブジェクトを掴む操作と類似している。そのため、かかる操作は、3次元オブジェクトを選択するための操作として、直感的で分かりやすい。また、状態が所定時間以上継続して検出されることを条件として付加することにより、他の3次元オブジェクトを選択するために指を移動させる過程で、意図しない3次元オブジェクトが選択されることを抑止できる。
なお、3次元オブジェクトを操作するために用いられる物体は、指に限定されず、手、足、棒、虫ピン等であってもよい。また、携帯電話端末1は、2つの物体がタッチパネル32の表示面と平行でない場合、すなわち、2つの物体を結ぶ直線がタッチパネル32の表示面または表示面と水平な平面と交わる場合にも上記の条件に基づいて3次元オブジェクトを選択状態にする。このように、3次元オブジェクトが選択されたか否かを立体的に判定することにより、3次元オブジェクトの形状に合わせて選択操作を行い易くなる。
3次元オブジェクトが選択されたか否かを立体的に判定するためには、障害物が死角を作らないように、複数の撮影部を用意して異なる方向から指F1および指F2等を撮影することが望ましい。
携帯電話端末1は、3次元オブジェクトOB1が選択状態になったと判定した後、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失等の変化を加える。
次に、図27および図28を参照しながら、3次元オブジェクトを掴んで行う操作に関して携帯電話端末1が実行する処理手順について説明する。図27は、3次元オブジェクトを掴んで行う操作における選択検出処理の処理手順を示すフローチャートである。図27に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部22が制御プログラム24aを実行することによって実現される。
図27に示すように、制御部22は、まず、ステップS501として、3次元オブジェクトを立体的に表示する。3次元オブジェクトを表示するためのデータは、予め記憶部24に記憶されていてもよいし、通信部26による無線通信によってサーバ装置等の他の装置から取得してもよい。
続いて、制御部22は、ステップS502として、検出部、すなわち、撮影部40または、撮影部42によって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体は、例えば、利用者の指である。第1の物体および第2の物体が検出されない場合(ステップS502,No)、制御部22は、ステップS510として、操作終了が検出されたかを判定する。
操作終了は、例えば、操作部13に対する所定の操作が行われた場合に検出されてもよいし、タッチパネル32またはタッチパネル34に対する所定の操作が行われた場合に検出されてもよい。また、操作終了は、撮影部40または撮影部42で利用者の手による所定のジェスチャーが撮影された場合に検出されてもよい。操作終了が検出された場合(ステップS510,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS510,No)、制御部22は、ステップS502以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップS502,Yes)、制御部22は、ステップS503として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。該当する3次元オブジェクトがない場合(ステップS504,No)、制御部22は、ステップS510として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS510,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS510,No)、制御部22は、ステップS502以降を再実行する。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップS504,Yes)、制御部22は、ステップS505として、第1の物体と第2の物体との間に3次元オブジェクトが位置している時間を取得する。取得した時間が所定時間未満の場合(ステップS506,No)、制御部22は、ステップS510として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS510,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS510,No)、制御部22は、ステップS502以降を再実行する。
取得した時間が所定時間以上の場合(ステップS506,Yes)、制御部22は、ステップS507として、第1の物体と第2の物体の距離を算出する。また、制御部22は、ステップS508として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを選択状態にする。そして、制御部22は、ステップS509として、後述する操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。操作検出処理が終了した後、制御部22は、ステップS510として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS510,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS510,No)、制御部22は、ステップS502以降を再実行する。
図28は、3次元オブジェクトを掴んで行う操作における操作検出処理の処理手順を示すフローチャートである。図28に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。
図28に示すように、制御部22は、まず、ステップS601として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップS602として、操作検出処理の開始時点以降の第1の物体と第2の物体の距離がほぼ一定であるかを判定する。距離がほぼ一定とは、例えば、現時点での第1の物体と第2の物体の距離の変化量が、操作検出処理の開始時点の距離と比較して、所定の範囲(第1の物体および第2の物体が通常の速度で移動した場合の距離の最大変化量の±10%等)以内に収まっていることを意味する。また、第1の物体と第2の物体の距離が操作検出処理の開始時点以降縮まり続けている場合(第1の物体および第2の物体が3次元オブジェクトを押しつぶす方向に移動している場合)に、距離がほぼ一定であると判定してもよい。また、手振れ等の範囲内でしか両者の距離が変化していない場合に、距離がほぼ一定であると判定してもよい。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップS602,Yes)、制御部22は、ステップS603として、第1の物体および第2の物体の移動速度を算出する。続いて、制御部22は、ステップS604として、算出した移動速度が閾値以下であるかを判定する。ここで用いられる閾値は、例えば、人がものを放り投げるときの指先の移動速度である。また、閾値と比較される移動速度は、第1の物体の移動速度と第2の物体の移動速度の平均であってもよいし、いずれか速い方であってもよいし、いずれか遅い方であってもよい。
移動速度が閾値以下の場合(ステップS604,Yes)、制御部22は、ステップS605として、検出された第1の物体および第2の物体の動きに応じて3次元オブジェクトを移動させたり回転させたりする。例えば、第1の物体および第2の物体の右方向への移動が検出された場合、制御部22は、第1の物体および第2の物体の移動に合わせて3次元オブジェクトを右方向へ移動させる。また、第1の物体および第2の物体の左回りでの回転が検出された場合、制御部22は、第1の物体および第2の物体の回転に合わせて3次元オブジェクトを左回りで回転させる。また、移動と回転が同時に検出された場合、移動と回転が同時に実行される。なお、3次元オブジェクトの移動や回転に対する障害物がある場合、3次元オブジェクトが障害物に接触した時点で3次元オブジェクトの移動や回転を停止させてもよい。そして、制御部22は、ステップS601以降を再実行する。
移動速度が閾値より速い場合(ステップS604,No)、制御部22は、ステップS606として、3次元オブジェクトを消去する。3次元オブジェクトを消去するに際して、3次元オブジェクトが第1の物体および第2の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部22は、操作検出処理を終了させる。このように、3次元オブジェクトを放り投げるように第1の物体および第2の物体が高速で移動した場合に3次元オブジェクトを消去することにより、直感的な操作によって3次元オブジェクトの消去を実現することができる。なお、第1の物体および第2の物体を高速で移動させる操作ではなく、例えば、3次元オブジェクトを握りつぶす操作に3次元オブジェクトの消去を割り当ててもよい。また、3次元オブジェクトを消去する代わりに、3次元オブジェクトを当初の配置場所に戻すこととしてもよい。
第1の物体と第2の物体の距離がほぼ一定でない場合(ステップS602,No)、制御部22は、ステップS607として、距離が、3次元オブジェクトの選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合(ステップS607,Yes)、制御部22は、ステップS608として、3次元オブジェクトの選択状態を解除する。第1の物体と第2の物体の距離を拡大するという操作は、掴んでいる現実のオブジェクトを放す操作と類似している。そのため、かかる操作は、3次元オブジェクトの選択を解除するための操作として、直感的で分かりやすい。
続いて、制御部22は、ステップS609として、選択状態を解除した3次元オブジェクトを重力等に従って移動させる。そして、制御部22は、操作検出処理を終了させる。ここでの移動は、例えば、3次元オブジェクトが重力に従って落下し、床やテーブルの上で停止するように表示される。3次元オブジェクトの動きを停止させる前に、3次元オブジェクトの弾性や床やテーブルの硬度に応じて3次元オブジェクトをバウンドさせてもよい。3次元オブジェクトが床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には3次元オブジェクトを破損したように表示してもよい。また、実際の重力が働く場合よりも3次元オブジェクトをゆっくりと移動させてもよい。
第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合(ステップS607,No)、制御部22は、ステップS610として、距離に応じて3次元オブジェクトを変形させる。そして、制御部22は、ステップS601以降を再実行する。3次元オブジェクトを変形させる程度は、例えば、3次元オブジェクトに属性として設定されている弾性に応じて変更してもよい。制御部22は、ゴムボールを模した3次元オブジェクトのように属性として低い硬度を設定されているオブジェクトについては、第1の物体と第2の物体の距離が縮まるに応じて変形の度合いを高めてよい。また、制御部22は、積み木を模した3次元オブジェクトのように属性として高い硬度を設定されているオブジェクトについては、第1の物体と第2の物体の距離が縮まっても変形の度合いを小さく保ってよい。
なお、第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合に、3次元オブジェクトを変形させるのではなく縮小させてもよい。また、第1の物体と第2の物体の距離が所定の値以下になった場合に、3次元オブジェクトを破損したように表示してもよい。
図27および図28に示した処理手順に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS506で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。
3次元オブジェクトを掴んで行う操作の検出方式は、上記の方式に限定されない。図29は、3次元オブジェクトを掴んで行う操作の検出方式の第1の変形例について説明するための図である。図29に示すステップSD1では、タッチパネル32によって、第1筐体1A側の視認空間に、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を挟む位置に留まる必要はない。すなわち、利用者は、ステップSD1に示したように指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させた後、その状態を保つことなく、指F1および指F2を他の位置へ移動させて構わない。
ステップSD1の状態から、ステップSD2に示すように、利用者が、指F1と指F2の距離D1をほぼ一定に保ったまま移動させたものとする。この場合、携帯電話端末1は、ステップSD3に示すように、指F1と指F2の距離D1がほぼ一定に保たれた状態が所定時間以上継続した段階で、3次元オブジェクトOB1を選択状態にする。そして、携帯電話端末1は、3次元オブジェクトOB1を、あたかもステップSD1の段階で既に選択されていたかのように、指F1および指F2の間に移動させる。ステップSD1からステップSD3までの指F1と指F2の動きを記憶しておき、記憶しておいた動きに合わせて3次元オブジェクトOB1を回転等させてもよい。その後、携帯電話端末1は、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失等の変化を加える。
このように、2つの物体が3次元オブジェクトを挟む位置に一旦移動した後は、物体がその場に留まらなくても3次元オブジェクトを選択可能にすることにより、利用者は、3次元オブジェクトを選択した後の操作を迅速に開始することができる。
図30は、3次元オブジェクトを掴んで行う操作の検出方式の第1の変形例における選択検出処理の処理手順を示すフローチャートである。図30に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部22が制御プログラム24aを実行することによって実現される。
図30に示すように、制御部22は、まず、ステップS701として、3次元オブジェクトを立体的に表示する。続いて、制御部22は、ステップS702として、検出部、すなわち、撮影部40aおよび40b、または、撮影部42aおよび42bによって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体が検出されない場合(ステップS702,No)、制御部22は、ステップS714として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトの仮選択状態を解除する。仮選択状態とは、2つの物体の間に3次元オブジェクトが表示されている状態が検出された後、2つの物体の距離がほぼ一定に保たれているかが監視されている状態である。
そして、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップS702,Yes)、制御部22は、ステップS703として、仮選択状態の3次元オブジェクトがあるか否かを判定する。仮選択状態の3次元オブジェクトがない場合(ステップS703,No)、制御部22は、ステップS704として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。
該当する3次元オブジェクトがない場合(ステップS705,No)、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップS705,Yes)、制御部22は、ステップS706として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを仮選択状態にする。また、制御部22は、ステップS707として、第1の物体と第2の物体の距離を算出する。
そして、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
第1の物体および第2の物体が検出され、かつ、仮選択状態の3次元オブジェクトがある場合(ステップS703,Yes)、制御部22は、ステップS708として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップS709として、距離がほぼ一定であるかを判定する。距離がほぼ一定でない場合(ステップS709,No)、制御部22は、ステップS714として、仮選択状態の3次元オブジェクトの仮選択状態を解除する。
そして、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップS709,Yes)、制御部22は、ステップS710として、距離がほぼ一定に保たれている期間が所定時間以上であるかを判定する。距離がほぼ一定に保たれている期間が所定時間未満の場合(ステップS710,No)、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
距離がほぼ一定に保たれている期間が所定時間以上の場合(ステップS710,Yes)、制御部22は、ステップS711として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを選択状態にする。また、制御部22は、ステップS712として、第1の物体と第2の物体との間に3次元オブジェクトを移動させる。そして、制御部22は、ステップS713として、図28に示した操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。
操作検出処理が終了した後、制御部22は、ステップS715として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS715,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS715,No)、制御部22は、ステップS702以降を再実行する。
第1の変形例に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS710で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。
図31および図32は、3次元オブジェクトを掴んで行う操作の検出方式の第2の変形例について説明するための図である。図31に示すステップSE1では、タッチパネル32によって、視認空間中に、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を挟む位置に留まる必要はない。すなわち、利用者は、ステップSE1に示したように指F1と指F2の間に3次元オブジェクトOB1が位置するように指F1および指F2を移動させた後、その状態を保つことなく、指F1および指F2を他の位置へ移動させて構わない。
ステップSE1の状態から、ステップSE2に示すように、利用者が、指F1と指F2の距離D1をほぼ一定に保ったまま移動させたものとする。この場合、携帯電話端末1は、指F1と指F2の間に3次元オブジェクトOB1が表示されていることが検出された段階、すなわち、ステップSE1の段階から、指F1および指F2の動きに応じて、3次元オブジェクトOB1に移動、変形、消失等の変化を加える。そして、携帯電話端末1は、ステップSE3に示すように、指F1と指F2の距離D1がほぼ一定に保たれた状態が所定時間以上継続した段階で、3次元オブジェクトOB1を選択状態にする。
なお、図32のステップSE4に示すように、所定時間が経過する前に指F1と指F2の距離D1が離れた場合、すなわち、選択が行われなかった場合、携帯電話端末1は、それまでに加えた変化と逆の変化を3次元オブジェクトOB1に加える。その結果、3次元オブジェクトOB1は、ステップSE1の段階と同じ位置に同じ状態で表示される。逆の変化を3次元オブジェクトOB1に加える速度は、それまでに3次元オブジェクトOB1に変化が加えられた速度よりも速くてもよい。すなわち、高速に逆再生しているかのように3次元オブジェクトOB1を逆変化させてもよい。
このように、2つの物体の間に3次元オブジェクトが表示されていることが検出された段階から3次元オブジェクトに変化を加え始めることにより、利用者は、3次元オブジェクトが選択されつつあることを選択が確定する前から認識することができる。その結果、利用者は、意図した3次元オブジェクトが選択されたか否かを早期に知ることができる。なお、2つの物体の距離がほぼ一定に保たれた状態が所定時間以上継続するまでは、変化を加えられている3次元オブジェクトを通常時とも選択状態とも異なる態様(例えば、半透明)で表示することにより、利用者が3次元オブジェクトの状態を判別しやすくしてもよい。
図33は、3次元オブジェクトを掴んで行う操作の検出方式の第2の変形例における選択検出処理の処理手順を示すフローチャートである。図33に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部22が制御プログラム24aを実行することによって実現される。
図33に示すように、制御部22は、まず、ステップS801として、3次元オブジェクトを立体的に表示する。続いて、制御部22は、ステップS802として、検出部、すなわち、撮影部40aおよび40b、または、撮影部42aおよび42bによって第1の物体および第2の物体が検出されたかを判定する。第1の物体および第2の物体が検出されない場合(ステップS802,No)、制御部22は、ステップS810として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトの仮選択状態を解除する。
そして、制御部22は、ステップS811として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS811,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS811,No)、制御部22は、ステップS802以降を再実行する。
第1の物体および第2の物体が検出された場合(ステップS802,Yes)、制御部22は、ステップS803として、仮選択状態の3次元オブジェクトがあるか否かを判定する。仮選択状態の3次元オブジェクトがない場合(ステップS803,No)、制御部22は、ステップS804として、表示されている3次元オブジェクトの中から第1の物体と第2の物体との間に表示されている3次元オブジェクトを探す。
該当する3次元オブジェクトがない場合(ステップS805,No)、制御部22は、ステップS811として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS811,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS811,No)、制御部22は、ステップS802以降を再実行する。
第1の物体と第2の物体との間に表示されている3次元オブジェクトがみつかった場合(ステップS805,Yes)、制御部22は、ステップS806として、第1の物体と第2の物体との間に表示されている3次元オブジェクトを仮選択状態にする。また、制御部22は、ステップS807として、第1の物体と第2の物体の距離を算出する。
そして、制御部22は、ステップS811として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS811,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS811,No)、制御部22は、ステップS802以降を再実行する。
第1の物体および第2の物体が検出され、かつ、仮選択状態の3次元オブジェクトがある場合(ステップS803,Yes)、制御部22は、ステップS808として、第1の物体と第2の物体の少なくとも一方が移動しているかを判定する。第1の物体と第2の物体のいずれも移動していない場合(ステップS808,No)、制御部22は、ステップS811として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS811,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS811,No)、制御部22は、ステップS802以降を再実行する。
第1の物体と第2の物体の少なくとも一方が移動している場合(ステップS808,Yes)、制御部22は、ステップS809として、図34に示す操作検出処理を実行し、その中で、選択状態にある3次元オブジェクトを検出された操作に応じて変化させる。
操作検出処理が終了した後、制御部22は、ステップS811として、操作終了が検出されたかを判定する。操作終了が検出された場合(ステップS811,Yes)、制御部22は、選択検出処理を終了させる。操作終了が検出されない場合(ステップS811,No)、制御部22は、ステップS802以降を再実行する。
図34は、3次元オブジェクトを掴んで行う操作の検出方式の第2の変形例における操作検出処理の処理手順を示すフローチャートである。図34に示す処理手順は、制御部22が制御プログラム24aを実行することによって実現される。図34に示すように、制御部22は、まず、ステップS901として、第1の物体と第2の物体の距離を算出する。そして、制御部22は、ステップS902として、操作検出処理の開始時点以降の第1の物体と第2の物体の距離がほぼ一定であるかを判定する。
第1の物体と第2の物体の距離がほぼ一定の場合(ステップS902,Yes)、制御部22は、ステップS903として、操作検出処理が開始されてから所定時間が経過したかを判定する。所定時間が経過していた場合(ステップS903,Yes)、制御部22は、ステップS904として、仮選択状態の3次元オブジェクトがあれば、その3次元オブジェクトを選択状態にする。所定時間が経過していない場合(ステップS903,No)、ステップS904は実行されない。
続いて、制御部22は、ステップS905として、第1の物体および第2の物体の移動速度を算出する。そして、制御部22は、ステップS906として、算出した移動速度が閾値以下であるかを判定する。移動速度が閾値以下の場合(ステップS906,Yes)、制御部22は、ステップS907として、検出された第1の物体および第2の物体の動きに応じて3次元オブジェクトを移動させたり回転させたりする。そして、制御部22は、ステップS901以降を再実行する。
移動速度が閾値より速い場合(ステップS906,No)、制御部22は、ステップS908として、3次元オブジェクトを消去する。3次元オブジェクトを消去するに際して、3次元オブジェクトが第1の物体および第2の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部22は、操作検出処理を終了させる。なお、第1の物体および第2の物体を高速で移動させる操作ではなく、例えば、3次元オブジェクトを握りつぶす操作に3次元オブジェクトの消去を割り当ててもよい。また、3次元オブジェクトを消去する代わりに、3次元オブジェクトを当初の配置場所に戻すこととしてもよい。
第1の物体と第2の物体の距離がほぼ一定でない場合(ステップS902,No)、制御部22は、ステップS909として、距離が、3次元オブジェクトの選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合(ステップS909,Yes)、制御部22は、ステップS910として、第1の物体と第2の物体の間に表示されていた3次元オブジェクトが仮選択状態であるかを判定する。
3次元オブジェクトが仮選択状態である場合(ステップS910,Yes)、制御部22は、ステップS911として、3次元オブジェクトの仮選択状態を解除する。また、制御部22は、ステップS912として、3次元オブジェクトを逆変化させて元の状態に戻す。そして、制御部22は、操作検出処理を終了させる。
3次元オブジェクトが仮選択状態でない場合、すなわち、選択状態の場合(ステップS910,No)、制御部22は、ステップS913として、3次元オブジェクトの選択状態を解除する。また、制御部22は、ステップS914として、選択状態を解除した3次元オブジェクトを重力等に従って移動させる。そして、制御部22は、操作検出処理を終了させる。ここでの移動は、例えば、3次元オブジェクトが重力に従って落下し、床やテーブルの上で停止するように表示される。3次元オブジェクトの動きを停止させる前に、3次元オブジェクトの弾性や床やテーブルの硬度に応じて3次元オブジェクトをバウンドさせてもよい。3次元オブジェクトが床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には3次元オブジェクトを破損したように表示してもよい。また、実際の重力が働く場合よりも3次元オブジェクトをゆっくりと移動させてもよい。
第1の物体と第2の物体の距離が3次元オブジェクトの選択時よりも縮まっている場合(ステップS909,No)、制御部22は、ステップS915として、距離に応じて3次元オブジェクトを変形させる。そして、制御部22は、ステップS901以降を再実行する。3次元オブジェクトを変形させる程度は、例えば、3次元オブジェクトに属性として設定されている硬度に応じて変更してもよい。
第2の変形例に基づいて3次元オブジェクトに対する操作を検出する場合、操作の競合時に操作の有効性を判定するために用いる閾値は、ステップS903で用いられる所定時間以上の長さに設定してもよい。このように設定することにより、3次元オブジェクトに対する操作ではない動作によって3次元オブジェクトに対する操作が無効と判定される可能性を低減することができる。