(57)【特許請求の範囲】
【請求項１】
観測者に可視な複数のポリゴンピクセルを表すデータ信号を格納する、観測者の位置に関連したデプスバッファ手段を備えたコンピュータ画像生成装置で用いる光源サブアッセンブリであって、
複数の追加デプスバッファ手段であって、該追加デプスバッファ手段の各々は、表示すべきシーンを照射する複数の光源とそれぞれ関係付けられ、該複数の光源により照射される前記シーンの各部分を表すデータ信号を一時的に格納することを特徴とする追加デプスバッファ手段と、
光源プロセッサ手段であって、前記シーンの観測者に表示する各ピクセルへの照明の強さを調節するために、少なくとも１つの前記追加デプスバッファ手段からのデータ信号を受け取り、前記観測者の位置に関連したデプスバッファ手段により、前記複数の光源の各光源に応じてレンダリングされた各ピクセルを照射する光源全体を形成することを特徴とする、光源プロセッサ手段と、
を具備することを特徴とする光源サブアッセンブリ。
【請求項２】
請求項１に記載の光源サブアッセンブリであって、別々の前記複数の光源が前記シーンを照明し、前記追加デプスバッファ手段は、それぞれ別の前記複数の光源に関係付けられ、前記関係付けられた光源により照射される、表示可能なシーンのポリゴンの各部分を表すデータ信号を一時的に格納することを特徴とする光源サブアッセンブリ。
【請求項３】
請求項２に記載の光源サブアッセンブリであって、前記光源プロセッサ手段は全ての前記追加デプスバッファ手段からのデータ信号を用いて観測者に可視な各ポリゴンピクセルの全体的な光の強度を決定することを特徴とする光源サブアッセンブリ。
【請求項４】
請求項２に記載の光源サブアッセンブリであって、前記光源プロセッサ手段は、観測者に可視な各表示ピクセルを照射する前記光源全体から、（１−Ｌ１），．．．，（１−Ｌｎ）の積に基づいて飽和しない照明の強さデータ信号Ｌｒを生成し、Ｌｉは、ｉ＝１，．．．，ｎにおける個々の光源からの照明の強さを表すことを特徴とする光源サブアッセンブリ。
【請求項５】
請求項２に記載の光源サブアッセンブリであって、前記光源プロセッサ手段はまた、ｐとｑが正数であり、連続的に移動するｐ×ｑピクセルアレイを生成して観測者に可視な各ポリゴンピクセルの明るさを順次アンチエイリアス処理することを特徴とする光源サブアッセンブリ。
【請求項６】
請求項５に記載の光源サブアッセンブリであって、前記光源プロセッサ手段は、飽和しない照明の強さデータ信号Ｌｒ＝｛１−（１−Ｌ１）×（１−Ｌ２）×（１−Ｌ３）×・・・×（１−Ｌｉ）×・・・｝を生成し、Ｌｉは、ｉ＝１，．．．，ｎにおける個々の光源からの照明の強さを表すことを特徴とする光源サブアッセンブリ。
【請求項７】
リアルタイムコンピュータ画像生成装置において表示手段により観測者に表示される各ピクセルの明るさを計算する方法であって、
前記表示手段の各ピクセルで前記観測者に可視な物体のポリゴンピクセルを表すデータ信号を格納するステップと、
複数の光源のそれぞれの光源から見える各ポリゴンピクセルが、該複数の光源のそれぞれの光源から受けた照明の強さを表すデータ信号を、複数のデプスバッファに格納するステップと、
前記格納された光源から受けた照明の強さを表すデータ信号に応答して、各可視ピクセルに影響を与える各異なる光源からの寄与分を示す照明の強さを取得するために、前記観測者に可視な、表示される各ピクセルの明るさを表わすデータ信号を生成するステップと、
別々の前記複数の光源が表示すべきシーンを照明し、さらに、前記複数の光源の１つから見える前記各ポリゴンピクセルが複数の光源に関連する別々の各光源から受けた照明の強さを表すデータを格納するステップと、
前記観測者に可視な１組の表示ピクセルを別に格納するためのデプスバッファ手段と、光源から可視な表示ピクセルを別に格納するための追加デプスバッファ手段とを備えるステップと
を具備し、
前記データ信号を生成するステップには、前記格納された光源照明データ信号のうちの選択されたデータ信号に応答して、観測者に表示される観測者に可視な各ピクセルの全照明の強さの信号を生成するステップが含まれ、
前記複数の全ての光源からの前記格納された光源照明データ信号は、観測者に可視な各表示ピクセルの光の強さの総量のデータ信号を生成するために使用され、
複数の光源としてＮ個の光源が前記表示すべきシーンを照明したとき、個々の光源の照度Ｌｉ（１≦ｉ≦Ｎ）の１の補数の積の１の補数に実質的に等しくなるよう、飽和しない照明の強さデータ信号Ｌｒが生成されることを特徴とする方法。
【請求項８】
請求項７に記載の方法であって、ｐとｑが正数であるｐ×ｑピクセルアレイを生成するステップと、
該アレイを前記観測者のフレームを横切るように連続的に移動させて前記各表示ピクセルに対する照明をアンチエイリアシング処理することを特徴とする方法。
【請求項９】
請求項７に記載の方法であって、前記飽和しない照明の強さデータ信号Ｌｒ＝｛１−（１−Ｌ１）×（１−Ｌ２）×（１−Ｌ３）×・・・×（１−Ｌｉ）×・・・（１−Ｌｎ）｝を生成するステップであって、Ｌｉは、ｉ＝１，．．．，ｎにおける個々の光源からの照明の強さを表すことを特徴とするステップを含む方法。
【請求項１０】
請求項９に記載の方法であって、Ｊ番目の光源がシャットオフされたとき、前記Ｊ番目の光源の照明の強さＬｊと元の照明の強さＬｒとに関連させて、新たな照明の強さＬｒ’をＬｒ’＝（Ｌｒ−Ｌｊ）／（１−Ｌｊ）により生成することを特徴とする方法。
【請求項１１】
請求項７に記載の方法であって、前記複数の光源の個々の光源に関する、光源から可視な１組のピクセルは、複数のバッファ手段の対応する１つのデプスバッファ手段に別々に格納されることを特徴とする方法。
【請求項１２】
請求項１１に記載の方法であって、光源から可視なピクセルを別に格納するためのデプスバッファの空間範囲は、全体シーンフレームよりも少ない部分を照明する、関連付けられた光源に応じて制限されることを特徴とする方法。
【請求項１３】
請求項７に記載の方法であって、前記データ信号を生成するステップには、前記各観測者に可視な表示ピクセルを照射する前記光源全体から、飽和しない全照明の強さデータの信号Ｌｒを生成するステップがさらに含まれることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ画像生成（ＣＩＧ）またはコンピュータグラフィックス装置に関し、特に、リアルタイム画像生成システムにおいて３次元物体を２次元的に表現するときの表示に含まれる物体表面の複数光源照明を記述する画像データを処理し、該物体表面によるアンチエイリアス陰影生成を記述するディスプレイプロセッサで用いる新規な複数照明光源のシミュレーション方法と装置に関する。
【従来の技術】
【０００２】
リアルタイムコンピュータ画像システムは、戦車／車両やフライトのシミュレータ、戦闘ゲーム、およびエンジニアリングワークステーション等の広範囲の各種グラフィックス装置でリアルな画像再生を行うために設計されている。例えば、グラフィックスを用いたシミュレータは、戦闘員が戦場に行かず、また実際の戦闘装置を用いなくとも練習ができる訓練装置として用いられている。このシミュレータは、パイロットや戦車の砲手等のユーザが実戦に関する経費をかけずに自分の技術の維持と向上を可能にする。このため、訓練や練習目的のために有利なリアルなビデオディスプレイをユーザに提供することは非常に有益である。
【０００３】
シミュレータ装置等の代表的なコンピュータ画像生成システムでは、画像生成をコントローラ、ジオメトリプロセッサ、およびディスプレイプロセッサの３つの個別の処理段階に分けることができる。これらの３つの処理段階乃至部分は、それぞれ独立して、３つの連続したシーンの１つを示すかこれに対応するデータを処理する。コントローラは、ある一定時間の間シーン乃至画像のデータを処理し、処理に要する時間は、フィールド時間が１６．６７ミリ秒またはフレーム時間が３３．３ミリ秒のいずれかで、この場合通常前者であり、処理されたデータをジオメトリプロセッサに渡す。この特定のフィールド時間とフレーム時間は、代表的なテレビジョンフォーマット表示に要する時間、即ち１秒間に３０フレーム表示し１フレームで１走査線ごとにインタレースされたフィールドを表示する時間に対応する。ジオメトリプロセッサはフィールド乃至フレームを同じ計算速度で計算し、計算が終了するとその計算結果をディスプレイプロセッサに送る。ディスプレイプロセッサは、常に１フィールド時間にビデオディスプレイのインタレースされた１フィールドを処理する。各時間インターバルの間、３つのすべてのプロセッサはビジィ状態にあり、そのため、任意の時間においてプロセッサは３つの個別のシーンを処理している。このインターバルの間に、各部分が入力を処理し出力を生成するので、データはこの３つの段階を連続的に流れる。計算の負荷は、特化されたプロセッサ部分間に分散されているため、表示が３フィールドまたは３フレーム遅れるにもかかわらず、次のシーンを各フィールドまたはフレーム時間ごとに表示できる。
【０００４】
例えば、フライトシミュレータ装置では、パイロットの入力はコントローラに入力され、コントローラ、ジオメトリプロセッサ、およびディスプレイプロセッサで連続的に処理されてから、出力はカラーシーンとしてシミュレータでパイロットが見るビデオディスプレイに送られる。パイロットが見るデータは、環境定義に用いられる単純な制御の入力で始まり、ピクセルビデオディスプレイ情報に変換される。コントローラでは、パイロットの入力は飛行機の次の位置と方向の計算に用いられる。それから、物体を基準座標系からディスプレイ座標系への物体の回転に用いられる数学的な回転マトリックスが計算される。飛行機、目標の位置、および他の飛行機を処理するその他のすべての情報もコントローラで計算される。用途により、コントローラは汎用コンピュータである。
【０００５】
ジオメトリプロセッサは、データベースから、格納されたシーンの３次元デジタル表現で可視物体の記述を読み込む。読み込まれた物体は、コントローラで計算された回転マトリックスを用いてディスプレイ座標に変換される。これらの３次元物体の端部は、物体が表示ウィンドウの境界を越えて延びる場合、境界を越えた部分をジオメトリプロセッサがクリップする。ジオメトリプロセッサは、３次元データを２次元ディスプレイウィンドウに数学的に射影する。さらに、ジオメトリプロセッサは、どの物体が他の物体の前方にありどの物体が他の物体の後方にあるか計算し、この情報をプライオリティリストに格納する。処理された各物体は直線端で形成された個別のポリゴンで形成されている。プライオリティリストは、シーンのすべてのポリゴンの順序を格納しており、このうちリストの最初のポリゴンが最も優先順位が高く、最後のポリゴンが最も優先順位が低い。２つのポリゴンがディスプレイ上で重なっているときは常に優先順位の高いポリゴンが表示され、優先順位の低いポリゴンは表示されない。
【０００６】
ディスプレイプロセッサは、面の色、面消失情報、面のプライオリティリスト、セルのテクスチャ、細部の混合レベル、半透明度、および曲率のシェーディング情報とともに２次元面の記述を受け取り、この情報を用いてシーンの各ピクセルのデータ記述をカラーディスプレイに出力する。装置の各カラーディスプレイは、通常１０２４行の映像情報から成り、各行は１０２４個の個々の色ドット即ちピクセルから成る。しかし、列の行数と行ごとのピクセルの数の組み合わせも勿論可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ディスプレイプロセッサは、ピクセルに多くの面が存在し、面のある部分が他の面で隠され、複数の光源がそのピクセルに光を反射する各表面部分を照射するものとすると、各ピクセルについて、ピクセルをどのような色と輝度にすべきか決定しなければならない。ディスプレイには、１０２４×１０２４のピクセルが存在し、これらのすべてを１秒の１／６０で計算する必要があるので、ディスプレイプロセッサの処理負荷は非常に大きくなる。マルチディスプレイ装置（１つの装置に１４ものディスプレイを備える）の映像を計算するには、ディスプレイプロセッサは、１秒当たり１０億回以上の速度で計算しなければならない。途方もなく大きな処理負荷のため、ディスプレイプロセッサは、わずかなディスプレイしかドライブすることができない。装置によっては、１つのコントローラとジオメトリプロセッサとを用いて、各々数台のディスプレイが接続された複数のディスプレイプロセッサをドライブする。それゆえ、ディスプレイプロセッサは、コンピュータ画像生成システムで大部分の処理を担当しており、このため、ＣＩＧ装置の機能とリアリティを向上させる多くの努力は、ディスプレイプロセッサの部分に集中している。
【０００８】
問題の１つが、ピクセル色強度情報の飽和を防ぐためだけでなく、数個の光源のぞれぞれで必要とされる可視ポリゴン表面に陰影を付けるため、また、情報のエイリアシングを防ぐ効果的な方法を低コストで実現するために、ある１つのシーンの複数の照明源を処理することであった。
【課題を解決するための手段】
【０００９】
本発明においては、表示されるシーンを照明する少なくとも１つの光源について、リアルタイムコンピュータ画像生成装置において表示手段で表示される各ピクセルへの照明の強さを決定する方法であって、ディスプレイの各ピクセルで観測者に見える対象ポリゴンのそれらの部分を表すデータ信号を観測者のデプスバッファ手段に格納するステップと、関連する光源から見える各ポリゴンピクセルに照射される照明の強さを表すデータ信号の少なくとも１つのシーンの照明光源のそれぞれに関連する光源デプスバッファ手段に格納するステップと、関連するすべての光源デプスバッファ手段の対応ピクセルに入射する各光源の照明の強さを非飽和的に結合して、観測者のデプスバッファ手段の表示可能な各ピクセルについてデータ信号を生成するステップとを含む方法が与えられる。
【００１０】
コンピュータ画像生成装置で用いられる光源サブアッセンブリは、それぞれ（観測者の位置に関連したデプスバッファに加え）表示されるシーンを照明する光源の１つに関連し、その光源で照明された画像空間で表示可能なシーンポリゴンの部分を表すデータ信号を一時的に格納する少なくとも１つの追加デプスバッファ手段と、前記少なくとも１つの追加デプスバッファ手段からデータ信号を受け取り、観測者のデプスバッファでレンダリングされた各ピクセルを照明する光源全体の強さに応じて照明の強さを調節して、観測者にそのシーンを表示する光源プロセッサ手段とを含む。
【００１１】
従って、本発明の目的は、加算効果による飽和の防止と各種光源に応じた陰影の生成と結果として得られた照明情報のアンチエイリアシングを含む複数の照明源から照射されたコンピュータ画像生成ディスプレイの各ピクセルの明るさを計算する新規な装置および方法を提供することである。
【００１２】
本発明の上記目的及びその他の目的は、添付した図面を参照しつつ以下の好適な実施例の記載を読むことにより明らかになる。
【発明の効果】
【００１３】
以上のように、加算効果によるピクセル色強度の飽和を防止するだけでなく、数個の光源が存在するとき陰影を付けることができる効果がある。また、陰影データにアンチエイリアシング処理を施し、きわめてスムースで自然な陰影を生成できるという効果がある。
【図面の簡単な説明】
【００１４】
【図１】本発明の装置と方法が用いられるコンピュータ画像生成（ＣＩＧ）装置の概略的なブロック図である。
【図２】図１の装置を含む本発明の１つの局面による複数光源の照明効果装置を示す概略的なブロック図である。
【図３】いくつかの物体表面を照射する複数光源と観測者との間の関係を示し、本発明の原理の理解に有効な空間図である。
【図４】本発明の一般的な方法の理解に有効な、平面を同時に照射するＮ個の光源を示す。
【図５】本図及び図６、図７は、問題の解決と本発明のいくつかの局面の理解に有効な共通平面を照射する、異なる複数の光源の視点を示すものであるが、本図は、光源及び平面がそれぞれ１個の場合を示す。
【図６】問題の解決と本発明のいくつかの局面の理解に有効な共通平面を照射する、異なる複数の光源の視点を示す別の図であり、光源及び平面がそれぞれ２個ある場合を示す。
【図７】問題の解決と本発明のいくつかの局面の理解に有効な共通平面を照射する、異なる複数の光源の視点を示すさらに別の図であり、光源及び平面がそれぞれ３個ある場合を示す。
【図８】本発明の別の局面の理解に有効な光源の１つを取り除いた後の複数の光源を示す。
【図９】本発明の１つの局面による基本的な複数光源の組み合わせのフローチャートである。
【図１０】ＣＩＧディスプレイプロセッサで用いる本発明の原理による複数照明色強度データ処理装置のブロック図である。
【図１１】本発明の別の局面による陰影シミュレーションプロセスのフローチャートである。
【図１２】ディスプレイプロセッサで使用する本発明の原理による１つの陰影源の強さデータ処理装置のブロック図である。
【図１３】複数の移動物体生成陰影の追跡を示す自然光源（太陽）zバッファ画像平面の一部の透視図である。
【図１４】本発明のさらに別の局面によるアンチエイリアシングを施す移動フィルタウィンドウのブロック図である。
【図１５】図１４のボックスフィルタアンチエイリアシング処理の一実施を示すフローチャートである。
【図１６】ディスプレイプロセッサで用いる本発明の原理による１ボックスフィルタアンチエイリアシングデータ処理装置を示すブロック図である。
【発明の実施の形態】
【００１５】
まず、図１を参照すると、飛行機のコックピットのシミュレーション装置のようなコンピュータ画像生成装置１０の機能ブロック図が示してある。３次元レンダリングについてのさらに詳しい情報は、１９８８年２月２３日に発行された米国特許番号４,７２７,３６５（Bunker他）「高性能映像物体生成器」、１９８９年４月２５日に発行された米国特許番号４,８２５,３９１（D.Merz）「リアルタイムコンピュータ画像生成装置のデプスバッファ優先処理」、１９８９年３月７日に発行された米国特許番号４,８１１,２４５（Bunker他）「コンピュータ画像生成装置のエッジスムージング法」、および１９８９年４月２５日に発行された米国特許出願番号０８／２９２,２０９（Steiner他）「コンピュータ画像生成装置のポリゴンエッジにアンチエイリアシングを施す方法と装置」を含むＣＩＧ技術を参照されたい。なお、ここであげた米国特許等はその全体をここに援用する。
【００１６】
この装置はコントローラ装置１２、ジオメトリプロセッサ装置１４、およびディスプレイプロセッサ装置１６から成る。ディスプレイプロセッサ装置１６は、コックピットのプロセッサウィンドウ１８に情報を表示し、シーンの飛行機の移動をシミュレートする。ゲームプレーヤ、パイロット訓練者等のユーザ２０は、入力制御インタフェース２２（ジョイスティックや他の制御入力装置２２ａが含まれる）にリンクされる。装置２２ａからのユーザの操縦動作は入力制御インタフェース２２に送られる。入力制御インタフェースは、ユーザからコントローラ１２への適切なデータ（例えば、飛行機の位置、飛行機の横揺れ、飛行機の縦揺れ、および偏揺れ高度）に変換する。
【００１７】
コントーラ１２で、ユーザの入力は制御された物体（例えば、飛行機）の次の位置と方向の計算に用いられ、このことから、基準座標系からディスプレイ座標系への物体の回転に用いられる数学的な回転マトリックスが計算される。この方法は従来の技術で広く知られている。シーン、目標の位置、あるいは他の物体に関する他の情報はコントローラで計算される。ＣＩＧ／３Ｄグラフィック装置によっては、コントローラ装置が汎用コンピュータであることもある。
【００１８】
コントローラ装置１２は、最後にユ−ザが制御した物体（飛行機）のオリエンテーションによって定期的に更新される。このオリエンテーションには、対象とする飛行機の横揺れ、縦揺れ、偏揺れ、および入力制御インタフェース２２を介してパイロットからコントローラ１２へ与えられる位置が含まれる。コントローラ１２は、フィールド時間やフレーム時間の間シーンを制御して、それから、ジオメトリプロセッサ１４にデータを渡す。
【００１９】
ジオメトリプロセッサ１４は、シーンデータベースメモリ２４から管制塔、道路、川、格納庫等の記述を読み出す。これらの記述は地上の格納された３次元デジタル表現で可視である。物体はシーンデータベースから読み出され、コントローラ１２で計算された回転マトリックスを用いてディスプレイ座標に変換される。ジオメトリプロセッサ１４は、対象空間のビューウィンドウを越えて延びるすべての端をクリップする。こうして、３次元物体データを２次元ディスプレイウィンドウに数学的に射影する。ディスプレイウィンドウの境界を越えて延びる物体の面は２次元画像空間でクリップされる。２次元の物体は、点、線、閉凸ポリゴン、あるいはその組み合わせから構成される。各閉凸ポリゴンは面として知られる。このため、処理された各面は個々の面から成り、各面は直線の端により境界を形成している。いったん面が３次元物体からジオメトリプロセッサ１４で計算されると、データがディスプレイプロセッサ１６に渡される。さらに、ジオメトリプロセッサ１４は周知の方法でどの面が前方にあり、どの面が他の面の後方にあるか計算し、この情報をプライオリティリストに格納する。プライオリティリストはシーンのすべての面の順序を格納する。ここで、プライオリティリストの最初の面が最も優先順位が高く、最後の面が最も優先順位が低い。２つの面が重なっているときは常に優先順位の高い面が表示され、優先順位が低い面は表示されない。プライオリティリストの計算後、ジオメトリプロセッサ１４は、２次元面の境界を形成する線分の各表示終点と、境界端を記述する直線の方程式を計算する。ジオメトリプロセッサ１４は、各端の終点と境界面を記述する各端の傾きを計算する。これらのデータは、次にディスプレイプロセッサ１６に渡される。
【００２０】
図１にビデオディスプレイ１８のドライブに用いられるディスプレイプロセッサ１６が示されている。装置によっては、単一のコントローラ１２とジオメトリプロセッサ１４を用いて、１つ以上のディスプレイプロセッサをドライブしているものもある。ディスプレイプロセッサ１６は、リアルタイムコンピュータ画像生成装置の大部分の処理とハードウェアを担当している。このため、ハードウェアのサイズの低減と処理時間を短縮する多くの努力はディスプレイプロセッサ部分に傾注されている。ディスプレイプロセッサはビデオディスプレイ１８に表示される情報を処理する。ディスプレイプロセッサ１６は、ピクセルに多くの面が存在し、面のある部分が他の面でおおわれるものとすると、各ピクセルについて、ピクセルをどのような色と輝度にすべきか決定しなければならない。ピクセルの優先順位の競合を解決した後で、ピクセルの各可視面の部分が面の色と乗算され、これらのすべての重み付けされた色がピクセルの色として出力される。こうして、ディスプレイプロセッサ１６は、面の色、面のプライオリティリストとともにジオメトリプロセッサ１４から２次元面の記述を受け取り、この情報を用いてシーンをカラービデオディスプレイ１８に出力する。装置の各カラーディスプレイは、１０２４行あるいはそれ以上の映像情報から構成することができ、各行には通常１０２４個の個別の色ドット即ちピクセル（画素）がある。ディスプレイに１００万個以上のピクセルが存在し、リアルタイム画像を１秒の１／６０で計算しなければならないので、ディスプレイプロセッサの負荷は非常に大きくなる。各ピクセルごとに、ディスプレイは、ピクセルの色を記述する強度情報の一部として１２ビットの赤データ信号、１２ビットの緑データ信号、および１２ビットの青データ信号を受け取る。
【００２１】
ここで図３を参照すると、コンピュータが生成したディスプレイは、３次元ボリューム３２に配置された一般的に複数の２次元ポリゴン３０を示し、観測者２０の位置０から見ることができる。理解を容易にするため、２つのポリゴン（Ｐ１とＰ２）だけにしてボリューム３２の２次元表現が示されている。各ポリゴンは、図の平面に入って平面から出て延びているので、各第１のＰ１ポリゴン３０−１と第２のＰ２ポリゴン３０−２について、ポリゴン平面／図平面交点の１次元の線だけが示されていることを理解されたい。また、観測者２０と観測した対象（ポリゴン）３０は、適切な変換（例えば、平行移動、回転等）を周知の方法で施して必要な視覚的関係を相互につけると、同じ空間（例えば、対象空間、画像空間等）あるいは別の空間（例えば、観測者が画像空間、ポリゴンが対象空間にある等）に存在する。かくして、観測者２０はピクセルの画面列を見ることになり、各ピクセルは、それぞれシーンの中心線２０ｃから見えるように、シーンの第１（左）側の境界２０ａと第２（右）側の境界２０ｂの間で開いているディスプレイウィンドウのすべての可視物体２０の１画素を示す。ＣＩＧ装置は周知のように、ディスプレイウィンドウを横切るＺ０平面２０zの配置で示すように、デプスバッファリング操作を行うプロセッサ１６（図１）に関連するＺバッファ手段１６ｂを備える。可視ディスプレイは、図示ポリゴン３０−２の可視部に関連したｊが１≦ｊ≦１４の範囲にあるＰ２−ｊピクセルのすべてを含むが、図示ポリゴン３０−１のうちｉが１≦ｉ≦３０の範囲にあるピクセルＰ１−ｉのいくつかだけが観測者２０に見える。従って、観測者の視線２０ｄは、画素Ｐ２−１でポリゴン３０−２の左角を通過し、観測者から見えるポリゴンＰ１の部分（Ｐ１−１〜Ｐ１−２６）とポリゴンＰ２の左部分の陰になっているポリゴンＰ１の部分（Ｐ１−２７〜Ｐ１−３０）の境界を観測者の位置から定め、従って、画素Ｐ２−１で隠されたＰ１の部分はデプスバッファ手段１６ｂに格納されておらず、そのため、そのようなピクセル（Ｐ１−２７〜Ｐ１−３０）が観測者２から見えないので表示されない。
【００２２】
Ｐ１−１〜Ｐ１−２６とＰ２−１〜Ｐ２−１４のポリゴン画素のいずれかが観測者に射影された表示シーンで実際に見えるようにするには、そのピクセルを少なくとも１つの光源から照明しなければならない。昼の太陽や夜の月などのような遠方の自然光源Ｓ１も存在し、そのような光源３４は照明物体から非常に距離が離れているため、すべての光線がシーンの同じ方向に通る、対象ポリゴン３０に関する光源の位置３０に支配される平行な複数の光線３４ｒを効果的に照射する。光線３４ｒは対象ポリゴン画素Ｐ１−ｉとＰ２−ｊの多く（しかし、すべてではない）に当たり、光源３４に近いポリゴンＰ２は、ピクセルＰ２−１の右側を光線３４r′が通過するのを妨げているので、別のポリゴンの部分（ピクセルＰ１−１９〜Ｐ１−３０）がＳ１で照明されない。しかし、ピクセルＰ１−１〜Ｐ１−１８は光源Ｓ１から完全に（共通の強度Ｌ１で）照明されることに注意されたい。唯一用いられているＣＩＧ装置の機能のみにより制限される別の遠方の光源３４も存在し、各光源３４は、各表示ピクセルへの全体の照明に影響を与えるであろう個々の照明の大きさと強度を持っている。
【００２３】
比較的ポリゴンに近く、一般に元は「人間が作った」別の光源３６も存在し得る。スポットライト３６−１は光源３６から照射されて、反射鏡３６−１ｘにより光錐の範囲で照射され、光錐の範囲は、方向中心線３６−１ｃの周囲に境界３６−１ａと３６−１ｂにわたる。説明の目的のため、光源３６−１は、光錐内で強さＬ２を有し、光錐の外側では照明効果がなく（即ち、ピクセルＰ１−１１）とその左側の他のピクセルＰ１は、ピクセルＰ２−１１〜Ｐ２−１４の場合と同様に、事実上照明されない。ピクセルＰ１−１２〜Ｐ１−１６は強度Ｌ２で完全に照明される（しかし、ピクセルＰ１−１７〜Ｐ１−３０は、光線３６−１ｄで示すようにＰ２ポリゴンの陰になり照明されない）。第２ポリゴンを形成する表示ピクセルＰ２−１〜Ｐ２−１０も完全に照明される。同様に、別の光源３６−２は観測者／所有者が携帯するフラッシュライトＳ３であり、照明中心線３６−２ｃの周囲の境界３６−２ａと３６−２ｂで範囲を制限される光錐の範囲で光が照射される。再度、境界が次第になくなるのと照明プロファイル効果がなく、光源Ｓ３は線３６−２ａの左側を照明しないので、ピクセルＰ１−１〜Ｐ１−８に光源から光が照射されず、光錐内のすべての照明（大きさＬ３）はピクセルＰ１−９〜Ｐ１−２６（ピクセルＰ１−２７〜Ｐ１−３０はポリゴンＰ２で陰になっている）とすべてのＰ２ポリゴンピクセルＰ２−１〜Ｐ２−１４に照射される。
【００２４】
飽和レベルをＬ＝１.００にし、そして図示の目的のため、Ｌ１＝０.８，Ｌ２＝０.６、およびＬ３＝０.３とすると、図示シーンで、ピクセルＰ１−１〜Ｐ１−８（領域Ａ）は、光源Ｓ１でのみ照射され、その照明の強さはＬ１またはＬtotal＝０.８であることがわかる。光源を追加すると、光の強度が増し、僅かな光源による照明は通常、各強度値を単純に加算する方式で合計値を求める。ピクセルＰ１−９〜ピクセルＰ１−１１は、Ｓ１とＳ３で照射されるため、加算したＬtotalは１.１になって飽和レベルを越え、この領域（領域Ｂ）はＬ＝１.００で飽和している。ピクセルＰ１−１２〜Ｐ１−１６並びに第２ポリゴンピクセルＰ２−１からＰ２−１０は、３つのすべての光源によりＬ１，Ｌ２，およびＬ３の強さで照射され、Ｌtotalが１.７となるので、これらの領域（領域ＣとＧ）もＬ＝１．００で飽和する。ピクセルＰ１−１７とＰ１−１８の領域ＤはＬ１とＬ３を受けるが、Ｌ２は遮られこの領域ＤはＬ２の陰影の中にあるといえる。Ｌtotalは１.１でＬ＝１.００で飽和する。ピクセルＰ１−１９〜Ｐ１−２６はＬ３を直接受けるが、ポリゴンＰ２は別の光源を遮るので、この領域ＥはＬ１の陰影とＬ２の陰影の中にあり、Ｌtotal＝Ｌ３＝０.３である（陰影ではゼロを加算すると仮定する）。同様に、ピクセルＰ１−２７〜Ｐ１−３０はすべての３つの光源に対し陰になり、この領域ＦでＬ＝０である。第２のポリゴンピクセルＰ２−１１〜Ｐ２−１４は、光源Ｓ１とＳ３でのみ照射されるため、Ｌtotal＝１.１になるが、この領域ＨはＬ＝１.００で飽和する。このため、領域Ａ，Ｅ，およびＦは０.８，０.３，および０の強さでそれぞれ照射されるが、いくつかの異なる照明条件で照射しても、残りの領域はすべて飽和して同じ強度になることがわかる。数個以上の光源が存在し、その値を一緒に加えなければならないとき、単純な加算モデルは有効でなくなる。このことは、光源の強さとして許容可能な最大の強さより大きな値を加えるときにもいえる。照明が飽和し物理的にリアルな効果が得られない。同様の問題が、光源（例えば、Ｓ３）を取り除いた場合にも起こる。例えば、領域Ｃで、Ｓ１とＳ２光源がなお存在し照明の強さが飽和しているとすると、光源を取り除いたときいかなる照明の強さ低下も見られなかった。照明源の数またはそのそれぞれの照明の強さの変化に応じて、全体としての照明の強さを変化させることが望ましい。多くの場合において、照明の強さの加算に、非線形補正としてガンマ補正が用いられ、この作業は、比較的光源数が少ない低い光レベルでは良好である。光源を色成分（赤／青／緑、またはＲＧＢ）に分解し、色成分処理を行っても、前述した色飽和問題は依然として起こる。
【００２５】
（飽和の起こらない光源の組み合わせ）
図４を参照すると、各光源のＲＧＢ色強度範囲が０.０〜１.０の間に入るように正規化された本発明の１つの局面では、ＣＩＧは、ｉがｉ＝１，２，３，…，ｎの範囲にあり、ｎが最大光源数である色分離された個々の光源からの照明の強さＬｉを処理し、以下の式によって結果的に得られる強さＬｒを生成する。
【００２６】
Ｌr＝｛１.０−（１.０−Ｌ１）（１.０−Ｌ２）（１.０−Ｌ３）…（１.０−Ｌｉ）｝または
【式１】
【００２７】
0005054729.tif 000002
ここで、πは積。
【００２８】
図５を参照すると、０.０〜１.０の間に正規化された照明の強さがＬ１の単一光源Ｓ１は、照射された領域Ｘを飽和させる（１.０以上の強度Ｉ１を生成する）ことがない。図６−８でＬ１＝０.８，Ｌ２＝０.６，Ｌ３＝０.３の例を用いると、図６の２光源の例で示すように、複数光源が存在する状況での飽和を防ぎ、領域ＸでＩ１＝Ｌ１＝０.８＜１.０、Ｙ領域でＩ２＝Ｌ２＝０.６＜１.０になる。領域ＸＹはＬ１とＬ２両方の光源から照射され、加算による方式ではＩａ＝１.０で飽和することになる。本発明の方法を用いれば、
Ｌａ＝｛１.０−（１.０−０.８）（１.０−０.６）｝
＝｛１−（０.２×０.４）｝
＝０.９２＜１.０
となる。
【００２９】
図７の３光源の例では、領域ＸでＩ１＝Ｌ１＝０.８＜１.０，領域ＹでＩ２＝Ｌ２＝０.６＜１.０，領域ＺでＩ３＝Ｌ３＝０.３＜１.０になり、領域ＸＹ，ＹＺ，ＸＺ、およびＸＹＺでは１つ以上の光源からの照明を受ける。一方、領域ＹＺでは加算による方式より低いＬｂ＝０.９になる。他の領域では加算による方式を用いるとＩ＝１.０となり飽和することになる。本発明の方法によると、領域ＹＺで、Ｉｂ＝Ｌｂ＝｛１.０（１.０−０.６）（１.０−０.３）｝＝｛１−（０.４×０.７）｝＝０.７２＜１.０。領域ＸＺではＩｃ＝Ｌｃ＝｛１−（０.２×０.７）｝＝０.８６＜１.０。領域ＸＹＺではＩｄ＝Ｌｄ＝｛１−（０.２×０.７×０.４）｝＝０.９４４＜１.０になる。すべての光源がそれ自身で飽和していない場合（即ち、各光源の強さＩｉが１.００以下）、いくつかの光源を組み合わせても飽和（即ち、Ｉtotalは決して１.００にならない）しないことがわかる。常に、光源数／強度変化に起因するなんらかの変化があり、よりリアルな効果が得られる。
【００３０】
複数の照明源の方法は図９のフローチャートに示されており、ステップ４０で関連する光源特性（３つの色Ｒ，Ｇ，Ｂ強度データ信号が好ましい）を入力して開始する。ステップ４１で、現在のシーンで用いられる実際の光源が選択され、各光源の量的大きさを特徴づけるデータが取得される。異なる光源が非常に異なる色強度を持ち得るので、各色は別々に処理される。ステップ４２に入り、開始する３つの色の１つの１番目（例えば、赤）を処理する。データ信号が事前に０.０〜１.０の範囲に正規化されていなければ、ここで照明の強さの正規化が行われる。ステップ４３で、選択した色ｃと光源数ｓの各光源の強さＩc,sの１の補数をとり、補数をとった強さＩ′c,s＝（１−Ｉc,s）、即ち、Ｘの１の補数（１−Ｘ）を得る。１の補数をとった強度のすべての積をステップ４４で計算し、ステップ４４からのデータ信号はステップ４５でそれ自身の１の補数がとられて、結果として照明の強さＬｒが得られる。ステップ４６で、処理する別の光の色をチェックする。３つの色のすべてがまだ処理されていなければ、出口４６ａで分岐してステップ４２に戻り、すべての強さを処理して出口４６ｂから抜け、ステップ４７で、複数光源計算の終了の信号が発せられるまで、このループを繰り返す。
【００３１】
図１０は、上述したプロセスを実行する１つの専用ハードワイヤードプロセッサ５０を示す。Ｎ個の光源のそれぞれは、これに関するＮ個の単一入力５０ａ〜５０ｎで入力されるＮ個のデータ信号入力の１つで特徴つけられる。これらの入力は、３つの色の照明の強さＬｋ（１≦ｋ≦Ｎ）データ信号であり、それぞれ分離手段５２ｋに関連する１つの入力５２ｋ−１に供給される。ここで、各Ｌｋデータ信号は各出力５２ｋ−２で、ＬＫ光の連続したＲ／Ｇ／Ｂ色強度についてシリアルビットストリームデータ信号に分離される。「３Ｔ信号」は別々の正規化した時系列の色強度部分がたがいに後続することを示す。出力５２ｋ−２からの各個別の信号ストリームは、関連するＮ個の加算手段５４ｋの１つの関連する負の入力５４ｋ−１に同期して結合する。すべての加算手段５４はその残りの入力５４ｋ−２で最大正規化した１．０値信号を受け取る。各加算手段出力５４ｋ−３は１の補数信号（１．０−ＬＫ）を出力し、すべてのＮ光源の同じ色につき１の補数をとった信号はＮ入力乗算手段５６のＮ入力５６ｋの関連する１つに同時に供給される。乗算手段の出力５６ｋは、すべてのｋの積｛π（１−Ｌｋ）｝に等しいデータ信号Ｓ５６ｘか、あるいは、現在処理されている３つの色の１つのＳ５６ｘ＝（１.０−Ｌ１）×（１.０−Ｌ２）×…×（１.０−Ｌｎ）に等しいデータＳ５６ｘである。このデータ信号は、他の加算手段５８の第１の負の入力５８ａに供給され、残りの入力５８ｂに最大１.０′値を供給すると、所望の時系列非飽和Ｌｒ信号である出力５８ｃデータ信号を生成する。３つの連続した色Ｌｒ信号は光結合手段６０の入力に供給され、完全なＲＧＢＬｒ信号を単一出力５０ｘとして同時に出力する。リアルタイムＣＩＧで光源Ｓｋのどれかをオフにすると、その光源のＬｋ強度を表示映像の次のフレームの計算から除くことになる。
【００３２】
（陰影生成のための光源除去）
ここで、図８を参照すると、光源Ｓｓをシャットオフする前において、Ｌｓがシャットオフする光源の照明の強さ、Ｌｒがすべての以前「オン」になっている光源の結果として得られた照明の強さであるときに、Ｌｒ′＝｛（Ｌｒ−Ｌｓ）／（１−Ｌｓ）｝のプロセスにより、以前に照射された照明の所定の領域の結合Ｌｒ′信号を低減させることにより図４の光源の任意の１つの光源Ｓｓを取り除いたときの照明の強さを得ることができるので、仮に１つの光源が変化しても、全フレームの再計算を避けることができる。従って、第３の光源Ｓ３のフラッシュライトがシャットオフすると、Ｌ３はゼロになり、予めＬｒ＝０.９４４に設定されている３重に照射された領域ＸＹＺは、ここでＬｓ＝Ｌ３＝０.３に設定され、Ｌｒ′＝｛０.９４４−０.３｝／（１−０.３）｝＝｛０.６４４／０.７｝＝０.９２になり、実際に、Ｌ１＝０.８とＬ２＝０.６のＬの値が得られる。このため、陰影シミュレーションを行う（即ち、ＣＩＧに陰影を生成させる）ことは、たかだか選択したポリゴン領域から複数光源の少なくとも１つを取り除くプロセスでしかなくなる。ここでの例が「２進」光源（例えば、Ｉ＝１.０のピクセルの完全に照射された光源か、Ｉ＝０.０のピクセルがまったく照明されない光源のいずれか）の間を明瞭に区分する線を用いると仮定しても、より一般的な状況は正規化された０.０≦Ｉ≦１.０の範囲にわたる空間変動であり、シミュレーション技術の実施者に周知な追加計算が必要となることを理解されたい。
【００３３】
図２と再び図３を参照すると、ディスプレイプロセッサ１６は、観測者が使用する周知のデプス（Ｚ）バッファ１６ｂを備えている（デプス（Ｚ）バッファ１６ｂは、ピクセル指定Ｚ０の平面２０ｚに関して、格納するときに使用し、画像空間ピクセル列の各位置で、比較プロセスで観測者２０に最も近いと確認される。１可視ピクセルの指定を記憶するように作用する。）。このデプスバッファは、観測者に見える表示シーンの各ピクセルにアクセスされ、現在のシーンで観測者に見えないすべてのピクセルの処理をせずに、各シーンをレンダリングする。本発明の別の局面によると、可視ピクセルの陰影付けは陰影付け装置１６ｃにより行われ、この装置は、複数光源のそれぞれの個々の各デプス（Ｚ）バッファ４９のピクセルの位置を参照して、Ｚ０プレーンで観測者に見える各ピクセルの全照明の強さＬｒを計算するデータ信号をディスプレイプロセッサに供給するための光源サブプロセッサ４８を含む。かくして、遠方の自然光源Ｓ１は、ＺプレーンＺ１で表される（図３）関連するＺバッファ４９ａを備える。このプレーンは第１の光源Ｓ１の光線３４ｒの方向に垂直である。第１光源のデプスバッファ４９ａの各ピクセル位置を格納したデータはどのポリゴンピクセルがその光源の視点（ＰＯＶ）から見て照明されているか指定する。例として、図示シーンで第１の光源のデプスバッファ４９ａは、第１のポリゴンピクセルＰ１−１〜Ｐ１−１８（関連する光源に近いポリゴンＰ２の左端をちょうど通過する光線３４ｒ′で示されるように）Ｐ２−１〜Ｐ２−１４のすべての第２のポリゴンピクセルを照明する光源Ｓ１を示すデータ信号を格納する。第１のポリゴンピクセルＰ１−１９〜Ｐ１−３０は、Ｓ１光源に近いＰ２ピクセルで陰影が付けられ、これらのピクセルの指定はＺ１バッファアレイに格納されない。どの照明計算の場合も、サブプロセッサ４８は、観測者に見える予め計算で求めスキャンしたポリゴンピクセル列（Ｐ１−１〜Ｐ１−２６とＰ２−１〜P２−１４）を受け取り、それぞれをＺ１バッファアレイ４９ａに連続的に参照して、Ｓ１による照明を加算するためどのピクセル（Ｐ１−１〜Ｐ１−１８とＰ２−１〜Ｐ２−１４）が第１の光源ＰＯＶに可視であるか決定する。それと同時に、観測者に見えるが特定の光源３４に対して陰となっているピクセル（Ｐ１−１９〜Ｐ１−２６）に対する照明を抑止するためどのピクセルがＳ１の視線上にないか決定する。同様に、第２の光源Ｓ２のデプスバッファ４９ｂにアレイプレーンＺ２に関するデータ信号を格納する。この平面は第２の照明源からの照射方向（ベクトル３６−１ｃに沿って）に対して垂直であり、およびユーザから特定光源について指定された大きさになっている。無指向性の光源Ｓ１はすべての点を照明する可能性があるので、フルフレームバッファを用いることができる。これに対し、指向性のある光源Ｓ２は部分的なフレームバッファアレイのみを必要とする。なぜなら、全画像平面より小さな平面だけが照明されるからである。従って、光源Ｓ２は照射方向に垂直なプレーンＺ２を表すＺバッファ４９ｂを備え、第２の光源による可視ピクセル、例えば、ピクセルＰ１−１２〜Ｐ１−１６（近いポリゴンＰ２が第１のポリ��ンピクセルＰ１−１７〜Ｐ１−３０の残りに陰影を付けようとしていることを示す光線３６−１ｄによってその大きさに制限される）とピクセルＰ２−１〜Ｐ２−１０を格納する。Ｚ１デプスバッファアレイは、Ｐ１−１〜Ｐ１−１１が左側の照明パターンエッジを越え、ピクセルＰ２−１１〜Ｐ２−１４が右側の照明パターンエッジを越えるので、これらのピクセルも照明しない。同様に、フラッシュＳ３光源が、光源ベクトル３６−２ｃに垂直なＺプレーンＺ３を持つ自分自身の関連する光源デプスバッファ４９ｃ備える場合、サブプロセッサは限られた数のアレイだけで動作し、Ｓ３ＰＯＶから見えるピクセルのみを格納する。これらピクセルには、エッジ光線３６−２６で示すようにパターンの内側にあるピクセルＰ１−９〜Ｐ１−２６（照明パターンエッジ光線３６−２ａを越えるピクセルＰ１−１〜Ｐ１−８も、光線３６−２ｄで示すように、Ｐで陰影が付けられたピクセルＰ１−２７〜Ｐ１−３０のいずれかも含まない）とすべてのＰ２ピクセルＰ２−１〜Ｐ２−１４を含む。
【００３４】
本発明の陰影バッファの局面を要約すると、この方法を用いる光源シミュレーションのいかなる場合でも、ｉが１≦ｉ≦Ｎの範囲にある個別のデプスバッファ４９ｉが陰影がバッファされる各光源Ｓｉに好適に設けられており、画像がその光源ＳｉのＰＯＶから見える、即ち光源位置から光源ベクトルの方向を見ることにより見える。もし、そのピクセルが「照明」されていれば（即ち、光源のＳｉ光線で照射されるならば）、垂直陰影デプスバッファ４９ｉアレイプレーンＺｉの個々の位置は、最も近いポリゴンピクセルを示すポリゴンピクセル表示（デジィネータ）で埋められる。しかし、ピクセルが照明されていなければ（即ち、そのアレイ位置でピクセルが見えない場合）、光源バッファプレーンＺｉ位置はヌル表示で埋められる。観測者２０が陰影を見ているかどうか決定するには、プレーンＺ０上の対象ポリゴンについてのピクセルを観測者のＺバッファ１６ｂでレンダリングするたびに、サブプロセッサ４８は、各光源Ｚバッファ４９ｉプレーンＺｉに同じピクセルが存在するかどうかチェックして、光源Ｓｉがそのポリゴンピクセルを照明できるかどうか確認しなければならない。各ピクセルのすべての照明源が見つかったとき、上述した処理を実行して全体としての色強度を決定し、これはさらにディスプレイのために処理される。サブプロセッサ４８は、シングルチップマイクロプロセッサのような別個のデータプロセッサか、大規模なマルチタスク処理手段で実行される命令セット処理部分であってもよい。同様に、光源のデプスバッファ４９は、用いられている特定ＣＩＧ装置で必要としているような所望の物理的又は仮想の数でまたはプレーンの組み合わせで配置されている少なくとも１つのメモリ手段であり得る。
【００３５】
上述したことから、自然の太陽や月の照明源のように、ある大きな範囲／広い視界（ＦＯＶ）をシミュレーションすることは、限られた大きさのＺバッファ４９では容易に達成できず、動的な陰影付けをするにはフルフレームバッファが必要であることがわかる。大きな画像ディスプレイを太陽によって陰影を付けるには、ギガ（１０億）画素の大きさの多くのデプスバッファが必要になる。これは多くの容量を消費するだけでなく、非常にコストが高くつく。さらに、観測者は、移動物体に適切に陰影を施せなかったようなエラーも簡単に感知するので、このような視覚上のエラーが問題になる。本発明の別の局面によると、非常に遠方の光源（太陽）から照明することの問題についての、非常にコスト効率の良い解決手段は、静止物体にテクスチャマッピングを行い、デプスバッファベースの陰影シミュレータを移動物体専用にすることであり、これによりシャドウバッファの内部と外部の物体の照明に同じ値が得られるようにし、余分な照明信号をシーンのどの部分にも加えないようにすることである。
【００３６】
図１１は、上述した陰影付け方法を実行できる一論理フローを示す。ステップ６１で始まり、現在のシーンでレンダリングされるポリゴンを特徴づけるデータ信号を入力する。ステップ６２に入り、関連する光源についてシーンをその光源のＰＯＶからレンダリングして、光源の可視ピクセルを光源のデプスバッファに格納する（ステップ６３）。シーンは観測者のＰＯＶから再度レンダリングされる（ステップ６４）。観測者のデプスバッファに入った各ピクセルも順にチェックされ（ステップ６５）、現在考慮している光源から照明されているか、その光源に関し陰影が付けられたピクセルとしてマッピングされるかを決定する（ステップ６６）。現在の表示ピクセルが、現在考慮している光源について陰影がマッピングされていなければ、出口６６ａから抜け、ステップ６７で他の動作を取る（例えば、現在の光源の照明の強さをそのピクセルの全照明に加える）。さもなければ、出口６６ｂは比較ステップ６８に進み、ここで、光源から照明されているピクセルと対象ピクセルの識別子が比較される。これらが同じでなければ、表示ピクセルが考慮中の光源で陰影が付けられる。出口６８ａはステップ６９に進み、ここで、現在の光は現在の表示ピクセル（陰影が付けられたピクセル）照明加算に用いられない。比較されるピクセルが同じであれば、出口６８ｂとステップ７０に進み、ここで、現在の光源９、即ち考慮されたその色成分が現在のピクセルの照明に用いられ、表示ピクセルの明るさはその結果増加する。現在のシーンのすべてのピクセルがレンダリングされ考慮されているとき、そのシーンの陰影付けプロセスが終了し、ステップ７２で、次の処理を行なうことができる（光源の追加か、すべての光源について陰影が付けられたときは、照明された／陰影が付けられたアンチエイリアシングを行う、のいずれか）。
【００３７】
図１２は、この処理を行う可能な一論理回路装置８０を示す。レンダリングされるポリゴンのデータ信号は、入力ポート８０ａを介して入力され、観測者のアイポイントデプスバッファ手段８２と光源デプスバッファ手段８４の両方の入力に結合されている（複数の手段を用いることも可能であり、また、実際に用いられているが、単純にするためにただ１つの光源バッファ８４だけが示されている）。各デプスバッファ手段８２／８４には、その関連する保存アレイ手段８２′／８４′があり、それぞれ８２ａ／８４ｂを備え、そのＰＯＶから見えるピクセルの指定に関するデータを抽出して、関連する単一出力８０ｃ／８０ｂに供給する。観測者のデータも、出力８２ｃを介して装置８６に供給され、観測者ＰＯＶを光源にマッピングする。結果として得られた表示ピクセル指定データ信号は比較装置８８の第１の入力８８ａに供給される。この装置には、別の入力８８ｂで同じ表示ピクセルの光源デプスバッファ出力８４ｃ情報も入力する。実際、観測したピクセルが光源バッファに格納されたピクセルの１つであるならば、データは出力８８ｃに現われ、別の比較装置９０の第１の入力９０ａに入力される。この比較装置の第２の入力９０ｂに光源デプスバッファ出力８４ｄから陰影識別データ信号を入力し、現在のピクセルが現在考慮している光源の影になっているか決定する。もしそうであれば、光源と観測者の識別子が一致せず、出力９０ｃは光源によるピクセルの明るさになっている、即ちそのピクセルはその光源に対し影になっている。識別子が一致する場合、陰影は存在せず、出力９０ｄが可能となる。出力８８ｄが加算手段９２の第１の入力手段９２ａ（装置５０に基づいてもよい。図１０参照）に接続され、第２の入力９２ｂが出力９０ｄ信号を受け取る。加算手段の出力９２ｃで結果として得られた照明データ信号が、他の観測者のデプスバッファの入力８２ｄに現れ、現在のピクセルへの照明の強さの部分合計として格納される。いったん、すべてのシーンのピクセルがすべてのシーンを照明する光源について処理されていれば、観測者のバッファは、すべての陰影効果を含む各表示ピクセルのデータ信号の全照明の強さのデータ信号を保持する。
【００３８】
図１３を参照すると、大きな光源の垂直なプレーンＺ′に関連した光源のデプスバッファ４９′は、設定されてＲが１≦ｍ≦Ｒの範囲にある移動物体１００ｍの複数のＲの所望のものをカバーする。実例として、それぞれ速度ベクトルＶ１とＶ２で移動する移動物体１００−１と１００−２に陰影が付けられる。速度ベクトルＶｍは、移動物体の位置が各表示プレーンで一定し固定されているので、陰影計算手段１６ｃでは用いられていない。しかし、この速度ベクトルは先行する計算手段で用いられ後続する各シーンのどこに追跡する物体があるか予測し、これにより、垂直ｚバッファ４９′プレーンＺ′のサイズと位置を予め定めて、移動物体追跡のために前置することができる。観測者２０のデプスバッファはプレーンＺ０とともに存在し、どのポリゴンＰｘ，Ｐｙ等が表示シーンで可視ピクセルを有するか計算する。光源のバッファプレーンＺ′が設定されているので、その角は陰影を付ける物体１００ｍを含む空間のボリューム１０２を包囲する複数の平行な光源光線４９ａ〜４９ｄを限定する。ボリューム１０２内の平行光線はデプスバッファＺ′平面のセル１０６を設定する。このデプスバッファプレーンは、移動物体を含む（観測者２０に見えるポリゴンの可能な陰影Ｓｈを生成する）セルを示すデータビットの少なくとも１つを含む。従って、同じ光源からのボリューム１０２内のすべての光線は平行なため、陰影を付ける物体１００の端を形成する光線１０４はボリューム端の光線４９ａ〜４９ｄに平行で、その物体のデプスバッファのプレーン位置（セル）１０６の周辺だけを設定するのみならず（例えば、セルグループ１０６−１は物体１００−１に対し指定され、セルグループ１０６−２は物体１００−２に対して指定される等）、物体１００とポリゴン平面の陰影Ｓｈ（例えば、物体１００−１の本影Ｓｈ１、物体１００−２の本影Ｓｈ２）間の本影ボリューム１０８も設定する。こうして、バッファボリューム１０２の外側のポリゴンピクセルは、バッファ４９′に関連する光源（図示せず）からのすべての照明を受ける。光源のデプスバッファ４９′に格納された、隠された位置の合計１０６が読み出され、どの光源プレーン画像画素Ｐｉｊが本影１０８の外側にあり、関連する光源からの照明も受けるかを計算する。バッファプレーンＺ′位置が連続的に読み出されると、本影１０８の１つの画素Ｐｉｊを形成する位置１０６に達する。それらのＰｉｊ位置のそれぞれについて、その画素は対象ピクセルＰｘｙとしてポリゴンの上に射影される。そのピクセルは、バッファプレーン４９′に関連する光源から照明されない。そして、ポリゴンピクセルＰｘｙの位置が観測者のＺバッファプレーンＺ０でチェックされ、そのピクセルが観測者２０に見えるかどうか計算される。ピクセルＰｘｙが観測者２０に見える場合、光源からの照明は取り除かれ、陰影付けプロセスは、平面４９′に関連する光源の寄与を含まない照明計算を継続する。ピクセルＰｘｙが可視でない場合、計算プロセスの残りはスキップされ、次の光源平面４９′位置がチェックされ、移動陰影バッファ位置が各シーンについて処理されるまで続ける。
【００３９】
陰影のアンチエイリアス処理
複数のＣＩＧプロセスは、合成された画像の生成中、さまざまな人工物および／または閃光を作り出す。これらの異常なものは、Ｚバッファを用い予めサンプリングしたポリゴンの再サンプリングの結果、生成した陰影Ｓｈの表示領域で著しく邪魔になるおそれがある。即ち、画像は観測者２０のＰＯＶと光源ＳのＰＯＶ両方から見られるため、画素が影になっていないか光源に近い別のポリゴン画素により陰影が付けられていないので光源により対象空間で「見える」場合であり、かつ画像空間で観測者に「見える」ときに、ポリゴン画素が照明される。観測者が陰影を見るかどうか決定するには、観測者のＺバッファでレンダリングされたすべてのピクセルを光源Ｚバッファでチェックして、そのピクセルが関連する光源で照明されるかどうか（及びどの程度照明されるか）決定しなければならない。このようにプロセスの各点で多重マッピングと量子化を行うと、邪魔になる人工物を有する陰影や、本影だけで半影を表示しないきわめて不自然な陰影を生ずる傾向がある。生の本影データをフィルタにかけ、アンチエイリアス処理され本影と半影が付いたきわめてスムースで自然な陰影を生成するように、これらの問題を解決することが望ましい（さらに、平滑度とブレンディングを調節可能にすることが好ましい）。
【００４０】
図１５は、ｐ×ｑ画素フィルタボックス１１０を備える２次元移動ボックスフィルタを示し、フィルタボックスは連続的に移動しＮ×Ｍ画素光源デプスバッファプレーン１１２のような個別値のグリッドを連続的にチェックしてサンプルし、ｉが０≦ｉ≦Ｎの範囲にある水平行番号を示し、ｊが０≦ｊ≦Ｍの範囲にある垂直列番号を示すプレーンの画素ａijの重み付けされた畳み込み計算を実行する。ボックスフィルタ１１０は有限の大きさを持ち重なるそれらの値点だけの重みを付加する。完全に重なったプレーン画素は畳み込み計算に完全に含まれるが、完全に重なっていないボックス周辺のそれらのプレーン画素はボックスアウトライン範囲に基づいて調節される。従って、バッファプレーン１１２のａij画素は上左角の画素ａ00で始まり、ｉ値はＸ方向に増加する。一方、ｊ値はＹ方向に増加する。すべての画素は、Ｘ方向（サイズｄｘ）とＹ方向（サイズｄｙ）で実質的に同じサイズである。フィルタボックス寸法ｐとｑは任意の正の実数である、しかし、等しくあっても整数であってもいけない（例えば、図示されたフィルタボックスは領域で約ｐ＝３.１Ｘ単位×ｑ＝４.８Ｙ単位である）。ボックスのサイズと関連する重みは平滑度の量を決定する。ボックス１１０がデジタル画素値列を横切って連続的に移動するので、最も左側及び最も右側にある、重なった画素列の左端（ここでは、それぞれ列端１１２ａと１１２ｂ）のオフセットｄｘ１とｄｘ２は、画素のｄｘの大きさと連続したＸ移動の量で知ることができる。最も上と最も下に位置する、重なった画素列の上端（ここでは、それぞれ端１１２ｃと１１２ｄ）のオフセットｄｙ１とｄｙ２はｄｙ画素と連続的なＹの移動量で知ることができる。陰影計算器（例えば、光源サブプロセッサ４８等）は、下記の式の合計σFから画素ａ00の（ｄｘ１，ｄｙ１）における点Ｆのフィルタを通した強度を計算できる。
【００４１】
σF＝ｗ11×ａ11＋ｗ12×ａ12＋ｗ21×ａ21＋ｗ22×ａ22＋ｗ31×ａ31＋ｗ32×ａ32＋ｄｘ2×（ｗ13×ａ13＋ｗ23×ａ23＋ｗ33×ａ33）＋（１−ｄｘ１）×（ｗ10×ａ10＋ｗ20×ａ20＋ｗ30×ａ30）＋（１−ｄｙ１）×（ｗ01×ａ01＋ｗ02×ａ02）＋（１−ｄｙ１）×（１−ｄｘ１）×ｗ00×ａ00＋ｄｙ２×ｄｘ２×ｗ43×ａ43）＋（１−ｄｙ１）×ｄｘ２×ｗ03×ａ03＋（１−ｄｘ１）×ｄｙ２×ｗ40×ａ40＋ｄｙ２×（ｗ41×ａ41＋ｗ42×ａ42）
【００４２】
ここで、ｗijは所望の機能フィルタ形状をシミュレートするため選択した重み係数である。移動フィルタボックス１１０により、各ピクセルの連続的なアンチエイリアス処理を順に行うことができる。このため、フィルタは２次元アレイブロックから推定される線形２次元サンプルの連続を出力する。
【００４３】
図１４は、ボックスフィルタを用いたアンチエイリアシング処理のフローチャートのステップを示す。フィルタはステップ１２０で開始し、ｐｘｑボックスの現在の位置が計算され、ボックスの下に全体的あるいは部分的に含まれるＮｘＭ画素はフィルタメモリに読み込める（ステップ１２１）。オフセットｄｘ１，ｄｘ２，ｄｙ１，およびｄｙ２は、すべてのｗijフィルタ重み係数とともにプロセッサに読み込まれる（ステップ１２２）。各重みとその関連する画素値は乗算され（ステップ１２３）、全画素の寄与より少ない角と境界の画素の重み付けされた倍数がステップ１２４で得られる。次に、重み付けされたすべて画素の合計がステップ１２５で得られ、結果として得られたアンチエイリアシング値（ステップ１２６）が、後で使用するため照明プロセッサに出力される（ステップ１２７）。
【００４４】
図１６は、予めプログラムされたプロセッサを用いないときに、フィルタをかけるタスクを実行する一論理回路１３０を示す。各画素（ここで、ａ00からａ43）のデータ信号は、対応する１つの入力１３０ａ〜１３０ｋに加えられ、関連する乗算手段１３２−１〜１３２−ｍの関連する第１の入力１３２−１ａ〜１３２−ｍに接続する。一方、関連する画素の重み付け係数ｗijデータ信号（ここで、ｗ00〜ｗ43）は関連する１つの入力１３０ｐ〜１３０ｖに加えられ、第１の乗算器対１３２に接続された第２の入力１３２−１ｂ〜１３２−ｍｂに供給される。出力１３２−１ｃ〜１３２−ｍｃの出力で重み付けされた画素積のそれぞれは、第１加算手段１３４の関連する入力１３４−１ａ〜１３４−ｇｆに供給される。第１加算手段の数はｇ個であり、そのタイプは要求される出力のｇ項の１つの特定項に合計された重み付けされた画素数により決定される。１３４−１ｘ〜１３４−ｇｘの第１の加算器出力は、第２乗算手段１３６の同じ数ｇの１３６−１ａから１３４−ｇｘの関連する第１の入力に個々に接続され、乗算器は、それぞれ第２の入力１３６−１ｂ〜１３６−ｇｂを備え、オフセット項データ信号を受け取る（フィルタをかけるボックスに必要なｄｘ１，ｄｘ２，ｄｙ１，およびｄｙ２の様々組み合わせにより特定されている）。部分的な結果が１３６−１ｃ〜１３６−ｇｃに出力され、そして、第２の加算手段１３８のｇ個の入力に入力される。この加算手段は、重み付けされたフィルタの合計σFが現れる出力１３８ｘを備え、単一出力１３０ｘに接続されて必要とする次の処理を行う。
【００４５】
コンピュータ画像生成器でピクセル色成分を計算する装置および方法のいくつかの好適な実施例をここで詳細に説明してきたが、多くの修正と変更をこれに加えることは当業者には明らかである。それゆえ、本発明は、添付したクレームの範囲によってのみ制限され、ここで説明のために記載される特定の実施例の態様や方法によっては制限されない。
【符号の説明】
【００４６】
１０コンピュータ画像生成装置
１２コントローラ装置
１４ジオメトリプロセッサ装置
１６ディスプレイプロセッサ装置
１６ｂ，４９Ｚ（デプス）バッファ手段
１８コックピットのディスプレイウィンドウ
２０観測者（ユーザ）
２２入力制御インタフェース
２２ａ他の制御入力装置
３０２次元ポリゴン
３２３次元ポリゴン
３４ｒ光線
３６別の光源
３６−１ｘ反射鏡
４８光源サブプロセッサ
４９ａ光源デプスバッファ
５２Ｋ−２出力
５４Ｋ−３加算手段
５６乗算手段
６０光結合手段
８２アイポイントデプスバッファ手段
８４光源デプスバッファ手段
８８比較装置
１０２ボリューム
１１０ｐｘｑフィルタボックス
１１２デプスバッファプレーン
１３２乗算手段
１３４第１加算手段
Ｓ１，Ｓ２光源
Ｓ３フラッシュライト
【図１】
0005054729.tif 000003
【図２】
0005054729.tif 000004
【図３】
0005054729.tif 000005
【図４】
0005054729.tif 000006
【図５】
0005054729.tif 000007
【図６】
0005054729.tif 000008
【図７】
0005054729.tif 000009
【図８】
0005054729.tif 000010
【図９】
0005054729.tif 000011
【図１０】
0005054729.tif 000012
【図１１】
0005054729.tif 000013
【図１２】
0005054729.tif 000014
【図１３】
0005054729.tif 000015
【図１４】
0005054729.tif 000016
【図１５】
0005054729.tif 000017
【図１６】
0005054729.tif 000018