以下、本発明を実施するための最良の形態について説明する。
まず、本実施形態に係る端末装置について図面を参照しつつ説明する。
図1は、本実施形態に係る端末装置の構成例を示すブロック図である。
端末装置1は、例えば移動体通信端末やPDA(Personal Digital Assistance)などによって実現され、図1に示すように、表示部11と、左目用及び右目用の表示メモリ12L及び12Rと、立体表示制御部13と、横方向、縦方向、及び奥行き方向の加速度センサ14x、14y、及び14zと、透明操作部15と、主制御装置16と、を備えている。
表示部11は、仮想的な3次元表示(立体表示)を行うことができるもので、例えばLCD(Liquid Crystal Display)などから構成されている。表示部11は、例えば視差バリア方式などを用いて左目用の画像と右目用の画像とを表示することで、立体的な画像表示を実現することができる。
左目用及び右目用の表示メモリ12L及び12Rは、例えばVRAM(Video RAM)などから構成され、左目用の表示メモリ12Lには、左目用の画像データが、右目用の表示メモリ12Rには、右目用の画像データが、それぞれ書き込まれる。
立体表示制御部13は、例えばVDP(Video Display Processor)や、CGROM(Character Generator ROM)、LCD駆動回路などから構成され、表示部11に接続されている。立体表示制御部13は、左目用の表示メモリ12Lに書き込まれた左目用の画像データと、右目用の表示メモリ12Rに書き込まれた右目用の画像データと、を表示部11に送って左目用の画像表示と右目用の画像表示とを行うことで、表示部11における立体表示を制御する。
図2は、右目と左目の平面投影位置の差を例示する説明図である。
ユーザが、奥行き距離がそれぞれ違う3つの矢印を見ているときに、これらの矢印を任意の平面上に投影すると、図2に示すように、左目と右目とで矢印が見えている位置が違ってくる。すなわち、投影面よりも奥側にある、換言すれば投影面よりも奥行き距離が遠い左側の矢印の先端は、左目と右目とでΔdaだけずれて見え、投影面よりも手前にある、換言すれば投影面よりも奥行き距離が近い右側の矢印の先端は、左目と右目とで−Δdbだけずれて見える。なお、図2に示す例では、左目の視線と右目の視線とが途中で交差し、ずれ量が反転されるため、右側の矢印の先端に対する左目と右目とでのずれ量Δdbには、マイナスが付されている。
図3(a)は、左目用の画像を例示する説明図であり、図3(b)は、右目用の画像を例示する説明図である。
図1に示す立体表示制御部13は、図3(a)及び(b)に示すように、左目用の画像と右目用の画像とをずれ量Δda及び−Δdb分だけずらして表示部11の表示画面に表示させることで、逆に表示画面の奥側に左側の矢印が、手前に右側の矢印があるかのようにユーザに見せることができる。
図1に示す横方向、縦方向、及び奥行き方向の加速度センサ14x、14y、及び14zは、それぞれ端末装置1の筐体の横方向、縦方向、奥行き方向といった3軸方向での動きを検知する。
透明操作部15は、表示部11の表示画面に重ねられて配置され、ユーザが表示画面を指などで触ったことを感知可能なタッチセンサ151を備えている。透明操作部15は、ユーザが表示部11の表示画面を見ながら表示画面を指などでタッチして端末装置1の操作を行うことを可能にする。すなわち、透明操作部15は、表示部11をタッチパネルとして機能させることができる。
主制御装置16は、例えばCPU(Central Processing Unit)や、ROM(Read Only Memory)、RAM(Random Access Memory)等から構成され、CPUがRAMをワークメモリとして用いてROM等に記録されている各種プログラムを適宜実行することにより、端末装置1の各部の動作を制御する。
本実施形態において、主制御装置16のCPUは、マルチタスク動作を行う。本実施形態では、2種類の計5つのタスクから構成され、具体的には、1つのタイマタスクと4つのセンサタスクと、から成る。
タイマタスクは、一定間隔で割り込みを発生させて各タスクを起動させる役割を担い、本実施形態では、一定間隔で4つのセンサタスクを同時に起動させている。
センサタスクは、動作原理が同じものが4つ用意され、それぞれ横方向加速度センサ14x、縦方向加速度センサ14y、奥行き方向加速度センサ14z、及びタッチセンサ151の読取値を管理する。
また、本実施形態において、主制御装置16のRAMには、測定値記録領域と、メインタスクとのインタフェイス用記録領域と、が設けられている。
図4は、測定値記録領域の構成例を示す図である。
測定値記録領域は、横方向、縦方向、及び奥行き方向の加速度センサ14x、14y、及び14zの読取値から重力(地球の引力)加速度と、誤差範囲内の細かいぶれと、を取り除くためのもので、図4に示すように、横方向加速度センサ14x、縦方向加速度センサ14y、奥行き方向加速度センサ14z、及びタッチセンサ151毎に、その読取値を測定値として記録する。
図5は、インタフェイス用記録領域の構成例を示す図である。
インタフェイス用記録領域は、横方向加速度センサ14x、縦方向加速度センサ14y、奥行き方向加速度センサ14z、及びタッチセンサ151の読取値の変化が、誤差範囲を超える場合に、その変化値を、図5に示すように、測定値として記録する。
係る構成を備えることにより、主制御装置16は、奥行き方向の加速度センサ14zを監視することによって、端末装置1の筐体が押し込まれる方向に動いたか、事前に引かれた動きを加えられたかを検知することができる。
また、主制御装置16は、表示部11の表示画面に例えば3つの矢印が表示されている場合に、ユーザがそのうちの1つを指で触わり筐体ごと押し込む動作をすると、透明操作部15のタッチセンサ151の検知結果と奥行き方向の加速度センサ14zの検知結果とによって、ユーザにより矢印の一つがタッチされたまま押し込む操作がされたことを検知することができる。
さらに、主制御装置16は、ユーザによりタッチされている矢印について左目用の画像と右目用の画像との表示位置に差を付けない一方で、その他の矢印について左目用の画像と右目用の画像との表示位置を変えて見かけ上の奥行き距離を保ったまま、タッチされている矢印だけが奥側に押し込まれたかのように、表示部11の表示画面に表示させることができる。
図6は、押し込む操作が行われたときの左目側の描画例を示す説明図である。
図6(a)は、中央の矢印を押し込む操作が行われる前の描画例を示し、指で触られていない左側及び右側の矢印の先端の座標を、それぞれA及びBとする。
図6(b)は、中央の矢印を押し込む操作が行われた後の描画例を示している。中央の矢印を押し込む操作が行われた場合、左側の矢印の先端の座標をA’とし、右側の矢印の先端の座標をB’とすることで、ユーザの目には、指で触っていない左側及び右側の矢印が手前に残ったように見える。なお、図6(b)に示す例では、左側及び右側の矢印の先端の座標がずれていることを分かり易くするために、ずらす前の左側及び右側の矢印の先端の座標A及びBを、ずらす前の左側及び右側の矢印と同じ間隔で示している。
ここで、矢印を触っている指は、現実のもので左目及び右目でずれて見えるものではない。このため、図1に示す主制御装置16は、指で触られている中央の矢印の座標を変化させないようにすることで表示部11での立体表示の効果を高めている。
次に、上記の構成を備える端末装置1が実行する処理について図面を参照しつつ説明する。
図7は、タイマタスク処理の一例を示すフローチャートである。
このタイマタスク処理において、主制御装置16のCPUは、まず、図7に示すように、サンプリング周期の設定を行う(ステップS1)。本実施形態では、横方向加速度センサ14x、縦方向加速度センサ14y、奥行き方向加速度センサ14z、及びタッチセンサ151の値(センサ値)を読み取る周期などが設定される。
その後、CPUは、割り込みが発生する毎に、ステップS1の処理にて設定したセンサ値の読取周期に基づいて、センサ値の読取タイミングであるセンス時刻になったか否かを判別する(ステップS2)。
ここで、センス時刻になっていれば(ステップS2;Yes)、CPUは、4つのセンサタスクを同時に起動するための処理を実行した後(ステップS3)、ステップS2の処理へリターンする。これに対して、センス時刻になっていなければ(ステップS2;No)、CPUは、ステップS1の処理におけるサンプリング周期の設定に従って、他のタスクを起動するための処理を実行した後(ステップS4)、ステップS2の処理へリターンする。
ステップS3の処理が実行されることにより、4つのセンサタスクが同時に起動されると、CPUは、下記のセンサタスク処理を、横方向加速度センサ14x、縦方向加速度センサ14y、奥行き方向加速度センサ14z、及びタッチセンサ151毎に実行する。
図8は、センサタスク処理の一例を示すフローチャートである。
このセンサタスク処理において、主制御装置16のCPUは、まず、図8に示すように、センサ値を読み取る(ステップS11)。
具体的に、横方向加速度センサ14xに対応するセンサタスク処理では、横方向加速度センサ14xの値が、縦方向加速度センサ14yに対応するセンサタスク処理では、縦方向加速度センサ14yの値が、奥行き方向加速度センサ14zに対応するセンサタスク処理では、奥行き方向加速度センサ14zの値が、タッチセンサ151に対応するセンサタスク処理では、タッチセンサ151の値が、それぞれ読み取られる。
次に、CPUは、ステップS11の処理にて読み取ったセンサ値(今回の読取値)と、図4に示す測定値記録領域に測定値として記録されている前回の読取値と、を引算比較して、その変化量が誤差範囲内であるか否かを判別する(ステップS12)。
ここで、変化量が誤差範囲を超えていれば(ステップS12;No)、CPUは、その変化量を示す値(変化値)を測定値として図5に示すインタフェイス用記録領域に記録することで、変化量をセットするとともに(ステップS13)、検知イベントを発行する(ステップS14)。
具体的に、横方向加速度センサ14xに対応するセンサタスク処理では、イベントID(Identification Data)が「1」の検知イベントが、縦方向加速度センサ14yに対応するセンサタスク処理では、検知IDが「2」の検知イベントが、奥行き方向加速度センサ14zに対応するセンサタスク処理では、検知IDが「3」の検知イベントが、タッチセンサ151に対応するセンサタスク処理では、検知IDが「4」の検知イベントが、それぞれ発行される。
これに対して、変化量が誤差範囲内であれば(ステップS12;Yes)、CPUは、ステップS13及びステップS14の処理をスキップする。
そして、CPUは、ステップS11の処理にて読み取ったセンサ値(今回の読取値)を、測定値として図4に示す測定値記録領域に記録してから(ステップS15)、センサタスク処理を終了する。
また、図7に示すステップS4の処理が実行されることにより、本実施形態では、音楽プレーヤのアルバムを管理するためのアルバム管理処理や、テキスト編集処理などが実行される。
図9及び図10は、アルバム管理処理の一例を示すフローチャートである。
このアルバム管理処理において、主制御装置16のCPUは、まず、図9に示すように、音楽アルバム及びCD(Compact Disc)ラックの3D(Three Dimensional)オブジェクトを通常位置に配置するための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込む(ステップS21)。
次に、立体表示制御部13は、左目用の表示メモリ12Lに書き込まれた左目用の画像データと、右目用の表示メモリ12Rに書き込まれた右目用の画像データと、を表示部11に送って左目用の画像表示と右目用の画像表示とを行うことで、表示部11の表示画面に音楽アルバム及びCDラックの3Dオブジェクトを描画して3D立体表示させる(ステップS22)。
続いて、CPUは、図5に示すインタフェイス用記録領域を参照してイベントチェックを行い(ステップS23)、図8に示すステップS14の処理にて検知イベント(センサイベント)が発行されたか否かを判別する(ステップS24)。
ここで、検知イベント(センサイベント)が発行されていれば(ステップS24;Yes)、CPUは、その検知IDが「1」であるか否かをチェックするなどして、発行された検知イベントが横方向加速度センサ14xの検知イベントであるか否かを判別する(ステップS25)。
ここで、横方向加速度センサ14xの検知イベントであれば(ステップS25;Yes)、CPUは、その検知イベントをクリアしてから(ステップS26)、ステップS23の処理へリターンする。
これに対して、横方向加速度センサ14xの検知イベントでなければ(ステップS25;No)、CPUは、その検知IDが「2」であるか否かをチェックするなどして、発行された検知イベントが縦方向加速度センサ14yの検知イベントであるか否かを判別する(ステップS27)。
ここで、縦方向加速度センサ14yの検知イベントであれば(ステップS27;Yes)、CPUは、その検知イベントをクリアしてから(ステップS28)、ステップS23の処理へリターンする。
これに対して、縦方向加速度センサ14yの検知イベントでなければ(ステップS27;No)、CPUは、その検知IDが「3」であるか否かをチェックするなどして、発行された検知イベントが奥行き方向加速度センサ14zの検知イベントであるか否かを判別する(ステップS29)。
ここで、奥行き方向加速度センサ14zの検知イベントでなければ(ステップS29;No)、CPUは、発行された検知イベントがタッチセンサ151の検知イベントであると判別して、その検知イベントをクリアする(ステップS30)。
続いて、CPUは、図5に示すインタフェイス用記録領域に記録されているタッチセンサ151の測定値に基づいて、ユーザが表示部11の表示画面のタッチを開始したか否かを判別する(ステップS31)。
ここで、ユーザが表示画面のタッチを開始する場合には(ステップS31;Yes)、例えばRAMなどに設けられたタッチ状態フラグをオンにセットするなどして、タッチありの状態にしてから(ステップS32)、ステップS23の処理へリターンする。
これに対して、奥行き方向加速度センサ14zの検知イベントであれば(ステップS29;Yes)、CPUは、その検知イベントをクリアした後(図10に示すステップS33)、タッチ状態フラグがオンであるか否かをチェックするなどして、タッチありの状態になっているか否かを判別する(ステップS34)。
ここで、タッチありの状態でなければ(ステップS34;No)、CPUは、図9に示すステップS23の処理へリターンする。これに対して、タッチありの状態であれば(図10に示すステップS34;Yes)、CPUは、ユーザが表示画面をタッチしたまま端末装置1の筐体ごと押し込む(筐体を向側に押す)動作をしたか、或いはCDラック上で指を滑らせてアルバム名を表示させながら音楽アルバムを選択し、手を離さずに表示画面を筐体ごと手前に引く動作をしたか否かを判別する(ステップS35)。
ここで、ユーザが表示画面を押し込む動作をした場合には(ステップS35;Yes)、図11(a)に示すように、音楽アルバム及びCDラックの3Dオブジェクトが通常位置に配置されているか否かを判別し(ステップS36)、通常位置に配置されていなければ(ステップS36;No)、CPUは、図9に示すステップS23の処理へリターンする。
これに対して、通常位置に配置されていれば(図10に示すステップS36;Yes)、CPUは、タッチされていない音楽アルバム及びCDラックの3Dオブジェクトを手前に移動させる処理を行うための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んでから(ステップS37)、図9に示すステップS22の処理へリターンする。
これにより、表示部11の表示画面には、図11(b)に示すように、ユーザが指を添えていない音楽アルバムと、奥にあるCDラックと、が手前に移動されて表示され、ユーザの目には、相対的にタッチしている音楽アルバムが奥に押し込められたかのように見える。
これに対して、ユーザが表示画面のタッチを既に開始している場合には(図9に示すステップS31;No)、図5に示すインタフェイス用記録領域に記録されているタッチセンサ151の測定値に基づいて、ユーザがラックの上段又は下段を選んで表示画面から手を離したか否かを判別する(図10に示すステップS38)。
ここで、ユーザが表示画面から手を離した場合には(ステップS38;Yes)、音楽アルバムをCDラックに格納する処理を行うための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込むとともに、タッチ状態フラグをクリアしてオフにしてから(ステップS39)、図9に示すステップS22の処理へリターンする。
これにより、表示部11の表示画面には、音楽アルバムがCDラックにひらりと舞い込むように格納される画像が表示される。
これに対して、ユーザが表示画面から手を離していない場合には(図10に示すステップS38;No)、音楽アルバムをCDラックに格納する処理以外の操作処理を行うための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んでから(ステップS40)、図9に示すステップS22の処理へリターンする。
これに対して、ユーザが手を離さずに表示画面を手前に引く動作をした場合には(図10に示すステップS35;No)、タッチされていない音楽アルバム及びCDラックの3Dオブジェクトが手前に移動されて配置されているか否かを判別する(ステップS41)。
ここで、手前に移動されて配置されていなければ(ステップS41;No)、CPUは、図9に示すステップS23の処理へリターンする。これに対して、手前に移動されて配置されていれば(図10に示すステップS41;Yes)、CPUは、図9に示すステップS21の処理へとリターンする。
これにより、表示部11の表示画面には、ユーザにより選択された音楽アルバムの3Dオブジェクトの配置が初期化されることで、音楽アルバムの3Dオブジェクトが手前に持ってこられて、図11(a)に示す通常位置に並べて表示される。
これに対して、検知イベント(センサイベント)が発行されていなければ(図9に示すステップS24;No)、CPUは、その他の処理を行ってから(ステップS42)、ステップS23の処理へリターンする。
図12は、テキスト編集処理の一例を示すフローチャートである。
このテキスト編集処理において、主制御装置16のCPUは、まず、図12に示すように、テキストを貼り付けた3Dオブジェクト(単純な平面にテクスチャが貼られたもの)を生成する(ステップS51)。
次に、CPUは、テキストを貼り付けた3Dオブジェクトを表示するための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んで、表示部11の表示画面に3Dオブジェクトによるテキスト描画を行って3D立体表示させる(ステップS52)。
続いて、CPUは、図5に示すインタフェイス用記録領域を参照してイベントチェックを行い(ステップS53)、図8に示すステップS14の処理にて検知イベント(センサイベント)が発行されたか否かを判別する(ステップS54)。
ここで、検知イベント(センサイベント)が発行されていれば(ステップS54;Yes)、CPUは、その検知IDが「1」であるか否かをチェックするなどして、発行された検知イベントが横方向加速度センサ14xの検知イベントであるか否かを判別する(ステップS55)。
ここで、横方向加速度センサ14xの検知イベントであれば(ステップS55;Yes)、CPUは、横方向のスクロール処理を実行する(ステップS56)。これに対して、横方向加速度センサ14xの検知イベントでなければ(ステップS55;No)、CPUは、ステップS55の横方向のスクロール処理をスキップする。
続いて、CPUは、その検知IDが「2」であるか否かをチェックするなどして、発行された検知イベントが縦方向加速度センサ14yの検知イベントであるか否かを判別する(ステップS57)。
ここで、縦方向加速度センサ14yの検知イベントであれば(ステップS57;Yes)、CPUは、縦方向のスクロール処理を実行する(ステップS58)。これに対して、縦方向加速度センサ14yの検知イベントでなければ(ステップS57;No)、CPUは、ステップS58の縦方向のスクロール処理をスキップする。
続いて、CPUは、その検知IDが「3」であるか否かをチェックするなどして、発行された検知イベントが奥行き方向加速度センサ14zの検知イベントであるか否かを判別する(ステップS59)。
ここで、奥行き方向加速度センサ14zの検知イベントであれば(ステップS59;Yes)、CPUは、奥行き移動処理を実行する(ステップS60)。これに対して、奥行き方向加速度センサ14zの検知イベントでなければ(ステップS59;No)、CPUは、ステップS60の奥行き移動処理をスキップする。
続いて、CPUは、その検知IDが「4」であるか否かをチェックするなどして、発行された検知イベントがタッチセンサ151の検知イベントであるか否かを判別する(ステップS61)。
ここで、タッチセンサ151の検知イベントであれば(ステップS61;Yes)、CPUは、タッチ関連処理を実行してから(ステップS62)、ステップS53の処理へリターンする。これに対して、タッチセンサ151の検知イベントでなければ(ステップS61;No)、CPUは、そのままステップS53の処理へリターンする。
これに対して、検知イベント(センサイベント)が発行されていなければ(ステップS54;No)、CPUは、その他の処理を行ってから(ステップS63)、ステップS53の処理へリターンする。
図13は、スクロール処理の一例を示すフローチャートである。
このスクロール処理において、主制御装置16のCPUは、まず、図13に示すように、3Dオブジェクトのテクスチャを、表示したいテキストの範囲に沿って作り直す(再生成する)(ステップS101)。
具体的に、横方向のスクロール処理では、端末装置1の筐体が左方向に移動したらテキストの表示範囲を左に、右方向に移動したら表示範囲を右に、それぞれ変更したテクスチャが再生成される。また、縦方向のスクロール処理では、端末装置1の筐体が上方向に移動したらテキストの表示範囲を上に、下方向に移動したら表示範囲を下に、それぞれ変更したテクスチャが再生成される。
そして、CPUは、テクスチャが作り直された3Dオブジェクトを表示するための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んで、表示部11の表示画面にテクスチャが作り直された3Dオブジェクトによるテキスト描画を行って3D再表示させてから(ステップS102)、スクロール処理を終了する。
図14は、奥行き移動処理の一例を示すフローチャートである。
この奥行き移動処理において、主制御装置16のCPUは、まず、図14に示すように、3Dオブジェクトに貼り付ける範囲を変更してテクスチャを作り直すことで、表示部11の表示画面に表示される文字数及び行数を変える(ステップS201)。
具体的に、ユーザが表示部11の表示画面を押し込む操作をした場合には、図15(c)に示すように、3Dオブジェクトに貼り付ける範囲を狭くしたテクスチャを再生成することで、表示画面に表示される文字数及び行数を減少させる。これに対して、ユーザが表示部11の表示画面を引く操作をした場合には、図15(b)に示すように、3Dオブジェクトに貼り付ける範囲を広くしたテクスチャを再生成することで、表示画面に表示される文字数及び行数を増加させる。
次に、CPUは、3Dオブジェクトの奥行き方向の座標を変更する(図14に示すステップS202)。
具体的には、図15(a)に示すように、ユーザが表示画面を押し込む操作をした場合であれば、奥行き方向の座標を手前に移動させ、引く操作をした場合であれば、奥行き方向の座標を奥に移動させる。
続いて、CPUは、テキストが貼り付けられた3Dオブジェクトを最終的に表示画面全体に表示させるべく、3Dオブジェクトの大きさを調整する(図14に示すステップS203)。
具体的に、ユーザにより表示画面を押し込む操作がされて3Dオブジェクトの奥行き方向の座標が手前に移動されている場合には、図15(e)に示すように、3Dオブジェクトのサイズを小さく調整し、ユーザにより表示画面を引く操作がされて3Dオブジェクトの奥行き方向の座標が奥に移動されている場合には、図15(d)に示すように、3Dオブジェクトのサイズを大きく調整する。
その後、CPUは、テクスチャが作り直された3Dオブジェクトを表示するための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んで、表示部11の表示画面にテクスチャが作り直された3Dオブジェクトによるテキスト描画を行って3D再表示させる(図14に示すステップS204)。
これにより、ユーザの目には、表示画面を押し込む操作をした場合、テキスト文章が近づくように見え、表示画面を引く操作をした場合には、逆にテキスト文章が遠ざかるように見える。
そして、CPUは、例えばRAMなどに設けられた範囲指定中状態フラグをクリアしてオフにすることにより、後述するタッチ関連処理にて遷移される範囲指定中状態を解除する(ステップS205)。
図16は、タッチ関連処理の一例を示すフローチャートである。
このタッチ関連処理において、主制御装置16のCPUは、まず、図16に示すように、まず、図5に示すインタフェイス用記録領域に記録されているタッチセンサ151の測定値に基づいて、ユーザが表示部11の表示画面のタッチを開始したか否かを判別する(ステップS301)。
ここで、ユーザが表示画面のタッチを開始する場合には(ステップS301;Yes)、ユーザが指で範囲指定していることを示す範囲指定中状態フラグをオンにセットするなどして、範囲指定中状態にしてから(ステップS302)、タッチ関連処理を終了する。
これに対して、ユーザが表示画面のタッチを既に開始している場合には(ステップS301;No)、図5に示すインタフェイス用記録領域に記録されているタッチセンサ151の測定値に基づいて、ドラッグされているか否かを判別する(ステップS303)。
ここで、ドラッグされていれば(ステップS303;Yes)、CPUは、範囲指定中状態フラグがオンであるか否かをチェックするなどして、範囲指定中状態になっているか否かを判別する(ステップS304)。
ここで、範囲指定中状態になっていれば(ステップS304;Yes)、CPUは、範囲指定された文字や文字列を取り出した小さい3Dオブジェクトを生成したり、小さい3Dオブジェクトに貼り付けられるテクスチャを更新したりする(ステップS305)。この小さい3Dオブジェクトの奥行きの座標は0に設定される。
これに対して、ドラッグされていなければ(ステップS303;No)、CPUは、図5に示すインタフェイス用記録領域に記録されているタッチセンサ151の測定値に基づいて、リリースされたか否かを判別する(ステップS306)。
ここで、リリースされていれば(ステップS306;Yes)、CPUは、範囲指定中状態フラグがオンであるか否かをチェックするなどして、範囲指定中状態になっているか否かを判別する(ステップS307)。
ここで、範囲指定中状態になっていれば(ステップS307;Yes)、CPUは、範囲指定中フラグをクリアしてオフにして、範囲指定中状態を解除してから(ステップS308)、タッチ関連処理を終了する。
そして、ドラッグされたときに、範囲指定中状態でなければ(ステップS304;No)、CPUは、貼付位置を表す配置キャレットの3Dオブジェクトを生成したり、配置キャレットの3Dオブジェクトや小さい3Dオブジェクトの位置を変更したりする(ステップS309)。
これに対して、リリースされたときに、範囲指定中状態でなければ(ステップS306;No)、CPUは、配置キャレットの3Dオブジェクト、及び小さい3Dオブジェクトを表示画面から削除した後(ステップS310)、テキスト文章に、選択された文字や文字列を挿入する(ステップS311)。
続いて、CPUは、テキストが貼り付けられた3Dオブジェクトのテクスチャを更新する(ステップS312)。これにより、表示画面では、表示されるテキスト文章が更新される。
そして、ステップS305、ステップS309、及びステップS312の処理を実行した後、CPUは、CPUは、テクスチャが生成又は更新された3Dオブジェクトを表示するための左目用及び右目用の画像データを、それぞれ左目用及び右目用の表示メモリ12L及び12Rに書き込んで、表示部11の表示画面にテクスチャが生成又は更新された3Dオブジェクトによるテキスト描画を行って3D再表示させてから(ステップS313)、タッチ関連処理を終了する。
これに対して、ドラッグもリリースもされていない場合には(ステップS306;No)、その他の処理を実行してから(ステップS314)、タッチ関連処理を終了する。
上記の処理を実行する端末装置の具体的動作について図面を参照しつつ説明する。
図17は、テキスト編集処理が実行されるときの表示例を示す図である。
例えばユーザが端末装置1のテキスト編集機能を用いてテキスト文章を編集している場合において、以前に入力した文字又は文字列を再利用したいときには、まず、その文字又は文字列が入力されている部分を表示部11の表示画面に表示させる。
そして、図17(a)に示すように、ユーザが表示画面を指でタッチし、再入力したい文字又は文字列を指で範囲指定をすると、端末装置1では、図16に示すステップS301〜ステップS308の処理が実行されることにより、コピー対象の文字又は文字列が特定されて選択される。
次に、ユーザが端末装置1の筐体ごと指で引く動作をすると、端末装置1では、図14に示す奥行き移動処理が実行されて範囲指定中状態が解除される。これにより、端末装置1では、図16に示すステップS309及びステップS313の処理が実行されるため、選択された文字や文字列と、テキスト文書と、が区別される。そして、ステップS305の処理にて選択された文字や文字列の3Dオブジェクトの奥行き方向の座標が0に設定されるため、図14に示す奥行き移動処理が実行されることにより、選択された文字や文字列の3Dオブジェクト以外の奥行き座標及び大きさのみが変更される。具体的に、表示画面をタッチしたまま端末装置1の筐体を垂直方向に押し込む動きであった場合には、選択された文字や文字列の3Dオブジェクト以外が手前に飛び出すように表示され、手前に引く動きであった場合には、奥に引っ込むように表示される。この結果、表示画面には、図17(b)に示すように、選択された文字や文字列がユーザの指に吸い付いたかのように浮き上がって表示されるとともに、その後方では、テキスト文書が広い範囲で表示される。
続いて、ユーザが筐体を下方向に動かすと、端末装置1では、これが縦方向の加速度センサ14yにて検知され、図13に示す縦方向のスクロール処理が実行されることにより、表示画面には、図17(c)に示すように、後方のテキスト文章全体が縦方向にスクロール表示される。このような動作を実行することにより、端末装置1は、ユーザに、表示部11の表示画面をあたかもテキスト文書を覗く窓のように感じさせることができる。
なお、図17に示す例では、テキスト文章の幅が、表示部11の表示画面の幅と同一であるが、テキスト文章の幅を表示画面の幅より広くしてもよく、この場合、ユーザが筐体全体を左右に動かす動作をすると、端末装置1では、これが横方向の加速度センサ14xにて検知され、図13に示す横方向のスクロール処理が実行されることにより、選択された文字や文字列を配置したい場所まで横方向にスクロール表示させることもできる。
そして、ユーザが、選択した文字や文字列を配置したい場所を見つけて筐体を押し込む動作をすると、端末装置1では、図14に示す奥行き移動処理が実行されることにより、表示画面には、図17(d)に示すように、浮き上がっていた文字列が、後方のテキスト文章と同じ奥行きになって表示される。
その後、ユーザが、文字や文字列が吸い付いた指を目的の場所まで移動させて手を離すと、端末装置1では、図16に示すステップS310〜ステップS313の処理が実行されることにより、テキスト文章に、選択された文字や文字列が挿入されて配置される。
なお、図17に示す例では、簡単のため図示を省略したが、選択されたコピー対象の文字や文字列がユーザの指に吸い付いた状態のときには、図18(a)及び(b)に示すように、配置キャレットが表示画面に表示される。このような配置キャレットを表示することにより、端末装置1は、選択された文字や文字列が指に吸い付いていることや、指を離したらどの場所に挿入されるかをユーザに明示することができる。さらに、ユーザが筐体を押し込む動作をしたときには、配置キャレットがある場所を中心にズームアップする動作をすることにより、選択された文字や文字列が挿入される場所をユーザにより分かり易く示してもよい。
以上説明したように、本実施形態に係る端末装置1は、タッチパネルとして機能する表示部11を備え、横方向、縦方向、及び奥行き方向の加速度センサ14x、14y、及び14zにより端末装置1の動きを検出する。また、端末装置1は、透明操作部15のタッチセンサ15により、タッチパネルで押圧された表示部11に表示された3Dオブジェクトを特定する。そして、端末装置1の動きが検出された場合、端末装置1の主制御装置16は、特定された3Dオブジェクトを他の表示内容と区別して、検出された動きに応じて、表示部11による表示内容に所定の制御を行なう。このため、端末装置1では、現実の3次元の世界の操作に近い操作感で表示部11上で表示されている3Dオブジェクトの操作ができる。
具体的に、端末装置1は、検出された動きが端末装置1の筐体をタッチしたまま垂直方向に押し込む動きであった場合、タッチパネルで押圧されている3Dオブジェクト以外が手前に飛び出すように表示を制御する。これにより、ユーザの目には、3Dオブジェクトが押し込まれたかのように見えるため、押圧している3Dオブジェクトを押し込んだ操作感を得ることができる。
これに対して、検出された動きが端末装置1の筐体をタッチしたまま垂直方向に手前に引く動きであった場合には、タッチパネルで押圧されている3Dオブジェクト以外が奥に引っ込むように表示を制御する。これにより、ユーザは、3Dオブジェクト以外が引っ込んで3Dオブジェクトが指にくっついてきたかのように感じることができるため、押圧している3Dオブジェクトが指に吸い付いて飛び出したような操作感を得ることができる。
このように、本実施形態に係る端末装置1によれば、指で触っている部分を不動点とし、その他の部分に演算による3D効果を付けることにより、3D効果を強調することができるので、リアルな操作感の新感覚ユーザインタフェイスを提供することができる。
また、奥行きを扱うことができるようになるため、機能操作やゲームなどに、より官能的なインタフェイスを提供することができる。
さらに、端末装置1は、押圧された3Dオブジェクト以外が手前に飛び出している或いは奥に引っ込むように表示されている状態で、端末装置1の水平方向への動きが検出された場合、押圧された3Dオブジェクトを表示部11上で移動させることができる。これにより、ユーザは、押圧している3Dオブジェクトを実際に移動させているような操作感を得ることができる。
加えて、端末装置1は、配置キャレットを表示することにより、押圧された3Dオブジェクト以外が手前に飛び出している或いは奥に引っ込むように表示されている状態あることをユーザに示している。これにより、ユーザは、押圧している3Dオブジェクトが表示制御されていることが分かる。
そして、表示部11が仮想的な3次元表示を行なうことで、ユーザは、よりリアルな操作感を得ることができる。
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
上記実施形態では、端末装置1の筐体をタッチしたまま垂直方向に押し込む動きであった場合、タッチパネルで押圧されている3Dオブジェクト以外が手前に飛び出すように表示され、手前に引く動きであった場合、押圧されている3Dオブジェクト以外が奥に引っ込むように表示されるものとして説明した。しかしながら、本発明はこれに限定されるものではなく、押し込む動きであった場合、押圧されている3Dオブジェクト以外が奥に引っ込むように表示し、手前に引く動きであった場合、押圧されている3Dオブジェクト以外が手前に飛び出すように表示してもよい。
また、表示部11の表示画面上の3Dオブジェクトにタッチしたまま筐体を水平方向に移動、回転させた場合には、タッチされた3Dオブジェクトはそのままにその他の表示内容を水平方向に移動、回転させるようにしてもよい。
さらに、表示部11の表示画面上の3Dオブジェクトにタッチしたまま筐体を傾けた場合には、タッチされた3Dオブジェクトを傾けて表示するようにしてもよい。
また、上記実施形態において、CPUが実行するプログラムは、予めROM等に記録されるものとして説明したが、本発明はこれに限定されるものではなく、上述の処理を実行させるためのプログラムを、既存の端末装置に適用することで、上記実施形態に係る端末装置1として機能させてもよい。
このようなプログラムの提供方法は任意であり、例えばコンピュータが読取可能な記録媒体(フレキシブルディスク、CD(Compact Disc)−ROM、DVD(Digital Versatile Disc)−ROM等)に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
さらに、上記の処理をOSとアプリケーションプログラムとの分担、又はOSとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板(BBS:Bulletin Board System)に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。