説明

画像描画

【課題】画像描画を効率よく実行することができる方法および装置を提供する。
【解決手段】マップ原点が3次元環境内に存在し、観察方向ベクトルがマップ原点を通るものとして定義され、マップ内のマップ位置とマップ原点を通るベクトルの方向との間に一対一の対応がある、3次元環境の2次元マップを作成する方法であって、マップ原点を通り、観察方向ベクトルと環境位置との双方を含む平面内に存在し、観察方向ベクトルに対してなす角度は観察方向ベクトルとマップ原点と環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、3次元環境内の環境位置に対応付けるステップと、環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、マップ位置の属性を、対応する環境位置の属性から導出するステップとを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像描画に関する。
【背景技術】
【0002】
多くの画像描画のアプリケーションは、表示される物体の表面的な外観に影響するものとして、その物体を取り巻く仮想的な環境を利用している。これにより、一般的に、描画された物体の写実性が増す。二つの例を挙げれば、一つは、照明効果を用いて物体と光源との相対的な位置および光源に対する表面の向きに応じて物体の外観を変化させることであり、もう一つは、周囲の移りこみを利用して、周囲の状況だけでなく物体の反射率や表面の向きに応じて物体の外観が変化できるようにすることである。
【0003】
これを達成するために三つの技術が提案されてきたが、それは、キューブマッピング、球面マッピング、そして放物面マッピングである。これらの技術は幾らかのプロセスステップが共通している。特に、観察方向が一旦定められると、物体の表面の小領域に対して、物体に対する観察方向および物体上のその位置の表面法線に基づいて、「反射ベクトル」が計算される。この反射ベクトルは、物体の視点から見た周囲の景色に近似する環境の「マップ」における一つの位置を指し示す。そして、マップされた位置における環境の画像属性が、物体表面のその位置に適用される。そのような画像特性によって物体がどの程度修正されるかは、その物体の仮想的な反射率に依存している。こうした特長は上記技術に共通であるため、それらの技術の互いに異なる点を次に簡潔に説明する。
【0004】
キューブマッピングは、視点と表面法線とから導出されるベクトルを利用して、キューブ(立方体)の面として配列される6つの正方形で表わされる環境「テクスチャ」に対応付ける。従って、6つの正方形は6つの直交方向における環境の平面投影を表わしている。これら6つの正方形を組み合わせることによって全環境を表わす単一のテクスチャが形成される。
【0005】
球面マッピングは、あたかも非常に小さくて高反射の球面を環境中に置いて写真をとったかのようにして、単一のテクスチャマップを用いて全環境を表わす。計算が簡単であるため、球面環境マッピングは、広域の反射を描画するのに広範に利用されている。しかし、このマップは特異点を含むので、ある方向の環境を利用することができない。このことは観察方向を固定しなければならないことを意味し、特にリアルタイムシステムの場合、不利である。
【0006】
二重放物面環境マッピングはHeidrichおよびSeidelによって開発されたものであり(例えば非特許文献1参照)、反射を物体に適用する別の方法を提供するものであり、いかなる所定の観察方向においても反射が見えるようにされている。基本的に、方向性を有する環境の影響は180度異なる方向の2つのマップにエンコードされ、1つは物体の前方の環境を表わしており、もう1つは後方の環境を表わす。球面マッピングと比べて、二重放物面マッピングの利点は、環境のサンプリングが良好であり、いわゆるスパークルアーティファクトが無く、観察方向が完全に自由であることである。
【0007】
上記のマッピング技術のいずれかを利用するためには、環境は前もって準備されたもので静的であれば良い。しかし、あるアプリケーションの場合、例えば、コンピュータゲーム機によってカーレースをリアルタイムに表わす場合、環境は、観察されている自動車のその時の位置に依存している。このタイプの状況においては、前記方法のどの場合でも、環境テクスチャデータは、それが必要とされる時に導出されなければならない。
【0008】
【非特許文献1】Proceedings of Eurographics/SIGGRAPH Workshop on Graphics Hardware 1998
【発明の開示】
【発明が解決しようとする課題】
【0009】
これらのマッピングプロセスのいずれかにおいて用いる環境テクスチャデータを導出するためにはプロセッサを非常に集中的に使用しなければならない。キューブマッピングプロセス用のデータを導出するためには6パスのプロセスが使用される。球面マッピングの場合は2つの主要処理ステップを有するパスが4つ必要である。二重放物面マップを生成するために要求される処理は球面マップの場合の二倍である。
【課題を解決するための手段】
【0010】
本発明は、マップ原点が3次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、3次元環境の2次元マップを作成する方法であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記3次元環境内の環境位置に対応付けるステップと、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、
マップ位置の属性を、対応する環境位置の属性から導出するステップと
を有する方法を提供する。
【0011】
本発明は、単一パスを用いて、二重放物面的な技術に用いるのに適した、環境マップを可能にする。環境内の物体に関して、マッピング原点と物体(あるいは物体上の位置)との間のベクトルを定める。そのベクトルと観察方向(マップを生成する目的のための観察方向)との間の角度を変更して(好ましくは、二等分して)、折り畳みベクトルを得る。折り畳みベクトルは投影面に投影して、マップ位置を生成することができる。次いで、環境内の物体の画像属性を(反射目的であってもあるいは照明目的であっても)そのマップ位置に適用することができる。
【0012】
本発明は、特に、ビデオゲーム機に用いるのに適している。本技術によれば処理要件が減少するので、マップを頻繁に(例えば各ビデオフレーム毎に)生成しなければならない状況に適している。
【0013】
本発明はまた、上記の方法を実行するためのプログラムコードを有するコンピュータソフトウェアを提供する。このコンピュータソフトウェアは、伝送媒体あるいは記憶媒体のような提供媒体によって提供されるのが好ましい。
【0014】
本発明の更なる側面および特徴は添付請求項に記載されている。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して本発明の実施形態を説明するが、それは例示だけを目的としている。
【0016】
図1は、プレイステーション2(登録商標)の全体的なシステムアーキテクチャの概略図である。システムユニット10には、システムユニットに接続可能な様々な周辺装置が提供されている。
【0017】
システムユニット10は、エモーションエンジン100、グラフィックスシンセサイザ200、ランダムアクセスメモリ(DRAM)を有するサウンドプロセッサユニット300、読み出し専用メモリ(ROM)400、CD(コンパクトディスク)/DVD(digital versatile disk)読取装置450、ラムバスDRAM(RDRAM)ユニット500、専用RAM750を備えた入出力プロセッサ(IOP)700を有している。オプションとして外部ハードディスクドライブ(HDD)800を接続することができる。
【0018】
入出力プロセッサ(IOP)700は、2つのUSBポート715Aおよび715BとiLink(登録商標)ポートあるいはIEEE1394ポート(iLinkは、ソニー株式会社によってIEEE1394規格を実装したものである)とを有している。IOP700は、USBのデータトラフィック、iLinkのデータトラフィック、ゲームコントローラのデータトラフィックのすべてを処理する。例えば、ユーザがゲームをしている場合、IOP700はゲームコントローラからデータを受信し、それをエモーションエンジン100に送信する。それに従い、エモーションエンジン100はゲームの現在状態を更新する。IOP700は、データ転送速度を高速にするためにダイレクトメモリアクセス(DMA)アーキテクチャを有している。DMAには、データをCPUを通過させずにメインメモリから装置に転送することが関係している。USBインタフェースはオープンホストコントローラインタフェース(OHCI)と互換性があり、1.5Mbpsから12Mbpsのデータ転送速度を扱うことができる。これらのインタフェースを備えることにより、プレイステーション2は、ビデオカセットレコーダ(VCR)、ディジタルカメラ、セットトップボックス、プリンタ、キーボード、マウス、ジョイスティックなどの周辺装置に対して潜在的な適合性を有している。
【0019】
一般的に、USBポート715Aあるいは715Bに接続された周辺装置とのデータ通信を成功裏に実現するためには、デバイスドライバなどの適切なソフトウェアが提供されなければならない。デバイスドライバ技術は非常によく知られているのでここでは詳細に説明しないが、ここで説明されている実施形態においてデバイスドライバや類似のソフトウェアインタフェースが必要となり得ることは当業者には既知であろう。
【0020】
本実施形態においては、マイクロフォーン735およびLED表示器740を備えるビデオカメラ730がUSBポート715Aに接続される。様々なビデオカメラを用いることができるが,特に好適なタイプのビデオカメラ735は、いわゆる「ウェブカメラ」、すなわち単一の電化結合素子(CCD)による中解像度のカメラであって、基本的なハードウェアベースでリアルタイムにデータ圧縮および符号化を行なう構成を含むものであって、圧縮されたビデオ・オーディオデータは画像内ベースのMPEG規格などの適切なフォーマットでカメラ735からUSBポート715Aへ送信され、プレイステーション2のシステムユニット10において復号される。
【0021】
カメラのLED表示器740は、システムユニット10からUSBによるデータ接続を介して制御データを受信するために設けられる。CPUはこの経路によって制御信号を送信し、LEDを「オフ」モード、「定常オン」モード、および「点滅」モードに設定する。「点滅」モードではLEDが例えば1秒間に1回から3回の割合で点滅する。LEDを点滅させるためのロジックがカメラの電子回路に設けられているので、システムユニット10がLEDの個々の点滅を指示する必要はない。
【0022】
本発明の別の実施形態では、ウェブカメラに内蔵のマイクロフォーンを用いる代わりに、単体型のマイクロフォーン745が提供される。単体型のマイクロフォーンはウェブカメラ内蔵マイクロフォーンよりユーザに近い位置で用いることができ、システムにより良質の音声入力を提供できる。単体型のマイクロフォーンが提供される場合、第二のUSBポート715Bを介してそれをシステムに接続することができる。
【0023】
USBポートとは別の他の2つのポート705、710は独自仕様のソケットであり、ゲームに関連した情報を格納するための独自仕様の不揮発性RAMメモリカード720、手で操作されるゲームコントローラ725、あるいは、手で操作されるゲームコントローラのように動作する装置(図示されていない)、例えばダンスマット等を接続することができる。
【0024】
エモーションエンジン100は128ビットの中央処理装置(CPU)であり、ゲームアプリケーション用に3次元(3D)グラフィックスを効率よくシミュレーションするために特別に設計されたものである。エモーションエンジンの構成要素としては、データバス、キャッシュメモリ、レジスタが含まれており、そのすべてが128ビット構成である。これにより大量のマルチメディアデータを容易に高速処理することができる。これに比較して、従来のPCの基本データ構造は64ビットである。プレイステーション2の浮動小数点計算性能は6.2GFLOPsである。更に、エモーションエンジンはMPEG2デコーダ回路を有しており、その回路によって3DグラフィックスデータとDVDデータとの同時処理が可能である。エモーションエンジンは、数学的変換と平行移動とを含む幾何学的計算を実行し、シミュレーション物体の物理に関連した計算、例えば2つの物体間の摩擦の計算、を実行する。エモーションエンジンは画像描画コマンドのシーケンスを生成し、生成されたシーケンスは次いでグラフィックスシンセサイザ200により利用される。画像描画コマンドはディスプレイリストの形式で出力される。ディスプレイリストは、どの基本グラフィックオブジェクト(例えば、点、線、三角形、スプライト)を画面のどの座標に描画すべきかをグラフィックスシンセサイザに指示するための描画コマンドのシーケンスである。したがって、典型的なディスプレイリストは、頂点を描画するコマンド、ポリゴンの面に陰影をつけるコマンド、ビットマップを描画するコマンド等を含んでいる。エモーションエンジン100は複数のディスプレイリストを非同期的に生成することができる。
【0025】
グラフィックスシンセサイザ200は、エモーションエンジン100により生成されたディスプレイリストの描画を行なうビデオアクセラレータである。グラフィックスシンセサイザ200はグラフィックスインタフェースユニット(GIF)を含んでおり、後者は複数のディスプレイリストを扱い、追跡し、管理する。グラフィックスシンセサイザ200の描画機能は、様々な代替的な標準出力画像フォーマット、すなわちNTSC/PAL、高精細度ディジタルTV(High Definition Digital TV)、VESAをサポートする画像データのいずれかを生成することができる。一般的に、グラフィックスシステムの描画能力は、ピクセルエンジンとビデオメモリ(どちらもグラフィックスプロセッサ内に存在している)との間のメモリバンド幅によって定義される。従来のグラフィックスシステムはオフチップバスを介してピクセルロジックに接続される外部ビデオラム(VRAM)を用いているので、利用可能なバンド幅は制約される傾向にある。しかし、プレイステーション2のグラフィックスシンセサイザ200は単一の高性能チップ上にピクセルロジックとビデオメモリを備えているので、毎秒38.4ギガバイトという比較的大きなメモリアクセスバンド幅が可能となっている。グラフィックスシンセサイザは、理論的には、毎秒7千5百万ポリゴンのピーク描画能力を達成可能である。テクスチャ、照明、透明度などあらゆるエフェクトをつけたとしても、毎秒2千万ポリゴンで連続的に描画することができる。従って、グラフィックスシンセサイザ200はフィルム画質の映像を描画することができる。
【0026】
サウンドプロセッサユニット(SPU)300は実質的にシステムのサウンドカードであり、ディジタルシアターサラウンド(DTS、登録商標)や、DVDに用いられるサウンドフォーマットであるAC−3(ドルビーディジタルとしても知られる)などの3Dディジタルを認識可能である。
【0027】
スピーカ装置310を備えたビデオモニタやテレビ等のディスプレイ/音声出力装置305が、グラフィックスシンセサイザ200およびサウンドプロセッサユニット300からビデオ信号およびオーディオ信号を受け取るように接続されている。
【0028】
エモーションエンジン100をサポートするメインメモリは、ラムバス社によって製造されるRDRAM(ラムバスDRAM)モジュール500である。このRDRAMメモリサブシステムは、RAMと、RAM制御器と、RAMをエモーションエンジン100に接続するバスとを有している。
【0029】
図2は、図1のエモーションエンジン100のアーキテクチャの概略図である。エモーションエンジン100は、浮動小数点ユニット(FPU)104、中央処理装置(CPU)コア102、ベクトル演算ユニットゼロ(VU0)106、ベクトル演算ユニットワン(VU1)108、グラフィックスインタフェースユニット(GIF)110、割込みコントローラ(INTC)112、タイマユニット114、ダイレクトメモリアクセスコントローラ116、画像データプロセッサユニット(IPU)118、DRAMコントローラ(DRAMC)120、サブバスインタフェース(SIF)122、これらすべての構成要素を接続する128ビットのメインバス124を有している。
【0030】
CPUコア102は300MHzのクロックで動作する128ビットプロセッサである。CPUコア102はDRAMC120を介して32MBのメインメモリにアクセスする。CPUコア102の命令セットはMIPS III RISCをベースにしたものであり、MIPS IV RISCの命令の幾つかと付加的なマルチメディア命令とを備えている。MIPS IIIおよびIVはミップステクノロジー社が所有権を有する縮小命令セットコンピュータ(RISC)命令セットアーキテクチャである。標準命令は64ビットであり、2つのスーパースカラ(同時に2つの命令を実行可能であることを意味する)である。一方、マルチメディア命令は2つのパイプラインによって128ビットの命令を用いる。CPUコア102は、16KBの命令キャッシュと、8KBのデータキャッシュと、16KBのスクラッチパッドRAMとを有する。スクラッチパッドRAMはCPUが直接用いるために確保されたCPU専用のキャッシュの一部である。
【0031】
FPU104はCPU102に対する第一のコプロセッサとして機能する。ベクトル演算ユニットゼロ106は第二のコプロセッサとして動作する。FPU104は、浮動小数点積和演算論理装置(FMAC)と浮動小数点除算計算機(FDIV)とを有している。FMACとFDIVとはいずれも32ビット値を処理するので、128ビット値(4個の32ビット値からなる)を処理する場合には、その4つの部分をすべて同時に使用することで実現される。例えば、2つのベクトルの加算を一度に実行することができる。
【0032】
ベクトル演算ユニットゼロ106およびベクトル演算ユニットワン108は数学演算を実行するものであり、実質的には、ベクトル方程式の乗算および加算を非常に高速に計算するように特化したFPUである。これらのベクトル演算ユニットは、浮動小数点乗算加算演算器(FMAC)を用いて加算および乗算の演算を行ない、浮動小数点除算器(FDIV)を用いて乗算および平方根演算を行なう。これらのベクトル演算ユニットは、マイクロプログラムを格納するための内蔵メモリを有しており、またベクトルインタフェースユニット(VIF)によってシステムの他の部分とのインタフェースを有している。ベクトル演算ユニットゼロ106は、専用の128ビットバス124を介してCPUコア102に対してコプロセッサとして機能するので、実質的には第2の専用FPUである。一方、ベクトル演算ユニットワン108はグラフィックスシンセサイザ200に対する専用のバスを有しており、したがって完全に別個のプロセッサと考えることができる。これら2つのベクトル演算ユニットを含むことにより、ソフトウェア開発者は処理をCPUの異なる部分に分けることができ、これらのベクトル演算ユニットはシリアル接続でも並列接続でも用いることができる。
【0033】
ベクトル演算ユニットゼロ106は4つのFMACと1つのFDIVを有している。ベクトル演算ユニットゼロ106はCPUコア102に対してコプロセッサ接続によって接続されている。ベクトル演算ユニットゼロ106はデータ用に4Kbのベクトル演算ユニットメモリを有し、命令用に4Kbのマイクロメモリを有している。ベクトル演算ユニットゼロ106は表示用の画像に関連する物理的計算を実行するのに有用である。ベクトル演算ユニットゼロ106は主に、CPUコア102と共に、パターン化されない幾何学的処理を実行する。
【0034】
ベクトル演算ユニットワン108は5つのFMACと2つのFDIVとを有している。ベクトル演算ユニットワン108はCPUコア102に対する直接的なパスを有していないが、GIFユニット110に対しては直接的なパスを有している。ベクトル演算ユニットワン108は、データ用に16Kbのベクトル演算メモリを有し、命令用に16Kbのマイクロメモリを有している。ベクトル演算ユニットワン108は変換を実行するのに有用である。ベクトル演算ユニットワン108はパターン化された幾何学的処理を主に実行し、生成されたディスプレイリストをGIF110に直接出力する。
【0035】
GIF110はグラフィックスシンセサイザ200に対するインタフェースユニットである。GIF110はディスプレイリストのパケットの先頭にあるタグ指定に従ってデータを変換し、描画コマンドをグラフィックスシンセサイザ200へ転送するが、その際、複数の転送を相互に調停する。割込みコントローラ(INTC)112は、DMACを除く周辺装置からの割込みを調停する役割を果たす。
【0036】
タイマユニット114は、16ビットのカウンタを備えた4つの独立したタイマを有している。これらのタイマはバスクロック(1/16あるいは1/256のインターバル)で駆動されるか、外部クロックによって駆動される。DMAC116は、メインメモリと周辺プロセッサとの間のデータ転送、あるいはメインメモリとスクラッチパッドメモリとの間のデータ転送を扱う。それと同時にDMAC116はメインバス124を調停する。DMAC116の性能を最適化することはエモーションエンジンの性能を向上させるために不可欠な方法である。画像処理装置(IPU)118は画像データプロセッサであって、圧縮されたアニメーションおよびテクスチャ画像を展開するのに用いられる。IPU118は、I−PICTURE Mcro−Block復号、色空間補正、ベクトル量子化を実行する。最後に、サブバスインタフェース(SIF)122はIOP700へのインタフェースユニットである。SIF122は、サウンドチップや記憶装置などのI/O装置を制御するために、それ自身のメモリとバスを有している。
【0037】
図3は、グラフィックスシンセサイザ200の構成の概略図である。グラフィックスシンセサイザは、ホストインタフェース202、ピクセルパイプライン206、メモリインタフェース208、フレームページバッファ214およびテクスチャページバッファ216を含むローカルメモリ212、ならびに、ビデオ変換器210を有している。
【0038】
ホストインタフェース202は、ホスト(この場合は、エモーションエンジン100のCPUコア102)との間でデータを転送する。ホストからの描画データおよびバッファデータの両方がこのインタフェースを通過する。ホストインタフェース202からの出力は、グラフィックスシンセサイザ200に提供され、グラフィックスシンセサイザ200はグラフィックスを展開して、エモーションエンジン100から受け取った頂点情報に基づいてピクセルを描画し、また、各ピクセルについてRGBA値、デプス値(すなわちZ値)、テクスチャ値、フォグ値などの情報を計算する。RGBA値は、赤、緑、青(RGB)の色成分と、画像オブジェクトの不透明度を示すA(アルファ)成分を指定する。アルファ値は、完全な透明から完全な不透明までの値を取ることができる。ピクセルデータはピクセルパイプライン206に供給され、ピクセルパイプライン206はテクスチャマッピング、フォギング、アルファブレンディング(以下に説明する)などの処理を実行し、計算されたピクセル情報に基づいて最終的な描画色を決定する。
【0039】
ピクセルパイプライン206は、16個のピクセルエンジンPE1、PE2、・・・、PE16を有しており、最大16個のピクセルを同時に処理することができる。ピクセルパイプライン206は150MHzで動作し、32ビット・カラーと32ビットのZバッファを扱う。メモリインタフェース208はローカルグラフィックスシンセサイザメモリ212に対してデータを読み出しおよび書き込みを実行する。メモリインタフェース208は、ピクセル演算の最後に描画ピクセル値(RGBAおよびZ)をメモリに書き込み、メモリからフレームバッファ214のピクセル値を読取る。フレームバッファ214から読取ったピクセル値は、ピクセルテストあるいはアルファブレンディングに用いられる。メモリインタフェース208は又、フレームバッファの現在の内容に対するRGBA値をローカルメモリ212から読取る。ローカルメモリ212は32Mbit(4MB)のメモリで、グラフィックスシンセサイザ200に組み込まれている。ローカルメモリ212は、フレームバッファ214と、テクスチャバッファ216と、32ビットのZバッファ215として構成することができる。フレームバッファ214は、色情報などのピクセルデータが格納されるビデオメモリの一部である。
【0040】
グラフィックスシンセサイザは2Dから3Dへのテクスチャマッピングプロセスを用いて3D形状に視覚上の詳細を付加する。各テクスチャは3D画像オブジェクトの表面に貼り付けられて、引き伸ばされ、ゆがめられることにより、3Dグラフィック効果を与える。テクスチャバッファは画像オブジェクトのためのテクスチャ情報を格納するために用いられる。Zバッファ215(デプスバッファとしても知られる)は、ピクセルのためのデプス情報を格納するために利用できるメモリである。画像は図形要素あるいはポリゴンとして知られる基本的な構成要素から構成される。あるポリゴンがZバッファリングによって描画される場合、ポリゴンの各ピクセルのデプス値が、Zバッファに格納されている対応する値と比較される。Zバッファに格納されている値が新たなピクセル値以上であれば、そのピクセルは可視であると決定され、そのピクセルは描かれることになり、Zバッファは新しいピクセルのデプス値によって更新される。しかし、Zバッファのデプス値が新しいデプス値未満であれば、新しいピクセル値は既に描かれているものより後ろにあるので描かれない。
【0041】
ローカルメモリ212は、フレームバッファおよびZバッファにアクセスするために1024ビットの読取りポートと1024ビットの書込みポートを有し、又、テクスチャ読込みのために512ビットのポートを有している。ビデオ変換器210は、フレームメモリの内容を所定の出力フォーマットで表示するように動作することができる。
【0042】
図4は環境マッピングプロセスを概略的に図示したものである。物体1000は、プレイ中のゲームにより生成された仮想3D環境内に存在している。この例では、この物体は反射球体を表わしているが、例えば自動車のボンネットやティーポットなど、反射面あるいは少なくとも部分的な反射面を有する任意の物体を表わすものと考えることができるであろう。物体1000は、観察位置1010から見たものとして描画されることになる。物体1000が反射面を有するので、描画は観察位置1010から見た物体1000からの環境の反射の計算を含むことになる。そのような反射は、環境(トポロジ)、物体1000の形状、物体1000の位置、および環境内の観察位置1010に依存している。例えば、立方体1020も環境内に存在する場合、物体1000と立方体1020と観察位置1010との相対位置に依存して、その立方体は物体1000からの反射としては観察位置1010から見えるかもしれないし、見えないかもしれない。
【0043】
物体1000の表面上に位置する表面点1030の観察位置1010から見た外観を計算するために、観察位置1010から表面点1030への観察ベクトル1040が計算される。観察ベクトルを正規化して、単位長のベクトルUとすることができる。物体1000の表面の表面点1030における法線を示す法線ベクトル1050が図示されている。法線ベクトルを正規化して、単位長のベクトルNとすることができる。反射ベクトル1060は、下の数式1を用いて、ベクトルUとベクトルNとから計算することができる。
【0044】
【数1】

