(57)【特許請求の範囲】
【請求項１】
ｎ眼式の立体視映像表示装置に立体視画像を表示するために、オブジェクト空間の当該ｎ個の画像を生成する立体視画像生成装置であって、
前記オブジェクト空間内の仮視点の視線方向に対する前記オブジェクト空間内のオブジェクトの奥行情報を算出するための算出手段と、
前記オブジェクトを前記仮視点に基づく平面座標系に変換するための変換手段と、
前記仮視点の視線方向と垂直な面内に前記仮視点と所与の間隔を隔てて配置されるｎ個の視点の間隔である視点間距離を設定するための視点間距離設定手段と、
前記ｎ個の視点１つ１つに対して、前記視点間距離が大きくなるほどずらし量を大きく、前記奥行情報の示す奥行が大きくなるほどずらし量を小さくして前記オブジェクトの前記平面座標系における座標をずらす処理を実行することによって、前記ｎ個の視点に対応するｎ個の画像を生成するための画像生成手段と、
を備えることを特徴とする立体視画像生成装置。
【請求項２】
請求項１に記載の立体視画像生成装置において、
前記視点間距離設定手段が、前記オブジェクト空間における前記視点に関して設定される画角及び前記視点と画像生成用スクリーン間のスクリーン距離と、実空間におけるユーザの所与の想定瞳孔距離、ユーザと前記立体視映像表示装置間の所与の視聴距離及びユーザの前記立体視映像表示装置に対する所与の想定視野角と、に基づいて前記視点間距離を設定する、
ことを特徴とする立体視画像生成装置。
【請求項３】
請求項１又は２に記載の立体視画像生成装置において、
前記画像生成手段は、前記変換手段により平面座標系に変換された前記オブジェクトの所与の部分毎に前記ずらす処理を行うことを特徴とする立体視画像生成装置。
【請求項４】
請求項１〜３の何れか一項に記載の立体視画像生成装置において、
前記画像生成手段は、前記オブジェクトに対して、生成する画像上における画素の単位で前記ずらす処理を行うと共に、色の補間処理を行うことによって前記オブジェクトに対応するｎ個の画像を生成することを特徴とする立体視画像生成装置。
【請求項５】
ｎ眼式の立体視映像表示装置に立体視画像を表示するために、オブジェクト空間の当該ｎ個の画像をコンピュータに生成させるためのプログラムを記憶した、コンピュータ読み取り可能な情報記憶媒体であって、
前記プログラムは、
前記オブジェクト空間内の仮視点の視線方向に対する前記オブジェクト空間内のオブジェクトの奥行情報を算出するための算出手段、
前記オブジェクトを前記仮視点に基づく平面座標系に変換するための変換手段、
前記仮視点の視線方向と垂直な面内に前記仮視点と所与の間隔を隔てて配置されるｎ個の視点の間隔である視点間距離を設定するための視点間距離設定手段、
前記ｎ個の視点１つ１つに対して、前記視点間距離が大きくなるほどずらし量を大きく、前記奥行情報の示す奥行が大きくなるほどずらし量を小さくして前記オブジェクトの前記平面座標系における座標をずらす処理を実行することによって、前記ｎ個の視点に対応するｎ個の画像を生成するための画像生成手段、
として前記コンピュータを機能させるためのプログラムであることを特徴とする、
情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ｎ眼式の立体視映像表示装置に表示するために、オブジェクト空間のｎ個の立体視画像を生成する立体視画像生成装置等に関する。
【０００２】
【従来の技術】
近年では、コンピュータによって構築されたオブジェクト空間を立体的に表示する方法について様々な開発がなされている。この立体的な表示には、遠近感を幾何学的に計算する透視図法や陰影画法などの描写法によるものだけでなく、観察者の左右の目に意図的に異なる画像を認識させることによって両眼視差を引き起こし、立体視を実現するものもある。
【０００３】
両眼視差とは、顔に対する両目の配置位置の違いによって生じるものであり、左右の目が認識する対象物の位置や形状のずれを意味する。例えば、図１８に示すように、線分ＡＢの端点Ａ及びＢと左右の目Ｌ及びＲとの成す角の間に、∠ＡＬＢ＞∠ＡＲＢの関係が成り立つ場合、左目Ｌが認識する線分ＡＢの長さと比較して、右目Ｒが認識する線分ＡＢの長さは短くなる。このように、左右の目が異なる方向から同一の物体を同時に観察することによって物体を立体的に感じることができる。
【０００４】
一般的に、１つの平面的なディスプレイによってこのような両眼視差を引き起こす奥行感のある立体視画像を表示するためには、右目用の画像と、左目用の画像との２種類の画像を生成し、生成した各々の画像が対応する目に視認されるように設定する。例えば、図１９（ａ）に示すように、裸眼用の立体視映像表示装置（例えば、レンチキュラレンズ板を用いたもの）においては、表示する２種類の画像が打ち分けられて観察者の各目の位置で像を結ぶように設定する。したがって、コンピュータ上で構築したオブジェクト空間を立体視表示する場合には、単眼式の場合と異なり、左右の目に対応する視点をオブジェクト空間内に２つ設定し、それぞれの視点に基づく画像を生成する必要がある。
【０００５】
すなわち、まず、オブジェクト空間の座標系であるワールド座標系における一方の視点位置を設定し、当該視点の視線方向を決定した後、ワールド座標系に設定された各オブジェクトを当該視点の位置及び視線方向に基づく視点座標系に変換する。そして、当該視点に対するオブジェクトの奥行に合わせた透視投影処理を実行することにより、２次元の画面座標系に変換する。更に、画面座標系に変換された各オブジェクトの色や表面特性をメモリから読み出して描画し、当該視点に基づく画像を生成する。続いて、他方の視点を一方の視点が配置された位置から人間の目の開きと対応する距離だけ離れた場所に設定し、一方の目に対して実行した処理と同等の処理を実行することにより、他方の視点に基づく画像を生成する。
【０００６】
なお、以上のように、２種類の画像を左右の目にそれぞれ視認させて立体視映像を実現した場合、図１９（ａ）に示すように、観察者の目の位置をＡ及びＢの領域内に制限する必要がある。そこで、４眼式、５眼式、…といった具合に、ディスプレイに複数種類の画像を表示することによって、立体視映像の鑑賞領域を増加させることがある。具体的には、例えば、４眼式の立体視映像を実現するために、図１９（ｂ）に示すように、立体視映像表示装置に表示する４種類の画像が打ち分けられて、想定された視点位置Ａ，Ｂ，Ｃ，Ｄで像を結ぶように設定する。このため、コンピュータによって構築されたオブジェクト空間の立体視映像を実現する場合には、鑑賞領域及び観察者の両眼間隔を想定し、それに応じた視点位置をオブジェクト空間内に設定し、それら複数の視点に基づく画像を生成する。
【０００７】
【発明が解決しようとする課題】
このように、立体視画像を生成するためには、右目や左目、あるいは、より複数の目に対応する画像を生成しなければならず、その視点の数の増加に伴って、座標の変換処理や、メモリアクセスの回数が増加することとなる。したがって、例えば、プレーヤの入力指示に応じてリアルタイムに画像を生成するゲーム装置などに対して、多眼式の立体視画像を表示することは不向きであった。
【０００８】
また、図１８に示す線分ＡＢを線分ＬＲの垂直方向に平行移動させ、視点から遠ざける場合、∠ＡＬＢと∠ＡＲＢとの差は十分に小さくなるため、左右の目が各々で認識する線分ＡＢの長さ、あるいは見え方の差が小さくなる。このように、両眼視差は、その視点位置から遠く離れた対象物に対しては、小さくなることが一般的である。すなわち、視点に対するオブジェクトの位置が遠いほど、各々の視点に基づいて描き出される画像に大差がなくなり、冗長的な処理を繰り返すこととなる。
【０００９】
本発明の課題は、同等な計算、同じメモリへのアクセス等の処理を短絡化することによって、多眼式立体視画像を合理的に生成することである。
【００１０】
【課題を解決するための手段】
上記課題を解決するための第１の発明は、ｎ眼式の立体視映像表示装置に立体視画像を表示するために、オブジェクト空間の当該ｎ個の画像を生成する立体視画像生成装置であって、前記オブジェクト空間内の仮視点の視線方向に対する前記オブジェクト空間内のオブジェクトの奥行情報を算出するための算出手段（例えば、図９に示すレンダリング部２４２）と、前記オブジェクトを前記仮視点に基づく平面座標系に変換するための変換手段（例えば、図９に示すジオメトリ部２４０）と、前記仮視点の視線方向と垂直な面内に前記仮視点と所与の間隔を隔てて配置された当該ｎ個の視点１つ１つに対して、当該視点と前記仮視点の距離及び前記奥行情報に基づいて（例えば、発明の実施の形態における式（７）に基づいて）前記オブジェクトの前記平面座標系における座標をずらす処理を実行する（例えば、図９に示すレンダリング部２４２によって実行する）ことによって、当該ｎ個の視点に対応するｎ個の画像を生成するための画像生成手段と、を備える立体視画像生成装置である。
【００１１】
また、第８の発明は、ｎ眼式の立体視映像表示装置に立体視画像を表示するために、オブジェクト空間の当該ｎ個の画像を生成するための情報を記憶した情報記憶媒体であって、前記オブジェクト空間内の仮視点の視線方向に対する前記オブジェクト空間内のオブジェクトの奥行情報を算出するための情報と、前記オブジェクトを前記仮視点に基づく平面座標系に変換するための情報と、前記仮視点の視線方向と垂直な面内に前記仮視点と所与の間隔を隔てて配置された当該ｎ個の視点１つ１つに対して、当該視点と前記仮視点の距離及び前記奥行情報に基づいて前記オブジェクトの前記平面座標系における座標をずらす処理を実行することによって、当該ｎ個の視点に対応するｎ個の画像を生成するための情報（例えば、図９に示す画像生成プログラム４６）とを含むことを特徴とする情報記憶媒体である。
【００１２】
ここに、ｎ眼式の立体視映像表示装置とは、両眼視差を与えるためのｎ種類の画像を並べたり、合成することによって表示し、各々の目にそれぞれの画像を視認させるものである。例えば、パララックス・バリア方式、レンチキュラ方式等があり、本発明は、これらの立体視映像表示装置を特定するものではない。また、立体視映像表示装置は、色眼鏡を用いたアナグリフ方式であってもよい。この場合には、各視点に対応する画像を、視点の位置に応じて赤あるいは緑をベースとする画像にそれぞれ変換する。
【００１３】
また、ｎ個の視点と仮視点とが全て所与の距離離れていることとしてもよいし、ｎ個の視点の1つと仮視点との距離がゼロであってもよい。なお、仮視点との距離がゼロである視点に対応する画像は、仮視点に基づいて変換された画面座標系における各オブジェクトの座標をずらさずに生成する。また、オブジェクトとは、描画対象となるものを含み、ずらす処理の対象（単位）としては、画素単位、ポリゴンやスプライト単位、あるいはポリゴン群単位等、いずれのものであってもかまわない。
【００１４】
この第１または第８の発明によれば、仮視点に基づいて２次元の平面座標系（画面座標系）に変換されたオブジェクトを、視点と仮視点との距離、及び、当該オブジェクトの奥行情報に基づいて、画面座標系上にずらして表示することとした。したがって、視点と仮視点との距離と、奥行情報を代入することによって両眼視差を引き起こすずれ量を算出するための関数を設定すれば、奥行感のある立体視画像を表示するための、ｎ個の視点に対応する画像を簡単に生成することが可能となる。
【００１５】
また、ワールド座標系から視点座標系へ、更に、平面座標系（例えば、発明の実施の形態における画面座標系）への変換処理（すなわち、ジオメトリ処理）を仮視点に基づいて１度実行するだけで、ｎ個の画像を生成することが可能となる。このため、立体視映像を表示するために必要な複数の画像を、より高速に生成することができる。
【００１６】
また、例えば、第１の発明における各処理をハードウェアによって実現する場合、１つの視点に基づく画像を生成するための回路をｎ個設けて並列に処理する方法と比較して、回路構成が小規模ですむ上に、ほぼ同等の処理速度でｎ個の画像を生成することができる。すなわち、１つの画像を生成するための回路スケールで、ｎ個の回路によって並列に処理した場合とほぼ同等な速度で、同等な画像を生成することができる。更に、第８の発明のように、情報記憶媒体に記憶した情報によってｎ個の画像を生成することとすれば、処理を実行する装置の回路構成を選ぶことなくｎ個の画像を生成することができる。
【００１７】
このように、立体視映像を実現するために必要なｎ個の画像を、同等な計算や同じ元絵メモリへのアクセス等を短絡化して生成することができるため、本発明は、リアルタイムな画像処理を必要とするゲーム装置等に対しても有効である。すなわち、例えば、プレーヤが操作する自キャラクタに視点が置かれ、視点位置が様々に変化するゲームにおいても、当該自キャラクタの移動に合わせて仮視点の位置や視線方向を変更することによって、仮視点の位置の変更に応じた、ｎ個の視点に対応する画像を生成することができる。
【００１８】
また、第２の発明として、第１の発明の立体視画像生成装置において、前記画像生成手段は、前記変換手段により平面座標系に変換された前記オブジェクトの所与の部分毎に前記ずらす処理を行うこととしてもよい。なお、オブジェクトの所与の部分とは、当該オブジェクトを表現する画素、ポリゴンやスプライト、あるいはポリゴン群等、当該オブジェクトの任意の構成単位であってよい。
【００１９】
この第２の発明によれば、平面座標系に変換されたオブジェクトを、オブジェクトの所与の部分毎にずらして描画することができる。例えば、１つのオブジェクトであっても、その厚みや形状に応じて部分毎に奥行情報が異なる。すなわち、オブジェクトの部分毎に仮視点からの奥行が異なる場合には、平面座標系においてずれるべき量も、オブジェクトの部分毎に異なることとなる。したがって、オブジェクトの部分毎にずらす処理を実行することにより、よりリアルな立体視映像を生成するための立体視画像を生成することが可能となる。
【００２０】
なお、両眼視差は、両目が離れていることによって発生するものであり、各目によって認識される映像がずれる方向は、両目の配列と平行である。したがって、第３の発明として、第１または第２の発明の立体視画像生成装置において、前記ｎ個の視点は一列に配置され、前記画像生成手段は、前記ｎ個の視点の列方向に則して画像を生成することとしてもよい。このため、ずらす方向に沿って描画処理を行うことが可能となり、処理の効率化を図れる。
【００２１】
また、第１から第３の発明を迅速に実行するために、第４の発明として、第１から第３のいずれかの発明の立体視画像生成装置において、前記オブジェクトを前記画像生成手段が描画するために必要となる元絵情報を、随時更新記憶するための一時記憶手段（例えば、図９に示す元絵バッファ２４４）を備えることとしてもよい。
【００２２】
この第４の発明のように、平面座標系に変換したオブジェクトを一時記憶手段に記憶することとすれば、描画時に実行するずらす処理や色の補間処理を高速に実行することが可能となる。具体的には、座標変換やずらす処理を行う場合、各視点に応じて各オブジェクトをずらす方向及び量が異なるため、各視点に対応した描画の補間処理が必要となる。したがって、各視点に対応した描画を実行する度に、補間処理以前の元絵データが必要となる。このため、画像生成手段が補間処理を実行する際に、描画するために必要な元絵のデータを一時記憶手段に記憶しておくことによって、一般的に大容量で低速な元絵ＲＯＭ（元絵データを記憶したＲＯＭ）等へのアクセス回数を減らし、 効率的に描画処理を実行することが可能になる。また、補間処理を行わない場合であっても、元絵ＲＯＭが低速であったり、元絵ＲＯＭにＳＤＲＡＭのような部品を使いアクセス手順に制約がある場合などは、元絵のデータを一時記憶手段に記憶しておくことによって効率的に描画処理を実行することが可能になる。
【００２３】
また、ｎ個の画像を生成する処理を、ずらす方向に合せたライン毎（例えば、走査線毎）に行ってもよい。したがって、第５の発明として、第４の発明の立体視画像生成装置において、前記ｎ個の視点は、水平方向に一列に配置され、前記一時記憶手段は、前記元絵情報の内、前記水平方向と平行な直線上の部分のみを記憶することとしてもよい。
【００２４】
また、例えば、平面的なオブジェクトが、ワールド座標系において、仮視点の視線ベクトルに対して垂直に交わらずに斜めに存在するような場合、平面座標系に変換された当該オブジェクトは、その画素毎に持つべき奥行情報が異なる。すなわち、１つのオブジェクトであっても、その形状に応じて平面座標系においてずれるべき量も画素毎に異なる。したがって、第６の発明として、第４または第５の発明の立体視画像生成装置において、前記画像生成手段は、前記オブジェクトに対して、生成する画像上における画素の単位で前記ずらす処理を行うと共に、色の補間処理を行うことによって前記オブジェクトに対応するｎ個の画像を生成することとしてもよい。
【００２５】
また、仮視点の位置は、想定されるｎ個の視点それぞれに対して近いことが望まれる。したがって、第７の発明として、第１から第６のいずれかの発明の立体視画像生成装置において、前記仮視点は、前記ｎ個の視点の配列における中心に位置することとしてもよい。
【００２６】
【発明の実施の形態】
以下に、本発明の好適な実施形態について図面を参照して説明する。なお、以下では、２眼式の立体視映像表示装置に出力するために２つの立体視画像を生成する方法について説明する。しかし、本発明は、これに限定されるものではなく、４眼式、５眼式等の多眼式の立体視映像表示装置に出力する立体視画像を生成するものとしても適用可能なものである。
【００２７】
まず、本発明の原理について説明する。
図１は、両眼視差について説明するための図であり、右目Ｒと左目ＬをＸ軸上に並んで配置し、Ｘ軸に垂直かつ左右の目の略視線方向にＺ軸を示す。同図において、左右の目が対象物Ｔ及びＳを観察する場合、各対象物と各目との成す角∠ＴＬＳ＝αLと∠ＴＲＳ＝αR、あるいは、∠ＬＴＲ＝βTと∠ＬＳＲ＝βSは、それぞれ大きさが異なる。両眼視差とは、このように、対象物が反射する光のベクトルが左右の目に入り込む角度の違いによって生じるものであり、一般的に、αL−αR、あるいは、βS−βTによって定義される。また、両眼視差は、左右の目で認識する２つ以上の対象物の配置位置がずれて見えること、あるいは、１つの対象物を見た場合に、物体の形状が左右の目で異なって見えることによって顕著になる。
【００２８】
なお、瞳孔距離Ｒ−Ｌ＝Ａと比較して、両目の中心点と対象物との距離が十分大きい場合には、両眼視差を次の近似によって表現することができる。
βS−βT≒Ａ／Ｚs−Ａ／Ｚt＝Δθ  …（１）
ここに、Ｚsは、対象物ＳのＺ座標を、Ｚtは、対象物ＴのＺ座標をそれぞれ示している。また、ここでは、近似式ｔａｎΘ≒Θ（Θ→０）の関係を利用した。このように、両目から見た対象物の奥行（Ｚ座標）が十分に大きいと仮定すれば、両眼視差Δθを瞳孔間隔Ａとその対象物の奥行Ｚから簡単に算出することができる。例えば、図２（ａ）に示すように、水平方向に並ぶ左右の目Ｌ、Ｒが認識する映像を、両目から距離ｄ離れたスクリーン１００上にそれぞれ投影した場合、２つの目が同一のスクリーン１００上に認める１つの対象物１０２の像は、それぞれ水平方向にずれて投影される。この２つの像のずれる大凡の幅Δｘは、式（１）に従って算出された両眼視差Δθと、両目とスクリーン１００との距離ｄを掛け合わせる（ｄ・Δθ）ことによって算出することが可能となる。
【００２９】
また、同一のスクリーン上で対象物がずれる方向は、左右の目の配置と平行である。ただし、式（１）からわかるように、両眼視差Δθの符号は、図１において、対象物Ｓが対象物Ｔの手前にある場合と、奥にある場合とで異なる。すなわち、想定する注目位置に対して対象物が手前に存在するか、奥に存在するかに応じて、認識する像のずれる向きが変化する。例えば、投影するスクリーンの位置を想定注目位置とした場合、図２（ｂ）に示すように、対象物１０２がスクリーン１００よりも手前に存在する場合には、左目が認識する対象物１０２の像の位置よりも、右目が認識する対象物１０２の像の位置は、左寄りとなる。一方、対象物１０２がスクリーン１００よりも奥に存在する場合には、図２（ｃ）に示すように、左目が認識する対象物１０２の像の位置と比較して、右目が認識する対象物１０２の像の位置は、右寄りとなる。
【００３０】
本発明は、上述の理論を利用したものである。すなわち、コンピュータによって構築したオブジェクト空間内を、２つの視点の中間となる位置（以下、これを仮視点という）から見た座標系に変換し、更に、この仮視点に基づく１つの画面座標系に変換する。そして、各オブジェクトの奥行に応じて両眼視差Δθを算出し、画面座標系に変換された各オブジェクトを算出した両眼視差Δθに基づいて水平方向にそれぞれずらすことによって２つの視点に基づく画像を生成する。
【００３１】
例えば、図３に示すように、立方体５００と四角錐５０２が置かれているオブジェクト空間を立体視表示するために、本発明に従って右目用の画像と左目用の画像とを生成する場合について説明する。まず、オブジェクト空間内に、仮視点を設定する。図４は、オブジェクト空間における仮視点５０４と立方体５００、四角錐５０２との位置関係を示す平面図である。次いで、仮視点５０４に基づく視点座標系に変換し、仮視点に対する各オブジェクトの角度・向き等を計算すると共に、各オブジェクトを構成する頂点と仮視点との相対距離、すなわち、仮視点に対する各頂点の奥行情報を算出する。
【００３２】
そして、仮視点５０４に基づいて、立方体５００と四角錐５０２を１つのスクリーン上に透視投影変換することによって、画面座標系に変換する。図５（ａ）は、仮視点５０４に基づいて画面座標系に変換した立方体５００と四角錐５０２の平面画像の一例を示す図である。これらの画面座標系に変換された各頂点を、それぞれの頂点について算出した奥行情報に基づいて両眼視差Δθ及びずれ量Δｘを算出し、水平方向にそれぞれずらすことによって、左目用の立体視画像（ｂ）と、右目用の立体視画像（ｃ）を生成する。
【００３３】
以上の原理に従えば、オブジェクト空間の座標系であるワールド座標系から視点座標系への変換処理や、視点座標系から画面座標系への変換処理が、１つの視点に基づく処理のみですむ。また、描画するオブジェクトの表面特性や色、輝度等は、視点によらず一定であるため、これらの情報を記憶したメモリへのアクセスも１度ですませることができる。したがって、視点数に合わせて並列に画像生成処理を実行する場合と異なり、同等の計算、同じメモリへのアクセス等の処理が１度ですむため、その分処理を高速化することができる。
【００３４】
次に、両眼視差Δθを算出するための式（１）における、パラメータＡ（視点間距離）の設定について説明する。
図６は、オブジェクト空間に配置される仮視点５０４と、左右の目に対応する視点Ｌ及びＲとの位置関係を説明するための図である。同図に示すように、左右の目に対応する２つの視点の中心に仮視点５０４を設定する。また、２つの視点を結ぶ線分は、仮視点５０４の視線と垂直に交わる画面座標系の水平軸と平行である。換言すれば、２つの視点は、画面座標系の水平軸と平行に、仮視点５０４から距離ａ隔てた位置に想定される。なお、視点間距離Ａ＝２ａは、実空間における人間の平均瞳孔距離に基づいて設定、あるいは、算出する。
【００３５】
図７は、視点間距離を算出する方法を説明するための図である。（ａ）は、オブジェクト空間内における仮視点Ｏ1と２つの視点Ｌ1，Ｒ1及び透視投影変換するためのスクリーン（以下、単に面６００という）を示し、（ｂ）は、実空間における左目Ｌ2、右目Ｒ2とその中心点Ｏ2、及びディスプレイ（以下、単に面６０２という）を示す。同図において、添字１は、オブジェクト空間を、添字２は、実空間を意味する。また、面６００，６０２の中心点をＯs1,2とし、仮視点及び目の中心点Ｏ1,2から面６００，６０２に対する最大水平視野角を∠ＷLＯＷR＝２θ1,2とする。更に、面６００，６０２と仮視点Ｏ1及び両目の中心点Ｏ2との距離をｄ1,2と置く。なお、線分ＯＯsは、必ずしも面６００，６０２と垂直である必要はない。このため、ＯＯs≧ｄ1,2が成り立つ。
【００３６】
図７（ａ）に示すオブジェクト空間において、点Ｐ1の位置に存在するオブジェクトは、視点Ｒ1に基づいて面６００に投影した場合には、点Ｐ1Rの位置に、視点Ｌ1に基づいて投影した場合には、点Ｐ1Lの位置に投影される。この２つの点Ｐ1R、Ｐ1Lの差をΔＳ1とする。同様に、（ｂ）に示す実空間において、面６０２から浮き出て点Ｐ2に見える像の光は、点Ｐ2Rから出射して右目Ｒ2に入射し、点Ｐ2Lから出射して左目Ｌ2に入射する。この２つの点Ｐ2R、Ｐ2Lの差をΔＳ2とする。また、点Ｐから線分ＯＯsに対して面６００，６０２と並行に下した直線との交点をＰ´とし、ＯＰ´＝Ｄ，ＯsＰ´＝ΔＤとする。
【００３７】
以上の設定の元で、次の比例関係が成り立つ。
ΔＳ1／Ａ1＝ΔＤ1／Ｄ1  …（２）、
ΔＳ2／Ａ2＝ΔＤ2／Ｄ2  …（３）、
ΔＳ1／ΔＳ2＝ｄ1ｔａｎθ1／ｄ2ｔａｎθ2  …（４）、
また、立体視の条件として、
ΔＤ1／ΔＤ2＝ｄ1ｔａｎθ1／ｄ2ｔａｎθ2  …（５）、
を加えることにより、以上の式（２）〜（５）によって、
（Ａ2／ｄ2）・Ｄ1ｔａｎθ1
＝（Ａ1／ｄ1）・（ｄ1ｔａｎθ1−ΔＤ1ｔａｎθ2）  …（６）、
という関係式が導かれる。すなわち、オブジェクト空間における視点間距離Ａ1は、実空間における左右の目の開きＡ2と、画角θ1、視野角θ2、各面に対する距離ｄ1、ｄ2によって決定することができる。なお、以上の計算では、点Ｐ1の位置が任意であるため、Ｄ1及びΔＤ1の値は、ｄ1＝Ｄ1＋ΔＤ1を満たす範囲内で任意である。したがって、これらの値の設定によって、式（６）の関係が異なり、立体視映像が微妙に変化することとなるが、想定する注目点に合わせて設定するとよい。
【００３８】
なお、式（１）では、一方の目を基準とした場合における、他方の目が認識する画像のずれる量を示した。しかし、本実施の形態では、仮視点を基準として、画面座標系に変換されたオブジェクトの位置を左右にずらすことによって、２種類の立体視画像を生成する。このため、式（１）を以下のように変形する。
ΔθL,R＝（ａ／Ｚs）−（ａ／Ｚt）＝（ａ／Ｚs）−ｂ  …（７）
ここに、ΔθL,Rは、仮視点から見たオブジェクトに対して、左右の目が認識するオブジェクトの視差角を意味し、ａは、ａ＝Ａ1／２を満たす。また、対象物Ｔ、Ｓのいずれか一方を固定的に設定すればオブジェクトの奥行（Ｚ座標）が与えられるだけで視差角ΔθL,Rを算出することが可能となる。したがって、Ｚtを仮視点とスクリーン（面６００）との距離ｄ1として固定し、定数ｂ＝ａ／Ｚtに置きかえる。そして、Ｚsに各オブジェクトの奥行値を代入することで、そのオブジェクトに対する視差角ΔθL,Rを算出することができる。
【００３９】
また、画面座標系に変換された各オブジェクトを、２つの視点に対応させて左右にずらす量Δｘは、上述の通り（ｄ1・ΔθL,R）によって算出することができる。また、ｄ1は、仮視点と透視投影スクリーンとの距離である。しかし、このように、全てのオブジェクトのずれ量Δｘを距離ｄ1によって算出した場合、画面中央近傍に存在するオブジェクトのずれ量Δｘは、ほぼ正確に算出されるものの、画面の両端に存在するオブジェクトのずれ量Δｘは、本来ずれるべき量と比較して小さくなる。このため、立体感にむらが生じ、画面の側部に表示される画像ほど、中央近傍に表示される画像と比較して立体感のない平面的なものとなる。この問題を避けるために、図８に示すように、透視投影スクリーン１００上に透視投影された各オブジェクト１〜３を代表する座標点と、仮視点との間の距離ｋ1〜3を逐一算出し、各オブジェクトをΔｘ＝（ｋn・ΔθL,R）ずらすようにしてもよい。
【００４０】
次に、本発明を実現するための機能構成について説明する。なお、以下では、本発明をゲーム装置に適用する場合について説明する。また、表示方式としては、レンチキュラ方式によって表示することとする。すなわち、右目用の画像と、左目用の画像とを交互に合成した立体視画像を、レンチキュラレンズ板を備えるディスプレイに出力することによって、ディスプレイの各画素から出力される光に指向性を与え、右目用の画像が右目に、左目用の画像が左目に入射するように設定したものを用いることとする。また、描画対象となるオブジェクトは、ポリゴン群によって構成されるものとして説明する。しかし、本発明は、これらの事柄に限定されるものではない。
【００４１】
図９は、本実施の形態を実現するための機能ブロックの一例を示す図である。同図において、機能ブロックは、操作部１０と、処理部２０と、表示部３０と、記憶部４０とから構成されている。
【００４２】
操作部１０は、プレーヤが操作データを入力するためのものであり、操作部１０にて得られた操作データは、処理部２０に出力される。
【００４３】
処理部２０は、システム全体の制御、システム内の各ブロックへの命令、ゲーム処理、画像処理、音処理等の各種処理を行うものであり、その機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）、あるいはＡＳＩＣ（ゲートアレイ等）等のハードウェアや、所与のプログラムにより実現できる。また、処理部２０には、主に、ゲーム演算部２２、画像生成部２４が含まれる。更に、画像生成部２４は、ジオメトリ部２４０、レンダリング部２４２、元絵バッファ２４４、左目用バッファ２４６、右目用バッファ２４８、インターリーブ部２５０とから構成される。なお、これらの各機能ブロックそれぞれを、１つのＣＰＵ等によって実現する構成にしてもよいし、いくつかの機能ブロックを１つのＣＰＵ等によって構成してもよい。例えば、ゲーム演算部２２とジオメトリ部２４０とを１つの回路によって実現することも可能である。あるいは、処理部２０内の各機能ブロックそれぞれを、ＩＣ等を用いた個別の回路によって実現してもよい。
【００４４】
ゲーム演算部２２は、ゲームの進行処理、選択画面の設定処理、オブジェクト空間上での各オブジェクトやキャラクタの位置や向きを求める処理等の種々のゲーム処理を操作部１０から入力される操作信号や、記憶部４０から読み出すゲームプログラム４２等に基づいて実行する。また、この際、オブジェクト空間上での仮視点の位置や視線方向、画角等を、ゲームの進行に応じて決定する処理を行う。具体的には、例えば、プレーヤが操作する自キャラクタの目線を想起せしめるゲーム画像を表示するゲームにおいては、自キャラクタの移動位置に応じて、すなわち、操作部１０から入力される操作信号やゲームプログラム４２に従って仮視点の位置、視線方向、画角等を決定する。
【００４５】
そして、ゲーム演算部２２は、決定したオブジェクト空間内のワールド座標系における描画対象となるオブジェクトのデータ、仮視点の座標、視線方向、画角等のデータを画像生成部２４に出力する。
【００４６】
画像生成部２４は、ゲーム演算部２２から入力される各種データに基づいて画像を生成する処理を実行するものであり、記憶部４０内に記憶された画像生成プログラム４６に従って処理を実行する。
【００４７】
なお、画像生成部２４に含まれる元絵バッファ２４４は、画面座標系に変換された各オブジェクト（あるいは、ポリゴン）の走査線上に対応する元絵情報を記憶するための１次元配列のメモリである。そして、この元絵バッファ２４４は、レンダリング部２４２によって指定されたオブジェクトの１ライン分の色データ（ｒ、ｇ、ｂ）等を画面座標系における座標位置と対応付けて記憶する。また、左目用バッファ２４６、右目用バッファ２４８は、ディスプレイの各画素に対応する２次元配列のメモリであり、左目及び右目に対応する画像（フレーム）をそれぞれ記憶する。
【００４８】
ジオメトリ部２４０は、ゲーム演算部２２から入力されるオブジェクトの座標を、ワールド座標系から仮視点に基づく画面座標系に変換する。具体的には、ゲーム演算部２２から入力されたオブジェクトをポリゴンの単位に分解し、各ポリゴンの頂点をワールド座標系から仮視点の座標及び視線方向に基づく視点座標系に変換する。すなわち、仮視点を原点とする座標系における各ポリゴンの頂点位置を算出し、仮視点からのポリゴンの見え方等を決定する。そして、仮視点に対する各ポリゴンの頂点の奥行情報（Ｚ座標）を生成する。
【００４９】
続いて、ジオメトリ部２４０は、視点座標系における各ポリゴンの各頂点の座標を、奥行情報を残したままで画面座標系に変換する。例えば、前方、後方クリッピングを行ってビューボリュームを設定すると、１つの透視投影スクリーンに対して、そのビューボリューム内の各オブジェクト（ここでは、各ポリゴン）を透視投影変換することにより画面座標系（ｘ、ｙ）に変換する。すなわち、ジオメトリ部２４０は、モデリングされたオブジェクトの各頂点座標をワールド座標系から視点座標系へ、更に、２次元の画面座標系へと座標変換処理を行う。このとき、ジオメトリ部２４０は、各座標変換処理において、ポリゴンの色やマッピングするテクスチャ等を特定するための属性を、ポリゴンの頂点の座標データに付加して変換の前後で引継ぎを行う。更に、画面座標系における各ポリゴンの各頂点の座標データに、生成した奥行情報を付加してレンダリング部２４２に出力する。
【００５０】
レンダリング部２４２は、ジオメトリ部２４０から各ポリゴンの２次元座標データが入力されると、その入力されたポリゴンを左目用バッファ２４６及び右目用バッファ２４８にそれぞれ描画する。このとき、レンダリング部２４２は、画面座標系に変換された各ポリゴンの頂点座標に基づいて輪郭を構成し、更に当該ポリゴンの内部を画素単位に細分化する。また、当該ポリゴンの各頂点に付加された奥行情報から、当該ポリゴン内部に存在する全ての画素の奥行値ｚを算出する。そして、各画素の奥行値ｚに基づいてずれ量Δｘを算出し、当該ポリゴンの面内に存在する画素毎に、算出したずれ量Δｘ分ずらして左目用バッファ２４６及び右目用バッファ２４８にそれぞれ描画する。
【００５１】
具体的には、レンダリング部２４２は、図１０に示すように、走査線単位で描画処理を実行する。すなわち、レンダリング部２４２は、画面座標系におけるポリゴンの輪郭を形成し、１ラインずつ（ｙ軸毎に）描画する。このとき、走査線１２２上に存在するポリゴンの内部を画素単位に細分化する。そして、ポリゴンの頂点に付加された属性に基づいて元絵情報４８を読み出して、走査線１２２に存在する各画素の色を決定し、元絵バッファ２４４内の対応する画素位置にその決定した色データを一時的に記憶させる。更に、走査線１２２上のポリゴン１２４に対応する各画素の奥行値ｚを算出する。そして、画素毎にずれ量Δｘを求めると、各画素をそれぞれ左右にずらして、右目用バッファ２４６、左目用バッファ２４８の該当する走査線１２２上に描画する。
【００５２】
詳細には、レンダリング部２４２は、ジオメトリ部２４０から描画対象となる全てのポリゴンの２次元座標データが入力されると、全てのポリゴンについてｚソートする。例えば、各ポリゴンの頂点の奥行情報を比較し、その優先順位を決定する。優先順位とは、仮視点に対して近い位置に存在するポリゴンを優先的に表示するためにつける順位であり、仮視点から遠くに存在するポリゴン程、優先順位が低くなる。
【００５３】
続いて、レンダリング部２４２は、各ポリゴンの優先順位を決定すると、走査線単位で優先順位の低いものから順に描画処理を実行する。まず、処理する走査線において最も優先順位の低いポリゴンを選出し、当該ポリゴンの各頂点に対応する元絵情報４８を記憶部４０から読み出す。そして、画面座標系における当該ポリゴンを画素単位に細分化し、当該ポリゴンの各頂点の元絵情報４８に基づいて走査線上の各画素の色を決定する。更に、走査線上の画素の位置と、元絵バッファ２４４内の画素の位置とを対応付けて１ライン分の色データ（すなわち、当該ポリゴンの１ライン分の画像データ）を元絵バッファ２４４に記憶させる。なお、元絵バッファ２４４は、補完処理及びずらし処理を行う為に、画面の水平幅より大きいメモリ容量を持つことが望ましい。
【００５４】
更に、レンダリング部２４２は、画面座標系における当該ポリゴンの各頂点に付加された奥行情報に基づいて、走査線上の当該ポリゴンに対応する画素1つ１つの奥行値ｚを算出する。例えば、平面方程式ａｘ＋ｂｙ＋ｃｚ＋ｄ＝０を利用して、ポリゴンの奥行値ｚを、ｚ＝−（ａｘ＋ｂｙ＋ｄ）／ｃによって算出することができる。更に、走査線上の計算においては、１画素（ｘ）進む毎にΔｚ＝−ａ／ｃだけ加算することによって各画素の奥行値を求めることができる。そして、各画素に対して算出した奥行値を式（７）に代入して、視差角ΔθL,Rを算出する。次いで、この視差角ΔθL,Rに、仮視点と透視投影スクリーンまでの距離ｄ1を掛けることによって、当該ポリゴンに対応する１つの画素の水平方向へのずれ量Δｘを算出する。このように、走査線上の当該ポリゴンに対応する全ての画素について、奥行値を算出し、更にずれ量Δｘを算出する。
【００５５】
次いで、レンダリング部２４２は、元絵バッファ２４４に記憶されたポリゴンの１ライン分の画像データを左目用バッファ２４６、左目用バッファ２４８に、それぞれ描画する。ただし、このとき、レンダリング部２４２は、元絵バッファ２４４に記憶された画像データを画素毎に算出したずれ量Δｘだけ左右にずらして描画する。また、ずらす方向は、左目用バッファ２４６と、右目用バッファ２４８とで異なる。更に、ずらす方向は、視差角ΔθL,Rの値が正であるか負であるか、すなわち、該当するポリゴンの奥行が透視投影スクリーンに対して手前にあるか奥にあるかによって異なる。
【００５６】
したがって、レンダリング部２４２は、まず、元絵バッファ２４４のデータが記憶された画素位置を読み出し、その画素について算出したずれ量Δｘが正であるか負であるかを判定する。そして、その画素のデータを左目用バッファ２４６に描画する際には、元絵バッファ２４４内の画素のデータを、ずれ量Δｘが正である場合には右に、負である場合には左に、画素位置をずらして左目用バッファ２４６内に書き込む。逆に、右目用バッファ２４８に描画する際には、ずれ量Δｘが正である場合には左に、負である場合には右に画素位置をずらして書き込む。
【００５７】
ただし、この場合、元絵バッファ２４４内に記憶された画素単位のデータを書き込む先が、必ずしも左目用バッファ２４６・右目用バッファ２４８（以下、描画先バッファという）の画素の位置に１対１に対応するわけではない。その１つの理由としては、仮視点と各オブジェクトとの位置関係に応じて、元絵情報を拡大縮小させたり、回転させたことに伴い、色の補間処理が必要になるためである。また、もう１つの理由としては、画素毎に算出した奥行値ｚに基づくずれ量Δｘが、必ずしも画素単位の整数倍とは限らないためである。例えば、図１１に示すように、元絵バッファ２４４内の画素１３０のずれ量がΔｘ＝１．５であり、画素１３２のずれ量がΔｘ＝１であり、画素１３４のずれ量がΔｘ＝０．５である、といった具合に、各画素のずれ量Δｘが整数でない場合がある。
【００５８】
このため、レンダリング部２４２は、元絵バッファ２４４内の画像データを各描画先バッファに描画する際に、画素毎に色の補間処理を行う。すなわち、レンダリング部２４２は、元絵情報の拡大や縮小、回転に対応させて実行する色の補間処理と合わせて、各画素のずれ量Δｘに伴う色の補間処理を実行する。例えば、図１２（ａ）に示すように、元絵バッファ２４４上にある複数の画素の色データが、描画先バッファ１４０の１つの画素に寄与する場合には、寄与する度合に応じた色の合成処理を実行することによって当該画素の色を決定する。
【００５９】
具体的には、まず、元絵バッファ２４４上の左側の画素から順に処理を実行する場合には、元絵バッファ２４４上の画素ｐの座標ｘにずれ量Δｘを足した値（ｘ＋Δｘ）を整数値ηpと小数値ξpとに分割する。そして、描画先バッファの処理中の走査線上に存在する左から数えてηp番目の画素ｎ（＝ηp）について、画素情報Ｋpn＝（１−ξ）×（ｒp、ｇp、ｂp）を算出する。次いで、描画先バッファの該当する走査線上における次の画素ｎ＋１に対して画素情報Ｋpn+1＝ξ×（ｒp、ｇp、ｂp）を算出する。このように、元絵バッファ２４４内の画素ｐについて移動先を決定し、その画素ｐが移動先の画素ｎと重なる領域の度合に応じて画素ｐが移動先の画素ｎに与える色データの割合を決定する。更に、同様の処理を元絵バッファ２４４内の色データが記憶された全ての画素に対して実行する。
【００６０】
そして、描画先バッファ内の該当する走査線上では、各画素ｎにつき、元絵バッファ２４４内の各画素ｐが当該画素ｎに寄与する割合に応じて、与えられた画素情報（色データ）を混ぜ合わせることによって当該画素ｎの色データを決定する。例えば、描画先バッファ内の画素ｎに対して、元絵バッファ２４４の画素ｐ−１から小数値ξp-1によって算出された画素情報Ｋp-1nと、画素ｐから小数値ξpによって算出された画素情報Ｋpnと、画素ｐ＋１から小数値（１−ξp+1）によって算出された画素情報Ｋp+1nとが与えられた場合には、当該画素ｎの色データは、（ｒn、ｇn、ｂn）＝（Ｋp-1n＋Ｋpn＋Ｋp+1n）／（ξp-1＋ξp＋（１−ξp+1））によって決定される。
【００６１】
また、描画先バッファ内の１つの画素ｎに対して、元絵バッファ２４４内の画素ｐから小数値ξpによって算出された画素情報Ｋpnのみが与えられた場合、すなわち、１つの画素情報Ｋpnしか与えられなかった場合には、当該画素ｎの色データは、（ｒn、ｇn、ｂn）＝（Ｋpn＋０）／（ξp＋（１−ξp））＝Ｋpnとなる。なお、図１２（ｂ）に示すように、元絵バッファ２４４上の隣合う複数の画素の色データが、描画先バッファ１４０において、間欠的に分離して配置された場合には、色データが配置されなかった画素に対して、その隣接する画素の色データの平均色を与える。
【００６２】
以上の処理によって、当該ポリゴンの１ライン分の描画処理を終了すると、当該走査線上における次に優先順位の低いポリゴンの描画処理を行う。この際、レンダリング部２４２は、描画先バッファに対して上書きをする。すなわち、先に描画したポリゴンと、これから描画するポリゴンとが、走査線上の画素において重なる場合には、先に記憶された色データを消去し、現在処理中のポリゴンの色データを該当する画素に記憶する。このように、次々と優先順位の低い順から１つの走査線上に存在するポリゴンの描画処理を実行し（上書きし）、走査線上の全てのポリゴンについて描画処理が終了すると、次の走査線について同様の処理を実行する。そして、レンダリング部２４２は、全ての走査線に対する処理を実行することにより、最終的に２種類（右目用と左目用）の画像を生成し、それぞれ左目用バッファ２４６及び右目用バッファ２４８に記憶する。更に、インターリーブ部２５０に対し、生成した２種類の画像データを合成する指示を出力する。
【００６３】
インターリーブ部２５０は、レンダリング部２４２によって生成された左目及び右目用の２つの立体視画像をピクセル（画素）あるいはサブピクセル単位に交互に合成（インターリーブ）する処理を実行する。また、合成した画像データは、表示部３０に出力される。
【００６４】
表示部３０は、画像生成部２４（インターリーブ部２５０）から入力される画像データを表示画面に出力するものであり、透過型液晶パネル等に平板マイクロレンズ（レンチキュラレンズ）を装着したものによって実現できる。
【００６５】
記憶部４０は、ゲームプログラム４２の他、視点間距離を設定するための式（６）や、視差角ΔθL,Rを算出するための式（７）といった関数データ４４、後述する立体視画像生成処理を実行するための画像生成プログラム４６、各オブジェクトの表面特性や色、輝度、明暗といった情報を記憶した元絵情報４８、人の平均瞳孔距離Ａ2やディスプレイの最大視野角θ2といった種々のパラメータ等を記憶している。なお、この記憶部４０の機能は、ＣＤ−ＲＯＭ、ゲームカセット、ＩＣカード、ＭＯ、ＦＤ、ＤＶＤ、メモリ、ハードディスク等のハードウェアにより実現できる。
【００６６】
なお、元絵バッファ２４４は、小容量高速なメモリ（ＲＡＭ等）により実現する。通常、元絵情報は、大容量低速のＲＯＭ等に記憶されていることが一般的であるため、走査線上の元絵データを元絵バッファ２４４に記憶することによって、より高速に画像を生成することが可能となる。更に、一時的に元絵データを元絵バッファ２４４に記憶することによって、元絵データに基づく色の補間処理を実行する際に、視点の数と同数の画像を生成する際の元絵画素までのメモリアクセスの時間を軽減させることが可能となる。
【００６７】
次に、ジオメトリ部２４０及びレンダリング部２４２が実行する立体視画像生成処理について図１３に示すフローチャートに基づいて説明する。なお、本処理は、１フレームごとに実行するものである。
【００６８】
図１３において、ジオメトリ部２４０は、ゲーム演算部２２からワールド座標系におけるオブジェクトの座標、仮視点の座標、画角、視線方向等のデータが入力されると、各オブジェクトをポリゴン単位に分解し、各ポリゴンの座標を当該仮視点の座標及び視線方向に基づく視点座標系に変換する（ステップＳ１）。
【００６９】
次いで、ジオメトリ部２４０は、視点座標系に変換した各ポリゴンを透視投影変換することにより、各ポリゴンの奥行情報（Ｚ座標）を残したままで画面座標系に変換する。更に、画面座標系に変換された各ポリゴンの頂点座標を、ディスプレイの各画素に対応するスクリーン座標系に変換し、各ポリゴンの２次元座標データを生成する。そして、ジオメトリ部２４０は、各ポリゴンの頂点座標に奥行情報を付加して（ステップＳ２）、レンダリング部２４２に出力する。
【００７０】
レンダリング部２４２は、ジオメトリ部２４０から全てのポリゴンの２次元座標データが入力されると、ｚソートし（ステップＳ３）、各ポリゴンの優先順位を決定する。次いで、優先順位の低い順にポリゴンを選出し、当該ポリゴンの走査線に対応する部分の元絵情報４８を記憶部４０から読み出して、元絵バッファ２４４に書き込む（ステップＳ４）。そして、走査線上に存在する当該ポリゴンの各画素の奥行値ｚを算出し、各画素のずれ量Δｘを算出する（ステップＳ５）。
【００７１】
レンダリング部２４２は、画素毎のずれ量Δｘを算出すると、左目用バッファ２４６に対して、元絵バッファ２４４上の各画素の色データを所与の方向にずらして、色の補間処理をしつつ上書きをする（ステップＳ６）。同様に、右目用バッファ２４８に対して、ずれ量Δｘに基づいて所与の方向にずらして、色の補間処理をしつつ上書きをする（ステップＳ７）。
【００７２】
そして、レンダリング部２４２は、走査線上の当該ポリゴンの描画処理を終了したか否かを判定し（ステップＳ８）、終了していなければステップＳ５に戻り、走査線上の当該ポリゴンの描画処理を行う。終了している場合には、走査線上の全てのポリゴンに対して描画処理が終了したか否かを判定し（ステップＳ９）、終了していない場合には、ステップＳ４に戻り、走査線上において次に優先順位の低いポリゴンの描画処理を実行する。
【００７３】
一方、ステップＳ９において、該当する走査線上の全てのポリゴンに対する描画処理が終了した場合には、全ての走査線に対する描画処理が終了したかを判定し（ステップＳ１０）、終了していない場合には、ステップＳ４に戻って次の走査線に対する描画処理を実行する。全ての走査線に対する処理が終了した場合には、本立体視画像生成処理を終了する。
【００７４】
次に、本実施の形態をソフトウェア、すなわち、プログラムやデータ等に基づいて実現する場合におけるハードウェア構成の一例について、図１４を用いて説明する。すなわち、以下では、図９に示す処理部２０における各部の機能を実行するためのプログラムを情報記憶媒体に記憶し、ＣＰＵによって実現する場合について説明するが、本発明は、これに限定されるものではない。図１４に示す装置では、ＣＰＵ１０００、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６、ＶＲＡＭ１０２６、音生成ＩＣ１００８、ディスプレイコントローラ１０１０、Ｉ／Ｏポート１０１２、１０１４が、システムバス１０１６により相互にデータ入出力可能に接続されている。そして、ディスプレイコントローラ１０１０には、ディスプレイ１０１８が接続され、音生成ＩＣ１００８には、スピーカ１０２０が接続され、Ｉ／Ｏポート１０１２には、コントロール装置１０２２が接続され、Ｉ／Ｏポート１０１４には、通信装置１０２４が接続されている。
【００７５】
情報記憶媒体１００６は、プログラム、表示物を表現するための画像データ、音データ、プレイデータ等が主に格納されるものである。例えば、家庭用ゲーム装置では、ゲームプログラム等を格納する情報記憶媒体として、ＣＤ−ＲＯＭ、ゲームカセット、ＤＶＤ等が用いられ、プレイデータを格納する情報記憶媒体としてメモリカードなどが用いられる。また、業務用ゲーム装置では、ＲＯＭ等のメモリやハードディスクが用いられ、この場合には、情報記憶媒体１００６は、ＲＯＭ１００２になる。
【００７６】
コントロール装置１０２２は、ユーザがゲーム進行に応じて行う判断の結果を装置本体に入力するための装置である。
【００７７】
ＣＰＵ１０００は、情報記憶媒体１００６に格納されるプログラム、ＲＯＭ１００２に格納されるシステムプログラム（装置本体の初期化情報等）、コントロール装置１０２２によって入力される信号等に従って、装置全体の制御や各種データ処理を行う。また、ＣＰＵ１０００は、図９に示す処理部２０の処理を実行する。すなわち、ワールド座標系から視点座標系への変換処理、視点座標系から画面座標系、スクリーン座標系への変換処理といったジオメトリ処理を実行する。更に、スクリーン座標系に変換した各オブジェクト（例えば、ポリゴン）の画素単位でずれ量Δｘを算出し、左目用及び右目用にそれぞれずらして、各立体視画像を生成する。そして、生成した２種類の画像をピクセルあるいはサブピクセル単位でインターリーブし、画像データとしてＶＲＡＭ１０２６内のフレームバッファに格納する。
【００７８】
ＲＡＭ１００４は、このＣＰＵ１０００の作業領域等として用いられる記憶手段であり、情報記憶媒体１００６やＲＯＭ１００２の所与の内容、あるいはＣＰＵ１０００の演算結果が格納される。
【００７９】
ＶＲＡＭ１０２６は、図９に示す、元絵バッファ２４４、左目用バッファ２４６、右目用バッファ２４８を記憶領域として備える。また、ＣＰＵ１０００（図９に示すインターリーブ部２５０）によって生成された１フレーム分の画像データを格納するためのフレームバッファを備える。
【００８０】
更に、この種の装置には、音生成ＩＣ１００８とディスプレイコントローラ１０１０とが設けられていて、ゲーム音やゲーム画像の好適な出力が行えるようになっている。音生成ＩＣ１００８は、情報記憶媒体１００６やＲＯＭ１００２に記憶される情報に基づいて効果音やバックグラウンド音楽等のゲーム音を生成する集積回路であり、生成されたゲーム音は、スピーカ１０２０によって出力される。また、ディスプレイコントローラ１０１０は、ＶＲＡＭ１０２６内のフレームバッファに格納された画像データを表示出力するための集積回路である。またディスプレイ１０１８は、レンチキュラレンズ板、液晶パネルを用いた平面ディスプレイ等により実現できる。
【００８１】
また、通信装置１０２４は、ゲーム装置内部で利用される各種の情報を外部とやり取りするものであり、他のゲーム装置と接続されてゲームプログラムに応じた所与の情報を送受したり、通信回線を介して、ゲームプログラム等の情報を送受すること等に利用される。
【００８２】
また、図１〜図１２で説明した種々の処理は、図１３のフローチャートに示した処理を行うための画像生成プログラム４６等を含むプログラムを格納した情報記憶媒体１００６と、該プログラムに従って動作するＣＰＵ１０００、ディスプレイコントローラ１０１０、音生成ＩＣ１００８等によって実現される。なお、ディスプレイコントローラ１０１０、音生成ＩＣ１００８等で行われる処理は、ＣＰＵ１０００あるいは汎用のＤＳＰ等によりソフトウェア的に行ってもよい。
【００８３】
なお、本実施の形態における各手段は、上述のように、情報記憶媒体に格納されるプログラムをＣＰＵによって実行するとにより実現してもよいが、その全てをハードウェアにより実現してもよい。すなわち、図９に示す処理部２０内の各部を実行するプログラムを組んで実現してもよいし、また、各部をジオメトリプロセッサや、レンダリングプロセッサといったハードウェアにより構成し、各処理を各々によって実行させてもよい。あるいは、ハードウェアとプログラムの両方により実行してもよい。例えば、ジオメトリプロセッサや、レンダリングプロセッサ等を組み込み、ＣＰＵが、各プロセッサに処理を実行させるための指示信号を出力し、必要な場合には各プロセッサと各種データを出入力するためのプログラムを情報記憶媒体に記憶する構成にしてもよい。
【００８４】
図１５は、本発明を業務用のゲーム装置に適用した場合の一例を示す図である。同図において、業務用ゲーム装置８０は、プレーヤが操作ボタン８４を操作することによって、レンチキュラレンズ板を備えるディスプレイ８２上に表示されるキャラクタを操作してゲームを楽しむ装置である。業務用ゲーム装置８０に内蔵されるシステム基板９０には、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＶＲＡＭ、ディスプレイコントローラ、音生成ＩＣ等が実装されている。そして、ゲームプログラムや立体視画像生成処理を実行するための画像生成プログラム等は、システム基板９０上の情報記憶媒体であるメモリ９２に格納されている。
【００８５】
なお、本発明は、上記実施の形態で説明したものに限らず、種々の変形実施が可能である。例えば、上記実施例では、２眼式の立体視表示装置に出力するために、右目用の立体視画像と左目用の立体視画像を生成することとして説明したが、４眼式、５眼式等のｎ眼式の立体視表示装置（図１９参照）に出力するために、ｎ個の立体視画像を生成するものにも適用可能である。
【００８６】
例えば、４つの立体視画像を生成する場合には、図１６に示すような間隔で各視点を想定する。すなわち、仮視点７００の視線方向７０２に対して垂直に設定する。そして、仮視点７００の最隣接にある２つの視点は、仮視点からａ＝Ａ1／２離れた位置に設定し、更にその隣の２つの視点は、仮視点７００から３ａ離れた位置に設定する。したがって、仮視点７００の最近隣にある２つの視点に対応する画像を生成する際には、ずれ量を上記式（７）によって算出し、更にその隣の２つの視点に対応する画像を生成する際には、式（７）によって得られる値を３倍した量ずらすことによって実現できる。
【００８７】
あるいは、本実施例では、画面座標系に変換されたオブジェクトを、仮視点を基準として右目用・左目用の画像を生成することとして説明したが、右目または左目の一方の視点位置をオブジェクト空間内に設定し、当該一方の視点を基準として他方の視点に対応する画像を生成することとしてもよい。また、５眼式の立体視表示装置に表示するために、図１７に示すように、仮視点７００の視線方向７０２の垂直方向に対して、間隔ａ隔てて配列された４つの視点を想定し、仮視点７００に基づく画像と、仮視点７００を基準として４つの視点に対応させて左右にずらした４つの画像と、計５つの画像を生成することとしてもよい。この場合には、ずれ量Δｘは、上記式（７）によって算出したものと、式（７）によって得られる値を２倍したものとが必要となる。
【００８８】
また、上記説明では、元絵バッファを用いて走査線単位で描画処理を実行することとして説明したが、各描画先バッファと同等の大きさのバッファを用いて、ポリゴン単位、あるいは、オブジェクト単位で描画処理を実行することとしてもよい。また、実施例では、オブジェクトがポリゴンにより構成されたものとして説明したが、スプライトであってもよい。
【００８９】
また、仮視点に基づいて生成した画像を、各ポリゴンの奥行に応じて画素１つ１つに対してずらす処理を行うこととして説明したが、ポリゴン単位でずらす処理を行うこととしてもよいし、ポリゴン群であるオブジェクトの単位であってもよい。ポリゴン単位でずらす処理を実行する場合には、ポリゴンの各頂点のＺ座標について平均を取ることによって奥行情報を決定してもよいし、ポリゴンの各頂点の内、最も手前に存在する頂点のＺ座標を奥行情報として採用してもよい。または、ポリゴン内のある代表点を設定し、その点のＺ座標を採用することとしてもよい。このことは、オブジェクトを単位とした場合にも同様である。
【００９０】
また、本実施の形態では、走査線上の各ポリゴンをｚソートして、優先順位の低いものから順に描画（上書き）することとして説明したが、先描き優先のｚソートによって描画してもよい。すなわち、優先順位の高いものから順に描画する構成としてもよい。あるいは、Ｚバッファ法によって描画することとしてもよい。すなわち、走査線の画素それぞれに対応するＺバッファを各描画先バッファに対して設ける。そして、ジオメトリ部から無作為に入力されたポリゴンについて、走査線単位で元絵バッファに一時的に書き込む。更に、各画素をずらして色の補間処理をしつつ各描画先バッファに書き込む。その際、各画素の奥行値をＺバッファに記憶する。そして、次のポリゴンの色データを書き込む際には、Ｚバッファに記憶された奥行値を読み出し、より仮視点に近いもののみを上書きする。なお、補間処理した場合の奥行値は、描画先バッファ内の画素に寄与した元絵バッファ内の画素の奥行値を平均することによって決定してもよいし、最も寄与する画素の奥行値を採用することとしてもよい。
【００９１】
または、各描画先バッファの全画素分のＺバッファを用いることとしてもよい。すなわち、ジオメトリ部から入力される１つのポリゴンの描画を走査線単位ではなく、ポリゴン単位で実行する。このとき、ずれ量Δｘを算出するために求めた各画素の奥行値を、左目用及び右目用のＺバッファのずれ量Δｘに対応する画素位置に書き込む。そして、次にジオメトリ部から入力されたポリゴンを描画する際には、Ｚバッファに記憶された奥行値と比較して、より手前に存在するポリゴンのみを上書きする。
【００９２】
あるいは、スキャンライン法によって走査線毎に描画処理を実行してもよい。すなわち、視点座標系から正規透視座標系に変換し、更に３次元スクリーン座標系に変換する。そして、３次元スクリーン座標系におけるスキャンライン平面と各オブジェクトを構成するポリゴンとの交差線分（セグメント）を求め、Ｘ座標の小さい順にソートする。このとき、各セグメントの画素毎に（すなわち、ｘ座標毎に）奥行値を求めて視差角ΔθL,Rを算出し、各画素のずれ量Δｘを決定する。そして、各画素をずれ量Δｘに従って、各視点に対応させてそれぞれずらした走査線データを生成する。更に、各走査線データをサンプルスパン単位に分割してそれぞれを描画することとしてもよい。
【００９３】
また、上記実施例では、各画素についてずらした後の色の補間処理を、ずれる前の画素がずれる先に寄与する割合に応じて色を合成することとして説明したが、本発明は、これに限定するものではない。本発明の原理において説明したように、両目に対して観察対象となる物体がずれる量は、その対象物が両目の位置から遠く離れている場合には、一般的に小さい。したがって、画素単位でずらす場合において、色の補間処理が必要となる画素は、せいぜい隣合う画素ですむ。すなわち、２つ以上離れた画素の色データを合成する必要は稀となる。このため、例えば、走査線単位で描画する場合には、ニアレストネイバー法を、ポリゴン単位で描画するような場合には、バイリニア法やバイキュービック法を用いて補間処理を行うこととしてもよい。ただし、この際には、横方向（すなわち、ｘ軸方向）の画素の色データに対して、ずれ量Δｘの値に応じて色データを採用する割合に重み付けをすることとしてもよい。
【００９４】
また、元絵バッファを設けず、読み出した元絵情報に基づいて奥行値を算出したり、補間処理等を実行して直接描画先バッファに書き込む形態としてもよい。また、上記実施の形態では、各描画先バッファを２次元配列の画素（色）データを記憶するメモリであることとして説明したが、各描画先バッファを１次元配列の画素データを記憶するためのメモリであるとしてもよい。この場合、右目用、左目用の走査線上の画像データがそれぞれ完成すると、順次インターリーブするように構成する。
【００９５】
また、上記実施の形態では、本発明をゲーム装置に適用して説明したが、グラフィックワークステーションや、ＣＡＤシステム等の画像生成装置に適用することとしてもよい。
【００９６】
【発明の効果】
本発明によれば、仮視点とオブジェクトの距離（奥行）に応じて引き起こされる両眼視差を求めるための関数を採用した。そして、仮視点に基づくスクリーン系に変換された各オブジェクトを、当該関数によって算出した両眼視差に応じてスクリーン座標上にずらすことによって、複数の視点に対応する画像を生成する。したがって、オブジェクト空間を定義する座標系から、２次元のスクリーン座標系までの座標変換を、仮視点に基づく変換のみですませることができるため、立体視映像を表示するために必要な画像を迅速に生成することが可能となる。
【００９７】
また、画素単位でずらしの計算をすることとしたので、オブジェクトの厚さ、奥行感をよりリアルに表現することが可能となる。更に、元絵バッファ（すなわち、一時記憶手段）に必要な元絵情報を一時的に格納することとしたため、各視点に対応するバッファに描画する際に、一々記憶部内の元絵情報が格納されたエリアまでアクセスする必要がない。このため、冗長的な処理を大幅に削減することが可能となり、より高速に複数の視点に対応する画像を生成することができる。
【図面の簡単な説明】
【図１】両眼視差を説明するための図。
【図２】左右の目が視認する映像をスクリーンに投影した場合に生じるずれ量Δｘを説明するための図。
【図３】オブジェクト空間に置かれた立方体と三角錐の一例を示す図。
【図４】図２に示すオブジェクト空間における、仮視点と、立方体と、三角錐の位置関係を説明するための図。
【図５】（ａ）は、図３に示すオブジェクト空間を仮視点に基づく画面座標系に変換した一例を示す図。（ｂ）は、左目用の図。（ｃ）は、右目用の図。
【図６】仮視点と２つの視点の位置関係を説明するための図。
【図７】（ａ）は、オブジェクト空間における視点と透視投影スクリーンの位置関係を説明するための図。（ｂ）は、実空間における両目とディスプレイの位置関係を説明するための図。
【図８】スクリーン上に投影された各オブジェクトの位置と仮視点との距離関係を説明するための図。
【図９】機能ブロックの一例を示す図。
【図１０】レンダリング部における描画処理について説明するための図。
【図１１】元絵バッファ上の各画素について算出されたずれ量Δｘの例を示す図。
【図１２】（ａ）は、元絵バッファ上の複数の画素が描画先バッファの１つの画素に寄与する場合の一例を示す図。（ｂ）は、元絵バッファ上の隣接する複数の画素が描画先バッファ上で間欠的に配列される場合の一例を示す図。
【図１３】立体視画像生成処理を説明するためのフローチャート。
【図１４】本発明を実現できるハードウェアの構成の一例を示す図。
【図１５】本発明を業務用のゲーム装置に適用した場合の一例を示す図。
【図１６】４つの視点に適用する場合の視点間距離を説明するための図。
【図１７】５つの視点に適用する場合の視点間距離を説明するための図。
【図１８】両眼視差について説明するための図。
【図１９】（ａ）は、２眼式立体視映像表示装置から出力される映像と観察者の目との位置関係を説明するための図。（ｂ）は、４眼式の立体視映像表示装置と観察者の目との位置関係を説明するための図。
【符号の説明】
１０            操作部
２０            処理部
２２        ゲーム演算部
２４        画像生成部
２４０            ジオメトリ部
２４２            レンダリング部
２４４            元絵バッファ
２４６            左目用バッファ
２４８            右目用バッファ
２５０            インターリーブ部
３０            表示部
４０            記憶部
４２        ゲームプログラム
４４        関数データ
４６        画像生成プログラム
４８        元絵情報
【図１】
0004772952.tif 000002
【図２】
0004772952.tif 000003
【図３】
0004772952.tif 000004
【図４】
0004772952.tif 000005
【図５】
0004772952.tif 000006
【図６】
0004772952.tif 000007
【図７】
0004772952.tif 000008
【図８】
0004772952.tif 000009
【図９】
0004772952.tif 000010
【図１０】
0004772952.tif 000011
【図１１】
0004772952.tif 000012
【図１２】
0004772952.tif 000013
【図１３】
0004772952.tif 000014
【図１４】
0004772952.tif 000015
【図１５】
0004772952.tif 000016
【図１６】
0004772952.tif 000017
【図１７】
0004772952.tif 000018
【図１８】
0004772952.tif 000019
【図１９】
0004772952.tif 000020