(57)【特許請求の範囲】
【請求項１】
コンピュータ生成シーン(1)に含まれるパーティクルシステムのパーティクル(2;20)に自動的にシャドウを付ける方法であって、前記シーン(1)は、少なくとも1つの第1の光源(3;30)と、前記シーンをある視点から見るビューア(4;40)とをさらに含む方法であり、
プロセッシングユニットが、第1のパーティクル(2;20)の3次元[3D]位置と前記第1の光源(3;30)の3D位置とに基づいてシャドウオブジェクト(5;50)の第1の3D位置を計算するステップと、
前記プロセッシングユニットが、前記第1の3D位置で前記シーン(1)にシャドウオブジェクト(5;50)を追加するステップであって、前記第1の3D位置は、前記シャドウオブジェクト(5;50)が、前記第1の光源から見て前記第1のパーティクル(2;20)の背後の、前記第1のパーティクル(2;20)からオフセット距離doffsetの位置に配置されるように計算されるステップと
を含む方法において、
前記プロセッシングユニットが、前記オフセット距離doffsetを前記第1のパーティクル(2;20)のサイズに基づいて計算するステップを特徴とする方法。
【請求項２】
前記シャドウオブジェクト(5;50)が2次元[2D]オブジェクトである請求項1に記載の方法。
【請求項３】
前記シャドウオブジェクト(5;50)が縁の滑らかな円である請求項2に記載の方法。
【請求項４】
前記プロセッシングユニットが、前記シャドウオブジェクト(5;50)の不透明度を一定の不透明度値に設定するステップをさらに含む請求項2または3に記載の方法。
【請求項５】
前記不透明度値が前記オフセット距離doffsetに基づいて計算される請求項4に記載の方法。
【請求項６】
前記プロセッシングユニットが、前記シャドウオブジェクト(5;50)の色を一定の色値に設定するステップをさらに含む請求項1から5のいずれかに記載の方法。
【請求項７】
前記色値が前記オフセット距離doffsetに基づいて計算される請求項6に記載の方法。
【請求項８】
前記プロセッシングユニットが、前記シャドウオブジェクト(5;50)のサイズを一定のサイズ値に設定するステップをさらに含む請求項1から7のいずれかに記載の方法。
【請求項９】
前記サイズ値が前記第1のパーティクル(2;20)のサイズに基づいて計算される請求項8に記載の方法。
【請求項１０】
前記サイズ値が、前記第1の光源(3;30)と前記第1のパーティクル(2;20)の間の距離に基づいて計算される請求項8または9に記載の方法。
【請求項１１】
前記オフセット距離doffsetが、前記光源から見て前記第1のパーティクル(2;20;20A)の背後に位置する第2のパーティクル(20B)の3D位置に基づいて計算される請求項1から10のいずれかに記載の方法。
【請求項１２】
前記プロセッシングユニットが、前記シーン(1)を、前記ビューア(4;40)から見て奥から手前に向かって順番にイメージにレンダリングするステップをさらに含み、
前記レンダリングは、前記シャドウオブジェクト(5;50)のピクセルごとに、対応する相手先バッファピクセルのアルファ値を変更せずに、ピクセルを前記相手先バッファピクセルに合成することによって行われる請求項1から11のいずれかに記載の方法。
【請求項１３】
前記レンダリングが、前記シャドウオブジェクト(5;50)のピクセルごとに、前記シャドウオブジェクトピクセルの前記アルファ値に輝度値を乗じ、前記対応する相手先バッファピクセルのアルファ値を変更せずに、前記シャドウオブジェクトピクセルを前記相手先バッファピクセルに合成することによって行われ、
前記輝度値が、前記シャドウオブジェクトピクセルの奥行きと前記対応する相手先バッファピクセルの奥行きの間の距離、すなわちそれらピクセル間の奥行き差[DD]距離と称する距離に相関する請求項12に記載の方法。
【請求項１４】
DD距離が一定の閾値を超える場合に前記輝度値が0に設定され、前記閾値は、Max_DD_距離と称するパラメータによって与えられる請求項13に記載の方法。
【請求項１５】
前記輝度値が、
DD距離 > Max_DD_距離の場合は0に設定され、
DD距離 ≦ Max_DD_距離の場合は(Max_DD_距離 - DD距離) / Max_DD_距離に設定される請求項14に記載の方法。
【請求項１６】
すべての方法ステップが、前記シーン(1)のオブジェクト/光源対ごとに反復される請求項1から15のいずれかに記載の方法。
【請求項１７】
前記シャドウオブジェクト(5;50)が前記第1の3D位置に追加された後に、前記プロセッシングユニットが、前記オフセット距離doffset、または前記シャドウオブジェクト(5;50)の不透明度、色、または形状のいずれかに対するユーザの変更希望を示すユーザ生成パラメータを入力パラメータとするステップと、
前記プロセッシングユニットが、前記ユーザの変更希望に対応する新しいオフセット距離doffset、または前記シャドウオブジェクト(5;50)の新しい輝度値、または新しい色値、または新しい形状のいずれかを、前記入力パラメータに基づいて計算するステップと、
前記プロセッシングユニットが、前記シャドウオブジェクト(5;50)のプロパティを前記計算の結果に基づいて移動または変更するステップとをさらに含む請求項1から16のいずれかに記載の方法。
【請求項１８】
プロセッシングユニットと、パーティクルシステム(2;20)を形成するパーティクル(2;20)、少なくとも1つの第1の光源(3;30)、およびある視点からシーン(1)を見るビューア(4;40)を含むシーン(1)を生成することのできるグラフィカルレンダリングユニットとを備えた装置のためのコンピュータプログラムであって、前記プロセッシングユニットによって実行された場合に、前記装置に請求項1から17のいずれかに記載の方法を実行させるコンピュータ可読コードを含むコンピュータプログラム。
【請求項１９】
請求項18に記載のコンピュータプログラムであるコンピュータ可読コードを含むコンピュータ可読記録媒体。
【請求項２０】
計算手段と、パーティクルシステム(2;20)を形成するパーティクル(2;20)、少なくとも1つの第1の光源(3;30)、およびある視点からシーン(1)を見るビューア(4、40)を含むシーン(1)を生成することのできるグラフィカルレンダリングユニットとを備えた装置であって、
第1のパーティクル(2、20)の3次元[3D]位置と前記第1の光源(3、30)の3D位置とに基づいてシャドウオブジェクト(5;50)の第1の3D位置を計算し、
前記第1の3D位置で前記シーン(1)にシャドウオブジェクト(5;50)を追加するように構成され、
前記シャドウオブジェクト(5;50)が、前記第1の光源から見て前記第1のパーティクル(2
;20)の背後の、前記第1のパーティクル(2;20)からオフセット距離doffsetの位置に配置されるように前記第1の3D位置を計算するように構成される装置において、
前記オフセット距離doffsetを前記第1のパーティクル(2;20)のサイズに基づいて計算するように構成されることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスの分野に関し、より詳細には、コンピュータグラフィックスでオブジェクトのシャドウイングをするための高速かつ簡素な方法に関する。
【背景技術】
【０００２】
コンピュータグラフィックスの分野では、仮想光源によって照明されたオブジェクトに対してシャドウを生成することがよく知られている。この特徴は、シーンの奥行きの知覚性を高めることによってコンピュータ生成イメージに現実味を与えることに重要な役割を果たしている。言い換えれば、シャドウによって、複数のオブジェクトの奥行きと、それらオブジェクトの空間内での相対的な位置関係が理解し易くなる。
【０００３】
一般に、シーンは、いくつかの3次元(3D)オブジェクトと光源と定義される。ビューアは、ある視点からそのシーンを見る。このビューアを「カメラ」と呼ぶことがある。シーンはイメージにレンダリングされる。コンピュータグラフィックスの分野では、レンダリングはイメージを計算することを意味する。したがってここでは、レンダリングとは、シーンを描画するイメージを、ビューア(カメラ)の視点から見ているようなイメージになるように計算するプロセスのことである。動画またはビデオは、複数の連続するイメージをレンダリングし、レンダリングとレンダリングの間にオブジェクトおよび/またはビューア/カメラを移動することによって作成することができる。
【０００４】
ユーザに3D位置での3Dオブジェクトの挿入を可能にすることによってシーンを構築するコンピュータプログラムが市販されている。他に、3Dオブジェクトに自動的にシャドウを付けることのできるコンピュータプログラムも市販されている。例えば、ユーザが、所望の方向から3Dオブジェクトを仮想的に照明するようにその3Dオブジェクトに位置を割り当て、その位置に対して仮想光源を移動できるようにしたコンピュータプログラムがある。このコンピュータプログラムは、この場合、オブジェクトの形状、およびオブジェクトと仮想光源の相対的な位置に基づいて、オブジェクトのシャドウを自動的に生成することができる。
【０００５】
また、雪、雨、水、煙などの動画化を目的とした細かい粒子状の複数のオブジェクトを生成するためのコンピュータプログラムもある。この種のコンピュータプログラムは、パーティクルアニメーションシステムと呼ばれることがある。パーティクルアニメーションシステムの一例として、Trapcode ABの開発したTrapcode Particular(商標)がある。パーティクルアニメーションシステムでは、ユーザは、オブジェクトを個別に配置し、配向する必要がないように一群のオブジェクトにいくつかの規則を割り当てる。そこで、コンピュータは、割り当てられた規則に基づいてそれぞれのオブジェクトの位置を計算する。動画およびビデオの場合、コンピュータは、一群のオブジェクトの位置を経時的に計算する。したがって、パーティクルアニメーションシステムは、オブジェクトを個別に1つ1つ配置することが実際的でない場合に、非常に多くのオブジェクトで複数のシーンを作成するために有用である。各パーティクルにはコンピュータプログラムによって3D位置が割り当てられるが、さらに、速度、配向、回転速度などの他のプロパティも割り当てられうる。ユーザが、シーン内の1つまたはいくつかの光源に3D位置を指定することによってそのシーンに光源を挿入できるようにしたパーティクルアニメーションシステムもある。光源を含んだシーンにシャドウ効果を追加するための機能までもつようなパーティクルアニメーションシステムもある。
【０００６】
しかし、シーンのオブジェクトに対する現実味のあるシャドウを自動的に生成するタスクは複雑なタスクであり、通常は、多くの計算工程を要する。この機能を提供する周知のコンピュータプログラムは、オブジェクトが多いシーンの場合には特に、複雑過ぎてイメージのレンダリング速度を低下させるか、またはレンダリングしたイメージの現実味が乏しくなるような不十分な結果を生じさせるかのいずれかの方法を使用する。
【０００７】
したがって、コンピュータ生成シーンのオブジェクトの現実味のあるシャドウイングをするための高速かつ簡素な方法が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、コンピュータ生成シーン内のオブジェクトの高速かつ簡素なシャドウイング方法を提供することである。
【課題を解決するための手段】
【０００９】
この目的は、コンピュータ生成シーンのオブジェクトに自動的にシャドウを付ける方法であって、
第1のオリジナルオブジェクトの3次元(3D)位置と第1の光源の3D位置とに基づいてシャドウオブジェクトの第1の3D位置を計算するステップと、
上記第1の3D位置で上記シーンにシャドウオブジェクトを追加するステップと
を含む方法によって達成される。
【００１０】
本明細書でシャドウオブジェクトと称する別個のオブジェクトを、オリジナルオブジェクトと光源の3D位置に基づいて決定された第1の3D位置でシーンに自動的に追加することによって、シーンからレンダリングされたイメージに現実味のあるシャドウ効果を与えるシャドウオブジェクトをシーンの各オリジナルオブジェクト/光源対に対して自動的に追加することができる。
【００１１】
シャドウオブジェクトが追加される第1の3D位置は、シャドウオブジェクトが、光源から見て上記第1のオリジナルオブジェクトの背後の、上記第1のオリジナルオブジェクトからオフセット距離に配置されるように計算されることが好ましい。すなわち、第1の3D位置は、シャドウオブジェクトが、上記第1の光源と上記第1のオリジナルオブジェクトを通過して(仮想の)直線に沿って、光源から見て上記第1のオブジェクトの背後に配置され、その場合、オフセット距離が上記直線に沿って第1のオブジェクトとシャドウオブジェクトの間の距離となるように計算されうる。通常、シーンの各オブジェクトと光源の3D位置への割り当ては、オブジェクト/光源の「中心点」を単一(x、y、z)座標に関連付けることによって行われる。この場合、仮想の直線は、第1のオリジナルオブジェクトと光源の周知の(x、y、z)座標に基づいて計算することができ、シャドウオブジェクトは、それ自体の「中心点」を仮想の直線上の第1のオリジナルオブジェクトからオフセット距離の位置に配置された(x、y、z)座標と関連付けることによって配置することができる。このようにして、シャドウオブジェクトはオリジナルオブジェクトと光の方向に対して現実的な位置に配置され、また、第1の3D位置を計算する数学的な演算は非常に簡素化されるので、シーンにシャドウオブジェクトを挿入するために要する計算工程を少なくすることができる。
【００１２】
シャドウオブジェクトは、円、長方形、三角形、六角形またはその他の2次元(2D)形状をした2Dオブジェクトであることが好ましい。2D形状を生成することは3D形状を生成するほど多くの計算工程を必要とせず、円形または他の複雑でない2D形状でシャドウオブジェクトを生成することによって、必要となる計算工程はさらに減少するので、この方法を迅速に実行することができ、かつ/または高能力ではないプロセッシングユニットで実行することができる。
【００１３】
2D形状は、シャドウオブジェクトが周縁部に向かって「フェードアウト」するように縁が滑らかであり、その結果、シーンをイメージにレンダリングする場合に、シャドウオブジェクトとそのシャドウオブジェクトが合成されたどのオリジナルオブジェクトまたは背景の間にも鋭い縁がないことが好ましい。本発明の好ましい実施形態によれば、シャドウオブジェクトは縁の滑らかな円形で生成される。縁の滑らかな円形のシャドウオブジェクトは、オリジナルオブジェクトが円形以外の他の形状の場合にも非常に現実味のあるシャドウ効果をもたらすことが分かっている。
【００１４】
この方法は、シャドウオブジェクトの不透明度を一定の不透明度値に設定するステップをさらに含みうる。かつ/または、この方法は、シャドウオブジェクトの色を一定の色値に設定するステップを含みうる。不透明度値および/または色値は、上記のオフセット距離に基づいて計算することが好ましい。これにより、不透明度および/または色値は、オフセット値が増加するにつれて不透明度が減少し、かつ/または色が変化するように計算することができる。この特徴は、シャドウオブジェクトがオリジナルオブジェクトから遠ざかるにつれてより目立たなくなり、そのことがかえって、シーンがレンダリングされたイメージ内でさらに現実味のあるシャドウイング効果をもたらすという効果を有する。
【００１５】
この方法のさらに有利な特徴は、以下の詳細な説明と添付の特許請求の範囲で詳細に説明する。
【００１６】
本発明の他の目的は、コンピュータ生成シーンのオブジェクトの高速かつ簡素なシャドウイングのためのコンピュータプログラム製品を提供することである。
【００１７】
この目的は、プロセッシングユニットと、少なくとも1つの第1のオリジナルオブジェクトおよび少なくとも1つの第1の光源を含むシーンを生成することのできるグラフィカルレンダリングユニットとを備えた装置のためのコンピュータプログラムによって達成される。このコンピュータプログラムは、プロセッシングユニットによって実行された場合に、装置に上記の方法を実行させるコンピュータ可読コードを含む。
【００１８】
本発明の他の態様によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータ可読媒体と、コンピュータ可読媒体に記憶されたコンピュータ可読コードとを含む。コンピュータ可読コードは、上記のコンピュータプログラムである。コンピュータ可読媒体は、ハードディスクドライブ、CD-ROM、DVD、または当技術分野で知られた任意の他のコンピュータ可読媒体であってよい。
【００１９】
本発明のさらに他の態様によれば、計算手段と、少なくとも1つの第1のオリジナルオブジェクトおよび少なくとも1つの第1の光源を含むシーンを生成することのできるグラフィカルレンダリングユニットとを備えた装置が提供される。この計算手段は、第1のオリジナルオブジェクトの3D位置と第1の光源の3D位置とに基づいてシャドウオブジェクトの第1の3D位置を計算するように構成され、グラフィカルレンダリングユニットは、上記第1の3D位置で上記シーンにシャドウオブジェクトを追加するように構成される。この計算手段は、マイクロプロセッサなどのプロセッシングユニットであってよく、グラフィカルレンダリングユニットは、例えばグラフィックスプロセッシングユニット(GPU)であってよい。
【００２０】
本発明は、1つのシーンで細かい粒子状をした多数のオリジナルオブジェクトにシャドウを追加すべきパーティクルアニメーションシステムで使用される場合には特に有益である。円、好適には縁の滑らかな円を、シャドウが追加されるべきパーティクルからオフセット距離にある、光源から見てパーティクルの背後に単純にオフセットすることによって、実行すべき計算は非常に少なくなる。さらに、一定の3D位置で一定の半径を有する円を描くことは非常に単純な工程であり、この方法を実行する装置のプロセッシングユニットまたはグラフィカルレンダリングユニットに対していかなる複雑な計算も要求しない。
【００２１】
さらに、本発明は、実写の場面にコンピュータ生成効果が追加されるいかなるタイプの動画またはビデオを作成する際にも有益に利用されうる。この場合、本発明は、コンピュータ生成イメージにさらに現実味を与え、その場面の自然な部分にさらに類似して見えるようにし、その結果、この効果は視聴者にさらに信憑性のあるものとなる。これは、実写の場面を含まず、純然たるデジタルレンダリングである動画またはビデオの知覚性を高めるためにも有用でありうる。
【００２２】
本発明は、現実的な物理環境をシミュレートすることを目的とした仮想環境を作成する際のツールとしても有益に使用されうる。例えば、本発明は家を設計する際に建築家が使用することができ、その場合、建築家は、画像、ムービー、または場合によっては家の対話型ウォークスルーの形式で家を視覚化する支援に本発明を使用することができる。本発明によって追加されたシャドウは、空間の知覚性を高め、イメージをさらに現実味のあるものとする。
【００２３】
本発明は、例えば飛行シミュレータや自動車のシミュレータといったシミュレーションにも使用することができる。この場合、シャドウを追加するための提案された方法は、パイロット/ドライバーが、仮想環境で複数のオブジェクトまでの距離と、それら複数のオブジェクトの相対的な位置とを推定することを支援することができる。言い換えれば、本発明は、ドライバー/パイロットの空間の知覚性を高めることができる。
【００２４】
本発明の他の適用分野の別の一例としてコンピュータゲームがある。最新のコンピュータゲームの大半は3Dグラフィックスを使用する。本発明は、3D環境に現実味のあるシャドウを追加する非常に高速な方法を提示するので、仮想3D世界の現実味のあるシャドウイングを達成するために、コンピュータゲームといったリアルタイムのアプリケーションで有利に使用される。
【００２５】
本発明は、例えば臓器や分子といった複合3D構造を視覚化するための医療用アプリケーションにも使用することができる。シャドウイングを、明瞭化の目的で加えることができる。
【００２６】
本発明は、移動電話、携帯情報端末(PDA)といった移動装置用ソフトウェアアプリケーションでも有利に使用される。移動装置では計算資源が乏しいことがよくあり、エネルギー節約のため、最小限の計算を装置自体で行う必要がある。本発明は、高速かつ電力効率のよい方法で現実味をもってシャドウイングされたイメージをレンダリングするために非常に有用でありうる。
【図面の簡単な説明】
【００２７】
【図１】シーンの一例とビューアを示す図である。
【図２】図1に示すシーンに本発明の原理に従ってシャドウオブジェクトを追加した場合のシーンを示す図である。
【図３】関連付けられたオリジナルオブジェクトと光源に対して本発明の原理に従ってどのようにシャドウオブジェクトを配置できるかの一例を示す図である。
【図４】光源から見て第1のオリジナルオブジェクトの背後に配置された第1のオリジナルオブジェクトと第2のオリジナルオブジェクトに対してどのように第1の照明されたオリジナルオブジェクトのシャドウオブジェクトを配置できるかの一例を示す図である。
【図５】オリジナルオブジェクトのみを含むシーンからレンダリングしたイメージを示すことによって本発明による方法の効果を示す図である。
【図６】図5のシーンに本発明の原理に従ってシャドウオブジェクトを追加した後でそのシーンからレンダリングしたイメージを示すことによって本発明による方法の効果を示す図である。
【図７】シーンの一例の一部を示す図である。
【図８】本発明によるシャドウオブジェクトのピクセルにどのように輝度値を設定できるかの異なる例を示す4つのグラフである。
【図９】本発明によるコンピュータプログラムのグラフィカルユーザインターフェースの一例を示す図である。
【図１０】本発明の実施形態による方法を示すフローチャートである。
【発明を実施するための形態】
【００２８】
図1は、それぞれに3次元(3D)位置を有するオリジナルオブジェクト2と光源3を含むシーン1を示す図である。ビューア4は、同様に3D位置を割り当てられたある視点からシーン1を見る。コンピュータグラフィックスの分野では、ビューア(すなわち、レンダリングされたイメージでシーンを見る側の3D位置)は、シーンの一部と見なされる場合とそうでない場合がある。以下の説明では、ビューア4は、シーン1の一部と見なさないことにする。代わりに、本明細書を通して、シーンを、少なくとも1つのオリジナルオブジェクト2と少なくとも1つの光源3とを含む仮想3D空間と定義することにする。シーン1は、3Dシーンを生成するためのコンピュータプログラムを実行中のコンピュータによって完全に、または部分的に生成されたものである。
【００２９】
オリジナルオブジェクト2は、いかなるタイプのオブジェクトであってもよい。例えば、オリジナルオブジェクト2は、犬、人間、宇宙船、球体などといったいかなる現実または想像上のオブジェクトを描画する3Dモデルであってもよい。また、人間の顔、星、文字、円などの写真やイメージといったいかなる現実または想像上のオブジェクトを描画する2Dオブジェクトであってもよい。オリジナルオブジェクト2は、パーティクルアニメーションシステムのパーティクルであってもよい。
【００３０】
シーン1の各オリジナルオブジェクト2と光源3には3D位置が割り当てられている。オリジナルオブジェクト2と光源3は、コンピュータのユーザが手動で配置してもよく、またはコンピュータによって自動的または半自動的に配置してもよい。オリジナルオブジェクト2と光源3にそれぞれの3D位置を割り当てるいくつかの知られた方法があり、厳密なその方法は本発明の範囲外である。
【００３１】
シーン1のオリジナルオブジェクト2は、3Dシーンのオブジェクトをイメージにレンダリングできるいかなる周知の方法によってもレンダリングすることができる。本発明のいくつかの態様によれば、オブジェクトをレンダリングする方法には具体的な需要があり、例えば、レンダリングされたイメージのピクセルごとに奥行き値および/またはアルファ値を割り当てる方法が必要とされうる。その場合、本明細書ではその旨を明示する。
【００３２】
図2は、本発明の例示的な実施形態によるシャドウを付けた図1に示すシーンを示す図である。以下に示す方法ステップを実行するようにコンピュータに命令するコンピュータコードを実行中のコンピュータによって、自動的にシャドウが生成されてシーン1に加えられる。したがって、本発明は、通常、コンピュータ、またはマイクロプロセッサといったプロセッシングユニットと、グラフィカルプロセッシングユニット(GPU)といったグラフィカルレンダリングユニットとを備えた任意の他の装置で実行された場合に、その装置にこの方法ステップを実行させるコンピュータプログラムとして実施されるものと理解されたい。
【００３３】
シーン1の各オリジナルオブジェクト2と各光源3には、オリジナルオブジェクト2の近似物である新しいオブジェクト5が追加される。あるオリジナルオブジェクト2とある光源3、すなわちあるオブジェクト/光源対に関連付けられた近似物には、オリジナルオブジェクト2の3D位置と光源3の3D位置とに基づいて計算された3D位置が割り当てられる。以下の説明では、オリジナルオブジェクト2の近似物を「シャドウオブジェクト」と称することにする。
【００３４】
以下の説明では、「すべてのオブジェクト」という用語はオリジナルオブジェクトとシャドウオブジェクトの両方を示し、「アイテム」という用語は、両方のオブジェクトと光源を含めたシーンの全アイテムを示す。
【００３５】
次に図3を参照すると、オリジナルオブジェクト20の3D位置をとり、光源30の3D位置からの光の方向にオフセットすることによりシャドウオブジェクト50の3D位置が計算される。以下の説明でオフセット距離doffsetと称するオフセット量は、事前設定されたパラメータ、ユーザが指定できるパラメータ、および/または光源30とオリジナルオブジェクト20の位置および/またはサイズに基づいてコンピュータが自動的に計算できるパラメータであってよい。オフセット距離は、以下でより詳細に説明するように、シーンの他のオブジェクトの位置に基づいて自動的に計算することもできる。
【００３６】
本発明の本実施形態では、シャドウオブジェクト50の中心は、光源から見てオリジナルオブジェクト20の背後の、オリジナルオブジェクト20からオフセット距離の位置で、オリジナルオブジェクト20の中心と光源30の中心とを通過する直線7の延長上の空間の一点に配置される。例示的な本実施形態では、オフセット距離を、オリジナルオブジェクト20の中心からシャドウオブジェクト50の中心までの距離と定義することが理解されよう。しかし、オフセット距離は、例えば相互に対して最短距離に配置されたオリジナルオブジェクト20の点とシャドウオブジェクト50の点の間の距離など、別様に定義できることも理解されたい。オリジナルオブジェクトまたは光源の「中心」は多くの様々な方法で定義しうることも理解されたい。図面では簡略化のためオリジナルオブジェクトと光源を球体で示してあり、この場合、各オブジェクト/光源の「中心」をその球体の中心と定義すると自然であろう。しかし、オリジナルオブジェクトまたは光源はいかなる所与の2D形状または3D形状であってもよく、各オリジナルオブジェクトまたは各光源の中心点は、2Dオブジェクトまたは3Dオブジェクトの「中心点」と見なしうる一点を特定するいかなる周知の原理に従っても計算できる。しかし通常は、シーンのすべてのアイテムは、シーンに追加される場合は、通常は単一(x、y、z)座標形式で3D位置に割り当てられるので、シャドウオブジェクト50を生成する際には、オリジナルオブジェクト20と光源30の中心点を特定するために計算を実行する必要はない。すなわち、オリジナルオブジェクト20と光源30には、通常、それぞれの中心点と見なしうるそれぞれの(x、y、z)座標が既に割り当てられている。
【００３７】
シャドウオブジェクト50は、通常、2D形状の形式で生成される。2D形状の生成は、3D形状の生成よりも少ない計算工程しか必要としない。シャドウオブジェクト50は、オリジナルオブジェクト20の簡素で縁の滑らかな2Dの近似物であってよい。好適には、シャドウオブジェクト50は、縁の滑らかな円の形式で生成される。オリジナルオブジェクト20が球体をした例示的な本実施形態では、縁の滑らかな円はオリジナルオブジェクト20の非常に良い近似物である。しかし、シーンのオリジナルオブジェクトが他の形式の場合でも、縁の滑らかな円形式のシャドウオブジェクト50は、レンダリングされたイメージの非常に現実味のあるシャドウイングの結果をもたらすことが分かっている。
【００３８】
図2および3に示す実施形態で分かるように、2Dシャドウオブジェクト5、50は常にビューア4、40に面している。シャドウオブジェクト50は、オリジナルオブジェクト20からオフセット距離離れた想像上の平面8にオリジナルオブジェクト20を投影することによって生成されると言うことができる。想像上の平面8と、したがって2次元のシャドウオブジェクト50が常にビューア40に面するように生成されるということは、ビューア40の視線が投影面8に対する垂線となるように、または少なくとも投影面8の垂線にほぼ平行した線を形成するように、想像上の平面8の傾斜が選択されることを意味する。このタイプのイメージは、コンピュータグラフィックスの分野ではビルボードまたはスプライトと称されることが多い。2Dシャドウオブジェクト50をビューア40に面するようにするためにさらなる計算は必要とされないということを理解されたい。シーンに2D形状を追加する際、その2D形状はビューア40に割り当てられた位置に面するように生成される。
【００３９】
シャドウオブジェクト50のサイズはいくつかの異なる方法で決定しうる。本発明の一態様によれば、シャドウオブジェクト50のサイズは事前設定された標準値に単純に設定される。本発明の他の一態様によれば、シャドウオブジェクト50のサイズは、オリジナルオブジェクト20のサイズに比例するように設定される。この場合、オリジナルオブジェクト20のサイズとシャドウオブジェクト50のサイズの間の比例定数はユーザパラメータであってよい。本発明のさらに他の一態様によれば、シャドウオブジェクト50のサイズは、光源30とオリジナルオブジェクト20の間の距離に基づいて計算される。例えば、オリジナルオブジェクト20に対してシャドウオブジェクト50のサイズを設定するために使用されうる上記の比例定数は、この距離に基づいて特定することができる。この場合、光源30とオリジナルオブジェクト20の間の距離が短い場合は、シャドウオブジェクト50が大きくなるように、距離が短くなるにつれて比例定数は大きくなることが好ましい。この距離が長くなる場合、比例定数は、光源30から発せられた幾筋もの光線がオリジナルオブジェクト20に当たる時点でほぼ平行になるような印象をビューア40に与えるように1に向かって収束しうる。それによって、シーン1Bのシャドウイングはより現実味を帯び、ビューア40がシーンのオブジェクト間の距離を推定するために役立つ。また、シャドウオブジェクト50に遠近法の比例縮小を行ってもよく、これはシャドウオブジェクト50がビューア40から遠ざかるに従ってシャドウオブジェクト50のサイズが小さくなることを意味する。したがって、シャドウオブジェクト50のサイズは、ビューア40から見たシーンのシャドウオブジェクト50の奥行きに対応する、ビューア40とシャドウオブジェクト50の間の距離に基づいて計算することもできる。
【００４０】
シャドウオブジェクト50が追加されたオリジナルオブジェクト20からの距離、すなわちオフセット距離は、上記のように事前設定されたパラメータまたはユーザ指定のパラメータであってよい。しかし、オフセット距離は、シャドウオブジェクトが追加されるべきオリジナルオブジェクト20の周知のサイズに基づいてコンピュータによって自動的に計算することもできる。例えば、オフセット距離を球体のオリジナルオブジェクト20の中心とシャドウオブジェクト50の中心点からの距離と定義する図3に示すシナリオでは、オフセット距離を、オリジナルオブジェクト20の半径に適切な値を加えるか、または乗じた値として計算することができる。オフセット距離を計算する際にオリジナルオブジェクト20のサイズを考慮することによって、シャドウオブジェクト50が(光源から見て)オリジナルオブジェクトの中ではなく確実にその背後に配置されるようにすることができる。
【００４１】
オフセット値は、シーンの他のオリジナルオブジェクトのサイズおよび/または3D位置に基づいて計算することもできる。図4は、第2のオリジナルオブジェクト20Bが光源から見て第1のオリジナルオブジェクト20Aの背後に配置されるシーンを示す図である。このシナリオでは、第1のオリジナルオブジェクト20Aのシャドウを表すシャドウオブジェクト50が第1のオリジナルオブジェクト20Aと第2のオリジナルオブジェクト20Bの間に配置されるように、オフセット距離を計算することができる。すなわち、オフセット距離doffsetは、シャドウオブジェクト50が追加されるべきオリジナルオブジェクト20Aと、光源から見て第1のオリジナルオブジェクト20Aの背後に配置された他のオリジナルオブジェクト20Bの間の距離dobjectに基づいて計算することができる。オフセット値は、第1のオリジナルオブジェクト20Aのシャドウオブジェクト50が第2のオブジェクト20Bにできる限り近接して配置されるように計算されることが好ましい。これによって、ビューア40から見たシーンがイメージにレンダリングされる場合に、シャドウオブジェクト50は光源から見て第2のオリジナルオブジェクト20Bに重なる可能性が最も高くなり、したがって、第2のオリジナルオブジェクト20Bに重なっている第1のオリジナルオブジェクト20Aの現実味あるシャドウをシミュレートすることになる。上述のように、シャドウオブジェクト50が第1のオリジナルオブジェクト20Aの「中」でも第2のオリジナルオブジェクト20Bの「中」でもなく、確実にこれらの間に配置されるようにオフセット距離を計算する際にも、第1のオリジナルオブジェクト20Aおよび/または第2のオリジナルオブジェクト20Bのサイズを使用することができる。
【００４２】
本発明の一態様によれば、シャドウオブジェクト5、50の色および/または透明度はオフセット距離に基づいて設定される。通常、シャドウオブジェクトの色は暗色、例えば黒、灰色、または焦げ茶色であるべきである。しかし、シャドウオブジェクト5、50の色および/または透明度をそれぞれのオフセット距離に基づいて調整することによって、関連付けられたオリジナルオブジェクトに近接した方のシャドウオブジェクトに、関連付けられたオリジナルオブジェクトから遠い方のシャドウオブジェクトよりも目立つような透明度および/または色を与えることができる。これは、例えば、各シャドウオブジェクトに、そのオフセット距離に反比例する透明度を割り当てることによって達成される。この特徴は、シーンのシャドウイングをさらに現実味のあるものにする。
【００４３】
オリジナルオブジェクト/光源対ごとにシャドウオブジェクト5、50を追加した後で、ビューアから見たシーン1をレンダリングする場合、レンダリングされたイメージはシャドウイングを含むことになる。図5は、オリジナルオブジェクト(複数の三日月型のオブジェクト)だけを含むシーンからレンダリングしたイメージを示す図であり、図6は、同シーンに本発明の原理に従ってシャドウオブジェクト5、50を追加した後でそのシーンからレンダリングしたイメージを示す図である。
【００４４】
本発明の一態様では、すべてのオブジェクトは奥から手前に向かって順番にレンダリングされる。オリジナルオブジェクト2、20は、各ピクセルにアルファ値を設定するステップを含む方法であればいかなる方法によっても相手先バッファにレンダリングされる。コンピュータグラフィックスの分野でよく知られているように、相手先バッファは複数のピクセルからなる長方形であり、各ピクセルは一色である(例えば、この色は赤、緑、青の成分を指定することにより得ることができる)。各ピクセルには、そのピクセルがどれだけ透明であるかを示すアルファ値を割り当てることもできる。イメージがピクセルごとにアルファ値を含む場合、そのイメージはアルファチャネルを有すると表現される。
【００４５】
本実施形態によれば、シャドウオブジェクト5、50は、シャドウオブジェクト5、50のピクセルごとに、対応する相手先バッファピクセルのアルファを変更しないままで、ピクセルを相手先バッファピクセルに合成することによってレンダリングされる。
【００４６】
本実施形態の利点は、オリジナルオブジェクト2、20のアルファチャネルが変更されず、したがって最終的なイメージバッファが正確なアルファチャネルを有することである。これによって、最終的なイメージバッファを背景(例えばビデオ)に合成できるようになる。
【００４７】
他の利点は、シャドウオブジェクトピクセルをその相手先バッファピクセルに合成する時点でアルファ値が0の相手先バッファピクセル(これは、ビューアから見てシャドウオブジェクトの背後に配置されたオリジナルオブジェクトまたは背景のピクセルに対応しないすべての相手先バッファピクセルについて言えることである)は、シャドウオブジェクトピクセルがそれらの上に合成された後でもそのアルファ値は0のままであるということである。
【００４８】
言い換えれば、このオブジェクトのレンダリング方法は、シーンに追加されたシャドウオブジェクト5、50を、レンダリングされたイメージ内で、ビューアから見てシャドウオブジェクト5、50の背後にオリジナルオブジェクト2、20または背景がある場合にだけ見えるようにするというものである。あるいは、より正確には、シャドウオブジェクト5、50の、ビューアから見てそのシャドウオブジェクトの背後にあるオリジナルオブジェクトに重なっている部分だけが、レンダリングされたイメージ内で見えるようになる。
【００４９】
本発明の他の一態様でも、すべてのオブジェクトは奥から手前に向けて順番にレンダリングされる。各ピクセルにアルファ値と奥行き値を設定するステップを含むいかなる方法によっても、オリジナルオブジェクト2、20は相手先バッファにレンダリングされる。コンピュータグラフィックスでよく知られているように、ピクセルの奥行き値は、ビューアから見たそのピクセルの奥行きを示す。座標系の原点をビューアの視点とし、z軸をビューアの前方に延びる方向とすると、ピクセルの奥行き値はそのピクセルのz座標である。ピクセルごとに奥行き値を含むイメージは、奥行きチャネルを有すると表現され、また、奥行きバッファまたはzバッファとも呼ばれうる。
【００５０】
本実施形態によれば、シャドウオブジェクト5、50は、シャドウオブジェクトのピクセルごとに、
シャドウオブジェクトピクセルのアルファ値に輝度値を乗じ、かつ
対応する相手先バッファピクセルのアルファを変更せずに、シャドウオブジェクトピクセルを相手先バッファピクセルに合成することによってレンダリングされ、
輝度値は、シャドウオブジェクトピクセルの奥行きと対応する相手先バッファピクセルの奥行きの間の距離に相関する。
【００５１】
ビューアに近接したオリジナルオブジェクトがビューアから遠くにある他のオリジナルオブジェクトの上に影を落とさないようにするために、シャドウオブジェクトピクセルのアルファ値に、シャドウオブジェクトピクセルの奥行きと、対応する相手先バッファピクセルの奥行きの間の距離に応じて異なる輝度値を乗じることによって、レンダリングされたイメージのシャドウを奥行きの方向にフェードアウトさせることができる。これは、距離が増加すると輝度値が減少する場合の結果である。以下の説明では、シャドウオブジェクトピクセルの奥行きと、対応する相手先バッファピクセルの奥行きの間の距離を、それらピクセル間の奥行き差(DD)距離と称する。
【００５２】
次に図7を参照すると、図4に示した第1のオリジナルオブジェクト20Aと第2のオリジナルオブジェクト20Bが第3のオリジナルオブジェクト20Cと共に示されている。上記の輝度値との乗算の効果は、ビューアから見て第2のオリジナルオブジェクト20Bに重なっているシャドウオブジェクト50の部分の明暗のコントラストをさらに強く描画し、したがって、レンダリングされたイメージ内でビューアから見て第3のオリジナルオブジェクト20Cに重なっているシャドウオブジェクト50の部分より目立つようになることである。基本的に、このイメージレンダリング方法は、レンダリングされたイメージのシャドウオブジェクト50によるシャドウが、シャドウオブジェクトに奥行きで近接したオリジナルオブジェクトにかかっている場合は、シャドウオブジェクトから奥行きで遠くにあるオリジナルオブジェクトにかかる場合よりも「明暗のコントラストがより強く」見えるようになることを保証する。これは、レンダリングされたイメージのシャドウイングを、さらに一層現実味を帯びたものにする。
【００５３】
好適には、DD距離が、以下の説明でMax_DD_距離と称するパラメータによって与えられる一定の閾値を超えた場合、輝度値は0に設定される。Max_DD_距離パラメータは、事前設定されたパラメータ、ユーザ指定のパラメータ、またはコンピュータによって自動的に計算、設定されたパラメータであってよい。これは、たとえオリジナルオブジェクトがビューアから見てシャドウオブジェクトの背後にあったとしても、そのシャドウオブジェクトとオリジナルオブジェクトの間の奥行き方向での距離が十分に長い場合は、レンダリングされたイメージ内でのオリジナルオブジェクトの外観にそのシャドウオブジェクトが影響を与えないという効果を有する。図7に示すシーンを再び参照すると、この図は、シーンをイメージにレンダリングした際に、シャドウオブジェクト50の全ピクセルと第3のオリジナルオブジェクト20Cの全ピクセルの間の奥行き方向での距離がMax_DD_距離を超える場合は、シャドウオブジェクト50はオリジナルオブジェクト20Cの外観に全く影響を与えないことを意味している。
【００５４】
例えば、輝度値は、DD距離がMax_DD_距離を超えた場合は0に設定され、Max_DD_距離を超えない場合は、Max_DD_距離とDD距離の差をMax_DD_距離で割った値に設定されうる。すなわち、輝度値は次のように定義することができる。
DD距離 > Max_DD_距離の場合は、
輝度値 = 0
DD距離 ≦ Max_DD_距離の場合は、
輝度値 = (Max_DD_距離 - DD距離) / Max_DD_距離
上式で、DD距離 = 相手先バッファピクセルの奥行き - シャドウオブジェクトピクセルの奥行きである。
【００５５】
シャドウオブジェクトピクセルの輝度値を、シャドウオブジェクトピクセルと対応する相手先バッファピクセルの間のDD距離の関数とした上記の定義を、図8のグラフAで示す。
【００５６】
本発明の他の実施形態では、すべてのオブジェクトのレンダリングは、シャドウオブジェクトピクセルと対応する相手先バッファピクセルの間のDD距離に関する他のパラメータ(以下の説明ではMiddle_DD_距離と称する)を使用して実行される。Middle_DD_距離は、事前設定されたパラメータ、ユーザ指定のパラメータ、またはその値がコンピュータによって自動的に計算、設定されたパラメータであってよい。本実施形態によれば、シャドウオブジェクトピクセルの輝度値は、DD距離がMiddle_DD_距離に向かって増加した場合は増加し、次いでDD距離がMiddle_DD_距離を超えてMax_DD_距離に向かって増加した場合は減少する。輝度値は、通常、DD距離が0に等しい場合は0で始まり、DD距離がMax_DD_距離を超えた場合は0で終わる。
【００５７】
シャドウオブジェクトピクセルの輝度値を、シャドウオブジェクトピクセルと対応する相手先バッファピクセルの間のDD距離の関数とする上記の定義を、図8のグラフBで示す。
【００５８】
本実施形態の利点は、動画またはビデオを作成する際に、シャドウがあまり頻繁に「ポッピング」しないことである。ポッピングとは、あるオブジェクトが別のオブジェクトの背後から突然現れる場合の可視的なアーチファクトを意味する。0で始まり、DD距離がMiddle_DD_距離に接近するにつれて次第に増加する輝度値を使用することによって、シャドウオブジェクトは次第に出現し、オリジナルオブジェクトの正面で突然見えなくなる。
【００５９】
他の実施形態では、シャドウオブジェクトピクセルの輝度値は、そのシャドウオブジェクトピクセルと対応する相手先バッファピクセルの間のDD距離に応じて滑らかな曲線に従って変化する。図8のグラフCおよびDは、DD距離の滑らかな強度関数の例を示している。
【００６０】
本発明の一態様によれば、コンピュータプログラムは、そのプログラムを実行するコンピュータによって、Max_DD_距離とMiddle_DD_距離が自動的に計算されるように構成される。Max_DD_距離はシャドウオブジェクトのサイズに基づいて計算することができ、Middle_DD_距離はMax_DD_距離に基づいて計算することができる。例えば、Max_DD_距離はシャドウオブジェクトのサイズに設定することができ、Middle_DD_距離はMax_DD_距離の半分に設定することができる。
【００６１】
DD距離に応じた輝度値が0以外のあるDD距離で最大値となる場合(図8のグラフBおよびDに示す)、これは奥行き方向での知覚されるシャドウのオフセット、すなわちレンダリングされたイメージのビューアに向かう方向への知覚されるオフセットまたはそのビューアから遠ざかる方向への知覚されるオフセットを導きうる。オフセットが奥行き方向でビューアに向かうオフセットになるかビューアから遠ざかるオフセットになるかは、シーン内でのオリジナルオブジェクト2、20の奥行きと光源3、30の奥行きによって決まる。したがって、輝度値がこのような関数によって決定される場合、シャドウオブジェクトが追加されるべき3D位置は、レンダリングされたイメージでの知覚されるシャドウの奥行きの「エラー」を補償する方法で計算することができる。例えば、シャドウオブジェクトの位置は、上記の原理のいずれかに従ってシャドウオブジェクトの第1の位置を特定することによって計算することができ、次いで奥行き補償値に第1の位置を加算/奥行き補償値から第1の位置を減算してシャドウパーティクルを奥行きでビューアに近づけるかまたはビューアから遠ざけることによってシャドウパーティクルを最終位置に「移動」する。したがって、奥行き補償値はシャドウオブジェクトのz座標に影響を与えうるものである。奥行き補償値は、ユーザが設定することができるか、またはコンピュータで、例えば単純にMiddle_DD_距離に設定することによって自動的に計算することができる。
【００６２】
他の実施形態では、ユーザは、シーン1の光源3、30の部分集合を選択することができるが、この部分集合は1つまたは多数の光源であってよく、上記の方法によれば、シャドウオブジェクトの生成にはこの部分集合の光源のみが使用される。最も目立つ光源だけを部分集合として選択すると、レンダリングされたイメージは、すべての光源が含まれているかのような高品質に近い状態になる。本実施形態は、シーンに追加すべきシャドウオブジェクトの数を低減することでこの方法を高速化し、かつコンピュータプログラムを実行する装置が必要とする計算工程を大幅に低減するという点で有利である。
【００６３】
他の実施形態では、オブジェクトをレンダリングする前に、奥行きバッファを有する背景イメージが相手先バッファにレンダリングされる。この方法の有益な点は、背景イメージもシャドウイングされることである。
【００６４】
他の実施形態では、ピクセルごとに奥行き値を設定するステップを含む任意の方法を使用して、第1の段階でオリジナルオブジェクトのレンダリングが行われる。例えば、これは、グラフィックスカード(GPU)が対応する標準レンダリング機能でありうる。シャドウオブジェクトは、上記の方法の1つによって第2の段階でレンダリングされる。相手先バッファでアルファチャネルが使用可能でない場合は、すべてのピクセルが完全に不透明であると想定される。しかし、これが機能するには奥行きチャネルが必要である。したがって、本実施形態は、奥行きチャネルを利用する上記の方法にのみ適用される。
【００６５】
本実施形態の有益な点は、オリジナルオブジェクトのレンダリングに標準の(かつ、通常は非常に高速の)GPU機能を使用できることである。シャドウオブジェクトのレンダリングの第2の工程も、シェーダーを使用してGPUで実行することができる。シェーダーとは、GPUが(非常に高速に)実行できるひとまとまりのコードのことである。この場合、シェーダーは上記の方法の1つを実施しうる。GPUとは、特にコンピュータグラフィックスを生成するために作成されたチップまたは装置のことである。最新のパーソナルコンピュータの大半はGPUカードを有する。本実施形態は、コンピュータゲームやその他のリアルタイムのアプリケーションで特に有用でありうる。
【００６６】
本発明の他の実施形態では、オブジェクトが複合3Dモデル(例えば、自動車の3Dモデルであってよい)または人間や動物の詳細なモデルである場合、シャドウオブジェクトを生成する前に、それらのオブジェクトをサブオブジェクトに分割することができる。シャドウオブジェクトを生成する際には、オブジェクトの各主要部分(例えば、腕)が独立したオブジェクトになるようにオブジェクトを分割することができる。本実施形態の有益な点は、例えばシーン内で一人の人間が直立不動で片腕だけを動かしている場合、その腕に関連するシャドウオブジェクトも動くので、現実味が増すことである。
【００６７】
本発明の他の実施形態では、1つのシーンに非常に多くのオリジナルオブジェクトがある場合、シャドウオブジェクトを生成する前にそれらのオリジナルオブジェクトを1つに纏めることができる。例えば、空間内で一部のオリジナルオブジェクト同士が接近し合っている場合、シャドウオブジェクトを生成する際には、それらのオブジェクトを1つのオリジナルオブジェクトと見なすことができる。本実施形態の利点は、シャドウオブジェクトの数が少なくなることであり、したがって、シャドウオブジェクトを各オリジナルオブジェクト(または、オリジナルオブジェクトが複数の光源で照明されている場合は複数のオリジナルオブジェクト)に追加すべき場合よりも、シーンにシャドウオブジェクトを追加するプロセスが高速化され、かつ消費される計算工程の数が低減されることである。
【００６８】
上記のように、本発明の一態様によれば、あるオリジナルオブジェクトとある光源とに関連付けられたシャドウオブジェクトは、光源から見てオリジナルオブジェクトの背後のオフセット距離doffsetの位置に追加される。この最初のオフセット距離が事前設定されたパラメータによって決定されるか、ユーザ指定のパラメータによって決定されるか、または様々なパラメータに基づいて計算されるかに関わらず、本発明によるコンピュータプログラムは、シャドウオブジェクト50がシーンに追加された後で、ユーザがシャドウオブジェクト50の最初のオフセット距離を調整できるようにプログラミングされることが好ましい。これは、例えばユーザによる調整の可能なスライド式コントロールおよび/またはユーザが所望のオフセット距離を入力できるテキストフィールドを、コンピュータプログラムのグラフィカルユーザインターフェース(GUI)上に表示することによって達成されうる。本発明の一態様によれば、ユーザは、シーン内の全シャドウオブジェクトについてオフセット距離を調整したいのか、シーン内の(1つまたは複数の)シャドウオブジェクトの部分集合についてオフセット距離を調整したいのかを選ぶことができる。後者の要望は、ユーザに、シーン内の1つまたはいくつかのオリジナルオブジェクトを、例えばコンピュータのマウスを使ってクリックするなどして指定し、次いでその指定したオリジナルオブジェクトのシャドウオブジェクトについて、例えばスライド式コントロールを移動するなどしてオフセット距離を調整することを可能とすることによって達成されうる。
【００６９】
コンピュータプログラムは、シーンにシャドウオブジェクトが追加された後で、ユーザにそのシャドウオブジェクトのサイズ、不透明度、色、および/または形状を調整することを可能にする類似の機能を含むことが好ましい。さらに、このプログラムは、シーンにシャドウオブジェクトが追加された後で、ユーザに、上記のMax_DD_距離パラメータとMiddle_DD_距離パラメータの値を調整することを可能にするようにも構成されうる。サイズ、不透明度、色、Max_DD_距離、およびMiddle_DD_距離は、例えば上記のようにユーザがスライド式コントロールまたは入力テキストフィールドを使用して調整することができ、一方、1つまたは複数のシャドウオブジェクトの形状は、例えばコンピュータプログラムのGUI上にユーザ用に表示されたドロップダウンメニューまたは一群のアイコンのいくつかの事前定義された形状(円、正方形、長方形、三角形、楕円形など)から1つを選択することによって調整することができる。一部の事例では、シーンにシャドウオブジェクトが追加された後で、ユーザがこれらのシャドウオブジェクトのサイズを変更する場合は、シーン内のシャドウの「量」を一定に保つためにシャドウオブジェクトの不透明度を下げることが望ましい。したがって、本発明の一実施形態によれば、コンピュータプログラムは、シャドウオブジェクトのサイズに対するユーザ指定の変更に応じて、シャドウオブジェクトの不透明度を自動的に変更するように構成される。
【００７０】
本発明のさらに他の態様によれば、シーンにシャドウオブジェクトが自動的に追加された後で、シャドウオブジェクトのオフセット距離および/または3D位置はユーザによって自由に調整可能である。これは、ユーザがシャドウオブジェクトを指定し、シーン上でそのシャドウオブジェクトを所望の位置まで、例えばコンピュータのマウスを使って所望の位置に「ドラッグアンドドロップ」するなどして移動することにより達成できる。
【００７１】
次に図9を参照すると、本発明によるコンピュータプログラムのグラフィカルユーザインターフェース(GUI)の一例が示されている。このGUIは、シーンからレンダリングされたイメージを表示するためのイメージエリア11を含んでいるが、このイメージエリア11はユーザによって生成されても、コンピュータプログラムにロードされていてもよい。ここで、レンダリングされたイメージは図6に示すイメージのように表示されている。その左側には、一部を参照番号12から14で示した複数のユーザコントロールを含んだGUIが表示されている。これらのコントロールによって、コンピュータプログラムのユーザは、シーンにシャドウオブジェクトを追加する方法、すなわちレンダリングされたイメージのシャドウイングを実施する様々なパラメータを調整することができる。参照番号12は、ユーザに上記のオフセット距離の変更を可能にするユーザコントロールを示す。このコントロールは、GUIでは「距離の調整」という名称で表示されている。参照番号13と14は、それぞれユーザにシーンのシャドウオブジェクトのサイズと不透明度を変更することを可能にするユーザコントロールを示す。ユーザは、それぞれのユーザコントロールの入力テキストフィールドに数値を入力するか、またはそれぞれのユーザコントロール名の前の小三角形をクリックして、パラメータ値を変更するためのスライド式コントロールを表示させることができる。ユーザがパラメータ値を変更すると、コンピュータプログラムは、シーン内の全オリジナルオブジェクト/光源対についてシャドウオブジェクトを自動的に再生成し、そのシーンを新しいイメージに再レンダリングし、その新しいイメージがユーザに対してイメージエリア11に表示される。
【００７２】
図10は、本発明の一実施形態による、シーンにシャドウオブジェクトを追加する一般的な方法を示すフローチャートである。
【００７３】
ステップS1で、光源が選択される。光源は、光源と定義されたアイテムを選ぶことによってコンピュータプログラムにより自動的に選択しても、ユーザが、例えばマウスを使ってシーンのアイテムをクリックすることによって手動で選択してもよい。この方法は次いでステップS2に進む。
【００７４】
ステップS2で、オリジナルオブジェクトが選択される。ステップS1の光源の選択と同様に、オリジナルオブジェクトは、コンピュータプログラムによって自動的に選択しても、ユーザによって手動で選択してもよい。この方法は次いでステップS3に進む。
【００７５】
ステップS3で、シャドウオブジェクトの3D位置が、コンピュータプログラムによって(と言うよりは、コンピュータプログラムの命令に基づきコンピュータによって)、選択されたオリジナルオブジェクトの3D位置と選択された光源の3D位置に基づいて計算される。3D位置が計算されると、その位置でシーンにシャドウオブジェクトが追加される。シャドウオブジェクトの3D位置は、上記の原理のいずれかに従って計算することができる。この方法は次いでステップS4に進む。
【００７６】
ステップS4で、シャドウオブジェクトを追加すべきオリジナルオブジェクトが他にもまだあるかどうかが、現在選択されている光源に基づいて判定される。このステップもまた、自動的にも手動でも実行されうる。このコンピュータプログラムは、例えば、シーンの光源ごとにすべてのオリジナルオブジェクトをループするように構成されうる。現在選択されている光源に基づいて、シャドウオブジェクトを追加すべきオリジナルオブジェクトが他にもまだある場合、この方法はステップS2に戻る。他にはない場合、この方法はステップS5に進む。
【００７７】
ステップS5で、シーン内に他にもまだ光源があるかどうかが判定される。他にも光源がある場合、この方法はステップS1に戻る。他にはない場合、この方法はステップS6に進む。
【００７８】
ステップS6で、シーンがビューアから見たイメージにレンダリングされる。シーンのレンダリングは、当技術分野で知られたいかなる方法でも実行できるが、シーンのシャドウオブジェクトは、上記の原理のいずれかに従ってレンダリングすることが好ましい。イメージがレンダリングされると、この方法は終了する。
【００７９】
本明細書で説明した本発明の様々な実施形態および態様は、完全に矛盾しない限り、任意の想定可能な方法で組み合わせられうることを理解されたい。
本明細書に記載の発明は、以下の態様を含む。
態様1:コンピュータ生成シーン1のオブジェクト2、20に自動的にシャドウを付ける方法であって、
第1のオリジナルオブジェクト2、20の3次元(3D)位置と第1の光源3、30の3D位置とに基づいてシャドウオブジェクト5、50の第1の3D位置を計算するステップと、
前記第1の3D位置で前記シーン1にシャドウオブジェクト5、50を追加するステップと
を含む方法。
態様2:前記第1の3D位置は、前記シャドウオブジェクト5、50が、光源から見て前記第1のオブジェクト2、20の背後の、前記第1のオブジェクト2、20からオフセット距離doffsetの位置に配置されるように計算される態様1に記載の方法。
態様3:前記シャドウオブジェクト5、50が2次元(2D)オブジェクトである態様1または2のいずれかに記載の方法。
態様4:前記シャドウオブジェクト5、50が縁の滑らかな円である態様3に記載の方法。
態様5:前記シャドウオブジェクト5、50の不透明度を一定の不透明度値に設定し、かつ/または前記シャドウオブジェクト5、50の色を一定の色値に設定するステップをさらに含む態様2から4のいずれかに記載の方法。
態様6:前記不透明度値および/または色値が前記オフセット距離doffsetに基づいて計算される態様5に記載の方法。
態様7:前記シャドウオブジェクト5、50のサイズを一定のサイズ値に設定するステップをさらに含む態様2から6のいずれかに記載の方法。
態様8:前記サイズ値が前記第1のオリジナルオブジェクト2、20のサイズに基づいて計算される態様7に記載の方法。
態様9:前記サイズ値が、前記第1の光源3、30と前記第1のオリジナルオブジェクト2、20の間の距離に基づいて計算される態様7または8に記載の方法。
態様10:前記オフセット距離doffsetが前記第1のオリジナルオブジェクト2、20のサイズに基づいて計算される態様2から9のいずれかに記載の方法。
態様11:前記オフセット距離doffsetが、前記光源から見て前記第1のオブジェクト2、20、20Aの背後に位置する第2のオブジェクト20Bの3D位置に基づいて計算される態様2から10のいずれかに記載の方法。
態様12:前記オフセット距離doffsetが、事前設定されたパラメータまたはユーザが自分のコンピュータに入力したユーザ指定のパラメータである態様2から9のいずれかに記載の方法。
態様13:前記シーン1を、ビューア4、40から見て奥から手前に向かって順番にイメージにレンダリングするステップをさらに含み、前記レンダリングは、前記シャドウオブジェクト5、50のピクセルごとに、対応する相手先バッファピクセルのアルファ値を変更せずに、ピクセルを相手先バッファピクセルに合成することによって行われる態様1から12のいずれかに記載の方法。
態様14:前記レンダリングが、前記シャドウオブジェクト5、50のピクセルごとに、前記シャドウオブジェクトピクセルのアルファ値に輝度値を乗じ、対応する相手先バッファピクセルのアルファを変更せずに、前記シャドウオブジェクトピクセルを相手先バッファピクセルに合成することによって行われ、
前記輝度値が、前記シャドウオブジェクトピクセルの奥行きと前記対応する相手先バッファピクセルの奥行きの間の距離、すなわち本明細書でそれらピクセル間の奥行き差[DD]距離と称する距離に相関する態様13に記載の方法。
態様15:DD距離が一定の閾値を超える場合に前記輝度値が0に設定され、前記閾値は、本明細書でMax_DD_距離と称するパラメータによって与えられる態様14に記載の方法。
態様16:前記輝度値が、
DD距離 > Max_DD_距離の場合は0に設定され、
DD距離 ≦ Max_DD_距離の場合は(Max_DD_距離 - DD距離) / Max_DD_距離に設定される
態様15に記載の方法。
態様17:すべての方法ステップが、前記シーン1のオブジェクト/光源対ごとに反復される態様1から16のいずれかに記載の方法。
態様18:前記シャドウオブジェクト5、50が前記第1の3D位置に追加された後に、前記オフセット距離doffset、および/または前記シャドウオブジェクト5、50の不透明度、色、および/または形状に対するユーザの変更希望を示すユーザ生成パラメータを入力パラメータとするステップと、
新しいオフセット距離doffsetおよび/または前記シャドウオブジェクト5、50の新しい輝度値、および/または新しい色値、および/または新しい形状を前記入力パラメータに基づいて計算するステップと、
前記シャドウオブジェクト5、50のプロパティを前記計算の結果に基づいて移動し、かつ/または変更するステップとをさらに含む態様1から17のいずれかに記載の方法。
態様19:前記オリジナルオブジェクト2、20がパーティクルアニメーションシステムの1つのパーティクルである態様1から18のいずれかに記載の方法。
態様20:プロセッシングユニットと、少なくとも1つの第1のオリジナルオブジェクト2、20および少なくとも1つの第1の光源3、30を含むシーン1を生成することのできるグラフィカルレンダリングユニットとを備えた装置のためのコンピュータプログラムであって、
プロセッシングユニットによって実行された場合に、装置に態様1から19のいずれかの方法を実行させるコンピュータ可読コードを含むコンピュータプログラム。
態様21:コンピュータプログラム製品であって、コンピュータ可読媒体と、前記コンピュータ可読媒体に記憶された、態様20に記載のコンピュータプログラムであるコンピュータ可読コードとを含むコンピュータプログラム製品。
態様22:計算手段と、少なくとも1つの第1のオリジナルオブジェクト2、20および少なくとも1つの第1の光源3、30を含むシーン1を生成することのできるグラフィカルレンダリングユニットとを備えた装置であって、
前記第1のオリジナルオブジェクト2、20の3D位置と前記第1の光源3、30の3D位置とに基づいてシャドウオブジェクト5、50の第1の3D位置を計算し、
前記第1の3D位置で前記シーン1にシャドウオブジェクト5、50を追加するように構成された装置。
【符号の説明】
【００８０】
doffset  オフセット距離
1  シーン
2  オリジナルオブジェクト
3  光源
4  ビューア
5  シャドウオブジェクト
20  オリジナルオブジェクト
30  光源
40  ビューア
50  シャドウオブジェクト
【図１】
0005531093.tif 000002
【図２】
0005531093.tif 000003
【図３】
0005531093.tif 000004
【図４】
0005531093.tif 000005
【図５】
0005531093.tif 000006
【図６】
0005531093.tif 000007
【図７】
0005531093.tif 000008
【図８】
0005531093.tif 000009
【図９】
0005531093.tif 000010
【図１０】
0005531093.tif 000011