(57)【特許請求の範囲】
【請求項１】
３Ｄコンピュータグラフィックスにおける影（Ｌｓ）の発生処理で、Ｚバッファ方式またはそれに準じる方式により描画対象となる描画空間内の立体（ＡＢＣＤ）の描画を終えた後に、描画空間に存在する立体（ＡＢＣＤ）を構成するすべてのポリゴン（ＡＢＣ、ＡＣＤ、ＡＤＢ）のうち光（Ｌ）に対して裏となるポリゴン（ＡＢＣ）について影（Ｌｓ）の発生処理を行う過程において、
ポリゴン（ＡＢＣ）の各頂点（Ａ、Ｂ、Ｃ）を光（Ｌ）のベクトル方向に描画空間の境界に移動させ、ポリゴン（ＡＢＣ）の影空間として立体（ＡＢＣＰＱＲ）を形成するとともに、この立体（ＡＢＣＰＱＲ）を構成する各面について、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の裏の面の範囲の輝度を定値（Ｋ）だけ加算して明るくし、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の表の面の範囲の輝度を定値（Ｋ）だけ減算して暗くする処理をすることによって、
立体（ＡＢＣＰＱＲ）の影空間内にポリゴン（α）が存在しないとき、立体（ＡＢＣＰＱＲ）の各面の輝度を（Ｋ−Ｋ＝０）によりもとのままの状態とし、また立体（ＡＢＣＰＱＲ）の影空間内にポリゴン（α）が存在するとき、描画時に視点（Ｅ）に対してポリゴン（α）より奥にある立体（ＡＢＣＰＱＲ）の面（隠面消去の領域）の輝度に対する定値（Ｋ）の加算を無効とすることにより、ポリゴン（α）より視点（Ｅ）に対して手前にある立体（ＡＢＣＰＱＲ）の面、すなわち視点（Ｅ）に対して表の面の範囲にある輝度を結果的に定値（Ｋ）だけ減算する処理とし、表現上、ポリゴン（ＡＢＣ）の影（Ｌｓ）がポリゴン（α）に投影されている状態と同等とすることで、高速かつ正確にポリゴン（α）にポリゴン（ＡＢＣ）の影（Ｌｓ）を描画し、
ある陰面のポリゴン（ＡＢＣ）が他のポリゴン（ＥＦＧ）の影空間としての立体（ＥＦＧＳＴＵ）と干渉するとき、立体（ＡＢＣＤ）の描画を終えた段階で、ある陰面のポリゴン（ＡＢＣ）についての陰面処理後の輝度の変更を禁止しておくことにより、他のポリゴン（ＥＦＧ）の影付け処理によってある陰面のポリゴン（ＡＢＣ）での輝度の低下を防止することを特徴とする３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法。
【請求項２】
３Ｄコンピュータグラフィックスにおける光（Ｌ）による光照射域（Ｌｉ）の発生処理で、Ｚバッファ方式またはそれに準じる方式により描画対象となる描画空間内の立体の描画を終えた後に、描画空間に存在する立体を構成するすべてのポリゴンのうち、光（Ｌ）を通過させるポリゴン（ＡＢＣ）について光照射域（Ｌｉ）の発生処理を行う過程において、
ポリゴン（ＡＢＣ）の各頂点（Ａ、Ｂ、Ｃ）を光（Ｌ）のベクトル方向に描画対象となる描画空間の境界に移動させ、ポリゴン（ＡＢＣ）による光照射空間として立体（ＡＢＣＰＱＲ）を形成するとともに、この立体（ＡＢＣＰＱＲ）を構成する各面について、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の裏の面の範囲の輝度を定値（Ｋ）だけ減算して暗くし、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の表の面の範囲の輝度を定値（Ｋ）だけ加算して明るくする処理をすることによって、
立体（ＡＢＣＰＱＲ）の光照射空間内にポリゴン（α）が存在しないとき、立体（ＡＢＣＰＱＲ）の各面の輝度を（Ｋ−Ｋ＝０）によりそのままの状態とし、また立体（ＡＢＣＰＱＲ）の光照射空間内にポリゴン（α）が存在するとき、描画時に視点（Ｅ）に対してポリゴン（α）より奥にある立体（ＡＢＣＰＱＲ）の面（隠面消去の領域）の輝度に対する定値（Ｋ）の減算を無効とすることにより、ポリゴン（α）より視点（Ｅ）に対して手前にある立体（ＡＢＣＰＱＲ）の面、すなわち視点（Ｅ）に対して表の面の範囲にある輝度を結果的に定値（Ｋ）だけ加算する処理とし、表現上、ポリゴン（ＡＢＣ）による光照射域（Ｌｉ）がポリゴン（α）に投影されている状態と同等とすることで、高速かつ正確にポリゴン（α）にポリゴン（ＡＢＣ）からの光（Ｌ）の光照射域（Ｌｉ）を描画し、
あるポリゴン（ＡＢＣ）が他の光（Ｌ）を通過させるポリゴン（ＥＦＧ）の光照射空間としての立体（ＥＦＧＳＴＵ）と干渉するとき、立体（ＡＢＣＤ）の描画を終えた段階で、あるポリゴン（ＡＢＣ）についての輝度処理後の輝度の変更を禁止しておくことにより、他のポリゴン（ＥＦＧ）の光照射域（Ｌｉ）の処理によって、あるポリゴン（ＡＢＣ）での輝度の上昇を防止することを特徴とする３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３Ｄ（三次元）コンピュータグラフィックスにおいて、光による物体の影の輝度、または窓などからの光による物体の光照射域の輝度を高速かつ正確に描画する方法に関する。
【０００２】
【従来の技術】
３Ｄコンピュータグラフィックスにおいて用いられる影の描画は、影を落とす可能性のある光に対して裏側のすべてのポリゴンについて、光に対し表側で影の落ちる可能性のあるポリゴンを含む平面に、ポリゴンを投影する処理により行われている。
【０００３】
従来の方法で、影を描画するには、描画対象となるポリゴンの数の二乗に比例する量のベクトル演算を必要とした。演算に必要な計算は、初期の変換用の行列式を作式するときを除き、乗除算および加減算のみであり、それらの乗除算および加減算自体の負荷は、コンピュータに対して大きくない。
【０００４】
しかし、一般に、全計算量が膨大となるため、リアルタイムで描画が必要なインタラクティブな表現のときには、演算に必要な時間的な制約から、影を描画しているものでも、地面などの平面に落ちる影のみの描画が一般的に行われ、複雑な形状の立体にリアルタイムで影を正確に落とすことはもとより、擬似的にでも影を落とすことさえ、実現できていなかった。
【０００５】
また、窓から入射する光や、透明体を透過して室内などに入射する光は、床、壁、複雑な形状の立体を照射して、周囲の輝度よりも高い輝度の光照射域を形成する。この光照射域は、周囲の輝度よりも低い輝度の影に対して、逆の関係にあり、上記の影と同様の理由により、簡単な演算により、描画できない。
【０００６】
特許出願人は、特許第３２６８２９３号（特開２００２−２４８５４）「３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法」の発明により、光による物体の影の範囲や、光による物体の光照射域を少なく簡単な演算により、表示装置上に高速で正確に描画する技術を既に提案している。なお、上記の発明は、米国でも米国特許６，７５０，８６３号として特許されている。
【０００７】
その技術は、３Ｄコンピュータグラフィックスにおける影（Ｌｓ）の発生処理で、Ｚバッファ方式またはそれに準じる方式により描画対象となる描画空間内の立体（ＡＢＣＤ）の描画を終えた後に、描画空間に存在する立体（ＡＢＣＤ）を構成するすべてのポリゴン（ＡＢＣ、ＡＣＤ、ＡＤＢ）のうち光（Ｌ）に対して裏となるポリゴン（ＡＢＣ）について影（Ｌｓ）の発生処理を行う過程において、下記の特徴な処理を実行する。
【０００８】
すなわち、３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法は、ポリゴン（ＡＢＣ）の各頂点（Ａ、Ｂ、Ｃ）を光のベクトル方向に描画空間の境界に移動させ、ポリゴン（ＡＢＣ）の影空間として立体（ＡＢＣＰＱＲ）を形成するとともに、この立体（ＡＢＣＰＱＲ）を構成する各面について、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の裏の面の範囲の輝度を定値（Ｋ）だけ加算して明るくし、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の表の面の範囲の輝度を定値（Ｋ）だけ減算して暗くする処理をする。
【０００９】
この処理により、立体（ＡＢＣＰＱＲ）の影空間内にポリゴン（α）が存在しないとき、立体（ＡＢＣＰＱＲ）の各面の輝度は、（Ｋ−Ｋ＝０）により変化のない状態となる。
【００１０】
また、立体（ＡＢＣＰＱＲ）の影空間内にポリゴン（α）が存在するとき、描画時に視点（Ｅ）に対してポリゴン（α）より奥にある立体（ＡＢＣＰＱＲ）の面は、隠面消去により描画処理されず、隠面消去の領域の輝度を定値（Ｋ）だけ明るくならない。このため、ポリゴン（α）より視点（Ｅ）に対して手前にある立体（ＡＢＣＰＱＲ）の面、すなわち視点（Ｅ）に対して表の面の範囲にある輝度は、結果的に定値（Ｋ）だけ減算する処理ととなり、表現上、ポリゴン（ＡＢＣ）の影（Ｌｓ）がポリゴン（α）に投影されている状態と同等となる。
【００１１】
このようにして、影空間としての立体（ＡＢＣＰＱＲ）の空間内で、ポリゴン（ＡＢＣ）の影（Ｌｓ）は、簡単な輝度の調整計算により、ポリゴン（α）に高速かつ正確に描画できることになる。
【００１２】
影空間としての立体（ＡＢＣＰＱＲ）内に、複数のポリゴン（α）が存在しているとき、輝度の調整を視点（Ｅ）に対して裏から表への順に行い、輝度の調整幅を一段階とし、その範囲を超えたときには、輝度の減算値を定値（Ｋ）のみとする。これにより、影（Ｌｓ）の範囲の輝度が必要以上に低くならない。
【００１３】
視点（Ｅ）が影空間としての立体（ＡＢＣＰＱＲ）内に入っていて、視点（Ｅ）に対して表の面が存在しないとき、例外的に表の面が視界を覆っている状態として処理する。これによって、上記の特殊な態様でも、同様な影処理が可能となる。
【００１４】
影空間としての立体（ＡＢＣＰＱＲ）内の隣接するポリゴン（α）のどちらにも影（Ｌｓ）を落とすとき、隣接するポリゴン（α）の共有する辺の影の処理を省略することにより、演算時間がより短くなる。
【００１５】
一方、前記のように、窓や透明体などから入射する光（Ｌ）は、床、壁、天井、その他の複雑な形状の立体を照射して、周囲の輝度よりも高い輝度の光照射域（Ｌｉ）を形成する。この光照射域（Ｌｉ）は、周囲の輝度よりも低い輝度の影（Ｌｓ）に対し、逆の関係にある。上記の影（Ｌｓ）の描画過程において、ポリゴン（ＡＢＣ）を窓または透明体とすれば、立体（ＡＢＣＰＱＲ）は、入射する光（Ｌ）の光照射空間となる。そして、光（Ｌ）の光照射空間としての立体（ＡＢＣＰＱＲ）の各面に影（Ｌｓ）の描画時と異なる符号により輝度の調整を施せば、窓や透明体から入射する光（Ｌ）により、周囲の輝度よりも高い輝度の光照射域（Ｌｉ）がポリゴン（α）に高速かつ正確に描画できる。
【００１６】
具体的に記載すれば、３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法は、３Ｄコンピュータグラフィックスにおける光（Ｌ）による光照射域（Ｌｉ）の発生処理で、Ｚバッファ方式またはそれに準じる方式により描画対象となる描画空間内の立体の描画を終えた後に、描画空間に存在する立体を構成するすべてのポリゴンのうち、光（Ｌ）を通過させるポリゴン（ＡＢＣ）について光照射域（Ｌｉ）の発生処理を行う過程において、下記の特徴な処理を実行する。
【００１７】
すなわち、３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法は、光（Ｌ）を通過させるポリゴン（ＡＢＣ）の各頂点（Ａ、Ｂ、Ｃ）を光（Ｌ）のベクトル方向に描画対象となる描画空間の境界に移動させ、ポリゴン（ＡＢＣ）による光照射空間として立体（ＡＢＣＰＱＲ）を形成するとともに、この立体（ＡＢＣＰＱＲ）を構成する各面について、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の裏の面の範囲の輝度を定値（Ｋ）だけ減算して暗くし、描画するときの視点（Ｅ）から見て、立体（ＡＢＣＰＱＲ）の表の面の範囲の輝度を定値（Ｋ）だけ加算して明るくする処理をする。
【００１８】
輝度の加算処理または減算処理によって、立体（ＡＢＣＰＱＲ）の光照射空間内にポリゴン（α）が存在しないとき、立体（ＡＢＣＰＱＲ）の各面の輝度は、（Ｋ−Ｋ＝０）により変化のない状態となる。また、立体（ＡＢＣＰＱＲ）の光照射空間内にポリゴン（α）が存在するとき、描画時に視点（Ｅ）に対してポリゴン（α）より奥にある立体（ＡＢＣＰＱＲ）の面は、隠面消去により描画処理されず、隠面消去の領域の輝度を定値（Ｋ）だけ暗くしないことにより、ポリゴン（α）より視点（Ｅ）に対して手前にある立体（ＡＢＣＰＱＲ）の面、すなわち視点（Ｅ）に対して表の面の範囲にある輝度は、結果的に定値（Ｋ）だけ加算する処理となり、表現上、ポリゴン（ＡＢＣ）による光照射域（Ｌｉ）がポリゴン（α）に投影されている状態と同等となる。
【００１９】
このようにして、光照射空間としての立体（ＡＢＣＰＱＲ）の空間内で、ポリゴン（ＡＢＣ）からの光（Ｌ）の光照射域（Ｌｉ）は、簡単な輝度の調整計算により、ポリゴン（α）に高速かつ正確に描画できることになる。  光照射空間としての立体（ＡＢＣＰＱＲ）に、複数のポリゴン（α）が存在しているとき、輝度の調整を視点（Ｅ）に対して表から裏への順に行い、輝度の調整幅を一段階とし、その範囲を超えたときには、輝度の加算値を定値（Ｋ）のみとすれば、光照射域（Ｌｉ）の範囲の輝度が必要以上に高くならなくなる。
【００２０】
視点（Ｅ）が光照射空間としての立体（えＢＣＲＱＰ）内に入っていて、視点（Ｅ）に対して表の面が存在しないとき、例外的に表の面が視界を覆っている状態として処理することにより、上記の特殊な態様でも、同様な光照射域（Ｌｉ）の処理が可能となる。
【００２１】
光照射空間としての立体（ＡＢＣＰＱＲ）内の隣接するポリゴン（α）のどちらにも光照射域（Ｌｉ）を発生すとき、ポリゴン（α）の共有する辺の光照射域（Ｌｉ）の処理を省略することにより、演算時間がより短くなる。
【００２２】
【発明が解決しようとする課題】
ところで、前記の影の処理や光照射空間の処理を画一的に行うと、ある陰面のポリゴン（ＡＢＣ）での輝度の低下が異常に低下したり、あるポリゴン（ＡＢＣ）での輝度が異常に上昇したりする。 従って本発明の課題は、前記の処理によって、ある部分の輝度の異常な低下や上昇を防止することである。
【００２３】
【課題を解決するための手段】
上記の課題のもとに、本発明の方法は、ある陰面のポリゴン（ＡＢＣ）が他のポリゴン（ＥＦＧ）の影空間としての立体（ＥＦＧＰＱＲ）と干渉するとき、立体（ＡＢＣＤ）の描画を終えた段階で、ある陰面のポリゴン（ＡＢＣ）についての陰面処理後の輝度の変更を禁止しておくことにより、他のポリゴン（ＥＦＧ）の影付け処理によって、ある陰面のポリゴン（ＡＢＣ）での輝度の低下が防止でき、初期の輝度での立体（ＡＢＣＤ）の描画状態が保持できる。
【００２４】
また、本発明の方法は、あるポリゴン（ＡＢＣ）が他の光（Ｌ）を通過させるポリゴン（ＥＦＧ）の光照射空間としての立体（ＥＦＧＳＴＵ）と干渉するとき、立体（ＡＢＣＤ）の描画を終えた段階で、あるポリゴン（ＡＢＣ）についての輝度処理後の輝度の変更を禁止しておくことにより、他のポリゴン（ＥＦＧ）の光照射域（Ｌｉ）の処理によって、あるポリゴン（ＡＢＣ）での輝度の上昇を防止でき、初期の輝度での立体（ＡＢＣＤ）の描画状態が保持できる。
【００２５】
【発明の実施の形態】
図１は、本発明の３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法を実行するためのシステムを示している。入力器１は、キーボードや専用の描画器具などであり、インターフェース２を介してＣＰＵ３に接続されている。このＣＰＵ３は、入力器１からの指令にもとづいて、ディスクドライブ４からインターフェース２を介して、本発明の３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法のプログラムのほか、各種のプログラムを読み込んで、メモリ５に記憶するか、またはメモリ５に予め格納されているプログラムを読み出して、表示コントローラ６を介して表示装置としてのディスプレイ７により立体図形を表示する。
【００２６】
図２は、一例として無限遠方からの平行な光Ｌによって、もっとも単純な四面体の立体ＡＢＣＤの影Ｌｓをポリゴンαの一部に形成する例を示す。また、図３は、本発明の３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法にもとづく影発生処理のフローチャートを示している。
【００２７】
まず、オペレータは、図３の影発生処理のプログラムを開始し、Ｚバッファ方式またはＺバッファ方式に準じる方式により、描画対象となる描画空間内で、影Ｌｓの発生処理をしないまま、立体ＡＢＣＤの描画を終えた後に、ＣＰＵ３に本発明の３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法にもとづいて、影Ｌｓの発生処理を指令する。なお、描画時に作成されたＺバッファ内の内容は、影Ｌｓの描画時に参照用として使用される。
【００２８】
影発生処理のプログラムは、描画空間に存在する立体ＡＢＣＤを構成するすべてのポリゴンＡＢＣ、ポリゴンＡＣＤ、ポリゴンＡＤＢについて、光Ｌに対して表か裏かの判定を行う。この表か裏かの判定は、すべてのポリゴンＡＢＣ、ポリゴンＡＣＤ、ポリゴンＡＤＢについて、ポリゴン面の法線ベクトルと光Ｌの方向ベクトルとの内積をとることにより実行する。
【００２９】
立体ＡＢＣＰＱＲの各面について、法線ベクトルの向きを立体ＡＢＣＰＱＲの外側とすれば、視点Ｅを中心とした座標系について、奥方向をＺ軸の正方向と考えれば、立体ＡＢＣＰＱＲの面の法線ベクトルのＺ成分が正の場合に視点に対して裏、負の場合に視点に対して表となる。
【００３０】
したがって、ポリゴン面の法線ベクトルと光Ｌの方向ベクトルとの内積の値が正の場合は、着目したポリゴン面は、光Ｌに対して表を向いている。図２の例によれば、ポリゴンＡＣＤ、ポリゴンＡＤＢが光Ｌに対して表を向いていから、これらのポリゴンＡＣＤ、ポリゴンＡＤＢについて、影Ｌｓの発生処理は、不要となる。このため、影発生処理のプログラムは、ポリゴンＡＣＤ、ポリゴンＡＤＢについて、影Ｌｓの発生処理を実行せず、次のポリゴン面の処理に進む。
【００３１】
ポリゴン面の法線ベクトルと光Ｌの方向ベクトルとの内積の値が負の場合は、着目したポリゴン面は、光Ｌに対して裏を向いていることになる。図２の例によれば、ポリゴンＡＢＣが光Ｌに対して裏を向いていから、ポリゴンＡＢＣについて、影Ｌｓの発生処理が必要となる。そこで、影発生処理のプログラムは、光Ｌに対して裏となるポリゴンＡＢＣについて、影Ｌｓの発生処理を行う。
【００３２】
影の発生処理のプログラムは、ポリゴンＡＢＣの各頂点Ａ、Ｂ、Ｃを平行な光Ｌのベクトル方向に描画対象となる描画空間の境界に移動させ、ポリゴンＡＢＣの影空間として三角柱の立体ＡＢＣＰＱＲを形成する。なお、点光源であれば、影空間としての立体ＡＢＣＰＱＲは、三角錘台となる。
【００３３】
つぎに、影発生処理のプログラムは、ポリゴンＡＢＣの影空間としての立体ＡＢＣＰＱＲを構成する各面について、描画するときの視点Ｅから見て、立体ＡＢＣＰＱＲの裏の面の範囲の輝度に、輝度調整用の定値Ｋを加算して、裏の面の範囲の輝度を明るくし、つぎに、描画するときの視点Ｅから見て、立体ＡＢＣＰＱＲの表の面の範囲の輝度から輝度調整用の定値Ｋを減算して、表の面の範囲の輝度を暗くする処理をする。ここで、定値Ｋは、影Ｌｓの輝度レベルに対応して適当な数値として決定される。
【００３４】
この輝度調整の処理により、影空間としての立体ＡＢＣＰＱＲの空間内にポリゴンαが存在しないとき、立体ＡＢＣＰＱＲの各面の輝度は、Ｋ−Ｋ＝０により変化しない。このため、影空間としての立体ＡＢＣＰＱＲの空間内に影Ｌｓは、発生しない。
【００３５】
また、上記の輝度調整の処理により、影空間としての立体ＡＢＣＰＱＲの空間内にポリゴンαの一部または全部が存在するとき、描画時に視点Ｅに対してポリゴンαより奥にある立体ＡＢＣＰＱＲの面ＢＱＲＣの一部、つまり影Ｌｓの範囲は、隠面消去により描画処理されず、輝度を定値Ｋだけ明るくすることにならない。つまり、影Ｌｓの範囲の奥の一部の面ＢＱＲＣでの＋定値Ｋの輝度調整は、無効となる。このため、影Ｌｓの範囲に関して、ポリゴンαより視点Ｅに対して手前にある立体ＡＢＣＰＱＲの面ＡＢＱＰ、すなわち視点Ｅに対して表の面の範囲にある輝度を結果的に−定値Ｋとする処理のみとなり、表現上、ポリゴンＡＢＣの影Ｌｓがポリゴンαに暗く投影されている状態と同等になる。
【００３６】
このことから、影空間としての立体ＡＢＣＰＱＲの空間内で、ポリゴンＡＢＣの影Ｌｓは、簡単な輝度の調整計算により、ポリゴンαに高速かつ正確に描画できることになる。
【００３７】
これで１つのポリゴンＡＢＣの影Ｌｓの処理が終わる。なお、影Ｌｓを落とすポリゴンが２以上あるとき、影発生処理のプログラムは、次のポリゴンの処理に進み、同一の処理を繰り返す。全てのポリゴンの処理が終わったときに、影Ｌｓの描画処理が終了する。
【００３８】
影空間としての立体ＡＢＣＰＱＲに、複数ｎのポリゴンαが存在している場合には、ポリゴンの影Ｌｓの発生したところに影Ｌｓが落ち、重複した処理により定値Ｋがｎ回分減算されてしまう。この矛盾点は、輝度低下の幅を一段階とし、その範囲を超えたときには、輝度の減算を１回の定値Ｋのみとする制限処理により、回避できる。
【００３９】
ただし、輝度調整の順番を裏（明るくする処理）からする必要がある。なぜなら、−定値Ｋの処理状態で、次のポリゴンに処理が移ったとき、表から裏への順であると、−Ｋ−Ｋ＝−２Ｋが−定値Ｋのレベルに制限処理された後に、＋定値Ｋのレベルに調整されるので、±０になり、影の効果がなくなってしまうからである。これに対して、裏から表への順であれば、−定値Ｋに＋定値Ｋとされ（＝０）、その後、−定値Ｋのレベルに調整されるので、−定値Ｋの状態が保存されることになる。
【００４０】
視点Ｅが立体ＡＢＣＰＱＲ内に入っている場合は、視点Ｅに対して表の面は存在しないが、例外的に表の面が視界を覆っている状態として処理する。
【００４１】
立体ＡＢＣＰＱＲ内の隣接するポリゴンαのどちらも影Ｌｓを落とす場合、共有する辺の影Ｌｓの処理は、省略することができる。なぜなら、それぞれの影空間は、同一の面を共有し、一方が輝度を明るくすれば、必ず他方は輝度を暗くするので、処理上、無意味な処理になるからである。
【００４２】
次に、図４は、一例として点光源からの放射状の光Ｌのもとで、窓や透明体などからの入射する光Ｌによって、光照射域Ｌｉをポリゴンαの一部に形成する例を示す。既述のように、窓や透明体などからの入射する光Ｌは、床、壁、天井、複雑な形状の立体などを照射して、立体の面に周囲の輝度よりも高い輝度の光照射域Ｌｉを形成する。この光照射域Ｌｉは、周囲の輝度よりも低い輝度の影Ｌｓに対して、逆の関係にある。
【００４３】
したがって、前記の影Ｌｓの描画において、ポリゴンＡＢＣが窓または透明体と仮定すれば、立体ＡＢＣＰＱＲは、入射する光Ｌの光照射空間となる。この光照射空間としての立体ＡＢＣＰＱＲの各面に影Ｌｓの描画時と異なる正、負の符号により輝度の調整を施せば、窓や透明体から入射する光Ｌにより、周囲の輝度よりも高い輝度の光照射域Ｌｉがポリゴンαに高速かつ正確に描画できる。
【００４４】
この光照射域発生処理でも、光照射空間としての立体ＡＢＣＰＱＲに、複数のポリゴンαが存在しているとき、輝度の調整を視点Ｅに対して表から裏への順に行い、輝度の調整幅を一段階とし、その範囲を超えたときには、輝度の加算値を定値Ｋのみとする。
【００４５】
また、視点Ｅが光照射空間としての立体ＡＢＣＰＱＲ内に入っていて、視点Ｅに対して表の面が存在しないとき、例外的に表の面が視界を覆っている状態として処理する。
【００４６】
さらに、光照射空間としての立体ＡＢＣＰＱＲ内の隣接するポリゴンαのどちらにも光照射域Ｌｉが発生するとき、ポリゴンαの共有する辺の光照射域Ｌｉの処理を省略する。
【００４７】
ちなみに、影付け処理や、光照射域の処理において、光源が複数ある場合は、光源毎に全ての輝度調整を行い、その輝度調整の結果を光源の明るさや色彩によって調整する。
【００４８】
また、視点が複数ある場合、それぞれの視点毎に、輝度調整の処理を行い、最後に合わせて調整する。
【００４９】
輝度調整時に使用するＺバッファは、通常の描画時に作成したＺバッファをそのまま使用する。輝度調整時においては、Ｚバッファを参照するが、更新はしないように設定する。
【００５０】
さらに、輝度調整時に、可能であれば、通常の描画時に作成したフレームバッファ（Ｆ１）をそのまま使用し、更新することが処理を高速にできるが、別に、初期化したフレームバッファ（Ｆ２）を新しく用意し、これを輝度調整時に使用して、一連の処理が終了した後、これをテクスチャーとして、フレームバッファ（Ｆ１）にそのままフイルターとして使用することにより、さらに輝度の調整が可能となる。
【００５１】
ところで、図５は、ある陰面のポリゴンＡＢＣが他のポリゴンＥＦＧの影空間としての立体ＥＦＧＳＴＵと干渉するときの状態を示している。このような状態で、他のポリゴンＥＦＧの影付け処理が実行されると、ポリゴンＥＦＧについて、輝度調整用の立体ＥＦＧＳＴＵの各面の輝度調整によって、あるポリゴンＡＢＣのうち、干渉域としての三角形ＨＩＪの輝度は、Ｚバッファ方式にもとづいて定値Ｋだけ低下し、変更されたままとなり、初期設定の輝度値でなくなる。
【００５２】
このような不都合な輝度の変化は、立体ＡＢＣＤの描画を終えた段階で、ある陰面となるポリゴンＡＢＣや、他の陰面となるポリゴンＥＦＧのように、光Ｌの方向ベクトルと面の法線ベクトルの内積が正のときには、その面への輝度の調整を禁止しておくことにより、防止できる。したがって、ある陰面となるポリゴンＡＢＣや、他の陰面となるポリゴンＥＦＧの輝度は、立体ＡＢＣＤの陰面処理後の影付け処理によっても、変化せず、初期の輝度値を保持する。この輝度の調整の禁止により、従来の陰の発生する面ＡＢＣの輝度調整の必要が無くなり、その分、処理の高速化が図られる。
【００５３】
上記のような不都合な輝度の変化の現象は、光照射域Ｌｉの発生処理の過程でも、輝度の定値Ｋだけ上昇となって現れる。すなわち、図示しないが、図４および図５を想定して、あるポリゴンＡＢＣが他の光Ｌを通過させるポリゴンＥＦＧの光照射空間としての立体ＥＦＧＳＴＵと干渉するとき、プログラムは、立体ＡＢＣＤの描画を終えた段階で、あるポリゴンＡＢＣについての輝度処理後の輝度の変更を禁止しておくことにより、他のポリゴンＥＦＧの光照射域Ｌｉの処理によって、あるポリゴンＡＢＣでの輝度の上昇を防止する。
【００５４】
以上の一連の輝度調整の方法は、フラットシェーディングにおいて精密な描画を実現するが、スムースシェーディングに拡張して、応用することもできる。図６は、ポリゴンＡＢＣについてスムースシェーディングを実行するときの例を示す。
【００５５】
ポリゴンＡＢＣの各頂点の法線ベクトルと光Ｌの方向ベクトルとの内積をそれぞれ求め、３頂点の全てが同じ符号で、符号が正のときには、フラットシェーディングと同様の処理をし、３頂点の全てが同じ符号でないときは、ポリゴンＡＢＣを、補間された頂点の法線ベクトルと光Ｌの方向ベクトルとの内積の符号が同じになるような２つの三角形、または１つの三角形と１つの四角形の２つの図形に分割して、面の法線ベクトルと光Ｌの方向ベクトルとの内積が正の図形についてフラットシェーディングと同様の処理を行う。このとき、四角形がこれに該当する場合は、それを２つの三角形に分割してそれぞれ処理を行う。
【００５６】
頂点の法線ベクトルと光Ｌの方向ベクトルとの内積の符号について、０のときはどちらにも含めない。例えば、２頂点が正で、１頂点が０の場合は、３頂点が同一の符号として扱う。スムースシェーディングを施した場合に、ポリゴンＡＢＣ内の点で、法線ベクトルと光の方向ベクトルとの内積が正になる部分は、図６の網掛けの部分ａＢｃである。
【００５７】
【発明の効果】
本発明の効果は、３Ｄコンピュータグラフィックスにおいて、光による物体の影の範囲、または窓などから入射する光の光照射域を正確かつ高速に描画ができるため、３Ｄグラフィックツール使用時のオペレーターの待ち時間を短縮することができ、また、インタラクティブな表示を行うときに、今まで実現できなかった光による物体の影の範囲の描画、または窓などから入射する光による光照射域の描画を正確に行うことにより、よりリアルな表現が実現できる。
【００５８】
影空間または光照射空間としての立体内に、複数のポリゴンが存在しているとき、輝度の調整を視点に対して裏、表の順を特定して、輝度の調整を行い、輝度の調整幅を一段階とし、その範囲を超えたときには、輝度の調整値を一定の値のみとすることにより、影の範囲の輝度が必要以上に低くならず、また、光照射域の輝度が必要以上に高くならなくなる。
【００５９】
視点が影空間または光照射空間としての立体内に入っていて、視点に対して表の面が存在しないとき、例外的に表の面が視界を覆っている状態として処理することによって、上記の特殊な態様でも、同様な影処理や光照射域の処理が可能となる。
【００６０】
影空間または光照射空間としての立体内の隣接するポリゴンのどちらにも影や光照射域が発生するとき、隣接するポリゴンの共有する辺の影の処理を省略することにより、演算時間がより短くできる。
【００６１】
特に、あるポリゴンが他のポリゴンの影空間または光照射空間としての立体と干渉するとき、立体の描画を終えた段階で、あるポリゴンについての輝度処理後の輝度の変更を禁止しておくことにより、他のポリゴンの影付けの処理または光照射域の処理によって、あるポリゴンでの輝度の低下や上昇を防止でき、これによって初期の輝度での立体の描画状態が保持できる。
【図面の簡単な説明】
【図１】  ３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法を実行するためのシステムのブロック線図である。
【図２】  ３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法により影を発生するときの説明図である。
【図３】  ３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法により影を発生するときのフローチャート図である。
【図４】  ３Ｄコンピュータグラフィックスにおける光による輝度の高速調整方法により光照射域を発生するときの説明図である。
【図５】  図５は、ある陰面のポリゴンＡＢＣが他のポリゴンＥＦＧの影空間としての立体ＥＦＧＳＴＵと干渉するときの状態の説明図である。
【図６】  図６は、ポリゴンＡＢＣについてスムースシェーディングを実行するときの例の説明図である。
【符号の説明】
１  入力器
２  インターフェース
３  ＣＰＵ
４  ディスクドライブ
５  メモリ
６  表示コントローラ
７  ディスプレイ
α  ポリゴン
Ｌ  光
Ｌｓ  影
Ｌｉ  光照射域
Ｅ  視点
Ｋ  輝度調整用の定値
ＡＢＣ  ポリゴン
ＡＣＤ  ポリゴン
ＡＤＢ  ポリゴン
ＥＦＧ  ポリゴン
Ａ、Ｂ、Ｃ  頂点
Ｅ、Ｆ、Ｇ  頂点
ＡＢＣＰＱＲ  影空間としての立体または光照射空間としての立体
ＥＦＧＳＴＵ  影空間としての立体または光照射空間としての立体
【図１】
0004439692.tif 000002
【図２】
0004439692.tif 000003
【図３】
0004439692.tif 000004
【図４】
0004439692.tif 000005
【図５】
0004439692.tif 000006
【図６】
0004439692.tif 000007