(58)【調査した分野】(Int.Cl.,DB名)
前記画像生成手段は、前記第1オブジェクトの像を平行投影によって取得し、当該取得された像を、当該平行投影の投影面上の位置を基点として当該投影面に平行に移動する、請求項1に記載の画像処理プログラム。
前記第1右眼用画像および前記第1左眼用画像は、前記仮想ステレオカメラを構成する、右仮想カメラおよび左仮想カメラの位置に基づいて、前記仮想空間を透視投影することで得られる、請求項1または2に記載される画像処理プログラム。
前記ユーザによる操作は、スライド可能な部材を有する入力装置を介して達成され、当該スライド可能な部材の移動量が、前記右仮想カメラと前記左仮想カメラとの間の距離に対応づけられている、請求項7に記載の画像処理プログラム。
前記画像生成手段は、前記第1のオブジェクトの像を平行に移動させた像を、前記第1右眼用画像および前記第1左眼用画像のそれぞれと合成することで前記第2右眼用画像および前記第2左眼用画像を得る、請求項1から請求項10のいずれか1項に記載の画像処理プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、例えば、3D仮想空間内にグラフィカルユーザインターフェース(GUI)機能を担う仮想オブジェクト(例えば、操作用ボタンを表すための2次元画像)を立体視表示しようとするとき、そのようなオブジェクトの立体視表示は、従来の技術において種々の問題を伴う。例えば、次のような問題が生じる。
【0005】
GUI用オブジェクトが、3D仮想空間(ワールド座標系)に配置されて、複数の視点に基づいた透視投影処理を受けて、立体視用の画像が生成される場合がある。このとき、視点(仮想カメラ)から遠位に位置づけられたGUI用オブジェクトは、近位に位置づけられた同じオブジェクトと比べて、表示装置の表示面においてより小さく表示される。したがって、視点とGUI用オブジェクトとの位置関係によっては、その空間に配置されるオブジェクトが結果的に非常に小さなサイズで表示される場合がある。
【0006】
他方、GUI用オブジェクトは、表示されるオブジェクトを介してユーザが所定の操作を行ない得る態様(大きさ、位置)で表示されなければならない。上述のように視点からGUI用オブジェクトが遠位に位置する場合に、画面上で表示サイズが小さなサイズとならないようにするためには、GUI用オブジェクトそのものの大きさを大きくする必要がある。しかし、この方法ではGUI用オブジェクトの実際の大きさと画面上で表示される大きさが異なることになるため、所望のGUI用オブジェクトの表示を得ることが難しかった。
【0007】
また、GUI用オブジェクトに最終的には奥行き感を持たせてユーザに立体視表示したい場合であっても、アプリケーションプログラムの作成時では、その画面デザイン(表示面上のGUI用画像であるアイコンなどの配置)は、2次元画像に表示面上の2次元的に配置を与えることで行なわれる場合がある。しかし、GUI用オブジェクトに対して上述のような投影処理が行なわれる場合、表示面上では想定した位置からずれた位置(例えば、画面の中央に偏った位置)にそのようなオブジェクトが表示される現象が生じる。
【0008】
このような現象の存在のために、製作者は、表示面上の特定の位置を指定して表示したい場合に、立体視でどのように見えるかということと、表示面上のどこに表示されるかということを考慮して、GUI用オブジェクトを配置する必要があった。
【0009】
このように、上述のような所定のオブジェクトの立体視表示を行なう場合、奥行き情報に応じて表示画上でのオブジェクトの位置・大きさは変動するため、表示画上でのオブジェクトの位置・大きさを指定しつつ、立体視の際の奥行きの位置を決定することには、困難が伴った。
【0010】
それゆえに、この発明の目的は、このような状況を解決し得る、新規な画像処理装置、画像処理プログラム、画像処理方法および画像処理システムを提供することである。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明は、その一例として、以下のような態様で提供され得る。以下で示した具体的な記載のいずれもが、本発明の外延を理解するために示した例示的な記載であって、本発明がこの例に限定されることを意図するものではない。すなわち、当業者は、その具体的な記載から、本発明に関する記載および技術常識に基づいて均等な範囲を実施することができることを理解し得る。
【0012】
一態様において、本発明は、立体視可能に画像を出力し得る画像処理装置のコンピュータで実行される画像処理プログラムを提供する。この画像処理プログラムは、上記コンピュータを、仮想ステレオカメラ設定取得手段、位置指定手段、算出手段および画像生成手段として機能させる。
【0013】
この仮想ステレオカメラ設定取得手段は、仮想空間を撮影することで第1右眼用画像および第1左眼用画像を立体視可能な形式で提供するための仮想ステレオカメラの設定情報を取得する。
【0014】
位置指定手段は、上記仮想ステレオカメラの撮影方向である奥行き方向の位置を含む、上記仮想空間における第1オブジェクトの位置を指定する。
【0015】
算出手段は、上記仮想ステレオカメラの設定情報および上記第1オブジェクトの奥行き方向の位置を利用して、上記第1オブジェクトの像を立体視するためのずれ量を算出する。
【0016】
画像生成手段は、上記位置指定手段によって指定された位置にあるとした場合の上記第
1オブジェクトの像を、上記ずれ量に基づき所定の位置から前記奥行き方向と垂直な面と
平行に移動させた像をそれぞれ含む、第2右眼用画像および第2左眼用画像を生成する。
また、仮想ステレオカメラの設定情報は、仮想ステレオカメラを構成する右仮想カメラおよび左仮想カメラとの間の距離、ならびに、奥行き方向に垂直な立体視における基準面と仮想カメラとの間の距離を含み、算出手段は、右仮想カメラと左仮想カメラとの間の距離を利用して、ずれ量を算出する。
【0017】
なお、上述の投影面は、投影処理を行なう際に想定される概念的な面であり、その投影処理を規定すべき条件を示すための例示的な表現である。よって、この投影面との表現は、意図する投影処理またはそれに関連する処理を規定するのための絶対的な表現ではなく、その投影処理に係る演算と数学的に同値な別の演算方法またはその処理と情報処理的に等価もしくは近似的に同一とみなされる処理を規定する別の表現によって置き換えられてもよい。したがって、投影面との表現は、そのような同値、等価なものも包摂すると解釈されるべきである。
【0018】
また、本明細書において使用される場合、「基準面」は、仮想カメラからどれだけの距離のところを立体視時にディスプレイ面上のにあるように視認させるかという設定を規定する平面である。
【0019】
一実施形態において、上記画像生成手段は、上記第1オブジェクトの像を平行投影によって取得し、当該取得された像を、当該平行投影の投影面上の位置を基点として当該投影面に平行に移動してもよい。
【0020】
一実施形態において、上記第1右眼用画像および第1左眼用画像は、上記仮想ステレオカメラを構成する、右仮想カメラおよび左仮想カメラの位置に基づいて、上記仮想空間を透視投影することで取得してもよい。
【0021】
種々の実施形態において、上記画像生成手段は、上記第1オブジェクトを、上記仮想ステレオカメラを構成する右仮想カメラと左仮想カメラの基準となる基準仮想カメラによって平行投影した像を、当該平行投影の投影面上の位置を基点としてよい。そして、このとき、上記画像生成手段は、上記ずれ量のうち、上記右仮想カメラと、上記基準仮想カメラとの位置関係に応じた距離だけ、上記第1オブジェクトの像を上記基点から第1方向に平行移動して、第2右眼用画像を生成する。他方で、このときに、上記画像生成手段は、上記ずれ量のうち、上記左仮想カメラと、上記基準仮想カメラとの位置関係に応じた距離だけ、上記第1オブジェクトの像を上記基点から第2方向に平行移動して、第2
左眼用画像を生成する。
【0022】
一実施形態において、上記画像生成手段は、上記第1オブジェクトを、前記仮想ステレオカメラの中間に位置する前記基準仮想カメラによって平行投影した像を、当該平行投影の投影面上の位置を基点とし、上記ずれ量を2等分して得た距離だけ、上記第1オブジェクトの像を上記基点から第1方向に平行移動して、第2右眼用画像を生成し、上記ずれ量を2等分して得た距離だけ、上記第1オブジェクトの像を上記基点から上記第1方向と逆の方向に平行移動して、第2左眼用画像を生成してもよい。
【0024】
一実施形態において、上記画像処理プログラムは、上記コンピュータを、上記右仮想カメラと上記左仮想カメラとの間の距離を変更するための仮想カメラ間隔変更手段としてさらに機能させる。そして、上記仮想カメラ設定取得手段は、上記仮想カメラ間隔変更手段によって変更された上記距離を含む上記仮想カメラの設定情報を取得する。
【0025】
一実施形態において、上記仮想カメラ間隔変更手段は、上記画像処理装置のユーザによる操作に応じた入力信号を取得することで、上記距離を変更してもよい。
【0026】
上記実施形態において、上記ユーザによる操作は、スライド可能な部材を有する入力装置を介して達成され、当該スライド可能な部材の移動量が、上記右仮想カメラと上記左仮想カメラとの間の距離に対応づけられてもよい。
【0027】
上記実施形態において、上記コンピュータが有するグラフィックスプロセッシングユニットが、上記算出手段としての機能を担ってもよい。
【0028】
上記実施形態において、上記第1オブジェクトは、基準面と平行な2次元画像として規定されてもよい。
【0029】
種々の実施形態において、上記画像生成手段は、上記第1のオブジェクトの像を平行に移動させた像を、上記第1右眼用画像および上記第1左眼用画像のそれぞれと合成することで上記第2右眼用画像および上記第2左眼用画像を得てもよい。
【0030】
様々な実施形態において、本発明は、上述の画像処理プログラムが有する機能を付与するコード集合体として提供されるプログラムとして提供されてもよい。
【0031】
本明細書において使用される場合、「コード集合体」とは、計算機(コンピュータ)による処理に適した命令、データ表現の集合体である。また、「機能を付与するコード集合体」とは、他のプログラムに何らかの機能を提供するコード集合体である。このコード集合体は、実行形式で提供されてもよいが、ソースコード形式、オブジェクトコード形式、またはその他の専用の形式で提供されてもよい。
【0032】
また、別の態様において、本発明は、画像処理プログラムが提供する機能を、装置、システム、方法として実装し得る。
【0033】
本明細書において使用される場合、「オブジェクト」または「仮想オブジェクト」との用語は、情報処理装置における操作・処理の対象であって、場合によってはその動作を含めたものをいう。したがって、仮想オブジェクトは、個別座標で規定された3次元モデルのみではなく、2次元画像(必要に応じて、奥行き情報を付加されたもの)を含む。
【0034】
なお、本明細書で使用される場合、「コンピュータ読み取り可能な記憶媒体」との用語は、プログラム、コードおよび/またはデータをコンピュータシステムによって使用するために記憶することが可能な、任意の装置または媒体をいう。コンピュータ読み取り可能な記憶媒体は、コンピュータシステムによって読み取りが可能である限りにおいて、揮発性であっても、不揮発性であってもよい。コンピュータ読み取り可能な記憶媒体としては、例えば、磁気テープ、ハードディスクドライブ(HDD)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、ブルーレイ(登録商標)ディスク(BD)、半導体メモリなどが挙げられるが、これらに限られない。
【0035】
また、本明細書において使用される場合、「システム」(例えば、ゲームシステム、画像処理システム、情報処理システム)との用語は、1つの装置で構成されてもよく、また、複数の装置であって、その各々の装置が他の装置のいずれかと通信可能であるものであってもよい。
【0036】
本明細書において使用される場合、装置またはシステムが、別の装置またはシステムに「接続する」状態は、有線で接続される状態に限らず、無線で接続される状態も包含し得る。
【発明の効果】
【0037】
より利便性の高い、新規な立体視表示を提供する画像処理プログラム、画像処理装置、画像処理方法および画像処理システムが提供される。
【発明を実施するための形態】
【0039】
(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。
図1および
図2は、ゲーム装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置であり、
図1および
図2に示すように折り畳み可能に構成されている。
図1は、開いた状態(開状態)におけるゲーム装置10を示し、
図2は、閉じた状態(閉状態)におけるゲーム装置10を示している。
図1は、開状態におけるゲーム装置10の正面図である。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、または、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0040】
まず、
図1および
図2を参照して、ゲーム装置10の外観構成について説明する。
図1および
図2に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0041】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。
図1および
図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0042】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0043】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(
図1および
図2(d)に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0044】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。
図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは、例えば、決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0045】
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定の仮想オブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定の仮想オブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定の仮想オブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0046】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(
図3参照)が設けられ、当該マイク42がゲーム装置10の外部の音を検出する。
【0047】
図2(a)は閉状態におけるゲーム装置10の左側面図であり、
図2(b)は閉状態におけるゲーム装置10の正面図であり、
図2(c)は閉状態におけるゲーム装置10の右側面図であり、
図2(d)は閉状態におけるゲーム装置10の背面図である。
図2(b)および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、
図2(a)に示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0048】
図2(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
【0049】
また、
図2(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
【0050】
また、
図1および
図2(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(
図2(c)参照)。
【0051】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0052】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。
図1および
図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0053】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0054】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左眼用画像と右眼用画像が表示される。具体的には、左眼用画像と右眼用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。または、左眼用画像と右眼用画像とが交互に表示される方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左眼用画像と右眼用画像とを左眼および右眼のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。
【0055】
本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右眼用画像と左眼用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左眼に左眼用画像をユーザの右眼に右眼用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。表示された同一の画像が右眼にも左眼にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切替えは、後述する3D調整スイッチ25によって行われる。
【0056】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0057】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0058】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。
【0059】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、かつ、立体視用画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。
【0060】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0061】
(ゲーム装置10の内部構成)
次に、
図3を参照して、ゲーム装置10の内部の電気的構成について説明する。
図3は、ゲーム装置10の内部構成を示すブロック図である。
図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0062】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LCD22及び/又は下側LCD12に出力し、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0063】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0064】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0065】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22及び/又は下側LCD12に当該画像を表示することができる。
【0066】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0067】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0068】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、直交する3軸方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0069】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0070】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しないアンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0071】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0072】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0073】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右眼用画像と左眼用画像とが、上側LCD22に出力される。
【0074】
より具体的には、LCDコントローラは、右眼用画像について縦方向に1ライン分の画素データを読み出す処理と、左眼用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右眼用画像と左眼用画像とを読み出す。これにより、右眼用画像および左眼用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右眼用画像の短冊状画像と左眼用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右眼に右眼用画像が、ユーザの左眼に左眼用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0075】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0076】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0077】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の内部構成の説明である。
【0078】
(画像処理装置の例示的な実施形態)
(立体視を提供するための処理の概略)
次に、本発明の例示的な実施形態の画像処理装置であるゲーム装置10において、画像処理プログラム70に従う処理の概略を説明する。また、この例示的な本実施形態では、以下で説明する処理(特に、後述する
図6A以降のフローチャートにおけるすべてのステップの処理)を情報処理部31が実行するものとして説明するが、このような処理のいずれも、情報処理部31以外のプロセッサや専用回路が実行するようにしてもよい。
【0079】
本実施形態において、本発明は、立体視可能に仮想空間を出力し得る画像処理装置の一例としてゲーム装置10を提供する。ゲーム装置10は、画像処理プログラム70(後述の「メモリマップ」についての記載および
図5を参照)を実行することで本発明に係る例示的な画像処理を達成する。画像処理プログラム70は、アプリケーションプログラムとしてのゲームプログラム71が担うゲーム処理の過程で呼び出されるか、または、そのゲームプログラム71の機能の一部を担うプログラムとして実行されることで、本発明の例示的な実施形態の画像処理を達成するためのプログラムである。画像処理プログラム70とゲームプログラム71との間で行われる機能の分担は、任意に変更し得る。
【0080】
ゲーム装置10は、そのゲーム処理の過程において、一連の仮想空間を描画した結果としての画像を立体視可能な状態でその表示面(例えば、上側LCD22)に提供する。ここで、ゲーム装置10が、
図4A以降の図を参照しつつ、仮想空間の画像を描画し、表示する過程の一例を説明する。
【0081】
アプリケーションプログラムは、ワールド座標(すなわち、図形の入出力を行うために使われる、装置に依存しない直交座標)で規定される3次元シーンを、表示装置の表示面上に2次元のシーンとして表現する処理を規定している。すなわち、ワールド座標に配置されたオブジェクトは、必要に応じて、いくつかの空間すなわち座標系へと変換を受ける。また、ゲームプログラム71は、ゲーム装置10が有する表示面(例えば、上側LCD22)に、GUI用のアイコンなどの画像(例えば、後述するような、
図4Aに例示されるオブジェクトOBJ1の2次元画像)を表示する場合がある。このようなアイコンは、ユーザが視認しそれに対して所定の操作を行なうために表示面上での所望の位置・大きさを維持しながら表示される必要があり、かつ、そのようなアイコンを立体視可能な形式で提供することが所望される場合もある。
【0082】
この例示的な実施形態に係るゲーム装置10は、アプリケーションプログラムの進行に応じて、仮想空間を、仮想ステレオカメラによって所望の視点から撮影することによって、立体視可能な形式で表示面に提供する。そして、ゲーム装置10は、仮想ステレオカメラで撮影された画像を表示面に立体視可能な形式で表示しつつ、GUIとして求められる種々の要求を充足する態様で、必要なGUI用画像も立体視可能な形式で表示する。
【0083】
まず、ワールド座標で規定される3次元シーンを、表示面(例えば、上側LCD22)上に2次元シーンとして表示するアプリケーションプログラムによって規定される処理、および当該2次元シーンを立体視可能な形式で提供する一般的な処理を説明する。その後、GUI用オブジェクトに関する特徴的な処理について、説明する。
【0084】
ゲーム装置10で行なわれる情報処理過程において、そのアプリケーションプログラム(例えば、ゲームプログラム71)の要求に応じ、所定のオブジェクトが、ワールド座標に配置される。この所定のオブジェクトが、例えば、3次元仮想オブジェクトであれば、その3次元オブジェクトは、ローカル座標系で規定されるモデルで表現されており、そのモデルに基づき、ワールド座標系に配置される。
【0085】
観察者の視点(仮想カメラ)から捉えられた仮想空間の部分空間のみが、最終的に、ゲーム装置10が有する表示装置の表示面(例えば、上側LDC22)に表示される。この仮想カメラは、ワールド座標系における位置および方向を有しており、その位置および方向は、その仮想カメラを位置づけ、方向づけるために使用される。この仮想カメラおよび全てのモデルは、ビュー座標変換を受ける。ビュー座標変換は、ワールド座標から、仮想カメラを原点に位置づけた所定の座標系へと変換する処理である。この変換後の空間は、カメラ空間(カメラ座標系)と呼ばれる。
【0086】
このビュー座標変換は、例えば、仮想カメラを、z軸の正方向に向かせて、その際にy軸が上方向とし、x軸がその左方向となるように、方向づける。その3軸の実際の方向づけは、アプリケーションプログラムの具体的な仕様に依存して、若干の相違を有する場合がある。例えば、その仮想カメラを原点に位置づけ、その仮想カメラを、z軸の負方向を向かせ、その際にy軸が上方向とし、x軸がその右方向となるように、方向づけてもよい。
【0087】
次いで、必要に応じて、いわゆる頂点シェーディング処理が行なわれてもよい。その後、ゲーム装置10の情報処理部31は、投影処理(プロジェクション)を行なう(ビューボリュームを単位立方体(カノニカルビューボリューム)に変換する)。実空間の物体の視覚的なとらえ方(遠近)を再現するために、この投影処理には、通常、透視投影が利用される。
【0088】
透視投影では、視点(仮想カメラ)から離れたオブジェクトほど、そのオブジェクトは、投影後に、より小さく見える態様で処理が行なわれる。幾何学的には、その透視投影におけるビューボリュームは、錐台である。
【0089】
そのような態様の投影を利用して得られた画像の一例が、
図4Cに示される。
図4Cは、仮想オブジェクトが透視投影に基づいて描かれた画像が、上側LCD22に表示された様子の一例を示す模式図である。具体的には、ビルを模した仮想オブジェクトOBJ2が仮想空間に配置された3次元シーンが、
図4Cに示されている。
【0090】
また、
図4Dは、
図4Cに示された画像を得る場合に想定されるビューボリュームの一例を示す模式図である。この模式図は、視点O(仮想カメラBCの位置)、ファークリップ面FCと、ニアクリップ面NCと、投影面ABであるときに、所定の画角で規定されたビューボリュームを例示する。
【0091】
立体視可能な形式で右眼用画像および左眼用画像を生成するためには、その画像を生成するための仮想ステレオカメラ(右仮想カメラRCおよび左仮想カメラLC)が、必要である。この
図4Dは、この仮想ステレオカメラの設定を規定するための基準となる仮想カメラBCのビューボリュームを例示している。すなわち、これは、仮想カメラBCの位置を、原点にとるビューボリュームである。このようなビューボリュームを、単位立方体に変換することで、オブジェクトが視点から近位に配置される場合と比べ、遠位に位置づけられた同一オブジェクトが小さく表示される画像が得られる。
【0092】
本例において、右仮想カメラRCおよび左仮想カメラLCの位置の中点が、仮想カメラBCの位置と対応づけられる。また、本例の場合、右仮想カメラRCの位置と左仮想カメラLCの位置を結んだ直線は、投影面ABと平行である。
【0093】
右仮想カメラRCおよび左仮想カメラLCは、仮想カメラBCのビューボリュームと類似のビューボリュームをそれぞれ構成する。これらのビューボリュームは、投影面ABを、仮想カメラBCのビューボリュームと共有する。このビューボリュームについて詳細は、後述する。いずれにしろ、これらの2種類のビューボリュームを利用することにより、すなわち、複数の視点(仮想カメラ)に基づいて、同一対象(被写体)を捉えて投影面に透視投影することにより、両眼視差を生じる立体視用画像が生成される。複数の視点に基づいた画像のそれぞれは、以下のような手順によって、行なわれる。
【0094】
投影処理後、仮想空間に配置されたモデルは、正規化装置座標に位置づけられる。本明細書で使用される場合、「正規化装置座標」とは、中間座標系で指定され、所定の範囲(代表的には、0から1まで)に正規化される装置座標をいう。正規化装置座標で表された表示画像は、どの装置空間でも同じ相対位置に表示される。また、ここで、「装置座標」とは、装置に依存した座標系で指定される座標をいう。この正規化装置座標で定義付けられたオブジェクトを含む仮想空間は、表示装置に非依存的にその表示面の所定の位置にその仮想空間に対応する像を表示することができる。
【0095】
正規化装置座標で規定された仮想オブジェクトは、必要に応じてクリッピング処理を受けた後、装置座標(スクリーン座標)にマッピングされる。具体的には、それらのオブジェクトは、表示装置(例えば、上側LCD22)の規格・設定に合致するように、並進操作・拡大縮小操作を経て、表示面を規定する2次元座標として装置座標で規定される(なお、奥行き方向の情報を付加する場合は、ゲーム装置10の任意の記憶領域にその値を保持し得る)。装置座標としては、例えば、上側LCD22の表示域の中心を原点としてその表示面に平行なxy平面で表示面として規定され得る。
【0096】
ゲーム装置10は、仮想カメラ間隔を反映する右眼用画像および左眼用画像を上側LCD22に表示する。右眼用画像および左眼用画像は、視差バリアの作用により、ユーザの右眼および左眼のそれぞれに認識され、両眼の各々に知覚された画像は、両眼視差の作用によって立体感を引き起こす。ゲーム装置10が、立体視可能な態様で、仮想空間を描画する概略は、以上のとおりである。
【0097】
(仮想オブジェクトについて立体視可能な表示を提供する際の新規な特徴)
上述したように、透視投影を利用して3次元空間を表現する場合、同一のオブジェクトであっても、近位で配置された場合よりも遠景で配置されたときに、小さく表示される効果がともなう。そして、このように描画された画像に基づいて立体視用画像を生成した場合には、そのサイズが小さくなる効果を引き継ぐ態様で立体視を提供する。例示的実施形態では、ゲーム装置10は、この透視投影に従って描かれた3次元空間に配置される仮想オブジェクトが立体視可能な態様でその表示面に表示されていても、その透視投影の設定に影響を与えることなく、所定のオブジェクトを表示面上で所定の大きさ・位置を維持しつつ立体視可能な形式で同一の表示面に表示することできる。
【0098】
次に、その効果を与え得る技術的な特徴についてより詳細に説明する。
【0099】
図4Aは、2次元画像として提供されたGUI用の仮想オブジェクトの一例を示す模式図である。ここで示される仮想オブジェクトOBJ1は、視覚的に捉えられる形状およびその色の濃淡を表現するための画像データとして規定される。
【0100】
具体的には、仮想オブジェクトOBJ1のデータは、矩形の外形を有している構造体であって、手前側に迫り出した部分を有するような陰影が付けられて表現された図形を示すデータである。仮想オブジェクトOBJ1は、表示装置の表示面(例えば、上側LCD22)の所定の位置に表示され、ゲーム装置10で行なわれる処理を、視覚情報を利用しながら制御するためのアイコン(本例では、ボタンを模した画像)として機能する。このアイコンに対して、ユーザは、ゲーム装置10の所定の入力手段(例えば、タッチパネル13を介して操作可能な、表示面上で表されるカーソル)を用いて操作し得る。
【0101】
なお、ここで、GUI用の画像としては、押しボタン機能を担うためのGUI用画像を例示したが、その例に限られない。例えば、そのようなGUI用の画像は、ユーザに所定の情報を表示する表示域、所定のパラメータを操作する可動スライダを模した画像であり得るが、他の機能が付与された画像であってもよい。
【0102】
ゲームプログラム71の動作の過程で生じる要求に応じて、上記GUI用の仮想オブジェクトOBJ1は、上側LCD22に表示される。視差バリアを無効にした場合は、画像は平面的に表示される。
図4Bは、視差バリアが無効となっている際に、上側LCD22にオブジェクトOBJ1が表示されている例示的な位置を示す模式図である。そして、アプリケーションプログラムの要求に含まれる設定を前提に、3D調整スイッチ25のスライダ25aの位置に応じて、仮想オブジェクトOBJ1は、立体視可能な形式で、上側LCD22に表示される。
【0103】
この仮想オブジェクトOBJ1に対応する像が、立体視可能な態様で上側LCD22に表示される場合、3D調整スイッチ25のスライダ25aの位置に応じてその立体視用画像が生成される。仮想オブジェクトOBJ1に割当てられたGUIとしての機能を提供するため、仮想オブジェクトOBJ1は、表示面としての上側LCD22における位置、およびそこでの表示時の大きさを、所定の範囲に収める必要がある。ここで、所定の大きさとは、その仮想オブジェクトOBJ1の画像がGUI用のアイコンとしての機能を果たす上で十分に視認でき、必要に応じて操作することが可能な大きさである。
【0104】
ゲーム装置10は、この仮想オブジェクトOBJ1を立体視可能な態様で上側LCD22に表示する場合、概ね次の手順に従う。
【0105】
アプリケーションプログラム(ゲームプログラム71)が有する設定に基づき、仮想オブジェクトOBJ1は、仮想空間における位置情報が指定される。そして、その位置情報に従って、平行投影を利用した投影処理を行う。具体的には、ゲーム装置10は、例えば、ビュー座標変換後に、投影面(代表的には、基準面ABに対応する位置に存在し、事実上、上側LCD22に対応する面としてみなし得る面として取り扱われ得るがこの例に限られない)に対して、仮想オブジェクトOBJ1を直投影(平行投影)する。この直投影の主要な特徴は、平行線が変換後も平行に保たれることである。この変換は、一般にプロジェクション座標変換と呼ばれるものである。
【0106】
次に、立体視可能な形式の画像を提供するために、ゲーム装置10の情報処理部31は、投影面に平行投影された仮想オブジェクト
OBJ1の像の位置を基点にして、その投影面上を所定の方向、移動量で平行移動させる。ゲーム装置10は、仮想オブジェクトOBJ1について、立体視可能な画像を提供するための移動量および方向を決定するのに、立体視可能な態様な画像群を提供するための仮想ステレオカメラの設定を利用する。
【0107】
具体的には、その方向および移動量は、次のような方法により算出する。その算出方法を説明するために、任意点の仮想オブジェクトに設けられるべき、右眼用画像と左眼用画像との間における当該オブジェクトの像(対応点)のずれ量の求め方について説明する。
図4Eを参照しつつ、この説明を行なう。
【0108】
図4Eは、右仮想カメラRCおよび左仮想カメラLCのそれぞれのビューボリュームと、それぞれの仮想カメラの位置を求めるための基準となった仮想カメラBCのビューボリュームとを示す模式図である。いずれのビューボリュームも、ファークリップ面FCと、それに平行なニアクリップ面NCと挟まれている。その両クリップ面と平行な基準面ABの位置に投影面(上側LCD22の表示面に対応する)が位置づけられている。
【0109】
まず、各仮想カメラからみて基準面より近位にある仮想オブジェクトの代表点M1において、立体視可能な形式であるために、右眼用画像および左眼用画像に投影された像の間に生じさせるべき水平方向(x軸方向)のずれ量について説明する。
【0110】
代表点M1を、投影面(ゲーム装置10の表示面に対応する位置にある面)よりも手前に位置する感覚(奥行感の一種)を与えるように、ゲーム装置10の表示面に表示する条件を算出するために、次のモデルを想定する。
【0111】
仮想カメラからd1だけ離れた代表点M1の像を、投影面より手前に表示するには、右眼用画像および左眼用画像において、その仮想カメラ(右仮想カメラ、左仮想カメラ)と代表点M1とを結ぶ直線と基準面との交点(右仮想カメラについては、点R1であり、
左仮想カメラについては、点L1である)の位置に、代表点M1の像を描画する。すなわち、右眼用画像および左眼用画像に投影された像が、仮想カメラBCに基づいて投影された像の位置を基点とすると、右眼用画像においては左方向、左眼用画像においては右方向に移動した位置に描画される。そして、右眼用画像および左眼用画像に投影された像の間に生じている水平方向のずれ量が、長さR1L1が必要であることが理解される。
【0112】
この長さR
1L
1は、仮想カメラ間隔Iと仮想カメラまでの距離Dを用いると、次のように表現される:
R
1L
1=I・(D−d
1)/d
1 式(1)
ただし、D≧d
1
【0113】
同様に、基準面(上側LCD22)より奥(視点からみて遠位)に(距離d
2だけ離れて)位置する仮想オブジェクトの代表点M2についても、そのずれ量R
2L
2は、次式で表現される:
R
2L
2=I・(d
2−D)/d
2 式(2)
ただし、D<d
2
以下、距離R
1L
1およびR
2L
2を算出するように求められたずれ量を総称してΔX’として表記する。なお、この場合においては、右眼用画像および左眼用画像に投影された像が、仮想カメラBCにより投影された像の位置を基点とすると、右眼用画像においては右方向、左眼用画像においては左方向に移動した位置に描画される。
【0114】
したがって、立体視可能な画像を得るためには、投影面に平行投影して得られた像を、右眼用画像と左眼用画像との間で、上述したような方向に、総計ΔX’のずれ量が生じるように、それらの画像を生成する。
【0115】
本実施形態におけるゲーム装置10は、上述のようなΔX’の計算方法と類似の計算方法を利用して、GUI用の仮想オブジェクトOBJ1について立体視可能な形式な画像を生成する。この点を、
図4Fを参照しながらさらに説明する。
【0116】
図4Fは、仮想オブジェクトOBJ1が、表示面から手前に迫り出すように立体視可能な態様で提示されるためのずれ量ΔXを説明するための模式図である。
【0117】
仮想オブジェクトOBJ1は、アプリケーションプログラムで規定される初期値として、またはそれにより動的に決定されて得られた値として、その位置情報を有している。この位置情報は、代表的には、ワールド座標系の位置情報、またはそのワールド座標系の座標と対応づけられ得る、ゲーム装置10の表示装置の表示面(上側LCD22)の座標および奥行き情報(例えば、Z値)として規定され得る。
【0118】
この例示的実施形態において、仮想オブジェクトOBJ1は、GUI用のアイコンとして表示面(例えば、上側LCD22)に表示される。ここで、この仮想オブジェクトOBJ1は、上述の代表点M1またはM2の位置に対応する奥行き値が与えられている。表示面から手前に迫り出すように立体視可能な態様で提示される場合は、代表点M1に対応する奥行き値が与えられている。
【0119】
具体的には、仮想オブジェクトOBJ1は、上述のように2次元画像の形式で与えられており、例えば、メインメモリ上にその画像と対応付けて、代表点M1およびM2の位置に対応する奥行き値を有している。そして、仮想オブジェクトOBJ1は、この奥行き値(例えば、
図4Eで示された系と同様の系を考えた場合、d
1およびd
2)を有するとき、その奥行き値と対応付けられるずれ量ΔXを、ΔX’を求めるのと同様に、仮想カメラ間隔IおよびよりD、得られた奥行き値(d
1またはd
2)に基づいて計算する。すなわち、情報処理部31は、仮想ステレオカメラの設定と奥行き情報から、そのずれ量ΔXを算出する。そして、ずれ量ΔXに基づいて、仮想オブジェクトOBJ1の投影面(例えば、表示面である上側LCD22に対応する)上を平行移動する。
【0120】
本実施形態においては、投影面に平行投影して得られた像を、右眼用画像および左眼用画像のそれぞれにおいて、ΔX/2ずつ、平行移動する。そして、移動する方向は、基準面より手前に迫り出すように立体感を得る場合は、右眼用画像および左眼用画像に投影された像が、仮想仮想オブジェクトOBJ1を投影面に平行射影した位置を基点とすると、右眼用画像においては(像に対して)左方向、左眼用画像においては右方向に移動した位置に描画される。
【0121】
具体的には、
図4Fに示された例により、説明される。この模式図において、本図は、3段構成の模式図であるが、それぞれが、上側LCD22を示している。
【0122】
本図の中段は、上側LCD22を投影面としたときに、その投影面上に平行射影された仮想オブジェクトOBJ1の位置Pを模式的に示している。右眼用画像および左眼用画像では、この位置Pを基準として、その像が平行移動される。本図の上段は、立体視を提供するために、上側LCD22に右眼用画像が表示されたときの仮想オブジェクトOBJ1の位置を示している。仮想オブジェクトOBJ1は、中段で示された位置から、紙面に向かって左側にΔX/2だけ平行移動した位置に表示されている。また、本図の
下段は、立体視を提供するために、上側LCD22に左眼用画像が表示されたときの仮想オブジェクトOBJ1の位置を示している。仮想オブジェクトOBJ1は、中段で示された位置から、紙面に向かって右側にΔX/2だけ平行移動した位置に表示されている。このように、総計ΔXのずれ量(本図の中段を参照)が、右眼用画像と左眼用画像との間に生じる。このような構成によって、基準面より手前に迫り出すように立体感が、仮想オブジェクトOBJ1に与えられる。
【0123】
他方、基準面より奥に仮想オブジェクトを配置した立体感を得たい場合は、右眼用画像および左眼用画像に投影された像が、仮想オブジェクトOBJ1を投影面に平行射影した位置を基点とすると、右眼用画像においては(平行投影された像に対して)右方向、左眼用画像においては左方向に移動した位置に描画される。
【0124】
図4Gは、平行投影された仮想オブジェクトOBJ1が、透視投影に基づき表示された仮想オブジェクトOBJ2と重ね合わされて表示面(上側LCD22)に表示されている様子を示す模式図である。
図4Cに示されるように、透視投影を利用して描かれた仮想オブジェクトOBJ2が透視投影に基づいた変換を介して立体視画像が提供される場合であっても、仮想オブジェクトOBJ1は、立体視可能な形式で表示面に表示されながらも、その表示面での大きさや、相対位置は、所定の範囲に保たれることが可能である。
【0125】
(メモリマップ)
ここで、ゲームプログラムの実行中にメインメモリ32に記憶される主なデータについて説明する。
図5は、ゲーム装置10のメインメモリ32のメモリマップを示す模式図である。
図5に示されるように、メインメモリ32には、ゲームプログラム
71、画像処理プログラム71、仮想オブジェクト情報72、各種変数73等が記憶される。
【0126】
画像処理プログラム70は、ゲームプログラム71のゲーム処理の過程で呼び出されるか、または、そのゲームプログラム71の一部として機能することで、本発明の例示的な実施形態の処理を担うプログラムである。
【0127】
ゲームプログラム71は、情報処理部31にゲーム表示処理を実行させるためのプログラムである。
【0128】
仮想オブジェクト情報72は、仮想オブジェクトに関連する情報であって、仮想オブジェクトの種別(ユーザーインターフェース用2次元画像、3次元モデルで表現される3次元オブジェクトなど)、3次元仮想オブジェクトである場合のその形状や模様を表すモデル情報(例えば、ポリゴンに関する情報)、仮想空間における仮想オブジェクトの位置情報などを含む。
【0129】
なお、位置情報は、いずれの座標系において規定されたものであってもよい。すなわち、位置情報を表すための位置座標は、その仮想オブジェクトの用途に応じて、ワールド座標系、カメラ座標系、正規化装置座標系、装置座標系などいずれの座標系によって規定されてもよい。画像処理プログラム70および/またはゲームプログラム71が、必要に応じて、いずれの座標系の入力であっても、相互に変換することが可能であり、その処理の流れの中で必要な形式で必要なデータが提供されれば足りる。また、仮想オブジェクトが、2次元画像データとして表現される場合、その2次元画像データは、視覚的に表現される図形の形状だけでなく、その色の情報なども含み、必要に応じて、奥行き情報(例えば、Z値)を保持することが可能である。
【0130】
各種変数73は、ゲームプログラム
71および画像処理プログラム
70の実行の際に用いられる各種変数である。
(例示的な処理についての具体例)
以下、
図6A以降のフローチャートを参照して、本発明の例示的実施形態の画像処理プログラムに基づいて実行される処理の流れを説明する。本図および後続の図では、「ステップ」を、「S」と略記する。なお、
図6A以降のフローチャートは、処理過程の単なる一例にすぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。
【0131】
図6Aは、本発明の例示的実施形態であるゲーム装置10において、その画像処理プログラム70に基づいて行われるメイン処理の一例を示すフローチャートである。
【0132】
ステップ101において、情報処理部31は、アプリケーションプログラムの動作、入力操作に応じて、仮想空間内にオブジェクトを位置・姿勢を更新する処理を行なう。具体的には、例えば、ゲームプログラム71に規定される所定の処理に応じて、仮想空間内における仮想オブジェクトがワールド座標での位置・姿勢を変更する。
【0133】
ステップ102において、情報処理部31は、そのアプリケーションプログラムに規定される内容に従い、仮想カメラ間隔Iおよびその位置、方向も設定する。具体的には、情報処理部31は、左仮想カメラLCおよび右仮想カメラRCの位置、方向等を決定し、更新する。情報処理部31は、左仮想カメラLCおよび右仮想カメラRCの位置の決定を、例えば、仮想カメラBCの位置を最初に設定し、その位置を基準に相対的な位置関係から設定する方法で行なってもよい。また、情報処理部31は、左仮想カメラLCおよび右仮想カメラRCの位置の決定を、例えば、いずれか一方の位置を設定し、その設定された位置に対する相対位置によって他方の位置を決定する方法でおこなってもよい。情報処理部31は、この右仮想カメラと
左仮想カメラとの間の距離を、仮想カメラ間隔Iとして、ゲーム装置10の記憶領域(例えば、
図5のメモリマップにおける各種変数73)に記憶する。
【0134】
ステップ103において、情報処理部31は、3D調整スイッチ25のスライダ25aの位置に応じて、仮想カメラ間隔Iを更新する。当該仮想カメラ間隔Iの更新によって立体視した際に視認される立体感が変化する。すなわち、基準面から前に飛び出して見えるオブジェクトについては、その飛び出し量が、奥行き方向に見えるオブジェクトはその奥行き位置までの距離が変化することになる。仮想カメラ間隔が小さいほど立体感は小さくなり、大きいほど立体感は大きくなる。
【0135】
ステップ104において、情報処理部31は、更新された仮想カメラ間隔Iと、基準面から仮想カメラまでの距離Dとを取得する。距離Dは、
図4Eで示される例では、上側LCD22の位置と対応づけられる基準面ABと、仮想カメラBC(または、仮想カメラLC、仮想カメラRC)との距離を計算すればよい。
【0136】
ステップ105において、情報処理部31は、特別描画処理の対象となるオブジェクト(標的オブジェクト)が存在するか否かを判定する。具体的には、例えば、GUI用の仮想オブジェクトOBJ1(
図4A、
図4B参照)が、この標的オブジェクトに該当し得る。アプリケーションプログラムの設定において、仮想オブジェクトOBJ1が、表示面(上側LCD22)に表示される対象となっている場合(ステップ105,YES)に、当該標的オブジェクトが存在するとして、情報処理部31は判定し、その処理をステップ106に進める。他方で、そのような標的オブジェクトが表示面に表示される対象として規定されていない場合(ステップ105,NO)は、情報処理部31は、その処理をステップ109に進める。なお、標的オブジェクトは、1つのオブジェクトに限られず、複数のオブジェクトを含むオブジェクト群であってもよい。
【0137】
ステップ106において、情報処理部31は、特別描画処理を実行する。具体的には、情報処理部31は、
図6Bに例示されている一連の処理を実行する。以下、
図6Bを参照しつつ、その特別描画処理についてより具体的に説明する。
図6Bは、特別描画処理のフローチャートの一例である。
【0138】
ステップ200において、情報処理部31は、立体視用画像における対応点の水平方向のずれ量(ΔX)の算出を行なう。具体的には、情報処理部31は、ステップ104において取得された更新された仮想カメラ間隔Iと、基準面から仮想カメラまでの距離Dに基づいて、対応点の水平方向のずれ量(ΔX)の算出する。このずれ量は、
図4Eから
図4Fまでを参照しつつ説明したように、標的オブジェクトが、立体視可能な態様で表示面に提示されるために規定される量である。なお、このようなずれ量の計算を、情報処理部31のうち、GPU312が担うことで、CPU311への負担を軽減できる効果が得られる。
【0139】
ステップ201において、情報処理部31は、標的オブジェクトと同時に上側LCD22に表示される仮想オブジェクト等が存在する否かを判定する。
【0140】
具体的には、情報処理部31は、アプリケーションプログラムの設定およびその動作で得られた所定のパラメータを参照して、仮想オブジェクトが配置され得る仮想空間の部分空間が標的オブジェクトと同時に描画される対象として規定されているか否かを判定する。情報処理部31は、そのような部分空間の存在が認められる場合(ステップ201、NO)は、情報処理部31は、その処理をステップ202に進める。逆の場合(ステップ201、YES)は、情報処理部31は、その処理をステップ203’に進める。
【0141】
ステップ202において、情報処理部31は、右仮想カメラRCの位置に基づき、仮想空間を撮影して、右眼用の立体視用画像の取得を行なう。具体的には、情報処理部31は、所定のオブジェクト(例えば、仮想オブジェクトOBJ2)を含む仮想空間に、右仮想カメラRCの位置を視点として透視投影を施すことを利用して右眼用画像を得る。
【0142】
ステップ203において、情報処理部31は、平行投影で得た標的オブジェクトの像をΔX/2だけ基準面上で平行移動して、投影面に像の書込みを行なう。
【0143】
ステップ204において、情報処理部31は、左仮想カメラLCの位置に基づき、仮想空間を投影して、左眼用の立体視用画像を取得を行なう。具体的には、情報処理部31は、所定のオブジェクト(上述の例では、仮想オブジェクトOBJ2)を含む仮想空間に、
左仮想カメラLCの位置を視点として透視投影を施すことを利用して左眼用画像を得る。
【0144】
ステップ205において、情報処理部31は、標的オブジェクトの平行投影で得た像をΔX/2だけ基準面上で平行移動して、投影面に像の書込みを行なう。そして、情報処理部31は、その後の処理として、ステップ107(
図6A)を行なう。
【0145】
他方、ステップ201において、情報処理部31が、標的オブジェクトと同時に上側LCD22に表示される仮想オブジェクト等が存在しないとした場合、情報処理部31は、ステップ203’およびその後のステップ205’を行なう。このステップ203’およびその後のステップ205’は、それぞれ、ステップ203およびステップ205と類似の処理である。ステップ203およびステップ205において、右眼用画像および左眼用画像を得る際に、情報処理部31は、標的オブジェクト以外の描画対象をそれらの画像に含めるべき対象として有していた。このステップ203’およびステップ205’が、ステップ203およびステップ205と相違する点は、そのような描画対象を有しない点である。したがって、ステップ203’およびステップ205’において、情報処理部31は、標的オブジェクトのみの像を含む立体視用画像を生成する。
【0146】
ステップ107において、情報処理部31は、立体視用画像を表示画面上に表示を行なう。具体的には、情報処理部31は、上述のように生成した右眼用画像および左眼用画像を、その画素を縦に1ライン毎に並んだ短冊状画像として分割し、分割された右眼用画像の短冊状画像と左眼用画像の短冊状画像とが交互に配置された画像を、上側LCD22の画面に表示する。
【0147】
ステップ108において、情報処理部31は、ゲーム処理を終了するか否かを判定する。具体的には、例えば、情報処理部31は、ゲーム処理を終了する旨のゲーム装置10に対するプレイヤの入力操作があった場合、またはゲーム進行が所定の条件(例えば、ステージをクリア)を満たした場合(ステップ108,Yes)、
ゲーム処理を終了する。他方、情報処理部31は、ゲーム処理を終了しない旨のゲーム装置10に対するプレイヤの入力操作があった場合、またはゲーム進行が上記所定の条件を満たしていない場合(ステップ108,No)、情報処理部31は、ステップ101に戻って、ステップ101〜107の処理を繰り返し行う。
【0148】
なお、ステップ109における処理は、情報処理部31は、標的オブジェクトがない状態で、ステップ202とステップ204とに相当する処理を行なうことで、仮想空間を表した立体視用画像を生成する。
【0149】
(本発明の例示的な実施形態によって奏される効果の一例)
この例示的な実施形態に係るゲーム装置10は、アプリケーションプログラムの進行に応じて、仮想空間のうち所望の部分空間の画像を、立体視可能な形式で表示面に提供する。そして、ゲーム装置10は、その部分空間に対応する画像を表示面に立体視可能な形式で表示しつつ、GUIとして求められる種々の要求を充足する態様で、必要なGUI用画像も立体視可能な形式で表示することができる。
【0150】
上述した特徴を有する実施形態では、アプリケーションプログラムの製作者が、表示面上の特定の位置を指定して表示したい場合に、立体視でどのように見えるかということと、表示面上のどこに表示されるかということを個別に考慮しなくとも、意図した位置にGUI用オブジェクトを配置することが行い得る。
【0151】
上述した実施形態において、情報処理部31は、上記ずれ量ΔXを2等分して得た距離だけ、仮想オブジェクトの像を投影面に平行投影した位置である基点から第1方向に平行移動して、右眼用画像を生成し、そのずれ量ΔXを2等分して得た距離だけ、仮想オブジェクトの像を上記基点から上記第1方向と逆の方向に平行移動して、左眼用画像を生成する。このような構成によって、ユーザは、違和感なく立体視を享受し得る。
【0152】
上述した実施形態において、ユーザは、ハードウェアとしての3D調節スイッチを操作することで、アプリケーションの動作を意識することなく、好適な立体視の効果を享受し得る。仮想ステレオカメラの設定を変更することなく、GUI画像の立体視の程度を調整し得る。
【0153】
上述した実施形態において、ずれ量ΔXなどの計算を、情報処理部31のうち、GPU312が担うことで、CPU311への負担を軽減し得る。
【0154】
上述した実施形態において、2次元画像に与えられた奥行き情報を与えれば、仮想ステレオカメラの設定に基づき、その2次元画像を立体視可能な形式で容易に表示し得る。
【0155】
上述の画像処理プログラムが有する機能を付与するコード集合体として提供されるプログラムが提供される場合、アプリケーションプログラムの製作者が、立体視でどのように見えるかということと、表示面上のどこに表示されるかということを個別に考慮することなく、表示面上の位置と奥行き情報との組合わせを与えるだけで、そのアプリケーションプログラムに対して簡便に所望のオブジェクトを含む立体視用画像を生成する機能を付与することが可能である。
【0156】
(変形例その他の事項)
上述の例示的な実施形態は、GUI用画像を平行投影することを利用した態様を例示したが、GUI用画像に限られず、任意の画像やオブジェクトに適用可能であり、その画像の表示面上の大きさや位置を自由に決めて立体視可能に表示面に表示したい場合には、本例を利用することで、利便性の向上した新規の画像処理装置等が提供され得る。
【0157】
上述の例示的な実施形態では、裸眼で立体視を提供する表示装置(上側LCD22)を用いたが、別の実施形態では、裸眼で立体視を提供する方式として本実施例ではパララックスバリア方式を用いたが、その他の方式(例えば、レンチキュラー方式)を用いてもよい。あるいは、本発明の画像処理プログラム等を、他の方式で表示装置における表示に適用してもよい。例えば、両眼視差を利用して立体視を提供するために、特殊な眼鏡が使用される形式(アナグリフ方式、偏光方式、時間分割シャッター方式など)で立体視が提供されてもよい。例えば、アナグリフ方式は、左眼用画像を、青色で描画し、他方、右眼用画像を、赤色で描画する。そして、観察者は、これらの画像をアナグリフ用眼鏡(左眼に赤色・右眼に青色のフィルタを施している眼鏡)を用いて観察することで、両眼視差による立体感が得られる。
【0158】
上記実施形態では、ゲーム装置10を用いて画像処理プログラム70について説明しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例えば、PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ等)において、本発明の画像処理プログラムを使用してもよい。
【0159】
また、上記実施形態では、一台の装置(ゲーム装置10)のみによってゲーム処理に伴う画像処理プログラムを実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行するようにしてもよい。
【0160】
なお、汎用的なプラットフォームにおいて本発明の画像制御プログラム等が使用される場合には、当該表示制御プログラムが、当該プラットフォームにおいて標準的に提供されるプログラムモジュールを用いることを前提として提供されてもよい。上述のようなモジュールによって機能が補完されることを前提に、上記画像処理プログラムから上述のようなモジュールに対応する機能を除いたものは、実質的にこの画像処理プログラムに相当すると理解されるべきである。
【0161】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。ここで、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて均等な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用されるすべての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。