【0045】
反射ベクトル1060は、表面点1030において物体1000の表面からの反射として観察位置1010から観察される環境内の位置を指し示している。
【0046】
これらのベクトルは任意の座標系において計算できるが、観察位置1010を原点に置いた座標系を用いるのが普通である。
【0047】
環境マッピングプロセスにおいて、反射ベクトル1060は点をテクスチャマップに対応付けられるために用いられる。テクスチャマップは、3D環境を環境内に位置する特定のマッピング点から特定の方向へ見たものとして2D表現したものである。このマッピング点は表面点1030と同じでもよいし、同じでなくてもよい。テクスチャマップの生成については後に説明する。テクスチャマップが、特定の方向に向いたマッピング点から生成されるので、テクスチャマップの幾つかのセクションはマッピング点の前方の環境に関連し、他のセクションはマッピング点の背後の環境に関連するであろう。図4には、マッピングポイント1040の例および観察方向1080の例が図示されている。
【0048】
図5は、観察点1130が与えられたときの3つの表面点1100、1110、1120に関する3つの反射ベクトルR、R、Rの生成を図示したものである。これら3つの反射ベクトルR、R、Rは、正規化された3つの観察ベクトルU、U、Uと3つの単位法線ベクトルN、N、Nをそれぞれ用いて式1によって計算される。反射ベクトルは他の任意の表面点に関しても同じような方法で計算できる。あるいは、3つの表面点1100、1110、1120から形成される三角形1140内においては比較的平坦な表面形状であると仮定すると、三角形1140内の点に関する反射ベクトルはそれら3つの反射ベクトルR、R、Rの補間によって計算してもよい。
【0049】
図6は、二重放物面マッピングのための前向きテクスチャマップ1200と後向きテクスチャマップ1210を図示したものである。この1対のテクスチャマップの生成については後で説明する。しかし、これらのマップが3D環境の2D投影となっていることに注目するのは重要である。前向きテクスチャマップ1200は環境内の特定のマッピング点の前方の3D環境に関する情報を格納しているのに対して、後向きテクスチャマップ1210は、マッピング点の背後の3D環境に関する情報を格納している。一緒にすると、これらのマップは環境全体に関する情報を格納している。
【0050】
物体1220はゲームによって生成された仮想3D環境内に存在しており、全面あるいは少なくとも部分的に反射面を有している。物体1220の表面上に位置する表面点1230における観察位置1240から見た外観を計算するために、観察位置1240から表面点1230への観察ベクトル1250が計算される。この観察ベクトル1250を正規化して、単位長のベクトルUとすることができる。法線ベクトル1260は、表面点1230における物体1220の表面に対する法線を表わす。この法線ベクトル1260を正規化して、単位長のベクトルNとすることができる。反射ベクトル1270は、式1を用いてベクトルUとベクトルNとから計算することができる。反射ベクトル1270は、表面点1230において物体1220の表面からの反射として観察位置1240から観察される環境内の位置1280を指し示している。
【0051】
図7は二重放物面マップの導出を概略的に図示したものである。この図は、放物面1300の表面の2D断面を示している。放物面1300の式は下記数式2の通りであるが、この式の特徴は、z軸に平行に進む光線であって表面点1320において放物面1300の表面に入射する光線は反射方向1330に反射され、反射光は放物面1300の原点1340から発するように見えることである。
【0052】
【数2】

