(57)【特許請求の範囲】
【請求項１】
複数の立方体が直交する３方向に沿って配列されて構成された集合体を、視認空間内に立体表示する表示部と、
前記視認空間内における物体の動きを検出する検出部と、
前記検出部の検出結果に応じて前記集合体の各要素の位置を変化させる制御部と、
を備え、
前記集合体の６面の各々は各立方体の外面を要素とする集合体からなり、各要素には当該要素の全てが同一グループに属するか否かを判別可能な表記がなされており、
前記制御部は、
前記検出部の検出結果に基づいて、前記６面のうち、前記直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、前記直交する３方向のうち他の方向と直交する複数の他の面においては、当該複数の他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、前記一の方向を回転軸として、前記立方体を回転させるように制御し、
前記表示部は、複数の集合体を前記視認空間内に立体表示し、
前記検出部が、前記複数の集合体のうち一方の集合体に対して、２箇所で前記一方の集合体を掴む２組の物体を検出し、さらに前記２組の物体同士が対向する方向を中心に、前記２組の物体同士が相対的に回転する動きを検出した場合、
前記制御部は、前記２組の物体同士が対向する方向を前記一の方向と定め、前記一方の集合体に対する前記相対的に回転する動きの回転量に応じて、前記一方の集合体を構成する立方体と、前記複数の集合体のうち他方の集合体を構成する立方体とが連動して回転するように制御することを特徴とする表示機器。
【請求項２】
前記検出部が、前記集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、
前記制御部は、前記物体の動きに応じて、前記集合体を移動させるように制御することを特徴とする請求項１に記載の表示機器。
【請求項３】
前記検出部が、２箇所で前記集合体を掴む２組の物体を検出し、さらに前記２組の物体同士が対向する方向を中心に、前記２組の物体同士が相対的に回転する動きを検出した場合、
前記制御部は、前記２組の物体同士が対向する方向を前記一の方向と定め、前記相対的に回転する動きの回転量に応じて、前記立方体を回転させるように制御することを特徴とする請求項１または２に記載の表示機器。
【請求項４】
前記表示部は、前記一方の集合体内に前記他方の集合体を入れ子にした状態で立体表示し、
前記検出部が、前記他方の集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、
前記制御部は、前記物体の動きに応じて、前記一方の集合体を移動させずに、前記他方の集合体のみを移動させるように制御することを特徴とする請求項１に記載の表示機器。
【請求項５】
前記表示部は、前記一方の集合体と前記他方の集合体をそれぞれ、同一の前記視認空間内に立体表示し、
前記検出部が、前記他方の集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、
前記制御部は、前記他方の集合体に対する前記物体の動きに応じて、前記他方の集合体と、前記一方の集合体とが連動して移動するように制御することを特徴とする請求項１に記載の表示機器。
【請求項６】
前記検出部は、前記表示部に重畳して設けられた静電容量式のタッチセンサであることを特徴とする請求項１から５のいずれか１項に記載の表示機器。
【請求項７】
前記検出部は、カメラまたはＴＯＦセンサを含んでなることを特徴とする請求項１に記載の表示機器。
【請求項８】
前記表示部は、制限時間を表示することを特徴とする請求項１に記載の表示機器。
【請求項９】
前記表示部は、前記立方体を回転させた回転数を表示することを特徴とする請求項１に記載の表示機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示機器、制御システムおよび制御プログラムに関する。
【背景技術】
【０００２】
携帯電話端末等の表示部を備える表示機器には、画像等を立体表示することができるものがある（例えば、特許文献１参照）。立体表示は、両眼の視差を利用して実現される。
【０００３】
また、３Ｄゲームのアプリケーションを実行することができるゲーム装置がある（例えば、特許文献２参照）。例えば、特許文献２に記載のゲーム装置は、３次元コンピュータグラフィックスで表示された立体パズルを使用して３Ｄゲームを実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−９５５４７号公報
【特許文献２】特開２０１１−１０１６７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
立体表示は利用者にとって親しみやすい表示形式であるにも関わらず、従来の表示機器では、立体表示は視聴目的でしか利用されず、操作の利便性を向上させるためには利用されてこなかった。また、立体パズル等の３Ｄゲームのアプリケーションは存在するが、従来のゲーム装置では、操作ボタン等により特定の１つのオブジェクト毎しか選択できず、さらに操作に慣れるまで時間を要してしまう。
【０００６】
本発明は、３Ｄアプリケーションにおいて利用者に対して利便性の高い操作方法を提供することができる表示機器、制御システムおよび制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る表示機器は、複数の立方体が直交する３方向に沿って配列されて構成された集合体を、視認空間内に立体表示する表示部と、前記視認空間内における物体の動きを検出する検出部と、前記検出部の検出結果に応じて前記集合体の各要素の位置を変化させる制御部とを備え、前記集合体の６面の各々は各立方体の外面を要素とする集合体からなり、各要素には当該要素の全てが同一グループに属するか否かを判別可能な表記がなされており、前記制御部は、前記検出部の検出結果に基づいて、前記６面のうち、前記直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、前記直交する３方向のうち他の方向と直交する複数の他の面においては、当該複数の他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、前記一の方向を回転軸として、前記立方体を回転させるように制御する。
【０００８】
また、前記検出部が、前記集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、前記制御部は、前記物体の動きに応じて、前記集合体を移動させるように制御することが好ましい。
【０００９】
また、前記検出部が、２箇所で前記集合体を掴む２組の物体を検出し、さらに前記２組の物体同士が対向する方向を中心に、前記２組の物体同士が相対的に回転する動きを検出した場合、前記制御部は、前記２組の物体同士が対向する方向を前記一の方向と定め、前記相対的に回転する動きの回転量に応じて、前記立方体を回転させるように制御することが好ましい。
【００１０】
前記表示部は、複数の集合体を前記視認空間内に立体表示し、前記検出部が、前記複数の集合体のうち一方の集合体に対して、２箇所で前記一方の集合体を掴む２組の物体を検出し、さらに前記２組の物体同士が対向する方向を中心に、前記２組の物体同士が相対的に回転する動きを検出した場合、前記制御部は、前記２組の物体同士が対向する方向を前記一の方向と定め、前記一方の集合体に対する前記相対的に回転する動きの回転量に応じて、前記一方の集合体を構成する立方体と、前記複数の集合体のうち他方の集合体を構成する立方体とが連動して回転するように制御することが好ましい。
【００１１】
前記表示部は、前記一方の集合体内に前記他方の集合体を入れ子にした状態で立体表示し、前記検出部が、前記他方の集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、前記制御部は、前記物体の動きに応じて、前記一方の集合体を移動させずに、前記他方の集合体のみを移動させるように制御することが好ましい。
【００１２】
前記表示部は、前記一方の集合体と前記他方の集合体をそれぞれ、同一の前記視認空間内に立体表示し、前記検出部が、前記他方の集合体を掴む位置に前記物体があり、かつ、前記物体が移動したことを検出した場合、前記制御部は、前記他方の集合体に対する前記物体の動きに応じて、前記他方の集合体と、前記一方の集合体とが連動して移動するように制御することが好ましい。
【００１３】
前記検出部は、前記表示部に重畳して設けられた静電容量式のタッチセンサであることが好ましい。
【００１４】
前記検出部は、カメラまたはＴＯＦセンサを含んでなることが好ましい。
【００１５】
前記表示部は、制限時間を表示することが好ましい。
【００１６】
前記表示部は、前記立方体を回転させた回転数を表示することが好ましい。
【００１７】
また、本発明に係る表示機器は、他の態様において、視認空間内に立体パズルを立体表示する表示部と、前記視認空間内における物体の動きを検出する検出部と、前記検出部の検出結果に応じて前記立体パズルのピースの位置を変化させる制御部とを備える。
【００１８】
前記立体パズルは、正多面体型立体パズルであることが好ましい。
【００１９】
前記正多面体型立体パズルは、正四面体型立体パズル、正六面体型立体パズル、正八面体型立体パズル、正十二面体型立体パズル、および、正二十面体型立体パズルを含むことが好ましい。
【００２０】
前記正六面体型立体パズルは、ポケットキューブ、ルービックキューブ、ルービックリベンジ、および、プロフェッサーキューブを含むことが好ましい。
【００２１】
また、本発明に係る制御システムは、複数の立方体が直交する３方向に沿って配列されて構成された集合体を、視認空間内に立体表示する表示部と、前記視認空間内における物体の動きを検出する検出部と、を備える携帯端末と、前記検出部の検出結果に応じて前記集合体の各要素の位置を変化させる制御部を備える制御装置と、を備え、前記集合体の６面の各々は各立方体の外面を要素とする集合体からなり、各要素には当該要素の全てが同一グループに属するか否かを判別可能な表記がなされており、前記制御部は、前記検出部の検出結果に基づいて、前記６面のうち、前記直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、前記直交する３方向のうち他の方向と直交する複数の他の面においては、当該複数の他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、前記一の方向を回転軸として、前記立方体を回転させるように制御することを特徴とする。
【００２２】
また、本発明に係る制御プログラムは、複数の立方体が直交する３方向に沿って配列されて構成された集合体を、視認空間内に立体表示する表示部と、前記視認空間内における物体の動きを検出する検出部と、前記検出部の検出結果に応じて前記集合体の各要素の位置を変化させる制御部と、を備え、前記集合体の６面の各々は各立方体の外面を要素とする集合体からなり、各要素には当該要素の全てが同一グループに属するか否かを判別可能な表記がなされている表示機器に、前記検出部で操作を検出するステップと、前記検出部の検出結果に基づいて、前記６面のうち、前記直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、前記直交する３方向のうち他の方向と直交する複数の他の面においては、当該複数の他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、前記一の方向を回転軸として、前記立方体を回転させるように制御するステップとを、実行させることを特徴とする。
【発明の効果】
【００２３】
本発明は、３Ｄアプリケーションにおいて利用者に対して利便性の高い操作方法を提供することができるという効果を奏する。
【図面の簡単な説明】
【００２４】
【図１】図１は、第１の実施例に係る携帯電話端末の外観を示す正面図である。
【図２】図２は、第１の実施例に係る携帯電話端末の機能的な構成を示すブロック図である。
【図３】図３は、第１の実施例における３次元オブジェクトに対する操作の検出について説明するための図である。
【図４】図４は、３次元オブジェクトに対する選択と操作の一例を示す図である。
【図５】図５は、３次元オブジェクトに対する選択と操作の別の一例を示す図である。
【図６】図６は、選択検出処理の処理手順を示すフローチャートである。
【図７】図７は、操作検出処理の処理手順を示すフローチャートである。
【図８】図８は、単数の３次元オブジェクトに対する操作検出処理の処理手順の詳細を示すフローチャートである。
【図９】図９は、複数の３次元オブジェクトに対する操作検出処理の処理手順の詳細を示すフローチャートである。
【図１０】図１０は、複数の３次元オブジェクトの表示の一例を示す図である。
【図１１】図１１は、図１０に示す複数の３次元オブジェクトに対する選択と操作の一例を示す図である。
【図１２】図１２は、図１０に示す複数の３次元オブジェクトに対する選択と操作の別の一例を示す図である。
【図１３】図１３は、複数の３次元オブジェクトの表示の別の一例を示す図である。
【図１４】図１４は、図１３に示す複数の３次元オブジェクトに対する選択と操作の一例を示す図である。
【図１５】図１５は、３次元オブジェクトに対する操作の検出の他の例について説明するための図である。
【図１６】図１６は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。
【図１７】図１７は、第２の実施例における３次元オブジェクトに対する操作の検出について説明するための図である。
【図１８】図１８は、選択検出処理の処理手順を示すフローチャートである。
【図１９】図１９は、３次元オブジェクトに対する操作の検出の他の例について説明するための図である。
【図２０】図２０は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。
【図２１】図２１は、第３の実施例における３次元オブジェクトに対する操作の検出について説明するための図である。
【図２２】図２２は、第３の実施例における３次元オブジェクトに対する操作の検出について説明するための図である。
【図２３】図２３は、選択検出処理の処理手順を示すフローチャートである。
【図２４】図２４は、操作検出処理の処理手順を示すフローチャートである。
【図２５】図２５は、３次元オブジェクトに対する操作の検出の他の例について説明するための図である。
【図２６】図２６は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。
【図２７】図２７は、第４の実施例に係る携帯電話端末の外観を示す正面図である。
【図２８】図２８は、第４の実施例に係る携帯電話端末の機能的な構成を示すブロック図である。
【図２９】図２９は、第４の実施例における３次元オブジェクトに対する操作の検出について説明するための図である。
【図３０】図３０は、３次元オブジェクトに対する操作を複数のタッチセンサを用いて検出する携帯電話端末３の構成の一例を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明につき図面を参照しつつ詳細に説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。以下においては、表示機器の一例として携帯電話端末について説明するが、本発明の適用対象は携帯電話端末に限定されるものではなく、例えば、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）、ＰＤＡ、ポータブルナビゲーション装置、ノートパソコン、ゲーム機等に対しても本発明は適用できる。また、以下においては、３次元オブジェクトの一例として正六面体型立体パズル（所謂、ルービックキューブ（登録商標）等）について説明するが、本発明の適用対象は正六面体立体パズルに限定されるものではなく、当業者に周知の立体パズルに対しても本発明は適用できる。
【実施例１】
【００２６】
まず、図１および図２を参照しながら、第１の実施例に係る携帯電話端末（表示機器）１の構成について説明する。図１は、携帯電話端末１の外観を示す正面図である。図２は、携帯電話端末１の機能的な構成を示すブロック図である。
【００２７】
図１および図２に示すように、携帯電話端末１は、操作部１３と、マイク１５と、レシーバ１６と、制御部２２と、記憶部２４と、通信部２６と、音声処理部３０と、タッチパネル３２と、撮影部４０と、撮影部４２とを有する。操作部１３、マイク１５、レシーバ１６、タッチパネル３２および撮影部４０および４２は、携帯電話端末１の正面に一部が露出する。
【００２８】
操作部１３は、物理的なボタンを有し、押下されたボタンに対応する信号を制御部２２へ出力する。なお、図１に示す例では、操作部１３はボタンを１つしか有していないが、操作部１３は複数のボタンを有していてもよい。
【００２９】
マイク１５は、外部の音声を取得する。レシーバ１６は、通話時に通話相手の音声を出力する。音声処理部３０は、マイク１５から入力される音声をデジタル信号化して制御部２２へ出力する。また、音声処理部３０は、制御部２２から入力されるデジタル信号を復号してレシーバ１６へ出力する。
【００３０】
通信部２６は、アンテナ２６ａを有し、基地局によって割り当てられるチャネルを介して、基地局との間にＣＤＭＡ（Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式などによる無線信号回線を確立する。通信部２６は、基地局との間に確立された無線信号回線を通じて、他の装置との間で電話通信および情報通信を行う。
【００３１】
タッチパネル３２は、文字、図形、画像等の各種の情報を表示するとともに、表示されたアイコン、ボタン、文字入力領域等の所定領域に対する入力操作を検出する。タッチパネル３２は、表示部３２ａと、タッチセンサ３２ｂとを重畳して構成される。
【００３２】
表示部３２ａは、液晶ディスプレイ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）や有機ＥＬ（Ｏｒｇａｎｉｃ  Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ）パネル等の表示装置を備え、制御部２２から入力される制御信号に従って各種の情報を表示する。タッチセンサ３２ｂは、タッチパネル３２の表面に対して行われる入力操作を検出し、検出した入力操作に応じた信号を制御部２２へ出力する。タッチセンサ３２ｂが各種操作を検出する方式は、静電容量式、抵抗膜式、感圧式等の任意の方式でよい。
【００３３】
また、タッチパネル３２は、３次元オブジェクトを表示できる。３次元オブジェクトは、視差を利用して立体的に見えるように作成された画像や形状等の表示物である。なお、３次元オブジェクトを表示する方式は、眼鏡等の器具を用いて立体視を実現する方式であってもよいし、裸眼で立体視を実現する方式であってもよい。
【００３４】
撮影部４０および４２は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）等のイメージセンサを用いて電子的に画像を撮影する。そして、撮影部４０および４２は、撮影した画像を信号に変換して制御部２２へ出力する。撮影部４０および４２は、３次元オブジェクトが立体的に表示される空間（以下、「視認空間」という）において３次元オブジェクトを選択して操作する物体を検出する検出部としても機能する。
【００３５】
なお、撮影部４０および４２は、視認空間内のどこに指等の物体が位置していてもその物体を撮影することができるように画角や配置が設定されていることが好ましい。また、撮影部４０および４２は、可視光の画像を取得する装置であってもよいし、赤外線等の不可視光の画像を取得する装置であってもよい。
【００３６】
制御部２２は、演算手段であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶手段であるメモリとを備え、これらのハードウェア資源を用いてプログラムを実行することによって各種の機能を実現する。具体的には、制御部２２は、記憶部２４に記憶されているプログラムやデータを読み出してメモリに展開し、メモリに展開されたプログラムに含まれる命令をＣＰＵに実行させる。そして、制御部２２は、ＣＰＵによる命令の実行結果に応じて、メモリおよび記憶部２４に対してデータの読み書きを行ったり、通信部２６や表示部３２ａ等の動作を制御したりする。ＣＰＵが命令を実行するに際しては、メモリに展開されているデータやタッチセンサ３２ｂ等から入力される信号がパラメータや判定条件の一部として利用される。
【００３７】
記憶部２４は、フラッシュメモリ等の不揮発性を有する記憶装置からなり、各種のプログラムやデータを記憶する。記憶部２４に記憶されるプログラムには、制御プログラム２４ａが含まれる。なお、記憶部２４は、メモリカード等の可搬の記憶媒体と、記憶媒体に対して読み書きを行う読み書き装置との組み合わせによって構成されてもよい。この場合、制御プログラム２４ａは、記憶媒体に記憶されていてもよい。また、制御プログラム２４ａは、通信部２６による無線通信によってサーバ装置等の他の装置から取得することとしてもよい。
【００３８】
制御プログラム２４ａは、携帯電話端末１を稼働させるための各種制御に関する機能を提供する。制御プログラム２４ａが提供する機能には、タッチパネル３２での３次元オブジェクトの表示を制御する機能や、タッチパネル３２によって表示される３次元オブジェクトに対する利用者の操作を検出する機能が含まれる。
【００３９】
次に、図３を参照しながら、３次元オブジェクトに対する操作の検出について説明する。図３は、３次元オブジェクトに対する操作の検出について説明するための図である。図３に示すステップＳ１１では、タッチパネル３２によって、視認空間５０中に、３次元オブジェクトＯＢ１が立体的に表示されている。３次元オブジェクトＯＢ１は、例えば、キューブを模したオブジェクトである。ここで、本実施例において、キューブは、複数の立方体が直交する３方向に沿って配列されて構成された集合体（所謂、ルービックキューブ（登録商標）等）であり、当該集合体の６面の各々は各立方体の外面を要素とする集合体からなり、各要素には当該要素の全てが同一グループに属するか否かを判別可能な表記がなされている。ここで、当該判別可能な表記は、色、マーク、文字、番号、絵柄等を含む。
【００４０】
ここで、利用者が３次元オブジェクトＯＢ１に対して何らかの操作を行いたいものとする。３次元オブジェクトＯＢ１に対して何らかの操作を行うには、まず、操作の対象として３次元オブジェクトＯＢ１を選択する必要がある。３次元オブジェクトＯＢ１を選択するために、利用者は、ステップＳ１２に示すように、指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させ、その状態を所定時間以上維持する。
【００４１】
携帯電話端末１は、視認空間内で２つの物体が検出され、かつ、それらの２つの物体の間に３次元オブジェクトＯＢ１が位置する状態が所定時間以上継続した場合、３次元オブジェクトＯＢ１が選択されたと判定し、３次元オブジェクトＯＢ１を選択状態にする。そして、携帯電話端末１は、３次元オブジェクトＯＢ１の表示態様を変更する等して、３次元オブジェクトＯＢ１が選択状態になったことを利用者に通知する。
【００４２】
２つの物体の間に３次元オブジェクトＯＢ１が位置しているかの判定は、視認空間における２つの物体の現実の位置と、視認空間における３次元オブジェクトＯＢ１の計算上の位置とに基づいて行われる。
【００４３】
２つの物体の位置は、撮影部４０および４２が撮影する画像に基づいて算出される。２つの物体の位置の算出は、予め登録されているそれぞれの物体の大きさと画像中の物体の大きさおよび位置とに基づいて行ってもよい。また、２つの物体の位置の算出は、撮影部４０が撮影した画像における物体の大きさおよび位置と撮影部４２が撮影した画像における物体の大きさおよび位置とを照合して行ってもよい。なお、指等の物体の検出は、周知の技術を用いて実現してよい。また、物体が指である場合、指のつま先の位置を物体の位置として処理することが好ましい。
【００４４】
視認空間における３次元オブジェクトＯＢ１の計算上の位置は、タッチパネル３２の表示面上での３次元オブジェクトＯＢ１の位置と、視認空間内での３次元オブジェクトＯＢ１の浮き上がり量とに基づいて算出される。視認空間内での３次元オブジェクトＯＢ１の浮き上がり量は、例えば、３次元オブジェクトＯＢ１を立体的に表示するために用いられる右目用の画像と左目用の画像における３次元オブジェクトＯＢ１の位置の差から算出される。
【００４５】
また、選択状態になったことの通知は、例えば、３次元オブジェクトＯＢ１の全体の色を変更することや、３次元オブジェクトＯＢ１の表面のうち、２つの物体を結ぶ直線と交わる位置の近傍の色を変更することによって実現される。このような視覚的な通知に代えて、あるいは、このような視覚的な通知に加えて、音や振動による通知を行ってもよい。
【００４６】
このように、携帯電話端末１は、指等の現実の物体の間に３次元オブジェクトＯＢ１が位置する状態が所定時間以上継続して検出された場合に、３次元オブジェクトＯＢ１が選択されたと判定する。指の間に３次元オブジェクトＯＢ１を挟むように指を配置するという操作は、人間が現実のオブジェクトを選択するためにオブジェクトを摘む操作と類似している。そのため、かかる操作は、３次元オブジェクトＯＢ１を選択するための操作として、直感的で分かりやすい。また、状態が所定時間以上継続して検出されることを条件として付加することにより、他の３次元オブジェクトＯＢ１を選択するために指を移動させる過程で、意図しない３次元オブジェクトＯＢ１が選択されることを抑止できる。
【００４７】
なお、３次元オブジェクトＯＢ１を操作するために用いられる物体は、指に限定されず、手、足、棒、虫ピン等であってもよい。また、携帯電話端末１は、２つの物体がタッチパネル３２の表示面と平行でない場合、すなわち、２つの物体を結ぶ直線がタッチパネル３２の表示面または表示面と水平な平面と交わる場合にも上記の条件に基づいて３次元オブジェクトＯＢ１を選択状態にする。このように、３次元オブジェクトＯＢ１が選択されたか否かを立体的に判定することにより、３次元オブジェクトＯＢ１の形状に合わせて選択操作を行い易くなる。
【００４８】
３次元オブジェクトＯＢ１が選択されたか否かを立体的に判定するためには、障害物が死角を作らないように、複数の撮影部を用意して異なる方向から指Ｆ１および指Ｆ２等を撮影することが望ましい。
【００４９】
携帯電話端末１は、３次元オブジェクトＯＢ１が選択状態になったと判定した後、指Ｆ１および指Ｆ２の動きに応じて、３次元オブジェクトＯＢ１に移動、回転、変形、消失等の変化を加える。
【００５０】
次に、図４〜図７を参照しながら、３次元オブジェクトＯＢ１の操作に関して携帯電話端末１が実行する処理手順について説明する。
【００５１】
ここで、図４は、３次元オブジェクトＯＢ１に対する選択と操作の一例を示す図である。図５は、３次元オブジェクトＯＢ１に対する選択と操作の別の一例を示す図である。本実施例は、３次元オブジェクトＯＢ１として、複数の立方体が直交する３方向に沿って配列されて構成された集合体である立体パズルを用いる。以下、図４から図７に示す例では、立体パズルの３次元オブジェクトＯＢ１として、図４および図５に示すように正多面体型立体パズルのうちの正六面体型立体パズルの２×２×２型のポケットキューブを用いた場合として説明する。３次元オブジェクトＯＢ１は、図４に示すように、全体をそのまま回転したり、図５に示すように任意の軸を軸として複数の立方体で構成される面を相対的に回転させたりすることができる。入力した操作と３次元オブジェクトＯＢ１に対して実行する処理との関係については後述する。また、３次元オブジェクトＯＢ１は、２×２×２型のポケットキューブに限定されず種々の立体パズルとすることができる。例えば、３×３×３型のルービックキューブ（登録商標）、４×４×４型のルービックリベンジ、および、５×５×５型のプロフェッサーキューブ等とすることができる。
【００５２】
図６は、３次元オブジェクトＯＢ１の選択検出処理の処理手順を示すフローチャートである。図６に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部２２が制御プログラム２４ａを実行することによって実現される。
【００５３】
図６に示すように、制御部２２は、まず、ステップＳ１０１として、３次元オブジェクトＯＢ１を立体的に表示する。具体的には、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。３次元オブジェクトＯＢ１を表示するためのデータは、予め記憶部２４に記憶されていてもよいし、通信部２６による無線通信によってサーバ装置等の他の装置から取得してもよい。
【００５４】
続いて、制御部２２は、ステップＳ１０２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。第１の物体および第２の物体は、例えば、利用者の指である。
【００５５】
すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して３次元オブジェクトＯＢ１を掴む位置に物体（第１の物体および第２の物体を含む）があること（３次元オブジェクトＯＢ１を片手で掴んでいる状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で３次元オブジェクトＯＢ１を掴む２組の物体（３次元オブジェクトＯＢ１を両手で掴んでいる状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で３次元オブジェクトＯＢ１を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【００５６】
第１の物体および第２の物体が検出されない場合（ステップＳ１０２，Ｎｏ）、制御部２２は、ステップＳ１１０として、操作終了が検出されたかを判定する。
【００５７】
操作終了は、例えば、操作部１３に対する所定の操作が行われた場合に検出されてもよいし、タッチパネル３２に対する所定の操作が行われた場合に検出されてもよい。また、操作終了は、撮影部４０または４２の少なくとも一方で利用者の手による所定のジェスチャーが撮影された場合に検出されてもよい。操作終了が検出された場合（ステップＳ１１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１１０，Ｎｏ）、制御部２２は、ステップＳ１０２以降を再実行する。
【００５８】
第１の物体および第２の物体が検出された場合（ステップＳ１０２，Ｙｅｓ）、制御部２２は、ステップＳ１０３として、表示されている３次元オブジェクトＯＢ１の中から第１の物体と第２の物体との間に表示されている３次元オブジェクトＯＢ１を探す。該当する３次元オブジェクトＯＢ１がない場合（ステップＳ１０４，Ｎｏ）、制御部２２は、ステップＳ１１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１１０，Ｎｏ）、制御部２２は、ステップＳ１０２以降を再実行する。
【００５９】
第１の物体と第２の物体との間に表示されている３次元オブジェクトＯＢ１がみつかった場合（ステップＳ１０４，Ｙｅｓ）、制御部２２は、ステップＳ１０５として、第１の物体と第２の物体との間に３次元オブジェクトＯＢ１が位置している時間を取得する。取得した時間が所定時間未満の場合（ステップＳ１０６，Ｎｏ）、制御部２２は、ステップＳ１１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１１０，Ｎｏ）、制御部２２は、ステップＳ１０２以降を再実行する。
【００６０】
取得した時間が所定時間以上の場合（ステップＳ１０６，Ｙｅｓ）、制御部２２は、ステップＳ１０７として、第１の物体と第２の物体の距離を算出する。また、制御部２２は、ステップＳ１０８として、第１の物体と第２の物体との間に表示されている３次元オブジェクトＯＢ１を選択状態にする。そして、制御部２２は、ステップＳ１０９として、後述する操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトＯＢ１を検出された操作に応じて変化させる。操作検出処理が終了した後、制御部２２は、ステップＳ１１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１１０，Ｎｏ）、制御部２２は、ステップＳ１０２以降を再実行する。
【００６１】
図７は、操作検出処理の処理手順を示すフローチャートである。図７に示す処理手順は、制御部２２が制御プログラム２４ａを実行することによって実現される。
【００６２】
図７に示すように、制御部２２は、まず、ステップＳ２０１として、第１の物体と第２の物体の距離を算出する。そして、制御部２２は、ステップＳ２０２として、操作検出処理の開始時点以降の第１の物体と第２の物体の距離がほぼ一定であるかを判定する。距離がほぼ一定とは、例えば、現時点での第１の物体と第２の物体の距離の変化量が、操作検出処理の開始時点の距離と比較して、所定の範囲（第１の物体および第２の物体が通常の速度で移動した場合の距離の最大変化量の±１０％等）以内に収まっていることを意味する。また、第１の物体と第２の物体の距離が操作検出処理の開始時点以降縮まり続けている場合（第１の物体および第２の物体が３次元オブジェクトＯＢ１を押しつぶす方向に移動している場合）に、距離がほぼ一定であると判定してもよい。また、手振れ等の範囲内でしか両者の距離が変化していない場合に、距離がほぼ一定であると判定してもよい。
【００６３】
第１の物体と第２の物体の距離がほぼ一定の場合（ステップＳ２０２，Ｙｅｓ）、制御部２２は、ステップＳ２０３として、第１の物体および第２の物体の移動速度を算出する。続いて、制御部２２は、ステップＳ２０４として、算出した移動速度が閾値以下であるかを判定する。ここで用いられる閾値は、例えば、人が物を放り投げるときの指先の移動速度である。また、閾値と比較される移動速度は、第１の物体の移動速度と第２の物体の移動速度の平均であってもよし、いずれか速い方であってもよいし、いずれか遅い方であってもよい。
【００６４】
移動速度が閾値以下の場合（ステップＳ２０４，Ｙｅｓ）、制御部２２は、ステップＳ２０５として、検出された第１の物体および第２の物体の動きに応じて３次元オブジェクトＯＢ１を移動させたり回転させたりする。具体的には、本実施例において、制御部２２は、ステップＳ２０５において、検出部の検出結果（すなわち、物体の動き）に応じて上述した図４および図５に示すような集合体（３次元オブジェクト）の各要素の位置を変化させる。すなわち、制御部２２は、検出部の検出結果に応じて上述した図４および図５に示すような立体パズル（３次元オブジェクト）のピースの位置を変化させる。例えば、第１の物体および第２の物体の右方向への移動が検出された場合、制御部２２は、第１の物体および第２の物体の移動に合わせて３次元オブジェクトＯＢ１を右方向へ移動させる。また、第１の物体および第２の物体の左回りでの回転が検出された場合、制御部２２は、第１の物体および第２の物体の回転に合わせて３次元オブジェクトＯＢ１を左回りで回転させる。また、移動と回転が同時に検出された場合、移動と回転が同時に実行される。なお、３次元オブジェクトＯＢ１の移動や回転に対する障害物がある場合、３次元オブジェクトＯＢ１が障害物に接触した時点で３次元オブジェクトＯＢ１の移動や回転を停止させてもよい。そして、制御部２２は、ステップＳ２０１以降を再実行する。
【００６５】
移動速度が閾値より速い場合（ステップＳ２０４，Ｎｏ）、制御部２２は、ステップＳ２０６として、３次元オブジェクトＯＢ１のアプリケーション（ゲーム）をリセットする。つまり、本実施例において、３次元オブジェクトＯＢ１が立体パズルであるので、制御部２２は、当該立体パズルのゲーム進行中に当該３次元オブジェクトＯＢ１を消去することで、ゲームをスタート時にリセットする。具体的には、制御部２２は、３次元オブジェクトＯＢ１を消去するに際して、３次元オブジェクトＯＢ１が第１の物体および第２の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部２２は、操作検出処理を終了させる。このように、３次元オブジェクトＯＢ１を放り投げるように第１の物体および第２の物体が高速で移動した場合に３次元オブジェクトＯＢ１を消去することにより、直感的な操作によって３次元オブジェクトＯＢ１の消去（すなわち、３次元オブジェクトＯＢ１のアプリケーションをリセット）を実現することができる。
【００６６】
第１の物体と第２の物体の距離がほぼ一定でない場合（ステップＳ２０２，Ｎｏ）、制御部２２は、ステップＳ２０７として、距離が、３次元オブジェクトＯＢ１の選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合（ステップＳ２０７，Ｙｅｓ）、制御部２２は、ステップＳ２０８として、３次元オブジェクトＯＢ１の選択状態を解除する。そして、制御部２２は、操作検出処理を終了させる。このように、第１の物体と第２の物体の距離を拡大するという操作は、摘んでいる現実のオブジェクトを放す操作と類似している。そのため、かかる操作は、３次元オブジェクトＯＢ１の選択を解除するための操作として、直感的で分かりやすい。
【００６７】
なお、本実施例においては、重力を考慮せず携帯電話端末１のタッチパネル３２の上面で３次元オブジェクトＯＢ１が浮いている状態として制御することを基本ルールとしているが、重力を考慮してユーザが３次元オブジェクトＯＢ１を掴んでいないと下に落ちるよう制御してもよい。具体的には、制御部２２は、ステップＳ２０８の処理の後、選択状態を解除した３次元オブジェクトＯＢ１を一定時間経過後重力等に従って移動させて、３次元オブジェクトＯＢ１を当初の配置場所（例えば、ゲームのスタート時のタッチパネル３２上の位置）に戻すこととしてもよい。ここで、制御部２２は、実際の重力が働く場合よりも３次元オブジェクトＯＢ１をゆっくりと移動させてもよい。そして、制御部２２は、操作検出処理を終了させる。なお、ここでの移動は、例えば、３次元オブジェクトＯＢ１が重力に従って落下し、床やテーブルの上で停止するように表示される。３次元オブジェクトＯＢ１の動きを停止させる前に、３次元オブジェクトＯＢ１の弾性や床やテーブルの硬度に応じて３次元オブジェクトＯＢ１をバウンドさせてもよい。３次元オブジェクトＯＢ１が床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には３次元オブジェクトＯＢ１を破損したように表示してもよい。この場合、上記ステップＳ２０６の処理と同様、ゲームはスタート時にリセットされるものとする。
【００６８】
なお、第１の物体と第２の物体の距離が３次元オブジェクトＯＢ１の選択時よりも拡大している場合に、３次元オブジェクトＯＢ１の選択状態を解除せずに３次元オブジェクトＯＢ１の表示サイズを拡大させてもよい。この場合、３次元オブジェクトＯＢ１の選択状態の解除の処理と区別するため、制御部２２は、上述の選択検出処理において２組の物体が３次元オブジェクトＯＢ１を選択して、本操作検出処理において物体が３次元オブジェクトＯＢ１を引き伸ばす動きを検出した場合（すなわち、両手で３次元オブジェクトＯＢ１を掴んで引き伸ばす動作を検出した場合）にのみ、３次元オブジェクトＯＢ１の選択状態を解除せずに３次元オブジェクトＯＢ１の表示サイズを拡大させるものとする。
【００６９】
一方、第１の物体と第２の物体の距離が３次元オブジェクトＯＢ１の選択時よりも縮まっている場合（ステップＳ２０７，Ｎｏ）、制御部２２は、ステップＳ２０９として、距離に応じて３次元オブジェクトＯＢ１の表示サイズを縮小する。これにより、ユーザは、視認空間内に立体表示されている３次元オブジェクトＯＢ１の表示サイズをユーザの好みに合うサイズに縮小できる。そして、制御部２２は、ステップＳ２０１以降を再実行する。３次元オブジェクトＯＢ１の表示サイズを縮小させる程度は、例えば、３次元オブジェクトＯＢ１に属性として設定されている弾性に応じて変更してもよい。例えば、制御部２２は、ゴム製のキューブ等を模した３次元オブジェクトＯＢ１のように属性として低い硬度が設定されているオブジェクトについては、第１の物体と第２の物体の距離が縮まるに応じて縮小の度合いを高めてよい。また、制御部２２は、プラスチック製のキューブ等を模した３次元オブジェクトＯＢ１のように属性として高い硬度が設定されているオブジェクトについては、第１の物体と第２の物体の距離が縮まっても縮小の度合いを小さく保ってよい。
【００７０】
なお、第１の物体と第２の物体の距離が３次元オブジェクトＯＢ１の選択時よりも著しく縮まっている場合に、すなわち、第１の物体と第２の物体の距離が所定の値以下になった場合に、３次元オブジェクトＯＢ１を破損したように表示してもよい。例えば、本実施例においては、上記ステップＳ２０６において上述した３次元オブジェクトＯＢ１を握りつぶす操作のように、３次元オブジェクトＯＢ１である立体パズルのゲーム進行中に当該３次元オブジェクトＯＢ１を消去することで、ゲームをスタート時にリセットしてもよい。
【００７１】
続いて、図８に示すフローチャートに沿って、適宜上述した図４および図５を参照して、本実施例における３次元オブジェクトＯＢ１の操作検出処理の詳細を説明する。ここで、図８は、上述した図７におけるステップＳ２０５の処理をより詳細に説明するものであり、単数の３次元オブジェクトＯＢ１に対する操作検出処理の処理手順の詳細を示すフローチャートである。
【００７２】
まず、制御部２２は、ステップＳ３０１として、検出部の検出結果（すなわち、物体の動き）に基づいて、３次元オブジェクトＯＢ１全体を回転させる動きを検出したか（すなわち、全体回転を検出したか）、または、３次元オブジェクトＯＢ１の一部を相対的に回転させる動きを検出したか（すなわち、相対回転を検出したか）を判定する。
【００７３】
具体的には、ステップＳ３０１において、制御部２２は、上述した図４に示すように、検出部を制御して３次元オブジェクトＯＢ１を掴む位置に物体（上述した図４において、指Ｆ１および指Ｆ２を含む）があること（上述した図４において、片手で掴む状態）を検出し、かつ、当該物体が３次元オブジェクトＯＢ１全体を回転させるよう移動したことを検出した場合）（ステップＳ３０１：全体回転）、上記全体回転させている状態にあると判定して、ステップＳ３０２へ進む。また、ステップＳ３０１において、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で３次元オブジェクトＯＢ１を掴む２組の物体（上述した図５において、両手で掴む状態）を検出し、さらに当該２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転させる動きを検出した場合（ステップＳ３０１：相対回転）、上記相対回転させている状態にあると判定して、ステップＳ３０３へ進む。
【００７４】
制御部２２は、ステップＳ３０１において全体回転を検出したと判定した場合（すなわち、検出部が、３次元オブジェクトＯＢ１を掴む位置に物体（上述した図４において、指Ｆ１および指Ｆ２を含む）があり、かつ、物体が移動したことを検出した場合）（ステップＳ３０１：全体回転）、ステップＳ３０２として、物体の動きに応じて、３次元オブジェクトＯＢ１を移動させるように制御する（全体回転表示制御）。つまり、制御部２２は、検出部の検出結果に応じて３次元オブジェクトＯＢ１全体をながめるように回転させるよう表示制御する。その後、処理を終了し、上述した図７におけるステップＳ２０１以降を再実行する。
【００７５】
一方、制御部２２は、ステップＳ３０１において相対回転を検出したと判定した場合（すなわち、検出部が、２箇所で３次元オブジェクトＯＢ１を掴む２組の物体（上述した図５において、両手で掴む状態）を検出し、さらに当該２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転させる動きを検出した場合）（ステップＳ３０１：相対回転）、ステップＳ３０３として、検出部の検出結果に応じて３次元オブジェクトＯＢ１（例えば、判別可能な表記がなされた立方体の集合体）において、同一面の表記（色、マーク、文字、番号、絵柄等）を合わせるためにブロックをある軸を基点に回転させる。この動作は、３Ｄ表示した任意数の立方体の集合体を操作するアプリケーションにおいて、最も基本的なルールとなる。
【００７６】
具体的には、ステップＳ３０３において、制御部は、上述した図５に示すように、検出部の検出結果に基づいて、６面のうち、直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、直交する３方向のうち他の方向と直交する複数の他の面においては、当該他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、一の方向を回転軸として、立方体を回転させるように制御する（相対回転表示制御）。より具体的には、上述した図５に示すように、検出部が、２箇所で３次元オブジェクトＯＢ１を掴む２組の物体（上述した図５において、指Ｆ１と指Ｆ２を含む１組の物体、および、指Ｆ３と指Ｆ４を含む１組の物体）を検出し、さらに２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転する動きを検出した場合、制御部２２は、２組の物体同士が対向する方向を一の方向と定め、相対的に回転する動きの回転量に応じて、立方体を回転させるように制御する。このようにして、制御部２２は、上述した図４および図５に示すような集合体（３次元オブジェクト）の各要素の位置を変化させる。すなわち、制御部２２は、検出部の検出結果に応じて上述した図４および図５に示すような立体パズル（３次元オブジェクト）のピースの位置を変化させる。その後、処理を終了し、上述した図７におけるステップＳ２０１以降を再実行する。
【００７７】
なお、本実施例は、３次元オブジェクトで表示する立体パズルに入力される操作と実行する処理との対応関係をより現実に即した処理とできるため、３次元オブジェクトを掴んだ場合の操作に対して実行する処理について説明したが、掴む以外の操作を検出し、入力された操作に応じた処理を実行してもよい。例えば、１つの物体の位置を検出し、その位置の移動に対応して３次元オブジェクトを回転させたり、２つの物体の位置を検出し、その２つの物体の位置と相対位置の変化に基づいて、３次元オブジェクトを構成する立方体を回転させる軸を特定し、特定した軸に基づいて、３次元オブジェクトを構成する立方体と立方体とを相対回転させてもよい。
【００７８】
また、掴む操作と掴む以外の操作の両方を検出し、入力された操作に応じて処理を実行することがより好ましい。例えば、３×３×３型の立体パズルの場合、上述した図５に示すように、３次元オブジェクトＯＢ１を片手で固定してもう片方の手で回す場合の他、両手で端のブロックを固定した状態で中央のブロックを指で押す操作が入力されたら、その指で押す方向（指の移動方向）に併せて中央のブロックを移動させてもよい。これにより、例えば、３×３×３型の立体パズルの場合、両端の軸以外の中央の軸）を基点にブロックを回転させたい場合に、３次元オブジェクトＯＢ１を両手で選択し、第３の入力手段で中央のブロックを押すことで、所望の操作を入力することができる。このように、掴む以外の操作に対応して処理を実行することで、実際に物理的なブロックに対しての操作と同様に、空いている指や他のユーザの手を利用することによって回転させることが可能となる。この場合、検出部は、２箇所で３次元オブジェクトＯＢ１を掴む２組の物体を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出した場合、制御部２２は、当該２組の物体のうち１組の物体（例えば、左手の親指と人差し指）と、当該２組の物体とは別の他の物体（例えば、右手の空いている中指）同士が対向する方向を一の方向と定め、相対的に回転する動きの回転量に応じて、立方体を回転させるように制御してもよい。
【００７９】
また、本実施例において、制御部２２は、上述したように、相対的に回転する動きの回転量に応じて、立方体を回転させるよう制御する際、さらに回転角度制御を行うものとする。具体的には、制御部２２は、４５度以上回転させたか否かにより、元に戻すかまたは９０度回転したと判断する。この回転角度制御においては、基本的な操作ルールとして、実際に物理的なブロックが存在した場合であっても、最小の回転角度は９０度であるため、仮想ブロックを回転させた際に、回転動作が実施されたか否かを４５度基準で判定することとする。つまり、４５度未満でブロックがリリースされた際は、ブロックを元の位置に戻すこととする。
【００８０】
また、本実施例において、制御部２２は、アプリケーション（ゲーム）をスタートしてから一定時間経過した後に、ブロックに対する操作補助を行うことが望ましい。携帯電話端末１側では、次にどのような入力を与えることでブロックを完成させられるかを把握しているため、制御部２２は、ユーザが次にどの軸を起点にどれだけ回転させればよいかをヒントとして別の位置に３Ｄ表示させることできる。この場合、表示情報に限らず、音声、文章、光等による通知も可能とする。但し、ゲーム性を失わないように、操作補助を出すか否かの選択を可能とし、操作補助を出す場合も一定時間ブロックに対して入力がないことを検出してから表示するものとする。
【００８１】
また、本実施例において、制御部２２は、制限時間を表示することが望ましい。これにより、スタートから制限時間を設けることで完成までの時間を記録することを可能とする。また、本実施例において、制御部２２は、立方体を回転させた回転数を表示することが望ましい。これにより、ブロックを回転させた回数をカウントして、完成までに何回回転させたかをカウントできる。この場合、コースレコードを設定し、ネットワーク上で共有できるものとする。
【００８２】
次に、図９から図１２を用いて、３次元オブジェクトを他の構成の立体パズルとした場合について説明する。ここで、図９は、複数の３次元オブジェクトに対する操作検出処理の処理手順の詳細を示すフローチャートである。図１０は、複数の３次元オブジェクトの表示の一例を示す図である。図１１は、図１０に示す複数の３次元オブジェクトに対する選択と操作の一例を示す図である。図１２は、図１０に示す複数の３次元オブジェクトに対する選択と操作の別の一例を示す図である。図９は、上述した図７におけるステップＳ２０５の処理をより詳細に説明するものであり、複数の３次元オブジェクトに対する操作検出処理の処理手順の詳細を示すフローチャートである。
【００８３】
ここで、図１０から図１２に示す制御対象および表示対象は、複数の３次元オブジェクトを入れ子にした状態で立体表示したものである。つまり、本実施例は、図１０〜図１２に示すように、実物の立体パズル（所謂、ルービックキューブ（登録商標）等）や従来の２Ｄ表示では実現できない、３Ｄ表示による複数のブロックを制御する一例である。ここで、図１０に示すように、本実施例の複数の３次元オブジェクトは、内側の３次元オブジェクトＯＢ１を２×２×２型の正六面体型立体パズル（所謂、ポケットキューブ）とし、外側の３次元オブジェクトＯＢ２を４×４×４型の正六面体型立体パズル（所謂、ルービックリベンジ）とする。
【００８４】
本実施例の場合も上述の図６におけるステップＳ１０１において、制御部２２は、表示部３２ａを制御して、３次元オブジェクトを表示する。具体的には、図１０に示すように、複数の３次元オブジェクト（内側の３次元オブジェクトＯＢ１と外側の３次元オブジェクトＯＢ２）を視認空間内に立体表示する。つまり、図１０に示すように、表示部３２ａは、一方の３次元オブジェクトＯＢ２内に他方の３次元オブジェクトＯＢ１を入れ子にした状態で立体表示する。この場合、外側と内側の異なるブロックを選択し、外側と内側のブロックの両方において、同一面上の色を揃えた時点でクリアとするアプリケーションを想定している。
【００８５】
次に、検出部で検出した操作に対して制御部で実行する処理について説明する。図９に示すように、制御部２２は、ステップＳ４０１として、第１の３次元オブジェクトＯＢ１（図１０において、内側の３次元オブジェクトＯＢ１）が選択されているか、または、第２の３次元オブジェクトＯＢ２（図１０において、外側の３次元オブジェクトＯＢ２）が選択されているかを判定する。具体的には、ステップＳ４０１において、制御部２２は、検出部によって検出された物体の座標と、３次元オブジェクト（第１の３次元オブジェクトＯＢ１および第２の３次元オブジェクトＯＢ２を含む）の座標を比較することで、第１の３次元オブジェクトＯＢ１が選択されているか、または、第２の３次元オブジェクトＯＢ２が選択されているかを判定する。
【００８６】
ここで、制御部２２は、ステップＳ４０１において第１の３次元オブジェクトＯＢ１が選択されていると判定した場合（ステップＳ４０１：第１の３次元オブジェクト）、ステップＳ４０２として、図１１に示すように、検出部を制御して３次元オブジェクトＯＢ１を掴む位置に物体があること（上述した図１１において、片手で掴む状態）を検出し、かつ、当該物体が３次元オブジェクトＯＢ１全体を回転させるよう移動したことを検出する（すなわち、全体回転を検出する）。
【００８７】
そして、制御部２２は、図９に示すように、ステップＳ４０３として、物体の動きに応じて、３次元オブジェクトＯＢ１を移動させるように制御する（全体回転表示制御）。つまり、制御部２２は、検出部の検出結果に応じて３次元オブジェクトＯＢ１全体をながめるように回転させるよう表示制御する。その後、処理を終了し、上述した図７におけるステップＳ２０１以降を再実行する。
【００８８】
このように、複数の３次元オブジェクトを入れ子にした場合は、図１１に示すように、表示部３２ａは、一方の３次元オブジェクトＯＢ２内に他方の３次元オブジェクトＯＢ１を入れ子にした状態で立体表示し、検出部が、他方の３次元オブジェクトＯＢ１を掴む位置に物体があり、かつ、物体が移動したことを検出した場合、制御部２２は、物体の動きに応じて、一方の３次元オブジェクトＯＢ２を移動させずに、他方の３次元オブジェクトＯＢ１のみを移動させるように制御する。つまり、内側の３次元オブジェクトＯＢ１の全体を回しても外側の３次元オブジェクトＯＢ２の全体は回らないものとする。
【００８９】
一方、制御部２２は、ステップＳ４０１において第２の３次元オブジェクトＯＢ２が選択されていると判定した場合（ステップＳ４０１：第２の３次元オブジェクト）、ステップＳ４０４として、検出部の検出結果（すなわち、物体の動き）に基づいて、当該第２の３次元オブジェクトＯＢ２全体を回転させる動きを検出したか（すなわち、全体回転を検出したか）、または、当該第２の３次元オブジェクトＯＢ２の一部を相対的に回転させる動きを検出したか（すなわち、相対回転を検出したか）を判定する。
【００９０】
具体的には、ステップＳ４０４において、制御部２２は、検出部を制御して３次元オブジェクトＯＢ２を掴む位置に物体があること（片手で掴む状態）を検出し、かつ、当該物体が３次元オブジェクトＯＢ２全体を回転させるよう移動したことを検出した場合）（ステップＳ４０４：全体回転）、全体回転させている状態にあると判定して、ステップＳ４０５へ進む。また、ステップＳ４０４において、制御部２２は、図１２に示すように、検出部を制御して２箇所で第２の３次元オブジェクトＯＢ２を掴む２組の物体（両手で掴む状態）を検出し、さらに当該２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転させる動きを検出した場合（ステップＳ４０４：相対回転）、相対回転させている状態にあると判定して、ステップＳ４０６へ進む。
【００９１】
制御部２２は、ステップＳ４０４において全体回転を検出したと判定した場合（すなわち、検出部が、第２の３次元オブジェクトＯＢ２を掴む位置に物体があり、かつ、物体が移動したことを検出した場合）（ステップＳ４０４：全体回転）、ステップＳ４０５として、物体の動きに応じて、第２の３次元オブジェクトＯＢ２を移動させるように制御する（全体回転表示制御）。つまり、制御部２２は、検出部の検出結果に応じて第２の３次元オブジェクトＯＢ２全体をながめるように回転させるよう表示制御する。その後、処理を終了し、上述した図７におけるステップＳ２０１以降を再実行する。
【００９２】
一方、制御部２２は、ステップＳ４０４において相対回転を検出したと判定した場合（すなわち、図１２に示すように、検出部が、２箇所で第２の３次元オブジェクトＯＢ２を掴む２組の物体（両手で掴む状態）を検出し、さらに当該２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転させる動きを検出した場合）（ステップＳ４０４：相対回転）、ステップＳ４０６として、図１２に示すように、検出部の検出結果に応じて第２の３次元オブジェクトＯＢ２（例えば、判別可能な表記がなされた立方体の集合体）において、同一面の表記（色、マーク、文字、番号、絵柄等）を合わせるためにブロックをある軸を基点に回転させる。
【００９３】
具体的には、ステップＳ４０６において、制御部２２は、図１２に示すように、検出部の検出結果に基づいて、６面のうち、直交する３方向のうち一の方向に直交する面においては、当該直交する面を構成する各要素同士の位置関係が変化せず、かつ、直交する３方向のうち他の方向と直交する複数の他の面においては、当該他の面を構成する各要素同士が、当該複数の他の面の間で入れ替わるように、一の方向を回転軸として、立方体を回転させるように制御する（相対回転表示制御）。この際、図１２に示すように、検出部が、２箇所で第２の３次元オブジェクトＯＢ２を掴む２組の物体を検出し、さらに２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転する動きを検出した場合、制御部２２は、２組の物体同士が対向する方向を一の方向と定め、相対的に回転する動きの回転量に応じて、立方体を回転させるように制御する。
【００９４】
より具体的には、複数の３次元オブジェクトを入れ子にした場合は、図１２に示すように、表示部３２ａは、第２の３次元オブジェクトＯＢ２内に第１の３次元オブジェクトＯＢ１を入れ子にした状態で立体表示し、検出部が、複数の３次元オブジェクトＯＢ１，ＯＢ２のうち一方の第２の３次元オブジェクトＯＢ２に対して、２箇所で一方の第２の３次元オブジェクトＯＢ２を掴む２組の物体を検出し、さらに２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転する動きを検出した場合、制御部２２は、２組の物体同士が対向する方向を一の方向と定め、第２の３次元オブジェクトＯＢ２に対する相対的に回転する動きの回転量に応じて、第２の３次元オブジェクトＯＢ２を構成する立方体と、複数の３次元オブジェクトＯＢ１，ＯＢ２のうち第１の３次元オブジェクトＯＢ１を構成する立方体とが連動して回転するように制御する。つまり、外側の第２の３次元オブジェクトＯＢ２の列を回すと内側の第１の３次元オブジェクトＯＢ１の対応する列も回るものとする。その後、処理を終了し、上述した図７におけるステップＳ２０１以降を再実行する。
【００９５】
次に、図１３および図１４を用いて、３次元オブジェクトを他の構成の立体パズルをした場合について説明する。ここで、図１３は、複数の３次元オブジェクトの表示の別の一例を示す図である。図１４は、図１３に示す複数の３次元オブジェクトに対する選択と操作の一例を示す図である。図１３および図１４は、複数の３次元オブジェクトを別個にした場合である。図１３および図１４に示す例も、実物の立体パズル（所謂、ルービックキューブ（登録商標）等）や従来の２Ｄ表示では実現できない、３Ｄ表示による複数のブロックを制御する一例である。具体的には、２つの３次元オブジェクト（立体パズル）を設定した規則に基づいて連動して回転させる。
【００９６】
本実施例の場合も上述の図６におけるステップＳ１０１において、制御部２２は、表示部３２ａを制御して、３次元オブジェクトを表示する。具体的には、図１３に示すように、表示部３２ａは、複数の３次元オブジェクト（３次元オブジェクトＯＢ１と３次元オブジェクトＯＢ２）をそれぞれ同一の視認空間内で並べて立体表示する。図１３に示す３次元オブジェクトＯＢ１（ブロックＡ）と３次元オブジェクトＯＢ２（ブロックＢ）とは、２×２×２型の正六面体型立体パズル（所謂、ポケットキューブ）である。この場合、ブロックＡを選択し、ブロックＡとブロックＢの両方において、同一面上の色を揃えた時点でクリアとするアプリケーションを想定している。
【００９７】
次に、検出部で検出した操作に対して制御部で実行する処理について説明する。なお、本実施例の操作検出処理は、上述した複数の３次元オブジェクトを入れ子にした状態で立体表示する場合と基本的に同様であるため、以下の図９におけるステップＳ４０３とステップＳ４０６以外の各ステップの説明は省略する。
【００９８】
ステップＳ４０２において、検出部が、第１の３次元オブジェクトＯＢ１（図１３において、ブロックＡ）を掴む位置に物体があり、かつ、物体が移動したことを検出した後、制御部２２は、ステップＳ４０３として、第１の３次元オブジェクトＯＢ１に対する物体の動きに応じて、第１の３次元オブジェクトＯＢ１と、第２の３次元オブジェクトＯＢ２（図１３において、ブロックＢ）とが連動して移動するように制御する（全体回転表示制御）。この場合、図１３に示す第１の３次元オブジェクトＯＢ１（ブロックＡ）においては、特定の軸を回すことは不可とし、唯一ブロック全体を回すことは可能とするものとする。
【００９９】
また、ステップＳ４０４において、図１４に示すように、検出部が複数の３次元オブジェクトＯＢ１，ＯＢ２のうち第２の３次元オブジェクトＯＢ２（図１４において、ブロックＢ）に対して、２箇所で一方の第２の３次元オブジェクトＯＢ２を掴む２組の物体を検出し、さらに２組の物体同士が対向する方向を中心に、２組の物体同士が相対的に回転する動きを検出した場合（ステップＳ４０４：相対回転）、制御部２２は、ステップＳ４０６として、２組の物体同士が対向する方向を一の方向と定め、第２の３次元オブジェクトＯＢ２に対する相対的に回転する動きの回転量に応じて、第２の３次元オブジェクトＯＢ２を構成する立方体と、複数の３次元オブジェクトＯＢ１，ＯＢ２のうち第１の３次元オブジェクトＯＢ１を構成する立方体とが連動して回転するように制御する（相対回転表示制御）。つまり、図１４に示すように第２の３次元オブジェクトＯＢ２（ブロックＢ）の列を回すと第１の３次元オブジェクトＯＢ１（ブロックＡ）の対応する列も回るものとする。
【０１００】
このように、ブロックＡとブロックＢは互いにブロックに対して影響しあう関係になっており、さらに、ブロックＢの向きを変化させることで、過去のブロックＡとブロックＢの位置関係が再度新しい関係として紐付けされる。このように、本実施例によれば、３Ｄアプリケーションを通して、複数の３次元オブジェクトの同時選択ができ、さらに複数の３次元オブジェクトに対して異なる入力を行うことができる。
【０１０１】
上述してきたように、第１の実施例では、指等の物体の間に３次元オブジェクトが位置する状態が所定時間以上継続した場合に３次元オブジェクトが選択されることとしたので、３次元オブジェクトの選択を直感的で分かりやすい操作により実現することができる。
【０１０２】
なお、図１５に示すように、第１の物体と第２の物体のうち少なくとも一方が３次元オブジェクトに接触している状態が所定時間以上継続することを、３次元オブジェクトを選択する条件としてもよい。３次元オブジェクトへの接触を選択の条件とすることにより、複数の３次元オブジェクトが近接して表示されている場合に、利用者が所望の３次元オブジェクトを選択し易くなる。
【０１０３】
図１６は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。図１６に示すように、制御部２２は、まず、ステップＳ５０１として、３次元オブジェクトを立体的に表示する。具体的には、本実施例において、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。
【０１０４】
続いて、制御部２２は、ステップＳ５０２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して集合体を掴む位置に物体（第１の物体および第２の物体を含む）があること（上述した図４において、片手で掴む状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で集合体を掴む２組の物体（上述した図５において、両手で掴む状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で集合体を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【０１０５】
第１の物体および第２の物体が検出されない場合（ステップＳ５０２，Ｎｏ）、制御部２２は、ステップＳ５１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ５１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ５１０，Ｎｏ）、制御部２２は、ステップＳ５０２以降を再実行する。
【０１０６】
第１の物体および第２の物体が検出された場合（ステップＳ５０２，Ｙｅｓ）、制御部２２は、ステップＳ５０３として、表示されている３次元オブジェクトの中から第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトを探す。該当する３次元オブジェクトがない場合（ステップＳ５０４，Ｎｏ）、制御部２２は、ステップＳ５１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ５１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ５１０，Ｎｏ）、制御部２２は、ステップＳ５０２以降を再実行する。
【０１０７】
第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトがみつかった場合（ステップＳ５０４，Ｙｅｓ）、制御部２２は、ステップＳ５０５として、第１の物体と第２の物体との間に３次元オブジェクトが位置している時間を取得する。取得した時間が所定時間未満の場合（ステップＳ５０６，Ｎｏ）、制御部２２は、ステップＳ５１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ５１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ５１０，Ｎｏ）、制御部２２は、ステップＳ５０２以降を再実行する。
【０１０８】
取得した時間が所定時間以上の場合（ステップＳ５０６，Ｙｅｓ）、制御部２２は、ステップＳ５０７として、第１の物体と第２の物体の距離を算出する。また、制御部２２は、ステップＳ５０８として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを選択状態にする。そして、制御部２２は、ステップＳ５０９として、上述した操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトを検出された操作に応じて変化させる。操作検出処理が終了した後、制御部２２は、ステップＳ５１０として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ５１０，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ５１０，Ｎｏ）、制御部２２は、ステップＳ５０２以降を再実行する。
【実施例２】
【０１０９】
以下に、第２の実施例について説明する。第２の実施例に係る携帯電話端末１は、制御プログラム２４ａが提供する機能に基づいて実行する選択検出処理の処理手順が第１の実施例と異なるものの、ハードウェアとして見ると、第１の実施例に係る携帯電話端末１と同一の構成を有する。そこで、第２の実施例では、第１の実施例と重複する説明は省略し、主として、選択検出処理について説明する。
【０１１０】
まず、図１７を参照しながら、３次元オブジェクトに対する操作の検出について説明する。図１７は、３次元オブジェクトに対する操作の検出について説明するための図である。図１７に示すステップＳ２１では、タッチパネル３２によって、視認空間中に、３次元オブジェクトＯＢ１が立体的に表示されている。また、３次元オブジェクトＯＢ１を選択するために、利用者は、指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させている。
【０１１１】
携帯電話端末１は、視認空間内で２つの物体が検出され、かつ、それらの２つの物体の間に３次元オブジェクトＯＢ１が位置する場合、２つの物体の距離の変化を監視する。そして、距離が所定時間以上ほぼ一定であれば、３次元オブジェクトＯＢ１が選択されたと判定し、３次元オブジェクトＯＢ１を選択状態にする。そして、携帯電話端末１は、３次元オブジェクトＯＢ１の表示態様を変更する等して、３次元オブジェクトＯＢ１が選択状態になったことを利用者に通知する。
【０１１２】
携帯電話端末１が２つの物体の距離の変化を監視している間、２つの物体は、３次元オブジェクトＯＢ１を挟む位置に留まる必要はない。すなわち、利用者は、ステップＳ２１に示したように指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させた後、その状態を保つことなく、指Ｆ１および指Ｆ２を他の位置へ移動させて構わない。
【０１１３】
ステップＳ２１の状態から、ステップＳ２２に示すように、利用者が、指Ｆ１と指Ｆ２の距離Ｄ１をほぼ一定に保ったまま移動させたものとする。この場合、携帯電話端末１は、ステップＳ２３に示すように、指Ｆ１と指Ｆ２の距離Ｄ１がほぼ一定に保たれた状態が所定時間以上継続した段階で、３次元オブジェクトＯＢ１を選択状態にする。そして、携帯電話端末１は、３次元オブジェクトＯＢ１を、あたかもステップＳ２１の段階で既に選択されていたかのように、指Ｆ１および指Ｆ２の間に移動させる。ステップＳ２１からステップＳ２３までの指Ｆ１と指Ｆ２の動きを記憶しておき、記憶しておいた動きに合わせて３次元オブジェクトＯＢ１を回転等させてもよい。その後、携帯電話端末１は、指Ｆ１および指Ｆ２の動きに応じて、３次元オブジェクトＯＢ１に移動、回転、変形、消失等の変化を加える。
【０１１４】
このように、２つの物体が３次元オブジェクトを挟む位置に一旦移動した後は、物体がその場に留まらなくても３次元オブジェクトを選択可能にすることにより、利用者は、３次元オブジェクトを選択した後の操作を迅速に開始することができる。
【０１１５】
次に、図１８を参照しながら、３次元オブジェクトの操作に関して携帯電話端末１が実行する処理手順について説明する。図１８は、３次元オブジェクトの選択検出処理の処理手順を示すフローチャートである。図１８に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部２２が制御プログラム２４ａを実行することによって実現される。
【０１１６】
図１８に示すように、制御部２２は、まず、ステップＳ６０１として、３次元オブジェクトを立体的に表示する。具体的には、本実施例において、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。
【０１１７】
続いて、制御部２２は、ステップＳ６０２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して集合体を掴む位置に物体（第１の物体および第２の物体を含む）があること（上述した図４において、片手で掴む状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で集合体を掴む２組の物体（上述した図５において、両手で掴む状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で集合体を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【０１１８】
第１の物体および第２の物体が検出されない場合（ステップＳ６０２，Ｎｏ）、制御部２２は、ステップＳ６１４として、仮選択状態の３次元オブジェクトがあれば、その３次元オブジェクトの仮選択状態を解除する。仮選択状態とは、２つの物体の間に３次元オブジェクトが表示されている状態が検出された後、２つの物体の距離がほぼ一定に保たれているかが監視されている状態である。
【０１１９】
そして、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２０】
第１の物体および第２の物体が検出された場合（ステップＳ６０２，Ｙｅｓ）、制御部２２は、ステップＳ６０３として、仮選択状態の３次元オブジェクトがあるか否かを判定する。仮選択状態の３次元オブジェクトがない場合（ステップＳ６０３，Ｎｏ）、制御部２２は、ステップＳ６０４として、表示されている３次元オブジェクトの中から第１の物体と第２の物体との間に表示されている３次元オブジェクトを探す。
【０１２１】
該当する３次元オブジェクトがない場合（ステップＳ６０５，Ｎｏ）、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２２】
第１の物体と第２の物体との間に表示されている３次元オブジェクトがみつかった場合（ステップＳ６０５，Ｙｅｓ）、制御部２２は、ステップＳ６０６として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを仮選択状態にする。また、制御部２２は、ステップＳ６０７として、第１の物体と第２の物体の距離を算出する。
【０１２３】
そして、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２４】
第１の物体および第２の物体が検出され、かつ、仮選択状態の３次元オブジェクトがある場合（ステップＳ６０３，Ｙｅｓ）、制御部２２は、ステップＳ６０８として、第１の物体と第２の物体の距離を算出する。そして、制御部２２は、ステップＳ６０９として、距離がほぼ一定であるかを判定する。距離がほぼ一定でない場合（ステップＳ６０９，Ｎｏ）、制御部２２は、ステップＳ６１４として、仮選択状態の３次元オブジェクトの仮選択状態を解除する。
【０１２５】
そして、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２６】
第１の物体と第２の物体の距離がほぼ一定の場合（ステップＳ６０９，Ｙｅｓ）、制御部２２は、ステップＳ６１０として、距離がほぼ一定に保たれている期間が所定時間以上であるかを判定する。距離がほぼ一定に保たれている期間が所定時間未満の場合（ステップＳ６１０，Ｎｏ）、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２７】
距離がほぼ一定に保たれている期間が所定時間以上の場合（ステップＳ６１０，Ｙｅｓ）、制御部２２は、ステップＳ６１１として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを選択状態にする。また、制御部２２は、ステップＳ６１２として、第１の物体と第２の物体との間に３次元オブジェクトを移動させる。そして、制御部２２は、ステップＳ６１３として、上述の図７〜図９に示した操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトを検出された操作に応じて変化させる。
【０１２８】
操作検出処理が終了した後、制御部２２は、ステップＳ６１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ６１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ６１５，Ｎｏ）、制御部２２は、ステップＳ６０２以降を再実行する。
【０１２９】
上述してきたように、第２の実施例では、指等の物体の間に３次元オブジェクトが位置した後、物体の距離が所定時間以上ほぼ一定に保たれた場合に３次元オブジェクトが選択されることとしたので、利用者は、３次元オブジェクトの選択後の操作を迅速に開始することができる。
【０１３０】
なお、図１９に示すステップＳ３１からステップＳ３３のように、第１の物体と第２の物体のうち少なくとも一方が３次元オブジェクトに接触した後に第１の物体と第２の物体の距離が所定時間以上ほぼ一定に保たれることを、３次元オブジェクトを選択する条件としてもよい。ここで、図１９は、３次元オブジェクトに対する操作の検出の他の例について説明するための図である。３次元オブジェクトへの接触を選択の条件とすることにより、複数の３次元オブジェクトが近接して表示されている場合に、利用者が所望の３次元オブジェクトを選択し易くなる。
【０１３１】
図２０は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。図２０に示すように、制御部２２は、まず、ステップＳ７０１として、３次元オブジェクトを立体的に表示する。具体的には、本実施例において、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。
【０１３２】
続いて、制御部２２は、ステップＳ７０２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して集合体を掴む位置に物体（第１の物体および第２の物体を含む）があること（上述した図４において、片手で掴む状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で集合体を掴む２組の物体（上述した図５において、両手で掴む状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で集合体を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【０１３３】
第１の物体および第２の物体が検出されない場合（ステップＳ７０２，Ｎｏ）、制御部２２は、ステップＳ７１４として、仮選択状態の３次元オブジェクトがあれば、その３次元オブジェクトの仮選択状態を解除する。仮選択状態とは、２つの物体の間に３次元オブジェクトが表示されている状態が検出された後、２つの物体の距離がほぼ一定に保たれているかが監視されている状態である。
【０１３４】
そして、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【０１３５】
第１の物体および第２の物体が検出された場合（ステップＳ７０２，Ｙｅｓ）、制御部２２は、ステップＳ７０３として、仮選択状態の３次元オブジェクトがあるか否かを判定する。仮選択状態の３次元オブジェクトがない場合（ステップＳ７０３，Ｎｏ）、制御部２２は、ステップＳ７０４として、表示されている３次元オブジェクトの中から第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトを探す。
【０１３６】
該当する３次元オブジェクトがない場合（ステップＳ７０５，Ｎｏ）、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【０１３７】
第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトがみつかった場合（ステップＳ７０５，Ｙｅｓ）、制御部２２は、ステップＳ７０６として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを仮選択状態にする。また、制御部２２は、ステップＳ７０７として、第１の物体と第２の物体の距離を算出する。
【０１３８】
そして、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【０１３９】
第１の物体および第２の物体が検出され、かつ、仮選択状態の３次元オブジェクトがある場合（ステップＳ７０３，Ｙｅｓ）、制御部２２は、ステップＳ７０８として、第１の物体と第２の物体の距離を算出する。そして、制御部２２は、ステップＳ７０９として、距離がほぼ一定であるかを判定する。距離がほぼ一定でない場合（ステップＳ７０９，Ｎｏ）、制御部２２は、ステップＳ７１４として、仮選択状態の３次元オブジェクトの仮選択状態を解除する。
【０１４０】
そして、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【０１４１】
第１の物体と第２の物体の距離がほぼ一定の場合（ステップＳ７０９，Ｙｅｓ）、制御部２２は、ステップＳ７１０として、距離がほぼ一定に保たれている期間が所定時間以上であるかを判定する。距離がほぼ一定に保たれている期間が所定時間未満の場合（ステップＳ７１０，Ｎｏ）、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【０１４２】
距離がほぼ一定に保たれている期間が所定時間以上の場合（ステップＳ７１０，Ｙｅｓ）、制御部２２は、ステップＳ７１１として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを選択状態にする。また、制御部２２は、ステップＳ７１２として、第１の物体と第２の物体との間に３次元オブジェクトを移動させる。そして、制御部２２は、ステップＳ７１３として、上述の図７〜図９に示した操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトを検出された操作に応じて変化させる。
【０１４３】
操作検出処理が終了した後、制御部２２は、ステップＳ７１５として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ７１５，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ７１５，Ｎｏ）、制御部２２は、ステップＳ７０２以降を再実行する。
【実施例３】
【０１４４】
以下に、第３の実施例について説明する。第３の実施例に係る携帯電話端末１は、制御プログラム２４ａが提供する機能に基づいて実行する選択検出処理および操作検出処理の処理手順が第１の実施例と異なるものの、ハードウェアとして見ると、第１の実施例に係る携帯電話端末１と同一の構成を有する。そこで、第３の実施例では、第１の実施例と重複する説明は省略し、主として、選択検出処理および操作検出処理について説明する。
【０１４５】
まず、図２１および図２２を参照しながら、３次元オブジェクトに対する操作の検出について説明する。図２１および図２２は、３次元オブジェクトに対する操作の検出について説明するための図である。図２１に示すステップＳ４１では、タッチパネル３２によって、視認空間中に、３次元オブジェクトＯＢ１が立体的に表示されている。また、３次元オブジェクトＯＢ１を選択するために、利用者は、指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させている。
【０１４６】
携帯電話端末１は、視認空間内で２つの物体が検出され、かつ、それらの２つの物体の間に３次元オブジェクトＯＢ１が位置する場合、２つの物体の距離の変化を監視する。そして、距離が所定時間以上ほぼ一定であれば、３次元オブジェクトＯＢ１が選択されたと判定し、３次元オブジェクトＯＢ１を選択状態にする。そして、携帯電話端末１は、３次元オブジェクトＯＢ１の表示態様を変更する等して、３次元オブジェクトＯＢ１が選択状態になったことを利用者に通知する。
【０１４７】
携帯電話端末１が２つの物体の距離の変化を監視している間、２つの物体は、３次元オブジェクトＯＢ１を挟む位置に留まる必要はない。すなわち、利用者は、ステップＳ４１に示したように指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させた後、その状態を保つことなく、指Ｆ１および指Ｆ２を他の位置へ移動させて構わない。
【０１４８】
ステップＳ４１の状態から、ステップＳ４２に示すように、利用者が、指Ｆ１と指Ｆ２の距離Ｄ１をほぼ一定に保ったまま移動させたものとする。この場合、携帯電話端末１は、指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が表示されていることが検出された段階、すなわち、ステップＳ４１の段階から、指Ｆ１および指Ｆ２の動きに応じて、３次元オブジェクトＯＢ１に移動、回転、変形、消失等の変化を加える。そして、携帯電話端末１は、ステップＳ４３に示すように、指Ｆ１と指Ｆ２の距離Ｄ１がほぼ一定に保たれた状態が所定時間以上継続した段階で、３次元オブジェクトＯＢ１を選択状態にする。
【０１４９】
なお、図２２のステップＳ５１からステップＳ５３に示すように、所定時間が経過する前に指Ｆ１と指Ｆ２の距離Ｄ１が離れた場合、すなわち、選択が行われなかった場合、携帯電話端末１は、それまでに加えた変化と逆の変化を３次元オブジェクトＯＢ１に加える。その結果、３次元オブジェクトＯＢ１は、ステップＳ５１の段階と同じ位置に同じ状態で表示される。逆の変化を３次元オブジェクトＯＢ１に加える速度は、それまでに３次元オブジェクトＯＢ１に変化が加えられた速度よりも速くてもよい。すなわち、高速に逆再生しているかのように３次元オブジェクトＯＢ１を逆変化させてもよい。
【０１５０】
このように、２つの物体の間に３次元オブジェクトが表示されていることが検出された段階から３次元オブジェクトに変化を加え始めることにより、利用者は、３次元オブジェクトが選択されつつあることを選択が確定する前から認識することができる。その結果、利用者は、意図した３次元オブジェクトが選択されたか否かを早期に知ることができる。なお、２つの物体の距離がほぼ一定に保たれた状態が所定時間以上継続するまでは、変化を加えられている３次元オブジェクトを通常時とも選択状態とも異なる態様（例えば、半透明）で表示することにより、利用者が３次元オブジェクトの状態を判別しやすくしてもよい。
【０１５１】
次に、図２３および図２４を参照しながら、３次元オブジェクトの操作に関して携帯電話端末１が実行する処理手順について説明する。図２３は、３次元オブジェクトの選択検出処理の処理手順を示すフローチャートである。図２３に示す処理手順は、所定の操作が検出されたこと等を契機として、制御部２２が制御プログラム２４ａを実行することによって実現される。
【０１５２】
図２３に示すように、制御部２２は、まず、ステップＳ８０１として、３次元オブジェクトを立体的に表示する。具体的には、本実施例において、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。
【０１５３】
続いて、制御部２２は、ステップＳ８０２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して集合体を掴む位置に物体（第１の物体および第２の物体を含む）があること（上述した図４において、片手で掴む状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で集合体を掴む２組の物体（上述した図５において、両手で掴む状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で集合体を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【０１５４】
第１の物体および第２の物体が検出されない場合（ステップＳ８０２，Ｎｏ）、制御部２２は、ステップＳ８１０として、仮選択状態の３次元オブジェクトがあれば、その３次元オブジェクトの仮選択状態を解除する。
【０１５５】
そして、制御部２２は、ステップＳ８１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ８１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ８１１，Ｎｏ）、制御部２２は、ステップＳ８０２以降を再実行する。
【０１５６】
第１の物体および第２の物体が検出された場合（ステップＳ８０２，Ｙｅｓ）、制御部２２は、ステップＳ８０３として、仮選択状態の３次元オブジェクトがあるか否かを判定する。仮選択状態の３次元オブジェクトがない場合（ステップＳ８０３，Ｎｏ）、制御部２２は、ステップＳ８０４として、表示されている３次元オブジェクトの中から第１の物体と第２の物体との間に表示されている３次元オブジェクトを探す。
【０１５７】
該当する３次元オブジェクトがない場合（ステップＳ８０５，Ｎｏ）、制御部２２は、ステップＳ８１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ８１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ８１１，Ｎｏ）、制御部２２は、ステップＳ８０２以降を再実行する。
【０１５８】
第１の物体と第２の物体との間に表示されている３次元オブジェクトがみつかった場合（ステップＳ８０５，Ｙｅｓ）、制御部２２は、ステップＳ８０６として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを仮選択状態にする。また、制御部２２は、ステップＳ８０７として、第１の物体と第２の物体の距離を算出する。
【０１５９】
そして、制御部２２は、ステップＳ８１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ８１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ８１１，Ｎｏ）、制御部２２は、ステップＳ８０２以降を再実行する。
【０１６０】
第１の物体および第２の物体が検出され、かつ、仮選択状態の３次元オブジェクトがある場合（ステップＳ８０３，Ｙｅｓ）、制御部２２は、ステップＳ８０８として、第１の物体と第２の物体の少なくとも一方が移動しているかを判定する。第１の物体と第２の物体のいずれも移動していない場合（ステップＳ８０８，Ｎｏ）、制御部２２は、ステップＳ８１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ８１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ８１１，Ｎｏ）、制御部２２は、ステップＳ８０２以降を再実行する。
【０１６１】
第１の物体と第２の物体の少なくとも一方が移動している場合（ステップＳ８０８，Ｙｅｓ）、制御部２２は、ステップＳ８０９として、図２４に示す操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトを検出された操作に応じて変化させる。
【０１６２】
操作検出処理が終了した後、制御部２２は、ステップＳ８１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ８１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ８１１，Ｎｏ）、制御部２２は、ステップＳ８０２以降を再実行する。
【０１６３】
図２４は、操作検出処理の処理手順を示すフローチャートである。図２４に示す処理手順は、制御部２２が制御プログラム２４ａを実行することによって実現される。図２４に示すように、制御部２２は、まず、ステップＳ９０１として、第１の物体と第２の物体の距離を算出する。そして、制御部２２は、ステップＳ９０２として、操作検出処理の開始時点以降の第１の物体と第２の物体の距離がほぼ一定であるかを判定する。
【０１６４】
第１の物体と第２の物体の距離がほぼ一定の場合（ステップＳ９０２，Ｙｅｓ）、制御部２２は、ステップＳ９０３として、操作検出処理が開始されてから所定時間が経過したかを判定する。所定時間が経過していた場合（ステップＳ９０３，Ｙｅｓ）、制御部２２は、ステップＳ９０４として、仮選択状態の３次元オブジェクトがあれば、その３次元オブジェクトを選択状態にする。所定時間が経過していない場合（ステップＳ９０３，Ｎｏ）、ステップＳ９０４は実行されない。
【０１６５】
続いて、制御部２２は、ステップＳ９０５として、第１の物体および第２の物体の移動速度を算出する。そして、制御部２２は、ステップＳ９０６として、算出した移動速度が閾値以下であるかを判定する。移動速度が閾値以下の場合（ステップＳ９０６，Ｙｅｓ）、制御部２２は、ステップＳ９０７として、検出された第１の物体および第２の物体の動きに応じて３次元オブジェクトを移動させたり回転させたりする。具体的には、本実施例において、制御部２２は、ステップＳ９０７において、検出部の検出結果（すなわち、物体の動き）に応じて上述した図４，５および図１０〜図１４に示すような集合体（３次元オブジェクト）の各要素の位置を変化させる。すなわち、制御部２２は、検出部の検出結果に応じて上述した図４，５および図１０〜図１４に示すような立体パズル（３次元オブジェクト）のピースの位置を変化させる。そして、制御部２２は、ステップＳ９０１以降を再実行する。
【０１６６】
移動速度が閾値より速い場合（ステップＳ９０６，Ｎｏ）、制御部２２は、ステップＳ９０８として、３次元オブジェクトのアプリケーション（ゲーム）をリセットする。つまり、本実施例において、３次元オブジェクトが立体パズルであるので、制御部２２は、当該立体パズルのゲーム進行中に当該３次元オブジェクトを消去することで、ゲームをスタート時にリセットする。具体的には、制御部２２は、３次元オブジェクトを消去するに際して、３次元オブジェクトが第１の物体および第２の物体の移動方向へ向けて飛んでいくようにアニメーション表示してもよい。そして、制御部２２は、操作検出処理を終了させる。
【０１６７】
第１の物体と第２の物体の距離がほぼ一定でない場合（ステップＳ９０２，Ｎｏ）、制御部２２は、ステップＳ９０９として、距離が、３次元オブジェクトの選択時、すなわち、操作検出処理の開始時点よりも拡大しているかを判定する。距離が拡大している場合（ステップＳ９０９，Ｙｅｓ）、制御部２２は、ステップＳ９１０として、第１の物体と第２の物体の間に表示されていた３次元オブジェクトが仮選択状態であるかを判定する。
【０１６８】
３次元オブジェクトが仮選択状態である場合（ステップＳ９１０，Ｙｅｓ）、制御部２２は、ステップＳ９１１として、３次元オブジェクトの仮選択状態を解除する。また、制御部２２は、ステップＳ９１２として、３次元オブジェクトを逆変化させて元の状態に戻す。そして、制御部２２は、操作検出処理を終了させる。
【０１６９】
３次元オブジェクトが仮選択状態でない場合、すなわち、選択状態の場合（ステップＳ９１０，Ｎｏ）、制御部２２は、ステップＳ９１３として、３次元オブジェクトの選択状態を解除する。そして、制御部２２は、操作検出処理を終了させる。
【０１７０】
なお、本実施例においては、重力を考慮せず携帯電話端末１のタッチパネル３２の上面で３次元オブジェクトが浮いている状態として制御することを基本ルールとしているが、重力を考慮してユーザが３次元オブジェクトを掴んでいないと下に落ちるよう制御してもよい。具体的には、制御部２２は、ステップＳ９１３の後、選択状態を解除した３次元オブジェクトを一定時間経過後重力等に従って移動させて、３次元オブジェクトを当初の配置場所（例えば、ゲームスタート時のタッチパネル３２上の位置）に戻すこととしてもよい。ここで、制御部２２は、実際の重力が働く場合よりも３次元オブジェクトをゆっくりと移動させてもよい。そして、制御部２２は、操作検出処理を終了させる。なお、ここでの移動は、例えば、３次元オブジェクトが重力に従って落下し、床やテーブルの上で停止するように表示される。３次元オブジェクトの動きを停止させる前に、３次元オブジェクトの弾性や床やテーブルの硬度に応じて３次元オブジェクトをバウンドさせてもよい。３次元オブジェクトが床やテーブルに衝突するときの衝撃の大きさを算出し、衝撃が所定の値よりも大きい場合には３次元オブジェクトを破損したように表示してもよい。この場合、上記ステップＳ９０８の処理と同様、ゲームはスタート時にリセットされるものとする。
【０１７１】
なお、第１の物体と第２の物体の距離が３次元オブジェクトの選択時よりも拡大している場合に、３次元オブジェクトの選択状態を解除せずに３次元オブジェクトの表示サイズを拡大させてもよい。この場合、３次元オブジェクトの選択状態の解除の処理と区別するため、制御部２２は、上述の選択検出処理において２組の物体が３次元オブジェクトを選択して、本操作検出処理において物体が３次元オブジェクトを引き伸ばす動きを検出した場合（すなわち、両手で３次元オブジェクトを掴んで引き伸ばす動作を検出した場合）にのみ、３次元オブジェクトの選択状態を解除せずに３次元オブジェクトの表示サイズを拡大させるものとする。
【０１７２】
一方、第１の物体と第２の物体の距離が３次元オブジェクトの選択時よりも縮まっている場合（ステップＳ９０９，Ｎｏ）、制御部２２は、ステップＳ９１４として、距離に応じて３次元オブジェクトの表示サイズを縮小する。これにより、ユーザは視認空間内に立体表示されている３次元オブジェクトの表示サイズをユーザの好みに合うサイズに縮小できる。そして、制御部２２は、ステップＳ９０１以降を再実行する。３次元オブジェクトの表示サイズを縮小させる程度は、例えば、３次元オブジェクトに属性として設定されている硬度に応じて変更してもよい。なお、第１の物体と第２の物体の距離が３次元オブジェクトの選択時よりも著しく縮まっている場合に、すなわち、第１の物体と第２の物体の距離が所定の値以下になった場合に、３次元オブジェクトを破損したように表示してもよい。例えば、本実施例においては、上記ステップＳ９０８において上述した３次元オブジェクトを握りつぶす操作のように、３次元オブジェクトである立体パズルのゲーム進行中に当該３次元オブジェクトを消去することで、ゲームをスタート時にリセットしてもよい。
【０１７３】
上述してきたように、第３の実施例では、指等の物体の間に３次元オブジェクトが位置していることが検出された時点から、操作に応じて３次元オブジェクトを変化させることとしたので、利用者が３次元オブジェクトの選択を認識しやすい。
【０１７４】
なお、図２５に示すステップＳ６１からステップＳ６３のように、第１の物体と第２の物体のうち少なくとも一方が３次元オブジェクトに接触した後に第１の物体と第２の物体の距離が所定時間以上ほぼ一定に保たれることを、３次元オブジェクトを選択する条件としてもよい。ここで、図２５は、３次元オブジェクトに対する操作の検出の他の例について説明するための図である。３次元オブジェクトへの接触を選択の条件とすることにより、複数の３次元オブジェクトが近接して表示されている場合に、利用者が所望の３次元オブジェクトを選択し易くなる。
【０１７５】
図２６は、３次元オブジェクトへの接触を選択の条件とする場合の選択検出処理の処理手順を示すフローチャートである。図２６に示すように、制御部２２は、まず、ステップＳ１００１として、３次元オブジェクトを立体的に表示する。具体的には、本実施例において、制御部２２は、上述した図４および図５等に示すように、複数の立方体が直交する３方向に沿って配列されて構成された集合体（３次元オブジェクト）を、表示部３２ａによって視認空間内に立体表示する。すなわち、制御部２２は、表示部３２ａを制御して視認空間内に立体パズル（３次元オブジェクト）を立体表示する。
【０１７６】
続いて、制御部２２は、ステップＳ１００２として、検出部、すなわち、撮影部４０および４２によって第１の物体および第２の物体が検出されたかを判定する。すなわち、制御部２２は、検出部を制御して視認空間内における物体（第１の物体および第２の物体を含む）の動きを検出する。具体的には、本実施例において、制御部２２は、上述した図４に示すように、検出部を制御して集合体を掴む位置に物体（第１の物体および第２の物体を含む）があること（上述した図４において、片手で掴む状態）を検出する。また、制御部２２は、上述した図５に示すように、検出部を制御して２箇所で集合体を掴む２組の物体（上述した図５において、両手で掴む状態）を検出する。なお、図示しないが、制御部２２は、検出部を制御して２箇所で集合体を掴む２組の物体（両手で掴む状態）を検出し、さらに、当該２組の物体とは別の他の物体（例えば、空いている指や他のユーザの手等）を検出してもよい。
【０１７７】
第１の物体および第２の物体が検出されない場合（ステップＳ１００２，Ｎｏ）、制御部２２は、ステップＳ１０１０として、仮選択状態の３次元オブジェクトがあれば、その３次元オブジェクトの仮選択状態を解除する。
【０１７８】
そして、制御部２２は、ステップＳ１０１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１０１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１０１１，Ｎｏ）、制御部２２は、ステップＳ１００２以降を再実行する。
【０１７９】
第１の物体および第２の物体が検出された場合（ステップＳ１００２，Ｙｅｓ）、制御部２２は、ステップＳ１００３として、仮選択状態の３次元オブジェクトがあるか否かを判定する。仮選択状態の３次元オブジェクトがない場合（ステップＳ１００３，Ｎｏ）、制御部２２は、ステップＳ１００４として、表示されている３次元オブジェクトの中から第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトを探す。
【０１８０】
該当する３次元オブジェクトがない場合（ステップＳ１００５，Ｎｏ）、制御部２２は、ステップＳ１０１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１０１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１０１１，Ｎｏ）、制御部２２は、ステップＳ１００２以降を再実行する。
【０１８１】
第１の物体または第２の物体の少なくとも一方に接触している３次元オブジェクトがみつかった場合（ステップＳ１００５，Ｙｅｓ）、制御部２２は、ステップＳ１００６として、第１の物体と第２の物体との間に表示されている３次元オブジェクトを仮選択状態にする。また、制御部２２は、ステップＳ１００７として、第１の物体と第２の物体の距離を算出する。
【０１８２】
そして、制御部２２は、ステップＳ１０１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１０１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１０１１，Ｎｏ）、制御部２２は、ステップＳ１００２以降を再実行する。
【０１８３】
第１の物体および第２の物体が検出され、かつ、仮選択状態の３次元オブジェクトがある場合（ステップＳ１００３，Ｙｅｓ）、制御部２２は、ステップＳ１００８として、第１の物体と第２の物体の少なくとも一方が移動しているかを判定する。第１の物体と第２の物体のいずれも移動していない場合（ステップＳ１００８，Ｎｏ）、制御部２２は、ステップＳ１０１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１０１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１０１１，Ｎｏ）、制御部２２は、ステップＳ１００２以降を再実行する。
【０１８４】
第１の物体と第２の物体の少なくとも一方が移動している場合（ステップＳ１００８，Ｙｅｓ）、制御部２２は、ステップＳ１００９として、図２４に示す操作検出処理を実行し、その中で、選択状態にある３次元オブジェクトを検出された操作に応じて変化させる。
【０１８５】
操作検出処理が終了した後、制御部２２は、ステップＳ１０１１として、操作終了が検出されたかを判定する。操作終了が検出された場合（ステップＳ１０１１，Ｙｅｓ）、制御部２２は、選択検出処理を終了させる。操作終了が検出されない場合（ステップＳ１０１１，Ｎｏ）、制御部２２は、ステップＳ１００２以降を再実行する。
【実施例４】
【０１８６】
以下に、第４の実施例について説明する。上記の各実施例では、３次元オブジェクトを操作する物体を撮影部が撮影する画像に基づいて検出することとしたが、他の検出方式を用いてもよい。例えば、静電容量式のタッチセンサは、感度を上げることにより、タッチセンサに接触していない指の位置を検出することができる。そこで、第４の実施例では、タッチセンサを、３次元オブジェクトを操作する物体を検出する検出部として活用する例を示す。なお、以下の説明では、既に説明した部分と同様の部分には既に説明した部分と同一の符号を付す。また、重複する説明については、説明を省略することがある。
【０１８７】
まず、図２７および図２８を参照しながら、第４の実施例に係る携帯電話端末（表示機器）２の構成について説明する。図２７は、携帯電話端末２の外観を示す正面図である。図２８は、携帯電話端末２の機能的な構成を示すブロック図である。
【０１８８】
図２７および図２８に示すように、携帯電話端末２は、操作部１３と、マイク１５と、レシーバ１６と、制御部２２と、記憶部２４と、通信部２６と、音声処理部３０と、タッチパネル３２とを有する。
【０１８９】
タッチパネル３２は、文字、図形、画像等の各種の情報を表示するとともに、表示されたアイコン、ボタン、文字入力領域等の所定領域に対する入力操作を検出する。タッチパネル３２は、表示部３２ａと、タッチセンサ３２ｂとを重畳して構成される。本実施例において、タッチセンサ３２ｂは、静電容量式のタッチセンサである。タッチセンサ３２ｂは、３次元オブジェクトを操作する指を検出する検出部としても機能する。
【０１９０】
次に、図２９を参照しながら、３次元オブジェクトに対する操作の検出について説明する。図２９は、３次元オブジェクトに対する操作の検出について説明するための図である。図２９では、タッチパネル３２によって、視認空間中に、３次元オブジェクトＯＢ１が立体的に表示されている。
【０１９１】
ここで、利用者が３次元オブジェクトＯＢ１に対して何らかの操作を行いたいものとする。３次元オブジェクトＯＢ１に対して何らかの操作を行うには、まず、操作の対象として３次元オブジェクトＯＢ１を選択する必要がある。３次元オブジェクトＯＢ１を選択するために、利用者は、図２９に示すように、指Ｆ１と指Ｆ２の間に３次元オブジェクトＯＢ１が位置するように指Ｆ１および指Ｆ２を移動させる。
【０１９２】
携帯電話端末２は、指Ｆ１および指Ｆ２の位置を、タッチセンサ３２ｂを用いて検出する。タッチセンサ３２ｂは、感度を高めることで、例えば、指Ｆ１および指Ｆ２とタッチパネル３２の表面からのＺ軸方向の距離が１０ｃｍ程度ある場合でも、指Ｆ１および指Ｆ２のＸ軸方向およびＹ軸方向の位置を検出することができる。また、タッチセンサ３２ｂは、静電容量の大きさに基づいて、指Ｆ１のタッチパネル３２の表面からのＺ軸方向の距離Ｄ２および指Ｆ２のタッチパネル３２の表面からのＺ軸方向の距離Ｄ３を検出することができる。
【０１９３】
こうして検出された指Ｆ１および指Ｆ２の視認空間での位置に基づいて、携帯電話端末２は、指Ｆ１および指Ｆ２間の距離Ｄ１を算出したり、指Ｆ１および指Ｆ２の間に３次元オブジェクトが表示されているかを判定したりすることができる。指Ｆ１および指Ｆ２の間に３次元オブジェクトが表示されていることが検出された後の制御については、上述した第１ないし第３の実施例のいずれかにおいて説明した処理手順に従って実行される。
【０１９４】
上述してきたように、第４の実施例では、タッチセンサを検出部として用いることとしたので、撮影部を備えない表示装置であっても、３次元オブジェクトに対する操作を検出することができる。
【０１９５】
なお、３次元オブジェクトに対する操作を検出するために撮影部およびタッチセンサを併用してもよい。撮影部およびタッチセンサを併用する場合、それぞれの検出結果を平均して指Ｆ１および指Ｆ２の位置を特定してもよい。また、タッチパネル３２と近い領域では、撮影部４０および４２は指Ｆ１および指Ｆ２の画像を取得し難いのでタッチセンサの検出結果の重み付けを大きくし、タッチパネル３２と遠い領域では、タッチセンサの検出精度が低くなるので撮影部４０および４２の検出結果の重み付けを大きくした加重平均を用いてもよい。
【０１９６】
また、他の指等が障害となってタッチセンサが指の位置を精度よく検出できないことが生じにくいように、３次元オブジェクトに対する操作を複数のタッチセンサを用いて検出してもよい。図３０は、３次元オブジェクトに対する操作を複数のタッチセンサを用いて検出する携帯電話端末３の構成の一例を示す図である。
【０１９７】
携帯電話端末３は、第１の筐体３ａと、第２の筐体３ｂと、ヒンジ部３ｃとを有する。ヒンジ部３ｃは、第１の筐体３ａおよび第２の筐体３ｂを開閉可能に連結する。そして、第１の筐体３ａは、タッチセンサ３２ｂを有するタッチパネル３２を備え、第２の筐体３ｂは、タッチセンサ３４ｂを有するタッチパネル３４を備える。タッチセンサ３２ｂおよびタッチセンサ３４ｂは、図３０に示すように、第１の筐体３ａおよび第２の筐体３ｂが約９０度の角度をもって固定された場合に、視認空間に異なる角度で接する。
【０１９８】
タッチセンサ３２ｂは、指Ｆ１および指Ｆ２のＸ軸方向およびＹ軸方向の位置を検出する検出部として機能する。また、タッチセンサ３２ｂは、静電容量の大きさに基づいて、指Ｆ１のタッチパネル３２の表面からのＺ軸方向の距離Ｄ２および指Ｆ２のタッチパネル３２の表面からのＺ軸方向の距離Ｄ３を検出することができる。
【０１９９】
タッチセンサ３４ｂは、指Ｆ１および指Ｆ２のＸ軸方向およびＺ軸方向の位置を検出する検出部として機能する。また、タッチセンサ３４ｂは、静電容量の大きさに基づいて、指Ｆ１のタッチパネル３４の表面からのＹ軸方向の距離Ｄ４および指Ｆ２のタッチパネル３４の表面からのＹ軸方向の距離Ｄ５を検出することができる。
【０２００】
このように、異なる方向から指Ｆ１および指Ｆ２を検出することにより、何らかの障害物がある場合でもいずれかの方向から指Ｆ１および指Ｆ２の位置を検出することができる。なお、異なる方向から指Ｆ１および指Ｆ２を検出する場合、一方のタッチパネルが３次元オブジェクトを表示し、他方のタッチパネルは非表示とするか、２次元でガイダンス等を表示してもよい。また、３次元オブジェクトを表示しない方のタッチパネルを単なるタッチセンサとしてもよい。
【０２０１】
以上、上述してきた各実施例によれば、以下が可能となる。上記の実施例に係る３次元オブジェクトの選択において、手などの物体がすべての視認空間（オブジェクト領域）内に入った場合に、３次元オブジェクトを移動または変化させるので、現実世界とある程度リンクした作用を発生させることができる。またゲームの場合、あえて手を視認空間から外すということもできる。また、上記の実施例において、手などの物体が対象となる３次元オブジェクト近傍で一定時間固定されたことを検出するので、その後の手の動きに連動させて３次元オブジェクトを変形・移動させることができる。なお、複数の３次元オブジェクトが存在し、手からそれぞれの３次元オブジェクトまでの距離が同一の場合には、手のひらがどちらを向いているかで判定するか、３次元オブジェクトの動きを待って判定することにより選択することができる。つまり、手がどちらの３次元オブジェクトに対して近づいているかを検出することで選択できる。なお、上記の実施例において、３次元オブジェクトの選択を行ってから、特定の入力信号に基づき、３次元オブジェクトを変形・移動させる他、３次元オブジェクトに対して、指で指し示す、音声、視線を向ける等によって選択してもよい。この場合、３次元オブジェクトの指定後は、必ずしも手等の物体が視認空間（オブジェクト領域）に入らなくても、手の移動量で３次元オブジェクトを移動できるものとする。
【０２０２】
また、上記の実施例に係る３次元オブジェクトの変形・移動において、３次元オブジェクトへの接地面積および接地位置によって、３次元オブジェクトへの作用を変化させることができる。これにより、例えば、指で押すか、手のひらで押すかで作用を変化させることが可能である。この場合、３次元オブジェクトがどの場所（例えば、どのようなものの上）に置いてあるかによって、摩擦等を考慮して作用を変化させることができる。この場合、３次元オブジェクトに対して手が別の場所にある場合、手を３次元オブジェクトの位置に仮想表示させることで、３次元オブジェクトへの接地面積・位置を調整可能とする。つまり、必ずしも３次元オブジェクトの位置に指がある必要はないものとする。また、上記の実施例において、３次元オブジェクトによって、変形・移動内容を変化させることができる。例えば、軟らかいものは押したときに変形し、硬いものは３次元オブジェクトごと移動するようにできる。この場合、手が３次元オブジェクトに接地する速度が早いと変形し、遅いと３次元オブジェクトごと移動するようにできる。なお、上記の実施例において、基本的には変形・移動が３次元オブジェクトに対する主な処理となるが、ローソクやライター等のように押すことによって、３次元オブジェクトが消える・付くという作用を発生させることも可能である。また、上記の実施例において、３次元オブジェクトに対して重力を考慮した変形・移動結果を反映させることも可能である。
【０２０３】
また、上記の実施例に係る３次元オブジェクトの開放（離す）において、物体の指が３次元オブジェクトの表面位置（座標）から外れたことを検出することで、３次元オブジェクトを開放することができる。また、上記の実施例において、音声で３次元オブジェクトの開放を通知することにより、３次元オブジェクトを開放することもできる。
【０２０４】
以下に、上記の各実施例において説明した表示装置の適用例および変形例について説明する。検出された操作に応じて３次元オブジェクトに加えられる変化は、上記の移動、回転、変形、消失等に限定されない。操作検出処理において検出される操作と、操作に応じて３次元オブジェクトに加えられる変化は、上記の実施例に限定されず、３次元オブジェクトの種類に応じて変更してよい。
【０２０５】
なお、上記の実施例で示した本発明の態様は、本発明の要旨を逸脱しない範囲で任意に変更することができる。また、上記の実施例を適宜組み合わせてもよい。例えば、上記の実施例で示した制御プログラム２４ａは、複数のモジュールに分割されていてもよいし、他のプログラムと統合されていてもよい。また、上記の実施例では、３次元オブジェクトに対して指で操作を行うこととしたが、先端に静電気を帯びた棒状の物等を指の代わりに用いてもよい。
【０２０６】
また、上記の実施例では、３次元オブジェクトを検出するために撮影部やタッチセンサを検出部として用いる例を示したが、検出部はこれに限られない。例えば、撮影部に代えて、ＴＯＦ（Ｔｉｍｅ−ｏｆ−Ｆｌｉｇｈｔ）法を用いたセンサ（ＴＯＦセンサ）でもよい。また、視認空間における面方向の移動を検出できる近接センサ等を、物体の移動方向とほぼ水平に配置すると、物体の変位が非接触でも検出できることから、もちろんこれらを用いてもよい。なお、物体にセンサ等を配置することなく、物体の変位の検出ができることが好ましい。物体にセンサ等を配置しないことにより、指にわざわざ加速度センサを取り付けたり、加速度を備えた表示機器そのものを移動させたりする必要がないので、コスト低減が図れる。
【０２０７】
また、上記の実施例では、３次元オブジェクトが利用者側に飛び出す場合について記載したが、表示部よりも奥側に３次元オブジェクトが存在するように見せる場合でも本発明を適用できる。この場合、表示部の裏面側にセンサやカメラを配置すればよい。表示機器が携帯電話端末の場合、利用者自身を撮影するためのインカメラと、風景等を撮影するためのアウトカメラとを備えていることが多い。そこで、このアウトカメラを用いることで裏面側における物体の変位を捕捉することができるようにしてもよい。
【０２０８】
また、上記の実施例では、３次元オブジェクトに対する操作を検出する例について説明したが、本発明は、２次元オブジェクトに対する操作を検出するためにも用いることができる。例えば、タッチパネル上に表示されているアイコンの両側において指の接触が検出され、その後、その状態が所定時間以上維持された場合や、指の距離が所定時間以上ほぼ一定に保たれた場合にそのアイコンを選択状態にしてもよい。
【０２０９】
また、上記の実施例では、表示機器が単独で３次元オブジェクトに対する操作を検出することとしたが、表示機器がサーバ装置と協業して３次元オブジェクトに対する操作を検出することとしてもよい。この場合、表示機器は、検出部が検出した情報をサーバ装置へ逐次送信し、サーバ装置が操作を検出して検出結果を表示機器へ通知する。換言すると、上記の実施例では、３次元オブジェクトの選択検出処理および操作検出処理を、制御部２２が記憶部２４に記憶された制御プログラム２４ａを用いて行ったが、本発明はこれに限定されない。表示機器は、各種演算処理を、通信部２６を介して通信可能なサーバで実行してもよい。つまり、演算処理自体は、外部で行ってもよい。この場合、表示機器は、サーバへの検出部が検出した情報の送信、サーバからの演算処理後のデータの受信等を行う。このように、サーバで演算を行ったりすることで、表示機器にかかる負荷を少なくすることができる。つまり、サーバと表示機器とを１つの制御システムとして、上述した処理を行うようにしてもよい。このような構成とすることにより、表示機器の負荷を低減することができる。
【符号の説明】
【０２１０】
１、２、３  携帯電話端末
２２  制御部
２４  記憶部
２４ａ  制御プログラム
２６  通信部
３２、３４  タッチパネル
３２ａ  表示部
３２ｂ、３４ｂ  タッチセンサ（検出部）
４０、４２  撮影部（検出部）
【図１】
0005774387.tif 000002
【図２】
0005774387.tif 000003
【図３】
0005774387.tif 000004
【図４】
0005774387.tif 000005
【図５】
0005774387.tif 000006
【図６】
0005774387.tif 000007
【図７】
0005774387.tif 000008
【図８】
0005774387.tif 000009
【図９】
0005774387.tif 000010
【図１０】
0005774387.tif 000011
【図１１】
0005774387.tif 000012
【図１２】
0005774387.tif 000013
【図１３】
0005774387.tif 000014
【図１４】
0005774387.tif 000015
【図１５】
0005774387.tif 000016
【図１６】
0005774387.tif 000017
【図１７】
0005774387.tif 000018
【図１８】
0005774387.tif 000019
【図１９】
0005774387.tif 000020
【図２０】
0005774387.tif 000021
【図２１】
0005774387.tif 000022
【図２２】
0005774387.tif 000023
【図２３】
0005774387.tif 000024
【図２４】
0005774387.tif 000025
【図２５】
0005774387.tif 000026
【図２６】
0005774387.tif 000027
【図２７】
0005774387.tif 000028
【図２８】
0005774387.tif 000029
【図２９】
0005774387.tif 000030
【図３０】
0005774387.tif 000031