以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素を均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
(実施形態1)
図1は、本発明の実施形態に係るゲーム装置が実現される典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、を備える。
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のゲーム装置等が実現される。
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行う、また、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
インターフェース104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。例えばコントローラ105には、上下左右を示す操作入力を行うのに利用される方向ボタンや、決定操作、取消操作、メニュー表示などの指示入力を行うためのボタンが、その表面の所定の位置に配置される。これら各ボタンには圧力センサが配備され、いずれのボタンが押圧操作されているかを検知することができる。ユーザは、コントローラ105に配置されたこのような各ボタンを押圧操作することで、情報処理装置100への操作指示を入力する。
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画したりすることが可能である。フォント情報は、ROM 102に記録されているが、DVD−ROMに記録された専用のフォント情報を利用することも可能である。
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
モニタ111は、画像処理部107に接続され、CPU 101と画像演算プロセッサが協調動作することにより、画像情報を表示する。モニタ111は、LCD(Liquid Crystal Display)、有機ELディスプレイ(organic Electro-Luminescence display)等により構成され、一般的な置き型ディスプレイの形式又は装着型のHMDの形式で用いられる。
カメラ112は、インターフェース104を介して接続され、現実世界を撮影し、撮影した映像を電気信号に変換する。CCD(Charge Coupled Device)カメラ、CMOS(Complimentary MOS)センサ等から構成される。カメラ112は、ユーザが装着してもよく、置き型ディスプレイ等に備え付けてもよい。
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータを利用することもできる。
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
例えば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、及び、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
図2は、本発明のゲーム装置に係る概要構成を示す模式図である。本発明のゲーム装置200は、典型的には上述した情報処理装置100によって実現される。以下、本図を参照して概要構成を説明する。
ゲーム装置200は、撮影部201、判定部202、生成部203、表示部204を備える。なお、ゲーム装置200は、RAM 103等の機能により現在時刻やプレイヤからの入力の内容等を記憶するための記憶部や、画像表示部107が画像をモニタ111へ出力する際の同期タイミングを利用することで時間を計測するための計時部等も適宜備える。
撮影部201は、ユーザを撮影して、撮影結果画像を出力する。すなわち、撮影部201は、画面に表示されるゲーム画像を見ながらプレイしているユーザを撮影し、撮影されたユーザの様子を表す撮影結果画像を、RAM 103等の記憶部等を介して判定部202へと出力する。このような撮影部201は、例えばCPU 101がROM 102やRAM 103と協働しながら、カメラ112を制御することで実現される。
判定部202は、撮影結果画像に含まれるユーザの姿のうち、所定の部位の位置もしくは大きさに基づいて、当該ユーザに立体視画像を提示すべきか否かを判定する。すなわち、判定部202は、撮影部201によって撮影されたユーザの様子を表す画像から、ユーザの体の部位の位置や大きさの情報を取得する。そして、取得された情報に基づいて、立体視画像を提示すべきか否かの判定を行い、当該判定を生成部203へ提供する。このような判定部202は、例えばCPU 101がROM 102やRAM 103等と協働することで実現される。
生成部203は、判定部202により立体視画像を提示すべきと判定された場合、仮想空間内に配置されるオブジェクトを表す立体視画像を生成し、判定部202により立体視画像を提示すべきでないと判定された場合、当該オブジェクトを表す平面視画像を生成する。すなわち、生成部203は、記憶部等に記憶された仮想空間内に配置されるオブジェクトを表す画像を生成する。このとき、生成部203は、判定部202によってなされた判定結果に基づいて、立体視画像もしくは平面視画像を生成し、表示部204へ提供する。このような生成部203は、例えばCPU 101がROM 102やRAM 103、さらに画像表示部107と協働することによって実現される。
表示部204は、生成された立体視画像もしくは平面視画像を画面に表示する。すなわち、表示部204は、生成部203によって生成された画像を、例えばディスプレイに表示して、プレイヤに提供する。このような表示部204は、例えばCPU 101がROM 102やRAM 103と協働しながら画像表示部107を制御し、画像情報をモニタ111に出力することによって実現される。
図3は、本発明の実施形態に係る仮想空間内の様子を示す図である。本実施形態におけるゲーム装置200は、本図に示されるような仮想空間300を、例えばその記憶部に記憶する。仮想空間300内には、ゲームを構成するために必要なオブジェクト301が配置される。一例として本図では、仮想空間300内に、球状のオブジェクト301aと角柱状のオブジェクト301bが配置された様子が示されている。
ここで仮想空間300内には、球状のオブジェクト301aや角柱状のオブジェクト301bのような単純な形状のものに限らず、ゲームの仮想世界を構成する様々なオブジェクト301が配置されうる。例えば、建物や樹木、山や海を表すオブジェクト301が配置されてもよいし、人型や動物型のキャラクタオブジェクトが配置され、仮想空間300内を様々に動き回るようにしてもよい。
このような仮想空間300内の様子を、同じく仮想空間300内に配置された2個の視点302(仮想カメラ)が撮影する。この2個の視点302は人間の2個の目に対応するもので、生成部203は、仮想空間300内をこのような2個の視点302で撮影して画像を生成することで、人間が3次元空間を2個の目で立体的に見た様子を模擬した立体視画像を生成することができる。
具体的に、本図では、左視点302Lと右視点302Rは所定の距離Lだけ離れた異なる位置に配置され、それぞれ仮想空間300内に並べられた2個のオブジェクト301a,301bの方向へ向けられて配置されている。すなわち、縦列に並べられた2個のオブジェクト301a,301bに対して角柱状のオブジェクト301bの手前側から、左視点302Lおよび右視点302Rからの視線が向けられている。そして、左視点302Lは、オブジェクト301a,301bを相対的に左側の位置から撮影し、それに対して右視点302Rは、オブジェクト301a,301bを相対的に右側の位置から撮影している。このとき、生成部203は、これら2個の視点302L,302Rからそれぞれ撮影した2個の画像を生成する。生成された画像は、以下の図4に示されるようなものになる。
図4は、本発明の実施形態に係る左視点画像(本図(a))と右視点画像(本図(b))とを示す図である。上記図3における左視点302Lから仮想空間300内の様子を撮影して生成された画像は、本図(a)の左視点画像400Lのように、縦列して並べられた2個のオブジェクト301a,301bを左側手前から見た様子を表すものとなる。一方で、右視点302Rから仮想空間300内の様子を撮影して生成された画像は、本図(b)の右視点画像400Rのように、縦列して並べられた2個のオブジェクト301a,301bを右側手前から見た様子を表すものとなる。
本実施形態では、このように生成部203が生成した左視点画像400Lと右視点画像400Rを、それぞれ左目用の画像と右目用の画像として、表示部204がユーザへ提示する。そして、表示部204は、左視点画像400Lをユーザの左目からは見えて右目からは見えないように、そして右視点画像400Rをユーザの右目からは見えて左目からは見えないように、表示態様に加工を施して表示する。このようにすることで、ユーザは左目と右目とで異なる視点302から撮影された画像(立体視画像)を見ることになり、仮想空間300内の様子を立体的に捉えることができるようになる。これを実現するために、本実施形態での表示部204は、いわゆる視差バリア方式を用いて、立体視画像を画面(モニタ111)に表示する。
図5は、視差バリア方式により立体視画像を表示する仕組みを説明する図である。本図(a)は、モニタ111を上部から見た様子を示しており、そして本図(b)は、モニタ111を見ているユーザ550の斜め後ろから眺めた様子を示している。本図に示すように、モニタ111には、その前部に、所定の幅と間隔で縦縞状に切れ込み(隙間)が入れられた複数のスリット503を有するフィルム502が重畳される。ここで複数のスリット503とは、切れ込み(隙間)により視線を通す透過部分と、視線を通さない遮断部分とが、所定の幅と間隔で交互に並べて配置されたものである。このような複数のスリット503を有するフィルム502が、モニタ111とユーザ550との間の所定の位置に配置された状態で、ユーザ550は、当該フィルム502を介してモニタ111に表示される画像を見る。すなわち、ユーザ550の見る位置によって、モニタ111の表示領域のうち、複数のスリット503の隙間から見える領域と、複数のスリット503の陰に隠されて見えない領域とが存在することになる。
このとき、ユーザ550がモニタ111を見る典型的な位置、すなわちモニタ111の正面であって、当該モニタ111から所定の距離だけ離れた位置が想定される。そして、当該位置からユーザ550がモニタ111を見た場合にユーザ550の左目551Lとなる位置が、左基準位置504Lと設定され、ユーザ550の右目551Rとなる位置が、右基準位置504Rと設定される。このような左基準位置504Lと右基準位置504Rからは、モニタ111の前部に配置された複数のスリット503の存在により、モニタ111内で見える領域が異なることになる。すなわちモニタ111内には、左基準位置504Lからは見えるが右基準位置504Rからは見えない領域と、逆に右基準位置504Rからは見えるが左基準位置504Lからは見えない領域とが存在することになる。
このときゲーム装置200は、複数のスリット503の隙間の幅や隙間同士の間隔、および、モニタ111からの距離を適切に調整することで、左基準位置504Lからは見えるが右基準位置504Rからは見えない表示領域501Lと、右基準位置504Rからは見えるが左基準位置504Lからは見えない表示領域501Rとを、本図(a)に示されるように、モニタ111内に縦に1ラインずつ交互に並べるように配置することができる。
このように交互に並べて配置された表示領域501Lと表示領域501Rとに、表示部204は、生成部203によって上記のように生成された左視点画像400Lと右視点画像400Rとを、それぞれ表示する。これにより、想定される典型的な位置からモニタ111を見ているユーザ550は、左目551Lには左視点画像400Lのみが表示されているように見え、右目551Rには右視点画像400Rのみが表示されているように見える。すなわちユーザ550は、あたかも仮想空間300内の様子を2個の異なる視点302から見ているようになり、モニタ111内に表示されている画像を立体的に捉えることができるようになる。本実施形態での表示部204は、このような視差バリア方式による表示形態をとることで、ユーザ550に立体視表示をさせる。
ここで、例えばユーザ550がその姿勢を変えるなどによって、モニタ111を見ている位置を変化させたとする。見ている位置が変化し、左目551Lや右目551Rが、それぞれ左基準位置504Lや右基準位置504Rから離れてしまうと、左目551Lの視界に左視点画像400Lが、右目551Rの視界に右視点画像400Rが入らなくなってしまい、ユーザ550が正しく立体視できなくなってしまう。この場合に、そのまま表示部204が立体視画像(異なる視点302から撮影された左視点画像400Lと右視点画像400R)をモニタ111に表示し続けていると、ユーザ550は画像を立体的に捉えられないだけでなく、誤った角度からの歪んだ画像を見ることになって、正しい画像情報を得られなくなる。
そのため、本実施形態では、撮影部201が、図5(b)に示されたようにあらかじめ設置されたカメラ112を用いて、モニタ111を見ているユーザ550の様子を撮影する。具体的に、図5(b)では、カメラ112はモニタ111の上部に設置され、モニタ111を見ているユーザ550の姿を撮影している。そして、撮影された画像に基づいて、判定部202が、ユーザ550の位置が変化したか否かを調べ、ユーザ550に立体視画像を提示すべきか平面視画像を提示すべきかを判定する。
図6(a)は、カメラ112により撮影されたユーザ550の姿を現す画像を示す図である。上記図5(b)にて示されたようなモニタ111を見ているユーザ550を、カメラ112が撮影した結果、撮影された撮影結果画像600内には、ユーザ550の顔553を正面から見た様子、すなわち、当該ユーザ550の顔553の輪郭554内に、左目551Lや右目551R、そしてそれらの中の瞳552、などの様子が表示されている。
本実施形態では、このような撮影結果画像600を、撮影部201が取得して、所定の時間間隔ごとにRAM 103等の記憶部に蓄積していく。そして、判定部202が、蓄積された撮影結果画像600の履歴を分析して、時間の経過とともにユーザ550の位置が変化していないかを調べる。具体的に、図6(a)のように撮影されていたユーザ550が、図6(b)のようにその位置が変化したとする。
図6(b)は、位置の変化したユーザ550が撮影された画像を示す図である。ここでは説明のため、本図(a)において表示されていたユーザ550の姿を、点線で表示しているが、実際の撮影結果画像600内にはこのような点線は表示されない。本図(b)では、本図(a)に比べて、撮影されたユーザ550の位置が向かって右下方向へ移動しており、ユーザ550の顔553の向きも斜めになっている。その結果、ユーザ550の左目551Lと右目551Rの位置は、本図(a)のときから比べて変化している。
本実施形態での判定部202は、このようなユーザ550の左目551Lおよび右目551R内の瞳552の位置変化601に着目する。正しく立体視するためには、ユーザ550は、複数のスリット503を有するフィルム502を介して左目551Lの視界に左視点画像400Lが入る左基準位置504Lと右目551Rの視界に右視点画像400Rが入る右基準位置504Rとからモニタ111を見る必要があるため、この瞳552の位置変化601の値が大きければ、もはやユーザ550は正しく立体視できていない可能性が高い。
このとき判定部202が着目する瞳552は、瞳孔とその周囲の虹彩を含めた部分、すなわちいわゆる黒目の部分のことであってもよいし、瞳孔そのもの、すなわち虹彩の中にある網膜に光を通す円状の孔部分であってもよい。例えば瞳552として黒目の部分を用いる場合には、判定部202は、撮影結果画像600のユーザ550の姿のうち、左目551Lおよび右目551R内の虹彩部分、すなわち白目と黒目との境界を検出し、その位置変化601を取得する。あるいは瞳552として瞳孔そのものを用いる場合には、判定部202は、撮影結果画像600のユーザ550の姿のうち、左目551Lおよび右目551R内の瞳孔部分、すなわち網膜に光を通す孔部分を検出し、その位置変化601を取得する。判定部202は、これらの検出のために、例えば2値化やエッジ検出等といった既知の画像処理技術を含めた種々の検出手法を用いることができる。
そして判定部202は、このようにして取得された瞳552の位置変化601の値が、所定の範囲内かどうかを調べ、ユーザ550が立体視できているか否か、そして以降も立体視画像を提示すべきか否かの判定基準とする。具体的に、瞳552の位置変化601の値が小さく、所定の範囲内に収まる場合には、判定部202は、ユーザ550は正しく立体視できる位置からモニタ111を見ているとして、立体視画像を提示すべきと判定する。一方で、瞳552の位置変化601の値が大きく、所定の範囲内に収まらない場合には、判定部202は、ユーザ550はもはや正しく立体視できる位置からモニタ111を見ている状態にないとして、立体視画像を提示すべきでないと判定する。
ここでは、撮影結果画像600内の瞳552の位置変化601が所定の範囲内を超えた場合を例にとって、以下に説明する。このとき、判定部202により立体視画像を提示すべきでないとの判定を受け取った生成部203は、仮想空間300内の様子を表す平面視画像を生成するために、仮想空間300内でそれまで所定の距離Lだけ離間して配置されていた左視点302Lと右視点302Rとの位置を、同じ位置に重ねる。
図7は、仮想空間300内において、2個の視点302が重ねられる様子を示す図である。本図は、上記図3において示されたものと同様、仮想空間300内に球状のオブジェクト301aと角柱状のオブジェクト301bが配置され、さらにそれらに向けられて2個の視点302(仮想カメラ)が配置されている。図3では、この左視点302Lと右視点302Rは、所定の距離Lだけ離間して配置されていたが、それに対して本図では、当初離間して配置されていた左視点302Lと右視点302Rとが、重ねられる位置にまで近づけられている。
左視点302Lと右視点302Rが離れて配置されていた場合には、仮想空間300内のオブジェクト301a,301bについて、異なる角度から撮影された2個の画像が生成された。一方で、左視点302Lと右視点302Rの位置が重ねられる位置にまで近づけられた場合には、それぞれから撮影された2個の画像は、以下の図8に示すように、同じ画像が生成されることになる。
図8は、重ねられた2個の視点302から撮影された左視点画像400L(本図(a))と右視点画像400R(本図(b))とを示す図である。本図は、上記図4(a)および図4(b)にて示された左視点画像400Lと右視点画像400Rと同様に、縦列して並べられた2個のオブジェクト301a,301bについて、角柱状のオブジェクト301bの手前から見た様子を表すものである。
ここで、左視点302Lと右視点302Rとが所定の距離Lだけ離れていたときは、上記図4のように、左視点画像400Lには2個のオブジェクト301a,301bを左側手前から、そして右視点画像400Rには2個のオブジェクト301a,301bを右側手前から、それぞれ見た様子が表示された。一方で、左視点302Lと右視点302Rとが重ねられたときは、本図のように、左視点画像400Lと右視点画像400Rには、それぞれ2個のオブジェクト301a,301bを正面手前から見た同じ画像が表示される。
このようにして生成された同じ位置の視点302から撮影された左視点画像400Lと右視点画像400R(平面視画像)は、表示部204によってモニタ111に表示され、ユーザ550へ提示される。本実施形態では、ここでも上記図5に示したように視差バリア方式が用いられ、ユーザ550は、モニタ111の前部に設置されたフィルム502を介してモニタ111に表示された画像を見る。
このとき、図5のようにモニタ111内に交互に並べられた表示領域501Lと表示領域501Rには、立体視画像と同様に、左視点画像400Lと右視点画像400Rが表示されるが、平面視画像の場合これらは同じ画像であるため、モニタ111全体で同じ1個の画像が表示される。そのため、ユーザ550は、左基準位置504Lや右基準位置504Rに限らず、フィルム502の複数のスリット503を介してどの位置からモニタ111を見ても、左目551Lと右目551Rの視界には同じ画像が入ることになり、ユーザ550はモニタ111を平面視していることになる。
このように、本実施形態では、モニタ111を見ているユーザ550の瞳552の位置変化601の値が所定の範囲を超えている場合に、判定部202がユーザ550に立体視画像を提示すべきでないと判定し、それまで立体視画像を生成していた生成部203は、それ以降は平面視画像を生成する。
なお、本実施形態は、ユーザ550へ立体視画像を提示している状態から平面視画像を提示する状態への切り替えだけでなく、その逆の処理、すなわちユーザ550へ平面視画像を提示している状態から立体視画像を提示する状態への切り替えも行うことにしてもよい。
具体的には、生成部203が平面視画像を生成するようになって以降も、撮影部201がモニタ111を見ているユーザ550を撮影し続ける。そして、撮影結果画像600内のユーザ550の瞳552の位置変化601が所定の範囲内である場合、判定部202が立体視画像を提示すべきと判定することで、それまで平面視画像を生成していた生成部203が、立体視画像を生成するようにする。これによって、ユーザ550の状況に応じて、立体視画像を生成する状態と平面視画像を生成する状態との間で状態を柔軟に切り替えながら、画像を提示することができる。
図9は、本実施形態のゲーム装置200における、処理の流れを示すフローチャートである。ここまで説明してきた本実施形態において実現される処理の流れまとめて、以下に説明する。
本処理が開始されると、まずゲーム装置200のCPU 101は、各種の初期化処理を行う(ステップS101)。ここでは、RAM 103等の記憶部に記憶された各種の情報の初期化を行うとともに、仮想空間300やそこに配置されるオブジェクト301、視点302など、ゲームをプレイする上で必要となる各種データを読み込む。
次に、ゲーム装置200は、仮想空間300内に配置される左視点302Lと右視点302Rとを離間させる(ステップS102)。すなわち、ゲーム開始時においては、ゲーム装置200はまず立体視画像を生成して、表示する。そのため、上記図3に示されたように、仮想空間300内の左視点302Lと右視点302Rとを、その間の距離が所定の距離Lだけ離れるようにして配置する。
この状態で、ゲーム装置200の処理は、表示・撮影処理に移行する(ステップS103)。ここでの表示・撮影処理の詳細については、改めて図10のフローチャートを用いて以下に説明する。
図10は、本実施形態のゲーム装置200における、表示・撮影処理の流れを示すフローチャートである。ここでは、画像を生成して表示する処理および画像を見ているユーザ550を撮影する処理をまとめて説明する。
本図における処理が開始されると、まずゲーム装置200は、仮想空間300内に配置されたオブジェクト301の位置や大きさを設定する(ステップS201)。すなわち、ゲームを構成するために仮想空間300内に配置された様々なオブジェクト301について、例えばその位置を移動させたり大きさを変化させたりすることによって、ゲームを進行させる。
次に、生成部203が、仮想空間300内のオブジェクト301を表す画像を生成する(ステップS202)。すなわち、生成部203は、仮想空間300内に配置された2個の視点302から見たオブジェクト301の様子を撮影した2個の画像を生成する。具体的に、上記図3のように所定の距離Lだけ離れた左視点302Lと右視点302Rが、2個のオブジェクト301a,301bに向けられて配置されている場合は、上記図4に示されたような左視点画像400Lと右視点画像400Rが生成される。
そして、表示部204が、所定の周期ごとに行われる垂直同期のタイミングを待って、生成された画像を画面に表示する(ステップS203)。すなわち、表示部204は、生成部203によって生成された左視点画像400Lと右視点画像400Rとを、上記図6に示されたような視差バリア方式でモニタ111に表示して、ユーザ550に提示する。ここでは、ステップS102において2個の視点302を離間させているので、立体視画像が生成・表示されて、ユーザ550に提示されることになる。
さらに、撮影部201が、画面(モニタ111)を見るユーザ550を撮影する(ステップS204)。すなわち、撮影部201は、フィルム502を介してモニタ111に表示された画像を見ているユーザ550の様子を、カメラ112を用いて撮影する。撮影された結果、具体的には上記図6(a)に示されたような撮影結果画像600が取得される。
そして、撮影部201が、取得された撮影結果画像600の履歴を蓄積する(ステップS205)。すなわち、撮影部201は、撮影されたユーザ550の様子を表す撮影結果画像600を、RAM 103等の記憶部に記憶して蓄積する。蓄積された撮影結果画像600は、後述する判定部202による立体視画像を提示すべきか否かを判定する処理に用いられる。
なお、このステップS205での蓄積処理は、撮影結果画像600が取得されるごとに常に行わなければならないわけではなく、例えば数秒に1回の頻度で行われればよい。また、記憶部に記憶された撮影結果画像600について、使用する記憶領域を抑えるため、一定数蓄積された後は時系列順に古いものから消去する処理が、ここで随時行われてもよい。
ここまでで図10における表示・撮影処理を終えて、処理は再び図9のフローチャートへと戻り、ステップS104へと移行する。ここでゲーム装置200は、現在が所定の判定タイミングであるか、を判定する(ステップS104)。すなわち、本実施形態では、後述するステップS105における判定部202による判定処理は、例えば1分に1回の頻度で行われるということがあらかじめ定められており、ここではその判定処理を行うべきタイミングであるかが判定される。このとき、判定部202は、計時部の機能、すなわち画像表示部107によって所定の周期(例えば1/60秒)で行われる垂直同期の回数を数えることで、現在が所定の判定タイミングであるかを判定する。
現在が所定の判定タイミングでない場合(ステップS104;NO)、処理はステップS103へと戻り、図10のフローチャートにて説明された表示・撮影処理に再び移行する。すなわち、ステップS104でNOと判定される限り、ゲーム装置200は、仮想空間300内のオブジェクト301を設定して、その画像を生成・表示することでゲームを進行させ、あわせてゲームをしているユーザ550の様子を撮影・記録する処理を繰り返し続ける。
一方で、現在が所定の判定タイミングである場合(ステップS104;YES)、処理はステップS105へと移行し、判定部202が、ユーザ550に立体視させてよいか、を判定する(ステップS105)。具体的に本実施形態では、ここで上述したステップS205にて蓄積されたユーザ550の様子を表す撮影結果画像600を用いる。そして、上記図6(b)のように、撮影結果画像600内のユーザ550の瞳552の位置変化601が所定の範囲内か否かを判定する。
立体視させてよいと判定された場合(ステップS105;YES)、すなわち、撮影結果画像600内のユーザ550の瞳552の位置変化601が所定の範囲内であった場合、処理はステップS103へと戻り、ゲーム装置200は、引き続き仮想空間300内のオブジェクト301を表す画像の生成・表示し、そしてそれを見ているユーザ550を撮影する。ここでは、ステップS102において2個の視点302を離間させているので、立体視画像が生成・表示されて、ユーザ550に提示され続けることになる。
一方で、立体視させてよいと判定されなかった場合(ステップS105;NO)、すなわち、撮影結果画像600内のユーザ550の瞳552の位置変化601が所定の範囲を超えていた場合、処理はステップS106へと移行し、平面視画像を生成・表示する処理に入る。
このとき、まずゲーム装置200は、それまで仮想空間300内において離間して配置されていた左視点302Lと右視点302Rとを重ねる(ステップS106)。具体的には、図7に示されたように、左視点302Lと右視点302Rとの間の距離を縮めて、同じ位置からオブジェクト301を見るようにする。
この状態で、ゲーム装置200の処理は、ステップS103と同様の表示・撮影処理に移行する(ステップS107)。すなわち、上述した図10におけるフローチャートと同様の処理を行う。一方で、ここではステップS103のときとは異なり、仮想空間300内の左視点302Lと右視点302Rとは同じ位置に重ねられているので、ステップS202において生成される左視点画像400Lと右視点画像400Rは、上記図8のように、同一の画像(平面視画像)になる。そのため、表示部204によって表示された画像を見ているユーザ550は、平面視によってモニタ111を見ることになる。
その後、ゲーム装置200の処理は、ステップS108へと移行し、判定部202が、再度、立体視させるかを判定する(ステップS108)。すなわち、ここでのゲーム装置200の状況は、それまでユーザ550に立体視画像を提示していた状態から平面視画像を提示する状態へと一旦移行した後であるが、このステップS108では、再び立体視画像を提示する状態へと移行する必要があるかを、判定部202が判定する。このとき、判定部202は、上述したステップS105における判定処理と同様に、撮影部201によって撮影された撮影結果画像600を用いて、ユーザ550の瞳552の位置変化601が所定の範囲内か否かを基準として、判定する。
再度、立体視させると判定されなかった場合(ステップS108;NO)、処理はステップS107へと戻り、表示・撮影処理を再度行う。すなわち、ここでNOと判定されている限り、ゲーム装置200は引き続き平面視画像をユーザ550へ提示し続ける。
一方で、再度、立体視させると判定された場合(ステップS108;YES)、ゲーム装置200は、上述したステップS102と同様、仮想空間300内に配置される左視点302Lと右視点302Rとを離間させる(ステップS109)。すなわち、立体視画像を生成・表示するために、それまで仮想空間300内に重ねられて配置されていた2個の視点302を、所定の距離Lだけ離して配置する。
この後、ゲーム装置200の処理はステップS103へと戻る。すなわち、生成部203が仮想空間300内の様子を表す立体視画像を生成し、表示部204が立体視画像をモニタ111に表示することで、ユーザ550へ提示する。
このような構成によって、本実施形態におけるゲーム装置200は、モニタ111を見ているユーザ550の瞳552の位置変化601の値が所定の範囲を超えたか否かに基づいて、ユーザ550に立体視画像もしくは平面視画像を提示する。その結果、ユーザ550は、立体視が可能な位置からモニタ111を見ている状態にあるときは、立体視画像を見ることができ、立体視できない位置からモニタ111を見ている状態にあるときは、平面視画像を、すなわち不必要に立体視画像を見ずにモニタ111を見ることができる。
(実施形態2)
次に、本発明の実施形態2について説明する。実施形態1では、判定部202が、ユーザ550の瞳552の位置変化601の大きさに基づいて、ユーザ550が立体視可能な位置からモニタ111を見ているか否かを判定し、そして当該ユーザ550に立体視画像を提示すべきか否かを判定した。
それに対して本実施形態では、判定部202が、ユーザ550の瞳552の位置変化601の大きさではなく、ユーザ550の瞳552の位置変化601と仮想空間300内のオブジェクト301の位置の変化との連動の度合に基づいて、ユーザ550が立体視しているか否かを判定し、そして当該ユーザ550に以降も立体視画像を提示すべきか否かを判定する。以下に詳細を説明する。
ここでは説明のため、実施形態1と同様に、上記図3において示されたような仮想空間300が、ゲーム装置200の記憶部に用意されたとする。すなわち、図3のように、仮想空間300内に球状のオブジェクト301aと角柱状のオブジェクト301bが配置され、その様子を、2個の視点302L,302Rが撮影している状態を考える。この状態において、本実施形態では、角柱状のオブジェクト301bが仮想空間300内を移動する。
図11は、本実施形態に係る仮想空間300内において、オブジェクト301bが移動している様子を示す図である。本図は、上記図3において示された仮想空間300内の様子を真上から見たものであり、並べて配置された球状のオブジェクト301aと角柱状のオブジェクト301bに対して、角柱状のオブジェクト301bの手前側に2個の視点302L,302Rが、互いに所定の距離Lだけ離間して配置されている。
ここで本図では、角柱状のオブジェクト301bは、移動軌跡701に沿って移動する。すなわち、球状のオブジェクト301aは、仮想空間300内の所定の位置に固定されているのに対して、角柱状のオブジェクト301bは、視点302L,302Rから見て奥行き方向への周期的な位置変化を伴いながら、左から右へ、移動軌跡701に沿って移動している。
本実施形態では、このような移動しているオブジェクト301bの様子を、2個の視点302L,302Rによって撮影された画像を生成部203が生成し、表示部204が実施形態1と同様視差バリア方式によりモニタ111に表示することで、ユーザ550に立体視画像を提示する。モニタ111を見ているユーザ550は、モニタ111内で停止している球状のオブジェクト301aと、モニタ111内を移動している角柱状のオブジェクト301bとの様子を見ることができる。
このとき、本実施形態におけるゲーム装置200は、ユーザ550が正しく立体視できているかを確認するために、奥行き方向に周期的に運動している角柱状のオブジェクト301bを利用する。具体的には、以下の図12に示すように、角柱状のオブジェクト301bについて、生成される立体視画像において当該オブジェクト301bが描画される領域の大きさが略一定となるように、奥行き方向の位置変化に基づいて当該オブジェクト301bの大きさも変化させながら、移動軌跡701に沿って移動させる。
図12は、本実施形態に係る仮想空間300内において、描画される領域の大きさが略一定になるように、オブジェクト301bが移動している様子を示す図である。本図は上記図11と同様に、仮想空間300内に固定されたオブジェクト301aと移動軌跡701に沿って移動しているオブジェクト301bとの様子を真上から見た図であるが、上記図11よりも時間が進んだときの様子を表している。すなわち、角柱状のオブジェクト301bは、図11では視点302L,302Rに対して最も奥の位置(本図の点線で表示した部分)にあったが、本図では移動軌跡701に沿って移動し、視点302L,302Rに対して最も手前の位置にまで達している。
このとき、手前の位置に移動した角柱状のオブジェクト301bは、奥に位置していたときに比べて、その大きさが縮小される。すなわち、本実施形態におけるゲーム装置200は、オブジェクト301bが視点302L,302Rに近づくと、オブジェクト301bの大きさを相対的に縮小させ、反対にオブジェクト301bが視点302L,302Rから遠ざかったときは、オブジェクト301bの大きさを相対的に増大させる。このとき、ゲーム装置200は、視点302L,302Rの位置からの距離に比例した大きさとなるように、あらかじめオブジェクト301bの大きさの変化の度合を定めておくことで、生成される画像において描画されるオブジェクト301bの大きさが略一定にする。
図13は、このようにオブジェクト301bが大きさを変化させながら移動している状態において生成された左視点画像400Lと右視点画像400Rを示す図である。とくに、本図(a)は、上記図11におけるオブジェクト301a,301bを左視点302Lおよび右視点302Rが撮影したものに対応し、一方で本図(b)は、上記図12におけるオブジェクト301a,301bを左視点302Lおよび右視点302Rが撮影したものに対応する。
すなわち、角柱状のオブジェクト301bは、視点302L,302Rから見て左から右へ移動ながら、視点302L,302Rに対し、図11では相対的に奥側に、図12では相対的に手前側に、それぞれ位置していた。そのため、本図(a)の左視点画像400Lと右視点画像400Rにおける角柱状のオブジェクト301bは、本図(b)の左視点画像400Lと右視点画像400Rにおける角柱状のオブジェクト301bに比べて、相対的に小さな視差で表示されている。なお、本図では説明を明瞭にする目的で強調して示しているため、左視点画像400Lと右視点画像400Rとが、オブジェクト301a,301bを大きく異なる角度から見たものとして表示されているが、実際には左視点画像400Lと右視点画像400Rとで本図ほど視差が大きくはならないと考えられる。
このとき、上記図12にて示されたように、オブジェクト301bは、視点302L,302Rに対して手前の位置になるほどその大きさを相対的に小さくされるため、オブジェクト301bの大きさは、本図(a)から本図(b)にかけて、略一定に保たれている。そのため、このような左視点画像400Lと右視点画像400R(立体視画像)を提示されたユーザ550は、正しく立体視できていないと、オブジェクト301bが奥行き方向に周期的に運動していることを捉えられず、単にオブジェクト301bは左から右へ、その大きさを変化させずに移動しているかのように認識してしまう。
一方で、正しく立体視できているユーザ550は、オブジェクト301bの奥行き方向への周期的な運動を捉えるために、本図(a)と本図(b)との間の視差の変化を目で追うことになる。具体的には、以下の図14のように、両目の焦点を遠ざけて見ることと、両目の焦点を近づけて見ることとを、交互に繰り返すことになる。
図14は、このような視差の大小が変化する立体視画像が提示されたときの、ユーザ550の瞳552の位置変化601の様子を示す図である。本図は上記図6において示された撮影結果画像600と同様に、モニタ111を見ているユーザ550の様子を、撮影部201がカメラ112を用いて撮影して取得した画像であって、撮影された撮影結果画像600内には、ユーザ550の顔553を正面から見た様子、すなわち、当該ユーザ550の顔553の輪郭554内に、左目551Lや右目551R、そしてそれらの中の瞳552、などの様子が表示されている。なお、ここで瞳552とは、実施形態1と同様、瞳孔とその周囲の虹彩を含めた部分のことであってもよいし、瞳孔そのものであってもよい。
とくに、本図(a)は、上記図13(a)のような相対的に小さな視差を、対して本図(b)は、上記図13(b)のような相対的に大きな視差を、それぞれつけられた左視点画像400Lと右視点画像400R(立体視画像)を提示されたときに、立体視をしているユーザ550の様子が撮影されたものである。相対的に小さな視差をつけられた立体視画像を見ているユーザ550は、両目の焦点を遠ざけて見るため、本図(a)のように左目551Lの瞳552と右目551Rの瞳552とが相対的に離れる。その一方で、相対的に大きな視差をつけられた立体視画像を見ているユーザ550は、両目の焦点を近づけて見るため、本図(b)のように左目551Lの瞳552と右目551Rの瞳552とが相対的に近づく、すなわちいわゆる寄り目の状態になる。
このように、奥行き方向に周期的に運動しながら左から右へ移動しているオブジェクト301bの様子が表示された立体視画像を正しく立体視して見ているユーザ550は、左目551Lの瞳552と右目551Rの瞳552とを遠ざけたり近づけたりする位置変化601を繰り返すことになる。すなわち、撮影部201によって撮影された撮影結果画像600は、本図(a)と本図(b)のような状態が交互に繰り返されることになる。一方で、正しく立体視できていないユーザ550にとっては、提示された立体視画像内で大きさが略一定に保たれたオブジェクト301bが左から右へ移動しているだけに見えるので、左目551Lの瞳552と右目551Rの瞳552の位置変化601は、オブジェクト301bの奥行き方向への周期的な運動とは無関係なものとなる。
そのため、本実施形態では、判定部202が、撮影結果画像600のユーザ550の姿のうち瞳552の位置変化601に着目し、当該瞳552の位置変化601とオブジェクト301bの奥行き方向の位置変化との連動の度合に基づいて、ユーザ550に以降も立体視画像を提示すべきか否かを判定する。ここで連動の度合とは、オブジェクト301bの位置とユーザ550の瞳552の位置とがどの程度連動して変化したか、すなわち、どの程度一方が他方に影響を受け、追従するように変化したか、を示す指標である。判定部202は、撮影部201によって所定のタイミングごとに撮影される撮影結果画像600をRAM 103等の記憶部に蓄積しておき、蓄積された撮影結果画像600の履歴から瞳552の位置変化601を時系列順に取得して、そのときのオブジェクト301bの奥行き方向の周期的な運動と比較することで、連動の度合を求める。
このような連動の度合を求めるため、具体的に判定部202は、ユーザ550の瞳552の位置変化601と、オブジェクト301bの奥行き方向の運動の軌跡とを、それぞれフーリエ変換を施すことで周波数成分をそれぞれ抽出し、抽出された周波数同士を比較する。その結果、抽出された主な周波数成分同士の差が所定の範囲内に収まっていれば、判定部202は、ユーザ550が立体視できていると推測し、以降もユーザ550に立体視画像を提示すべきと判定する。一方で、抽出された周波数同士の差が所定の範囲内に収まっていなければ、判定部202は、ユーザ550が立体視できていないと推測し、以降はユーザ550に立体視画像の提示をやめて、平面視画像を提示すべきと判定する。
このように、本実施形態におけるゲーム装置200は、奥行き方向への周期的な運動を伴った移動をするオブジェクト301の様子を表示した立体視画像を、必要に応じてユーザ550に提示する。そして、判定部202が以降もユーザ550に立体視画像を提示すべきか否かを判定する。
ここまで説明した本実施形態における処理の流れは、実施形態1の処理の流れを説明するのに参照された図9および図10のフローチャートとほぼ同様なので、以下、図9および図10を参照しながら本実施形態における処理の流れをまとめて、説明する。
まず図9を参照して、本処理が開始されると、ゲーム装置200の処理は、各種の初期化処理(ステップS101)を経た後、仮想空間300内に配置される左視点302Lと右視点302Rとを離間させ(ステップS102)、その状態で表示・撮影処理(ステップS103)、すなわち、立体視画像を表示する処理へ移行する。
ここで、図10に示されたフローチャートへ移行し、まずゲーム装置200は、仮想空間300内に配置されたオブジェクト301の位置や大きさを設定する(ステップS201)。すなわち、ゲーム装置200は、ゲームを構成するために仮想空間300内に配置された様々なオブジェクト301を変化させながらゲームを進行させるが、本実施形態ではここで必要に応じて、上記図11および図12のように、立体視画像においてオブジェクト301が描画される領域の大きさが略一定となるように当該オブジェクト301の大きさを変化させながら、移動経路701のような奥行き方向への周期的な運動を伴った位置変化をさせる。このとき、オブジェクト301の位置変化の履歴を記憶部に蓄積しておき、後述するステップS105にて使用する。
このように位置・大きさの変化するオブジェクト301について、生成部203が、仮想空間300内のオブジェクト301を表す画像を生成し(ステップS202)、表示部204が、所定の周期ごとに行われる垂直同期のタイミングを待って、生成された画像を画面に表示する(ステップS203)。そして、撮影部201が、モニタ111を見るユーザ550を撮影し(ステップS204)、取得された撮影結果画像600の履歴を蓄積する(ステップS205)。
そして再び図9へと戻り、ゲーム装置200は、現在が所定の判定タイミングであるか、を判定する(ステップS104)。現在が所定の判定タイミングでない場合(ステップS104;NO)、処理はステップS103へと戻り、表示・撮影処理を繰り返す。
一方で、現在が所定の判定タイミングである場合(ステップS104;YES)、判定部202が、ユーザ550に立体視させてよいか、を判定する(ステップS105)。ここで本実施形態では、判定部202は、上述したステップS205にて蓄積されたユーザ550の様子を表す撮影結果画像600を用い、ステップS201におけるオブジェクト301の位置変化と比較する。そして、ユーザ550の瞳552の位置変化601と、オブジェクト301の位置変化と、の連動の度合に基づいて、ユーザ550に以降も立体視画像を提示すべきか否かを判定する。
立体視させてよいと判定された場合(ステップS105;YES)、すなわち、撮影結果画像600内のユーザ550の瞳552の位置変化601とオブジェクト301の位置変化との連動の度合が所定の条件を満たした場合、処理はステップS103へと戻り、立体視画像の表示とユーザ550の撮影処理を繰り返す。
一方で、立体視させてよいと判定されなかった場合(ステップS105;NO)、すなわち、撮影結果画像600内のユーザ550の瞳552の位置変化601とオブジェクト301の位置変化との連動の度合が所定の条件を満たさなかった場合、判定部202は、ユーザ550に立体視画像を提示すべきでないと判定する処理へ移行する。すなわち、ゲーム装置200の処理は、それまで仮想空間300内において離間して配置されていた左視点302Lと右視点302Rとを重ね(ステップS106)、その状態でステップS103と同様の表示・撮影処理(ステップS107)に移行する。すなわち、ゲーム装置200は、平面視画像をユーザ550に提示し、そのユーザ550を撮影する処理を行う。
その後、判定部202は、再度、立体視させるかを判定する(ステップS108)。すなわち、本実施形態では、上記ステップS106〜S107にて平面視画像をユーザ550へ提示した後、以降そのまま平面視画像を提示し続けるのではなく、例えば10分間といった所定の時間が経過した後は、再び立体視画像をユーザ550に提示する状態へと移行する。そのため、ここでは所定の時間が経過したか否かを、計時部の機能、すなわち画像表示部107によって所定の周期(例えば1/60秒)で行われる垂直同期の回数を数えることで、判定部202が判定する。
ここで、再度、立体視させると判定されなければ(ステップS108;NO)、処理はステップS107へと戻り、平面視画像での表示・撮影処理を繰り返し続ける。一方で、再度、立体視させると判定された場合(ステップS108;YES)、ゲーム装置200は、上述したステップS102と同様、仮想空間300内に配置される左視点302Lと右視点302Rとを離間させ(ステップS109)、処理はステップS103へと戻る。すなわち、ゲーム装置200の処理は、立体視画像をユーザ550に提示する処理へと戻る。
このような構成によって、本実施形態におけるゲーム装置200は、ユーザ550の瞳552の位置変化601と仮想空間300内のオブジェクト301の位置の変化との連動の度合に基づいて、ユーザ550に立体視画像もしくは平面視画像を提示する。その結果、立体視画像を提示されているにもかかわらず、目が慣れていない、あるいは目の疲労などによって、ユーザ550が立体視できていない状態にあるときは、不必要に立体視画像せずに、平面視画像に切り替えて提示することができる。
(他の実施形態)
以上、本発明の実施の形態について説明したが、本発明は、上述した実施形態に限定されず、種々の変形および応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
例えば、上記実施形態においては、画面(モニタ111)とユーザ550との間の所定の位置に、所定の幅と間隔で縦縞状に切れ込み(隙間)が入れられた複数のスリット503を有するフィルム502を用意することで、立体的な画像を実現した。しかし、立体画像を実現する方法はこれに限られない。
例えば、画面(モニタ111)とユーザ550との間に配置されるフィルム502に換えて、レンチキュラーレンズシートと呼ばれるかまぼこ状のレンズが並んだシートを重畳したモニタ111を用いてもよい。すなわち、当該レンズが所定の幅と間隔で並べて配置されたシートを、モニタ111から所定の距離だけ離れた位置に配置することで、ユーザ550に立体視させるようにしてもよい。
レンチキュラーレンズシートを用いる場合も、フィルム502を用いる場合と同様に、表示部204は、左視点画像400Lと右視点画像400Rとをモニタ111内に縦に1ラインずつ交互に表示する。すなわち、所定の左基準位置から当該シートを介して見えるモニタ111内の領域に左視点画像400Lを表示し、所定の右基準位置から当該シートを介して見えるモニタ111内の領域に右視点画像400Rを表示する。これにより、当該シートを介してモニタ111を見ているユーザ550は、左目551Lで左視点画像400Lを、右目551Rで右視点画像400Rを、それぞれ見ることになり、あたかも仮想空間300内の様子を2個の異なる視点302から立体的に見ているようになる。
あるいは、交互に左右のシャッタを開閉する液晶シャッタメガネを用いる方式を利用してもよい。すなわち、画面(モニタ111)とユーザ550との間に配置されるフィルム502に換えて、ユーザ550が液晶シャッタを備えたメガネをかけることで、ユーザ550に立体視させるようにしてもよい。この場合、表示部204は、メガネのシャッタを開閉する周期にあわせて、左視点画像400Lと右視点画像400Rを交互にモニタ111へ出力する。これにより、ユーザ550は、左目551Lで左視点画像400Lを、右目551Rで右視点画像400Rを、それぞれ見ることになり、あたかも仮想空間300内の様子を2個の異なる視点302から立体的に見ているようになる。
また、実施形態1では、判定部202は、撮影結果画像600内のユーザ550の姿のうち、ユーザ550の瞳552、すなわち左目551Lおよび右目551R内の虹彩部分や瞳孔部分に着目して、その位置変化601の範囲が所定の範囲内である場合に立体視画像を提示すべきと判定した。しかし、これに限られず、撮影結果画像600内のユーザ550の姿のうち、様々な情報を判定基準とすることができる。
例えば、判定部202は、ユーザ550の瞳552ではなく、ユーザ550の顔553の輪郭554に着目してもよい。すなわち、判定部202は、撮影結果画像600内に表示されたユーザ550の顔553の輪郭554の位置(顔553全体の位置)が、時間の経過とともにどのくらい変化したかを取得して、立体視画像を提示すべき基準としてもよい。
顔553の輪郭554の位置が大きく変化したということは、ユーザ550は正しく立体視できる位置からモニタ111を見ていない可能性が高い。すなわち、ユーザ550の左目551Lがモニタ111に表示された左視点画像400Lを見える位置(左基準位置504L)から、そして右目551Rが右視点画像400Rを見える位置(右基準位置504R)から離れてしまい、ユーザ550が正しく立体視できていない可能性が高い。そのためここでは、判定部202は、顔553の輪郭554の位置の変化が所定の範囲内である場合に立体視画像を提示すべきと判定し、所定の範囲を超えて変化している場合には、平面視画像を提示すべきと判定する。
このような構成によって、判定部202は、実施形態1でのように直接ユーザ550の瞳552の位置の変化を調べなくても、ユーザ550の顔553の輪郭554の位置の変化に基づいて、ユーザ550が立体視できる位置からモニタ111を見ているかの判定が可能となる。
また別の例として、判定部202は、ユーザ550の瞳552の位置の変化ではなく、瞳552の大きさの変化に着目してもよい。すなわち、判定部202は、撮影結果画像600内に表示されたユーザ550の瞳552の大きさが、時間の経過とともにどのくらい変化したかを取得して、立体視画像を提示すべき基準としてもよい。あるいはまた、瞳552の大きさの変化に換えて、顔553の輪郭554の大きさの変化に着目し、立体視画像を提示すべき基準としてもよい。
瞳552や顔553の輪郭554の大きさが大きく変化したということは、ユーザ550がモニタ111に対して近づいた、あるいは、遠ざかった位置に移動したと考えられ、ユーザ550は正しく立体視できる位置からモニタ111を見ていない可能性が高い。そのためここでは、判定部202は、ユーザ550の瞳552や顔553の輪郭554の大きさの変化が所定の範囲内である場合に立体視画像を提示すべきと判定し、所定の範囲を超えて変化している場合には、平面視画像を提示すべきと判定する。
なお、このとき着目されうる瞳552もまた、上記実施形態と同様、瞳孔とその周囲の虹彩を含めた部分のことであってもよいし、瞳孔そのものであってもよい。ここで瞳孔は、そのユーザの周囲の環境、特に明るさの程度に応じて大きくなったり小さくなったりといった変化をしうるものであるが、一般的にユーザがゲームをプレイしている間に周囲の環境が大きく変動することは少ないことが想定されるため、瞳孔そのものが判定として用いられる場合にも、周囲の環境による瞳孔の大きさの変化が当該判定に与える影響は少ないものと考えられる。
このような構成によって、判定部202は、モニタ111に対するユーザ550の奥行き方向の位置の変化に基づいて、ユーザ550が立体視できる位置からモニタ111を見ているかの判定が可能となる。
さらに別の例として、判定部202は、ユーザ550の瞳552の位置の変化の値ではなく、変化の周期に着目してもよい。すなわち、判定部202は、撮影結果画像600内に表示されたユーザ550の瞳552の位置変化601に対して、フーリエ変換を施すなどで瞳552の位置変化601の周期を取得して、立体視画像を提示すべき基準としてもよい。
通常、モニタ111を見ているユーザ550の瞳552は、一方向に向けられて固定されておらず、モニタ111に表示される画像に応じるなどによって、様々な方向に向けられ激しく動き回っている。一方で、モニタ111を長時間見続けるなどにより、ユーザ550の目に疲労が溜まってくると、瞳552の動きは徐々に鈍くなってくると考えられる。このようなユーザ550の目の動きの激しさの指標として、判定部202は、撮影結果画像600内の瞳552の位置の変化の周期を用い、周期が所定の範囲内である場合(目が激しく動き回っている場合)に立体視画像を提示すべきと判定し、所定の範囲内でない場合(目の動きが鈍くなっている場合)には、平面視画像を提示すべきと判定する。
このような構成によって、判定部202は、目に疲労の溜まってきたユーザ550に対して、目に負担のかかりやすい立体視画像を提示し続けるのではなく、平面視画像を提示すべきと判定することができる。