(57)【要約】  【課題】画像描画を効率よく実行することができる方法および装置を提供する。  【解決手段】マップ原点が３次元環境内に存在し、観察方向ベクトルがマップ原点を通るものとして定義され、マップ内のマップ位置とマップ原点を通るベクトルの方向との間に一対一の対応がある、３次元環境の２次元マップを作成する方法であって、マップ原点を通り、観察方向ベクトルと環境位置との双方を含む平面内に存在し、観察方向ベクトルに対してなす角度は観察方向ベクトルとマップ原点と環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、３次元環境内の環境位置に対応付けるステップと、環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、マップ位置の属性を、対応する環境位置の属性から導出するステップとを有する。【選択図】図１６
2007512603.tif 000002
【特許請求の範囲】
【請求項１】
マップ原点が３次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、３次元環境の２次元マップを作成する方法であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記３次元環境内の環境位置に対応付けるステップと、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、
マップ位置の属性を、対応する環境位置の属性から導出するステップと
を有する方法。
【請求項２】
請求項１記載の方法であって、
前記所定の関数が、所定の量による乗算であることを特徴とする方法。
【請求項３】
請求項２記載の方法であって、
前記所定の関数が０．５による乗算であることを特徴とする方法。
【請求項４】
請求項１から３のいずれか１項に記載の方法であって、
マップ点とマップ原点を通るベクトルの方向との前記一対一の対応が、前記ベクトル上において前記マップ原点から所定の距離にある点の所定の平面への投影を表わすものであることを特徴とする方法。
【請求項５】
請求項４記載の方法であって、
前記所定の平面が前記観察方向ベクトルに直交する平面であることを特徴とする方法。
【請求項６】
画像描画方法であって、
請求項１かから５のいずれか１項に記載の方法を用いて３次元環境の２次元マップを生成するステップと、
表示されるべき物体上の着目点に関して、当該着目点における法線ベクトルと観察方向とに依存して反射ベクトルを導出するステップと、
前記反射ベクトルを用いて前記２次元マップにおける位置を参照し、当該マップ位置における環境属性を検出するステップと、
前記着目点における前記物体の外観を、検出された前記環境属性に依存して変化させるステップと
を有する画像描画方法。
【請求項７】
請求項６記載の画像描画方法であって、
前記変化させるステップが前記物体の前記着目点における反射率に依存して実行されることを特徴とする画像描画方法。
【請求項８】
請求項６または７に記載の画像描画方法であって、
前記環境属性が照明属性を表わしていることを特徴とする画像描画方法。
【請求項９】
前記１から８のいずれか１項に記載の方法を実行するためのプログラムコードを有するコンピュータソフトウェア。
【請求項１０】
請求項９記載のソフトウェアを提供する提供媒体。
【請求項１１】
請求項１０記載の媒体であって、伝送媒体であることを特徴とする媒体。
【請求項１２】
請求項１０記載の媒体であって、格納媒体であることを特徴とする媒体。
【請求項１３】
マップ原点が３次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、３次元環境の２次元マップを作成する装置であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記３次元環境内の環境位置に対応付ける手段と、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けする手段と、
マップ位置の属性を、対応する環境位置の属性から導出する手段と
を有する装置。
【請求項１４】
画像描画装置であって、
請求項１３に記載の装置と、
表示すべき物体上の着目点に関して、当該着目点における法線ベクトルと観察方向とに依存して反射ベクトルを導出する手段と、
前記反射ベクトルを用いて前記２次元マップにおける位置を参照し、当該マップ位置における環境属性を検出する手段と、
前記着目点における前記物体の外観を、検出された前記環境属性に依存して変化させる手段と
を有する画像描画装置。
【請求項１５】
請求項１３または１４に記載の装置を有するビデオゲーム機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像描画に関する。
【背景技術】
【０００２】
多くの画像描画のアプリケーションは、表示される物体の表面的な外観に影響するものとして、その物体を取り巻く仮想的な環境を利用している。これにより、一般的に、描画された物体の写実性が増す。二つの例を挙げれば、一つは、照明効果を用いて物体と光源との相対的な位置および光源に対する表面の向きに応じて物体の外観を変化させることであり、もう一つは、周囲の移りこみを利用して、周囲の状況だけでなく物体の反射率や表面の向きに応じて物体の外観が変化できるようにすることである。
【０００３】
これを達成するために三つの技術が提案されてきたが、それは、キューブマッピング、球面マッピング、そして放物面マッピングである。これらの技術は幾らかのプロセスステップが共通している。特に、観察方向が一旦定められると、物体の表面の小領域に対して、物体に対する観察方向および物体上のその位置の表面法線に基づいて、「反射ベクトル」が計算される。この反射ベクトルは、物体の視点から見た周囲の景色に近似する環境の「マップ」における一つの位置を指し示す。そして、マップされた位置における環境の画像属性が、物体表面のその位置に適用される。そのような画像特性によって物体がどの程度修正されるかは、その物体の仮想的な反射率に依存している。こうした特長は上記技術に共通であるため、それらの技術の互いに異なる点を次に簡潔に説明する。
【０００４】
キューブマッピングは、視点と表面法線とから導出されるベクトルを利用して、キューブ（立方体）の面として配列される６つの正方形で表わされる環境「テクスチャ」に対応付ける。従って、６つの正方形は６つの直交方向における環境の平面投影を表わしている。これら６つの正方形を組み合わせることによって全環境を表わす単一のテクスチャが形成される。
【０００５】
球面マッピングは、あたかも非常に小さくて高反射の球面を環境中に置いて写真をとったかのようにして、単一のテクスチャマップを用いて全環境を表わす。計算が簡単であるため、球面環境マッピングは、広域の反射を描画するのに広範に利用されている。しかし、このマップは特異点を含むので、ある方向の環境を利用することができない。このことは観察方向を固定しなければならないことを意味し、特にリアルタイムシステムの場合、不利である。
【０００６】
二重放物面環境マッピングはHeidrichおよびSeidelによって開発されたものであり（例えば非特許文献１参照）、反射を物体に適用する別の方法を提供するものであり、いかなる所定の観察方向においても反射が見えるようにされている。基本的に、方向性を有する環境の影響は１８０度異なる方向の２つのマップにエンコードされ、１つは物体の前方の環境を表わしており、もう１つは後方の環境を表わす。球面マッピングと比べて、二重放物面マッピングの利点は、環境のサンプリングが良好であり、いわゆるスパークルアーティファクトが無く、観察方向が完全に自由であることである。
【０００７】
上記のマッピング技術のいずれかを利用するためには、環境は前もって準備されたもので静的であれば良い。しかし、あるアプリケーションの場合、例えば、コンピュータゲーム機によってカーレースをリアルタイムに表わす場合、環境は、観察されている自動車のその時の位置に依存している。このタイプの状況においては、前記方法のどの場合でも、環境テクスチャデータは、それが必要とされる時に導出されなければならない。
【０００８】
【非特許文献１】Proceedings of Eurographics/SIGGRAPH Workshop on Graphics Hardware 1998
【発明の開示】
【発明が解決しようとする課題】
【０００９】
これらのマッピングプロセスのいずれかにおいて用いる環境テクスチャデータを導出するためにはプロセッサを非常に集中的に使用しなければならない。キューブマッピングプロセス用のデータを導出するためには６パスのプロセスが使用される。球面マッピングの場合は２つの主要処理ステップを有するパスが４つ必要である。二重放物面マップを生成するために要求される処理は球面マップの場合の二倍である。
【課題を解決するための手段】
【００１０】
本発明は、マップ原点が３次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、３次元環境の２次元マップを作成する方法であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記３次元環境内の環境位置に対応付けるステップと、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、
マップ位置の属性を、対応する環境位置の属性から導出するステップと
を有する方法を提供する。
【００１１】
本発明は、単一パスを用いて、二重放物面的な技術に用いるのに適した、環境マップを可能にする。環境内の物体に関して、マッピング原点と物体（あるいは物体上の位置）との間のベクトルを定める。そのベクトルと観察方向（マップを生成する目的のための観察方向）との間の角度を変更して（好ましくは、二等分して）、折り畳みベクトルを得る。折り畳みベクトルは投影面に投影して、マップ位置を生成することができる。次いで、環境内の物体の画像属性を（反射目的であってもあるいは照明目的であっても）そのマップ位置に適用することができる。
【００１２】
本発明は、特に、ビデオゲーム機に用いるのに適している。本技術によれば処理要件が減少するので、マップを頻繁に（例えば各ビデオフレーム毎に）生成しなければならない状況に適している。
【００１３】
本発明はまた、上記の方法を実行するためのプログラムコードを有するコンピュータソフトウェアを提供する。このコンピュータソフトウェアは、伝送媒体あるいは記憶媒体のような提供媒体によって提供されるのが好ましい。
【００１４】
本発明の更なる側面および特徴は添付請求項に記載されている。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して本発明の実施形態を説明するが、それは例示だけを目的としている。
【００１６】
図１は、プレイステーション２（登録商標）の全体的なシステムアーキテクチャの概略図である。システムユニット１０には、システムユニットに接続可能な様々な周辺装置が提供されている。
【００１７】
システムユニット１０は、エモーションエンジン１００、グラフィックスシンセサイザ２００、ランダムアクセスメモリ（ＤＲＡＭ）を有するサウンドプロセッサユニット３００、読み出し専用メモリ（ＲＯＭ）４００、ＣＤ（コンパクトディスク）／ＤＶＤ（digital versatile disk）読取装置４５０、ラムバスＤＲＡＭ（ＲＤＲＡＭ）ユニット５００、専用ＲＡＭ７５０を備えた入出力プロセッサ（ＩＯＰ）７００を有している。オプションとして外部ハードディスクドライブ（ＨＤＤ）８００を接続することができる。
【００１８】
入出力プロセッサ（ＩＯＰ）７００は、２つのＵＳＢポート７１５Ａおよび７１５ＢとｉＬｉｎｋ（登録商標）ポートあるいはＩＥＥＥ１３９４ポート（ｉＬｉｎｋは、ソニー株式会社によってＩＥＥＥ１３９４規格を実装したものである）とを有している。ＩＯＰ７００は、ＵＳＢのデータトラフィック、ｉＬｉｎｋのデータトラフィック、ゲームコントローラのデータトラフィックのすべてを処理する。例えば、ユーザがゲームをしている場合、ＩＯＰ７００はゲームコントローラからデータを受信し、それをエモーションエンジン１００に送信する。それに従い、エモーションエンジン１００はゲームの現在状態を更新する。ＩＯＰ７００は、データ転送速度を高速にするためにダイレクトメモリアクセス（ＤＭＡ）アーキテクチャを有している。ＤＭＡには、データをＣＰＵを通過させずにメインメモリから装置に転送することが関係している。ＵＳＢインタフェースはオープンホストコントローラインタフェース（ＯＨＣＩ）と互換性があり、１．５Ｍｂｐｓから１２Ｍｂｐｓのデータ転送速度を扱うことができる。これらのインタフェースを備えることにより、プレイステーション２は、ビデオカセットレコーダ（ＶＣＲ）、ディジタルカメラ、セットトップボックス、プリンタ、キーボード、マウス、ジョイスティックなどの周辺装置に対して潜在的な適合性を有している。
【００１９】
一般的に、ＵＳＢポート７１５Ａあるいは７１５Ｂに接続された周辺装置とのデータ通信を成功裏に実現するためには、デバイスドライバなどの適切なソフトウェアが提供されなければならない。デバイスドライバ技術は非常によく知られているのでここでは詳細に説明しないが、ここで説明されている実施形態においてデバイスドライバや類似のソフトウェアインタフェースが必要となり得ることは当業者には既知であろう。
【００２０】
本実施形態においては、マイクロフォーン７３５およびＬＥＤ表示器７４０を備えるビデオカメラ７３０がＵＳＢポート７１５Ａに接続される。様々なビデオカメラを用いることができるが，特に好適なタイプのビデオカメラ７３５は、いわゆる「ウェブカメラ」、すなわち単一の電化結合素子（ＣＣＤ）による中解像度のカメラであって、基本的なハードウェアベースでリアルタイムにデータ圧縮および符号化を行なう構成を含むものであって、圧縮されたビデオ・オーディオデータは画像内ベースのＭＰＥＧ規格などの適切なフォーマットでカメラ７３５からＵＳＢポート７１５Ａへ送信され、プレイステーション２のシステムユニット１０において復号される。
【００２１】
カメラのＬＥＤ表示器７４０は、システムユニット１０からＵＳＢによるデータ接続を介して制御データを受信するために設けられる。ＣＰＵはこの経路によって制御信号を送信し、ＬＥＤを「オフ」モード、「定常オン」モード、および「点滅」モードに設定する。「点滅」モードではＬＥＤが例えば１秒間に１回から３回の割合で点滅する。ＬＥＤを点滅させるためのロジックがカメラの電子回路に設けられているので、システムユニット１０がＬＥＤの個々の点滅を指示する必要はない。
【００２２】
本発明の別の実施形態では、ウェブカメラに内蔵のマイクロフォーンを用いる代わりに、単体型のマイクロフォーン７４５が提供される。単体型のマイクロフォーンはウェブカメラ内蔵マイクロフォーンよりユーザに近い位置で用いることができ、システムにより良質の音声入力を提供できる。単体型のマイクロフォーンが提供される場合、第二のＵＳＢポート７１５Ｂを介してそれをシステムに接続することができる。
【００２３】
ＵＳＢポートとは別の他の２つのポート７０５、７１０は独自仕様のソケットであり、ゲームに関連した情報を格納するための独自仕様の不揮発性ＲＡＭメモリカード７２０、手で操作されるゲームコントローラ７２５、あるいは、手で操作されるゲームコントローラのように動作する装置（図示されていない）、例えばダンスマット等を接続することができる。
【００２４】
エモーションエンジン１００は１２８ビットの中央処理装置（ＣＰＵ）であり、ゲームアプリケーション用に３次元（３Ｄ）グラフィックスを効率よくシミュレーションするために特別に設計されたものである。エモーションエンジンの構成要素としては、データバス、キャッシュメモリ、レジスタが含まれており、そのすべてが１２８ビット構成である。これにより大量のマルチメディアデータを容易に高速処理することができる。これに比較して、従来のＰＣの基本データ構造は６４ビットである。プレイステーション２の浮動小数点計算性能は６．２ＧＦＬＯＰｓである。更に、エモーションエンジンはＭＰＥＧ２デコーダ回路を有しており、その回路によって３ＤグラフィックスデータとＤＶＤデータとの同時処理が可能である。エモーションエンジンは、数学的変換と平行移動とを含む幾何学的計算を実行し、シミュレーション物体の物理に関連した計算、例えば２つの物体間の摩擦の計算、を実行する。エモーションエンジンは画像描画コマンドのシーケンスを生成し、生成されたシーケンスは次いでグラフィックスシンセサイザ２００により利用される。画像描画コマンドはディスプレイリストの形式で出力される。ディスプレイリストは、どの基本グラフィックオブジェクト（例えば、点、線、三角形、スプライト）を画面のどの座標に描画すべきかをグラフィックスシンセサイザに指示するための描画コマンドのシーケンスである。したがって、典型的なディスプレイリストは、頂点を描画するコマンド、ポリゴンの面に陰影をつけるコマンド、ビットマップを描画するコマンド等を含んでいる。エモーションエンジン１００は複数のディスプレイリストを非同期的に生成することができる。
【００２５】
グラフィックスシンセサイザ２００は、エモーションエンジン１００により生成されたディスプレイリストの描画を行なうビデオアクセラレータである。グラフィックスシンセサイザ２００はグラフィックスインタフェースユニット（ＧＩＦ）を含んでおり、後者は複数のディスプレイリストを扱い、追跡し、管理する。グラフィックスシンセサイザ２００の描画機能は、様々な代替的な標準出力画像フォーマット、すなわちＮＴＳＣ／ＰＡＬ、高精細度ディジタルＴＶ（High Definition Digital TV）、ＶＥＳＡをサポートする画像データのいずれかを生成することができる。一般的に、グラフィックスシステムの描画能力は、ピクセルエンジンとビデオメモリ（どちらもグラフィックスプロセッサ内に存在している）との間のメモリバンド幅によって定義される。従来のグラフィックスシステムはオフチップバスを介してピクセルロジックに接続される外部ビデオラム（ＶＲＡＭ）を用いているので、利用可能なバンド幅は制約される傾向にある。しかし、プレイステーション２のグラフィックスシンセサイザ２００は単一の高性能チップ上にピクセルロジックとビデオメモリを備えているので、毎秒３８．４ギガバイトという比較的大きなメモリアクセスバンド幅が可能となっている。グラフィックスシンセサイザは、理論的には、毎秒７千５百万ポリゴンのピーク描画能力を達成可能である。テクスチャ、照明、透明度などあらゆるエフェクトをつけたとしても、毎秒２千万ポリゴンで連続的に描画することができる。従って、グラフィックスシンセサイザ２００はフィルム画質の映像を描画することができる。
【００２６】
サウンドプロセッサユニット（ＳＰＵ）３００は実質的にシステムのサウンドカードであり、ディジタルシアターサラウンド（ＤＴＳ、登録商標）や、ＤＶＤに用いられるサウンドフォーマットであるＡＣ−３（ドルビーディジタルとしても知られる）などの３Ｄディジタルを認識可能である。
【００２７】
スピーカ装置３１０を備えたビデオモニタやテレビ等のディスプレイ／音声出力装置３０５が、グラフィックスシンセサイザ２００およびサウンドプロセッサユニット３００からビデオ信号およびオーディオ信号を受け取るように接続されている。
【００２８】
エモーションエンジン１００をサポートするメインメモリは、ラムバス社によって製造されるＲＤＲＡＭ（ラムバスＤＲＡＭ）モジュール５００である。このＲＤＲＡＭメモリサブシステムは、ＲＡＭと、ＲＡＭ制御器と、ＲＡＭをエモーションエンジン１００に接続するバスとを有している。
【００２９】
図２は、図１のエモーションエンジン１００のアーキテクチャの概略図である。エモーションエンジン１００は、浮動小数点ユニット（ＦＰＵ）１０４、中央処理装置（ＣＰＵ）コア１０２、ベクトル演算ユニットゼロ（ＶＵ０）１０６、ベクトル演算ユニットワン（ＶＵ１）１０８、グラフィックスインタフェースユニット（ＧＩＦ）１１０、割込みコントローラ（ＩＮＴＣ）１１２、タイマユニット１１４、ダイレクトメモリアクセスコントローラ１１６、画像データプロセッサユニット（ＩＰＵ）１１８、ＤＲＡＭコントローラ（ＤＲＡＭＣ）１２０、サブバスインタフェース（ＳＩＦ）１２２、これらすべての構成要素を接続する１２８ビットのメインバス１２４を有している。
【００３０】
ＣＰＵコア１０２は３００ＭＨｚのクロックで動作する１２８ビットプロセッサである。ＣＰＵコア１０２はＤＲＡＭＣ１２０を介して３２ＭＢのメインメモリにアクセスする。ＣＰＵコア１０２の命令セットはＭＩＰＳ  ＩＩＩ  ＲＩＳＣをベースにしたものであり、ＭＩＰＳ  ＩＶ  ＲＩＳＣの命令の幾つかと付加的なマルチメディア命令とを備えている。ＭＩＰＳ  ＩＩＩおよびＩＶはミップステクノロジー社が所有権を有する縮小命令セットコンピュータ（ＲＩＳＣ）命令セットアーキテクチャである。標準命令は６４ビットであり、２つのスーパースカラ（同時に２つの命令を実行可能であることを意味する）である。一方、マルチメディア命令は２つのパイプラインによって１２８ビットの命令を用いる。ＣＰＵコア１０２は、１６ＫＢの命令キャッシュと、８ＫＢのデータキャッシュと、１６ＫＢのスクラッチパッドＲＡＭとを有する。スクラッチパッドＲＡＭはＣＰＵが直接用いるために確保されたＣＰＵ専用のキャッシュの一部である。
【００３１】
ＦＰＵ１０４はＣＰＵ１０２に対する第一のコプロセッサとして機能する。ベクトル演算ユニットゼロ１０６は第二のコプロセッサとして動作する。ＦＰＵ１０４は、浮動小数点積和演算論理装置（ＦＭＡＣ）と浮動小数点除算計算機（ＦＤＩＶ）とを有している。ＦＭＡＣとＦＤＩＶとはいずれも３２ビット値を処理するので、１２８ビット値（４個の３２ビット値からなる）を処理する場合には、その４つの部分をすべて同時に使用することで実現される。例えば、２つのベクトルの加算を一度に実行することができる。
【００３２】
ベクトル演算ユニットゼロ１０６およびベクトル演算ユニットワン１０８は数学演算を実行するものであり、実質的には、ベクトル方程式の乗算および加算を非常に高速に計算するように特化したＦＰＵである。これらのベクトル演算ユニットは、浮動小数点乗算加算演算器（ＦＭＡＣ）を用いて加算および乗算の演算を行ない、浮動小数点除算器（ＦＤＩＶ）を用いて乗算および平方根演算を行なう。これらのベクトル演算ユニットは、マイクロプログラムを格納するための内蔵メモリを有しており、またベクトルインタフェースユニット（ＶＩＦ）によってシステムの他の部分とのインタフェースを有している。ベクトル演算ユニットゼロ１０６は、専用の１２８ビットバス１２４を介してＣＰＵコア１０２に対してコプロセッサとして機能するので、実質的には第２の専用ＦＰＵである。一方、ベクトル演算ユニットワン１０８はグラフィックスシンセサイザ２００に対する専用のバスを有しており、したがって完全に別個のプロセッサと考えることができる。これら２つのベクトル演算ユニットを含むことにより、ソフトウェア開発者は処理をＣＰＵの異なる部分に分けることができ、これらのベクトル演算ユニットはシリアル接続でも並列接続でも用いることができる。
【００３３】
ベクトル演算ユニットゼロ１０６は４つのＦＭＡＣと１つのＦＤＩＶを有している。ベクトル演算ユニットゼロ１０６はＣＰＵコア１０２に対してコプロセッサ接続によって接続されている。ベクトル演算ユニットゼロ１０６はデータ用に４Ｋｂのベクトル演算ユニットメモリを有し、命令用に４Ｋｂのマイクロメモリを有している。ベクトル演算ユニットゼロ１０６は表示用の画像に関連する物理的計算を実行するのに有用である。ベクトル演算ユニットゼロ１０６は主に、ＣＰＵコア１０２と共に、パターン化されない幾何学的処理を実行する。
【００３４】
ベクトル演算ユニットワン１０８は５つのＦＭＡＣと２つのＦＤＩＶとを有している。ベクトル演算ユニットワン１０８はＣＰＵコア１０２に対する直接的なパスを有していないが、ＧＩＦユニット１１０に対しては直接的なパスを有している。ベクトル演算ユニットワン１０８は、データ用に１６Ｋｂのベクトル演算メモリを有し、命令用に１６Ｋｂのマイクロメモリを有している。ベクトル演算ユニットワン１０８は変換を実行するのに有用である。ベクトル演算ユニットワン１０８はパターン化された幾何学的処理を主に実行し、生成されたディスプレイリストをＧＩＦ１１０に直接出力する。
【００３５】
ＧＩＦ１１０はグラフィックスシンセサイザ２００に対するインタフェースユニットである。ＧＩＦ１１０はディスプレイリストのパケットの先頭にあるタグ指定に従ってデータを変換し、描画コマンドをグラフィックスシンセサイザ２００へ転送するが、その際、複数の転送を相互に調停する。割込みコントローラ（ＩＮＴＣ）１１２は、ＤＭＡＣを除く周辺装置からの割込みを調停する役割を果たす。
【００３６】
タイマユニット１１４は、１６ビットのカウンタを備えた４つの独立したタイマを有している。これらのタイマはバスクロック（１／１６あるいは１／２５６のインターバル）で駆動されるか、外部クロックによって駆動される。ＤＭＡＣ１１６は、メインメモリと周辺プロセッサとの間のデータ転送、あるいはメインメモリとスクラッチパッドメモリとの間のデータ転送を扱う。それと同時にＤＭＡＣ１１６はメインバス１２４を調停する。ＤＭＡＣ１１６の性能を最適化することはエモーションエンジンの性能を向上させるために不可欠な方法である。画像処理装置（ＩＰＵ）１１８は画像データプロセッサであって、圧縮されたアニメーションおよびテクスチャ画像を展開するのに用いられる。ＩＰＵ１１８は、Ｉ−ＰＩＣＴＵＲＥ  Ｍｃｒｏ−Ｂｌｏｃｋ復号、色空間補正、ベクトル量子化を実行する。最後に、サブバスインタフェース（ＳＩＦ）１２２はＩＯＰ７００へのインタフェースユニットである。ＳＩＦ１２２は、サウンドチップや記憶装置などのＩ／Ｏ装置を制御するために、それ自身のメモリとバスを有している。
【００３７】
図３は、グラフィックスシンセサイザ２００の構成の概略図である。グラフィックスシンセサイザは、ホストインタフェース２０２、ピクセルパイプライン２０６、メモリインタフェース２０８、フレームページバッファ２１４およびテクスチャページバッファ２１６を含むローカルメモリ２１２、ならびに、ビデオ変換器２１０を有している。
【００３８】
ホストインタフェース２０２は、ホスト（この場合は、エモーションエンジン１００のＣＰＵコア１０２）との間でデータを転送する。ホストからの描画データおよびバッファデータの両方がこのインタフェースを通過する。ホストインタフェース２０２からの出力は、グラフィックスシンセサイザ２００に提供され、グラフィックスシンセサイザ２００はグラフィックスを展開して、エモーションエンジン１００から受け取った頂点情報に基づいてピクセルを描画し、また、各ピクセルについてＲＧＢＡ値、デプス値（すなわちＺ値）、テクスチャ値、フォグ値などの情報を計算する。ＲＧＢＡ値は、赤、緑、青（ＲＧＢ）の色成分と、画像オブジェクトの不透明度を示すＡ（アルファ）成分を指定する。アルファ値は、完全な透明から完全な不透明までの値を取ることができる。ピクセルデータはピクセルパイプライン２０６に供給され、ピクセルパイプライン２０６はテクスチャマッピング、フォギング、アルファブレンディング（以下に説明する）などの処理を実行し、計算されたピクセル情報に基づいて最終的な描画色を決定する。
【００３９】
ピクセルパイプライン２０６は、１６個のピクセルエンジンＰＥ１、ＰＥ２、・・・、ＰＥ１６を有しており、最大１６個のピクセルを同時に処理することができる。ピクセルパイプライン２０６は１５０ＭＨｚで動作し、３２ビット・カラーと３２ビットのＺバッファを扱う。メモリインタフェース２０８はローカルグラフィックスシンセサイザメモリ２１２に対してデータを読み出しおよび書き込みを実行する。メモリインタフェース２０８は、ピクセル演算の最後に描画ピクセル値（ＲＧＢＡおよびＺ）をメモリに書き込み、メモリからフレームバッファ２１４のピクセル値を読取る。フレームバッファ２１４から読取ったピクセル値は、ピクセルテストあるいはアルファブレンディングに用いられる。メモリインタフェース２０８は又、フレームバッファの現在の内容に対するＲＧＢＡ値をローカルメモリ２１２から読取る。ローカルメモリ２１２は３２Ｍｂｉｔ（４ＭＢ）のメモリで、グラフィックスシンセサイザ２００に組み込まれている。ローカルメモリ２１２は、フレームバッファ２１４と、テクスチャバッファ２１６と、３２ビットのＺバッファ２１５として構成することができる。フレームバッファ２１４は、色情報などのピクセルデータが格納されるビデオメモリの一部である。
【００４０】
グラフィックスシンセサイザは２Ｄから３Ｄへのテクスチャマッピングプロセスを用いて３Ｄ形状に視覚上の詳細を付加する。各テクスチャは３Ｄ画像オブジェクトの表面に貼り付けられて、引き伸ばされ、ゆがめられることにより、３Ｄグラフィック効果を与える。テクスチャバッファは画像オブジェクトのためのテクスチャ情報を格納するために用いられる。Ｚバッファ２１５（デプスバッファとしても知られる）は、ピクセルのためのデプス情報を格納するために利用できるメモリである。画像は図形要素あるいはポリゴンとして知られる基本的な構成要素から構成される。あるポリゴンがＺバッファリングによって描画される場合、ポリゴンの各ピクセルのデプス値が、Ｚバッファに格納されている対応する値と比較される。Ｚバッファに格納されている値が新たなピクセル値以上であれば、そのピクセルは可視であると決定され、そのピクセルは描かれることになり、Ｚバッファは新しいピクセルのデプス値によって更新される。しかし、Ｚバッファのデプス値が新しいデプス値未満であれば、新しいピクセル値は既に描かれているものより後ろにあるので描かれない。
【００４１】
ローカルメモリ２１２は、フレームバッファおよびＺバッファにアクセスするために１０２４ビットの読取りポートと１０２４ビットの書込みポートを有し、又、テクスチャ読込みのために５１２ビットのポートを有している。ビデオ変換器２１０は、フレームメモリの内容を所定の出力フォーマットで表示するように動作することができる。
【００４２】
図４は環境マッピングプロセスを概略的に図示したものである。物体１０００は、プレイ中のゲームにより生成された仮想３Ｄ環境内に存在している。この例では、この物体は反射球体を表わしているが、例えば自動車のボンネットやティーポットなど、反射面あるいは少なくとも部分的な反射面を有する任意の物体を表わすものと考えることができるであろう。物体１０００は、観察位置１０１０から見たものとして描画されることになる。物体１０００が反射面を有するので、描画は観察位置１０１０から見た物体１０００からの環境の反射の計算を含むことになる。そのような反射は、環境（トポロジ）、物体１０００の形状、物体１０００の位置、および環境内の観察位置１０１０に依存している。例えば、立方体１０２０も環境内に存在する場合、物体１０００と立方体１０２０と観察位置１０１０との相対位置に依存して、その立方体は物体１０００からの反射としては観察位置１０１０から見えるかもしれないし、見えないかもしれない。
【００４３】
物体１０００の表面上に位置する表面点１０３０の観察位置１０１０から見た外観を計算するために、観察位置１０１０から表面点１０３０への観察ベクトル１０４０が計算される。観察ベクトルを正規化して、単位長のベクトルＵとすることができる。物体１０００の表面の表面点１０３０における法線を示す法線ベクトル１０５０が図示されている。法線ベクトルを正規化して、単位長のベクトルＮとすることができる。反射ベクトル１０６０は、下の数式１を用いて、ベクトルＵとベクトルＮとから計算することができる。
【００４４】
【数１】
2007512603.tif 000003
【００４５】
反射ベクトル１０６０は、表面点１０３０において物体１０００の表面からの反射として観察位置１０１０から観察される環境内の位置を指し示している。
【００４６】
これらのベクトルは任意の座標系において計算できるが、観察位置１０１０を原点に置いた座標系を用いるのが普通である。
【００４７】
環境マッピングプロセスにおいて、反射ベクトル１０６０は点をテクスチャマップに対応付けられるために用いられる。テクスチャマップは、３Ｄ環境を環境内に位置する特定のマッピング点から特定の方向へ見たものとして２Ｄ表現したものである。このマッピング点は表面点１０３０と同じでもよいし、同じでなくてもよい。テクスチャマップの生成については後に説明する。テクスチャマップが、特定の方向に向いたマッピング点から生成されるので、テクスチャマップの幾つかのセクションはマッピング点の前方の環境に関連し、他のセクションはマッピング点の背後の環境に関連するであろう。図４には、マッピングポイント１０４０の例および観察方向１０８０の例が図示されている。
【００４８】
図５は、観察点１１３０が与えられたときの３つの表面点１１００、１１１０、１１２０に関する３つの反射ベクトルＲ０、Ｒ１、Ｒ２の生成を図示したものである。これら３つの反射ベクトルＲ０、Ｒ１、Ｒ２は、正規化された３つの観察ベクトルＵ０、Ｕ１、Ｕ２と３つの単位法線ベクトルＮ０、Ｎ１、Ｎ２をそれぞれ用いて式１によって計算される。反射ベクトルは他の任意の表面点に関しても同じような方法で計算できる。あるいは、３つの表面点１１００、１１１０、１１２０から形成される三角形１１４０内においては比較的平坦な表面形状であると仮定すると、三角形１１４０内の点に関する反射ベクトルはそれら３つの反射ベクトルＲ０、Ｒ１、Ｒ２の補間によって計算してもよい。
【００４９】
図６は、二重放物面マッピングのための前向きテクスチャマップ１２００と後向きテクスチャマップ１２１０を図示したものである。この１対のテクスチャマップの生成については後で説明する。しかし、これらのマップが３Ｄ環境の２Ｄ投影となっていることに注目するのは重要である。前向きテクスチャマップ１２００は環境内の特定のマッピング点の前方の３Ｄ環境に関する情報を格納しているのに対して、後向きテクスチャマップ１２１０は、マッピング点の背後の３Ｄ環境に関する情報を格納している。一緒にすると、これらのマップは環境全体に関する情報を格納している。
【００５０】
物体１２２０はゲームによって生成された仮想３Ｄ環境内に存在しており、全面あるいは少なくとも部分的に反射面を有している。物体１２２０の表面上に位置する表面点１２３０における観察位置１２４０から見た外観を計算するために、観察位置１２４０から表面点１２３０への観察ベクトル１２５０が計算される。この観察ベクトル１２５０を正規化して、単位長のベクトルＵとすることができる。法線ベクトル１２６０は、表面点１２３０における物体１２２０の表面に対する法線を表わす。この法線ベクトル１２６０を正規化して、単位長のベクトルＮとすることができる。反射ベクトル１２７０は、式１を用いてベクトルＵとベクトルＮとから計算することができる。反射ベクトル１２７０は、表面点１２３０において物体１２２０の表面からの反射として観察位置１２４０から観察される環境内の位置１２８０を指し示している。
【００５１】
図７は二重放物面マップの導出を概略的に図示したものである。この図は、放物面１３００の表面の２Ｄ断面を示している。放物面１３００の式は下記数式２の通りであるが、この式の特徴は、ｚ軸に平行に進む光線であって表面点１３２０において放物面１３００の表面に入射する光線は反射方向１３３０に反射され、反射光は放物面１３００の原点１３４０から発するように見えることである。
【００５２】
【数２】
2007512603.tif 000004
【００５３】
二重放物面環境マップの前向き２Ｄテクスチャマップ１３５０を導出するために、放物面１３００は原点１３４０が所望のマッピング点にあり、正方向のｚ軸が所望の観察方向にあるものと仮定する。テクスチャマップ１３５０内のサンプル１３６０は、対応する反射方向１３３０が指し示す環境内の場所が有する特徴を呈する。後向き２Ｄテクスチャマップは同様の仕方で導出することができるが、ｚ軸が反対方向であることが異なっている。
【００５４】
図７は放物面１３００の表面の１つの断面とテクスチャマップ１３５０のそれに対応する一次元部分とを図示したものであるが、可能な同様の断面のすべてを用いることにより３Ｄの環境全体をサンプリングして２Ｄのテクスチャマップを作成できることは理解されるであろう。
【００５５】
図８ａおよび図８ｂは、それぞれ前向きテクスチャマップと後向きテクスチャマップの概略図である。これらが一緒になって、二重放物面環境マッピングをなす。円１４００および１４０１上に存在するサンプルは、観察方向に直交する平面であってマッピング点を含む平面内に存在する環境内の点を表わしている。即ち、反射方向１３３０が観察方向に直角な場合に指し示される環境内の点を表わしている。円１４００内に存在するサンプル１４１０は、マッピング点の前方の環境にある点を表わしている。円１４０１内に存在するサンプル１４１１は、マッピング点の背後にある環境内の点を表わしている。円１４００および円１４０１上のサンプルと、円１４００および円１４０１のそれぞれの内部のサンプル１４１０および１４１１だけを用いて環境内の任意の点を参照できることが理解されるであろう。しかし、円１４００の外に存在するサンプル１４２０は、マッピング点の背後の点を表わすものであって、後向きテクスチャマップと共に用いて、マッピング点の背後にある点のより正確な描画を実現することができる。同様に、円１４０１の外に存在するサンプル１４２１は、マッピング点の前方の点を表わすものであって、前向きテクスチャマップと共に用いて、マッピング点の前方にある点のより正確な描画を実現することができる。このようにして、図８ａおよび図８ｂの前向きテクスチャマップおよび後向きテクスチャマップは、それらが表わす３Ｄ環境の領域に関して部分的に重なり合っていることが理解されるであろう。
【００５６】
図９はマッピングプロセスを要約したフローチャートである。ステップＳ１５００において、二重放物面環境マップのために前向きテクスチャマップと後向きテクスチャマップが上記の方法によって作成される。この処理は、マッピング点が描画されるべき反射物体の中に位置するものとして行なわれるのが好ましい。
【００５７】
ステップＳ１５１０において、関連する正規化反射ベクトルが計算される。この処理は、描画されるべき反射物体の表面上の各サンプルに対して実行される。反射ベクトルの計算は、与えられる観察点、反射物体の位置、および反射物体の形状に依存する。
【００５８】
ステップＳ１５２０において、反射ベクトルを用いて二重放物面環境マップにおけるマップ値が参照される。１つの反射ベクトルが環境マップにおける１つ以上のマップ値を参照することがあり得る。例えば、その反射ベクトルがマップ内の非整数座標を有する点を指し示す場合がそうである。あるいは、上に説明したように前向きテクスチャマップと後向きテクスチャマップとはある程度の重なり合いがあるので、１つの反射ベクトルが両方のテクスチャマップのマップ値を参照することがあり得る。
【００５９】
ステップＳ１５３０において、ステップＳ１５２０において参照されたマップ値に従って反射物体の表面が描画される。１つの反射ベクトルが二重放物面環境マップにおける１つ以上のマップ値を参照する場合、描画において例えば補間等を行って、対応する表面点を描画するのに用いられる実際の値を導出することができるであろう。
【００６０】
ステップ１５４０において、反射物体の表面上の点のアルファ値を考慮する。ある点におけるアルファ値は、その点における不透明度を示している。アルファ値は０から１の範囲にあり、１は完全に不透明であることを示し、０は完全に透明であることを示す。所定の表面点のアルファ値が１より小さい（すなわち、完全に不透明ではない）場合、物体の背後の３Ｄ環境の一部を物体のその点を通して見ることができる。３Ｄ環境のこの部分は、二重放物面環境マップにおいて、観察位置からその表面点へのベクトルの方向を用いて参照することができる。次いで、描画された表面点を更新することができる。当業者には、例えばアルファブレンディングによってこれが達成できることが理解されるであろう。アルファブレンディングにおいては、３Ｄ環境内の２つの点、即ち表面において反射として観察される点と物体を通して観察される点、の属性の相対的比率によって表面点の属性が計算される。この相対的比率はその表面点のアルファ値に依存する。
【００６１】
図１０は、環境テクスチャマップを生成するための座標系の概略図である。原点はマッピング点１６００に置かれている。描画されるべき反射物体の内部にマッピング点１６００が位置するのは望ましいが、それが必須というわけではない。座標系は、マッピング点１６００から観察方向に正方向のｚ軸１６１０を有している。座標(xc,yc,zc)の環境点１６２０が環境内に存在している。環境点１６２０に位置ベクトル１６３０が対応しており、この位置ベクトルは原点１６００から環境点１６２０へのベクトルである。以下、テクスチャマップを生成する方法について説明する。
【００６２】
図１１は、いわゆる折り畳みプロセスを概略的に図示したものである。位置ベクトル１６３０はｚ軸１６１０に対して角φを成している。折り畳みベクトル１７００とは、原点１６００からのベクトルであって、位置ベクトル１６３０およびｚ軸１６１０と同じ平面にあり、かつ、ｚ軸１６１０に対して位置ベクトル１６３０の側に角φ／２を成すベクトルである。位置ベクトル１６３０および折り畳みベクトル１７００は同じ長さを持っている。折り畳みベクトル１７００の先端にある折り畳み点は座標(x'c, y'c, z'c)を有している。環境点１６２０は折り畳み点１７１０へと折りたたまれたと言ってよい。
【００６３】
図１２は、図１１のｘｙ平面への概略投影図である。図１２から分かるように、折り畳み点１７１０と環境点１６２０とを通る直線はｚ軸１６１０に交わる。即ち、環境点１６２０が折り畳み点１７１０へと折りたたまれると、折り畳みプロセスによって環境点１６２０はｚ軸１６１０へ向かって移動される。折り畳み点を計算する方法を以下に説明する。
【００６４】
図１３は座標軸の回転を概略的に図示したものである。平面１８００は、ｚ軸を通り、かつ、環境点１６２０を含む平面である。平面１８００はｘ軸１８１０と角θを成している。環境点１６２０に関して、折り畳みプロセスはこの平面１８００内で行なわれる。計算を簡単にするため、回転後のｘ軸が平面１８００内に存在するまで、座標軸がｚ軸１６１０の周りを回転させられる。
【００６５】
元の座標系の任意の点(x,y,z)に関して、回転後の軸に関する座標(x',y',z')は、下記の数式３に示す通りである。
【００６６】
【数３】
2007512603.tif 000005
【００６７】
図１３に示された状況においては、ｓｉｎθおよびｃｏｓθは、下記の数式４に示す通りである。
【００６８】
【数４】
2007512603.tif 000006
【００６９】
ｓｉｎθおよびｃｏｓθに関するこれらの値と上記回転行列を用いることにより、回転後の座標空間における環境点１６２０の座標は下記の数式５に示す通りであり、したがって平面１８００のｕｖ軸における環境点１６２０の座標は下記の数式６に示す通りである。
【００７０】
【数５】
2007512603.tif 000007
【００７１】
【数６】
2007512603.tif 000008
【００７２】
図１４は回転後の座標に適用した折り畳みプロセスを概略的に図示したものであり、折り畳みは平面１８００内において生じている。標準的な三角恒等式を適用すると、環境点１６２０は折り畳み点１７１０へと折りたたまれる。折り畳み点１７１０の座標は下記の数式７に示す通りである。
【００７３】
【数７】
2007512603.tif 000009
【００７４】
ここでＲの値は下記の数式８に示す通りである。
【００７５】
【数８】
2007512603.tif 000010
【００７６】
また、ｃｏｓφ＝ｖ／Ｒであり、ｖ＝ｚｃであるので、下記の数式９が得られる。
【００７７】
【数９】
2007512603.tif 000011
【００７８】
回転されていない元の座標系における折り畳み点１７１０の座標(x'c, y'c, z'c)を決定するために残されていることは、回転行列を用いることにより点(u',0,v')をｚ軸１６１０の周りに−θの角度で回転させることだけである。
【００７９】
図１５は点を投影面１８５０に投影する方法を概略的に図示したものである。ｖ軸（すなわち観察方向）は投影面１８５０に対して直角を成している。投影面１８５０は、原点１６００に置かれたカメラが見ることができる最大の視野を表わしている。したがって、投影面１８５０は観察点（すなわち原点１６００）から観察方向（すなわちｖ軸）に向いたとき、観察点の前方にある。
【００８０】
折り畳み点１７１０は、投影面１８５０における投影点１８６０へと投影される。投影点１８６０は、折り畳みベクトル１７００と投影面１８５０との交点にある。
【００８１】
図１５は、点を投影面に投影する良く知られた方法を、折り畳み点１７１０に適用したものを図示していることが分かる。
【００８２】
本実施形態では、折り畳み点１７１０に対応する投影点１８６０からテクスチャマップを作る、即ち、環境点１６２０の属性をその環境点１６２０に対する折り畳み点１７１０の投影点１８６０に対応付けることにより、環境マッピング用の前向きテクスチャマップを生成する。これを、ｚ≧０であるすべての環境点１６２０に対して行なうことにより、マッピング点１６００の前方のすべての環境を描写することができる。しかし、（既に説明したテクスチャマップに関する類似の方法で）マッピング点１６００の背後の環境の領域を前向きテクスチャマップにおいて描写することもできるであろう。後向きテクスチャマップも同じような方法で生成することができる。
【００８３】
生成されたテクスチャマップは必要に応じてサイズ変更することができる。例えば、そのようなテクスチャマップを利用する既存のハードウェアあるいはソフトウェアプロセスであって入力テクスチャマップのサイズが要求されたサイズであるものに適応するために、そうすることができる。
【００８４】
二重放物面環境マップ用のテクスチャマップを生成する現在一般の方法では、第一ステップで４つの画像を生成する。これらの画像は、特定の位置に特定の方向を向けておかれた４台のカメラから観察されるであろう３Ｄ環境の景色である。最終的なテクスチャマップはこれら４つの画像を結合するプロセスによって生成され、４つの画像の各々はテクスチャマップに必要なデータの４分の１を提供する。これに対して、本実施形態ではそのような４つのキャプチャパスを必要とせず、最後の結合プロセスも必要としない。その代わり、テクスチャマップの各点は単に１つの折り畳み点に対応し、その折り畳み点は環境内の１つの点に対応する。その結果、テクスチャマップを生成するために要求される処理の量は非常に減少する。
【００８５】
ある環境の場合、近くに物体が全く存在せず、実際上、環境は無限遠にあると考えることができる。それで、１つの環境マップだけを生成する必要がある。ただし、勿論、環境が変化しない場合である。しかし、ゲームをプレイする場合には、環境内の物体が反射物体に近づく場合がしばしばある。反射表面を現実的に描画するために、新しい環境マップを非常に頻繁に、例えばフレーム毎に、生成する必要がある。同様に、環境が絶えず変化している場合、環境マップは絶え間なく更新しなければならない。したがって、テクスチャマップの生成を可能な限り効率的に実行するのは重要である。本実施形態によるテクスチャマップの生成は、これまでの生成方法に比べて要求される処理が少ない。
【００８６】
１つの実施形態では、テクスチャマップが、初期テクスチャ（例えば、空のテクスチャ）で初期化される。３Ｄ環境内の存在する各物体に関して、テクスチャマップ内のそれに対応する位置はその物体の属性にしたがって更新される。別の実施形態では、テクスチャマップの各サンプルに関して、環境においてそれに対応する点が識別され、テクスチャマップのそのサンプルの属性は環境内の対応する点から導出される。
【００８７】
図１６は、３Ｄ環境内の点に対して折り畳みプロセスを用いることによるテクスチャマップの生成を要約したフローチャートである。ステップＳ１９００において、環境内の折り畳み点は、環境の座標系から「カメラ空間」の座標系へと変換される。「カメラ空間」の座標系とは、図７のようにして確立された座標系であり、原点がマッピング点に置かれ、正方向のｚ軸は観察方向とされている。
【００８８】
ステップＳ１９１０において、環境点は観察方向へと折りたたまれる。
【００８９】
ステップＳ１９２０において、折り畳み点は投影面へと投影され、テクスチャマップが作られる。
【００９０】
ステップＳ１９００、Ｓ１９１０、Ｓ１９２０は、テクスチャマップの生成と参照マップ値の決定に関する図９のフローチャートのステップ１５００からステップＳ１５２０において用いることができる。図９のフローチャートの残りのステップはすべて、そのままとすることができる。
【００９１】
図１７は、回転後の座標系に適用する別の折り畳みプロセスを概略的に図示したものである。この別の折り畳みプロセスにおいては、環境点１６２０（位置ベクトル１６３０を有する）は、回転後の座標系のｖ軸に向かって折りたたまれる。位置ベクトル１６３０の長さがｌであるとすると、第一の折り畳み点２０００に対する折り畳みベクトル２０１０は、位置ベクトル１６３０と長さがｌでｖ軸に平行なベクトル２０２０の和である。標準的な三角法によると、ｖ軸と位置ベクトル１６３和との間の角度がφの場合、ｖ軸と折り畳みベクトル２０１０との間の角度はφ／２である。
【００９２】
折り畳みベクトル２０１０に沿って中間の点２０３０を折り畳み点１７１０に対する近似として用いることができる。しかし、点２０３０を用いることと折り畳み点２０００を用いることとの間に実質的な違いはない。なぜなら、唯一の違いは倍率だけだからである（これは、環境を拡大縮小し、原点１６００に置かれたカメラの設定を変更したものと見なすことができる）。
【００９３】
実際、折り畳み点を計算するためにこの方法を用いることは、先に説明した、折り畳み点を計算する方法に対する改良であることが判明した。改良点は次の通りである。
（ａ）折り畳みプロセスにより生成されたテクスチャマップを用いて描画された３Ｄ環境の画質、および、
（ｂ）効率性。なぜなら、第２の方法は長さの計算と２つのベクトルの和だけが関係しているのに対し、第１の方法は三角関数の複雑な計算が関係しているからである。
【００９４】
物体が置かれた環境全体を反射する反射物体について考えたが、当業者には、光源が反射物体に入射する場合にその物体を描画するのに同じ方法が用いられることが理解されるであろう。物体の外観は光源と物体との相対位置と、物体の表面形状とに依存して変化する。
【００９５】
上に説明した本発明の実施形態が、少なくとも部分的ではあっても、ソフトウェア制御されたデータ処理装置を用いて実行される限り、そのようなソフトウェア制御を提供するコンピュータプログラムやそのようなコンピュータプログラムを格納する格納・伝送媒体も本発明の側面と考えることができる。
【図面の簡単な説明】
【００９６】
【図１】プレイステーション２の全体的なシステムアーキテクチャの概略図である。
【図２】エモーションエンジンのアーキテクチャの概略図である。
【図３】グラフィックシンセサイザの構成の概略図である。
【図４】環境マッピングプロセスを概略的に図示したものである。
【図５】物体上の３つの点に関する反射ベクトルの生成を概略的に図示したものである。
【図６】二重放物面マップ用の一対のテクスチャマップを概略的に図示したものである。
【図７】二重放物面マップの導出を概略的に図示したものである。
【図８】２つのマップ例の概略図である。
【図９】マッピングプロセスを要約したフローチャートである。
【図１０】座標系の概略図である。
【図１１】折り畳みプロセスを概略的に図示したものである。
【図１２】ｘｙ平面への図１２の概略投影図である。
【図１３】座標軸の回転を概略的に図示したものである。
【図１４】回転後の座標系に適用した折り畳みプロセスを概略的に図示したものである。
【図１５】点を投影面に投影する方法を概略的に図示したものである。
【図１６】３Ｄ環境内の点に対して折り畳みプロセスを用いることによるテクスチャマップの生成を要約したフローチャートである。
【図１７】回転後の座標系に適用する別の折り畳みプロセスを概略的に図示したものである。
【符号の説明】
【００９７】
１０・・・システムユニット、１００・・・エモーションエンジン、２００・・・グラフィックスシンセサイザ、３００・・・サウンドプロセッサユニット、４００・・・ＲＯＭ、４５０・・・ＤＶＤ／ＣＤ、５００・・・ＲＤＲＡＭ、７００・・・ＩＯＰ、７５０・・・ＲＡＭ
【図１】
2007512603.tif 000012
【図２】
2007512603.tif 000013
【図３】
2007512603.tif 000014
【図４】
2007512603.tif 000015
【図５】
2007512603.tif 000016
【図６】
2007512603.tif 000017
【図７】
2007512603.tif 000018
【図８】
2007512603.tif 000019
【図９】
2007512603.tif 000020
【図１０】
2007512603.tif 000021
【図１１】
2007512603.tif 000022
【図１２】
2007512603.tif 000023
【図１３】
2007512603.tif 000024
【図１４】
2007512603.tif 000025
【図１５】
2007512603.tif 000026
【図１６】
2007512603.tif 000027
【図１７】
2007512603.tif 000028
【国際調査報告】
2007512603.tif 000029
2007512603.tif 000030
2007512603.tif 000031