本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
本発明に係る表示装置の代表例として、以下では、コンピュータである携帯型のゲーム装置1について説明する。特に、本実施の形態に従うゲーム装置1は、後述するように、少なくとも1つの立体視表示が可能な表示部を有しており、この表示部を用いて、視差を利用して画像(オブジェクト)を立体視表示することが可能となっている。
本発明に係るゲーム装置としては、携帯型のゲーム装置1として具現化される場合に限られず、据置型のゲーム装置や、パーソナルコンピュータ、携帯電話、携帯端末などとして具現化することもできる。さらに、後述するように、本発明に係る表示制御プログラムを格納した記録媒体と当該記録媒体を装着可能な処理装置本体とを含む表示システムとして具現化してもよい。さらに、立体視表示が可能な表示部を有する表示装置と表示装置と通信可能な主体とが連係して本発明に係る表示制御方法を具現化してもよい。
<A.用語>
本明細書において、「立体視表示」、「3次元表示」、「3D表示」とは、ユーザが画像(オブジェクト)の少なくとも一部を立体的に視認することができるように、当該画像を表現することを意味する。ユーザにオブジェクトを立体的に視認させるために、典型的には、人間の目や脳の生理的な働きを利用する。このような立体視表示は、ユーザがオブジェクトを立体的に視認できるように生成された画像(典型的には、視差を有するステレオ画像)を用いて実現される。
本明細書において、「立体深度」とは、オブジェクトが存在しているとユーザが視認する、当該オブジェクトの表示面の垂直方向における位置を意味する。すなわち、「立体深度」は、表示面の垂直方向におけるオブジェクトの表示位置(奥行き位置)である。なお、以下の説明では、表示面に対してユーザ側にオブジェクトが表示される状態における「立体深度」を「飛出し量」とも称し、表示面に対してユーザとは反対側にオブジェクトが表示される状態における「立体深度」を「引込み量」とも称する。また、「立体深度」とは、立体感の度合いや強さ、または視差と表現することもできる。
本明細書において、「平面表示」、「2次元表示」、「2D表示」とは、上述の「立体視表示」などと相対する用語であり、ユーザが画像(オブジェクト)を立体的に視認できないような態様で、当該画像を表現することを意味する。
<B.概要>
本実施の形態に従う表示装置の典型例であるゲーム装置1は、立体視表示が可能な表示部(上側LCD110)を有する。ゲーム装置1のコンピュータが表示制御プログラムを実行することで、複数のオブジェクトからなるオブジェクト群を表示する。本実施の形態においては、複数のオブジェクトが他の装置またはユーザと遣り取りされる複数のメッセージを示す場合について説明する。このオブジェクト群に含まれる複数のオブジェクトに対しては、各オブジェクトの属性情報などに基づいて、オブジェクト群におけるそれぞれのオブジェクトの配置位置が設定される。この設定された配置位置に複数のオブジェクト群が表示される。典型的には、予め設定された配置順番に従って、それぞれのオブジェクトの配置位置が設定される。さらに、オブジェクト群に含まれる少なくとも一部のオブジェクトについては、立体視表示が可能な表示部を用いて立体視表示される。
このような立体視表示されるオブジェクトを含む一連のオブジェクト群がユーザに提示するインターフェイスを採用することで、多数のオブジェクトを同時に表示しなければならないアプリケーションであっても、ユーザは、各オブジェクトを一見して把握することができるとともに、必要なオブジェクトを選択し、さらに所望の処理を当該オブジェクトに対して実行することもできる。
なお、以下の説明においては、本発明に係るインターフェイスをメッセージアプリケーションに適用する場合の例について説明するが、本発明はこのような用途に限定されるものではなく、複数のオブジェクトを表示するようなものであれば、どのような形態にも適用可能である。
<C.ゲーム装置の全体構成>
まず、本実施の形態に従うゲーム装置1の全体構成について説明する。
図1は、本発明の実施の形態に従うゲーム装置1の正面図(開状態)である。図2は、図1に示すゲーム装置1の上面側を中心とする投影図である。すなわち、図2(A)は、ゲーム装置1の正面図(閉状態)を示し、図2(B)は、ゲーム装置1の前面図を示し、図2(C)は、ゲーム装置1の左側面図を示し、図2(D)は、ゲーム装置1の右側面図を示す。図3は、図1に示すゲーム装置1の底面側を中心とする投影図である。すなわち、図3(A)は、ゲーム装置1の底面図を示し、図3(B)は、ゲーム装置1の背面図を示す。本明細書においては、便宜上、ゲーム装置1を図1に示すように配置した状態を基準として、「正面」、「前面」、「左側面」、「右側面」、「底面」、「背面」という用語を用いるが、これらの用語は形式的な呼称であり、ユーザによるゲーム装置1の使用形態の制約などを意図するものではない。
図1〜図3を参照して、本実施の形態に従う携帯型のゲーム装置1は、折り畳み可能に構成されている。ゲーム装置1は、開いた状態では、図1のような外観であり、閉じた状態では、図2(A)のような外観となっている。ゲーム装置1は、開いた状態であっても、ユーザが両手または片手で把持することができるようなサイズであることが好ましい。
ゲーム装置1は、上側ハウジング2と下側ハウジング3とを有する。上側ハウジング2と下側ハウジング3とは、折り畳み可能(開閉可能)に連結されている。図1に示す例では、上側ハウジング2および下側ハウジング3の各々は、長方形の板状に形成され、互いの長辺部分でヒンジ4を介して回転可能に連結されている。ゲーム装置1は、ユーザによって使用するときに、開状態に維持され、使用されないときに、閉状態に維持される。
また、ゲーム装置1では、上側ハウジング2と下側ハウジング3との間の角度を、閉状態の位置と開状態の位置との間(略0°〜略180°)の任意の角度で維持することもできる。すなわち、上側ハウジング2を下側ハウジング3に対して任意の角度で静止させることができる。このハウジング間の静止には、上側ハウジング2と下側ハウジング3との連結部分に発生する摩擦力などが用いられる。摩擦力に加えて、あるいは、摩擦力に代えて、上側ハウジング2と下側ハウジング3との連結部内にラッチ機構を採用してもよい。
上側ハウジング2には、立体視表示が可能な表示部(表示手段)として、上側LCD(Liquid Crystal Display:液晶表示装置)110が設けられている。上側LCD110は、長方形状の表示領域を有し、その長辺方向が上側ハウジング2の長辺方向に一致するように配置される。本実施の形態に従うゲーム装置1では、ユーザが立体視表示をより楽しむことができるように、下側LCD120の画面サイズに比較してより大きな画面サイズを有する上側LCD110を採用する構成を示す。但し、必ずしも、このように画面サイズを異ならせる必要はなく、アプリケーションの用途やゲーム装置1のサイズなどに応じて、画面サイズは適宜設計することができる。上側LCD110の詳細な構成については、後述する。
上側ハウジング2には、何らかの被写体を撮像するための撮像装置(撮像手段)が設けられている。より具体的には、上側ハウジング2には、一対の外側カメラ131Lおよび131R(図2(A)参照)と、内側カメラ133(図1参照)とが設けられている。内側カメラ133は、上側LCD110の上部に配置されており、一対の外側カメラ131Lおよび131Rは、内側カメラ133が配置されている内側主面とは反対側の面、すなわち上側ハウジング2の外側主面(ゲーム装置1が閉状態となった場合に外側となる面に相当)に配置されている。このような位置関係によって、一対の外側カメラ131Lおよび131Rは、上側ハウジング2の外側主面が向く方向に存在する被写体を撮像することができ、一方、内側カメラ133は、外側カメラ131Lおよび131Rの撮像方向の逆方向、すなわち、上側ハウジング2の内側主面が向く方向に存在する被写体を撮像することができる。
一対の外側カメラ131Lおよび131Rは、所定の間隔だけ離して配置されており、外側カメラ131Lおよび131Rの撮像によって取得される一対の入力画像の間には、外側カメラ131Lと外側カメラ131Rとの相対的な位置関係に応じた、所定の視差が存在する。そのため、これらの外側カメラ131Lおよび131Rが取得する一対の画像データを用いて、被写体を立体視表示することもできる。すなわち、外側カメラ131Lおよび131Rは、いわゆるステレオカメラとして機能する。
一方、内側カメラ133の撮像によって取得される入力画像は、基本的には、非立体視表示(平面表示)に用いられる。したがって、本実施の形態に従うゲーム装置1においては、外側カメラ131Lおよび131Rを有効化すると、立体視表示をするための一対の入力画像を取得でき、内側カメラ133を有効化すると、非立体視表示をするための入力画像を取得できる。
さらに、上側ハウジング2には、上側LCD110の右側に立体視ボリューム145が設けられている。この立体視ボリューム145は、上側LCD110における立体視表示の立体感の度合い(視差および強さ)を調整するために用いられる。
上側ハウジング2には、音声発生装置(音声発生手段)としてのスピーカ(図4に示すスピーカ151)が収納されている。より具体的には、上側ハウジング2の内側主面中央部に配置されている上側LCD110に対して、左右両側に音抜き孔151Lおよび151Rがそれぞれ配置されている。スピーカ151で発生した音声は、スピーカ151とそれぞれ連通する音抜き孔151Lおよび151Rを通じて、ユーザへ向けて放射される。
一方、下側ハウジング3には、表示部(表示手段)として、下側LCD120が設けられている。下側LCD120は、長方形状の表示領域を有し、その長辺方向が下側ハウジング3の長辺方向と一致するように配置される。
下側LCD120としては、後述するような立体視表示が可能な表示部を採用してもよいが、本実施の形態においては、オブジェクトや各種情報などを非立体視表示(平面表示)する一般的な表示デバイスが採用される。そのため、下側LCD120としては、例えば、EL(Electro Luminescence:電界発光)を利用したものといった、他の適切な形式の表示部を採用してもよい。さらに、表示部(表示手段)の解像度は、実行されるアプリケーションなどに応じて適切に設計される。
下側ハウジング3には、ユーザなどからの入力操作を受付ける入力手段(入力装置)として、コントロールパッド154と、十字ボタン161と、ボタン群142,162とが設けられている。これらの入力部は、上側ハウジング2と下側ハウジング3とを折り畳んだときに内側となる、下側ハウジング3の主面上に設けられている。特に、コントロールパッド154および十字ボタン161は、ユーザがゲーム装置1を把持した際に、その左手で容易に操作できる位置に配置され、ボタン群162は、ユーザがゲーム装置1を把持した際に、その右手で容易に操作できる位置に配置される。
コントロールパッド154は、主として、ゲーム装置1における立体視表示を調整するための操作を受付ける。より具体的には、コントロールパッド154は、ユーザの操作を受付ける突起部を有するとともに、下側ハウジング3に対する相対的な位置関係を、少なくとも紙面上下方向および紙面左右方向に変更することが可能な構造となっている。図1に示すコントロールパッド154に代えて、アナログスティック、または、ジョイスティックなどを採用してもよい。
十字ボタン161は、2つの方向を独立して操作可能な入力部であり、ユーザがそれぞれの方向におけるボタン操作をすることで、それに応じた値をもつ指令が出力される。ボタン群162は、紙面上下左右方向にそれぞれ対応付けられた、4つの操作ボタン162A,162B,162X,162Yを含む。
十字ボタン161および/またはボタン群162が出力する操作入力は、ゲーム装置1における立体視表示の調整に用いられてもよい。あるいは、ゲーム装置1で実行される各種アプリケーションにおいては、これらの操作入力は、ゲーム進行などに係る、選択・決定・キャンセルといった操作に用いられる。
ボタン群142は、セレクトボタン142aと、HOMEボタン142bと、スタートボタン142cと、電源ボタン142dとを含む。セレクトボタン142aは、典型的には、ゲーム装置1で実行されるアプリケーションを選択するために用いられる。HOMEボタン142bは、典型的には、ゲーム装置1で実行されるメニューアプリケーションや各種アプリケーションを初期状態にするために用いられる。スタートボタン142cは、典型的には、ゲーム装置1においてアプリケーションの実行を開始するために用いられる。電源ボタン142dは、ゲーム装置1の電源をオン/オフするために用いられる。
下側ハウジング3内には、音声取得装置(音声取得手段)としてのマイク(図4に示すマイク153)が収納されている。そして、下側ハウジング3の主面上には、マイク153がゲーム装置1の周囲における音を取得するためのマイク用孔153aが設けられている。なお、マイク153が収納される位置、および、当該マイク153と連通するマイク用孔153aの位置は、下側ハウジング3の主面上に限られることなく、例えば、マイク153をヒンジ4内に収納するとともに、ヒンジ4の表面であって、マイク153の収納位置に対応する位置にマイク用孔153aを設けてもよい。
ゲーム装置1には、コントロールパッド154、十字ボタン161、および、ボタン群142,162に加えて、別の入力部(入力手段)であるポインティングデバイスとして、タッチパネル122がさらに設けられている。タッチパネル122は、下側LCD120の画面上を覆うように装着され、ユーザによる入力操作(位置指示操作、ポインティング操作)が行われた場合に、対応する2次元座標値を検出する。すなわち、ゲーム装置1は、ユーザ操作を受付けるポインティングデバイスを有している。
タッチパネル122としては、典型的には、抵抗膜方式を採用することができる。但し、抵抗膜方式に限らず、各種の押圧式のタッチパネルを採用することもできる。また、タッチパネル122の解像度(検出精度)は、下側LCD120の解像度(表示精度)と同程度であることが好ましい。但し、タッチパネル122の解像度と下側LCD120の解像度とを完全に一致させる必要はない。
タッチパネル122に対するポインティング操作は、通常、ユーザがスタイラス300を用いることで行われるが、スタイラス300に代えて、ユーザ自身の指などでポインティング操作(入力操作)を行うことも可能である。図1,図3(C)に示すように、下側ハウジング3の背面には、スタイラス300の収納部176が設けられている。タッチパネル122に対する入力操作を行うためのスタイラス300は、通常、収納部176に格納されており、ユーザが必要に応じて取り出すことになる。
なお、ユーザからの位置指示を受付ける入力部(入力手段)であるポインティングデバイスとしては、タッチパネル122に代えて、あるいは、これに加えて、マウス、トラックボール、ペンタブレットなどを用いてもよい。また、表示部の表示面に対して遠隔から座標を指示できるポインタ装置(典型的には、Wii(登録商標)のコントローラなど)を採用してもよい。いずれのデバイスを用いた場合であっても、下側LCD120の表示領域内の位置に関連付けられた位置指示を受付けるように構成されることが好ましい。
図2(C),図2(D),図3(A),図3(B)に示すように、下側ハウジング3の背面の左端部には、Lボタン162Lが設けられており、下側ハウジング3の背面の右端部には、Rボタン162Rが設けられている。Lボタン162LおよびRボタン162Rについては、ゲーム装置1で実行される各種のアプリケーションにおいて、選択などの操作に用いられる。
図2(C)に示すように、下側ハウジング3の左側面には、音量ボリューム144が設けられている。音量ボリューム144は、ゲーム装置1に搭載されているスピーカ(図4に示すスピーカ151)からの音量を調整するために用いられる。
図2(D)に示すように、下側ハウジング3の右側面には、無線スイッチ143が設けられている。無線スイッチ143は、ゲーム装置1における無線通信をオン状態(有効化状態)またはオフ状態(無効化状態)に切り替える。
ゲーム装置1に対しては、ゲームカード171および/またはメモリカード173が装着可能となっている。より具体的には、図3(B)に示すように、下側ハウジング3の背面には、ゲームカード171を装着するためのゲームカードスロット170が設けられている。ゲームカードスロット170の奥側には、ゲーム装置1とゲームカード171との間を電気的に接続するためのインターフェイスが設けられている。ゲームカードスロット170は、ゲームカード171を着脱自在に構成されている。ゲームカード171は、アプリケーションプログラムやゲームプログラム(いずれも命令セットを含む)などを保持する。
また、図2(C)に示すように、下側ハウジング3の左側面には、メモリカード173を装着するためのメモリカードスロット172が設けられている。メモリカードスロット172の奥側には、ゲーム装置1とメモリカード173との間を電気的に接続するためのインターフェイスが設けられている。メモリカードスロット172は、メモリカード173を着脱自在に構成されている。メモリカード173は、他の情報処理装置・ゲーム装置から取得したプログラムや画像データの読出し、ならびに、ゲーム装置1によって撮像および/または画像処理された画像データの記憶(保存)などに用いられる。ゲームカード171は、例えば、SD(Secure Digital)カードなどの不揮発性記録媒体からなる。
ゲーム装置1には、動作状態などをユーザに提示するためのインジケータが設けられている。より具体的には、下側ハウジング3および上側ハウジング2には、複数のLED(Light Emitting Diode)からなるインジケータ群147が設けられている。インジケータ群147は、立体表示インジケータ147aと、お知らせインジケータ147bと、無線インジケータ147cと、電源インジケータ147dと、充電インジケータ147eとを含む。立体表示インジケータ147aは、上側ハウジング2の主面上に設けており、その他のインジケータは、下側ハウジング3の主面または側面に設けられている。
立体表示インジケータ147aは、上側LCD110において立体視表示が行われているか否かを通知する。典型的には、上側LCD110での立体視表示が有効化されているときに、立体表示インジケータ147aは点灯する。
お知らせインジケータ147bは、ユーザに通知すべき情報が存在するか否かを通知する。典型的には、ユーザに対して未読のメールが存在しているときや、各種のサーバから何らかのメッセージを受信しているときに、お知らせインジケータ147bは点灯する。
無線インジケータ147cは、ゲーム装置1における無線通信の状態を通知する。典型的には、無線通信が有効化されているときに、無線インジケータ147cは点灯する。
電源インジケータ147dは、ゲーム装置1における電源状態を通知する。ゲーム装置1は、図示しないバッテリを内蔵しており(典型的には、下側ハウジング3に収納される)、主として、このバッテリからの電力で駆動する。そのため、電源インジケータ147dは、ゲーム装置1における電源の投入状態、および/または、バッテリの残量の状態などを通知する。典型的には、ゲーム装置1の電源が投入状態(オン状態)であって、かつ、バッテリの残量が十分であるときに、電源インジケータ147dは、緑色に点灯し、ゲーム装置1の電源が投入状態(オン状態)であって、かつ、バッテリの残量が低下しているときに、赤色に点灯する。
充電インジケータ147eは、上述のバッテリに対する充電状態を通知する。典型的には、ゲーム装置1に対して充電アダプタ(図示しない)などが装着されて内蔵のバッテリが充電状態であるときに、充電インジケータ147eは点灯する。なお、充電アダプタは、図3(A)に示すように、ゲーム装置1の背面に設けられている充電端子174に接続される。
また、本実施の形態に従うゲーム装置1は、赤外線通信の機能を搭載しており、ゲーム装置1の背面には、赤外線ポート179が設けられている。この赤外線ポート179は、データ通信の搬送波である赤外線を投光/受光する。
さらに、ゲーム装置1の前面には、ゲーム装置1を吊り下げるためのストラップを接続するためのフック31,32が設けられている。
また、下側ハウジング3の前面には、ヘッドホンおよび/またはマイクを接続するための接続端子158が設けられている。
<D.ゲーム装置の電気的構成>
次に、本実施の形態に従うゲーム装置1の電気的構成について説明する。
図4は、本発明の実施の形態に従うゲーム装置1の電気的構成を示すブロック図である。
図4を参照して、ゲーム装置1は、演算処理部100と、上側LCD110と、下側LCD120と、タッチパネル122と、外側カメラ131L,131Rと、内側カメラ133と、無線モジュール134と、不揮発性メモリ136と、メインメモリ138と、マイコン140と、ボタン群142と、音量ボリューム144と、立体視ボリューム145と、電源管理IC(Integrated Circuit)146と、インジケータ群147と、加速度センサ148と、インターフェイス回路150と、スピーカ151と、ヘッドホン用アンプ152と、マイク153と、接続端子158と、十字ボタン161と、ボタン群162と、ゲームカードスロット170と、メモリカードスロット172と、赤外線モジュール178とを含む。また、ゲーム装置1は、図示しないバッテリおよび電源回路を含む。
演算処理部100は、ゲーム装置1の全体の制御を司る。より具体的には、演算処理部100は、不揮発性メモリ136に予め格納されているファームウェア(命令セット)、ゲームカードスロット170に装着されるゲームカード171から読出されるプログラム(命令セット)やデータ、メモリカードスロット172に装着されるメモリカード173から読出されるプログラム(命令セット)やデータなどを実行することで、上側LCD110における立体視表示の制御を含む各種処理を実現する。
なお、演算処理部100で実行されるプログラム(命令セット)がゲームカード171やメモリカード173を通じて提供される場合に加えて、CD−ROMやDVDなどの光学式の記録媒体を通じて、ゲーム装置1へ提供されるようにしてもよい。さらに、ネットワークを通じて接続されるサーバ装置(図示しない)からプログラムが提供されるようにしてもよい。
より具体的には、演算処理部100は、CPU(Central Processing Unit)102と、GPU(Graphical Processing Unit)104と、VRAM(Video Random Access Memory)106と、DSP(Digital Signal Processor)108とを含む。これらの各部の処理については、後述する。また、演算処理部100は、各部との間でデータを遣り取りする。
外側カメラ131Lおよび131Rならびに内側カメラ133の各々は、演算処理部100に接続され、演算処理部100からの指示に応答して、撮像により取得した入力画像を演算処理部100へ出力する。これらのカメラの各々は、CCD(Charge Coupled Device)やCIS(CMOS Image Sensor)といった撮像素子と、撮像素子で取得された画像データ(入力画像)を読出すための周辺回路とを含む。
無線モジュール134は、他のゲーム装置1や何らかの情報処理装置との間で無線信号を介してデータを遣り取りする。一例として、無線モジュール134は、IEEE802.11a/b/g/nといった規格に準拠した無線LAN方式により、他の装置との間でデータ通信を行う。
不揮発性メモリ136は、ゲーム装置1の基本動作に必要なファームウェアなどを格納しており、そのファームウェアを記述するコードがメインメモリ138に展開される。演算処理部100のCPU102がメインメモリ138に展開されたコードを実行することで、ゲーム装置1での基本処理が実現される。また、不揮発性メモリ136には、ゲーム装置1において予め設定される各種パラメータに関するデータ(プリセットデータ)が格納されてもよい。一例として、不揮発性メモリ136は、フラッシュメモリからなる。
メインメモリ138は、演算処理部100が処理を実行するためのワーク領域またはバッファ領域として用いられる。すなわち、メインメモリ138は、演算処理部100での処理に必要なプログラム(コード)やデータを一時的に記憶する。一例として、メインメモリ138は、PSRAM(Pseudo-SRAM)からなる。
マイコン140は、主として、ユーザインターフェイスに係る処理を提供する。より具体的には、マイコン140は、演算処理部100と接続されるとともに、ボタン群142、音量ボリューム144、立体視ボリューム145、電源管理IC146、インジケータ群147、および、加速度センサ148と接続される。マイコン140は、ユーザによるボタン操作などを検知して、その検知結果を演算処理部100へ出力するとともに、演算処理部100からの信号に応答して、ユーザへ各種情報を通知するためのインジケータを点灯する。
また、マイコン140は、リアルタイムカウント(RTC:Real Time Clock)141を有している。リアルタイムカウンタ141は、計時機能を提供する部位であり、予め定まった周期で時間をカウントする。このカウント結果は、逐次、演算処理部100へ出力される。演算処理部100は、リアルタイムカウンタ141によってカウントされたカウント値に基づいて、現在時刻(日付)などを算出することもできる。
電源管理IC146は、ゲーム装置1に搭載される電源(典型的には、上述のバッテリ)から各部へ電力を供給するとともに、その供給量を制御する。
加速度センサ148は、ゲーム装置1の変位を検出し、その検出結果は、マイコン140を通じて演算処理部100へ出力される。加速度センサ148による検出結果は、ゲーム装置1で実行されるプログラム(ゲームアプリケーション)などに利用される。
赤外線モジュール178は、他のゲーム装置1との間で無線通信(赤外線通信)を行う。この赤外線モジュール178による無線通信は、無線モジュール134による無線通信に比較して到達可能距離が短くなっている。この赤外線通信の搬送波である赤外線は、赤外線ポート179(図3(B)参照)を通じて投光/受光される。
インターフェイス回路150は、演算処理部100と接続されるとともに、スピーカ151、ヘッドホン用アンプ152、マイク153、コントロールパッド154、および、タッチパネル122と接続される。より具体的には、インターフェイス回路150は、スピーカ151、ヘッドホン用アンプ152、マイク153の制御を行うための音声制御回路(図示しない)と、タッチパネル122の制御を行うためのタッチパネル制御回路(図示しない)とを含む。
スピーカ151は、インターフェイス回路150からの音声信号を増幅して、音抜き孔151Lおよび151Rから音声を出力する。ヘッドホン用アンプ152は、インターフェイス回路150からの音声信号を増幅して、接続されるヘッドホンから音声を出力する。マイク153は、ゲーム装置1に向かって発声されたユーザの音声などを検知して、検知した音声を示す音声信号をインターフェイス回路150に出力する。
以上のように、インターフェイス回路150を構成する音声制御回路は、マイク153で検知されたアナログの音声信号に対してA/D(アナログ/デジタル)変換を行い、その結果得られたデジタルの音声信号を演算処理部100へ出力するとともに、演算処理部100などで生成されたデジタルの音声信号に対してD/A(デジタル/アナログ)変換を行い、その結果得られたアナログの音声信号をスピーカ151および/または接続されるヘッドホンへ出力する。
また、インターフェイス回路150を構成するタッチパネル制御回路は、タッチパネル122からの検出信号に応答して、ユーザが入力操作(ポインティング操作)した位置を示すタッチ位置データを生成して演算処理部100へ出力する。
ゲームカードスロット170およびメモリカードスロット172は、それぞれ、演算処理部100と接続される。ゲームカードスロット170は、演算処理部100からの指令に応答して、コネクタを介して、装着されたゲームカード171との間でデータの読出しおよび書込みを行う。メモリカードスロット172は、演算処理部100からの指令に応答して、コネクタを介して、装着されたメモリカード173との間でデータの読出しおよび書込みを行う。
下側LCD120および上側LCD110は、演算処理部100からの指令に従って、それぞれ画像を表示する。ゲーム装置1の典型的な使用形態においては、下側LCD120に各種操作を受付けるための画像が表示されるとともに、上側LCD110では、立体視表示が行われる。
<E.立体視表示を提供するための構成>
次に、本実施の形態に従うゲーム装置1において立体視表示を提供するための構成について説明する。
図5は、本発明の実施の形態に従うゲーム装置1での表示制御を実現するための電気的構成を示すブロック図である。図6は、図5に示す上側LCD110の断面模式図である。
図5を参照して、演算処理部100は、CPU102に加えて、主として、上側LCD110および下側LCD120においてそれぞれ画像を表示するための処理(画像処理)を行うためのGPU104を含む。GPU104は、画像処理に特化した処理回路を有しており、CPU102からの指令に応答して、上側LCD110および下側LCD120にそれぞれ表示すべき画像を逐次生成する。これらの画像は、上側LCD110用のVRAM106a、および、下側LCD120用のVRAM106bへそれぞれ転送される。
このとき、上側LCD110において立体視表示を行うための一対の画像(左目用画像および右目用画像)は互いに独立してVRAM106aへ書込まれる。これに対して、下側LCD120においては平面表示(非立体視表示)が行われるので、単一の画像がVRAM106bへ書込まれる。
上側LCD110は、LCDコントローラ111と、LCDパネル112と、バリア液晶113とを含む。これに対して、下側LCD120は、LCDコントローラ121と、LCDパネル123とを含む。
さらに、上側LCD110の構造について説明する。
図6には、上側LCD110の典型例として、パララックスバリア方式の液晶表示デバイスの構造を示す。上側LCD110は、ガラス基板118とガラス基板119との間に配置されたLCDパネル112を含む。
LCDパネル112は、左目用画素群112Lおよび右目用画素群112Rを含む。ガラス基板118のガラス基板119の側とは反対側に、図示しないバックライトが設けられており、このバックライトからの光は左目用画素群112Lおよび右目用画素群112Rに向けて照射される。そして、左目用画素群112Lおよび右目用画素群112Rは、バックライトからの光を調節するための空間光変調器として機能する。ここで、左目用画素群112Lの各画素と右目用画素群112Rの各画素とは交互に配置される。
ガラス基板118の左目用画素群112Lおよび右目用画素群112Rに接する側とは反対の側に、視差光学系であるバリア液晶113が設けられる。このバリア液晶113には、複数のスリット114が所定間隔で行列状に設けられている。各スリット114の中心位置を通り、かつガラス基板118の面に対して垂直方向の軸を基準として、左目用画素群112Lおよび右目用画素群112Rとが対称的に配置される。このように、各スリットに対応付けられる左目用画素群112Lおよび右目用画素群112Rの各組について、スリットとの間の位置関係を適切に設計することで、ユーザは、その左目で左目用画素群112Lだけを視認するとともに、その右目で右目用画素群112Rだけを視認することになる。
すなわち、バリア液晶113に含まれる各スリット114が、ユーザの右目および左目による視界をそれぞれ対応する角度に制限する。その結果、ユーザの左目の視線AXLには左目用画素群112Lのみが存在し、一方、ユーザの右目の視線AXRには右目用画素群112Rのみが存在することになる。
ここで、左目用画素群112Lおよび右目用画素群112Rに、所定の視差を有する一対の画像を表示させることで、所定の視差を有する画像をユーザに提示することができる。このような所定の視差を有する一対の画像を表示することで、ユーザから見れば、被写体を立体的に見ていると感じることになる。以下では、バリア液晶113のユーザ側の表面、すなわち、この画像が実際に表示される面を(上側LCD110の)表示面とも称す。
より具体的には、図5に示すように、GPU104は、左目用画像および右目用画像をVRAM106aのアドレスを指定して順次書込む。LCDコントローラ111は、VRAM106aに書込まれた左目用画像および右目用画像を構成する列方向の画像が、LCDパネル112に交互に並んで表示されるように、VRAM106aの対象となるアドレスから各列の画像データを順次読出して、LCDパネル112を駆動する。
なお、上側LCD110では、画像を平面表示、すなわち、非立体視表示することもできる。この場合には、LCDコントローラ111に対して指令を与えることで、バリア液晶113を無効化する方法と、表示に用いられる左目用画像と右目用画像との間の視差を実質的にゼロとする方法とが存在する。
前者の方法の場合、バリア液晶113が提供する複数のスリット114が無効化されるので、ユーザの左目および右目には、実質的に、左目用画素群112Lおよび右目用画素群112Rからの光が入射することになる。なお、この場合には、ユーザから見た解像度は、立体視表示のときの解像度に比べて、実質的に2倍となる。
後者の方法の場合、ユーザの左目で視認される画像と、右目で視認される画像とが実質的に同一に制御されるので、ユーザは、同じ画像を左目および右目で視認することになる。
一方、下側LCD120においては、非立体視表示がなされる。すなわち、GPU104は、表示すべき画像をVRAM106bのアドレスを指定して順次書込み、LCDコントローラ121は、VRAM106bに書込まれた画像を順次読出して、LCDパネル123を駆動する。
なお、図6には、立体視表示が可能な表示部の典型例として、パララックスバリア方式の表示デバイスを例示したが、例えば、レンチキュラ方式の表示デバイスなどを採用することもできる。これらの方式は、左目用画像の表示エリアと右目用画像の表示エリアとが一定のパターンで(典型的には交互に)配置される。
なお、シャッタメガネ(時分割方式)を利用した方法のように、左目用画像の表示エリアと右目用画像の表示エリアとを共通としつつ、左目用画像と右目用画像とを交互に表示する形態を採用することもできる。
<F.立体視表示/平面表示の実現例>
次に、上側LCD110におけるオブジェクトの立体視表示、および、下側LCD120におけるオブジェクトの平面表示の実現例について説明する。以下では、ゲーム装置における典型的な実現例として、仮想3次元空間に配置されたオブジェクトを、仮想カメラを用いて(仮想的に)撮像することで画像を生成し、この生成された画像を表示するという方法について説明する。
図7は、本発明の実施の形態に従うゲーム装置1における表示制御に用いられる画像を生成する方法の一例について説明するための図である。図8は、図7に示す方法によって生成された画像を用いて立体視表示を実現する方法について説明するための図である。
図7(A)を参照して、仮想3次元空間に被写体SBJ1のオブジェクトとして「りんご」が配置されており、この「りんご」を一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)で撮像することで、上側LCD110において「りんご」を立体視表示するための一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)が生成される。また、この「りんご」を単一の仮想カメラ400C(典型的には、左仮想カメラ400Lと右仮想カメラ400Rとの間の中点位置に配置される)で撮像することで、下側LCD120において「りんご」を平面表示するための単一の画像(平面表示用画像PIMGC)が生成される。
なお、仮想3次元空間において、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)は水平方向(以下、X方向と称す)に整列配置されているものとする。このとき、垂直方向をY方向と称し、それぞれの仮想カメラのカメラ方向(撮像の光軸方向)をZ’方向と称す。なお、仮想3次元仮想空間におけるX方向およびY方向は、それぞれ表示面の横方向(X方向)および縦方向(Y方向)に対応する。また、仮想3次元空間におけるZ’方向は、オブジェクトの奥行き値に相当する。各オブジェクトについてのZ’方向における位置(奥行き値)は、立体視表示したときの立体深度を決定する。すなわち、基準オブジェクト(奥行き値が「0」)からより離れた位置(より大きな奥行き値)に配置されるオブジェクトほど、立体深度がより大きく表示されることになる。このように奥行き値を設定することによって、一対の仮想カメラによって撮像された一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)を用いて立体視表示した場合に、仮想3次元仮想空間において奥行き値が大きいオブジェクトほど相対的に大きな立体深度を有することになる。
すなわち、立体視表示される各オブジェクトの立体深度の絶対値は、仮想3次元仮想空間におけるZ’方向での位置(奥行き値)と、一対の仮想カメラの間の距離d1とによって決定される。
図7(B)に示す一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)は、実質的に同一の表示領域に表示される。すなわち、図6に示すようなレンチキュラ方式では、左目用画素と右目用画素とが交互に配置されることで、対象の左目用画像PIMGLおよび右目用画像PIMGRは、表示面の横方向に空間的に交互に表示されることになる。あるいは、シャッタメガネ(時分割方式)では、同一の表示面を時間的に分割することで、対象の左目用画像PIMGLおよび右目用画像PIMGRが時間的に交互に表示されることになる。
したがって、図7(B)に示す一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)のうち、視差がゼロとなる領域は、ユーザから見れば表示面に存在しているように見える。すなわち、目的の領域についての視差をゼロとすることで、ユーザは、その領域に含まれるオブジェクトが上側LCD110の表示面あるいは表示面付近に位置しているように感じる。
一方、図7(B)に示す平面表示用画像PIMGCは、その全体が下側LCD120に表示される。そのため、ユーザから見れば通常の平面表示となる。
上側LCD110において立体視表示されるオブジェクトの立体深度(奥行き位置、すなわち飛出し量または引込み量)は、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の距離d1に依存して変化する。すなわち、一対の仮想カメラの間の距離d1が大きくなるほど、それぞれの仮想カメラが撮像する撮像範囲(視野)の間の差が大きくなるので、一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)の間に生じる視差も大きくなる。
より具体的には、図8(A)に示すように、被写体SBJ1について視差が増大する方向に、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更すると、ユーザは、上側LCD110の表示面よりユーザ側に被写体SBJ1が存在しているように感じる。いわば、ユーザは、被写体SBJ1の像が表示面から「飛出し」ているように視認する。
これに対して、図8(B)に示すように、被写体SBJ1について視差が減少する方向に、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更すると、ユーザは、上側LCD110の表示面よりユーザとは反対側に被写体SBJ1が存在しているように感じる。いわば、ユーザは、被写体SBJ1の像が表示面へ「引込み」されているように視認する。
このように、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更することで、ユーザが視認する立体深度を適宜調整することができる。
なお、代替の方法として、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を固定した上で、それぞれ撮像される一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)を取得し、さらに、上側LCD110の表示面での、一対の画像の間の相対的な表示位置を変更することで、ユーザが視認する立体深度を調整することもできる。さらに、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係および一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)の間の相対的な表示位置の両方を変更することで、ユーザが視認する立体深度を適宜調整してもよい。
<G.メッセージアプリケーション>
次に、本実施の形態に従うゲーム装置1において実行されるメッセージアプリケーションについて説明する。
図9は、本発明の実施の形態に従うゲーム装置1において実行されるメッセージアプリケーションに関するシステム構成を示す模式図である。図10は、本発明の実施の形態に従うゲーム装置1において実行されるメッセージアプリケーションのモードを示す遷移図である。
図9を参照して、本実施の形態に従うゲーム装置1は、(1)他のゲーム装置1(他のユーザ)との間でサーバ装置SRVを経由してメッセージを交換する機能、および、(2)他のゲーム装置1との間で直接的にメッセージを交換する機能、の2つに対応している。
より具体的には、ネットワークNWには、メッセージを交換するためのサーバ装置SRVと、ゲーム装置1と無線通信するためのアクセスポイントAPとが接続されている。ゲーム装置1は、このアクセスポイントAPを介してサーバ装置SRVとの間でデータを送受信することができる。すなわち、ゲーム装置1は、サーバ装置SRVおよびアクセスポイントAPを介して、他のゲーム装置1との間でデータを送受信することができる。また、ゲーム装置1は、他のゲーム装置1との間で直接的にデータを送受信することができる。ゲーム装置1では、他のゲーム装置1との間で送受信されたデータ(メッセージ)を示すオブジェクトが表示される。
すなわち、本実施の形態に従うゲーム装置1は、表示されるオブジェクトのデータを他の装置との間で送受信するための送受信手段が利用可能となっている。なお、ゲーム装置1がデータと送受信する相手先は、同一種類のゲーム装置1に限られず、パーソナルコンピュータや携帯電話であってもよい。
より具体的には、ゲーム装置1とアクセスポイントAPとの間には、無線LAN(IEEE802.11)やBluetooth(登録商標)などの無線通信方法を採用することができる。なお、ゲーム装置1をLANケーブルなどでネットワークに接続してもよい。この場合には、アクセスポイントAPは不要となる。一方、ゲーム装置1と他のゲーム装置1との間(ローカル通信)には、赤外線通信やBluetooth(登録商標)などの無線通信方法を採用することができる。
ゲーム装置1のユーザがメッセージを作成および送信する機能や、受信されたメッセージを表示する機能については、ゲーム装置1でメッセージアプリケーションが実行されることで提供される。まず、このメッセージアプリケーションの概要について説明する。
本実施の形態に従うゲーム装置1では、複数のアプリケーションが実行可能である。そのため、図10に示すように、これらの複数のアプリケーションをユーザが選択的に実行可能とするために、ゲーム装置1では、実行されるアプリケーションを選択するための総合メニュー画面が表示される(状態ST1)。典型的には、この総合メニュー画面には、ゲーム装置1において実行可能なアプリケーションが一覧表示されており、ユーザがいずれかのアプリケーションを選択すると、選択されたアプリケーションが実行される。
例えば、メッセージアプリケーションが選択されると、後述するようなユーザインターフェイスとともに、本実施の形態に従うメッセージアプリケーションの処理が開始される(状態ST2)。このメッセージアプリケーションでは、メッセージ作成モード(状態ST3)、メッセージ送信モード(状態ST4)、および、メッセージ受信モード(状態ST5)などに状態遷移する。
なお、総合メニュー画面において、他のアプリケーションが選択されると、選択された他のアプリケーションが実行される(状態ST6)。
<H.ユーザインターフェイス>
次に、メッセージアプリケーション(図10に示す状態ST2)において提供されるユーザインターフェイスについて説明する。
(h1:メニュー画面)
図11〜図13は、本発明の実施の形態に従うメッセージアプリケーションが実行されることで提供されるメニュー画面の一例を示す図である。なお、図11〜図13には、説明の簡素化のために、上側LCD110および下側LCD120に表示されるそれぞれの内容をその位置関係に対応付けて模式的に記載している。以下に示す図についても同様である。
本実施の形態に従うメッセージアプリケーションでは、他のゲーム装置1との間で送受信されるメッセージ(送信前の作成中のメッセージも含み得る)に関連付けられた(複数の)オブジェクトからなるオブジェクト群が表示される。より具体的には、本実施の形態に従うメッセージアプリケーションでは、写真や動画などの画像データおよびユーザの声などの音声データを含むメッセージを扱うことができる。そして、メニュー画面においては、各メッセージのサムネイル画像を含むオブジェクトが表示される。
図11に示す本実施の形態に従うメッセージアプリケーションのメニュー画面においては、上側LCD110(第1表示部)および下側LCD120(第2表示部)に跨って、各メッセージのサムネイル画像を含む複数のオブジェクト200a〜200o(以下、「オブジェクト200」と総称する場合もある)からなるオブジェクト群が表示されている。ここで、オブジェクト群に含まれるオブジェクト200a〜200oについて、上側LCD110に表示されるオブジェクトは立体視表示され、下側LCD120に表示されるオブジェクトは2次元表示される。すなわち、オブジェクト200a,200b,200f,200g,200h,200i,200j,200k,200l,200m,200n,200o(但し、オブジェクト200bおよび200fは一部のみ)については、立体視表示され、オブジェクト200b,200c,200d,200e,200f(但し、オブジェクト200bおよび200fは一部のみ)については、2次元表示される。
図11に示すメニュー画面において表示されるオブジェクト群においては、それに含まれるそれぞれのオブジェクトの配置位置が予め設定される。より具体的には、表示すべきメッセージの属性情報などに基づいて、オブジェクト群におけるそれぞれのオブジェクトの配置順番が予め設定されており、この配置順番に従って、それぞれのオブジェクトの配置位置が設定される。このような属性情報の一例として、本実施の形態に従うメッセージアプリケーションにおいては、各メッセージに付与されている時刻情報に基づいて配置順番を決定し、この配置順番に従ってそれぞれのメッセージを表すオブジェクトを表示する。この結果、表示部においては、オブジェクトは、対応するメッセージに付与されている時刻情報に基づいて時系列に整列表示される。
さらに、本実施の形態に従うメッセージアプリケーションにおいては、他のゲーム装置1から受信されたメッセージ(以下「受信メッセージ」とも称す)に対応するオブジェクトおよび他のゲーム装置1へ送信された(あるいは、送信予定の)メッセージ(以下、「送信メッセージ」とも称す)に対応するオブジェクトが混合された状態で、時系列に整列表示される。図11に示す例では、背景画像がハッチングされているオブジェクト(オブジェクト200a,200c,200d,200e,200f,200h,200j,200m,200o)が送信メッセージを示し、背景画像がハッチングされていないオブジェクト(オブジェクト200b,200g,200i,200k,200l,200n)が受信メッセージを示す。
なお、図11に示す各オブジェクトは、対応するメッセージを示すサムネイル画像と、対応するメッセージの属性情報などに応じた背景画像とが組合されて生成される。図11において、下側LCD120の中央部に表示されるオブジェクト200dを例にとって説明すると、対応するメッセージの属性情報に応じた背景画像202の上に、対応するメッセージの内容を示すサムネイル画像208が重ねられることで、オブジェクト200が生成される。
このように、本実施の形態に従うメッセージアプリケーションでは、表示すべき複数のオブジェクト200からなるオブジェクト群が取得されるとともに、オブジェクト群におけるそれぞれのオブジェクト200の配置位置が設定される。そして、複数のオブジェクトが設定された配置位置に表示されるとともに、オブジェクト群が上側LCD110および下側LCD120に跨って表示されるように、表示部(上側LCD110および下側LCD120)が制御される。さらに、オブジェクト群に含まれるオブジェクトについて上側LCD110および下側LCD120のいずれに表示するのかが決定された上で、上側LCD110に表示されるオブジェクトが立体視表示され、下側LCD120に表示されるオブジェクトを2次元表示される。
典型的には、それぞれのオブジェクトの配置位置は、予め設定された配置順番に従って設定される。
図12および図13に示すように、本実施の形態に従うメッセージアプリケーションでは、ユーザからのオブジェクト群のスクロールを指示する操作に応答して、オブジェクト群の相対的な配置位置が変更される。このとき、オブジェクト群は、所定の軌道上をそのオブジェクト間の配置順番を維持したまま、その表示位置が変更される。あるいは、本実施の形態に従うメッセージアプリケーションでは、所定の軌道上のユーザ操作に応じた位置に、設定された配置順番を維持した状態で複数のオブジェクト(オブジェクト群)が表示される。そして、軌道上の別の位置がユーザ操作されることに応じて、設定された配置順番を維持した状態で複数のオブジェクト(オブジェクト群)が変更後の位置に表示されてもよい。
このようなオブジェクト群をスクロールさせるためのユーザ操作としては、ポインティングデバイスの典型例である、下側LCD120に対応付けて設けられたタッチパネル122によって検出される。すなわち、図11および図12に示すように、ユーザがタッチパネル122に対してスタイラス300などを用いて操作(ポインティング操作)することで、その操作がなされた方向に、オブジェクト群が全体としてスクロールする。なお、タッチパネル122に対してユーザが操作を行った速度に応じて、オブジェクト群のスクロール速度および/またはスクロール量を変更してもよい。例えば、ユーザがスタイラス300をより速く操作することで、オブジェクト群をより多くスクロールさせてもよい。さらに、より自然な動作を演出するために、オブジェクト群のスクロール速度を所定のレートで変化させてもよい。すなわち、ユーザが操作を止めても、オブジェクト群のスクロール速度が単位時間あたり所定量ずつ減少するように制御することで、オブジェクト群がゆっくり停止するような演出を行うことができる。
このようなタッチパネル122によるユーザ操作の検出に代えて、あるいは、それに加えて、下側LCD120にスクロール操作を行うためのボタンを表示してもよい。図11に示すメニュー画面においては、下側LCD120には、左スクロールボタンオブジェクト224および右スクロールボタンオブジェクト222が表示される。ユーザがスタイラス300などを用いてこれらのボタンを押下すると、対応する方向にオブジェクト群がスクロールする。なお、これらのボタンの押下に対応して、例えば、1個のオブジェクトずつスクロールするようにしてもよい。さらに、下側LCD120には、スクロールバー220が表示される。ユーザがスタイラス300などを用いてスクロールバー220を操作すると、その操作方向にオブジェクト群がスクロールする。
さらに、ユーザによるLボタン162LまたはRボタン162Rの押下に応答して、オブジェクト群をスクロールさせてもよい。
図11〜図13に示すように、オブジェクト群は全体として所定の軌道上をスクロールするが、そのうち、下側LCD120の中央部に配置されるオブジェクトが基準オブジェクトとして設定される。なお、ユーザがスタイラス300などを用いてオブジェクト200を押下することで、押下されたオブジェクト200が基準オブジェクトとして選択されるようにしてもよい。この選択されたオブジェクト200は、オブジェクト群のうち、最も大きなサイズで表示される。
あるオブジェクト200が基準オブジェクトとして選択されると、当該選択されたオブジェクト200に関連付けられた処理を示すメニュー画面を表示するためのボタンが表示される。例えば、図11に示すように、オブジェクト200dが基準オブジェクトとして選択されると、オブジェクト200dには拡大表示ボタンオブジェクト206が重ねて表示される。この拡大表示ボタンオブジェクト206が押下された場合の処理については後述する。
この基準オブジェクトは、ユーザが任意に選択することができるが、初期状態としては、関連付けられている時刻情報がメッセージアプリケーションの実行時刻(現在時刻)と一致するか、または、最も近いオブジェクトが基準オブジェクトとして選択されてもよい。あるいは、別の何らかの規則に従って、オブジェクト群を構成する複数のオブジェクトのうち、いずれか1つを基準オブジェクトとして選択してもよい。
基準オブジェクトとして選択されたオブジェクトが送信メッセージに対応するオブジェクトである場合(図11および図12の場合)には、下側LCD120の上部には、メール送信を示すアイコンとともに、「おくる」という文字を含むボタンオブジェクト210が表示される。ユーザがスタイラス300などを用いて、このボタンオブジェクト210を押下すると、選択されている基準オブジェクトに対応する送信メッセージを作成する画面(通信方法の選択画面)に遷移する。この通信方法の選択画面については、後述する。なお、選択されている基準オブジェクトに対応する送信メッセージが送信済である場合には、このボタンオブジェクト210をグレイアウトしてもよい。
一方、基準オブジェクトとして選択されたオブジェクトが受信メッセージに対応するオブジェクトである場合(図13の場合)には、下側LCD120の上部には、メール作成を示すアイコンとともに、「へんじをかく」という文字を含むボタンオブジェクト211が表示される。ユーザがスタイラス300などを用いて、このボタンオブジェクト211を押下すると、選択されている基準オブジェクトに返信するための画面(メッセージ作成画面)に遷移する。このメッセージ作成画面については、後述する。
図11に示すように、基準オブジェクトは、オブジェクト群がスクロールする所定の軌道上の中心点で最下位置に表示されることになる。言い換えれば、所定の軌道上の中心点(以下「基準点」とも称す)に位置するオブジェクトが基準オブジェクトとして選択される。
一例として、本実施の形態に従うメッセージアプリケーションにおいては、この基準点から異なる2つの方向(例えば、基準点のそれぞれ左右から上方に向かう方向)に延びる軌道に沿って、オブジェクト群に含まれる複数のオブジェクトが整列表示される。図11〜図13に示すように、オブジェクト群は、上側LCD110に表示される一対のローラを模したオブジェクト216および218のそれぞれの外周と、下側LCD120に表示される略半円とを含む軌道上をスクロールすることになる。いわば、基準点を頂点(最下位置)とする逆オメガ形状の軌道に沿って、オブジェクト群に含まれる複数のオブジェクトが整列表示される。
このように、オブジェクト群に含まれる複数のオブジェクトを蛇行させて(典型的には、逆オメガ形状の軌道に沿って)表示することにより、限られた表示領域内により多くのオブジェクトを表示することができる。さらに、図11〜図13に示すように、基準オブジェクトからより離れた順番または位置にあるオブジェクトほど表示部においてより小さいサイズで表示される。すなわち、基準点にあるオブジェクト(基準オブジェクト)が最も大きいサイズで表示され、この基準オブジェクトからの軌道上の距離がより短くなるほど、オブジェクトの表示サイズが小さくなる。このように表示サイズを異ならせることで、基準オブジェクトに対する遠近感を表現できるとともに、より多くのオブジェクトを同一画面内に表示させることができる。
なお、図11〜図13には、複数のオブジェクトを整列表示させる軌道の典型例として、逆オメガ形状の軌道を示すが、基準点から2つの異なる方向に延びる軌道であれば、任意の形状を採用することができる。例えば、U字形状の軌道やV字形状の軌道などを用いてもよい。また、このような軌道を複数設けて複数の軌道上にそれぞれ複数のオブジェクトを整列表示させてもよい。
さらに、図11〜図13に示すように、本実施の形態に従うメッセージアプリケーションは、少なくとも上側LCD110に表示されるオブジェクトについては、前後に重ね合って見えるように立体視表示する。例えば、図11に示す上側LCD110に表示されるメニュー画面においては、オブジェクト200f〜200oが隣接するオブジェクトとの間で表示内容の一部が重なるように配置されている。これらのオブジェクト200f〜200oについては立体視表示されるが、表示面の垂直方向における各オブジェクトの表示位置(奥行き位置、すなわち飛出し量または引込み量)については、基準オブジェクトからの順番に応じて決定される。この立体視表示されるオブジェクトの表示位置について、図14を参照して説明する。なお、図1に示すように、表示面の横方向をX方向と称し、表示面の縦方向をY方向と称し、表示面の垂直方向(奥行き方向)をZ方向と称す。
表示面におけるオブジェクトの表示位置(X座標値およびY座標値)を互いに異ならせて設定されるとともに、その立体感の度合いである、奥行き位置、すなわち飛出し量または引込み量(Z座標値)に基づいても互いに異なるように設定される。
図14は、図11〜図13に示すメニュー画面において表示される各オブジェクトの表示面の垂直方向(Z方向;奥行き方向)における表示位置を示す模式図である。より具体的には、図14を参照して、メニュー画面に表示されるオブジェクト200a,200b,200f〜200oについては、表示面(XY座標平面)上の位置も異ならせるとともに、各オブジェクトの表示順番に応じた度合いの引込み量が設定される。図14に示す例では、基準オブジェクトに最も近いオブジェクト200fは、ほぼ表示面の位置に表示される一方で、基準オブジェクトから最も遠いオブジェクト200oは、表示面からZ方向に離れた位置に表示される。
このように、オブジェクト群に含まれる複数のオブジェクト200のうちいずれかのオブジェクト200が基準オブジェクトとして設定されるとともに、立体視表示される少なくとも一部のオブジェクトについては、基準オブジェクトからより離れた順番または位置にあるオブジェクト200ほど表示部の表示面の垂直方向(Z方向)における立体深度がより大きくなるように立体視表示される。
より具体的には、基準オブジェクトからの順番または位置に応じて各オブジェクトについての立体深度(奥行き位置)が決定される。そして、図7および図8に示すような仮想3次元空間において、決定された立体深度に応じて各オブジェクトならびに左仮想カメラ400Lおよび右仮想カメラ400Rが配置される。さらに、各オブジェクトは、左仮想カメラ400Lおよび右仮想カメラ400Rによってそれぞれ撮像して得られる左目用画像PIMGLおよび右目用画像PIMGRを上側LCD110に表示することによって、立体視表示が行われる。
すなわち、図11〜図13に示されるようなメニュー画面を表示するためには、図14に示すように、オブジェクト群に含まれる複数のオブジェクト(仮想3次元空間にメニュー画面を表示するためのそれぞれのオブジェクト)の各々について、基準オブジェクトからより離れた順番または位置にあるオブジェクトほど仮想3次元空間内の奥行き値が大きくなるように配置位置が設定される。そして、仮想3次元空間において左仮想カメラおよび右仮想カメラが配置される。このような状態で、各オブジェクトを左仮想カメラおよび右仮想カメラによってそれぞれ撮像して得られる左目用画像および右目用画像を上側LCD110に表示することによって、オブジェクトからより離れた順番または位置にあるオブジェクトほど上側LCD110の表示面の垂直方向における立体深度がより大きくなるように立体視表示が行われる。
すなわち、各オブジェクトについての仮想3次元空間での奥行き値がオブジェクト間の相対的な立体深度を決定し、仮想3次元空間において配置される左仮想カメラと右仮想カメラとの間の距離が上側LCD110で立体視表示される各オブジェクト間の立体深度の差異の幅(例えば、立体深度の最小値と最大値との差)を決定する。なお、ユーザによる立体視ボリューム145(図2)の操作に応じて、このカメラ間距離を変更することができる。
一方、下側LCD120は、立体視表示を行うことができないので、仮想3次元空間において、単一の仮想カメラ400Cで撮像することで、下側LCD120において平面表示を提供するための画像が生成される。
このような表示面の垂直方向(Z方向)における奥行き位置(立体深度)に応じた奥行き感(立体深度)で各オブジェクト200を立体視表示することにより、各オブジェクトの表示位置(特に、奥行き方向の位置)の相違を強調することができる。
上述したように、本実施の形態に従うメッセージアプリケーションは、対応するメッセージに関する情報に応じた態様で各オブジェクト200を表示する。このような表示態様の種類としては、(1)受信/送信メッセージの識別表示、(2)作成者キャラクタの表示、(3)未読/既読メッセージの識別表示、および、(4)新しいメッセージの識別表示などがある。以下、これらの表示態様のバリエーションについて説明する。
(1) 受信/送信メッセージの識別表示
図11などに示すように、本実施の形態に従うメッセージアプリケーションは、受信メッセージに対応するオブジェクト200および送信メッセージに対応するオブジェクト200を混合した状態で、時系列に整列表示する。そのため、ユーザが、各オブジェクト200に対応するメッセージが受信メッセージであるのか、あるいは、送信メッセージであるのかを一見して把握できるように、メッセージの種類別に表示態様を異ならせる。本実施の形態においては、サムネイル画像の周囲に配置された背景画像を異ならせることで、いずれの種類のメッセージであるのかが識別表示される。一例として、背景画像がハッチングされているオブジェクト(オブジェクト200a,200c,200d,200e,200f,200h,200j,200m,200o)が送信メッセージを示し、背景画像がハッチングされていないオブジェクト(オブジェクト200b,200g,200i,200k,200l,200n)が受信メッセージを示す。なお、図面の都合上、図11などには、背景画像がハッチングされているか否かで、メッセージの種類を識別表示しているが、種類を識別可能ないずれの表示態様を採用してもよい。すなわち、メッセージの種類を特定できるように、色、階調、模様といった任意の表示態様を異ならせてもよい。
このようなメッセージ種別の情報は、各オブジェクト200に対応するメッセージの属性情報などに含まれており、メッセージアプリケーションは、これらの属性情報に基づいて、表示態様を変更する。すなわち、各オブジェクト200に対応するメッセージに関する情報として、当該メッセージが、他のゲーム装置1へ送信されたものであるか、あるいは、他のゲーム装置1から受信されたものであるかを識別する情報を含む。そして、メッセージアプリケーションは、対応するメッセージが、他のゲーム装置1へ送信されたものであるか、あるいは、他のゲーム装置1から受信されたものであるかを識別できる態様で、オブジェクト群に含まれる各オブジェクト200を表示する。
(2) 作成者キャラクタの表示
本実施の形態に従うメッセージアプリケーションが送受信するメッセージには、当該メッセージの作成者を表す情報が付加されてもよい。このようなメッセージの作成者を表す情報として、作成者が予め登録した作成者キャラクタを採用することができる。
図15は、本発明の実施の形態に従うメッセージアプリケーションが実行されることで提供されるメニュー画面における作成者キャラクタの表示例を示す図である。基準オブジェクトとして選択されたオブジェクトに対応するメッセージにいずれかの作成者を示す作成者キャラクタが関連付けられていると、図15に示すように、当該作成者キャラクタ230が基準オブジェクトと関連付けて表示される。
この作成者キャラクタ230を表示するための情報(画像)は、送受信されるメッセージに直接的に埋込まれてもよい。この方法は、ゲーム装置1の間で直接的にメッセージを送受信する構成に適している。あるいは、送受信されるゲーム装置内に作成者キャラクタを表示するための情報(画像)が予め記憶されている場合は、予め登録された作成者キャラクタに対して識別情報を付与しておき、この作成者キャラクタの識別情報を送受信されるメッセージに埋込んでもよい。この方法は、サーバ装置SRVを介してメッセージを送受信する構成に適している。
このように、送受信されるメッセージは、当該メッセージの作成者を表す情報(作成者キャラクタ)を含む。そして、本実施の形態に従うメッセージアプリケーションは、オブジェクト群に含まれるいずれかのオブジェクト(基準オブジェクト)を対応する作成者キャラクタと関連付けて表示する。
なお、基準オブジェクトとして送信メッセージが選択された場合には、基準オブジェクトの作成者はゲーム装置1の基本ユーザとなるので、基準オブジェクトに対応する作成者キャラクタの表示を行わないようにしてもよい。さらに、基準オブジェクトとして受信メッセージが選択された場合であっても、未読である場合には、基準オブジェクトに対応する作成者キャラクタの表示を行わないようにしてもよい。
(3)未読/既読メッセージの識別表示
本実施の形態に従うメッセージアプリケーションでは、表示されるオブジェクト(または、対応するメッセージ)に関連付けられた各種処理が実行可能となっている。このような処理の一例として、メッセージの内容を拡大表示する処理について説明する。
図16は、本発明の実施の形態に従うメッセージアプリケーションが実行されることで提供されるメニュー画面における拡大表示の一例を示す図である。図16に示すように、基準オブジェクトとして設定されたオブジェクトについては、その左上に拡大表示ボタンオブジェクト206が重ねて表示される。そして、ユーザがスタイラス300を用いて拡大表示ボタンオブジェクト206を選択すると、選択されている基準オブジェクトの内容が上側LCD110に表示される。
このように、本実施の形態に従うメッセージアプリケーションは、表示されている複数のオブジェクトのうち1つのオブジェクトに対する選択を受付けるとともに、選択されたオブジェクトを上側LCD110に拡大表示する。通常、表示処理を高速化するために、オブジェクトとしてはサムネイル画像が用いられる一方、図16に示すような拡大表示される場合には、メッセージ本体の画像が用いられる。
図16に示されるようにオブジェクトが拡大表示されることで、ユーザはメッセージの内容を確認することができる。すなわち、オブジェクトが拡大表示されることは、当該メッセージが既読になったことを意味する。そこで、本実施の形態に従うメッセージアプリケーションは、各メッセージが既読であるか、未読であるのかを一見して把握できるように、表示態様を異ならせてオブジェクトを表示する。例えば、図11に示すオブジェクト200b,200g,200lについては、既読のメッセージであるので、対応するメッセージのサムネイル画像が表示されて、その内容が視認できるようになっている。一方、例えば、図11に示すオブジェクト200i,200k,200nについては、未読のメッセージであるので、対応するメッセージのサムネイル画像が表示されておらず、代わりに、封筒を模したオブジェクトが表示されている。
すなわち、本実施の形態に従うメッセージアプリケーションは、ユーザ操作に応じて指定されたオブジェクトに対して、関連付けられた処理(図16に示す例では、拡大表示)を実行する。このとき、メッセージに関する情報として、対応するオブジェクトに対して関連付けられた処理(図16に示す例では、拡大表示)が実行されたか否かを識別する情報を含む。そして、本実施の形態に従うメッセージアプリケーションは、オブジェクト群に含まれる各オブジェクトを、関連付けられた処理が実行されたか否かを識別できる態様で表示する。
なお、オブジェクトに対して関連付けられた処理の一例として、図16にはメッセージの内容の拡大表示処理を示すが、その他の処理を実行してもよい。例えば、メッセージに動画(あるいは、予め順序付けされた複数の静止画像)が含まれるような場合には、その動画または複数の静止画像を再生するような処理を行ってもよい。
(4)新しいメッセージの識別表示
本実施の形態に従うメッセージアプリケーションにおいては、受信メッセージのうち未読のものについては、新着の情報であることを示すために「NEW」といったオブジェクトがさらに付加される。例えば、図11に示す例では、基準オブジェクトとして設定されたオブジェクト200i,200k,200nに対して、「NEW」を示す新着オブジェクトが重ねて表示される。この「NEW」を示す新着オブジェクトは、受信メッセージが既読になると消去される。
このような新着オブジェクトが表示されることで、ユーザは、一覧表示される複数のオブジェクトのうち、いずれが新着メッセージに対応するオブジェクトであるのかを一見して把握することができる。
上述のような拡大表示に加えて、本実施の形態に従うメッセージアプリケーションでは、対象オブジェクトに対して、関連付けられたその他の処理を実行することが可能である。この処理の一例について、図17〜図20を参照して説明する。
図17は、本発明の実施の形態に従うメッセージアプリケーションが提供するメッセージに関連付けられた処理メニューの一例を示す図である。図17に示すメニューポップアップ240は、受信メッセージに対応するオブジェクトが基準オブジェクトとして設定されている場合に、「メニュー」ボタンオブジェクト214が選択されることで表示される。
このメニューポップアップ240は、「へんしゅう」ボタンオブジェクト242と、「ヘッダ情報」ボタンオブジェクト244と、「写真かきだし」ボタンオブジェクト246と、「音声かきだし」ボタンオブジェクト248とを含む。ユーザがスタイラス300などを用いてボタンオブジェクト242を押下することで、メッセージ作成画面が表示される。この場合に表示されるメッセージの作成画面には、先に選択されているオブジェクトに対応するメッセージの内容が初期表示される。このメッセージ作成画面については、後述する。
ユーザがスタイラス300などを用いてボタンオブジェクト244を押下することで、選択されている基準オブジェクトに対応するメッセージの属性情報が表示される。このヘッダ情報としては、メッセージの作成日時やメッセージの受信日時などを含む。さらに、上述したような各種のメッセージに関する情報を表示してもよい。
ユーザがスタイラス300などを用いてボタンオブジェクト246を押下することで、選択されている基準オブジェクトに対応するメッセージに含まれる画像データが、メモリカード173または不揮発性メモリ136などに保存される。同様に、ユーザがスタイラス300などを用いてボタンオブジェクト248を押下することで、選択されている基準オブジェクトに対応するメッセージに含まれる音声データが、メモリカード173または不揮発性メモリ136などに保存される。
(h2:メッセージ作成画面)
次に、メッセージ作成画面について説明する。
図18は、本発明の実施の形態に従うメッセージアプリケーションが提供するメッセージ作成画面の一例を示す図である。図18に示すように、上側LCD110および下側LCD120には、作成/編集中のメッセージが表示される。タッチパネル122が装着されている下側LCD120においては、作成/編集中のメッセージに加えて、作成および編集に必要な操作を示すアイコン群が表示されている。このアイコン群は、「戻る」アイコン251と、「えんぴつ」アイコン252と、「消しゴム」アイコン253と、「データ挿入」アイコン254と、「設定」アイコン255と、「送信」アイコン256と、「表示サイズ変更」アイコン257,258とを含む。
ユーザがスタイラス300などを用いてアイコン251を押下することで、図11に示すような画面に戻る。
ユーザがスタイラス300などを用いてアイコン252または253を押下することで、表示されている画像に対して、手書きメッセージ(画像)を付加または削除することができる。
ユーザがスタイラス300などを用いてアイコン254を押下することで、画像データや音声データをメッセージに付加することができる。
ユーザがスタイラス300などを用いてアイコン255を押下することで、作成対象のメッセージに対する各種設定(プロパティ設定)を行うことができる。
ユーザがスタイラス300などを用いてアイコン256を押下することで、作成されたメッセージに対して送信処理が開始される。
アイコン257および258は、表示サイズを変更する(拡大表示あるいは全体表示など)ために用いられる。
図18に示すようなメッセージ作成画面によって作成されたメッセージ(オブジェクト)は、他のゲーム装置1に送信され、あるいは、自ゲーム装置1に保存される。このように、本実施の形態に従うメッセージアプリケーションは、ユーザ操作に応じてオブジェクトを生成する機能を提供する。このとき、生成したオブジェクトに対しては、当該メッセージが生成された時刻を示す時刻情報が付与される。この時刻情報は、上述したメッセージに関する情報の一部であり、メッセージアプリケーションのメニュー画面の表示などに利用される。
なお、各メッセージに付与される時刻情報は、メッセージの作成時刻が自動的に付与されるようにしてもよいが、ユーザが任意の時刻を設定するようにしてもよい。例えば、メッセージの送信機能は、各メッセージに指定された時刻に送信が開始されるような処理をサポートする。このような送信機能を用いることで、家族や友人などの誕生日などにメッセージを送信する場合などに便利である。すなわち、予めメッセージを作成し、当該メッセージの送信時刻を予め指定しておくことで、目的の日(家族や友人などの誕生日)にメッセージを確実に送信できる。
このように、本実施の形態に従うメッセージアプリケーションは、さらなるユーザ操作に応じて指定された時刻情報を生成したオブジェクトに付与するようにしてもよい。
なお、図18に示すメッセージ作成画面は、図11に示すメニュー画面において表示されている「新しいレター」ボタンオブジェクト212を、ユーザがスタイラス300を用いて押下することでも有効化される。
図18に示す「送信」アイコン256が押下されると、図19に示す通信方法の選択画面が表示される。図19は、本発明の実施の形態に従うメッセージアプリケーションが提供する通信方法の選択画面の一例を示す図である。図19に示すように、通信方法の選択画面では、上側LCD110に送信対象のメッセージが表示されるとともに、下側LCD120には、送信方法を選択するためのボタンオブジェクト262,264,266が表示される。
ボタンオブジェクト262および264は、サーバ装置SRVを介して他のゲーム装置1(ユーザ)へ送信する方法を選択するものである。より具体的には、サーバ装置SRVには、各ユーザについて、送信先として他のユーザを登録することができる。この送信先として登録されるユーザを「フレンド」とも称す。「フレンドみんなにおくる」というボタンオブジェクト262が押下されると、ゲーム装置1を使用しているユーザに関連付けて登録されているフレンドのすべてを送信先として、一斉送信されるモードが選択される。一方、「フレンドを選んでおくる」というボタンオブジェクト264が押下されると、ゲーム装置1を使用しているユーザに関連付けて登録されているフレンドが一覧表示される(図示しない)とともに、送信先とすべきフレンドの選択が受付けられる。そして、ゲーム装置1からは、送信先が選択されたメッセージがサーバ装置SRVへ送信される。
一方、ボタンオブジェクト266は、他のゲーム装置1に対して直接的にメッセージを送信する方法を選択するものである。ボタンオブジェクト266が押下されると、ゲーム装置1は、送信対象のメッセージを送信するための無線信号の送出を開始する。この状態において、当該ゲーム装置1にメッセージを受信可能な他のゲーム装置1が接近すると、メッセージが送信される。
なお、図19に示す通信方法の選択画面において、「もどる」のボタンオブジェクト286が押下されると、図18に示すようなメッセージ作成画面へ戻る。
(h3:メッセージ操作画面)
本実施の形態に従うメッセージアプリケーションは、作成済または受信済のメッセージを操作する機能を提供する。以下、このメッセージを操作するためのメッセージ操作画面について説明する。
図20は、本発明の実施の形態に従うメッセージアプリケーションが提供するメッセージ操作のメニュー画面の一例を示す図である。図20に示すメニューポップアップ280は、作成済または受信済のメッセージが選択された状態で所定の操作がなされることで表示される。
このメニューポップアップ280は、「スライドショー」ボタンオブジェクト282と、「送信とりけし」ボタンオブジェクト282と、「けす」ボタンオブジェクト284とを含む。
ユーザがスタイラス300などを用いてボタンオブジェクト282を押下することで、選択されているメッセージのスライドショーが開始される。本実施の形態に従うメッセージアプリケーションは、1つのメッセージに動画あるいは複数の画像を含むことが可能であり、また、手書きメッセージをその作成順に表現することも可能である。メッセージでは、表示する内容を時間の経過に関連付けて変化させるような演出が可能である。スライドショーでは、このような時間の変換に関連付けて変化させる演出を表示することができる。
ユーザがスタイラス300などを用いてボタンオブジェクト284を押下することで、作成済のメッセージであって、未だ送信されていないものの送信をキャンセルすることができる。上述したように、本実施の形態に従うメッセージアプリケーションでは、予め送信時刻を指定することができる。そのため、ユーザが送信を指示したメッセージであっても、未だ送信されていないものが送信トレイ(送信キュー)に存在することになる。ボタンオブジェクト264が押下されると、このような未だ送信されていないメッセージの送信を取消すことができる。
ユーザがスタイラス300などを用いてボタンオブジェクト266を押下することで、作成済のメッセージを選択的に消去することができる。
(h4:変形例)
上述したように、本実施の形態に従うメッセージアプリケーションは、受信したメッセージに対して返信するメッセージを作成する機能を提供する。そのため、一連のメッセージの遣り取りが一見して把握できることが好ましい場合もある。このような場合には、一連のメッセージの遣り取りに関するオブジェクトを関連付けて表示することが好ましい。
図21は、本発明の実施の形態に従うメッセージアプリケーションが実行されることで提供されるメニュー画面の一例を示す図である。図21に示すように、オブジェクト200hが対象オブジェクトとして設定されており、このオブジェクト200hに関して、3つのオブジェクト271,272,273が関連付けて表示されている。この3つのオブジェクト271,272,273は、それぞれオブジェクト200hに対応するメッセージに関する一連のメッセージに対応するものである。なお、このような一連のメッセージの遣り取りは、メッセージに付与される識別情報などを利用して判断することができる。すなわち、何らかのメッセージに返信する場合には、当該返信対象のメッセージに付与されていた識別情報を埋め込んで新たなメッセージを作成する。このような共通の識別情報を有する一連のメッセージを互いに関連付けられたものであると判断される。
<J.機能ブロック>
図22は、本実施の形態に従うゲーム装置1において実現される機能ブロック図である。図22に示す各機能ブロックは、演算処理部100がゲームカード171などに格納されている表示制御プログラムを読出して実行することで実現される。図22を参照して、演算処理部100は、その機能として、送受信モジュール302と、入力モジュール304と、表示モジュール306と、オブジェクト選択モジュール308と、オブジェクト生成モジュール310と、配置位置設定モジュール312と、オブジェクト群取得モジュール314と、処理実行モジュール316とを含む。また、ゲーム装置1の不揮発性メモリ136またはメインメモリ138(図4)には、データ格納部320が形成される。このデータ格納部320には、データセット350および順番テーブル360が保持される。
送受信モジュール302は、メッセージデータをサーバ装置SRVまたは他のゲーム装置1との間で送受信するための機能を提供する。送受信モジュール302は、データの送受信を行うために、無線モジュール134や赤外線モジュール178(図4)などとの間で内部コマンドを遣り取りする。
入力モジュール304は、コントロールパッド154、十字ボタン161、ボタン群142,162、および、タッチパネル122などからの検出信号に基づいて、ユーザ操作を示す内部コマンドを生成する。特に、入力モジュール304は、図12および図13に示すように、下側LCD120に表示される基準オブジェクト(および、その近傍のオブジェクト)に対するポインティングデバイスによる選択を可能にする。
表示モジュール306は、複数のオブジェクトが配置位置設定モジュール312によって設定された配置位置に従って表示されるように、かつ、オブジェクト群が上側LCD110および下側LCD120に跨って表示されるように、上側LCD110および下側LCD120を制御する。より具体的には、表示モジュール306は、オブジェクト群に含まれるオブジェクトについて上側LCD110および下側LCD120のいずれに表示するのかを決定するとともに、上側LCD110に表示されるオブジェクトを立体視表示し、下側LCD120に表示されるオブジェクトを2次元表示する。
特に、表示モジュール306は、オブジェクト群に含まれる複数のオブジェクトのうち基準となる基準オブジェクトを設定するとともに、上側LCD110に表示されるオブジェクトについて、基準オブジェクトからより離れた順番または位置にあるオブジェクトほど上側LCD110の表示面の垂直方向における立体深度(奥行き距離)がより大きくなるように立体視表示する。このとき、表示モジュール306は、基準オブジェクトを下側LCD120に表示する。
また、表示モジュール306は、基準オブジェクトからの順番または位置に応じて各オブジェクトについての立体深度を決定し、仮想3次元空間において、決定された立体深度に応じて各オブジェクトならびに左仮想カメラ400Lおよび右仮想カメラ400Rを配置し、各オブジェクトを左仮想カメラ400Lおよび右仮想カメラ400Rによってそれぞれ撮像して得られる左目用画像PIMGLおよび右目用画像PIMGRを上側LCD110に表示することによって、立体視表示を行う。
また、表示モジュール306は、基準点から異なる2つの方向に延びる軌道に沿って、オブジェクト群に含まれる複数のオブジェクトを整列表示する。より具体的には、表示モジュール306は、逆オメガ形状の軌道に沿って、オブジェクト群に含まれる複数のオブジェクトを整列表示する。このとき、表示モジュール306は、上側LCD110に表示されるオブジェクトを立体深度に応じて前後に重ね合って見えるように立体視表示する。また、表示モジュール306は、軌道上において、オブジェクト群に含まれる複数のオブジェクトのうち基準となる基準オブジェクトからより離れた順番または位置にあるオブジェクトほど、上側LCD110の表示面の垂直方向における立体深度(奥行き位置)がより大きくなるように立体視表示する。
同時に、表示モジュール306は、オブジェクト群に含まれる複数のオブジェクトのうち基準となる基準オブジェクトを設定するとともに、基準オブジェクトからより離れた順番または位置にあるオブジェクトほど表示部においてより小さいサイズで表示する。
さらに、表示モジュール306は、ユーザ操作に応じて、設定された配置順番を維持した状態で、複数のオブジェクトを所定の軌道上で移動させることで、複数のオブジェクトの配置位置を変更する。すなわち、表示モジュール306は、オブジェクト群のスクロール機能を提供する。
また、表示モジュール306は、オブジェクト群に含まれる各オブジェクトを、対応するデータに関する情報(メッセージの属性情報)に応じた態様で表示する。より具体的には、メッセージの属性情報は、対応のメッセージが、他のゲーム装置1へ送信されたメッセージであるか、あるいは、他のゲーム装置1から受信されたメッセージであるかを識別する情報を含む。表示モジュール306は、対応するメッセージが、他のゲーム装置1へ送信されたものであるか、あるいは、他のゲーム装置1から受信されたものであるかを識別できる態様で、オブジェクト群に含まれる各オブジェクトを表示する。
別の形態として、メッセージの属性情報は、対応のメッセージの作成者を表す情報(作成者キャラクタ)を含む。表示モジュール306は、オブジェクト群に含まれるオブジェクトを、対応する作成者キャラクタと関連付けて表示する。
別の形態として、メッセージの属性情報は、対応のメッセージに対して関連付けられた処理が実行されたか否かを識別する情報(既読であるか未読であるか)を含む。表示モジュール306は、オブジェクト群に含まれる各オブジェクトを、関連付けられた処理が実行されたか否かを識別できる態様で表示する。すなわち、表示モジュール306は、既読メッセージであるか、未読メッセージであるかを識別して表示する。
オブジェクト選択モジュール308は、入力モジュール304からの内部コマンドに従って、表示されている複数のオブジェクトのうち1つのオブジェクトに対する選択を受付ける。
オブジェクト生成モジュール310は、ユーザ操作に応じてオブジェクト(メッセージ)を生成する。ここで、オブジェクト生成モジュール310は、生成したオブジェクトに対して、生成された時刻を示す時刻情報を付与する。あるいは、オブジェクト生成モジュール310は、さらなるユーザ操作に応じて指定された時刻情報を、生成したオブジェクトに付与する。
配置位置設定モジュール312は、オブジェクト群におけるそれぞれのオブジェクトの配置順番を設定する。より具体的には、メッセージの属性情報は時刻情報を含み、配置位置設定モジュール312は、この時刻情報に基づいて、複数のオブジェクトが時系列に表示されるように配置順番を設定する。
オブジェクト群取得モジュール314は、データセット350を参照して、表示すべき複数のオブジェクトからなるオブジェクト群を取得する。
処理実行モジュール316は、ユーザ操作に応じて指定されたオブジェクト(メッセージ)に対して、関連付けられた処理を実行する。より具体的には、処理実行モジュール316は、選択されたオブジェクトを拡大表示する。
次に、データ格納部320に保持されるデータについて説明する。
図23は、本実施の形態に従うゲーム装置1において保持されるデータセット350の一例を示す図である。図23を参照して、データセット350は、各メッセージに対応してデータ350a,350b,…からなる。データ350aは、属性情報351と、サムネイル画像データ352と、本体データ353とからなる。
基本的には、他のゲーム装置1からメッセージを受信すると、データセット350には新たな属性情報351および本体データ353が格納される。なお、サムネイル画像データ352については、必要に応じて生成されることが一般的である。また、ゲーム装置1において新たなメッセージが作成される場合にも、データセット350には新たな属性情報351および本体データ353が追加される。
属性情報351は、各メッセージに関する情報を含む。上述したように、この属性情報351は、以下のような情報を含む。
(1) 対応するメッセージが送信メッセージおよび受信メッセージのいずれであるかを示す識別情報
(2) 対応するメッセージが既読メッセージおよび未読メッセージのいずれであるかを示す識別情報
(3) 対応するメッセージの作成時刻および/または受信時刻
(4) 対応するメッセージの作成者キャラクタのデータ本体または作成者キャラクタを示す識別情報
(5) 対応するメッセージと一連の遣り取りに含まれるメッセージを特定する情報
サムネイル画像データ352は、図11〜図13に示すようなメッセージアプリケーションのメニュー画面を表示するために用いられる。サムネイル画像データ352は、対応するメッセージの表示イメージを縮小したものに相当する。サムネイル画像データ352は、メニュー画面の表示タイミングで生成されてもよいし、対応のメッセージが受信されたタイミングで生成されてもよい。あるいは、送信されるメッセージに添付されてもよい。
本体データ353は、メッセージを表示するための実体のデータである。本体データ353は、メッセージ(テキストおよび/または手書きメッセージを示す画像)、画像データ、音声データを含む。図16に示すような上側LCD110にメッセージの内容が拡大表示される場合には、この本体データ353が用いられる。
なお、属性情報351と、サムネイル画像データ352と、本体データ353とは、一体のファイルとして保持するようにしてもよいが、本実施の形態においては、各メッセージに共通のファイル名を用いて、これらの3種類のファイルを関連付ける。例えば、各メッセージの時刻を示す文字列を共通としつつ、各ファイルの種類に応じた拡張子を有するファイル名を用いることで、1つのメッセージに3種類のファイルを関連付けて管理することができる。この場合には、ファイル名自体が属性情報(時刻情報)となるので、属性情報351に時刻情報を必ずしも格納する必要はない。
次に、配置位置設定モジュール312(図22)における処理内容と関連付けて、順番テーブル360のデータ構造について説明する。
図24は、本実施の形態に従うゲーム装置1において保持される順番テーブル360の一例を示す図である。図24(A)を参照して、順番テーブル360は、順位の列とファイル名の列とを含む。ファイル名の列には、各メッセージを特定するための識別情報であるファイル名(時刻情報)が時系列に格納されている。このように時刻情報に基づいて、メッセージを時系列に配置することで、オブジェクトの配置順番が決定される。
配置位置設定モジュール312(図22)は、データ格納部320に格納されているデータセット350を参照することで、順番テーブル360を作成する。この順番テーブル360の作成によって、オブジェクトの配置順番が決定される。
この順番テーブル360は、表示すべきオブジェクトの増加減、すなわち新たなメッセージの受信/作成、または、受信済メッセージの削除などのイベントに応じて、更新される。
例えば、図24(A)に示すように、3番目に配置されていたメッセージが削除されると、順番テーブル360から対応するエントリが削除されるとともに、それ以下のエントリの順位が繰り上がる(図24(B)参照)。同様に、新たなメッセージが受信または作成されると、その時刻情報に基づいて、順番テーブル360の適切な位置に当該新たなメッセージに対応するエントリが追加され、それ以下のエントリの順番が繰り下がることになる。
さらに、この順番テーブル360が参照されて、基準オブジェクトが設定されるとともに、各オブジェクトについての基準オブジェクトからの距離(順番の差)が算出される。続いて、メッセージアプリケーションのメニュー画面における各オブジェクトの表示位置や表示サイズが決定される。
<K.処理手順>
次に、本発明の実施の形態に従うメッセージアプリケーションにおいて実行される処理の手順について説明する。
(k1:全体処理手順)
図25は、本発明の実施の形態に従うゲーム装置1において実行される処理手順に係るフローチャートである。図25に示す各フローチャートの各ステップは、典型的には、演算処理部100がゲームカード171などに格納されている表示制御プログラムなどを読出して実行することで提供される。なお、演算処理部100で実行されるプログラムは、単一でなくともよく、基本的なOS(Operating System)を提供するプログラム(あるいは、ファームウェア)とともに、一または複数のアプリケーションが実行されてもよい。さらに、以下に示す処理の全部または一部を複数のハードウェアによって実現してもよい。また、以下に示す各フローチャートについても同様である。
まず、電源ボタン142d(図1)が押下されてゲーム装置1の電源がON状態になると、演算処理部100は、上側LCD110および下側LCD120に総合メニュー画面を表示する(ステップS1)。この総合メニュー画面には、ゲーム装置1で実行可能なアプリケーションが一覧表示される。
続いて、演算処理部100は、いずれのアプリケーションが選択されたかを判断する(ステップS2)。メッセージアプリケーションが選択された場合(ステップS2において「メッセージアプリケーション」の場合)には、演算処理部100は、メッセージアプリケーションを実行する(ステップS3)。より具体的には、演算処理部100は、後述するメッセージアプリケーションのサブルーチンが実行される。そして、演算処理部100は、電源ボタン142d(図1)が押下されてゲーム装置1の電源がOFF状態になるまで、ステップS3の処理を繰返し実行する(ステップS4)。
これに対して、メッセージアプリケーション以外のアプリケーションが選択された場合(ステップS2において「その他のアプリケーション」の場合)には、演算処理部100は、選択されたアプリケーションを実行する(ステップS5)。そして、演算処理部100は、電源ボタン142d(図1)が押下されてゲーム装置1の電源がOFF状態になるまで、ステップS5の処理を繰返し実行する(ステップS6)。
(k2:メッセージアプリケーション)
図26および図27は、図25に示すメッセージアプリケーションのサブルーチンの処理手順を示すフローチャートである。図26を参照して、演算処理部100は、図11に示すようなメッセージアプリケーションのメニュー画面を表示する(ステップS10)。より具体的には、演算処理部100は、メニュー画面の表示サブルーチンを実行する。続いて、演算処理部100は、メニュー画面に表示されるオブジェクト群についてのスクロール処理を実行する(ステップS12)。より具体的には、演算処理部100は、スクロール処理のサブルーチンを実行する。
続いて、演算処理部100は、メッセージの作成または編集が指示されたか否かを判断する(ステップS14)。より具体的には、演算処理部100は、図11に示すメニュー画面において、「新しいレター」ボタンオブジェクト212が押下されたか否かを判断する。あるいは、演算処理部100は、図17に示すメニューポップアップ240において、「メニュー」ボタンオブジェクト214が押下されたか否かを判断する。
メッセージの作成または編集が指示された場合(ステップS14においてYESの場合)には、演算処理部100は、ステップS16以下の処理を実行する。これに対して、メッセージの作成または編集が指示されていない場合(ステップS14においてNOの場合)には、演算処理部100は、ステップS50以下の処理を実行する。
ステップS16において、演算処理部100は、図18に示すようなメッセージ作成画面を表示する。続いて、演算処理部100は、メッセージ作成画面が表示された状態で、ユーザによる編集操作がなされたか否かを判断する(ステップS18)。より具体的には、ユーザは、(a)手書きメッセージ(画像)の入力操作、(b)音声データのメッセージへの添付操作、(c)画像データのメッセージへの添付操作、(d)おすすめのリンク先のメッセージへの貼付操作、(d)メッセージの背景の変更操作、(e)メッセージへの演出の付加操作、(f)複数のページを使用したアニメーション動作の作成操作、などを行うことができる。
ユーザによる編集操作がなされた場合(ステップS18においてYESの場合)には、演算処理部100は、ユーザ操作に従って表示内容を更新する(ステップS20)。続いて、演算処理部100は、ユーザによってメッセージの送信が指示されたか否かを判断する(ステップS22)。より具体的には、演算処理部100は、図18に示すメッセージ作成画面において、「送信」アイコン256が押下されたか否かを判断する。
なお、ユーザによる編集操作がされていない場合(ステップS18においてNOの場合)には、ステップS20の処理がスキップされ、ステップS22の処理が実行される。
ユーザによってメッセージの送信が指示された場合(ステップS22においてYESの場合)には、演算処理部100は、作成されたメッセージを保存する(ステップS24)。より具体的には、図23に示すように、データ格納部320には、少なくとも、属性情報351および本体データ353が新たに生成される。
なお、ユーザによってメッセージの送信が指示されていない場合(ステップS22においてNOの場合)には、ステップS18以下の処理が繰返される。
ステップS24の実行後、演算処理部100は、図19に示す通信方法の選択画面を表示する(ステップS26)。続いて、演算処理部100は、ユーザによっていずれの通信方法が選択されたかを判断する(ステップS28)。すなわち、演算処理部100は、図19に示す通信方法の選択画面において、ボタンオブジェクト262または264が押下されたのか、あるいは、ボタンオブジェクト266が押下されたのかを判断する。
サーバ装置SRVを介して他のゲーム装置1(ユーザ)へ送信する通信方法が選択された場合(ステップS28において「サーバ装置経由」)には、演算処理部100はステップS30以下の処理を実行する。これに対して、他のゲーム装置1との間で直接的にデータを送受信する通信方法が選択された場合(ステップS28において「直接通信」)には、演算処理部100はステップS38以下の処理を実行する。
ステップS30において、演算処理部100は、サーバ装置SRVへアクセスするとともに、登録されているユーザ(フレンド)からメッセージの送信先を選択するための画面を表示する。なお、図19に示す通信方法の選択画面において「フレンドみんなにおくる」というボタンオブジェクト262が押下されたときには、初期設定として、登録されているすべてのユーザが送信先として表示される。
ユーザによる送信先の選択処理が完了すると、演算処理部100は、送信先を指定するとともに、送信対象のメッセージ(ステップS24において保存されたメッセージ)のコピーを送信トレイ(図22に示す送受信モジュール302)へ出力する(ステップS32)。続いて、演算処理部100は、ステップS24において新たなメッセージが保存されたことに伴って、オブジェクトの配置順番を更新する(ステップS34)。すなわち、演算処理部100は、図24に示す順番テーブル360に新たなエントリを追加するとともに、その順番を更新する。
その後、演算処理部100は、送信トレイ(送信キュー)に格納されているメッセージ(送信メッセージ)のうち送信タイミングが到来しているメッセージに対して送信処理を実行する(ステップS36)。すなわち、演算処理部100は、現時点で送信すべきメッセージをサーバ装置SRVへ送信する。上述したように、本実施の形態に従うメッセージアプリケーションにおいては、メッセージの送信タイミングを設定することが可能であるため、現実にメッセージが送信されるタイミングは、ユーザに指定された時刻となる場合もある。そして、演算処理部100は、メニュー画面の表示サブルーチンを実行することで、表示されているメニュー画面を更新する(ステップS48)。そして、処理はステップS12へ戻る。
ステップS38において、演算処理部100は、送信先を指定することなく、送信対象のメッセージ(ステップS24において保存されたメッセージ)のコピーを送信トレイ(図22に示す送受信モジュール302)へ出力する(ステップS38)。続いて、演算処理部100は、ステップS24において新たなメッセージが保存されたことに伴って、オブジェクトの配置順番を更新する(ステップS40)。すなわち、演算処理部100は、図24に示す順番テーブル360に新たなエントリを追加するとともに、その順番を更新する。
続いて、演算処理部100は、ローカル通信処理を実行する(ステップS42)とともに、他のゲーム装置1へのメッセージの送信が成功したか否かを判断する(ステップS44)。他のゲーム装置1へのメッセージの送信が成功しなかった場合(ステップS44においてNOの場合)には、演算処理部100はメッセージの送信が失敗したことを表示する。そして、処理はステップS12へ戻る。
これに対して、他のゲーム装置1へのメッセージの送信が成功した場合(ステップS44においてYESの場合)には、演算処理部100は、他のゲーム装置1からメッセージを受信したか否かを判断する(ステップS46)。すなわち、他のゲーム装置1との間で直接的にメッセージを交換する場合(ローカル通信を行う場合)には、他のゲーム装置1へメッセージを送信するとともに、他のゲーム装置1からメッセージを受信することになるので、演算処理部100は、ステップS46において受信メッセージの有無を判断する。
他のゲーム装置1からメッセージを受信しなかった場合(ステップS46においてNOの場合)には、演算処理部100は、メニュー画面の表示サブルーチンを実行することで、表示されているメニュー画面を更新する(ステップS48)。そして、処理はステップS12へ戻る。これに対して、他のゲーム装置1からメッセージを受信した場合(ステップS46においてYESの場合)には、処理はステップS56へ進む。
また、ステップS50において、演算処理部100は、サーバ装置SRVからメッセージを受信するタイミングが到来しているか否かを判断する(ステップS50)。すなわち、本実施の形態に従うメッセージアプリケーションは、メッセージを取得するために所定周期でサーバ装置SRVへアクセスする。そのため、ステップS50においては、判断タイミングがサーバ装置SRVへのアクセス周期であるか否かが判断される。なお、ユーザが明示的にサーバ装置SRVへのアクセスを指示することもできる。例えば、新着メッセージの確認といったボタンオブジェクトが押下されることで、サーバ装置SRVへのアクセスが実行される。
サーバ装置SRVからメッセージを受信するタイミングが到来している場合(ステップS50においてYESの場合)には、演算処理部100は、ステップS52以下の処理を実行する。これに対して、サーバ装置SRVからメッセージを受信するタイミングが到来していない場合(ステップS50においてNOの場合)には、演算処理部100は、ステップS60以下の処理を実行する。
ステップS52において、演算処理部100は、サーバ装置SRVへアクセスしてゲーム装置1のユーザ宛のメッセージが存在するか否かを判断する(ステップS52)。ゲーム装置1のユーザ宛のメッセージが存在しない場合(ステップS52においてNOの場合)には、処理はステップS12へ戻る。
これに対して、ゲーム装置1のユーザ宛のメッセージが存在する場合(ステップS52においてYESの場合)には、サーバ装置SRVから当該メッセージを取得して保存する(ステップS54)。続いて、演算処理部100は、ステップS52において新たなメッセージが保存されたことに伴って、オブジェクトの配置順番を更新する(ステップS56)。すなわち、演算処理部100は、図24に示す順番テーブル360に新たなエントリを追加するとともに、その順番を更新する。続いて、演算処理部100は、メニュー画面の表示サブルーチンを実行することで、表示されているメニュー画面を更新する(ステップS58)。そして、処理はステップS72へ進む。
ステップS60において、演算処理部100は、ローカル通信でメッセージを送受信するタイミングが到来しているか否かを判断する(ステップS60)。すなわち、本実施の形態に従うメッセージアプリケーションは、ローカル通信によって他のゲーム装置1からメッセージを取得するために所定周期でローカル通信を有効化する。そのため、ステップS60においては、判断タイミングがローカル通信を有効化する期間であるか否かが判断される。なお、ユーザが明示的にローカル通信の有効化を指示することもできる。例えば、近くに存在するゲーム装置1との間でメッセージの交換といったボタンオブジェクトが押下されることで、ローカル通信が有効化される。
ローカル通信でメッセージを送受信するタイミングが到来している場合(ステップS60においてYESの場合)には、演算処理部100は、ステップS62以下の処理を実行する。これに対して、ローカル通信でメッセージを送受信するタイミングが到来していない場合(ステップS60においてNOの場合)には、演算処理部100は、ステップS68以下の処理を実行する。
ステップS62において、演算処理部100は、ローカル通信処理を実行する(ステップS62)とともに、他のゲーム装置1からメッセージを受信したか否かを判断する(ステップS64)。他のゲーム装置1からメッセージを受信しなかった場合(ステップS64においてNOの場合)には、処理はステップS68へ進む。
これに対して、他のゲーム装置1からメッセージを受信した場合(ステップS64においてYESの場合)には、他のゲーム装置1から取得したメッセージを保存する(ステップS66)。続いて、演算処理部100は、ステップS66において新たなメッセージが保存されたことに伴って、オブジェクトの配置順番を更新する(ステップS56)。すなわち、演算処理部100は、図24に示す順番テーブル360に新たなエントリを追加するとともに、その順番を更新する。続いて、演算処理部100は、メニュー画面の表示サブルーチンを実行することで、表示されているメニュー画面を更新する(ステップS58)。そして、処理はステップS72へ進む。
ステップS68において、演算処理部100は、ユーザによってオブジェクトの選択および選択されたオブジェクトの拡大表示が指示されたか否かを判断する(ステップS68)。ユーザによってオブジェクトの選択および選択されたオブジェクトの拡大表示が指示された場合(ステップS68においてYESの場合)には、演算処理部100は、選択されたオブジェクトに対応するメッセージの本体データ353を用いて、上側LCD110にオブジェクトを拡大表示する(ステップS70)。そして、処理はステップS72へ進む。
なお、ユーザによってオブジェクトの選択および選択されたオブジェクトの拡大表示が指示されていない場合(ステップS68においてNOの場合)には、ステップS70の処理がスキップされ、ステップS72の処理が実行される。
ステップS72において、演算処理部100は、選択中のメッセージに対する返信が指示されたか否かを判断する(ステップS72)。選択中のメッセージに対する返信が指示された場合(ステップS72においてYESの場合)には、処理はステップS16へ進み、返信するためのメッセージを作成できるように、図18に示すようなメッセージ作成画面を表示する。一方、選択中のメッセージに対する返信が指示されていない場合(ステップS72においてNOの場合)には、処理はステップS12へ戻る。また、選択中のメッセージに対しては、返信だけでなく、転送が可能であってもよい。
(k3:メニュー画面の表示サブルーチン)
図28は、図26および図27に示すメニュー画面の表示サブルーチンの処理内容を示すフローチャートである。図28を参照して、演算処理部100は、第1回目の処理実行であるか否かを判断する(ステップS100)。すなわち、ゲーム装置1の電源がON状態となって表示サブルーチンの最初の実行であるか否かが判断される。初期段階においては、基準オブジェクトが設定されていないので、表示サブルーチンの実行タイミング(現在時刻)と保存されているメッセージに付与されている時刻情報とに基づいて、基準オブジェクトが設定される。これに対して、初期段階以外では、初期設定またはユーザ操作によって、いずれかのオブジェクトが基準オブジェクトとして設定されているので、この設定されている基準オブジェクトに基づいて、メッセージアプリケーションのメニュー画面が表示されることになる。
すなわち、第1回目の処理実行である場合(ステップS100においてYESの場合)には、データ格納部320(図22)に保存されているメッセージのうち現在時刻と日付が同一の時刻情報を有するメッセージを基準オブジェクトに対応するメッセージとして特定する(ステップS102)。これに対して、第1回目の処理実行ではない場合(ステップS100においてNOの場合)には、先の処理によって基準オブジェクトとして設定されているメッセージを特定する(ステップS104)。なお、現在時刻と日付とが同一の時刻情報を有するメッセージが無ければ、現在時刻と日付とが最も近い時刻情報を有するメッセージを基準オブジェクトに対応するメッセージとして特定する。また、現在時刻と日付とが同一の時刻情報を有するメッセージが複数存在する場合は、当該複数のメッセージの中で、現在時刻に最も近い時刻情報を有するメッセージを基準オブジェクトに対応するメッセージとして特定する。
ステップS102またはS104の処理後、演算処理部100は、順番テーブル360(図22および図24)を参照して、基準オブジェクトに対応する順番を特定するとともに、当該基準オブジェクトに対応する順番から所定範囲内の順番に対応する所定数のメッセージ(オブジェクト)をメニュー画面における表示対象として決定する(ステップS106)。
そして、演算処理部100は、基準オブジェクトとして設定されているオブジェクトに対応するメッセージ(図23に示すデータ350a,350b,…)を最初の処理対象メッセージに設定する(ステップS108)。続いて、演算処理部100は、処理対象メッセージの属性情報351を参照して、処理対象メッセージが受信メッセージおよび送信メッセージのいずれであるかを特定する(ステップS110)とともに、処理対象メッセージが既読メッセージおよび未読メッセージのいずれであるかを特定する(ステップS112)。そして、演算処理部100は、メニュー画面において表示されるオブジェクトに用いられる背景画像202を決定する(ステップS114)。
続いて、演算処理部100は、順番テーブル360における、基準オブジェクトの順番と処理対象メッセージの順番との距離に応じて、処理対象メッセージを示すオブジェクトについて、メニュー画面における表示位置および表示サイズ、ならびに、表示面の垂直方向における表示位置(立体深度:飛出し量または引込み量)を決定する(ステップS116)。なお、演算処理部100は、処理対象メッセージのオブジェクトの表示位置が上側LCD110および下側LCD120のいずれに位置するのかを判断し、下側LCD120に表示されると判断された場合には、仮想3次元空間に配置された単一の仮想カメラ400C(図7)によりオブジェクトを撮像して得られる画像を用いて平面表示する。なお、代替の処理方法として、立体視表示を行うために用いられる一対の仮想カメラ400Lおよび400R(図7)の間の距離d1をゼロに設定するとともに、一方の仮想カメラによる撮像によって得られた画像を用いて平面表示してもよい。
また、各オブジェクトの表示面の垂直方向における表示位置(立体深度:飛出し量または引込み量)については、図14に示すような位置関係を予め定義しておくことで、容易に算出することができる。
さらに、演算処理部100は、ステップS116において設定した、表示位置、表示サイズ、垂直方向における表示位置に基づいて、処理対象メッセージを示すオブジェクトの背景画像202を表示部(上側LCD110および/または下側LCD120)に表示するための描画命令を生成する(ステップS118)。
続いて、演算処理部100は、ステップS108において表示対象として設定された所定数のメッセージのすべてが処理対象メッセージとして処理されたか否かを判断する(ステップS120)。すなわち、演算処理部100は、表示対象として設定されたすべてのメッセージについての背景画像202の表示が完了したか否かを判断する。
表示対象として設定された所定数のメッセージのうち処理対象メッセージとして処理されていないものが存在する場合(ステップS120においてNOの場合)には、演算処理部100は、表示対象として設定された所定数のメッセージの中で新たなメッセージを処理対象メッセージとして設定し(ステップS122)、ステップS110以下の処理を繰返す。なお、処理対象メッセージの設定方法としては、基準オブジェクトに対応するメッセージの順番に近い順番に対応するメッセージから順次選択されることが好ましい。このような選択方法を採用することで、ゲーム装置1の表示部(上側LCD110および下側LCD120)においては、基準オブジェクトを中心として、左右交互に背景画像202が表示されることになる。
これに対して、表示対象として設定されたすべてのメッセージが処理対象メッセージとして処理済みである場合(ステップS120においてYESの場合)には、演算処理部100は、基準オブジェクトとして設定されているオブジェクトに対応するメッセージを処理対象メッセージに再度設定する(ステップS124)。
続いて、演算処理部100は、処理対象メッセージが未読メッセージであるか否かを判断する(ステップS126)。処理対象メッセージが未読メッセージである場合(ステップS126においてYESの場合)には、処理はステップS134へジャンプする。これは、図11などに示すように、未読メッセージであればサムネイル画像を含まないオブジェクトが表示されるからである。
これに対して、処理対象メッセージが未読メッセージではない場合(ステップS126においてNOの場合)には、演算処理部100は、処理対象メッセージのサムネイル画像データ352が存在するか否かを判断する(ステップS128)。処理対象メッセージのサムネイル画像データ352が存在しない場合(ステップS128においてNOの場合)には、演算処理部100は、処理対象メッセージの本体データ353を参照して、対応するサムネイル画像データ352を生成する(ステップS130)。これに対して、処理対象メッセージのサムネイル画像データ352が存在する場合(ステップS128においてYESの場合)には、演算処理部100は、ステップS130の処理をスキップする。
続いて、演算処理部100は、処理対象メッセージのオブジェクトを構成する背景画像202についての、表示位置、表示サイズ、垂直方向における表示位置に基づいて、対応するサムネイル画像208を背景画像202の上に表示するための描画命令を生成する(ステップS132)。
続いて、演算処理部100は、ステップS108において表示対象として設定された所定数のメッセージのすべてが処理対象メッセージとして処理されたか否かを判断する(ステップS134)。すなわち、演算処理部100は、表示対象として設定されたすべてのメッセージについてのサムネイル画像208の表示が完了したか否かを判断する。
表示対象として設定された所定数のメッセージのうち処理対象メッセージとして処理されていないものが存在する場合(ステップS134においてNOの場合)には、演算処理部100は、表示対象として設定された所定数のメッセージの中で新たなメッセージを処理対象メッセージとして設定し(ステップS136)、ステップS126以下の処理を繰返す。なお、サムネイル画像データの生成処理は比較的時間を要するので、この生成処理については並列処理とすることが好ましい。
これに対して、表示対象として設定されたすべてのメッセージが処理対象メッセージとして処理済みである場合(ステップS134においてYESの場合)には、演算処理部100は、基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されているか否かを判断する(ステップS138)。基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されている場合(ステップS138においてYESの場合)には、演算処理部100は、当該作成者キャラクタ230が基準オブジェクトと関連付けて表示するための描画命令を生成する(ステップS140)。
ステップS140の実行後、または、基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されていない場合(ステップS138においてNOの場合)には、処理はリターンする。
(k4:スクロール処理)
図29は、図26に示すスクロール処理サブルーチンの処理内容を示すフローチャートである。図29を参照して、演算処理部100は、タッチパネル122においてスライド入力が検出されたか否かを判断する(ステップS200)。このスライド入力とは、タッチパネル122に対して押下された状態で所定距離だけ移動するような操作を意味する。タッチパネル122においてスライド入力が検出されなかった場合(ステップS200においてNOの場合)には、処理はリターンする。
これに対して、タッチパネル122においてスライド入力が検出された場合(ステップS200においてYESの場合)には、演算処理部100は、検出されたスライド入力によるX方向への変位量を算出する(ステップS202)。続いて、演算処理部100は、ステップS202において算出された変位量が所定のしきい値を超えているか否かを判断する(ステップS204)。ステップS202において算出された変位量が所定のしきい値を超えていない場合(ステップS204においてNOの場合)には、処理はリターンする。このステップS204における処理により、誤操作を防止することができる。
ステップS202において算出された変位量が所定のしきい値を超えている場合(ステップS204においてYESの場合)には、演算処理部100は、作成者キャラクタ230が基準オブジェクトと関連付けて表示されているか否かを判断する(ステップS206)。作成者キャラクタ230が基準オブジェクトと関連付けて表示されている場合(ステップS206においてYESの場合)には、演算処理部100は、当該表示されている作成者キャラクタ230を消去する(ステップS208)。これは、スクロール処理中における処理量を低減させるためである。これに対して、作成者キャラクタ230が基準オブジェクトと関連付けて表示されていない場合(ステップS206においてNOの場合)には、ステップS208の処理はスキップされる。
続いて、演算処理部100は、検出された変位方向を判断する(ステップS210)。検出された変位方向が右方向である場合(ステップS210において「右方向」)には、演算処理部100は、現在表示中のオブジェクト群の全体を予め定められた軌道に沿って右側にスライドして表示されるように、描画命令を生成する(ステップS212)。一方、検出された変位方向が左方向である場合(ステップS210において「左方向」)には、演算処理部100は、現在表示中のオブジェクト群の全体を予め定められた軌道に沿って左側にスライドして表示されるように、描画命令を生成する(ステップS214)。なお、スライド入力におけるスライド速度を算出し、当該スライド速度が所定のしきい値を超えている場合、算出された変位量を超えて(慣性が感じられるような態様で)オブジェクト群をスライドして表示してもよい。
ステップS212およびS214においては、既に表示されているオブジェクトの画像データがそのまま利用されるが、メニュー画面における表示位置の変更に伴って、表示サイズおよび垂直方向における表示位置についても変更される。そのため、演算処理部100は、検出された変位量に応じて各オブジェクトの表示位置を更新するとともに、その表示サイズおよび視差量(または、奥行き位置)についても逐次更新する。
なお、スライド操作によって、メニュー画面に表示されていなかったオブジェクトがメニュー画面に表示されることとなった場合には、当該オブジェクトに必要なサムネイル画像や背景画像が逐次読出される。
その後、演算処理部100は、メニュー画面の基準点に最も近い位置に存在するオブジェクトを基準オブジェクトとして設定する(ステップS216)。続いて、演算処理部100は、基準オブジェクトとして設定されたオブジェクトが基準点に位置するように、オブジェクト群の表示位置を調整する(ステップS218)。
さらに、演算処理部100は、基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されているか否かを判断する(ステップS220)。基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されている場合(ステップS220においてYESの場合)には、演算処理部100は、当該作成者キャラクタ230が基準オブジェクトと関連付けて表示するための描画命令を生成する(ステップS222)。
ステップS222の実行後、または、基準オブジェクトに対応するメッセージに作成者キャラクタが属性情報として付与されていない場合(ステップS220においてNOの場合)には、処理はリターンする。
<L.その他の形態>
上述の実施の形態においては、一連の処理が単一のゲーム装置1において実行される場合を説明したが、上記一連の処理が複数の主体に分散して実現されてもよい。例えば、ゲーム装置1と、当該ゲーム装置1とネットワークを介して通信可能なサーバ装置とを含む情報処理システムにおいて、上記一連の処理のうち一部がサーバ装置によって実行されてもよい。さらに、ゲーム装置1と、当該ゲーム装置1とネットワークを介して通信可能なサーバ装置とを含む情報処理システムにおいて、上記一連の処理のうち主要な部分がサーバ装置によって実行され、当該ゲーム装置1では一部の処理が実行されてもよい。
また、例えば、他の装置とメッセージを遣り取りする通信装置がゲーム装置1とは別体として存在するような構成を採用することもできる。この場合においても、ゲーム装置1と通信装置とが協働して本実施の形態に従う処理を実現してもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。