(58)【調査した分野】(Int.Cl.,DB名)
前記移動表示手段は、表示されているオブジェクトに生じる視差が第1条件を満たしたことに応答して、当該オブジェクトを表示範囲外へ移動させ、表示されていないオブジェクトが前記表示装置に表示されれば生じる視差が前記第1条件とは異なる第2条件を満たしたことに応答して、当該オブジェクトを表示範囲内へ移動させる、請求項1に記載の表示制御プログラム。
前記移動表示手段は、前記仮想空間内において前記一対の仮想カメラを含む平面である基準面から前記オブジェクトまでの距離を所定値と比較することで、表示されているオブジェクトを表示範囲外へ移動させるか、または、表示されていないオブジェクトを表示範囲内へ移動させるかを行なう、請求項3に記載の表示制御プログラム。
前記移動表示手段は、前記基準面から前記オブジェクトまでの距離が第1所定値以下である場合に、表示されているオブジェクトを表示範囲外へ移動させ、前記基準面から前記オブジェクトまでの距離が前記第1所定値とは異なる第2所定値以上である場合に、表示されていないオブジェクトを表示範囲内へ移動させる、請求項4に記載の表示制御プログラム。
前記移動表示手段は、移動中のオブジェクトに生じる視差を実質的に維持するように、前記オブジェクトを移動させる、請求項4〜6のいずれか1項に記載の表示制御プログラム。
前記位置関係更新手段は、前記仮想空間内において、前記基準面に平行な向きにオブジェクトを移動させることで、オブジェクトを移動表示させる、請求項7に記載の表示制御プログラム。
前記移動表示手段は、前記表示装置の表示面におけるオブジェクトの表示位置に応じて、オブジェクトを移動させる向きを異ならせる、請求項1〜9のいずれか1項に記載の表示制御プログラム。
前記移動表示手段は、オブジェクトの表示位置から表示範囲外までの距離に応じて、オブジェクトを移動させる向きを異ならせる、請求項1〜9のいずれか1項に記載の表示制御プログラム。
前記移動表示手段は、オブジェクトの表示位置から表示範囲外までの移動距離が最も短くなる向きに、オブジェクトを移動させる、請求項11に記載の表示制御プログラム。
【発明を実施するための形態】
【0035】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0036】
本発明に係る表示装置の代表例として、以下では、コンピュータである携帯型のゲーム装置1について説明する。特に、本実施の形態に従うゲーム装置1は、立体視表示が可能な表示部を有している。
【0037】
本発明に係る表示装置としては、携帯型のゲーム装置1として具現化される場合に限られず、据置型のゲーム装置や、パーソナルコンピュータ、携帯電話、携帯端末などとして具現化することもできる。さらに、立体視表示が可能な表示装置を制御するための表示制御プログラムとして具現化することもできる。あるいは、これらの表示制御プログラムを格納した記録媒体と当該記録媒体を装着可能な処理装置本体とを含む表示システムとして具現化してもよい。さらに、立体視表示が可能な表示部を有する表示装置と表示装置と通信可能な主体とが連係して本発明に係る表示制御方法を具現化してもよい。
【0038】
<A.用語>
本明細書において、「立体視表示」、「3次元表示」、「3D表示」とは、ユーザが画像(オブジェクト)の少なくとも一部を立体的に視認することができるように、当該画像を表現することを意味する。ユーザにオブジェクトを立体的に視認させるために、典型的には、人間の目や脳の生理的な働きを利用する。このような立体視表示は、ユーザがオブジェクトを立体的に視認できるように生成された画像(典型的には、視差を有するステレオ画像)を用いて実現される。
【0039】
本明細書において、オブジェクトを立体視表示した場合に、オブジェクトが存在しているとユーザが視認する、当該オブジェクトの表示面の垂直方向における位置を「立体深度」や「飛び出し量」とも称す。この「立体深度」または「飛び出し量」の度合いは、表示面におけるオブジェクトの視差の大きさに依存する。
【0040】
本明細書において、「視差」は、同一のオブジェクトを左目および右目でそれぞれ見た場合に生じる差であり、典型的には、ステレオ画像の一方の画像(左目用画像)内でオブジェクトが表現される位置と、当該ステレオ画像の他方の画像(右目用画像)内で同一のオブジェクトが表現される位置との距離として定義される。
【0041】
<B.概要>
本実施の形態に従う表示装置の典型例であるゲーム装置1は、立体視表示が可能な表示部(上側LCD110)を有する。ゲーム装置1のコンピュータが表示制御プログラムを実行することで、様々なオブジェクトを立体視表示する。本実施の形態に従う表示制御プログラムは、オブジェクトを表示装置に表示した場合に生じる視差を算出する。そして、表示されているオブジェクトについての当該算出された視差が所定値を超えるときには、当該オブジェクトを表示範囲外へ移動させて表示されていない状態にする。これにより、オブジェクトが立体視表示される際の視差を適切に保つことができる。一方で、表示されていないオブジェクトについても、表示部で表示した場合に生じ得る視差が算出される。そして、この算出された視差が所定値を下回るときには、当該表示されていないオブジェクトを表示させるとともに、表示範囲外から本来の表示位置へ移動させる。
【0042】
すなわち、本実施の形態に従う表示制御プログラムは、各オブジェクトに生じる視差に応じて、当該オブジェクトの表示位置と表示範囲外との間でオブジェクトを移動させるようなユーザインターフェイスを提供する。
【0043】
<C.ゲーム装置の全体構成>
まず、本実施の形態に従うゲーム装置1の全体構成について説明する。
【0044】
図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の使用形態の制約などを意図するものではない。
【0045】
図1〜
図3を参照して、携帯型のゲーム装置1は、折り畳み可能に構成されている。ゲーム装置1は、開いた状態では、
図1のような外観であり、閉じた状態では、
図2(A)のような外観となっている。ゲーム装置1は、開いた状態であっても、ユーザが両手または片手で把持することができるようなサイズであることが好ましい。
【0046】
ゲーム装置1は、上側ハウジング2と下側ハウジング3とを有する。上側ハウジング2と下側ハウジング3とは、折り畳み可能(開閉可能)に連結されている。
図1に示す例では、上側ハウジング2および下側ハウジング3の各々は、長方形の板状に形成され、互いの長辺部分でヒンジ4を介して回転可能に連結されている。ゲーム装置1は、ユーザによって使用するときに、開状態に維持され、使用されないときに、閉状態に維持される。
【0047】
また、ゲーム装置1では、上側ハウジング2と下側ハウジング3との間の角度を、閉状態の位置と開状態の位置との間(略0°〜略180°)の任意の角度で維持することもできる。このハウジング間の静止には、上側ハウジング2と下側ハウジング3との連結部分に発生する摩擦力などが用いられる。摩擦力に加えて、あるいは、摩擦力に代えて、上側ハウジング2と下側ハウジング3との連結部内にラッチ機構を採用してもよい。
【0048】
上側ハウジング2には、立体視表示が可能な表示部(表示手段)として、上側LCD(Liquid Crystal Display:液晶表示装置)110が設けられている。上側LCD110は、長方形状の表示領域を有し、その長辺方向が上側ハウジング2の長辺方向に一致するように配置される。ゲーム装置1では、ユーザが立体視表示をより楽しむことができるように、下側LCD120の画面サイズに比較してより大きな画面サイズを有する上側LCD110を採用する構成を示す。但し、必ずしも、このように画面サイズを異ならせる必要はなく、アプリケーションの用途やゲーム装置1のサイズなどに応じて、画面サイズは適宜設計することができる。上側LCD110の詳細な構成については、後述する。
【0049】
上側ハウジング2には、何らかの被写体を撮像するための撮像装置(撮像手段)が設けられている。より具体的には、上側ハウジング2には、一対の外側カメラ131Lおよび131R(
図2(A)参照)と、内側カメラ133(
図1参照)とが設けられている。内側カメラ133は、上側LCD110の上部に配置されており、一対の外側カメラ131Lおよび131Rは、内側カメラ133が配置されている内側主面とは反対側の面、すなわち上側ハウジング2の外側主面(ゲーム装置1が閉状態となった場合に外側となる面に相当)に配置されている。このような位置関係によって、一対の外側カメラ131Lおよび131Rは、上側ハウジング2の外側主面が向く方向に存在する被写体を撮像することができ、一方、内側カメラ133は、外側カメラ131Lおよび131Rの撮像方向の逆方向、すなわち、上側ハウジング2の内側主面が向く方向に存在する被写体を撮像することができる。
【0050】
一対の外側カメラ131Lおよび131Rは、所定の間隔だけ離して配置されており、外側カメラ131Lおよび131Rの撮像によって取得される一対の入力画像の間には、外側カメラ131Lと外側カメラ131Rとの相対的な位置関係に応じた、所定の視差が存在する。そのため、これらの外側カメラ131Lおよび131Rが取得する一対の画像データを用いて、被写体を立体視表示することもできる。
【0051】
一方、内側カメラ133の撮像によって取得される入力画像は、基本的には、非立体視表示(平面表示)に用いられる。したがって、ゲーム装置1においては、外側カメラ131Lおよび131Rを有効化すると、立体視表示をするための一対の入力画像を取得でき、内側カメラ133を有効化すると、非立体視表示をするための入力画像を取得できる。
【0052】
さらに、上側ハウジング2には、上側LCD110の右側に立体視ボリューム145が設けられている。この立体視ボリューム145は、上側LCD110における立体視表示の立体感の度合い(視差および強さ)を調整するために用いられる。
【0053】
上側ハウジング2には、音声発生装置(音声発生手段)としてのスピーカ(
図4に示すスピーカ151)が収納されている。より具体的には、上側ハウジング2の内側主面中央部に配置されている上側LCD110に対して、左右両側に音抜き孔151Lおよび151Rがそれぞれ配置されている。スピーカ151で発生した音声は、スピーカ151とそれぞれ連通する音抜き孔151Lおよび151Rを通じて、ユーザへ向けて放射される。
【0054】
一方、下側ハウジング3には、表示部(表示手段)として、下側LCD120が設けられている。下側LCD120は、長方形状の表示領域を有し、その長辺方向が下側ハウジング3の長辺方向と一致するように配置される。
【0055】
下側LCD120としては、後述するような立体視表示が可能な表示部を採用してもよいが、本実施の形態においては、オブジェクトや各種情報などを非立体視表示(平面表示)する一般的な表示デバイスが採用される。そのため、下側LCD120としては、例えば、EL(Electro Luminescence:電界発光)を利用したものといった、他の適切な形式の表示部を採用してもよい。さらに、表示部(表示手段)の解像度は、実行されるアプリケーションなどに応じて適切に設計される。
【0056】
下側ハウジング3には、ユーザなどからの入力操作を受付ける入力手段(入力装置)として、コントロールパッド154と、十字ボタン161と、ボタン群142,162とが設けられている。これらの入力部は、上側ハウジング2と下側ハウジング3とを折り畳んだときに内側となる、下側ハウジング3の主面上に設けられている。特に、コントロールパッド154および十字ボタン161は、ユーザがゲーム装置1を把持した際に、その左手で容易に操作できる位置に配置され、ボタン群162は、ユーザがゲーム装置1を把持した際に、その右手で容易に操作できる位置に配置される。
【0057】
コントロールパッド154は、主として、ゲーム装置1における立体視表示を調整するための操作を受付ける。より具体的には、コントロールパッド154は、ユーザの操作を受付ける突起部を有するとともに、下側ハウジング3に対する相対的な位置関係を、少なくとも紙面上下方向および紙面左右方向に変更することが可能な構造となっている。
図1に示すコントロールパッド154に代えて、アナログスティック、または、ジョイスティックなどを採用してもよい。
【0058】
十字ボタン161は、2つの方向を独立して操作可能な入力部であり、ユーザがそれぞれの方向におけるボタン操作をすることで、それに応じた値をもつ指令が出力される。ボタン群162は、紙面上下左右方向にそれぞれ対応付けられた、4つの操作ボタン162A,162B,162X,162Yを含む。
【0059】
十字ボタン161および/またはボタン群162が出力する操作入力は、ゲーム装置1における立体視表示の調整に用いられてもよい。あるいは、ゲーム装置1で実行される各種アプリケーションにおいては、これらの操作入力は、ゲーム進行などに係る、選択・決定・キャンセルといった操作に用いられる。
【0060】
ボタン群142は、セレクトボタン142aと、HOMEボタン142bと、スタートボタン142cと、電源ボタン142dとを含む。セレクトボタン142aは、典型的には、ゲーム装置1で実行されるアプリケーションを選択するために用いられる。HOMEボタン142bは、典型的には、ゲーム装置1で実行されるメニューアプリケーションや各種アプリケーションを初期状態にするために用いられる。スタートボタン142cは、典型的には、ゲーム装置1においてアプリケーションの実行を開始するために用いられる。電源ボタン142dは、ゲーム装置1の電源をオン/オフするために用いられる。
【0061】
下側ハウジング3内には、音声取得装置(音声取得手段)としてのマイク(
図4に示すマイク153)が収納されている。そして、下側ハウジング3の主面上には、マイク153がゲーム装置1の周囲における音を取得するためのマイク用孔153aが設けられている。なお、マイク153が収納される位置、および、当該マイク153と連通するマイク用孔153aの位置は、下側ハウジング3の主面上に限られることなく、例えば、マイク153をヒンジ4内に収納するとともに、ヒンジ4の表面であって、マイク153の収納位置に対応する位置にマイク用孔153aを設けてもよい。
【0062】
ゲーム装置1には、コントロールパッド154、十字ボタン161、および、ボタン群142,162に加えて、別の入力部(入力手段)であるポインティングデバイスとして、タッチパネル122がさらに設けられている。タッチパネル122は、下側LCD120の画面上を覆うように装着され、ユーザによる入力操作(位置指示操作、ポインティング操作)が行われた場合に、対応する2次元座標値を検出する。
【0063】
タッチパネル122としては、典型的には、抵抗膜方式を採用することができる。但し、抵抗膜方式に限らず、各種の押圧式のタッチパネルを採用することもできる。また、タッチパネル122の解像度(検出精度)は、下側LCD120の解像度(表示精度)と同程度であることが好ましい。但し、タッチパネル122の解像度と下側LCD120の解像度とを完全に一致させる必要はない。
【0064】
タッチパネル122に対するポインティング操作は、通常、ユーザがスタイラス177を用いることで行われるが、スタイラス177に代えて、ユーザ自身の指などでポインティング操作(入力操作)を行なうことも可能である。
図1,
図3(C)に示すように、下側ハウジング3の背面には、スタイラス177の収納部176が設けられている。タッチパネル122に対する入力操作を行なうためのスタイラス177は、通常、収納部176に格納されており、ユーザが必要に応じて取り出すことになる。
【0065】
なお、ユーザからの位置指示を受付ける入力部(入力手段)であるポインティングデバイスとしては、タッチパネル122に代えて、あるいは、これに加えて、マウス、トラックボール、ペンタブレットなどを用いてもよい。また、表示部の表示面に対して遠隔から座標値を指示できるポインタ装置(典型的には、Wii(登録商標)のコントローラなど)を採用してもよい。いずれのデバイスを用いた場合であっても、下側LCD120の表示領域内の位置に関連付けられた位置指示を受付けるように構成されることが好ましい。
【0066】
図2(C),
図2(D),
図3(A),
図3(B)に示すように、下側ハウジング3の背面の左端部には、Lボタン162Lが設けられており、下側ハウジング3の背面の右端部には、Rボタン162Rが設けられている。Lボタン162LおよびRボタン162Rについては、ゲーム装置1で実行される各種のアプリケーションにおいて、選択などの操作に用いられる。
【0067】
図2(C)に示すように、下側ハウジング3の左側面には、音量ボリューム144が設けられている。音量ボリューム144は、ゲーム装置1に搭載されているスピーカ(
図4に示すスピーカ151)からの音量を調整するために用いられる。
【0068】
図2(D)に示すように、下側ハウジング3の右側面には、無線スイッチ143が設けられている。無線スイッチ143は、ゲーム装置1における無線通信をオン状態(有効化状態)またはオフ状態(無効化状態)に切り換える。
【0069】
ゲーム装置1に対しては、ゲームカード171および/またはメモリカード173が装着可能となっている。より具体的には、
図3(B)に示すように、下側ハウジング3の背面には、ゲームカード171を装着するためのゲームカードスロット170が設けられている。ゲームカードスロット170の奥側には、ゲーム装置1とゲームカード171との間を電気的に接続するためのインターフェイスが設けられている。ゲームカードスロット170は、ゲームカード171を着脱自在に構成されている。ゲームカード171は、アプリケーションプログラムやゲームプログラム(いずれも命令セットを含む)などを保持する。
【0070】
また、
図2(C)に示すように、下側ハウジング3の左側面には、メモリカード173を装着するためのメモリカードスロット172が設けられている。メモリカードスロット172の奥側には、ゲーム装置1とメモリカード173との間を電気的に接続するためのインターフェイスが設けられている。メモリカードスロット172は、メモリカード173を着脱自在に構成されている。メモリカード173は、他の情報処理装置・ゲーム装置から取得したプログラムや画像データの読出し、ならびに、ゲーム装置1によって撮像および/または画像処理された画像データの記憶(保存)などに用いられる。ゲームカード171は、例えば、SD(Secure Digital)カードなどの不揮発性記録媒体からなる。
【0071】
ゲーム装置1には、動作状態などをユーザに提示するためのインジケータが設けられている。より具体的には、下側ハウジング3および上側ハウジング2には、複数のLED(Light Emitting Diode)からなるインジケータ群147が設けられている。インジケータ群147は、立体表示インジケータ147aと、お知らせインジケータ147bと、無線インジケータ147cと、電源インジケータ147dと、充電インジケータ147eとを含む。立体表示インジケータ147aは、上側ハウジング2の主面上に設けており、その他のインジケータは、下側ハウジング3の主面または側面に設けられている。
【0072】
立体表示インジケータ147aは、上側LCD110において立体視表示が行われているか否かを通知する。典型的には、上側LCD110での立体視表示が有効化されているときに、立体表示インジケータ147aは点灯する。
【0073】
お知らせインジケータ147bは、ユーザに通知すべき情報が存在するか否かを通知する。典型的には、ユーザに対して未読のメールが存在しているときや、各種のサーバから何らかのメッセージを受信しているときに、お知らせインジケータ147bは点灯する。
【0074】
無線インジケータ147cは、ゲーム装置1における無線通信の状態を通知する。典型的には、無線通信が有効化されているときに、無線インジケータ147cは点灯する。
【0075】
電源インジケータ147dは、ゲーム装置1における電源状態を通知する。ゲーム装置1は、図示しないバッテリを内蔵しており(典型的には、下側ハウジング3に収納される)、主として、このバッテリからの電力で駆動する。そのため、電源インジケータ147dは、ゲーム装置1における電源の投入状態、および/または、バッテリの残量の状態などを通知する。典型的には、ゲーム装置1の電源が投入状態(オン状態)であって、かつ、バッテリの残量が十分であるときに、電源インジケータ147dは、緑色に点灯し、ゲーム装置1の電源が投入状態(オン状態)であって、かつ、バッテリの残量が低下しているときに、赤色に点灯する。
【0076】
充電インジケータ147eは、上述のバッテリに対する充電状態を通知する。典型的には、ゲーム装置1に対して充電アダプタ(図示しない)などが装着されて内蔵のバッテリが充電状態であるときに、充電インジケータ147eは点灯する。なお、充電アダプタは、
図3(A)に示すように、ゲーム装置1の背面に設けられている充電端子174に接続される。
【0077】
また、ゲーム装置1は、赤外線通信の機能を搭載しており、ゲーム装置1の背面には、赤外線ポート179が設けられている。この赤外線ポート179は、データ通信の搬送波である赤外線を投光/受光する。
【0078】
ゲーム装置1の前面には、ゲーム装置1を吊り下げるためのストラップを接続するためのフック31,32が設けられている。下側ハウジング3の前面には、ヘッドホンおよび/またはマイクを接続するための接続端子158が設けられている。
【0079】
<D.ゲーム装置の電気的構成>
次に、本実施の形態に従うゲーム装置1の電気的構成について説明する。
【0080】
図4は、本発明の実施の形態に従うゲーム装置1の電気的構成を示すブロック図である。
【0081】
図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は、図示しないバッテリおよび電源回路を含む。
【0082】
演算処理部100は、ゲーム装置1の全体の制御を司る。演算処理部100は、上側LCD110および下側LCD120での表示を制御するための制御主体でもある。より具体的には、演算処理部100は、不揮発性メモリ136に予め格納されているファームウェア(命令セット)、ゲームカードスロット170に装着されるゲームカード171から読出されるプログラム(命令セット)やデータ、メモリカードスロット172に装着されるメモリカード173から読出されるプログラム(命令セット)やデータなどを実行することで、上側LCD110における立体視表示の制御を含む各種処理を実現する。
【0083】
なお、演算処理部100で実行されるプログラム(命令セット)がゲームカード171やメモリカード173を通じて提供される場合に加えて、CD−ROMやDVDなどの光学式の記録媒体を通じて、ゲーム装置1へ提供されるようにしてもよい。さらに、ネットワークを通じて接続されるサーバ装置(図示しない)からプログラムが提供されるようにしてもよい。
【0084】
より具体的には、演算処理部100は、CPU(Central Processing Unit)102と、GPU(Graphical Processing Unit)104と、VRAM(Video Random Access Memory)106と、DSP(Digital Signal Processor)108とを含む。これらの各部の処理については、後述する。また、演算処理部100は、各部との間でデータを遣り取りする。
【0085】
外側カメラ131Lおよび131Rならびに内側カメラ133の各々は、演算処理部100に接続され、演算処理部100からの指示に応答して、撮像により取得した入力画像を演算処理部100へ出力する。これらのカメラの各々は、CCD(Charge Coupled Device)やCIS(CMOS Image Sensor)といった撮像素子と、撮像素子で取得された画像データ(入力画像)を読出すための周辺回路とを含む。
【0086】
無線モジュール134は、他のゲーム装置1や何らかの情報処理装置との間で無線信号を介してデータを遣り取りする。一例として、無線モジュール134は、IEEE802.11a/b/g/nといった規格に準拠した無線LAN方式により、他の装置との間でデータ通信を行なう。
【0087】
不揮発性メモリ136は、ゲーム装置1の基本動作に必要なファームウェアなどを格納しており、そのファームウェアを記述するコードがメインメモリ138に展開される。演算処理部100のCPU102がメインメモリ138に展開されたコードを実行することで、ゲーム装置1での基本処理が実現される。また、不揮発性メモリ136には、ゲーム装置1において予め設定される各種パラメータに関するデータ(プリセットデータ)が格納されてもよい。一例として、不揮発性メモリ136は、フラッシュメモリからなる。
【0088】
メインメモリ138は、演算処理部100が処理を実行するためのワーク領域またはバッファ領域として用いられる。メインメモリ138は、演算処理部100での処理に必要なプログラム(コード)やデータを一時的に記憶する。一例として、メインメモリ138は、PSRAM(Pseudo-SRAM)からなる。
【0089】
マイコン140は、主として、ユーザインターフェイスに係る処理を提供する。より具体的には、マイコン140は、演算処理部100と接続されるとともに、ボタン群142、音量ボリューム144、立体視ボリューム145、電源管理IC146、インジケータ群147、および、加速度センサ148と接続される。マイコン140は、ユーザによるボタン操作などを検知して、その検知結果を演算処理部100へ出力するとともに、演算処理部100からの信号に応答して、ユーザへ各種情報を通知するためのインジケータを点灯する。
【0090】
また、マイコン140は、リアルタイムカウント(RTC:Real Time Clock)141を有している。リアルタイムカウンタ141は、計時機能を提供する部位であり、予め定まった周期で時間をカウントする。このカウント結果は、逐次、演算処理部100へ出力される。演算処理部100は、リアルタイムカウンタ141によってカウントされたカウント値に基づいて、現在時刻(日付)などを算出することもできる。
【0091】
電源管理IC146は、ゲーム装置1に搭載される電源(典型的には、上述のバッテリ)から各部へ電力を供給するとともに、その供給量を制御する。
【0092】
加速度センサ148は、ゲーム装置1の変位を検出し、その検出結果は、マイコン140を通じて演算処理部100へ出力される。加速度センサ148による検出結果は、ゲーム装置1で実行されるプログラム(ゲームアプリケーション)などに利用される。
【0093】
赤外線モジュール178は、他のゲーム装置1との間で無線通信(赤外線通信)を行なう。この赤外線モジュール178による無線通信は、無線モジュール134による無線通信に比較して到達可能距離が短くなっている。この赤外線通信の搬送波である赤外線は、赤外線ポート179(
図3(B)参照)を通じて投光/受光される。
【0094】
インターフェイス回路150は、演算処理部100と接続されるとともに、スピーカ151、ヘッドホン用アンプ152、マイク153、コントロールパッド154、および、タッチパネル122と接続される。より具体的には、インターフェイス回路150は、スピーカ151、ヘッドホン用アンプ152、マイク153の制御を行なうための音声制御回路(図示しない)と、タッチパネル122の制御を行なうためのタッチパネル制御回路(図示しない)とを含む。
【0095】
スピーカ151は、インターフェイス回路150からの音声信号を増幅して、音抜き孔151Lおよび151Rから音声を出力する。ヘッドホン用アンプ152は、インターフェイス回路150からの音声信号を増幅して、接続されるヘッドホンから音声を出力する。マイク153は、ゲーム装置1に向かって発声されたユーザの音声などを検知して、検知した音声を示す音声信号をインターフェイス回路150に出力する。
【0096】
以上のように、インターフェイス回路150を構成する音声制御回路は、マイク153で検知されたアナログの音声信号に対してA/D(アナログ/デジタル)変換を行い、その結果得られたデジタルの音声信号を演算処理部100へ出力するとともに、演算処理部100などで生成されたデジタルの音声信号に対してD/A(デジタル/アナログ)変換を行い、その結果得られたアナログの音声信号をスピーカ151および/または接続されるヘッドホンへ出力する。
【0097】
また、インターフェイス回路150を構成するタッチパネル制御回路は、タッチパネル122からの検出信号に応答して、ユーザが入力操作(ポインティング操作)した位置を示すタッチ位置データを生成して演算処理部100へ出力する。
【0098】
ゲームカードスロット170およびメモリカードスロット172は、それぞれ、演算処理部100と接続される。ゲームカードスロット170は、演算処理部100からの指令に応答して、コネクタを介して、装着されたゲームカード171との間でデータの読出しおよび書込みを行なう。メモリカードスロット172は、演算処理部100からの指令に応答して、コネクタを介して、装着されたメモリカード173との間でデータの読出しおよび書込みを行なう。
【0099】
下側LCD120および上側LCD110は、演算処理部100からの指令に従って、それぞれ画像を表示する。ゲーム装置1の典型的な使用形態においては、下側LCD120に各種操作を受付けるための画像が表示されるとともに、上側LCD110では、立体視表示が行われる。
【0100】
<E.立体視表示を提供するための構成>
次に、本実施の形態に従うゲーム装置1において立体視表示を提供するための構成について説明する。
【0101】
図5は、本発明の実施の形態に従うゲーム装置1での表示制御を実現するための電気的構成を示すブロック図である。
図6は、
図5に示す上側LCD110の断面模式図である。
【0102】
図5を参照して、演算処理部100は、CPU102に加えて、主として、上側LCD110および下側LCD120においてそれぞれ画像を表示するための処理(画像処理)を行なうためのGPU104を含む。GPU104は、画像処理に特化した処理回路を有しており、CPU102からの指令に応答して、上側LCD110および下側LCD120にそれぞれ表示すべき画像を逐次生成する。これらの画像は、上側LCD110用のVRAM106a、および、下側LCD120用のVRAM106bへそれぞれ転送される。
【0103】
このとき、上側LCD110において立体視表示を行なうための一対の画像(左目用画像および右目用画像)は互いに独立してVRAM106aへ書き込まれる。これに対して、下側LCD120においては平面表示(非立体視表示)が行われるので、単一の画像がVRAM106bへ書き込まれる。
【0104】
上側LCD110は、LCDコントローラ111と、LCDパネル112と、バリア液晶113とを含む。これに対して、下側LCD120は、LCDコントローラ121と、LCDパネル123とを含む。
【0105】
さらに、上側LCD110の構造について説明する。
図6には、上側LCD110の典型例として、パララックスバリア方式の液晶表示デバイスの構造を示す。上側LCD110は、ガラス基板118とガラス基板119との間に配置されたLCDパネル112を含む。
【0106】
LCDパネル112は、左目用画素群112Lおよび右目用画素群112Rを含む。ガラス基板118のガラス基板119の側とは反対側に、図示しないバックライトが設けられており、このバックライトからの光は左目用画素群112Lおよび右目用画素群112Rに向けて照射される。そして、左目用画素群112Lおよび右目用画素群112Rは、バックライトからの光を調節するための空間光変調器として機能する。ここで、左目用画素群112Lの各画素と右目用画素群112Rの各画素とは交互に配置される。
【0107】
ガラス基板118の左目用画素群112Lおよび右目用画素群112Rに接する側とは反対の側に、視差光学系であるバリア液晶113が設けられる。このバリア液晶113には、複数のスリット114が所定間隔で行列状に設けられている。各スリット114の中心位置を通り、かつガラス基板118の面に対して垂直方向の軸を基準として、左目用画素群112Lおよび右目用画素群112Rとが対称的に配置される。このように、各スリットに対応付けられる左目用画素群112Lおよび右目用画素群112Rの各組について、スリットとの間の位置関係を適切に設計することで、ユーザは、その左目で左目用画素群112Lだけを視認するとともに、その右目で右目用画素群112Rだけを視認することになる。
【0108】
バリア液晶113に含まれる各スリット114が、ユーザの右目および左目による視界をそれぞれ対応する角度に制限する。その結果、ユーザの左目の視線AXLには左目用画素群112Lのみが存在し、一方、ユーザの右目の視線AXRには右目用画素群112Rのみが存在することになる。
【0109】
ここで、左目用画素群112Lおよび右目用画素群112Rに、所定の視差を有する一対の画像を表示させることで、所定の視差を有する画像をユーザに提示することができる。このような所定の視差を有する一対の画像を表示することで、ユーザから見れば、オブジェクトを立体的に見ていると感じることになる。以下では、バリア液晶113のユーザ側の表面、すなわち、この画像が実際に表示される面を(上側LCD110の)表示面とも称す。
【0110】
より具体的には、
図5に示すように、GPU104は、左目用画像および右目用画像をVRAM106aのアドレスを指定して順次書き込む。LCDコントローラ111は、VRAM106aに書き込まれた左目用画像および右目用画像を構成する列方向の画像が、LCDパネル112に交互に並んで表示されるように、VRAM106aの対象となるアドレスから各列の画像データを順次読出して、LCDパネル112を駆動する。
【0111】
なお、上側LCD110では、画像を平面表示、すなわち、非立体視表示することもできる。この場合には、LCDコントローラ111に対して指令を与えることで、バリア液晶113を無効化する方法と、表示に用いられる左目用画像と右目用画像との間の視差を実質的にゼロとする方法とが存在する。
【0112】
前者の方法の場合、バリア液晶113が提供する複数のスリット114が無効化されるので、ユーザの左目および右目には、実質的に、左目用画素群112Lおよび右目用画素群112Rからの光が入射することになる。なお、この場合には、ユーザから見た解像度は、立体視表示のときの解像度に比べて、実質的に2倍となる。
【0113】
後者の方法の場合、ユーザの左目で視認される画像と、右目で視認される画像とが実質的に同一に制御されるので、ユーザは、同じ画像を左目および右目で視認することになる。
【0114】
一方、下側LCD120においては、非立体視表示がなされる。GPU104は、表示すべき画像をVRAM106bのアドレスを指定して順次書込み、LCDコントローラ121は、VRAM106bに書き込まれた画像を順次読出して、LCDパネル123を駆動する。
【0115】
なお、
図6には、立体視表示が可能な表示部の典型例として、パララックスバリア方式の表示デバイスを例示したが、例えば、レンチキュラ方式の表示デバイスなどを採用することもできる。これらの方式は、左目用画像の表示エリアと右目用画像の表示エリアとが一定のパターンで(典型的には交互に)配置される。
【0116】
なお、シャッタメガネ(時分割方式)を利用した方法のように、左目用画像の表示エリアと右目用画像の表示エリアとを共通としつつ、左目用画像と右目用画像とを交互に表示する形態を採用することもできる。
【0117】
<F.立体視表示/平面表示の実現例>
次に、上側LCD110におけるオブジェクトの立体視表示、および、下側LCD120におけるオブジェクトの平面表示の実現例について説明する。以下では、ゲーム装置における典型的な実現例として、3次元仮想空間に配置されたオブジェクトを、仮想カメラを用いて(仮想的に)撮像することで画像を生成し、この生成された画像を表示するという方法について説明する。
【0118】
図7は、本発明の実施の形態に従うゲーム装置1における表示制御に用いられる画像を生成する方法の一例について説明するための図である。
図8は、
図7に示す方法によって生成された画像を用いて立体視表示を実現する方法について説明するための図である。
【0119】
図7(A)を参照して、3次元仮想空間にオブジェクトOBJとして「りんご」が配置されており、この「りんご」を一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)で撮像することで、上側LCD110において「りんご」を立体視表示するための一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)が生成される。また、この「りんご」を単一の仮想カメラ400C(典型的には、左仮想カメラ400Lと右仮想カメラ400Rとの間の中点位置に配置される)で撮像することで、下側LCD120において「りんご」を平面表示するための単一の画像(平面表示用画像PIMGC)が生成される。
【0120】
なお、3次元仮想空間において、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)は水平方向(以下、X方向と称す)に整列配置されているものとする。このとき、垂直方向をY方向と称し、それぞれの仮想カメラのカメラ方向(撮像の光軸方向)をZ’方向と称す。なお、3次元仮想空間におけるX方向およびY方向は、それぞれ表示面の横方向(X方向)および縦方向(Y方向)に対応する。また、3次元仮想空間におけるZ’方向は、オブジェクトの奥行き値に相当する。各オブジェクトについてのZ’方向における位置(奥行き値)は、立体視表示したときの立体深度を決定する。すなわち、基準オブジェクト(奥行き値が「0」)からより離れた位置(より大きな奥行き値)に配置されるオブジェクトほど、立体深度がより大きく表示されることになる。このように奥行き値を設定することによって、一対の仮想カメラによって撮像された一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)を用いて立体視表示した場合に、3次元仮想空間において奥行き値が大きいオブジェクトほど相対的に大きな立体深度を有することになる。
【0121】
すなわち、立体視表示される各オブジェクトの立体深度の絶対値は、3次元仮想空間におけるZ’方向での位置(奥行き値)と、一対の仮想カメラ間の距離d1とによって決定される。
【0122】
図7(B)に示す一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)は、実質的に同一の表示領域に表示される。すなわち、
図6に示すようなレンチキュラ方式では、左目用画素と右目用画素とが交互に配置されることで、対象の左目用画像PIMGLおよび右目用画像PIMGRは、表示面の横方向に空間的に交互に表示されることになる。あるいは、シャッタメガネ(時分割方式)では、同一の表示面を時間的に分割することで、対象の左目用画像PIMGLおよび右目用画像PIMGRが時間的に交互に表示されることになる。
【0123】
したがって、
図7(B)に示す一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)のうち、視差がゼロとなる領域は、ユーザから見れば表示面に存在しているように見える。すなわち、目的の領域についての視差をゼロとすることで、ユーザは、その領域に含まれるオブジェクトが上側LCD110の表示面あるいは表示面付近に位置しているように感じる。
【0124】
一方、
図7(B)に示す平面表示用画像PIMGCは、その全体が下側LCD120に表示される。そのため、ユーザから見れば通常の平面表示となる。
【0125】
上側LCD110において立体視表示されるオブジェクトの立体深度(奥行き位置、すなわち飛び出し量または引込み量)は、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)間の距離d1に依存して変化する。すなわち、一対の仮想カメラ間の距離d1が大きくなるほど、それぞれの仮想カメラが撮像する撮像範囲(視野)の間の差が大きくなるので、一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)の間に生じる視差も大きくなる。
【0126】
より具体的には、
図8(A)に示すように、オブジェクトOBJについて視差が増大する方向に、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更すると、ユーザは、上側LCD110の表示面よりユーザ側にオブジェクトOBJが存在しているように感じる。いわば、ユーザは、オブジェクトOBJの像が表示面から「飛び出し」ているように視認する。
【0127】
これに対して、
図8(B)に示すように、オブジェクトOBJについて視差が減少する方向に、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更すると、ユーザは、上側LCD110の表示面よりユーザとは反対側にオブジェクトOBJが存在しているように感じる。いわば、ユーザは、オブジェクトOBJの像が表示面へ「引込み」されているように視認する。
【0128】
このように、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を変更することで、ユーザが視認する立体深度を適宜調整することができる。
【0129】
なお、代替の方法として、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係を固定した上で、それぞれ撮像される一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)を取得し、さらに、上側LCD110の表示面での、一対の画像の間の相対的な表示位置を変更することで、ユーザが視認する立体深度を調整することもできる。さらに、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)の間の位置関係および一対の画像(左目用画像PIMGLおよび右目用画像PIMGR)の間の相対的な表示位置の両方を変更することで、ユーザが視認する立体深度を適宜調整してもよい。
【0130】
<G.アプリケーション>
次に、本実施の形態に従う表示制御プログラムが提供するオブジェクトの表示制御機能について説明する。
【0131】
図9は、本発明の実施の形態に従うゲーム装置1において提供されるユーザインターフェイスの一例を示す図である。
図10は、
図9に表示されるオブジェクトの立体深度(飛び出し量)を説明するための図である。
【0132】
図9には、本実施の形態に従う表示制御機能を含むアプリケーションの一例として、ユーザがゲーム装置1の入力部を操作することで、ユーザキャラクタ300を移動させて各種の冒険などを体験するゲームを示す。このゲームでは、仮想的な世界に各種のオブジェクトが配置されており、ユーザキャラクタ300の位置に応じて、ディスプレイに表示(レンダリング)される内容が順次変っていくものとする。後述するように、このような表示を実現するための典型的な方法として、仮想空間に対象となるオブジェクトを配置するとともに、ユーザキャラクタ300をユーザの操作に応じた位置に配置する。そして、ユーザキャラクタ300の位置に連動して配置された仮想カメラを用いて、仮想空間のオブジェクトを撮像することで、表示に用いられる画像が生成される。
【0133】
上述したように、立体視表示が可能な上側LCD110でこれらの画像を立体的に表示する場合には、一対の仮想カメラを用いて撮像することで、左目用画像および右目用画像を生成し、これらの一対の画像(ステレオ画像)を上側LCD110に出力する。これにより、ユーザは、仮想カメラ間の距離d1に依存する立体深度(立体感)をもって、立体的にオブジェクトを視認することができる。
【0134】
図9には、これらのゲームの一場面を上側LCD110に表示した状態を例示する。この
図9に示すゲームでは、ユーザキャラクタ300は仮想的な世界における地面を移動し、この地面より高い位置に、アイテムを示すオブジェクト310が「浮いた状態」で存在しているものとする。
図9(A)には、この浮いた状態のオブジェクト310を示す。
図9(A)に示す状態では、仮想空間において仮想カメラにより近い位置にオブジェクト310が存在し、オブジェクト310の奥側にユーザキャラクタ300が存在しているものとする。そのため、仮想カメラから見ると、ユーザキャラクタ300がオブジェクト310の陰になってしまい、表示されていない。また、オブジェクト310は、上側LCD110の表示面(ディスプレイ面)から手前に飛び出して見える。
【0135】
図9(B)には、
図9(A)に示す状態から、ユーザキャラクタ300が仮想的な世界のさらに奥に移動した状態を示す。この
図9(B)に示す状態では、仮想空間におけるオブジェクト310は仮想カメラにより接近している。そのため、オブジェクト310をそのまま立体視表示した場合には、
図9(A)における立体深度(飛び出し量)に比較して、より大きな飛び出し量をもって表示されることになる。
【0136】
本実施の形態に従う表示制御機能では、このように立体視表示した場合に現れるオブジェクトの立体深度(飛び出し量)が所定値を超える場合には、当該オブジェクトをそのまま立体視表示するのではなく、当該オブジェクトを表示範囲外へ移動させて表示されていない状態にする。すなわち、
図9(A)に示すように、オブジェクト310が浮いて存在している状態から、
図9(B)に示すように、オブジェクト310が画面下方向へ移動して、
図9(C)に示すように、表示されなくなる。
【0137】
一方、ユーザキャラクタ300が仮想的な世界の手前側に戻り、かつ、オブジェクト310を立体視表示した場合に生じる立体深度(飛び出し量)が所定値を下回る場合には、オブジェクト310は本来の表示位置に表示される。このとき、
図9(A)〜
図9(C)の動作と逆に、オブジェクト310が画面の外周側から中心部へ向けて移動する演出が行なわれる。
【0138】
オブジェクト310の立体深度(飛び出し量)に関して説明すると、
図9(A)に示す状態のオブジェクト310は、
図10(A)に示すように、上側LCD110の表示面(ディスプレイ面)から距離z1だけ手前に飛び出して見える。一方、
図9(B)に示す状態のオブジェクト310は、
図10(B)に示すように、上側LCD110の表示面(ディスプレイ面)から距離z2(>z1)だけ手前に飛び出して見える。この場合には、オブジェクト310は、この距離z2を保ったまま表示範囲外へ移動する。また、オブジェクト310を再表示する場合も、立体深度(飛び出し量)を保ったままオブジェクト310は移動表示される。
【0139】
このように、オブジェクト310を表示範囲外へ移動させて表示されてない状態にする場合、および、表示されてないオブジェクト310を表示させて表示位置へ移動させる場合、のいずれにおいても、オブジェクト310に現れる立体深度(飛び出し量)は、基本的には維持される。このような立体深度(飛び出し量)の調整は、上側LCD110で出力される左目用画像および右目用画像の間でのオブジェクト310についての視差の調整によって実現される。これにより、オブジェクト310が立体視表示される際の立体深度(飛び出し量)を適切に保つことができる。
【0140】
すなわち、本実施の形態に従うゲーム装置1は、オブジェクト310を上側LCD110(表示装置)に表示した場合に生じる視差を算出する。この視差は、オブジェクト310の立体深度(飛び出し量)の度合いを示す。そして、ゲーム装置1は、算出された視差に応じて、表示されているオブジェクト310を表示範囲外へ移動させて表示されていない状態にする、および、表示されていないオブジェクト310を表示されている状態にした上でオブジェクト310の元の表示位置まで移動させる、の少なくとも一方を行なう。このとき、移動中のオブジェクトに生じる視差を実質的に維持するように、左目用画像および右目用画像が生成される。
【0141】
なお、ユーザの操作によってユーザキャラクタ300の位置が小刻みに変化する場合も多いと想定される。このような操作によって、オブジェクト310が表示/非表示の切換および移動を頻繁に繰返すようなことを防止するため、表示されているオブジェクト310を表示されていない状態に変更する場合の立体深度(飛び出し量)についての条件と、表示されていないオブジェクト310を表示させる場合の立体深度(飛び出し量)についての条件とを異ならせることが好ましい。
【0142】
すなわち、ゲーム装置1は、表示されているオブジェクトに生じる視差が第1条件を満たしたことに応答して、当該オブジェクトを表示範囲外へ移動させ、表示されていないオブジェクトが上側LCD110(表示装置)に表示されれば生じる視差が第1条件とは異なる第2条件を満たしたことに応答して、当該オブジェクトを表示範囲内へ移動させる。より具体的には、ゲーム装置1は、表示されているオブジェクト31に生じる立体深度(左目用画像と右目用画像との間の視差)が第1所定値を超えたことに応答して、オブジェクト310を表示されていない状態にする一方で、表示されていないオブジェクト310を上側LCD110(表示装置)に表示すれば生じる視差が第1所定値より小さい第2所定値を下回ったことに応答して、オブジェクト310を表示する。
【0143】
<H.立体視用の画像生成処理について>
上述したようなオブジェクト310に関する演出を実現するための画像生成処理について説明する。
【0144】
図11および
図12は、本発明の実施の形態に従うゲーム装置1での立体視表示を実現するための画像生成処理を説明するための図である。
【0145】
図11を参照して、仮想空間(xyz座標系)にオブジェクト310が配置されるとともに、一対の仮想カメラ(左仮想カメラ400Lおよび右仮想カメラ400R)を用いて、オブジェクト310を撮像する。なお、仮想空間には、
図9に示すゲームに必要な各種のオブジェクトが配置されているものとする。一対の仮想カメラがオブジェクト310を撮像することで、左目用画像および右目用画像が生成される。なお、仮想空間における一対の仮想カメラの位置は、ユーザ操作に応じて順次変更される。
図9に示すゲームの例では、ユーザキャラクタ300の位置に応じて一対の仮想カメラの位置も更新され、この結果、一対の仮想カメラとオブジェクト310との相対的な位置関係についても、順次更新される。
【0146】
上述したような、オブジェクト310を上側LCD110(表示装置)で立体表示した場合に生じる視差は、
図11に示す仮想空間における一対の仮想カメラとオブジェクト310との相対的な位置関係によって規定できる。より具体的には、上側LCD110にオブジェクト310が立体視表示される際の視差は、一対の仮想カメラとオブジェクト310との間の距離L1に反比例する。すなわち、距離L1が小さくなるほど、上側LCD110に立体視表示されるオブジェクト310に生じる視差が大きくなる。
【0147】
そのため、本実施の形態においては、上側LCD110に立体視表示されるオブジェクト310に生じる視差を評価(算出)する方法の一つとして、一対の仮想カメラとオブジェクト310との間の距離L1の大きさを利用する。
【0148】
もちろん、このような3次元仮想空間における一対の仮想カメラとオブジェクト310との間の距離ではなく、他の方法を用いて視差を評価(算出)することもできる。たとえば、立体視表示した場合に生じる視差がゼロとなる3次元仮想空間上の面に対するオブジェクト310の距離に基づいて、視差を評価(算出)することもできる。あるいは、上側LCD110で表示される、左目用画像と右目用画像との間のずれ量(画素量)に基づいて、視差を評価(算出)することもできる。あるいは、3次元仮想空間における左仮想カメラ400Lと右仮想カメラ400Rとの間の距離に基づいて、視差を評価(算出)することもできる。
【0149】
本実施の形態においては、オブジェクト310が上述したような表示/非表示の切換対象である場合には、オブジェクト310を上側LCD110で立体視表示されるに生じる視差を評価するために、一対の仮想カメラとオブジェクト310との間の距離L1(すなわち、上側LCD110にオブジェクト310が立体視表示される際の視差)が逐次算出される。この距離L1は、左仮想カメラ400Lの撮像面および右仮想カメラ400Rの撮像面を含む基準面410の法線上の距離を意味する。
【0150】
そして、仮想空間内において一対の仮想カメラを含む平面である基準面410からオブジェクト310までの距離を所定値と比較することで、表示されているオブジェクトを表示範囲外へ移動させる処理、および/または、表示されていないオブジェクトを表示範囲内へ移動させる処理が実行される。
【0151】
より具体的には、立体視表示しているオブジェクト310に生じている視差が所定値以上となると、すなわち、基準面410からオブジェクト310までの距離L1が予め定められた値(以下、表示状態から非表示状態への切り換えに係る「判定値A」とも称す。)以下になると、
図11および
図12に示すように、オブジェクト310を一対の仮想カメラの撮像範囲外へ移動させる。
【0152】
オブジェクト310の移動方向は、基準面410に平行な方向に設定される。これは、上側LCD110に立体視表示される移動中のオブジェクト310に生じる立体深度(左目用画像と右目用画像との間の視差)を維持するためである。すなわち、仮想空間内において、基準面410に平行な向きにオブジェクト310を移動させることで、オブジェクト310を移動表示させる。
【0153】
より具体的には、仮想空間における基準面410に平行な任意のベクトルをv=(Δx1,Δy1,Δz1)とすると、座標値(x1,y1,z1)に存在するオブジェクト310は、座標値(x1+k×Δx1,y1+k×Δx1,z1+k×Δx1)に移動する。なお、乗数kは、オブジェクト310を一対の仮想カメラの撮像範囲外に移動させるための係数であり、この値を時間的に変化させることで、オブジェクト310の位置が順次更新される。
【0154】
言い換えれば、ベクトルvは、左仮想カメラ400Lおよび右仮想カメラ400Rのそれぞれのカメラ方向に対して直交するベクトルである。ベクトルvは、基準面410に平行であれば任意の向きをとることができるが、後述するように、上側LCD110の表示面内におけるオブジェクト310の位置などに応じて、ベクトルvの向きを決定してもよい。
【0155】
一方、表示されていないオブジェクト310を表示に切り換える場合には、表示されていない状態に切り換えられる前のオブジェクト310の位置(座標値)に基づいて判断される。すなわち、座標値(x1,y1,z1)に存在していたオブジェクト310は、基準面410からその本来の座標値(x1,y1,z1)までの距離L1に基づいて、オブジェクト310を表示した場合に生じる視差が評価される。
【0156】
より具体的には、オブジェクト310が立体視表示されれば生じる視差が所定値以下となると、すなわち、基準面410から本来のオブジェクト310の位置までの距離L1が予め定められた値(以下、非表示状態から表示状態への切り換えに係る「判定値B」(但し、判定値B>判定値Aである)とも称す。)以上になると、オブジェクト310は、一対の仮想カメラの撮像範囲内へ移動する。
【0157】
このとき、オブジェクト310は、座標値(x1+k×Δx1,y1+k×Δx1,z1+k×Δx1)から座標値(x1,y1,z1)へ移動する。これは、基準面410に平行なベクトルvに従ってオブジェクト310を徐々に(連続的に)移動させることで、上側LCD110に立体視表示される移動中のオブジェクト310に生じる立体深度(左目用画像と右目用画像との間の視差)を維持するためである。
【0158】
上述したように、ベクトルvは、基準面410に平行な方向なベクトルであり、基準面410は、一対の仮想カメラの位置および/または向き(視点方向)に依存して決定される。そのため、表示されていないオブジェクト310を表示状態に切り換えて移動させる場合には、移動開始直前の基準面410に依存するベクトルvを決定し、続いて、オブジェクト310の軌跡を決定することになる。そのため、一対の仮想カメラの撮像範囲外に移動後のオブジェクト310の座標値は、基本的には保持する必要がない。
【0159】
もちろん、オブジェクト310の移動後の座標値を保持するような処理を含めてもよいが、この場合には、基準面410の更新毎に、オブジェクト310の移動後の座標値を逐次更新する必要がある。
【0160】
なお、厳密に言えば、オブジェクト310の移動中に一対の仮想カメラの位置および/または向き(視点方向)が変化した場合には、基準面410も変化することになる。そのため、オブジェクト310を移動する向き(ベクトルv)についても、オブジェクト310の移動開始時の初期値とは異なる値に更新する必要がある。そうしなければ、移動中のオブジェクト310を上側LCD110(表示装置)に表示した場合に生じる視差が一定に維持されなくなるからである。
【0161】
そのため、ベクトルvを一対の仮想カメラの位置および/または向き(視点方向)に依存して逐次更新するとともに、最新のベクトルvを用いて、オブジェクト310の位置を逐次更新するようにしてもよい。
【0162】
しかしながら、オブジェクト310が移動表示される時間が相対的に短い場合には、移動開始時に算出したベクトルvを用いて、移動完了までの軌跡を算出してもよい。この場合には、移動中のオブジェクト310を上側LCD110(表示装置)に表示した場合に生じる視差に若干の変動が生じ得るが、オブジェクト310の移動に要する時間が相対的に短ければ、ユーザに与える影響は無視できる。
【0163】
そのため、本実施の形態に係る、移動中のオブジェクトに生じる視差を「実質的に」維持するという記載は、立体視表示されるオブジェクト310の視差を厳密に一定に保つ場合と、一対の仮想カメラの位置および/または向きの変化に影響されて、立体視表示されるオブジェクト310の視差が変動し得る場合とを含む概念である。
【0164】
<I.オブジェクトの移動例>
次に、オブジェクト310の移動例について説明する。
【0165】
図13は、オブジェクト310の移動例を説明するための図である。
図14は、オブジェクト310の移動速度を説明するための図である。
【0166】
図13を参照して、上側LCD110(表示装置)の表示面におけるオブジェクト310の表示位置に応じて、オブジェクト310を移動させる向きを異ならせてもよい。具体的には、
図13(A)に示すように、オブジェクト310が表示面の上方に存在する場合には、画面上側へ移動するようにしてもよい。一方、
図13(B)に示すように、オブジェクト310が表示面の下方に存在する場合には、画面下側へ移動するようにしてもよい。いずれの場合も、非表示から表示に切り換えられた後は、同一の経路を反対向きに移動する。
【0167】
なお、オブジェクト310の移動方向は、画面上下方向であってもよいし、画面左右方向であってもよいが、レンチキュラ方式の表示デバイスを採用した場合には、画面上下方向が好ましい。
【0168】
あるいは、オブジェクト310の表示位置から表示範囲外までの距離に応じて、オブジェクト310を移動させる向きを異ならせてもよい。すなわち、再度
図13(A)に示す例では、オブジェクト310から画面上側までの距離が最も短いので、この移動距離が最も短くなる方向へオブジェクト310が移動する。同様に、
図13(B)に示す例では、オブジェクト310から画面下側までの距離が最も短いので、この移動距離が最も短くなる方向へオブジェクト310が移動する。
【0169】
このように、オブジェクト310の表示位置から表示範囲外までの移動距離が最も短くなる向きに、オブジェクト310を移動させてもよい。
【0170】
なお、オブジェクト310は、一定の速度で移動させてもよいが、何らかの移動パターン(速度パターン)をもたせてもよい。たとえば、
図14に示すように、時間の経過に伴って、または、移動した距離に伴って、オブジェクト310の移動速度を変化させてもよい。このようなオブジェクト310の移動速度を変化させることによって、より演出の効果を高めることができる。
【0171】
上述したような、オブジェクト310の移動の向きや速度に関するパターンは、全てのオブジェクトについて共通に設定してもよいし、オブジェクト310の形状や大きさなどに応じて、オブジェクト毎に設定してもよい。
【0172】
<J.制御ブロック図>
図15は、本発明の実施の形態に従うゲーム装置1において実現される機能ブロック図である。
図15に示す各機能ブロックは、演算処理部100(CPU102)がゲームカード171などに格納されている表示制御プログラムを読出して実行することで実現される。すなわち、この表示制御プログラムは、立体視表示が可能な上側LCD110(表示装置)を制御する。
【0173】
図15を参照して、演算処理部100は、その機能として、仮想空間メモリ1002と、視差算出部1004と、ゲーム進行部1006と、移動表示部1010と、画像出力部1016とを含む。また、ゲーム装置1の不揮発性メモリ136またはメインメモリ138(
図4)には、キャラクタデータ格納部1008が形成される。
【0174】
仮想空間メモリ1002は、
図11に示すような仮想空間を実現するための構成であり、仮想空間上に配置されるオブジェクトや一対の仮想カメラの情報を保持する。
【0175】
視差算出部1004は、各オブジェクトを上側LCD110(表示装置)に表示した場合に生じる視差を算出する。視差算出部1004は、仮想空間内において一対の仮想カメラを含む平面である基準面からオブジェクトまでの距離に基づいて視差を算出する。より具体的には、視差算出部1004は、仮想空間メモリ1002を参照して、配置されているオブジェクトの位置および大きさについての情報、ならびに、設定されている一対の仮想カメラについての情報を取得し、これらの情報から、一対の仮想カメラからオブジェクトまでの距離、すなわち視差を算出する。視差算出部1004は、算出した視差を移動表示部1010へ出力する。
【0176】
ゲーム進行部1006は、入力部を介したユーザ操作に応答して、ゲームを進行する。具体的には、仮想空間に配置されたオブジェクトの内容を変更したり、新たなオブジェクトを配置したり、オブジェクトを仮想空間から削除したりする。ゲーム進行部1006は、キャラクタデータ格納部1008に格納されているキャラクタデータを選択的に読み出して、仮想空間メモリ1002へ書き込む。このキャラクタデータは、各オブジェクトについての情報などを含む。
【0177】
移動表示部1010は、視差算出部1004によって算出された視差に応じて、上述したような、表示されているオブジェクトを表示範囲外へ移動させる、および、表示されてないオブジェクトを表示範囲内へ移動させる、の少なくとも一方を行なう。移動表示部1010は、移動中のオブジェクトに生じる視差を実質的に維持するように、オブジェクトを移動させる。より具体的には、移動表示部1010は、画像生成部1012と、位置関係更新部1014とを含む。
【0178】
画像生成部1012は、仮想空間内に配置されたオブジェクトを一対の仮想カメラで撮像することで左目用画像および右目用画像を生成する。すなわち、画像生成部1012は、仮想空間メモリ1002を参照して、それぞれの仮想カメラで撮像される範囲をレンダリングすることで、左目用画像および右目用画像を生成する。
【0179】
位置関係更新部1014は、仮想空間内に配置されたオブジェクトと一対の仮想カメラとの間の相対的な位置関係を更新する。位置関係更新部1014は、仮想空間内において、基準面に平行な向きにオブジェクトを移動させることで、オブジェクトを移動表示させる。より具体的には位置関係更新部1014は、入力部を介したユーザ操作に応答して、仮想空間内における一対の仮想カメラの位置を更新するとともに、視差算出部1004により算出される視差がオブジェクトを表示しない状態へ切り換えるための条件を満たした場合に、対象のオブジェクトを一対の仮想カメラの撮像範囲外へ移動させる。
【0180】
このように、移動表示部1010は、表示されているオブジェクトに生じる視差が第1所定値を超えたことに応答して、すなわち、仮想空間において基準面410からオブジェクト310までの距離L1が第1所定値(判定値A)以下になると、当該オブジェクトを非表示にする。一方で、移動表示部1010は、表示されていないオブジェクトを表示装置に表示すれば生じる視差が第1所定値より小さい第2所定値を下回ったことに応答して、すなわち、仮想空間において基準面410からオブジェクト310の本来位置までの距離L1が第2所定値(判定値B)以上になると、当該オブジェクトを表示する。
【0181】
上述したように、表示されているオブジェクト310を表示されていない状態に変更するための条件(判定値A)と、表示されていないオブジェクト310を表示された状態に変更するための条件(判定値B)とを異ならせることが好ましい。より具体的には、判定値Bは、判定値Aよりその値が大きく設定される。
【0182】
画像出力部1016は、左目用画像および右目用画像を立体視表示デバイス(表示装置)に出力する。
【0183】
<K.処理手順>
次に、本実施の形態に従う表示制御プログラムによって実行される処理手順について説明する。
【0184】
図16は、本発明の実施の形態に従うゲーム装置1において実行される処理手順を示すフローチャートである。
図16に示す各フローチャートの各ステップは、典型的には、演算処理部100がゲームカード171などに格納されている表示制御プログラムなどを読出して実行することで提供される。なお、演算処理部100で実行されるプログラムは、単一でなくともよく、基本的なOS(Operating System)を提供するプログラム(あるいは、ファームウェア)とともに、一または複数のアプリケーションが実行されてもよい。さらに、以下に示す処理の全部または一部を複数のハードウェアによって実現してもよい。
【0185】
まず、ユーザが入力部を介してゲームの開始を指示すると、演算処理部100は、ゲームに必要なキャラクタ(ユーザキャラクタ300を含む)や背景といったオブジェクトを仮想空間に配置する(ステップS2)。より具体的には、上述したように、仮想空間メモリ1002(
図15)に各オブジェクトの情報が書き込まれる。
【0186】
続いて、演算処理部100は、一対の仮想カメラを仮想空間に配置する(ステップS4)とともに、一対の仮想カメラの撮像範囲に存在するオブジェクトを撮像することで、左目用画像および右目用画像を生成し、生成した左目用画像および右目用画像を上側LCD110へ出力する(ステップS6)。なお、下側LCD120に表示される画像についても、演算処理部100が生成および出力する。
【0187】
その後、演算処理部100は、ユーザキャラクタ300の移動がユーザによって指示されたか否かを判断する(ステップS8)。すなわち、演算処理部100は、入力部を介してユーザキャラクタ300を移動させるための指令を受信したか否かを判断する。ユーザキャラクタ300の移動がユーザによって指示されていない場合(ステップS8においてNOの場合)には、処理はステップS36へ進む。
【0188】
これに対して、ユーザキャラクタ300の移動がユーザによって指示された場合(ステップS8においてYESの場合)には、演算処理部100は、指示に従って、ユーザキャラクタ300の位置を更新するとともに、ユーザキャラクタ300の更新後の位置に応じて、一対の仮想カメラの位置および/または向き(視点方向)を更新する(ステップS10)。
【0189】
続いて、演算処理部100は、一対の仮想カメラと表示されているオブジェクトとの間の距離、すなわち一対の仮想カメラを含む平面である基準面410からオブジェクト310までの距離L1を算出する(ステップS12)。この距離L1が上側LCD110に各オブジェクトを立体視表示した場合に生じる視差の度合いを示す。なお、仮想空間内に配置されたすべてのオブジェクトを本実施の形態に従う表示制御機能の対象とする必要はなく、特定のオブジェクトのみを対象としてもよい。そのため、ステップS12において、基準面410からの距離が算出されるのは、予め定められた特定のオブジェクトのみとしてもよい。
【0190】
続いて、演算処理部100は、ステップS12において算出された基準面410から表示されているオブジェクトまでの距離L1が判定値A以下であるか否かを判断する(ステップS14)。すなわち、表示されているオブジェクトのうち、その立体深度(立体感)が所定値以上であるものが存在するか否かが判断される。
【0191】
ステップS12において算出された距離L1が判定値A以下である場合(ステップS14においてYESの場合)には、演算処理部100は、一対の仮想カメラの基準面410に基づいて、対象のオブジェクトを仮想空間内で移動させる方向を示すベクトル(上述のベクトルv)を算出する(ステップS16)。このベクトルは、上側LCD110(表示装置)の表示面におけるオブジェクト310の表示位置などに応じて定められる。
【0192】
続いて、演算処理部100は、対象のオブジェクトの位置をステップS16において算出したベクトルに基づいて更新し(ステップS18)、対象のオブジェクトの位置を更新した後の状態で、一対の仮想カメラの撮像範囲に存在するオブジェクトを撮像することで、左目用画像および右目用画像を生成し、生成した左目用画像および右目用画像を上側LCD110へ出力する(ステップS20)。さらに、演算処理部100は、対象のオブジェクトの一対の仮想カメラの撮像範囲外への移動が完了したか否かを判断する(ステップS22)。一対の仮想カメラの撮像範囲外への移動が完了していない場合(ステップS22においてNOの場合)には、ステップS18以下の処理が繰返される。
【0193】
これに対して、一対の仮想カメラの撮像範囲外への移動が完了している場合(ステップS22においてYESの場合)には、処理はステップS24へ進む。このとき、演算処理部100は、対象のオブジェクトについて、表示状態から非表示状態へ切り換えられたことを示す情報(フラグなど)を付加する。
【0194】
一方、ステップS12において算出された基準面410から表示されているオブジェクトまでの距離L1が判定値A以下ではない場合(ステップS14においてNOの場合)には、上述のステップS16〜S22の処理はスキップされる。
【0195】
続いて、演算処理部100は、一対の仮想カメラと仮想空間内の表示されていないオブジェクトの本来の表示位置との間の距離、すなわち一対の仮想カメラを含む平面である基準面410からオブジェクト310の本来の位置までの距離L1を算出する(ステップS24)。この距離L1が上側LCD110に各オブジェクトを立体視表示した場合に生じる視差の度合いを示す。このとき、距離の算出対象は、先に非表示状態に変更されたオブジェクトのみとなる。このような距離の算出対象は、表示状態から非表示状態へ切り換えられたことを示す情報(フラグなど)に基づいて決定される。
【0196】
続いて、演算処理部100は、ステップS24において算出された基準面410から表示されていないオブジェクトの本来の表示位置までの距離L1が判定値B以上であるか否かを判断する(ステップS26)。すなわち、表示されていないオブジェクトのうち、その立体深度(立体感)が所定値以下であるものが存在するか否かが判断される。
【0197】
ステップS24において算出された距離L1が判定値B以上である場合(ステップS26においてYESの場合)には、演算処理部100は、一対の仮想カメラの基準面410に基づいて、対象のオブジェクトを仮想空間内で移動させる方向を示すベクトル(上述のベクトルv)を算出する(ステップS28)。このベクトルは、上側LCD110(表示装置)の表示面におけるオブジェクト310の表示位置などに応じて定められる。
【0198】
続いて、演算処理部100は、対象のオブジェクトの位置をステップS28において算出したベクトルに基づいて更新し(ステップS30)、対象のオブジェクトの位置を更新した後の状態で、一対の仮想カメラの撮像範囲に存在するオブジェクトを撮像することで、左目用画像および右目用画像を生成し、生成した左目用画像および右目用画像を上側LCD110へ出力する(ステップS32)。さらに、演算処理部100は、対象のオブジェクトの本来的な表示位置への移動が完了したか否かを判断する(ステップS34)。対象のオブジェクトの本来的な表示位置への移動が完了していない場合(ステップS34においてNOの場合)には、ステップS30以下の処理が繰返される。
【0199】
これに対して、対象のオブジェクトの本来的な表示位置への移動が完了している場合(ステップS34においてYESの場合)には、処理はステップS36へ進む。
【0200】
一方、ステップS24において算出された基準面410から表示されていないオブジェクトの本来の位置までの距離L1が判定値B以上ではない場合(ステップS26においてNOの場合)には、上述のステップS28〜S34の処理はスキップされる。
【0201】
そして、演算処理部100は、ユーザが入力部を介してゲームの終了を指示したか否かを判断する(ステップS36)。ユーザが入力部を介してゲームの終了を指示した場合(ステップS36においてYESの場合)には、処理は終了する。これに対して、ユーザが入力部を介してゲームの終了を指示していない場合(ステップS36においてNOの場合)には、ステップS8以下の処理が繰返される。
【0202】
なお、
図16に示す処理手順には、表示されているオブジェクトを表示されていない状態に切り換える場合の処理と、表示されていないオブジェクトを表示に切り換える場合の処理とをそれぞれ別に行なう例を示したが、これらの処理を並列的に行なってもよい。この場合には、一対の仮想カメラと表示されているおよび表示されていないすべてのオブジェクトとの間の距離を一括して算出し、それぞれ算出された距離が所定条件を満足しているか否かを判断すればよい。そして、いずれかの条件を満足した場合には、対応する処理が実行される。
【0203】
図16に示す処理手順では、ステップS6,S20,S32において、左目用画像および右目用画像を表示装置に出力する処理が実行される。また、ステップS12,S24において、オブジェクトを表示装置に表示した場合に生じる視差を算出する処理が実行される。また、ステップS14〜S22において、算出された視差に応じて、表示されているオブジェクトを表示範囲外へ移動させて表示されていない状態にする処理が実行される。また、ステップS26〜S34において、算出された視差に応じて、表示されていないオブジェクトを表示されている状態にした上で当該オブジェクトの表示位置まで移動させる処理が実行される。これらのオブジェクトを移動表示する処理では、移動中のオブジェクトに生じる視差を実質的に維持するように、左目用画像および右目用画像が生成される。
【0204】
<L.その他の形態>
上述の実施の形態においては、3次元仮想空間内においてオブジェクトを移動させる例について示したが、オブジェクトの移動とは、表示面上での移動についても含むものである。
【0205】
上述の実施の形態においては、一連の処理が単一のゲーム装置1において実行される場合を説明したが、上記一連の処理が複数の主体に分散して実現されてもよい。例えば、ゲーム装置1と、ネットワークを介してゲーム装置1と通信可能なサーバ装置とを含む情報処理システムにおいて、上記一連の処理のうち一部がサーバ装置によって実行されてもよい。さらに、ゲーム装置1と、ゲーム装置1へネットワークを介して通信可能なサーバ装置とを含む情報処理システムにおいて、上記一連の処理のうち主要な部分がサーバ装置によって実行され、ゲーム装置1では一部の処理が実行されてもよい。
【0206】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。