【0053】
二重放物面環境マップの前向き2Dテクスチャマップ1350を導出するために、放物面1300は原点1340が所望のマッピング点にあり、正方向のz軸が所望の観察方向にあるものと仮定する。テクスチャマップ1350内のサンプル1360は、対応する反射方向1330が指し示す環境内の場所が有する特徴を呈する。後向き2Dテクスチャマップは同様の仕方で導出することができるが、z軸が反対方向であることが異なっている。
【0054】
図7は放物面1300の表面の1つの断面とテクスチャマップ1350のそれに対応する一次元部分とを図示したものであるが、可能な同様の断面のすべてを用いることにより3Dの環境全体をサンプリングして2Dのテクスチャマップを作成できることは理解されるであろう。
【0055】
図8aおよび図8bは、それぞれ前向きテクスチャマップと後向きテクスチャマップの概略図である。これらが一緒になって、二重放物面環境マッピングをなす。円1400および1401上に存在するサンプルは、観察方向に直交する平面であってマッピング点を含む平面内に存在する環境内の点を表わしている。即ち、反射方向1330が観察方向に直角な場合に指し示される環境内の点を表わしている。円1400内に存在するサンプル1410は、マッピング点の前方の環境にある点を表わしている。円1401内に存在するサンプル1411は、マッピング点の背後にある環境内の点を表わしている。円1400および円1401上のサンプルと、円1400および円1401のそれぞれの内部のサンプル1410および1411だけを用いて環境内の任意の点を参照できることが理解されるであろう。しかし、円1400の外に存在するサンプル1420は、マッピング点の背後の点を表わすものであって、後向きテクスチャマップと共に用いて、マッピング点の背後にある点のより正確な描画を実現することができる。同様に、円1401の外に存在するサンプル1421は、マッピング点の前方の点を表わすものであって、前向きテクスチャマップと共に用いて、マッピング点の前方にある点のより正確な描画を実現することができる。このようにして、図8aおよび図8bの前向きテクスチャマップおよび後向きテクスチャマップは、それらが表わす3D環境の領域に関して部分的に重なり合っていることが理解されるであろう。
【0056】
図9はマッピングプロセスを要約したフローチャートである。ステップS1500において、二重放物面環境マップのために前向きテクスチャマップと後向きテクスチャマップが上記の方法によって作成される。この処理は、マッピング点が描画されるべき反射物体の中に位置するものとして行なわれるのが好ましい。
【0057】
ステップS1510において、関連する正規化反射ベクトルが計算される。この処理は、描画されるべき反射物体の表面上の各サンプルに対して実行される。反射ベクトルの計算は、与えられる観察点、反射物体の位置、および反射物体の形状に依存する。
【0058】
ステップS1520において、反射ベクトルを用いて二重放物面環境マップにおけるマップ値が参照される。1つの反射ベクトルが環境マップにおける1つ以上のマップ値を参照することがあり得る。例えば、その反射ベクトルがマップ内の非整数座標を有する点を指し示す場合がそうである。あるいは、上に説明したように前向きテクスチャマップと後向きテクスチャマップとはある程度の重なり合いがあるので、1つの反射ベクトルが両方のテクスチャマップのマップ値を参照することがあり得る。
【0059】
ステップS1530において、ステップS1520において参照されたマップ値に従って反射物体の表面が描画される。1つの反射ベクトルが二重放物面環境マップにおける1つ以上のマップ値を参照する場合、描画において例えば補間等を行って、対応する表面点を描画するのに用いられる実際の値を導出することができるであろう。
【0060】
ステップ1540において、反射物体の表面上の点のアルファ値を考慮する。ある点におけるアルファ値は、その点における不透明度を示している。アルファ値は0から1の範囲にあり、1は完全に不透明であることを示し、0は完全に透明であることを示す。所定の表面点のアルファ値が1より小さい(すなわち、完全に不透明ではない)場合、物体の背後の3D環境の一部を物体のその点を通して見ることができる。3D環境のこの部分は、二重放物面環境マップにおいて、観察位置からその表面点へのベクトルの方向を用いて参照することができる。次いで、描画された表面点を更新することができる。当業者には、例えばアルファブレンディングによってこれが達成できることが理解されるであろう。アルファブレンディングにおいては、3D環境内の2つの点、即ち表面において反射として観察される点と物体を通して観察される点、の属性の相対的比率によって表面点の属性が計算される。この相対的比率はその表面点のアルファ値に依存する。
【0061】
図10は、環境テクスチャマップを生成するための座標系の概略図である。原点はマッピング点1600に置かれている。描画されるべき反射物体の内部にマッピング点1600が位置するのは望ましいが、それが必須というわけではない。座標系は、マッピング点1600から観察方向に正方向のz軸1610を有している。座標(xc,yc,zc)の環境点1620が環境内に存在している。環境点1620に位置ベクトル1630が対応しており、この位置ベクトルは原点1600から環境点1620へのベクトルである。以下、テクスチャマップを生成する方法について説明する。
【0062】
図11は、いわゆる折り畳みプロセスを概略的に図示したものである。位置ベクトル1630はz軸1610に対して角φを成している。折り畳みベクトル1700とは、原点1600からのベクトルであって、位置ベクトル1630およびz軸1610と同じ平面にあり、かつ、z軸1610に対して位置ベクトル1630の側に角φ/2を成すベクトルである。位置ベクトル1630および折り畳みベクトル1700は同じ長さを持っている。折り畳みベクトル1700の先端にある折り畳み点は座標(x'c, y'c, z'c)を有している。環境点1620は折り畳み点1710へと折りたたまれたと言ってよい。
【0063】
図12は、図11のxy平面への概略投影図である。図12から分かるように、折り畳み点1710と環境点1620とを通る直線はz軸1610に交わる。即ち、環境点1620が折り畳み点1710へと折りたたまれると、折り畳みプロセスによって環境点1620はz軸1610へ向かって移動される。折り畳み点を計算する方法を以下に説明する。
【0064】
図13は座標軸の回転を概略的に図示したものである。平面1800は、z軸を通り、かつ、環境点1620を含む平面である。平面1800はx軸1810と角θを成している。環境点1620に関して、折り畳みプロセスはこの平面1800内で行なわれる。計算を簡単にするため、回転後のx軸が平面1800内に存在するまで、座標軸がz軸1610の周りを回転させられる。
【0065】
元の座標系の任意の点(x,y,z)に関して、回転後の軸に関する座標(x',y',z')は、下記の数式3に示す通りである。
【0066】
【数3】

【0067】
図13に示された状況においては、sinθおよびcosθは、下記の数式4に示す通りである。
【0068】
【数4】

【0069】
sinθおよびcosθに関するこれらの値と上記回転行列を用いることにより、回転後の座標空間における環境点1620の座標は下記の数式5に示す通りであり、したがって平面1800のuv軸における環境点1620の座標は下記の数式6に示す通りである。
【0070】
【数5】

【0071】
【数6】

【0072】
図14は回転後の座標に適用した折り畳みプロセスを概略的に図示したものであり、折り畳みは平面1800内において生じている。標準的な三角恒等式を適用すると、環境点1620は折り畳み点1710へと折りたたまれる。折り畳み点1710の座標は下記の数式7に示す通りである。
【0073】
【数7】

【0074】
ここでRの値は下記の数式8に示す通りである。
【0075】
【数8】

【0076】
また、cosφ=v/Rであり、v=zであるので、下記の数式9が得られる。
【0077】
【数9】

【0078】
回転されていない元の座標系における折り畳み点1710の座標(x'c, y'c, z'c)を決定するために残されていることは、回転行列を用いることにより点(u',0,v')をz軸1610の周りに−θの角度で回転させることだけである。
【0079】
図15は点を投影面1850に投影する方法を概略的に図示したものである。v軸(すなわち観察方向)は投影面1850に対して直角を成している。投影面1850は、原点1600に置かれたカメラが見ることができる最大の視野を表わしている。したがって、投影面1850は観察点(すなわち原点1600)から観察方向(すなわちv軸)に向いたとき、観察点の前方にある。
【0080】
折り畳み点1710は、投影面1850における投影点1860へと投影される。投影点1860は、折り畳みベクトル1700と投影面1850との交点にある。
【0081】
図15は、点を投影面に投影する良く知られた方法を、折り畳み点1710に適用したものを図示していることが分かる。
【0082】
本実施形態では、折り畳み点1710に対応する投影点1860からテクスチャマップを作る、即ち、環境点1620の属性をその環境点1620に対する折り畳み点1710の投影点1860に対応付けることにより、環境マッピング用の前向きテクスチャマップを生成する。これを、z≧0であるすべての環境点1620に対して行なうことにより、マッピング点1600の前方のすべての環境を描写することができる。しかし、(既に説明したテクスチャマップに関する類似の方法で)マッピング点1600の背後の環境の領域を前向きテクスチャマップにおいて描写することもできるであろう。後向きテクスチャマップも同じような方法で生成することができる。
【0083】
生成されたテクスチャマップは必要に応じてサイズ変更することができる。例えば、そのようなテクスチャマップを利用する既存のハードウェアあるいはソフトウェアプロセスであって入力テクスチャマップのサイズが要求されたサイズであるものに適応するために、そうすることができる。
【0084】
二重放物面環境マップ用のテクスチャマップを生成する現在一般の方法では、第一ステップで4つの画像を生成する。これらの画像は、特定の位置に特定の方向を向けておかれた4台のカメラから観察されるであろう3D環境の景色である。最終的なテクスチャマップはこれら4つの画像を結合するプロセスによって生成され、4つの画像の各々はテクスチャマップに必要なデータの4分の1を提供する。これに対して、本実施形態ではそのような4つのキャプチャパスを必要とせず、最後の結合プロセスも必要としない。その代わり、テクスチャマップの各点は単に1つの折り畳み点に対応し、その折り畳み点は環境内の1つの点に対応する。その結果、テクスチャマップを生成するために要求される処理の量は非常に減少する。
【0085】
ある環境の場合、近くに物体が全く存在せず、実際上、環境は無限遠にあると考えることができる。それで、1つの環境マップだけを生成する必要がある。ただし、勿論、環境が変化しない場合である。しかし、ゲームをプレイする場合には、環境内の物体が反射物体に近づく場合がしばしばある。反射表面を現実的に描画するために、新しい環境マップを非常に頻繁に、例えばフレーム毎に、生成する必要がある。同様に、環境が絶えず変化している場合、環境マップは絶え間なく更新しなければならない。したがって、テクスチャマップの生成を可能な限り効率的に実行するのは重要である。本実施形態によるテクスチャマップの生成は、これまでの生成方法に比べて要求される処理が少ない。
【0086】
1つの実施形態では、テクスチャマップが、初期テクスチャ(例えば、空のテクスチャ)で初期化される。3D環境内の存在する各物体に関して、テクスチャマップ内のそれに対応する位置はその物体の属性にしたがって更新される。別の実施形態では、テクスチャマップの各サンプルに関して、環境においてそれに対応する点が識別され、テクスチャマップのそのサンプルの属性は環境内の対応する点から導出される。
【0087】
図16は、3D環境内の点に対して折り畳みプロセスを用いることによるテクスチャマップの生成を要約したフローチャートである。ステップS1900において、環境内の折り畳み点は、環境の座標系から「カメラ空間」の座標系へと変換される。「カメラ空間」の座標系とは、図7のようにして確立された座標系であり、原点がマッピング点に置かれ、正方向のz軸は観察方向とされている。
【0088】
ステップS1910において、環境点は観察方向へと折りたたまれる。
【0089】
ステップS1920において、折り畳み点は投影面へと投影され、テクスチャマップが作られる。
【0090】
ステップS1900、S1910、S1920は、テクスチャマップの生成と参照マップ値の決定に関する図9のフローチャートのステップ1500からステップS1520において用いることができる。図9のフローチャートの残りのステップはすべて、そのままとすることができる。
【0091】
図17は、回転後の座標系に適用する別の折り畳みプロセスを概略的に図示したものである。この別の折り畳みプロセスにおいては、環境点1620(位置ベクトル1630を有する)は、回転後の座標系のv軸に向かって折りたたまれる。位置ベクトル1630の長さがlであるとすると、第一の折り畳み点2000に対する折り畳みベクトル2010は、位置ベクトル1630と長さがlでv軸に平行なベクトル2020の和である。標準的な三角法によると、v軸と位置ベクトル163和との間の角度がφの場合、v軸と折り畳みベクトル2010との間の角度はφ/2である。
【0092】
折り畳みベクトル2010に沿って中間の点2030を折り畳み点1710に対する近似として用いることができる。しかし、点2030を用いることと折り畳み点2000を用いることとの間に実質的な違いはない。なぜなら、唯一の違いは倍率だけだからである(これは、環境を拡大縮小し、原点1600に置かれたカメラの設定を変更したものと見なすことができる)。
【0093】
実際、折り畳み点を計算するためにこの方法を用いることは、先に説明した、折り畳み点を計算する方法に対する改良であることが判明した。改良点は次の通りである。
(a)折り畳みプロセスにより生成されたテクスチャマップを用いて描画された3D環境の画質、および、
(b)効率性。なぜなら、第2の方法は長さの計算と2つのベクトルの和だけが関係しているのに対し、第1の方法は三角関数の複雑な計算が関係しているからである。
【0094】
物体が置かれた環境全体を反射する反射物体について考えたが、当業者には、光源が反射物体に入射する場合にその物体を描画するのに同じ方法が用いられることが理解されるであろう。物体の外観は光源と物体との相対位置と、物体の表面形状とに依存して変化する。
【0095】
上に説明した本発明の実施形態が、少なくとも部分的ではあっても、ソフトウェア制御されたデータ処理装置を用いて実行される限り、そのようなソフトウェア制御を提供するコンピュータプログラムやそのようなコンピュータプログラムを格納する格納・伝送媒体も本発明の側面と考えることができる。
【図面の簡単な説明】
【0096】
【図1】プレイステーション2の全体的なシステムアーキテクチャの概略図である。
【図2】エモーションエンジンのアーキテクチャの概略図である。
【図3】グラフィックシンセサイザの構成の概略図である。
【図4】環境マッピングプロセスを概略的に図示したものである。
【図5】物体上の3つの点に関する反射ベクトルの生成を概略的に図示したものである。
【図6】二重放物面マップ用の一対のテクスチャマップを概略的に図示したものである。
【図7】二重放物面マップの導出を概略的に図示したものである。
【図8】2つのマップ例の概略図である。
【図9】マッピングプロセスを要約したフローチャートである。
【図10】座標系の概略図である。
【図11】折り畳みプロセスを概略的に図示したものである。
【図12】xy平面への図12の概略投影図である。
【図13】座標軸の回転を概略的に図示したものである。
【図14】回転後の座標系に適用した折り畳みプロセスを概略的に図示したものである。
【図15】点を投影面に投影する方法を概略的に図示したものである。
【図16】3D環境内の点に対して折り畳みプロセスを用いることによるテクスチャマップの生成を要約したフローチャートである。
【図17】回転後の座標系に適用する別の折り畳みプロセスを概略的に図示したものである。
【符号の説明】
【0097】
10・・・システムユニット、100・・・エモーションエンジン、200・・・グラフィックスシンセサイザ、300・・・サウンドプロセッサユニット、400・・・ROM、450・・・DVD/CD、500・・・RDRAM、700・・・IOP、750・・・RAM

【特許請求の範囲】
【請求項1】
マップ原点が3次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、3次元環境の2次元マップを作成する方法であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記3次元環境内の環境位置に対応付けるステップと、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けするステップと、
マップ位置の属性を、対応する環境位置の属性から導出するステップと
を有する方法。
【請求項2】
請求項1記載の方法であって、
前記所定の関数が、所定の量による乗算であることを特徴とする方法。
【請求項3】
請求項2記載の方法であって、
前記所定の関数が0.5による乗算であることを特徴とする方法。
【請求項4】
請求項1から3のいずれか1項に記載の方法であって、
マップ点とマップ原点を通るベクトルの方向との前記一対一の対応が、前記ベクトル上において前記マップ原点から所定の距離にある点の所定の平面への投影を表わすものであることを特徴とする方法。
【請求項5】
請求項4記載の方法であって、
前記所定の平面が前記観察方向ベクトルに直交する平面であることを特徴とする方法。
【請求項6】
画像描画方法であって、
請求項1かから5のいずれか1項に記載の方法を用いて3次元環境の2次元マップを生成するステップと、
表示されるべき物体上の着目点に関して、当該着目点における法線ベクトルと観察方向とに依存して反射ベクトルを導出するステップと、
前記反射ベクトルを用いて前記2次元マップにおける位置を参照し、当該マップ位置における環境属性を検出するステップと、
前記着目点における前記物体の外観を、検出された前記環境属性に依存して変化させるステップと
を有する画像描画方法。
【請求項7】
請求項6記載の画像描画方法であって、
前記変化させるステップが前記物体の前記着目点における反射率に依存して実行されることを特徴とする画像描画方法。
【請求項8】
請求項6または7に記載の画像描画方法であって、
前記環境属性が照明属性を表わしていることを特徴とする画像描画方法。
【請求項9】
前記1から8のいずれか1項に記載の方法を実行するためのプログラムコードを有するコンピュータソフトウェア。
【請求項10】
請求項9記載のソフトウェアを提供する提供媒体。
【請求項11】
請求項10記載の媒体であって、伝送媒体であることを特徴とする媒体。
【請求項12】
請求項10記載の媒体であって、格納媒体であることを特徴とする媒体。
【請求項13】
マップ原点が3次元環境内に存在し、観察方向ベクトルが前記マップ原点を通るものとして定義され、マップ内のマップ位置と前記マップ原点を通るベクトルの方向との間に一対一の対応がある、3次元環境の2次元マップを作成する装置であって、
前記マップ原点を通り、前記観察方向ベクトルと前記環境位置との双方を含む平面内に存在し、前記観察方向ベクトルに対してなす角度は前記観察方向ベクトルと前記マップ原点と前記環境位置との間のベクトルとのなす角度の所定の関数である折り畳みベクトルを、前記3次元環境内の環境位置に対応付ける手段と、
環境位置を、当該環境位置に対応する折り畳みベクトルの方向に対応するマップ位置に対応付けする手段と、
マップ位置の属性を、対応する環境位置の属性から導出する手段と
を有する装置。
【請求項14】
画像描画装置であって、
請求項13に記載の装置と、
表示すべき物体上の着目点に関して、当該着目点における法線ベクトルと観察方向とに依存して反射ベクトルを導出する手段と、
前記反射ベクトルを用いて前記2次元マップにおける位置を参照し、当該マップ位置における環境属性を検出する手段と、
前記着目点における前記物体の外観を、検出された前記環境属性に依存して変化させる手段と
を有する画像描画装置。
【請求項15】
請求項13または14に記載の装置を有するビデオゲーム機。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公表番号】特表2007−512603(P2007−512603A)
【公表日】平成19年5月17日(2007.5.17)
【国際特許分類】
【出願番号】特願2006−540569(P2006−540569)
【出願日】平成16年11月2日(2004.11.2)
【国際出願番号】PCT/GB2004/004632
【国際公開番号】WO2005/055149
【国際公開日】平成17年6月16日(2005.6.16)
【出願人】(502070679)ソニー コンピュータ エンタテインメント ヨーロッパ リミテッド (40)
【Fターム(参考)】