(57)【要約】【課題】頂点分割処理を有効利用した投影画像の歪み補正を実現できる画像生成システム及びプログラム等を提供できる。【解決手段】画像生成システムは、頂点分割数ｍの設定処理を行う頂点分割数設定部と、オブジェクト空間内の３次元オブジェクトＯＢに対して、設定された頂点分割数ｍで頂点分割処理を行う頂点分割処理部と、頂点分割処理後の３次元オブジェクトＯＢの頂点位置と仮想カメラＶＣの位置とを結ぶ直線と、プロジェクション用のスクリーンＳＣとの交点位置を求め、求められた交点位置に基づいて、３次元オブジェクトＯＢに対応する描画オブジェクトについての、描画バッファでの頂点位置を求める頂点位置演算部と、描画オブジェクトの頂点位置に基づいて、描画オブジェクトを描画バッファに描画する処理を行って、プロジェクション用の投影画像を生成する描画部を含む。【選択図】図１３
2014199617.tif 000002
【特許請求の範囲】
【請求項１】
頂点分割数の設定処理を行う頂点分割数設定部と、
オブジェクト空間内の３次元オブジェクトに対して、前記頂点分割数設定部で設定された前記頂点分割数で頂点分割処理を行う頂点分割処理部と、
前記頂点分割処理後の前記３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、プロジェクション用のスクリーンとの交点位置を求め、求められた前記交点位置に基づいて、前記３次元オブジェクトに対応する描画オブジェクトについての、描画バッファでの頂点位置を求める頂点位置演算部と、
求められた前記描画オブジェクトの前記頂点位置に基づいて、前記描画オブジェクトを前記描画バッファに描画する処理を行って、プロジェクション用の投影画像を生成する描画部と、
を含むことを特徴とする画像生成システム。
【請求項２】
請求項１において、
前記頂点分割処理の対象となる前記３次元オブジェクト内の線分を構成する２つの頂点を第１、第２の頂点とし、前記第１の頂点と前記仮想カメラの位置を結ぶ第１の直線と前記第２の頂点と前記仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、前記頂点分割数をｍとした場合に、
前記頂点分割数設定部は、
前記角度θに応じて前記頂点分割数ｍを設定することを特徴とする画像生成システム。
【請求項３】
請求項２において、
前記頂点分割数設定部は、
前記角度θが第１の角度θ１である場合に、前記頂点分割数ｍを第１の分割数ｍ１に設定し、前記角度θが第２の角度θ２（θ２＜θ１）である場合に、前記頂点分割数ｍを第２の分割数ｍ２（ｍ２≦ｍ１）に設定することを特徴とする画像生成システム。
【請求項４】
請求項２又は３において、
前記頂点分割数設定部は、
前記角度θに対する前記頂点分割数ｍの設定を、前記頂点分割処理の対象となる前記３次元オブジェクトの頂点の前記スクリーンへの投影位置、前記仮想カメラの位置情報、前記仮想カメラの前記位置情報の時間変化情報、プロジェクタの位置情報、前記プロジェクタの前記位置情報の時間変化情報、前記スクリーンの形状、前記スクリーンの前記形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させることを特徴とする画像生成システム。
【請求項５】
請求項１において、
前記頂点分割処理の対象となる前記３次元オブジェクト内の線分を構成する２つの頂点を第１、第２の頂点とし、前記第１の頂点と前記仮想カメラの位置を結ぶ第１の直線と前記第２の頂点と前記仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、前記頂点分割数をｍとし、頂点分割数設定の基準となる角度をεとした場合に、
前記頂点分割数設定部は、
（θ／ｍ）＜εとなるように前記頂点分割数ｍを設定することを特徴とする画像生成システム。
【請求項６】
請求項５において、
前記スクリーンでの前記投影画像のピクセルの大きさを前記仮想カメラの位置から見込む角度をδとした場合に、
前記頂点分割数設定部は、
前記角度δを基準にして設定される前記角度εを用いて、前記頂点分割数ｍを設定することを特徴とする画像生成システム。
【請求項７】
請求項５又は６において、
前記頂点分割数設定部は、
前記角度εを、前記頂点分割処理の対象となる前記３次元オブジェクトの頂点の前記スクリーンへの投影位置、前記仮想カメラの位置情報、前記仮想カメラの前記位置情報の時間変化情報、プロジェクタの位置情報、前記プロジェクタの前記位置情報の時間変化情報、前記スクリーンの形状、前記スクリーンの前記形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させることを特徴とする画像生成システム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記描画部は、
前記スクリーンの形状に対応するスクリーンモデルオブジェクトを前記仮想カメラの視点座標系で描画することで、ピクセルごと或いは前記スクリーンモデルオブジェクトの頂点ごとに奥行き値が設定された奥行き画像を生成し、
前記頂点位置演算部は、
前記３次元オブジェクトの頂点の第１、第２の座標を、前記視点座標系への射影変換行列で変換し、変換後の前記第１、第２の座標に基づいて前記奥行き画像の前記奥行き値を参照することで、前記スクリーンとの前記交点位置を求めることを特徴とする画像生成システム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記スクリーンは、１つの曲面又は複数の面により構成されるスクリーンであることを特徴とする画像生成システム。
【請求項１０】
頂点分割数の設定処理を行う頂点分割数設定部と、
オブジェクト空間内の３次元オブジェクトに対して、前記頂点分割数設定部で設定された前記頂点分割数で頂点分割処理を行う頂点分割処理部と、
前記頂点分割処理後の前記３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、プロジェクション用のスクリーンとの交点位置を求め、求められた前記交点位置に基づいて、前記３次元オブジェクトに対応する描画オブジェクトについての、描画バッファでの頂点位置を求める頂点位置演算部と、
求められた前記描画オブジェクトの前記頂点位置に基づいて、前記描画オブジェクトを前記描画バッファに描画する処理を行って、プロジェクション用の投影画像を生成する描画部として、
コンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成システム及びプログラム等に関する。
【背景技術】
【０００２】
従来より、プロジェクタ等の投影装置により曲面スクリーンに対して投影される投影画像の生成システムが知られている。そして、曲面スクリーンに対して歪みの少ない投影画像を投影する従来技術としては、例えば特許文献１に開示される技術がある。
【０００３】
また、シェーダ機能を備えたＧＰＵ（Graphics Processing Unit）においては、いわゆるテッセレーションの機能を備えたものがあり、このようなテッセレーションの従来技術としては、例えば特許文献２に開示される技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−８５５８６公報
【特許文献２】特表２０１１−５１５７６５公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、曲面スクリーン等のプロジェクション用のスクリーンに対する投影画像の歪み補正に対して、テッセレーション等による頂点分割処理を利用する技術については提案されていなかった。
【０００６】
本発明の幾つかの態様によれば、頂点分割処理を有効利用した投影画像の歪み補正を実現できる画像生成システム及びプログラム等を提供できる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、頂点分割数の設定処理を行う頂点分割数設定部と、オブジェクト空間内の３次元オブジェクトに対して、前記頂点分割数設定部で設定された前記頂点分割数で頂点分割処理を行う頂点分割処理部と、前記頂点分割処理後の前記３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、プロジェクション用のスクリーンとの交点位置を求め、求められた前記交点位置に基づいて、前記３次元オブジェクトに対応する描画オブジェクトについての、描画バッファでの頂点位置を求める頂点位置演算部と、求められた前記描画オブジェクトの前記頂点位置に基づいて、前記描画オブジェクトを前記描画バッファに描画する処理を行って、プロジェクション用の投影画像を生成する描画部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００８】
本発明の一態様によれば、頂点分割処理後の３次元オブジェクトの頂点位置に基づいて、描画バッファでの描画オブジェクトの頂点位置が求められて、３次元オブジェクトに対応する描画オブジェクトが描画バッファに描画されて、投影画像が生成される。そのとき、例えばオブジェクト空間内での直線が、描画バッファ上においても直線となることで、歪んだ画像が観察されてしまうような事態の発生を抑制できる。そして、頂点分割処理を有効利用した投影画像の歪み補正を実現できる画像生成システム等の提供が可能になる。
【０００９】
また本発明の一態様では、前記頂点分割処理の対象となる前記３次元オブジェクト内の線分を構成する２つの頂点を第１、第２の頂点とし、前記第１の頂点と前記仮想カメラの位置を結ぶ第１の直線と前記第２の頂点と前記仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、前記頂点分割数をｍとした場合に、前記頂点分割数設定部は、前記角度θに応じて前記頂点分割数ｍを設定してもよい。
【００１０】
このようにすれば、例えば角度θが大きい場合には、頂点分割数ｍを多くし、角度θが小さい場合には、頂点分割数ｍを少なくするなどの頂点分割数の設定処理が可能になり、無駄な処理負荷が生じるのを抑制しながら、投影画像の適正な歪み補正を実現できるようになる。
【００１１】
また本発明の一態様では、前記頂点分割数設定部は、前記角度θが第１の角度θ１である場合に、前記頂点分割数ｍを第１の分割数ｍ１に設定し、前記角度θが第２の角度θ２（θ２＜θ１）である場合に、前記頂点分割数ｍを第２の分割数ｍ２（ｍ２≦ｍ１）に設定してもよい。
【００１２】
このようにすれば、例えば仮想カメラに近い位置に配置される３次元オブジェクトについては、頂点分割数が多くなり、仮想カメラから遠い位置に配置される３次元オブジェクトについては、頂点分割数が少なくなるというような頂点分割数の設定処理の実現が可能になる。
【００１３】
また本発明の一態様では、前記頂点分割数設定部は、前記角度θに対する前記頂点分割数ｍの設定を、前記頂点分割処理の対象となる前記３次元オブジェクトの頂点の前記スクリーンへの投影位置、前記仮想カメラの位置情報、前記仮想カメラの前記位置情報の時間変化情報、プロジェクタの位置情報、前記プロジェクタの前記位置情報の時間変化情報、前記スクリーンの形状、前記スクリーンの前記形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させてもよい。
【００１４】
このようにすれば、様々な状況に柔軟に対応した頂点分割数の設定処理を実現できるようになる。
【００１５】
また本発明の一態様では、前記頂点分割処理の対象となる前記３次元オブジェクト内の線分を構成する２つの頂点を第１、第２の頂点とし、前記第１の頂点と前記仮想カメラの位置を結ぶ第１の直線と前記第２の頂点と前記仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、前記頂点分割数をｍとし、頂点分割数設定の基準となる角度をεとした場合に、前記頂点分割数設定部は、（θ／ｍ）＜εとなるように前記頂点分割数ｍを設定してもよい。
【００１６】
このように角度εを基準にして頂点分割数を設定すれば、頂点分割数の設定処理を簡素な処理で実現して、投影画像の歪み補正を実現できるようになる。
【００１７】
また本発明の一態様では、前記スクリーンでの前記投影画像のピクセルの大きさを前記仮想カメラの位置から見込む角度をδとした場合に、前記頂点分割数設定部は、前記角度δを基準にして設定される前記角度εを用いて、前記頂点分割数ｍを設定してもよい。
【００１８】
このようにすれば、投影画像のピクセルのスクリーンでの大きさが投影位置によって異なることを適正に反映した投影画像の歪み補正を実現できる。
【００１９】
また本発明の一態様では、前記頂点分割数設定部は、前記角度εを、前記頂点分割処理の対象となる前記３次元オブジェクトの頂点の前記スクリーンへの投影位置、前記仮想カメラの位置情報、前記仮想カメラの前記位置情報の時間変化情報、プロジェクタの位置情報、前記プロジェクタの前記位置情報の時間変化情報、前記スクリーンの形状、前記スクリーンの前記形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させてもよい。
【００２０】
このようにすれば、様々な状況に柔軟に対応した角度εの設定処理を実現できるようになる。
【００２１】
また本発明の一態様では、前記描画部は、前記スクリーンの形状に対応するスクリーンモデルオブジェクトを前記仮想カメラの視点座標系で描画することで、ピクセルごと或いは前記スクリーンモデルオブジェクトの頂点ごとに奥行き値が設定された奥行き画像を生成し、前記頂点位置演算部は、前記３次元オブジェクトの頂点の第１、第２の座標を、前記視点座標系への射影変換行列で変換し、変換後の前記第１、第２の座標に基づいて前記奥行き画像の前記奥行き値を参照することで、前記スクリーンとの前記交点位置を求めてもよい。
【００２２】
このようにすれば、例えばスクリーンの形状が予め形状データとして分かっている場合等に、高速且つ正確に、投影画像の歪み補正を実現することが可能になる。
【００２３】
また本発明の一態様では、前記スクリーンは、１つの曲面又は複数の面により構成されるスクリーンであってもよい。
【図面の簡単な説明】
【００２４】
【図１】本実施形態の画像生成システムを適用したゲームシステムの一例。
【図２】本実施形態の画像生成システムを適用したゲームシステムの鉛直断面図。
【図３】本実施形態の画像生成システムの構成例。
【図４】描画バッファのピクセル単位での歪み補正手法の説明図。
【図５】ピクセル単位での歪み補正に代理平面を用いる手法の説明図。
【図６】ピクセル単位での歪み補正に代理平面を用いる手法での描画バッファ、ＵＶマップ、レンダーテクスチャの関係を示す図。
【図７】代理平面を用いる手法の問題点についての説明図。
【図８】代理平面を用いる手法の問題点についての説明図。
【図９】オブジェクトの頂点単位での歪み補正手法の説明図。
【図１０】オブジェクトの頂点単位での歪み補正手法の問題点についての説明図。
【図１１】テッセレータ等が設けられたＧＰＵの構成例。
【図１２】本実施形態の手法の説明図。
【図１３】図１３（Ａ）、図１３（Ｂ）は頂点分割数の設定手法の説明図。
【図１４】頂点分割数の設定手法の説明図。
【図１５】頂点分割数設定の基準となる角度εの設定手法の説明図。
【図１６】頂点分割数設定の基準となる角度εの設定手法の説明図。
【図１７】本実施形態の処理を説明するフローチャート。
【図１８】図１８（Ａ）〜図１８（Ｃ）は立体視への適用例の説明図。
【図１９】図１９（Ａ）、図１９（Ｂ）はプロジェクションマッピング用の変換データをスクリーンのモデルデータから作成する手法の説明図。
【図２０】プロジェクションマッピング用の変換データをスクリーンのモデルデータから作成する手法の説明図。
【発明を実施するための形態】
【００２５】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２６】
１．構成
図１に、本実施形態の画像生成システムを適用したゲームシステム１の構成例を示す。図２は、このゲームシステム１の鉛直断面図である。
【００２７】
本実施形態のゲームシステム１は、店舗等に設置されてカーレースゲームを実行する業務用のゲームシステムであり、レーシングカーの運転席を模擬したプレーヤシート１００２と、ゲーム画面を表示する曲面形状のスクリーン１００４と、スクリーン１００４に画像（映像）を投影するプロジェクタ１００６と、ゲーム音を出力するスピーカ（不図示）と、プレーヤがゲーム操作を入力するためのハンドル１００８、アクセルペダル１０１０、ブレーキペダル１００９、シフトレバー（不図示）と、制御基板１０２０とを備えている。
【００２８】
プレーヤシート１００２は、着座したプレーヤの想定正視方向がスクリーン１００４の中央付近を向くように、その向きや高さが調整されて設けられている。本実施形態では、着座したプレーヤの正面方向を想定正視方向としている。曲面スクリーン１００４は、プレーヤシート１００２に着座したプレーヤの正面方向（想定正視方向）に対して凸形状に形成されている。
【００２９】
プロジェクタ１００６は、投影装置の一種であり、プレーヤシート１００２の後方に設置された支柱１０１２や筐体フレーム１０１４に支持されて、プレーヤシート１００２の上方であってプレーヤシート１００２に着座したプレーヤに干渉しない位置に、その投影中心方向がスクリーン１００４の中心付近を向くように設置されている。即ち、投影中心方向がプレーヤの想定正視方向と曲面スクリーンとの交点位置に向くように設置される。また、プロジェクタ１００６には、投影レンズとして広角レンズが取り付けられており、この広角レンズを通して、投影画像がスクリーン１００４の投影面全体に投影される。
【００３０】
制御基板１０２０には、ＣＰＵやＧＰＵ、ＤＳＰ等の各種マイクロプロセッサ、ＡＳＩＣ、ＶＲＡＭやＲＡＭ、ＲＯＭ等の各種ＩＣメモリが実装されている。そして、制御基板１０２０は、ＩＣメモリに記憶されたプログラムやデータ、ハンドル１００８、アクセルペダル１０１０、ブレーキペダル１００９等からの操作信号等に基づいて、カーレースゲームを実現するための各種処理を行う。
【００３１】
プレーヤは、プレーヤシート１００２に着座して、スクリーン１００４に表示されるゲーム画面を見ながら、スピーカからのゲーム音を聞きつつ、ハンドル１００６、アクセルペダル１０１０、ブレーキペダル１００９を操作してカーレースゲームを楽しむ。
【００３２】
本実施形態のカーレースゲームでは、オブジェクト空間（仮想３次元空間）に、レースコース等の背景オブジェクトが配置されてゲーム空間が構成される。このオブジェクト空間内には、プレーヤカーや他プレーヤカー等の各種オブジェクトが配置されると共に、プレーヤの視点位置に仮想カメラが配置される。そして、この仮想カメラから見たオブジェクト空間の画像が、ゲーム画像として、プロジェクタ１００６によってスクリーン１００４に投影（表示）される。
【００３３】
図３に本実施形態の画像生成システムのブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図３に限定されず、その構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００３４】
操作部１６０は、プレーヤが操作データを入力するためのものである。図１、図２のゲームシステム１に画像システムを適用した場合には、操作部１６０は、ハンドル１００８、アクセルペダル１０１０、ブレーキペダル１００９等により実現できる。
【００３５】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００３６】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００３７】
表示部１９０は、本実施形態により生成された画像を表示するものである。図１、図２のゲームシステム１に画像生成システムを適用した場合には、表示部１９０は、液晶プロジェクタにおけるＬＣＤや、ＤＬＰプロジェクタにおけるＤＭＤなどにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３８】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００３９】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００４０】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００４１】
処理部１００は、ゲーム演算部１０２、オブジェクト空間設定部１０４、移動体演算部１０６、仮想カメラ制御部１０８、頂点分割数設定部１１０、頂点分割処理部１１２、頂点位置演算部１１４、描画部１２０、音生成部１３０を含む。なおこれらの構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００４２】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００４３】
オブジェクト空間設定部１０４は、複数のオブジェクトが配置されるオブジェクト空間の設定処理を行う。例えば、移動体（車、飛行機、人、動物、ロボット、船舶機等）、マップ（地形）、建物、コース（道路）、樹木、壁、水面などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７２には、オブジェクト（パーツオブジェクト）の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。オブジェクト空間設定部１０４は、例えば各フレーム毎にこのオブジェクトデータを更新する処理などを行う。
【００４４】
移動体演算部１０６は、車、飛行機等の移動体（移動体オブジェクト）を移動させるための制御処理を行う。また移動体を動作させるための制御処理を行う。即ち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、移動体（オブジェクト、モデルオブジェクト）をオブジェクト空間内で移動させたり、移動体を動作（モーション、アニメーション）させる制御処理を行う。具体的には、移動体の移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００４５】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点、基準仮想カメラ）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００４６】
例えば仮想カメラにより移動体を後方から撮影する場合には、移動体の位置又は方向の変化に仮想カメラが追従するように、仮想カメラの位置（視点位置）や方向（視線方向）を制御する。この場合には、移動体演算部１０６で得られた移動体の位置、方向又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させたりする制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は方向を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００４７】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００４８】
そして本実施形態の画像生成システムでは、図１、図２のスクリーン１００４に投影する投影画像を生成するために、頂点分割数設定部１１０、頂点分割処理部１１２、頂点位置演算部１１４、描画部１２０が設けられる。
【００４９】
頂点分割数設定部１１０は、頂点分割数の設定処理を行う。即ち、頂点分割数を決定して、頂点分割処理部１１２に対して、頂点分割処理での頂点分割数を指示する。頂点分割処理部１１２は、オブジェクト空間内の３次元オブジェクトに対して、頂点分割数設定部１１０で設定された頂点分割数で頂点分割処理を行う。具体的には、３次元オブジェクトを構成する各ポリゴン（プリミティブ）についての頂点分割処理を行う。
【００５０】
頂点位置演算部１１４は、３次元オブジェクトに対応する描画オブジェクト（２次元オブジェクト）の頂点位置の演算処理を行う。描画部１２０は、求められた頂点位置に基づいて描画オブジェクトを描画バッファ１７６（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する処理を行って、図１、図２のスクリーン１００４に投影される投影画像を生成する。
【００５１】
具体的には頂点位置演算部１１４は、頂点分割処理後の３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、プロジェクション用のスクリーンとの交点位置を求める。このプロジェクション用のスクリーンは、図１、図２のスクリーン１００４に対応して、仮想３次元空間であるオブジェクト空間に配置設定される投影画像生成用の仮想的なスクリーンであり、この形状に合わせて歪み補正処理（プロジェクションマッピング処理とも呼ばれる）が行われることになる。このプロジェクション用のスクリーンは、１つの曲面又は複数の面（曲面、平面）により構成できる。そして頂点位置演算部１１４は、求められた交点位置に基づいて、３次元オブジェクト（３次元ポリゴン）に対応する描画オブジェクト（描画ポリゴン）についての、描画バッファ１７６での頂点位置を求める。なお、３次元オブジェクトは、３次元空間（オブジェクト空間）に配置されるオブジェクトを意味し、例えばその頂点の座標値として３次元の座標値（Ｘ、Ｙ、Ｚ座標値）を有するオブジェクトである。一方、描画オブジェクトは、例えばその頂点の座標値として２次元の座標値（Ｘ、Ｙ座標）を有するオブジェクトである。
【００５２】
描画部１２０は、求められた描画オブジェクトの頂点位置に基づいて、描画オブジェクトを描画バッファ１７６に描画する処理を行って、プロジェクション用の投影画像を生成する。生成された投影画像は、図１、図２のプロジェクタ１００６により、スクリーン１００４に投影される。これによりプレーヤは、仮想カメラから見たオブジェクト空間の画像を、ゲーム画像として見ることが可能になる。
【００５３】
ここで、頂点分割処理の対象となる３次元オブジェクト内の線分を構成する２つの頂点を第１、第２の頂点とし、第１の頂点と仮想カメラの位置を結ぶ第１の直線と第２の頂点と仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、頂点分割数をｍとしたとする。この場合に頂点分割数設定部１１０は、角度θに応じて頂点分割数ｍを設定する。
【００５４】
具体的には頂点分割数設定部１１０は、角度θが第１の角度θ１である場合に、頂点分割数ｍを第１の分割数ｍ１に設定する。また角度θが第２の角度θ２（θ２＜θ１）である場合に、頂点分割数ｍを第２の分割数ｍ２（ｍ２≦ｍ１）に設定する。即ち、角度θが小さいほど頂点分割数ｍが少なくなるように（角度θが大きいほど頂点分割数ｍが多くなるように）、頂点分割数ｍを設定する。ただし、角度θは実数であるのに対し、分割数は実質的に自然数であることから、θ２＜θ１でもｍ２＝ｍ１とする場合も多いため、ｍ２≦ｍ１と記載している。
【００５５】
この場合に頂点分割数設定部１１０は、角度θに対する頂点分割数ｍの設定を、頂点分割処理の対象となる３次元オブジェクトの頂点のスクリーンへの投影位置、仮想カメラの位置情報、仮想カメラの位置情報の時間変化情報、プロジェクタの位置情報、プロジェクタの位置情報の時間変化情報、スクリーンの形状、スクリーンの形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させてもよい。
【００５６】
例えば３次元オブジェクトの頂点のスクリーンへの投影位置が第１の位置（例えばスクリーンの上方部や中央部）である場合と、第２の位置（例えばスクリーンの下方部）である場合とで、頂点分割数ｍを異ならせる。或いは、仮想カメラ（プレーヤ視点）の位置情報やその時間変化情報に応じて、頂点分割数ｍを異ならせる。例えば仮想カメラの位置が変化して、ゲームシーン（ゲームステージ）等が変化したと考えられるような場合に、それに応じて頂点分割数ｍを変化させる。或いは、仮想カメラの位置情報の時間変化情報（移動速度、加速度等）に応じて、頂点分割数ｍを異ならせる。例えば仮想カメラの移動速度が速い場合には頂点分割数ｍを少なくする。また移動速度が遅い場合には頂点分割数ｍを多くする。
【００５７】
或いは、プロジェクタの位置情報に応じて頂点分割数ｍを変化させたり、プロジェクタの位置情報が動的に変化する場合に、その位置情報の時間変化情報（移動速度等）に応じて頂点分割数ｍを変化させる。或いは、スクリーンの形状に応じて頂点分割数ｍを変化させたり、スクリーンの形状が動的に変化する場合に、その形状の時間変化情報（形状の変化速度等）に基づいて頂点分割数ｍを変化させる。或いは、描画部１２０等での描画負荷に応じて頂点分割数ｍを異ならせる。例えば描画負荷が重い場合には頂点分割数ｍを少なくする。また描画負荷が軽い場合には頂点分割数ｍを多くする。或いは、時間経過等の時間要素に基づいて頂点分割数ｍを変化させる。例えばゲーム空間や現実空間での時間経過に応じて頂点分割数ｍを動的に変化させる。或いは、３次元オブジェクトの種類等の属性に応じて頂点分割数ｍを異ならせる。例えば３次元オブジェクトごとに頂点分割数ｍを異ならせ、より高精細な画像が要求される３次元オブジェクト（例えばメインの移動体）については頂点分割数ｍを多くし、それほど精細さを要求されない３次元オブジェクトについては頂点分割数ｍを少なくする。
【００５８】
また、上述のように３次元オブジェクトの第１の頂点と仮想カメラの位置を結ぶ第１の直線と、３次元オブジェクトの第２の頂点と仮想カメラの位置を結ぶ第２の直線とのなす角度をθとし、頂点分割数設定の基準となる角度をεとしたとする。この場合に頂点分割数設定部１１０は、（θ／ｍ）＜εとなるように頂点分割数ｍを設定する。即ち、（θ／ｍ）が角度εを越えないように、頂点分割数ｍを制御する。
【００５９】
例えばスクリーンでの投影画像のピクセルの大きさを仮想カメラの位置から見込む角度（プレーヤが見込む角度）をδとしたとする。この場合に頂点分割数設定部１１０は、角度δを基準にして設定される角度εを用いて、頂点分割数ｍを設定する。例えばε＝ｋ×δ（例えばｋ＝１）と表し、この角度εを、頂点分割数設定の基準角度として、頂点分割数ｍを設定する。
【００６０】
この場合に頂点分割数設定部１１０は、角度εを、頂点分割処理の対象となる３次元オブジェクトの頂点のスクリーンへの投影位置、仮想カメラの位置情報、仮想カメラの位置情報の時間変化情報、プロジェクタの位置情報、プロジェクタの位置情報の時間変化情報、スクリーンの形状、スクリーンの形状の時間変化情報、描画負荷、時間要素、及び前記３次元オブジェクトの属性の少なくとも１つに応じて変化させてもよい。
【００６１】
例えば３次元オブジェクトの頂点のスクリーンへの投影位置が第１の位置である場合と、第２の位置である場合とで、角度εを異ならせる。或いは、仮想カメラの位置情報やその時間変化情報に応じて、角度εを異ならせる。例えば仮想カメラの位置が変化して、ゲームシーン等が変化したと考えられる場合に、それに応じて角度εも変化させる。或いは、仮想カメラの位置情報の時間変化情報に応じて、角度εを異ならせる。例えば仮想カメラの移動速度が速い場合には角度εを大きくして、例えば頂点分割数ｍが少なくようにする。また移動速度が遅い場合には角度εを小さくして、頂点分割数ｍが多くなるようにする。なお、仮想カメラの位置が変化するケースとしては、ゲーム内での仮想カメラの移動による場合のほかに、プレーヤ自身の視点位置が変化した場合に、それをヘッドトラッキング等によって検出し、仮想カメラの位置に反映させる場合などが考えられるが、ここではその片方のみを考慮しても良いし、両方を考慮しても良い。例えば、プレーヤ自身の視点位置の変化の影響が小さいと見なせる場合や、プレーヤ自身の視点位置の検出ができない場合には、それを仮想カメラの位置に反映させなくても良い。或いは、プロジェクタの位置情報に応じて角度εを変化させたり、プロジェクタの位置情報が動的に変化する場合に、その位置情報の時間変化情報に応じて角度εを変化させる。或いは、スクリーンの形状に応じて角度εを変化させたり、スクリーンの形状が動的に変化する場合に、その形状の時間変化情報に基づいて角度εを変化させる。或いは、描画部１２０等での描画負荷に応じて角度εを異ならせる。例えば描画負荷が重い場合には、角度εを大きくして、頂点分割数ｍが少なくなるようにする。また描画負荷が軽い場合には、角度εを小さくして、頂点分割数ｍが多くなるようにする。或いは、時間経過等の時間要素に基づいて角度εを変化させる。例えばゲーム空間や現実空間での時間経過に応じて角度εを動的に変化させる。或いは、３次元オブジェクトの種類等の属性に応じて角度εを異ならせる。例えば３次元オブジェクトごとに角度εを異ならせ、より高精細な画像が要求される３次元オブジェクトについては、角度εを小さくして、頂点分割数ｍが多くなるようにし、それほど精細さを要求されない３次元オブジェクトについては、角度εを大きくして、頂点分割数ｍを少なくなるようにする。
【００６２】
また描画部１２０は、スクリーンの形状に対応するスクリーンモデルオブジェクトを仮想カメラの視点座標系で描画することで、ピクセルごとに奥行き値が設定された奥行き画像、或いはスクリーンモデルオブジェクトの頂点ごとに奥行き値が設定されたメッシュ情報を生成する。例えばスクリーンオブジェクトを仮想カメラの視点座標系で描画することで、Ｚバッファ１７８に奥行き画像を生成する。そして頂点位置演算部１１４は、３次元オブジェクトの頂点の第１、第２の座標を、視点座標系への射影変換行列で変換する。そして、変換後の第１、第２の座標（Ｘ、Ｙ座標）に基づいて奥行き画像の奥行き値（Ｚ値）を参照することで、スクリーンとの交点位置を求める。
【００６３】
２．本実施形態の手法
次に本実施形態の手法について具体的に説明する。なお、以下では、プロジェクション用のスクリーンが曲面のスクリーン（ドーム状のスクリーン）である場合を主に例にとり説明するが、本実施形態はこれに限定されない。プロジェクション用のスクリーンは、単一平面ではないスクリーンの全般を指すものである。例えばプロジェクション用のスクリーンは、１つの曲面又は複数の面（平面、曲面）により構成されるスクリーンであればよい。即ち、当該スクリーンとしては、１つの曲面で構成されるスクリーン、複数の平面で構成されるスクリーン、複数の曲面で構成されるスクリーン、複数の平面及び曲面で構成されるスクリーンなどを想定できる。
【００６４】
２．１  ピクセル単位での歪み補正手法
ドーム状(曲面）のスクリーンに画像を投影する場合に、プロジェクタの位置とプレーヤ（観察者）の位置が離れていると、画像の歪みが目立ってしまう。そこで、この歪みを予め考慮に入れて、プロジェクタからの投影画像（プロジェクタの描画バッファに描く画像）を生成することで、プレーヤから見て歪みのない映像を提示することが可能になる。
【００６５】
この場合に、スクリーンが単一の平面であれば、歪みは線形（パースによる歪み）となるため、射影変換行列を１つ用いるだけで簡単に補正することが可能になる。
【００６６】
しかし、単一平面ではないスクリーン（１つの曲面又は複数の面で構成されるスクリーン）である場合には、線形ではない歪みが加わるため、射影変換行列を１つ用いるだけという簡単な補正手法では、歪みを補正できず、画像の部分に応じて、細かく補正を行う必要がある。
【００６７】
このような歪み補正を実現する手法として、描画バッファのピクセル単位で歪み補正を行う手法と、３次元オブジェクトの頂点単位で歪み補正を行う手法が考えられる。まず、ピクセル単位での歪み補正手法について説明する。
【００６８】
描画バッファのピクセル単位での歪み補正手法では、図４や下記に示す（１）、（２）、（３）、（４）の処理を順に行う。
（１）描画バッファ（フレームバッファ）上のピクセルＰＸ（ＸＰ，ＹＰ）が、プロジェクタのレンズを通して射出される光線ＲＹを求める。
（２）その光線ＲＹが、スクリーンＳＣと交差する交点ＰＳ（ＸＳ，ＹＳ，ＺＳ）の位置を求める。例えばスクリーンＳＣが楕円面の方程式等の数式で表される場合には、直線ＲＹを表す数式とスクリーンＳＣを表す数式を用いて交点ＰＳを求める。
（３）この交点ＰＳ（ＸＳ，ＹＳ，ＺＳ）の色は、プレーヤ（観察者）がオブジェクト空間（仮想空間）を観察しているときの色である必要がある。そこで、プレーヤの代表視点に対応する仮想カメラＶＣの位置ＶＰと、交点ＰＳ（ＸＳ，ＹＳ，ＺＳ）の位置を結ぶ直線ＬＶを求める。
（４）この直線ＬＶを視線としてオブジェクト空間の情報から、描画バッファ上の投影画像のピクセルの色を決定する。例えば、オブジェクト空間で最初に到達する３次元オブジェクトＯＢ上の点ＰＢ（ＸＢ，ＹＢ，ＺＢ）の位置を求め、それに応じて、描画バッファ上の投影画像のピクセルの色を決定する。
【００６９】
この場合に、ピクセル単位での歪み補正手法の改良手法では、上記の最後の（４）において、直線ＬＶと３次元オブジェクトＯＢとの交点ＰＢ（ＸＢ，ＹＢ，ＺＢ）の色を求める代わりに、あらかじめ描画しておいた平面（レンダーテクスチャ）との交点（レンダーテクスチャの座標で（Ｕ，Ｖ））の色を用いて、投影画像のピクセルの色を決定する。レンダーテクスチャは、予め、投影面になるべく近い平面（以下、代理平面と呼ぶ）を選んでおき、そこに通常の描画方法、すなわち、平面を投影面とする描画を行うことで作成できる。
【００７０】
図５に、このような代理平面ＰＬ１、ＰＬ２の一例を示す。点ＰＰが直線ＬＶと代理平面ＰＬ１（ＰＬ２）との交点である。
【００７１】
レンダーテクスチャの参照位置は、視点やプロジェクタの位置が変化しない限り、最初に１度だけ計算しておけばよい。そのデータを保持しておくための代表的な方法としては、描画バッファの１ピクセルごとに、レンダーテクスチャのどの位置（Ｕ，Ｖ）のピクセル値を参照するかを、１枚のテクスチャとして保持しておく方法がある。このテクスチャを、「ＵＶマップ」と呼ぶ。図６に、プロジェクタの描画バッファとＵＶマップとレンダーテクスチャの関係を示す。
【００７２】
図６のレンダーテクスチャの対応点（ＵＶ座標）を、描画バッファ上の全ピクセルについて求めて保持しておくことは、大きなリソースを必要とする。その大きなリソースを用意する余裕がない場合には、スクリーンＳＣ上に適当に配置された代表頂点について、描画バッファ上の対応点（ＸＰ，ＹＰ）と、レンダーテクスチャ上の対応点（Ｕ，Ｖ）を求め、それらをつないだ三角形ポリゴンによるメッシュを作っておく。そして、三角形ポリゴンを描画するときに、三角形ポリゴンの頂点に情報として記録された（Ｕ，Ｖ）座標を参照し、三角形ポリゴン内部の点についてはそれらから補間された（Ｕ，Ｖ）座標を用いるようにする。このようにすれば、大幅にリソースを節約することが可能になる。
【００７３】
さて、ピクセル単位での歪み補正手法に共通する問題点として、画質（解像度）が局所的に低下するということが挙げられる。即ち、図７のＧ１に示すように、スクリーンＳＣの面の法線ＮＳ１が、代理平面ＰＬの法線ＮＰと同じかそれに近い状態である部分については、高い画質が保持される。しかしながら、図７のＧ２に示すように、スクリーンＳＣの面の法線ＮＳ２と代理平面ＰＬの法線ＮＰの方向が離れるにつれて、画質の低下が顕著となる。
【００７４】
これは図８に示すように、法線の方向が離れるにつれて、プロジェクタＰＪの描画バッファ上では隣接している画素が、代理平面ＰＬを描画したレンダーテクスチャ上では隣接しなくなり、その離れ方も大きくなるためである。レンダーテクスチャ上での画素の離れ方が大きいと、バイリニア等の画素補間が効果的に働かないため、ジャギーが目立った画像となってしまう。
【００７５】
このような問題を解決する手法として、代理平面の数を増やす手法が考えられる。しかしながら、この手法によると、代理平面が増えた分、描画回数を増やす必要があるため、描画負荷が過大になってしまう。
【００７６】
２．２  頂点単位での歪み補正手法
次に描画オブジェクトの頂点単位で歪み補正を行う手法について説明する。この手法では、オブジェクト空間内の３次元オブジェクトの頂点を、プロジェクタの描画バッファ上の点に変換する。具体的には図９や下記に示す（１）、（２）、（３）、（４）の処理を順に行う。これは図４の手法の処理を逆の順で行うことに相当する。
（１）オブジェクト空間内の３次元オブジェクトＯＢの頂点Ｖ（ＸＶ，ＹＶ，ＺＶ）の位置と、プレーヤの代表視点に対応する仮想カメラＶＣの位置ＶＰとを結ぶ直線ＬＶを求める。
（２）求められた直線ＬＶとスクリーンＳＣの交点ＰＳ（ＸＳ，ＹＳ，ＺＳ）の位置を求める。例えばスクリーンＳＣが楕円面の方程式等の数式で表される場合には、直線ＬＶを表す数式とスクリーンＳＣを表す数式を用いて交点ＰＳを求める。
（３）交点ＰＳ（ＸＳ，ＹＳ，ＺＳ）の位置とプロジェクタＪＰの位置を結ぶ直線ＬＲを求める。
（４）直線ＬＲに対応する描画バッファ上の点ＰＤ（ＸＤ，ＹＤ）の位置を求める。この点ＰＤは、３次元オブジェクトＯＢに対応する描画バッファ上の描画オブジェクトＯＢＤの頂点に相当する。なお直線ＬＲから点ＰＤを求める際には、プロジェクタＰＪのレンズの特性や配置等の光学系の情報を用いる。
【００７７】
以後は、描画オブジェクトＯＢＤの頂点と頂点を結んで色を塗るラスタライズ処理を行うことで、描画バッファ上に投影画像を生成できる。
【００７８】
この頂点単位での歪み補正手法では、３次元オブジェクトＯＢの頂点を、１つ１つ描画バッファ上の点に座標変換する。例えば、図１０においてオブジェクト空間内の点Ｐ１と点Ｐ２を結ぶ直線ＬＮ（線分）については、その点Ｐ１、Ｐ２のそれぞれが描画バッファ上の点に座標変換される。その後は、点Ｐ１、Ｐ２の間は、描画バッファ上では直線であるとして描画処理が行われる。即ち図１０のＡ１において、描画バッファ上の点ＰＤ１はオブジェクト空間内の点Ｐ１を座標変換した点であり、描画バッファ上の点ＰＤ２はオブジェクト空間内の点Ｐ２を座標変換した点である。従って、オブジェクト空間内での直線ＬＮは、描画バッファ上では点ＰＤ１とＰＤ２を結ぶ直線ＬＮＤとして描画される。
【００７９】
しかしながら、プロジェクション用のスクリーンＳＣが平面ではない場合には、図１０のＡ２に示すように、オブジェクト空間内の直線ＬＮは、描画バッファ上において直線にはならず、曲線ＣＶになる。従って、描画バッファ上での補間としてＡ１に示すような直線補間を用いると、プレーヤには、それが歪んだ画像として観察されてしまう。オブジェクト空間内の直線ＬＮが、プレーヤが見た時にも直線として観察されるようにするためには、直線ＬＮを、図１０のＡ２に示すように描画バッファ上では曲線ＣＶとして描画する必要がある。そのためには、例えばオブジェクト空間内の直線ＬＮを細かく分割し、Ａ３に示すように、分割後の全ての点を描画バッファ上に座標変換してつなげることで、オブジェクト空間内の直線ＬＮが、プレーヤが見た時にも直線として観察されるようになる。更に、ポリゴン内部のテクスチャが歪まずに観察されるようにするためには、ポリゴン内部についても十分細かく分割しておく必要がある。
【００８０】
しかしながら、３次元オブジェクト（モデルオブジェクト）を構成する大きいポリゴンを、予め細かく分割しておくことは、手間もかかるし、データ量も増えてしまうという問題がある。更に、３次元オブジェクトが遠くの位置に小さく見えている状態においては、ポリゴンを細かく分割しておくことは無駄であり、描画時に不必要な負荷をかけてしまう結果となる。
【００８１】
２．３  ＧＰＵによるシェーダプログラムの変遷
かつてのＧＰＵによるシェーダプログラムのモデルは、頂点シェーダとピクセル・シェーダによるものであった。頂点シェーダは、描画するオブジェクトのオブジェクト空間内での（Ｘ，Ｙ，Ｚ）座標を描画平面の（Ｘ，Ｙ）座標に変換する。その後、その座標値をもとにラスタライズ処理が行われ、処理対象となる画素ごとに、ピクセル・シェーダが  （Ｘ，Ｙ）に対応するテクスチャ座標（Ｕ，Ｖ）の色などを参照して最終的なピクセルの色を決定する。例えば上述したピクセル単位での歪み補正手法は、ピクセル・シェーダを利用する手法であり、頂点単位での歪み補正手法は、頂点シェーダを利用するものである。
【００８２】
そして、現在のＧＰＵ（DirectX11準拠）では、図１１に示すように、頂点シェーダ２１０で処理を行ってから、ラスタライザ２１８に（Ｘ，Ｙ）座標を渡す前の段階に、ハル・シェーダ２１２、テッセレータ２１４、ドメイン・シェーダ２１６、ジオメトリ・シェーダ２１７等の各シェーダが追加されている。これらの追加された新たな機能によって、必要に応じて、描画時に頂点を増やしたり、ポリゴンのメッシュを細かく分割したりすることが可能となっている。
【００８３】
２．４  頂点単位での補正処理への頂点分割処理の適用
そこで本実施形態では、頂点単位での歪み補正手法に対して、ＧＰＵに新たに追加された機能である頂点分割処理（テッセレーション）等を適用して、図１０で説明した問題点を解決している。
【００８４】
具体的には、まず、図３の頂点分割数設定部１１０が頂点分割数の設定処理を行う。この頂点分割数設定部１１０は、例えば図１１のハル・シェーダ２１２により実現できる。このハル・シェーダ２１２はプログラマブル・シェーダであり、種々の処理をシェーダ言語によりプログラミングして実現できる。
【００８５】
次に頂点分割処理部１１２が、オブジェクト空間内の３次元オブジェクト（３次元ポリゴン）に対して、設定された頂点分割数での頂点分割処理（テッセレーション）を行う。この頂点分割処理部１１２は、例えば図１１のテッセレータ２１４により実現できる。なおテッセレータ２１４に対する分割数の設定としては、ポリゴンのエッジでの分割数の設定とポリゴン内部での分割数の設定がある。ポリゴンにマッピングされるテクスチャが図１０と同様の理由で歪んでしまう場合には、ポリゴン内部の分割数を大きな値に設定すればよい。
【００８６】
次に頂点位置演算部１１４が、頂点分割処理後の３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、プロジェクション用のスクリーンとの交点位置を求める。即ち図９の（１）、（２）に対応する処理を行う。そして頂点位置演算部１１４が、交点位置（図９のＰＳ）に基づいて、３次元オブジェクト（ＯＢ）に対応する描画オブジェクト（ＯＢＤ）についての、描画バッファでの頂点位置（ＰＤ）を求める。即ち図９の（３）、（４）に対応する処理を行う。この頂点位置演算部１１４は、例えば図１１のドメイン・シェーダ２１６により実現できる。ドメイン・シェーダ２１６もプログラマブル・シェーダであり、種々の処理をシェーダ言語によりプログラミングして実現できる。なお、３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線を求め、プロジェクション用のスクリーンとの交点位置を求める処理等は、例えば仮想カメラのカメラ座標系（視点座標系）において実行される。
【００８７】
そして最後に描画部１２０が、求められた描画オブジェクトの頂点位置に基づいて、描画オブジェクトを描画バッファ１７６に描画する処理を行って、プロジェクション用の投影画像を生成する。即ち、描画バッファに射影された描画オブジェクトの頂点と頂点を結んで色を塗るラスタライズを行って、投影画像を生成する。この描画部１２０は、例えば図１１のラスタライザ２１８やピクセル・シェーダ２２０により実現できる。
【００８８】
このように本実施形態では、ＧＰＵに新たに追加された機能を有効活用して、図１０で説明した頂点単位での歪み補正手法における問題点を解決している。これにより、例えば、３次元オブジェクトを、予め多数の小さなポリゴンで分割したデータとして用意しておかなくても、テッセレーションにより描画時に動的に頂点分割処理を行うことで、歪みが補正されて画質の低下も抑制された投影画像を生成できるようになる。即ち、データ量の増加や処理負荷の増加を抑制しながら、歪みが少なく高い画質の投影画像を生成することが可能になる。
【００８９】
なお、本処理ではジオメトリ・シェーダ２１７は必須ではないが、別の処理を行う場合などに、本処理と併用して活用することはもちろん可能である。
【００９０】
２．５  頂点分割数の設定
次に本実施形態の頂点分割数の設定手法の詳細について説明する。前述のように頂点単位での歪み補正手法に頂点分割処理を適用した場合に、頂点分割数をどの程度細かくすれば十分なのかを決める基準が、曖昧となってしまうという課題がある。
【００９１】
そこで本実施形態では、このような頂点分割数の基準を決める手法として、以下に説明するような手法を採用している。
【００９２】
例えば図１２において、頂点分割処理の対象となる３次元オブジェクトＯＢ内の線分を構成する２つの頂点を第１、第２の頂点Ｖ１、Ｖ２とする。なお本実施形態では説明の簡素化のために３次元オブジェクトＯＢが１つの四角形のポリゴンで構成される場合を例にとり説明する。また第１の頂点Ｖ１と仮想カメラＶＣの位置ＶＰを結ぶ第１の直線ＬＮ１と、第２の頂点Ｖ２と仮想カメラＶＣの位置ＶＰを結ぶ第２の直線ＬＮ２とのなす角度をθとし、頂点分割数をｍとする。
【００９３】
この場合に本実施形態では、角度θに応じて頂点分割数ｍを設定する。例えば角度θが大きければ、頂点分割数ｍを多くし、角度θが小さければ、頂点分割数ｍを少なくする。
【００９４】
例えば図１３（Ａ）では角度θ＝θ１となっており、図１３（Ｂ）では角度θ＝θ２となっている。そして第１の角度θ１と第２の角度θ２の間には、θ２＜θ１の関係が成り立っている。
【００９５】
この場合に本実施形態では、角度θ＝θ１の場合には、頂点分割数ｍを第１の分割数ｍ１に設定し、角度θ＝θ２の場合には、頂点分割数ｍを、第１の分割数ｍ１と同じか、それよりも少ない第２の分割数ｍ２に設定している。例えば図１３（Ａ）ではｍ＝ｍ１＝３となり、図１３（Ｂ）ではｍ＝ｍ２＝２となっており、ｍ２≦ｍ１の関係が成り立っている。即ち図１３（Ａ）では、３次元オブジェクトＯＢ内の線分を構成する第１、第２の頂点Ｖ１、Ｖ２が３分割されて、新たな頂点Ｖ１１、Ｖ１２が生成されている。一方、図１３（Ｂ）では、３次元オブジェクトＯＢの第１、第２の頂点Ｖ１、Ｖ２が２分割されて、新たな頂点Ｖ１１が生成されている。なお、角度θは実数であるのに対し、分割数ｍは実質的に自然数であるという理由により、θ２＜θ１であってもｍ２＝ｍ１となる場合も多いため、関係式はｍ２≦ｍ１となる。
【００９６】
このようにすれば、図１３（Ａ）のように仮想カメラＶＣに近い位置に配置される３次元オブジェクトＯＢについては、頂点分割数ｍ（ポリゴン分割数）が多くなり、図１３（Ｂ）のように仮想カメラＶＣから遠い位置に配置される３次元オブジェクトＯＢについては、頂点分割数ｍが少なくなるという結果になる。従って、ＬＯＤ  (Level of Detail) の効果も得ることができ、描画効率を向上できるという利点がある。
【００９７】
また図１４では、頂点分割数設定の基準となる角度ε（視角）を導入して、分割数ｍを決定している。即ち図１４に示すように、（θ／ｍ）＜εの関係式が成り立つように、頂点分割数ｍを設定（決定）する。例えば図１３（Ａ）では、θが大きな角度θ１となっているため、（θ／ｍ）＜εの関係式を成り立たせるために、ｍ＝ｍ１＝３というように頂点分割数ｍを大きな値に設定する。一方、図１３（Ｂ）では、θが小さな角度θ２となっているため、（θ／ｍ）＜εの関係式を成り立たせるために、ｍ＝ｍ２＝２というように頂点分割数ｍを小さな値に設定する。
【００９８】
このように角度εを基準にして頂点分割数ｍを設定すれば、頂点分割数ｍの設定処理を簡素な処理で実現して、図１３（Ａ）、図１３（Ｂ）に示すようなＬＯＤの効果等も得ることが可能になる。
【００９９】
ここで図１５に示されるように、角度εは、スクリーンＳＣでの投影画像のピクセルＰＸの大きさを仮想カメラＶＣの位置から見込む角度δを基準にして設定することが望ましい。例えば図１５ではε＝δに設定されている。そして角度δを基準にして設定される角度εを用いて、頂点分割数ｍを設定する。
【０１００】
例えばε＝ｋ×δ（例えばｋ≦１）の関係式でεを設定する。具体的には図１５に示すようにε＝δ（ｋ＝１）に設定する。或いは、ε＝δ／２（ｋ＝１／２）に設定してもよい。このように角度εを角度δに基づき設定する理由は、仮想カメラＶＣから見込む角度が１ピクセルよりも小さくなるような角度となる頂点分割処理を行っても、処理負荷だけが重くなって、歪み補正や高画質化を実現する上で無意味な処理になってしまうおそれがあるからである。また、画質を優先するのであればｋ≦１とするのが適切であるが、処理速度を優先したいような場合には、ｋ＞１としてももちろん構わない。
【０１０１】
なお、図１６のＣ１、Ｃ２に示すように、スクリーンＳＣ上での投影画像のピクセルの大きさは、スクリーンＳＣへの投影位置によって異なる。例えば図１６のＣ２に示すようにプロジェクタＰＪからスクリーンＳＣへの距離が遠い場合には、Ｃ１に示すように距離が近い場合に比べて、スクリーンＳＣ上での投影画像のピクセルの大きさが大きくなる。従って、投影画像のピクセルの大きさを仮想カメラＶＣから見込む角度δについても、プロジェクタＰＪと仮想カメラＶＣが異なる位置にあることから、Ｃ１の場合とＣ２の場合とで異なり、Ｃ１ではδ＝δ１となり、Ｃ２ではδ＝δ２となり、δ１＜δ２の関係式が成り立つ。
【０１０２】
このように、投影画像のピクセルの大きさはスクリーンへの投影位置によって異なるため、角度εについても投影位置に応じて変化させることが望ましい。具体的には、頂点分割処理の対象となる３次元オブジェクトの頂点のスクリーンへの投影位置に応じて、角度ε（頂点分割数）を変化させる。例えばＣ１の投影位置では角度εを小さくし、Ｃ２の投影位置では角度εを大きくする。
【０１０３】
このように角度εを可変にすれば、例えばプロジェクタＰＪを取り換えるなどして解像度が変化した場合にも、プロジェクタＰＪの性能（解像度）を必要十分に発揮した描画を行うことが可能になる。
【０１０４】
この場合に、例えば、仮想カメラＶＣの位置情報やその時間変化情報、或いは描画負荷に基づいて、角度ε（頂点分割数）を変化させてもよい。例えば、仮想カメラＶＣの位置が変化し、ゲームシーン（ゲームステージ）が変化したと考えられる場合には、そのゲームシーンに適した角度εに設定する。また仮想カメラＶＣの移動速度（位置情報の時間変化情報）や描画負荷に応じて、角度ε（頂点分割数）を変化させる。例えば、前述のようにε＝ｋ×δと表される場合に、仮想カメラＶＣ（主人公カメラであり、その位置設定にはプレーヤの視点位置をヘッドトラッキング等で検出して反映させても良い）の移動速度が速い場合や、描画負荷が重い場合に、ｋを大きくして角度εを大きくする。前述のように、（θ／ｍ）＜εの関係式により頂点分割数ｍを設定する場合には、角度εが大きくなれば、同じ角度θに対して頂点分割数ｍは小さな値に設定されるようになる。従って、高い画質が求められないシーンにおいて高フレームレートを維持することが可能になる。逆に、比較的ゆっくりしたカメラワークのシーンなど、高フレームレートよりも画質が求められる場面においては、ｋを小さくして、角度εを小さくすればよい。
【０１０５】
或いは、プロジェクタの位置情報及びその時間変化情報や、スクリーンの形状及びその時間変化情報に応じて、角度ε（頂点分割数）を変化させてもよい。例えばプロジェクタの位置情報に応じて角度εを変化させれば、プロジェクタの設置位置等に応じた最適な角度εに設定できる。またプロジェクタの位置情報やその時間変化情報や、スクリーンの形状やその時間変化情報に応じて、角度εを設定すれば、例えば建物等の構造物へのプロジェクションマッピングにおいて柔軟な対応が可能になる。例えば、プロジェクションマッピングの対象となる構造物の形状等が動的に変化する場合にも、これに対応できるようになる。
【０１０６】
また、時間要素や３次元オブジェクトの属性に応じて、角度ε（頂点分割数）を変化させてもよい。このようにすれば、例えばゲーム空間における時間経過や、ゲームに登場する３次元オブジェクトの属性（種類）などに応じて、角度εを変化させることが可能になり、ゲーム用の投影画像の生成等に好適な手法を提供できる。
【０１０７】
次に図１７のフローチャートを用いて本実施形態の処理の詳細例を説明する。
【０１０８】
まず、頂点のスクリーンへの投影位置、仮想カメラの位置情報又はその時間変化情報、プロジェクタの位置情報又はその時間変化情報、スクリーンの形状又はその時間変化情報、描画負荷、時間要素、或いは３次元オブジェクトの属性等に基づいて、角度εを設定する（ステップＳ１）。そして角度εに基づいて頂点分割数を設定する（ステップＳ２）。
【０１０９】
次に、設定された頂点分割数で頂点分割処理を行う（ステップＳ３）。そして、頂点分割処理後の３次元オブジェクトの頂点位置と仮想カメラの位置とを結ぶ直線と、スクリーンとの交点位置を求める（ステップＳ４）。
【０１１０】
次に、求められた交点位置に基づいて、描画バッファでの描画オブジェクトの頂点位置を求める（ステップＳ５）。そして、求められた頂点位置に基づいてラスタライズを行って、投影画像を生成する（ステップＳ６）。
【０１１１】
なお本実施形態の手法は立体視用の投影画像の生成にも適用できる。例えば立体視用の投影画像を生成する場合には、図１８（Ａ）に示すように左目用仮想カメラＶＣＬ（広義には第１視点用仮想カメラ）と右目用仮想カメラＶＣＲ（広義には第２視点用仮想カメラ）を用意する。そして、左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲのそれぞれを用いて、本実施形態で説明した手法により投影画像を生成することで、立体視用の投影画像を生成できる。
【０１１２】
左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲの位置は、ヘッドトラッキング等により、プレーヤの左目および右目の位置を検出して設定しても良い。
【０１１３】
また、プレーヤの左目および右目の位置の検出を行うことができない場合であっても、描画対象となる３次元オブジェクトの投影位置に応じて、プレーヤの視点位置はある程度推測できるので、それに合わせて左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲの位置を設定することもできる。例えば、図１８（Ｂ）、図１８（Ｃ）に示すように、描画対象となる３次元オブジェクトの投影位置に応じて左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲの位置（視点位置）を変化させてもよい。
【０１１４】
例えば、図１８（Ｂ）のＤ１に示す投影位置に投影されるような３次元オブジェクトについては、それを見るプレーヤ（視聴者）も、Ｄ１に示す投影位置の方向に顔を向けると考えられる。従って、図１８（Ｂ）に示すように左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲの位置を設定して、立体視用の投影画像を生成する。
【０１１５】
同様に、図１８（Ｃ）のＤ２に示す投影位置に投影されるような３次元オブジェクトについては、それを見るプレーヤも、Ｄ２に示す投影位置の方向に顔を向けると考えられる。従って、図１８（Ｃ）に示すように左目用仮想カメラＶＣＬ、右目用仮想カメラＶＣＲの位置を設定して、立体視用の投影画像を生成する。こうすることで、プレーヤの視線方向等に応じた最適な投影画像を生成できるようになる。
【０１１６】
なお、実際に立体視映像を観察するための手段としては、メガネ方式（具体的には、偏光方式、時分割方式、分光方式等）および裸眼方式等が考えられる。それぞれに特徴があり、有利・不利となる環境条件もそれぞれ異なる。実施に当たっては、スクリーンの形状や表示内容、インタラクションの特徴などの環境条件に合わせて、適切なものを用いればよい。
【０１１７】
２．６  リアルタイムプロジェクションマッピング
次に、プロジェクションマッピング用の変換データをモデルデータから高速かつ正確に作成する手法について説明する。
【０１１８】
説明を簡単にするために、図１９（Ａ）に示すようなモデルを考える。プロジェクション用のスクリーンは立方体形状であるとする。もちろん、実際のスクリーンはもっと複雑な形状であることを想定している。このスクリーンのことを、立体スクリーンＳＣＳと呼ぶことにする。また、表示したい仮想オブジェクトＯＢＳは球体のオブジェクトであり、ポリゴンのメッシュで表されているとする。そして図１９（Ｂ）に示すように、仮想オブジェクトＯＢＳが、あたかも立体スクリーンＳＣＳの中に入っているかに見えるように、描画を行いたいとする。
【０１１９】
さて、ドーム投影は、スクリーン形状として楕円面を用いることで、近似できる場合が多く、楕円面の数式は単純なものであるので、視線との交点、プロジェクタの投射直線との交点などを求めることも容易である。しかし、一般的なプロジェクションマッピングの場合、立体スクリーンの形状モデルは、単純な数式で表すことができない場合が多いという問題がある。また、ドーム投影の場合であっても、製造上の都合等により、楕円面とは部分的に形状が異なる場合があり、その部分については歪み補正が難しいという問題がある。
【０１２０】
このような問題を解決するために、建物等へのプロジェクションマッピングを行う際には、実際に投影画像を映してみて調整するという手法がしばしば用いられる。
【０１２１】
例えば図５で説明したドーム投影の場合と同様に、仮想オブジェクトをいったん投影するための代理平面を適切に選ぶ。そしてプレーヤ（観察者）の位置から、立体スクリーンの形状そのものを、代理平面にレンダリングした画像を作成する。このとき、立体スクリーンの形状のエッジを明るく強調したような画像にしておくと、後の調整がしやすい。
【０１２２】
この画像を、実際にプロジェクタからスクリーンに向かって投影する。この場合に、プレーヤの位置から見ると、立体スクリーンに投影されたエッジがずれている。そこで、このエッジがぴったり合うように、画像上の頂点を編集ソフトで動かす。この動かした画像は、前述の２．１で説明した、メッシュの頂点にＵＶ座標を対応させたデータとなる（ここではそれを「メッシュ状のＵＶマップ」と呼ぶことにする）。以後は、ＣＧ画像を、代理平面を射影面として普通にレンダリングし、「メッシュ状のＵＶマップ」を用いて変換した画像を、プロジェクタで映せばよい。
【０１２３】
この手法の問題点としては、毎回その場で合わせるために、準備に時間と労力がかかるというものが挙げられる。また、立体スクリーンが、複雑な凹凸を持つ形状である場合には、調整のための頂点数が多くなり、更に手間がかかる。或いは、複雑な凹凸部分の補正の精度が落ちるという問題もある。
【０１２４】
そこで本実施形態では、立体スクリーンＳＣＳの形状が、予め形状データとして分かっている場合に、頂点をいちいち手調整で合わせるような手間をかけることなく、高速かつ正確に、歪みの補正を行う手法を提供する。ここでは、図９のような頂点単位で歪み補正に対して適用する場合の手法について説明する。この手法では、図２０や下記に示す（１）、（２）、（３）、（４）、（５）の処理をこの順で実行する。
（１）プレーヤの代表視点の位置に仮想カメラＶＣを置き、代理平面ＰＬＳを設定し、立体スクリーンＳＣＳの形状をＺバッファ法でレンダリングする。そのとき、Ｚバッファには、仮想カメラＶＣの位置から立体スクリーンＳＣＳまでの距離が、奥行き画像として残るので、それから、立体スクリーンＳＣＳの面の空間座標を求めることができる。これを、テクスチャとして保持しておく。
（２）仮想オブジェクトＯＢＳの各頂点（Ｘ，Ｙ，Ｚ）を、（１）でレンダリングを行った際の射影変換行列と同じ射影変換行列で変換することで、（１）で保持していたテクスチャ上の位置（Ｘ１，Ｙ１）を求める。
（３）位置（Ｘ１，Ｙ１）に対応したテクスチャ上の空間座標値を参照すれば、各頂点と立体スクリーンＳＣＳの交点の空間座標が分かる。
（４）上記の（３）で求められた交点と、プロジェクタＰＪを結ぶ直線ＬＰＳを求め、それに対応する描画バッファ上の位置（Ｘ，Ｙ）を計算する。
（５）これで、各頂点の位置を描画バッファ上の位置  （Ｘ，Ｙ）に変換できるので、それらをラスタライザに渡して、通常のレンダリング処理を行って、投影画像を生成して、プロジェクタＰＪにより投影する。この場合に、仮想オブジェクトＯＢＳのポリゴンの頂点分割処理であるテッセレーションを、適宜、行うようにする。
【０１２５】
このように図２０の手法では、スクリーンの形状に対応するスクリーンモデルオブジェクト（ＳＣＳ）を仮想カメラ（ＶＣ）の視点座標系で描画することで、ピクセルごと或いはスクリーンモデルオブジェクトの頂点ごとに奥行き値（Ｚ値）が設定された奥行き画像（Ｚバッファのテクスチャ）を生成する。そして、３次元オブジェクト（ＯＢＳ）の頂点の第１、第２の座標（（Ｘ，Ｙ））を、視点座標系（ＶＣの座標系）への射影変換行列で変換し、変換後の第１、第２の座標（（Ｘ１，Ｙ１））に基づいて、奥行き画像（Ｚバッファのテクスチャ）の奥行き値を参照することで、スクリーン（ＳＣＳ）との交点位置を求めている。
【０１２６】
なお、実際には、立体スクリーンのセッティングによる位置や角度のずれ、また、プレーヤの位置やプロジェクタの位置のずれにより、ぴったり補正することは困難である。そこで、前述した手法と同様に、立体スクリーンそのもののエッジを目立たせた画像をレンダリングし、それをプロジェクタで映して合わせることが望ましい。
【０１２７】
しかしながら本実施形態の手法では、立体スクリーンの形状データがある程度正確なものであれば、立体スクリーンの位置と方向、プロジェクタの位置と方向、プレーヤの代表視点の位置、といった、数少ないパラメータで調整することが可能となる。特に、立体スクリーンの形状が複雑な場合には、頂点の数が多くなるため、それを調整ポイントとしていちいち動かして合わせるよりも、はるかに少ない手間や時間で合わせることができる。
【０１２８】
また、従来から用いられている別の方法として、プロジェクション用のスクリーンの形状を、距離計測機等を用いて測量することで形状データを作成し、本実施形態と同様に歪み補正を行う、というものがある。しかしこの場合には、測量上の誤差が含まれてしまうことら、正確な形状データを取得するのは難しく、結果として正確に歪み補正ができないという欠点がある。測量に時間をかければ形状データの精度を上げることはできるが、プロジェクション用のスクリーンの形状が変化するような場合に、リアルタイムで正確な歪み補正データを得ることは難しい。正確な形状データや動きの情報が予め得られているのであれば、本実施形態の方法を採用することで、リアルタイムでの歪み補正、すなわちプロジェクションマッピングが可能となる。
【０１２９】
このように図２０に示す本実施形態の手法によれば、従来では長時間をかけて行わなければならなかった、調整用のマップの作成を、一瞬（レンダリング１回）で行うことができるという利点がある。その優位性が発揮される例としては、立体スクリーン、プロジェクタ、プレーヤの３者のいずれか、或いは複数が同時に、動くような場合が挙げられる。
【０１３０】
モーションセンサやヘッドトラッキングシステムを活用して、３者の位置や方向を正確に求めることができれば、以下のような応用が考えられる。
【０１３１】
例えばフィギュアやプラモデルなどを立体スクリーンとして活用し、回転台の上に載せて、その回転角度に応じた補正画像を投影する。
【０１３２】
或いは、ロボットを立体スクリーンとする。ロボットが動作したときの関節の角度などから、その時点における正確な形状（頂点の位置）を求め、それに応じた補正画像を投影する。
【０１３３】
或いは、立体スクリーンに対し、回り込んでも影ができないように複数のプロジェクタを配置しておく。プレーヤに対してヘッドトラッキングを行い、動きに対応した補正画像を投影することで、立体スクリーンを回り込んでも自然に見えるようにする。
【０１３４】
或いは、プレーヤが懐中電灯型プロジェクタを持って（或いは、ヘッドランプ状のプロジェクタが装備されたヘルメットを被って）、部屋の中のオブジェクトに光を当てるようなアトラクションで、プレーヤの位置及びプロジェクタの位置・方向に応じた補正画像を投影する。
【０１３５】
なお、図２０では、プロジェクションマッピング用の変換データをモデルデータから作成する手法を、３次元オブジェクトの頂点単位での歪み補正手法に対して適用した例について説明したが、当該手法は、図４で説明した描画バッファのピクセル単位での歪み補正手法に対しても適用可能である。
【０１３６】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、頂点分割数の設定手法、頂点分割処理手法、頂点位置の演算手法、角度εの設定手法等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム等の種々の画像生成システムに適用できる。
【符号の説明】
【０１３７】
ＳＣ  スクリーン、ＰＪ  プロジェクタ、ＶＣ  仮想カメラ、ＶＰ  仮想カメラの位置、
ＯＢ  ３次元オブジェクト、ＯＢＤ  描画オブジェクト、ＬＶ、ＬＲ  直線、
Ｖ  頂点、ＰＳ  交点、ＬＮ１、ＬＮ２  第１、第２の直線、θ、ε  角度、  
１  ゲームシステム、１００  処理部、１０２  ゲーム演算部、
１０４  オブジェクト空間設定部、１０６  移動体演算部、１０８  仮想カメラ制御部、
１１０  頂点分割数設定部、１１２  頂点分割処理部、１１４  頂点位置演算部、
１２０  描画部、１３０  音生成部、
１６０  操作部、１７０  記憶部、１７２  オブジェクトデータ記憶部、
１７６  描画バッファ、１７８  Ｚバッファ、１８０  情報記憶媒体、１９０  表示部、
１９２  音出力部、１９４  補助記憶装置、１９６  通信部、
１００２  プレーヤシート、１００４  スクリーン、１００６  プロジェクタ、
１００８  ハンドル、１００９  ブレーキペダル、１０１０  アクセルペダル、
１０１２  支柱、１０１４  筺体フレーム、１０２０  制御基板
【図１】
2014199617.tif 000003
【図２】
2014199617.tif 000004
【図３】
2014199617.tif 000005
【図４】
2014199617.tif 000006
【図５】
2014199617.tif 000007
【図７】
2014199617.tif 000008
【図８】
2014199617.tif 000009
【図９】
2014199617.tif 000010
【図１０】
2014199617.tif 000011
【図１１】
2014199617.tif 000012
【図１２】
2014199617.tif 000013
【図１３】
2014199617.tif 000014
【図１４】
2014199617.tif 000015
【図１５】
2014199617.tif 000016
【図１６】
2014199617.tif 000017
【図１７】
2014199617.tif 000018
【図１８】
2014199617.tif 000019
【図６】
2014199617.tif 000020
【図１９】
2014199617.tif 000021
【図２０】
2014199617.tif 000022