JP2645620B2 - シェーディング画像を生成する装置およびその生成方法 - Google Patents
シェーディング画像を生成する装置およびその生成方法Info
- Publication number
- JP2645620B2 JP2645620B2 JP3181578A JP18157891A JP2645620B2 JP 2645620 B2 JP2645620 B2 JP 2645620B2 JP 3181578 A JP3181578 A JP 3181578A JP 18157891 A JP18157891 A JP 18157891A JP 2645620 B2 JP2645620 B2 JP 2645620B2
- Authority
- JP
- Japan
- Prior art keywords
- cos
- polygon
- shading
- image
- vertex
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
- G06T15/83—Phong shading
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Analysis (AREA)
Description
【0001】
【産業上の利用分野】本発明の方法及び装置はコンピュ
ータ生成画像の生成の分野に関し、特に、コンピュータ
生成画像のシェーディングに関する。
ータ生成画像の生成の分野に関し、特に、コンピュータ
生成画像のシェーディングに関する。
【0002】
【従来の技術】通常、デジタル画像を生成するコンピュ
ータグラフィックスシステムにおいては、オブジェクト
の表面を複数の平坦な多角形(ポリゴン)から成る網目
模様として表すそれらの多角形は周知の方式を利用して
迅速に変換、描出することが可能である。その方式は、
入力が単純な三角形であると仮定するもので、図1に示
すように、この三角形の頂点の属性は位置と、法線と、
色である。頂点の位置は、たとえば、オブジェクト座標
空間で規定される。頂点法線は、各頂点における面の向
きを表す単位ベクトルである。頂点の色はオブジェクト
の固有色を指定する。頂点色属性によって、オブジェク
トの色を三角形の中で徐々に変化させることができる。
ータグラフィックスシステムにおいては、オブジェクト
の表面を複数の平坦な多角形(ポリゴン)から成る網目
模様として表すそれらの多角形は周知の方式を利用して
迅速に変換、描出することが可能である。その方式は、
入力が単純な三角形であると仮定するもので、図1に示
すように、この三角形の頂点の属性は位置と、法線と、
色である。頂点の位置は、たとえば、オブジェクト座標
空間で規定される。頂点法線は、各頂点における面の向
きを表す単位ベクトルである。頂点の色はオブジェクト
の固有色を指定する。頂点色属性によって、オブジェク
トの色を三角形の中で徐々に変化させることができる。
【0003】コンピュータグラフィックス表示装置にオ
ブジェクトのリアルな画像を生成するためには、オブジ
ェクトの形状を生成するだけではなく、光源,面の特性
と位置、そして、面の向きと光源の向きを考慮にいれ
て、オブジェクトの目に見える面のシェーディングを取
り入れることが必要である。画像のシェーディングを確
定するに当たり、3つの反射関数の組み合わせを使用し
ても良い。それら3つの反射関数とは、周囲反射と、拡
散反射と、鏡面反射である。周囲反射は、オブジェクト
が任意の光源から吸収し、次に放射する光を示す。光の
方向とは全く無関係である。周囲反射関数は単にオブジ
ェクトの色をスケーリングするだけである。たとえば、
赤,緑,青の周囲重みをKar,Kag,Kab とすると
き、周囲反射の関数は次のように表されるであろう:
ブジェクトのリアルな画像を生成するためには、オブジ
ェクトの形状を生成するだけではなく、光源,面の特性
と位置、そして、面の向きと光源の向きを考慮にいれ
て、オブジェクトの目に見える面のシェーディングを取
り入れることが必要である。画像のシェーディングを確
定するに当たり、3つの反射関数の組み合わせを使用し
ても良い。それら3つの反射関数とは、周囲反射と、拡
散反射と、鏡面反射である。周囲反射は、オブジェクト
が任意の光源から吸収し、次に放射する光を示す。光の
方向とは全く無関係である。周囲反射関数は単にオブジ
ェクトの色をスケーリングするだけである。たとえば、
赤,緑,青の周囲重みをKar,Kag,Kab とすると
き、周囲反射の関数は次のように表されるであろう:
【0004】 lar = Kar *Cr lag = Kag *Cg lab = Kab *Cb 式中、lar,lag,lab はそれぞれ赤,緑,青の色
成分の周囲反射であり、Kar,Kag,Kabは赤,
緑,青の色成分の周囲重みであり、Cr,Cg,Cbは
オブジェクトの赤,緑,青の各成分のオブジェクト色、
すなわち色の強さである。周囲重みの範囲は次の通りで
ある。 0≦Kar≦1,0≦Kag≦1,0≦Kab≦1
成分の周囲反射であり、Kar,Kag,Kabは赤,
緑,青の色成分の周囲重みであり、Cr,Cg,Cbは
オブジェクトの赤,緑,青の各成分のオブジェクト色、
すなわち色の強さである。周囲重みの範囲は次の通りで
ある。 0≦Kar≦1,0≦Kag≦1,0≦Kab≦1
【0005】尚、周囲重み Kar,Kag,Kab と、
以下に示す拡散重み Kdr,Kdg,Kdb は実際には
2つの項の積である。第1の項はその成分の光の強さを
表す。第2の項はオブジェクトの面がその成分を反射す
る能力を表す。いずれの項もシーンの幾何学的構成には
左右されないので、ここでは2つの項を重みに組み合わ
せる。シーンが複数の光源を含む場合には、光源ごとに
別個の重みが付されることになる。
以下に示す拡散重み Kdr,Kdg,Kdb は実際には
2つの項の積である。第1の項はその成分の光の強さを
表す。第2の項はオブジェクトの面がその成分を反射す
る能力を表す。いずれの項もシーンの幾何学的構成には
左右されないので、ここでは2つの項を重みに組み合わ
せる。シーンが複数の光源を含む場合には、光源ごとに
別個の重みが付されることになる。
【0006】くもったつや消し面は拡散反射を示し、あ
らゆる方向に均等に光を散乱するので、面はあらゆる観
察角度から同じ輝度を有するように見える。そのような
面の場合、図2に示すように、反射光の量と点光源に向
かう方向Lと面に対する垂直ベクトルNとが成す角度α
の余弦との関係はランベルトの余弦法則に従って定めら
れる。拡散反射は次の式により表されるであろう: Iar = cos(α)*Kdr *Cr Iag = cos(α)*Kdg *Cg Iab = cos(α)*Kdb *Cb 式中、cos(α)はN・Lに等しく(拡散反射は正でな
ければならないので、cos(α)の計算には、cos(α)
=max(cos(α),0)であることが必要である)、I
dr,Idg,Idb はそれぞれ赤,緑,青の各成分の拡
散反射値であり、Kdr,Kdg,Kdb は光源の赤,
緑,青の各成分の拡散反射係数(0から1までの定数で
あり、面の材質によって異なる)であり、Cr,Cg,C
b は面の赤,緑,青の各成分の色である。
らゆる方向に均等に光を散乱するので、面はあらゆる観
察角度から同じ輝度を有するように見える。そのような
面の場合、図2に示すように、反射光の量と点光源に向
かう方向Lと面に対する垂直ベクトルNとが成す角度α
の余弦との関係はランベルトの余弦法則に従って定めら
れる。拡散反射は次の式により表されるであろう: Iar = cos(α)*Kdr *Cr Iag = cos(α)*Kdg *Cg Iab = cos(α)*Kdb *Cb 式中、cos(α)はN・Lに等しく(拡散反射は正でな
ければならないので、cos(α)の計算には、cos(α)
=max(cos(α),0)であることが必要である)、I
dr,Idg,Idb はそれぞれ赤,緑,青の各成分の拡
散反射値であり、Kdr,Kdg,Kdb は光源の赤,
緑,青の各成分の拡散反射係数(0から1までの定数で
あり、面の材質によって異なる)であり、Cr,Cg,C
b は面の赤,緑,青の各成分の色である。
【0007】鏡面反射は光沢のある面で見られる光彩
(ハイライト)である。Bui Tuong -Phong が開発した
モデルは、鏡面反射を、図2に示すように視点に向かう
ベクトルVと、最大反射とアライメントするベクトルR
とが成す角度の余弦の関数として変調する(B.T.Phong
「Illumination for Computer Generated Images」,博
士論文,ソルトレークシティ,ユタ大学コンピュータサ
イエンス学部,政府発注番号AD−A0008−786
(1973年7月))。周囲反射、拡散反射及び鏡面反
射の詳細については、Foley 及び Van Dam の Fundamen
tals of Interact ive Computer Graphics (Addison We
sley, 1983年刊)の575〜580ページと、Coo
k 及び Torrance の「A Reflectance Model For Comput
er Graphics」,Computer Graphics 第15巻第3号
(1981年8月刊)とをさらに参照。
(ハイライト)である。Bui Tuong -Phong が開発した
モデルは、鏡面反射を、図2に示すように視点に向かう
ベクトルVと、最大反射とアライメントするベクトルR
とが成す角度の余弦の関数として変調する(B.T.Phong
「Illumination for Computer Generated Images」,博
士論文,ソルトレークシティ,ユタ大学コンピュータサ
イエンス学部,政府発注番号AD−A0008−786
(1973年7月))。周囲反射、拡散反射及び鏡面反
射の詳細については、Foley 及び Van Dam の Fundamen
tals of Interact ive Computer Graphics (Addison We
sley, 1983年刊)の575〜580ページと、Coo
k 及び Torrance の「A Reflectance Model For Comput
er Graphics」,Computer Graphics 第15巻第3号
(1981年8月刊)とをさらに参照。
【0008】反射の量は加法によって求められる。すな
わち、3つの別個の光源が1つの面に光を当てる場合、
その面における反射の量は、光源ごとの反射の量を確定
し、光源ごとに確定された反射の量を加算することによ
り計算されるのである。反射の型と反射の量を確定する
ときには、異なる種類の光源があることを認識すべきで
ある。光までの距離が無限である解を仮定すると、1つ
の事例が起こる。光源についての仕様は以下に示す単純
な光のベクトルに換算される。
わち、3つの別個の光源が1つの面に光を当てる場合、
その面における反射の量は、光源ごとの反射の量を確定
し、光源ごとに確定された反射の量を加算することによ
り計算されるのである。反射の型と反射の量を確定する
ときには、異なる種類の光源があることを認識すべきで
ある。光までの距離が無限である解を仮定すると、1つ
の事例が起こる。光源についての仕様は以下に示す単純
な光のベクトルに換算される。
【0009】L=Lx,Ly,Lz 光ベクトルの大きさは、 |L|=sqrt(LX2+Ly2+Lz2) に等しく、無限光源の場合、|L|の値は1に等しい。
【0010】光までの距離は有限であるが、放射パター
ンが等方性である解を仮定した場合には別の事例が起こ
る。従って、光はあらゆる方向に同じ強さを放射する。
この場合の光源の仕様は光位置: Q=Qx,Qy,Qz に換算される。光ベクトル、すなわち、頂点位置Px,
Py,Pzに対する光位置は、 L=Qx−Px,Qy−Py,Qz−Pz となる。そのLの大きさは次の通りである: |L|=sqrt((Qx−Px)2+(Qy−Py)2+(Qz−Pz)2)
ンが等方性である解を仮定した場合には別の事例が起こ
る。従って、光はあらゆる方向に同じ強さを放射する。
この場合の光源の仕様は光位置: Q=Qx,Qy,Qz に換算される。光ベクトル、すなわち、頂点位置Px,
Py,Pzに対する光位置は、 L=Qx−Px,Qy−Py,Qz−Pz となる。そのLの大きさは次の通りである: |L|=sqrt((Qx−Px)2+(Qy−Py)2+(Qz−Pz)2)
【0011】大きさは1になってはならず、照度の式に
は単位ベクトルが要求されるので、光ベクトルは次のよ
うに正規化される: L=(Qx−Px)/|L|,(Qy−Py)/|L|, (Qz−Pz)/|L|
は単位ベクトルが要求されるので、光ベクトルは次のよ
うに正規化される: L=(Qx−Px)/|L|,(Qy−Py)/|L|, (Qz−Pz)/|L|
【0012】放射パターンが等方性ではない場合には、
さらに別の事例が起こる。放射パターンは等方性ではな
いので、光源の仕様は放射パターン関数を指定する次の
ようなパターンベクトルを必要とする: K=Kx,Ky,Kz パターンベクトルは、光の強さが最大となる方向を表す
働きをする。そこで、オブジェクトに当たる光は、光ベ
クトルLとパターンベクトルKとが成す角度が大きくな
るにつれて減少する。パターン関数を取り入れる以前の
光ベクトルは先に示した通りである: L=(Qx−Px)/|L|,(Qy−Py)/|L|, (Qz−Pz)/|L| そのLの大きさは次の通りである: |L|=sqrt((Qx−Px)2+(Qy−Py)2+(Qz−Pz)2) 光の強さを光ベクトルと、パターンベクトルとが成す角
度の関数として調整するパターン関数は、多くの場合、
次のようになる: cos(κ)=Kx*Lx+Ky*Ly+Kz*Lz 光ベクトルはこの値を吸収し、その結果: L=cos(κ)*Lx,cos(κ)*Ly,cos(κ)*Lz となる。
さらに別の事例が起こる。放射パターンは等方性ではな
いので、光源の仕様は放射パターン関数を指定する次の
ようなパターンベクトルを必要とする: K=Kx,Ky,Kz パターンベクトルは、光の強さが最大となる方向を表す
働きをする。そこで、オブジェクトに当たる光は、光ベ
クトルLとパターンベクトルKとが成す角度が大きくな
るにつれて減少する。パターン関数を取り入れる以前の
光ベクトルは先に示した通りである: L=(Qx−Px)/|L|,(Qy−Py)/|L|, (Qz−Pz)/|L| そのLの大きさは次の通りである: |L|=sqrt((Qx−Px)2+(Qy−Py)2+(Qz−Pz)2) 光の強さを光ベクトルと、パターンベクトルとが成す角
度の関数として調整するパターン関数は、多くの場合、
次のようになる: cos(κ)=Kx*Lx+Ky*Ly+Kz*Lz 光ベクトルはこの値を吸収し、その結果: L=cos(κ)*Lx,cos(κ)*Ly,cos(κ)*Lz となる。
【0013】コンピュータグラフィックスシステムは、
画像の湾曲した面を、なめらかな外観を回復するために
シェーディングされた複数の平坦な多角形から成る網目
模様として表すのが普通である。システムは、多角形に
沿って強さを変化させることによりなめらかな外観を回
復しようとする。多角形をリアルにシェーディングする
ための方法はあるが、実時間システムの場合、画素ごと
に大量の計算が要求されるため、そのような方法は採用
されていない。実行できる最も単純なシェーディング計
算は、拡散光に関するランベルトの法則に従う拡散反射
の計算である。しかしながら、この計算はあらゆる観察
方向からの反射の輝度が同じであることを前提としてい
る。単純な拡散の式は面の物理的属性、たとえば、粗さ
係数に関してそのまま反射の式になるわけではないの
で、式は反射を近似するにすぎない。一例を挙げれば、
式は、光が金属性の面に当たるときにその入射角に伴っ
て波長がどのようにシフトできるかを表していないので
ある。この波長のシフトは色を変化させる。さらに、単
純な拡散の式は、面から面へ光がいかに散乱してゆくか
を考慮していない。
画像の湾曲した面を、なめらかな外観を回復するために
シェーディングされた複数の平坦な多角形から成る網目
模様として表すのが普通である。システムは、多角形に
沿って強さを変化させることによりなめらかな外観を回
復しようとする。多角形をリアルにシェーディングする
ための方法はあるが、実時間システムの場合、画素ごと
に大量の計算が要求されるため、そのような方法は採用
されていない。実行できる最も単純なシェーディング計
算は、拡散光に関するランベルトの法則に従う拡散反射
の計算である。しかしながら、この計算はあらゆる観察
方向からの反射の輝度が同じであることを前提としてい
る。単純な拡散の式は面の物理的属性、たとえば、粗さ
係数に関してそのまま反射の式になるわけではないの
で、式は反射を近似するにすぎない。一例を挙げれば、
式は、光が金属性の面に当たるときにその入射角に伴っ
て波長がどのようにシフトできるかを表していないので
ある。この波長のシフトは色を変化させる。さらに、単
純な拡散の式は、面から面へ光がいかに散乱してゆくか
を考慮していない。
【0014】また、最も単純な形態の拡散反射は、小平
面、すなわち多角形の面全体にわたり反射が一定である
ことを前提としている。これは計算するのが簡単なので
あるが、多くの場合、多角形の境界で強さはとぎれる。
実時間で画像のシェーディングを実行するさらに良い方
法をグロー(Gourdud)シェーディングという。グロー
シェーディング方式によれば、各点の強さを多角形の頂
点の強さの線形補間により計算する。それらの強さは、
頂点に垂線を引いた上で拡散反射に関する反射式を使用
して確定される。グローシェーディングの詳細について
は、H.Gourand の「Continuous Shading of Curved Sur
faces」(IEEE Transactions on Computers 第20巻第
6号、623〜628ページ(1971年6月刊))を
参照。しかしながら、この方式は拡散反射しか考慮して
いないために、この方式によってシェーディングした面
はくもって見える。その上、不連続の強さ変化により、
画像は多角形の境界でマッハ帯域を反射することがあ
る。
面、すなわち多角形の面全体にわたり反射が一定である
ことを前提としている。これは計算するのが簡単なので
あるが、多くの場合、多角形の境界で強さはとぎれる。
実時間で画像のシェーディングを実行するさらに良い方
法をグロー(Gourdud)シェーディングという。グロー
シェーディング方式によれば、各点の強さを多角形の頂
点の強さの線形補間により計算する。それらの強さは、
頂点に垂線を引いた上で拡散反射に関する反射式を使用
して確定される。グローシェーディングの詳細について
は、H.Gourand の「Continuous Shading of Curved Sur
faces」(IEEE Transactions on Computers 第20巻第
6号、623〜628ページ(1971年6月刊))を
参照。しかしながら、この方式は拡散反射しか考慮して
いないために、この方式によってシェーディングした面
はくもって見える。その上、不連続の強さ変化により、
画像は多角形の境界でマッハ帯域を反射することがあ
る。
【0015】フォン(Phong)シェーディング方式は光
沢のない面を照明して、グローシェーディング方式で発
生するマッハ帯域を減少させるが、画像の生成に多くの
計算時間と高いコストを要するという理由により、実時
間システムでは利用されないのが普通である。この方式
によれば、頂点で指定される真の面法線から線形補間さ
れる近似面法線を使用して、各点の強さを確定する。フ
ォンシェーディング方式では、多角形に対する法線を補
間するために選択した頂点をそれぞれA,B,Cとし
て、式N(x,y)=Ax+By+Cを利用していた。
フォンシェーディングの式は画素ごとに7回の加算と、
6回の乗算と、1回の除算と、1つの平方根とを必要と
する。この演算は、特に平方根の計算を含んでいるため
に、非常にコスト高であると共に、長時間を要する。フ
ォンシェーディングの詳細については、B.T.Phong の
「Illumination for Computer Generated Images」(博
士論文,ソルトレークシティ,ユタ大学コンピュータサ
イエンス学部,政府発注番号AD−A0008−78
6)を参照。
沢のない面を照明して、グローシェーディング方式で発
生するマッハ帯域を減少させるが、画像の生成に多くの
計算時間と高いコストを要するという理由により、実時
間システムでは利用されないのが普通である。この方式
によれば、頂点で指定される真の面法線から線形補間さ
れる近似面法線を使用して、各点の強さを確定する。フ
ォンシェーディング方式では、多角形に対する法線を補
間するために選択した頂点をそれぞれA,B,Cとし
て、式N(x,y)=Ax+By+Cを利用していた。
フォンシェーディングの式は画素ごとに7回の加算と、
6回の乗算と、1回の除算と、1つの平方根とを必要と
する。この演算は、特に平方根の計算を含んでいるため
に、非常にコスト高であると共に、長時間を要する。フ
ォンシェーディングの詳細については、B.T.Phong の
「Illumination for Computer Generated Images」(博
士論文,ソルトレークシティ,ユタ大学コンピュータサ
イエンス学部,政府発注番号AD−A0008−78
6)を参照。
【0016】Tom Duff は、「Smoothly Shaded Renderi
ngs of Polyhedral Object on Raster Displays」(ACM
Computer Graphics 第13巻第2号,270〜275
ページ(1979年刊))に記載されているように、フ
ォンシェーディングの計算を簡略化した。Duffは、補間
と反射式とを次のように組み合わせることによりフォン
シェーディングを簡略化した:
ngs of Polyhedral Object on Raster Displays」(ACM
Computer Graphics 第13巻第2号,270〜275
ページ(1979年刊))に記載されているように、フ
ォンシェーディングの計算を簡略化した。Duffは、補間
と反射式とを次のように組み合わせることによりフォン
シェーディングを簡略化した:
【0017】
【数1】
【0018】すなわち、この実現形態では、xとyの連
続する値について画素ごとに3回の加算と、1回の除算
と、1つの平方根のみにより評価を行うことができる。
これはフォンの公式を改善したものであるが、除算と平
方根の計算を必要とするために、実時間システムに適用
するには計算時間及びコストの面で依然として問題があ
る。
続する値について画素ごとに3回の加算と、1回の除算
と、1つの平方根のみにより評価を行うことができる。
これはフォンの公式を改善したものであるが、除算と平
方根の計算を必要とするために、実時間システムに適用
するには計算時間及びコストの面で依然として問題があ
る。
【0019】フォンシェーディングのさらに別の実現形
態においては、反射式の近似式を計算することにより、
反射式を正確に計算するために必要な時間とコストを節
約している。Weimer の「Fast Phong Shading」(Compu
ter Graphics 第20巻第4号(1986年刊)、10
3〜105ページ)では、反射を計算するために二次の
テイラー級数近似を使用する。近似を簡略にするため、
(0,0)座標が多角形の中心に位置するように多角形
をシフトさせる。この方式を利用すると、1つの画素の
強さを画素ごとに2回の加算を実行するだけで評価でき
る。
態においては、反射式の近似式を計算することにより、
反射式を正確に計算するために必要な時間とコストを節
約している。Weimer の「Fast Phong Shading」(Compu
ter Graphics 第20巻第4号(1986年刊)、10
3〜105ページ)では、反射を計算するために二次の
テイラー級数近似を使用する。近似を簡略にするため、
(0,0)座標が多角形の中心に位置するように多角形
をシフトさせる。この方式を利用すると、1つの画素の
強さを画素ごとに2回の加算を実行するだけで評価でき
る。
【0020】ところが、上記の全ての方式は1つの画像
のあらゆる多角形の反射を確定するために同じ関数を使
用している。画像の多角形の一部について、複雑で、長
時間を要するプロセスを使用して所望の画質レベルでそ
の反射を確定することしかできない場合、全ての多角形
は同じプロセスを使用して処理される。すなわち、画質
の良い画像を描出するために、大多数の多角形の反射を
より単純で高速のプロセスを使用して確定できると思わ
れるにもかかわらず、複雑で長時間を要するプロセスを
採用して、その画像の所望の画質を得ることになるので
ある。
のあらゆる多角形の反射を確定するために同じ関数を使
用している。画像の多角形の一部について、複雑で、長
時間を要するプロセスを使用して所望の画質レベルでそ
の反射を確定することしかできない場合、全ての多角形
は同じプロセスを使用して処理される。すなわち、画質
の良い画像を描出するために、大多数の多角形の反射を
より単純で高速のプロセスを使用して確定できると思わ
れるにもかかわらず、複雑で長時間を要するプロセスを
採用して、その画像の所望の画質を得ることになるので
ある。
【0021】
【発明が解決しようとする課題】本発明の目的は、シェ
ーディング画像の生成のための実時間方式を提供するこ
とである。本発明の目的は、画像をシェーディングする
ための方式が面の湾曲と 、 面に沿った光ベクトルの変化
と、面に沿った視線ベクトルの変化とに従って確定され
るような画像のシェーディングのための適応方法を提供
することである。
ーディング画像の生成のための実時間方式を提供するこ
とである。本発明の目的は、画像をシェーディングする
ための方式が面の湾曲と 、 面に沿った光ベクトルの変化
と、面に沿った視線ベクトルの変化とに従って確定され
るような画像のシェーディングのための適応方法を提供
することである。
【0022】
【課題を解決するための手段】本発明の方法及び装置に
おいては、シェーディング画像を実時間で生成するため
に適応シェーディング方式を利用する。まず、多角形の
それぞれの頂点で色、又は強さを計算する。次に、一連
の試験すなわち吟味を実行して、多角形に沿って頂点間
で色又は強さを補間するために使用すべき式の次数を確
定する。この方式を使用すると、湾曲がわずかであるか
又は全くなく、無限の光源を有する多角形(すなわち、
最も単純な形態のシェーディング)は、多角形に沿った
補間を実行するために、きわめて高速の低次の式を使用
する。湾曲が大きく及び/又は位置の定まった光源を有
する多角形は、必要に応じて、計算時間を余分にとるが
所望のシェーディング効果を発生する高次の式を利用す
る。
おいては、シェーディング画像を実時間で生成するため
に適応シェーディング方式を利用する。まず、多角形の
それぞれの頂点で色、又は強さを計算する。次に、一連
の試験すなわち吟味を実行して、多角形に沿って頂点間
で色又は強さを補間するために使用すべき式の次数を確
定する。この方式を使用すると、湾曲がわずかであるか
又は全くなく、無限の光源を有する多角形(すなわち、
最も単純な形態のシェーディング)は、多角形に沿った
補間を実行するために、きわめて高速の低次の式を使用
する。湾曲が大きく及び/又は位置の定まった光源を有
する多角形は、必要に応じて、計算時間を余分にとるが
所望のシェーディング効果を発生する高次の式を利用す
る。
【0023】本発明の目的、特徴及び利点は、以下の本
発明の説明から明白になるであろう。 〔表記法及び用語〕以下の詳細な説明の大半は、コンピ
ュータメモリの内部におけるデータビットの操作をアル
ゴリズム及び記号表示によって表している。そのような
アルゴリズムによる説明や表示は、データ処理技術の分
野に熟達する人がその作業の内容を同じ分野の等業者に
最も有効に伝達するために使用する手段である。
発明の説明から明白になるであろう。 〔表記法及び用語〕以下の詳細な説明の大半は、コンピ
ュータメモリの内部におけるデータビットの操作をアル
ゴリズム及び記号表示によって表している。そのような
アルゴリズムによる説明や表示は、データ処理技術の分
野に熟達する人がその作業の内容を同じ分野の等業者に
最も有効に伝達するために使用する手段である。
【0024】ここでは、また、一般にも、アルゴリズム
は所望の結果に至る首尾一貫した一連のステップである
と考えられている。それらのステップは、物理的な量の
物理的操作を要求するステップである。通常、それらの
量は記憶,転送,組み合わせ,比較及びその他の方法に
よる操作が可能な電気的信号又は磁気信号の形態をとる
が、必ずしもそうであるとは限らない。時によっては、
主に一般に使用されている用語であるという理由によ
り、それらの信号をビット,値,要素,記号,文字,
項,数などと呼ぶと好都合であることが判明する。しか
しながら、そのような用語及びそれに類する用語は全て
適切な物理的な量と関連させるべきものであり、単にそ
れらの量に便宜上付されたラベルであるにすぎないとい
うことを忘れてはならない。
は所望の結果に至る首尾一貫した一連のステップである
と考えられている。それらのステップは、物理的な量の
物理的操作を要求するステップである。通常、それらの
量は記憶,転送,組み合わせ,比較及びその他の方法に
よる操作が可能な電気的信号又は磁気信号の形態をとる
が、必ずしもそうであるとは限らない。時によっては、
主に一般に使用されている用語であるという理由によ
り、それらの信号をビット,値,要素,記号,文字,
項,数などと呼ぶと好都合であることが判明する。しか
しながら、そのような用語及びそれに類する用語は全て
適切な物理的な量と関連させるべきものであり、単にそ
れらの量に便宜上付されたラベルであるにすぎないとい
うことを忘れてはならない。
【0025】さらに、実行される操作を、オペレータが
実行する知的動作と一般には関連している加算又は比較
などの用語で呼ぶ場合が多いが、本発明の一部を成す、
ここで説明する動作のいずれにおいてもそのようなオペ
レータの能力は不要であり、多くの場合に望ましくな
い。動作は機械の動作である。本発明の動作を実行する
のに有用な機械には、汎用デジタルコンピュータ又はそ
れに類する他の装置がある。いずれの場合にも、コンピ
ュータを動作させる際の方法動作と、計算それ自体の方
法との明確な区別に留意すべきである。本発明は、電気
的信号又はその他の物理的(たとえば、機械的,化学
的)信号を処理して、他の所望の物理的信号を発生する
に際してコンピュータを動作させるための方法ステップ
に関する。
実行する知的動作と一般には関連している加算又は比較
などの用語で呼ぶ場合が多いが、本発明の一部を成す、
ここで説明する動作のいずれにおいてもそのようなオペ
レータの能力は不要であり、多くの場合に望ましくな
い。動作は機械の動作である。本発明の動作を実行する
のに有用な機械には、汎用デジタルコンピュータ又はそ
れに類する他の装置がある。いずれの場合にも、コンピ
ュータを動作させる際の方法動作と、計算それ自体の方
法との明確な区別に留意すべきである。本発明は、電気
的信号又はその他の物理的(たとえば、機械的,化学
的)信号を処理して、他の所望の物理的信号を発生する
に際してコンピュータを動作させるための方法ステップ
に関する。
【0026】本発明は、また、このような動作を実行す
る装置にも関する。この装置は要求される目的に合わせ
て特別に構成されても良いが、汎用コンピュータに記憶
させたコンピュータプログラムによりコンピュータを選
択的に動作させるか又は再構成しても良い。ここに提示
するアルゴリズムは、本来、特定のコンピュータ又は他
の装置に関連するものではない。すなわち、ここに示す
教示に従って書き込まれたプログラムと共に様々な汎用
機械を使用できるのである。あるいは、所要の方法ステ
ップを実行するためには、さらに特殊化した装置を構成
するほうがより好都合であると判明するかもしれない。
そのような種々の機械について要求される構造は以下の
説明から明白になるであろう。
る装置にも関する。この装置は要求される目的に合わせ
て特別に構成されても良いが、汎用コンピュータに記憶
させたコンピュータプログラムによりコンピュータを選
択的に動作させるか又は再構成しても良い。ここに提示
するアルゴリズムは、本来、特定のコンピュータ又は他
の装置に関連するものではない。すなわち、ここに示す
教示に従って書き込まれたプログラムと共に様々な汎用
機械を使用できるのである。あるいは、所要の方法ステ
ップを実行するためには、さらに特殊化した装置を構成
するほうがより好都合であると判明するかもしれない。
そのような種々の機械について要求される構造は以下の
説明から明白になるであろう。
【0027】
【実施例】システム全般の構成 図4は、本発明による多角形の適応画像シェーディング
のための代表的なコンピュータベースシステムを示す。
図4に示す通り、コンピュータ101は3つの主要な構
成要素を含む。その第1のものは、コンピュータ101
のその他の部分との間で適切に構造化された形態をとる
情報を通信し合うために使用される入出力(I/O)回
路102である。また、中央処理装置(CPU)103
と、メモリ104もコンピュータ101の一部として示
されている。これら2つの構成要素は大半の汎用コンピ
ュータや、ほぼ全ての専用コンピュータで通常見られる
ものである。実際には、コンピュータ101の中に含ま
れるいくつかの構成要素はこの広い意味でのデータプロ
セッサを表すものである。コンピュータ101の役割を
果たすのに適するデータプロセッサの特定の例として
は、カリフォルニア州マウンテンビューの Sun Microsy
stems, Inc. が製造している機械がある。それと同じよ
うな能力を有する他のコンピュータを下記の機能を実行
するように適応させるのが簡単であることは言うまでも
ない。
のための代表的なコンピュータベースシステムを示す。
図4に示す通り、コンピュータ101は3つの主要な構
成要素を含む。その第1のものは、コンピュータ101
のその他の部分との間で適切に構造化された形態をとる
情報を通信し合うために使用される入出力(I/O)回
路102である。また、中央処理装置(CPU)103
と、メモリ104もコンピュータ101の一部として示
されている。これら2つの構成要素は大半の汎用コンピ
ュータや、ほぼ全ての専用コンピュータで通常見られる
ものである。実際には、コンピュータ101の中に含ま
れるいくつかの構成要素はこの広い意味でのデータプロ
セッサを表すものである。コンピュータ101の役割を
果たすのに適するデータプロセッサの特定の例として
は、カリフォルニア州マウンテンビューの Sun Microsy
stems, Inc. が製造している機械がある。それと同じよ
うな能力を有する他のコンピュータを下記の機能を実行
するように適応させるのが簡単であることは言うまでも
ない。
【0028】図4には入力装置105がさらに示されて
いるが、この典型的な実施例では、入力装置105はキ
ーボードである。ただし、入力装置は実際にはカード読
み取り装置、磁気テープ読み取り装置又は紙テープ読み
取り装置、あるいは他の周知の入力装置(当然のことな
がら別のコンピュータを含む)であっても良い。I/O
回路102に結合している大容量メモリ106は、コン
ピュータ101にさらに大きな記憶能力を与える。大容
量メモリは他のプログラムなどを記憶していても良く、
また、磁気テープ読み取り装置又は紙テープ読み取り装
置、あるいは他の周知の装置の形態を取っていても良
い。大容量メモリ106に保持されているデータを場合
に応じてメモリ104の一部としてコンピュータ101
に標準的な方式によって取り入れても良いことは理解さ
れるであろう。
いるが、この典型的な実施例では、入力装置105はキ
ーボードである。ただし、入力装置は実際にはカード読
み取り装置、磁気テープ読み取り装置又は紙テープ読み
取り装置、あるいは他の周知の入力装置(当然のことな
がら別のコンピュータを含む)であっても良い。I/O
回路102に結合している大容量メモリ106は、コン
ピュータ101にさらに大きな記憶能力を与える。大容
量メモリは他のプログラムなどを記憶していても良く、
また、磁気テープ読み取り装置又は紙テープ読み取り装
置、あるいは他の周知の装置の形態を取っていても良
い。大容量メモリ106に保持されているデータを場合
に応じてメモリ104の一部としてコンピュータ101
に標準的な方式によって取り入れても良いことは理解さ
れるであろう。
【0029】さらに図示されている表示モニター107
は、メッセージ又は他の通信内容並びに図形画像、たと
えば、本発明のプロセスに従って描出されるシェーディ
ング画像をユーザーに対して表示するために使用され
る。表示モニターは画素と呼ばれる複数の表示要素のマ
トリクスから構成されており、表示装置に図形画像を表
示するときには、それらの画素を特定のパターンに従っ
て所定の強さでイネーブル、すなわちターンオンする。
表示装置がカラーモニターである場合には、基本色要
素、たとえば、赤,緑,青の色要素のそれぞれについ
て、画素を特定のパターンに従って所定の強さでイネー
ブルする。表示された画像を観察するときは、各画素の
赤,緑,青の要素を視覚により組み合わせて、カラー画
像を知覚する。このような表示モニターはいくつかの周
知の種類のCRT表示装置の中のいずれかの形態をとっ
ていれば良い。図形画像データはフレームバッファ10
8に供給される。I/O回路102はフレームバッファ
108から図形画像データを読み取り、表示モニター1
07のその図形画像データにより指定される位置にある
対応する画素を指定の強さでイネーブルする。カーソル
制御装置109は指令モードを選択し且つ入力データを
編集する目的で使用され、一般には、システムに情報を
入力するためのより便利な手段を構成する。
は、メッセージ又は他の通信内容並びに図形画像、たと
えば、本発明のプロセスに従って描出されるシェーディ
ング画像をユーザーに対して表示するために使用され
る。表示モニターは画素と呼ばれる複数の表示要素のマ
トリクスから構成されており、表示装置に図形画像を表
示するときには、それらの画素を特定のパターンに従っ
て所定の強さでイネーブル、すなわちターンオンする。
表示装置がカラーモニターである場合には、基本色要
素、たとえば、赤,緑,青の色要素のそれぞれについ
て、画素を特定のパターンに従って所定の強さでイネー
ブルする。表示された画像を観察するときは、各画素の
赤,緑,青の要素を視覚により組み合わせて、カラー画
像を知覚する。このような表示モニターはいくつかの周
知の種類のCRT表示装置の中のいずれかの形態をとっ
ていれば良い。図形画像データはフレームバッファ10
8に供給される。I/O回路102はフレームバッファ
108から図形画像データを読み取り、表示モニター1
07のその図形画像データにより指定される位置にある
対応する画素を指定の強さでイネーブルする。カーソル
制御装置109は指令モードを選択し且つ入力データを
編集する目的で使用され、一般には、システムに情報を
入力するためのより便利な手段を構成する。
【0030】プロセスの説明 本発明においては、多角形の面に沿ってシェーディング
の量を確定するためのステップを多角形の湾曲と、多角
形の面に関する光源の位置と、視点の位置、すなわち、
多角形の面に関する観察者の目の位置とに適応させる。
多角形の湾曲が大きくなり、多角形に光源がより接近し
且つ視点がより接近するにつれて、多角形の面に沿った
反射の変動は大きくなるので、多角形の面に沿ってシェ
ーディングの量を正確に確定するために要求されるステ
ップの数は多くなる。
の量を確定するためのステップを多角形の湾曲と、多角
形の面に関する光源の位置と、視点の位置、すなわち、
多角形の面に関する観察者の目の位置とに適応させる。
多角形の湾曲が大きくなり、多角形に光源がより接近し
且つ視点がより接近するにつれて、多角形の面に沿った
反射の変動は大きくなるので、多角形の面に沿ってシェ
ーディングの量を正確に確定するために要求されるステ
ップの数は多くなる。
【0031】この観察に基づいて、一貫して高次のシェ
ーディング式を使用することにより高画質の画像を生成
するために必要であった計算上のオーバヘッドとコスト
高を伴わずに、高画質の画像を描出するプロセスを提供
する。多角形に関する湾曲の量と、光源の位置と、視点
の位置とを確定するために一連の試験を実行する。湾曲
の量が最小限であり且つ光源と視点までの距離が長い場
合は、多角形に沿った反射を計算するために高速のゼロ
次の式を使用する。法線ベクトルの変動が小さく、面の
湾曲がほとんどないことが示されたと共に、光ベクトル
の変動と視線ベクトルの変動が小さい場合には、反射の
量は多角形に沿って一定になるので、そのようなゼロ次
の式を使用することが可能なのである。反射の量の変動
が小さいとき、たとえば、反射が256の中の1未満の
割合で変動するときには、観察者はその変動をほとんど
知覚できず、反射が64の中の1未満の割合で変動して
も、その変動はまだとらえにくい。このように、色の変
化を一定の色値によって近似することができる。
ーディング式を使用することにより高画質の画像を生成
するために必要であった計算上のオーバヘッドとコスト
高を伴わずに、高画質の画像を描出するプロセスを提供
する。多角形に関する湾曲の量と、光源の位置と、視点
の位置とを確定するために一連の試験を実行する。湾曲
の量が最小限であり且つ光源と視点までの距離が長い場
合は、多角形に沿った反射を計算するために高速のゼロ
次の式を使用する。法線ベクトルの変動が小さく、面の
湾曲がほとんどないことが示されたと共に、光ベクトル
の変動と視線ベクトルの変動が小さい場合には、反射の
量は多角形に沿って一定になるので、そのようなゼロ次
の式を使用することが可能なのである。反射の量の変動
が小さいとき、たとえば、反射が256の中の1未満の
割合で変動するときには、観察者はその変動をほとんど
知覚できず、反射が64の中の1未満の割合で変動して
も、その変動はまだとらえにくい。このように、色の変
化を一定の色値によって近似することができる。
【0032】多角形に沿った反射の量の変動が大きくな
ったときには、多角形に沿った反射を計算するために高
次の式を使用する。これにより、ゼロ次の式を使用した
のでは得られないような反射のより正確な表示が生成さ
れる。湾曲の量が大きくなり及び/又は光源の位置が近
づいて、多角形の頂点から光源に向かう方向ベクトルが
頂点ごとに異なるようになるにつれて、さらに高次の式
を使用する。この場合、多角形の面に沿って反射の量は
著しく変動して、観察者がその変動を知覚できるように
なり、従って、多角形に沿ったシェーディングの量は一
定ではなくなるので、計算は徹底したものにはなるが、
高画質の画像を描出するためにはさらに高次の式を使用
しなければならない。
ったときには、多角形に沿った反射を計算するために高
次の式を使用する。これにより、ゼロ次の式を使用した
のでは得られないような反射のより正確な表示が生成さ
れる。湾曲の量が大きくなり及び/又は光源の位置が近
づいて、多角形の頂点から光源に向かう方向ベクトルが
頂点ごとに異なるようになるにつれて、さらに高次の式
を使用する。この場合、多角形の面に沿って反射の量は
著しく変動して、観察者がその変動を知覚できるように
なり、従って、多角形に沿ったシェーディングの量は一
定ではなくなるので、計算は徹底したものにはなるが、
高画質の画像を描出するためにはさらに高次の式を使用
しなければならない。
【0033】図5、図6及び図7は、反射を確定するた
めにゼロ次の式及び一次の式を使用するのが適切ではな
い3つの状況を示す。まず、図5に関して説明する。三
角形に沿った面の湾曲は大きいと仮定すると、頂点法線
ベクトルNは変動し、頂点法線ベクトルの頂点光ベクト
ルLへの投影である拡散反射は変動する。このように、
この反射の変動を保存する次の式を選択することが望ま
しい。この例では、一次の式は適切でないと考えられ、
システムは反射をシェーディングするために次に高い次
の式(フォン(Phong)の式)を選択するであろ
う。ただし、厳密にいえば、フォンの式は二次の式では
ない。この方式は、画素ごとに1つの平方根と、1回の
除算とを要求する正規化を含む。しかしながら、文献に
よれば、二次の式はこの解を近似する(Weimerの
「Fast Phong Shading」(Comp
uter Graphics 第20巻第4号(198
6年刊)103〜105ページ)を参照)。そこで、以
下の説明の中では、特に記載のない限り、フォンの式を
二次の式として扱う。
めにゼロ次の式及び一次の式を使用するのが適切ではな
い3つの状況を示す。まず、図5に関して説明する。三
角形に沿った面の湾曲は大きいと仮定すると、頂点法線
ベクトルNは変動し、頂点法線ベクトルの頂点光ベクト
ルLへの投影である拡散反射は変動する。このように、
この反射の変動を保存する次の式を選択することが望ま
しい。この例では、一次の式は適切でないと考えられ、
システムは反射をシェーディングするために次に高い次
の式(フォン(Phong)の式)を選択するであろ
う。ただし、厳密にいえば、フォンの式は二次の式では
ない。この方式は、画素ごとに1つの平方根と、1回の
除算とを要求する正規化を含む。しかしながら、文献に
よれば、二次の式はこの解を近似する(Weimerの
「Fast Phong Shading」(Comp
uter Graphics 第20巻第4号(198
6年刊)103〜105ページ)を参照)。そこで、以
下の説明の中では、特に記載のない限り、フォンの式を
二次の式として扱う。
【0034】図6に示す三角形に湾曲がない、すなわち
頂点法線ベクトルは同一であるが、光源の位置が三角形
の面の真上にあると仮定する。従って、頂点光ベクトル
は変動し、頂点法線ベクトルの頂点光ベクトルへの投影
である拡散反射は変動する。その場合、この変動を保存
する次数の式を選択することになるであるう。
頂点法線ベクトルは同一であるが、光源の位置が三角形
の面の真上にあると仮定する。従って、頂点光ベクトル
は変動し、頂点法線ベクトルの頂点光ベクトルへの投影
である拡散反射は変動する。その場合、この変動を保存
する次数の式を選択することになるであるう。
【0035】図7では、三角形に湾曲はないが、視点の
位置が三角形の面の真上にあると仮定する。従って、頂
点視点ベクトルは変動し、頂点法線ベクトルの頂点視線
ベクトルへの投影である鏡面反射は変動する。本発明の
システムはこの状況を検出して、反射の変動を保存する
次数の式を選択するであろう。
位置が三角形の面の真上にあると仮定する。従って、頂
点視点ベクトルは変動し、頂点法線ベクトルの頂点視線
ベクトルへの投影である鏡面反射は変動する。本発明の
システムはこの状況を検出して、反射の変動を保存する
次数の式を選択するであろう。
【0036】このように、システムは高速で低コストで
はあるが画質の低い計算と、低速でコスト高ではあるが
画質の高い計算との釣合を保つ。高速で低コストの計算
は多角形における反射の量を確定するために使用される
のが好ましいが、多角形の湾曲、光源の位置又は視点の
位置によって、面に沿って大きな反射の変化が生じてい
る場合には、高画質の画像を描出するためにより高い次
数の式を使用する。すなわち、低速でコスト高の高次の
式は必要なときにのみ実行されるのである。湾曲がほと
んどなく、光源までの距離が長く且つ視点までの距離も
長い多角形は、低次の式を使用して、迅速に低コストで
計算される。1つの画像を形成する多角形の大部分はゼ
ロ次又は一次の式を使用して描出可能であることがわか
っている。本発明の適応シェーディングシステムを使用
して描出される画像はさらに高次の式を使用して描出さ
れる画像より20〜50%速く生成され、しかも、画質
の低下はほとんどないか、又は認められるほどではな
い。
はあるが画質の低い計算と、低速でコスト高ではあるが
画質の高い計算との釣合を保つ。高速で低コストの計算
は多角形における反射の量を確定するために使用される
のが好ましいが、多角形の湾曲、光源の位置又は視点の
位置によって、面に沿って大きな反射の変化が生じてい
る場合には、高画質の画像を描出するためにより高い次
数の式を使用する。すなわち、低速でコスト高の高次の
式は必要なときにのみ実行されるのである。湾曲がほと
んどなく、光源までの距離が長く且つ視点までの距離も
長い多角形は、低次の式を使用して、迅速に低コストで
計算される。1つの画像を形成する多角形の大部分はゼ
ロ次又は一次の式を使用して描出可能であることがわか
っている。本発明の適応シェーディングシステムを使用
して描出される画像はさらに高次の式を使用して描出さ
れる画像より20〜50%速く生成され、しかも、画質
の低下はほとんどないか、又は認められるほどではな
い。
【0037】好ましい実施例では、多角形に沿った反射
の量を計算するために、ゼロ次、一次及び二次の3種類
の式を使用して良い。ゼロ次の式は多角形の面全体につ
いて一定の値を計算する。ゼロ次の式はランベルトの法
則に従い、 cos(α)=N・L に従って拡散反射重みを計算するのが好ましい。尚、式
中、Nは面に対する法線であり、Lは光ベクトルであ
る。この法線は頂点法線又は面に沿った任意の1点にお
ける法線であれば良い。法線は頂点法線の平均法線であ
るのが好ましい。
の量を計算するために、ゼロ次、一次及び二次の3種類
の式を使用して良い。ゼロ次の式は多角形の面全体につ
いて一定の値を計算する。ゼロ次の式はランベルトの法
則に従い、 cos(α)=N・L に従って拡散反射重みを計算するのが好ましい。尚、式
中、Nは面に対する法線であり、Lは光ベクトルであ
る。この法線は頂点法線又は面に沿った任意の1点にお
ける法線であれば良い。法線は頂点法線の平均法線であ
るのが好ましい。
【0038】一次の式はグローシェーディング方式に従
って計算されるのが好ましい。グロー方式は、多角形の
面に沿った反射の変動が小さい場合に、適切な画質の画
像を生成する。多角形の面に沿った反射の変動が大き
く、二次の式を採用しなければならないことがわかった
場合には、フォンシェーディング方式を使用する。
って計算されるのが好ましい。グロー方式は、多角形の
面に沿った反射の変動が小さい場合に、適切な画質の画
像を生成する。多角形の面に沿った反射の変動が大き
く、二次の式を採用しなければならないことがわかった
場合には、フォンシェーディング方式を使用する。
【0039】図8,図9及び図10を参照して本発明の
プロセスを説明する。図8は、本発明の第1の実施例に
関わるプロセスの流れを示し、図9及び図10は、本発
明の別の実施例に関わるプロセスの流れを示す。以下、
走査線方式を使用する画像描出に関して好ましい実施例
を説明するが、当業者には自明であるように、本発明は
走査線方式のみならず、多角形の頂点における色又は多
角形に沿った他の境界条件を補間するための平面式など
の別の技術にも適用される。
プロセスを説明する。図8は、本発明の第1の実施例に
関わるプロセスの流れを示し、図9及び図10は、本発
明の別の実施例に関わるプロセスの流れを示す。以下、
走査線方式を使用する画像描出に関して好ましい実施例
を説明するが、当業者には自明であるように、本発明は
走査線方式のみならず、多角形の頂点における色又は多
角形に沿った他の境界条件を補間するための平面式など
の別の技術にも適用される。
【0040】走査線方式を使用する場合、走査線ごとに
多角形が交わる表示要素を確定し、前述のゼロ次の式、
一次の式又は二次の式などの公知のシェーディング式を
使用して、それらの表示要素のそれぞれについて頂点属
性(色、位置及び垂線)から色を取り出す。多角形が交
わる表示要素に沿った頂点属性(又は他の境界条件)を
補間するために、差分変数を確定する。差分変数は多角
形の辺に沿って、また、多角形の辺の間の走査線にまた
がって頂点属性(奥行き、法線、色)をいかに増分すべ
きかを指定する。多くの場合、以下に示すように、法線
差分変数(並びに色と位置)を確定する。しかしなが
ら、ここで説明する試験基準により、光ベクトル及び/
又は視線ベクトルが変動することが指示されたならば、
それらについても法線差分変数を確定するのと同じ方法
によって差分変数を確定し、同じように多角形に沿って
属性を補間するものと考えられる。
多角形が交わる表示要素を確定し、前述のゼロ次の式、
一次の式又は二次の式などの公知のシェーディング式を
使用して、それらの表示要素のそれぞれについて頂点属
性(色、位置及び垂線)から色を取り出す。多角形が交
わる表示要素に沿った頂点属性(又は他の境界条件)を
補間するために、差分変数を確定する。差分変数は多角
形の辺に沿って、また、多角形の辺の間の走査線にまた
がって頂点属性(奥行き、法線、色)をいかに増分すべ
きかを指定する。多くの場合、以下に示すように、法線
差分変数(並びに色と位置)を確定する。しかしなが
ら、ここで説明する試験基準により、光ベクトル及び/
又は視線ベクトルが変動することが指示されたならば、
それらについても法線差分変数を確定するのと同じ方法
によって差分変数を確定し、同じように多角形に沿って
属性を補間するものと考えられる。
【0041】図11及び図12に関していうと、位置、
法線及び色に関する差分変数は、まず、下記の式により
確定される: dPx(1)=Px(2)−Px(1) dPx(2)=Px(3)−Px(2) dPx(3)=Px(1)−Px(3) dPy(1)=Py(2)−Px(1) dPy(2)=Py(3)−Py(2) dPy(3)=Py(1)−Py(3) dPz(1)=Pz(2)−Pz(1) dPz(2)=Pz(3)−Pz(2) dPz(3)=Pz(1)−Pz(3) dNx(1)=Nx(2)−Nx(1) dNx(2)=Nx(3)−Nx(2) dNx(3)=Nx(1)−Nx(3) dNy(1)=Ny(2)−Nx(1) dNy(2)=Ny(3)−Ny(2) dNy(3)=Ny(1)−Ny(3) dNz(1)=Nz(2)−Nz(1) dNz(2)=Nz(3)−Nz(2) dNz(3)=Nz(1)−Nz(3) dCr(1)=Cr(2)−Cr(1) dCr(2)=Cr(3)−Cr(2) dCr(3)=Cr(1)−Cr(3) dCg(1)=Cg(2)−Cg(1) dCg(2)=Cg(3)−Cg(2) dCg(3)=Cg(1)−Cg(3) dCb(1)=Cb(2)−Cb(1) dCb(2)=Cb(3)−Cb(2) dCb(3)=Cb(1)−Cb(3)
法線及び色に関する差分変数は、まず、下記の式により
確定される: dPx(1)=Px(2)−Px(1) dPx(2)=Px(3)−Px(2) dPx(3)=Px(1)−Px(3) dPy(1)=Py(2)−Px(1) dPy(2)=Py(3)−Py(2) dPy(3)=Py(1)−Py(3) dPz(1)=Pz(2)−Pz(1) dPz(2)=Pz(3)−Pz(2) dPz(3)=Pz(1)−Pz(3) dNx(1)=Nx(2)−Nx(1) dNx(2)=Nx(3)−Nx(2) dNx(3)=Nx(1)−Nx(3) dNy(1)=Ny(2)−Nx(1) dNy(2)=Ny(3)−Ny(2) dNy(3)=Ny(1)−Ny(3) dNz(1)=Nz(2)−Nz(1) dNz(2)=Nz(3)−Nz(2) dNz(3)=Nz(1)−Nz(3) dCr(1)=Cr(2)−Cr(1) dCr(2)=Cr(3)−Cr(2) dCr(3)=Cr(1)−Cr(3) dCg(1)=Cg(2)−Cg(1) dCg(2)=Cg(3)−Cg(2) dCg(3)=Cg(1)−Cg(3) dCb(1)=Cb(2)−Cb(1) dCb(2)=Cb(3)−Cb(2) dCb(3)=Cb(1)−Cb(3)
【0042】式中、dPx(1),dPy(1),dP
z(1)は第1の頂点と第2の頂点との間の辺に関する
位置差分変数を表し;dPx(2),dPy(2),d
Pz(2)は第2の頂点と第3の頂点との間の辺に関す
る位置差分変数を表し;dPx(3),dPy(3),
dPz(3)は第3の頂点と第1の頂点との間の辺に関
する位置差分変数を表す。変数dNx(1),dNy
(1),dNz(1)は第1の頂点と第2の頂点とにお
ける法線に関する法線差分変数を表し;dNx(2
1),dNy(2),dNz(2)は第2の頂点と第3
の頂点とにおける法線に関する法線差分変数であり;d
Nx(3),dNy(3),dNz(3)は第3の頂点
と第1の頂点とにおける法線に関する法線差分変数であ
る。変数dCr(1),dCg(1),dCb(1)は
第1の頂点と第2の頂点との間の辺に沿った色差分変数
を表し;dCr(2),dCg(2)及びdCb(3)
は第2の頂点と第3の頂点との間の辺に沿った色差分変
数を表し;dCr(3),dCg(3)及びdCb
(3)は第3の頂点と第1の頂点との間の辺に沿った色
差分変数を表す。
z(1)は第1の頂点と第2の頂点との間の辺に関する
位置差分変数を表し;dPx(2),dPy(2),d
Pz(2)は第2の頂点と第3の頂点との間の辺に関す
る位置差分変数を表し;dPx(3),dPy(3),
dPz(3)は第3の頂点と第1の頂点との間の辺に関
する位置差分変数を表す。変数dNx(1),dNy
(1),dNz(1)は第1の頂点と第2の頂点とにお
ける法線に関する法線差分変数を表し;dNx(2
1),dNy(2),dNz(2)は第2の頂点と第3
の頂点とにおける法線に関する法線差分変数であり;d
Nx(3),dNy(3),dNz(3)は第3の頂点
と第1の頂点とにおける法線に関する法線差分変数であ
る。変数dCr(1),dCg(1),dCb(1)は
第1の頂点と第2の頂点との間の辺に沿った色差分変数
を表し;dCr(2),dCg(2)及びdCb(3)
は第2の頂点と第3の頂点との間の辺に沿った色差分変
数を表し;dCr(3),dCg(3)及びdCb
(3)は第3の頂点と第1の頂点との間の辺に沿った色
差分変数を表す。
【0043】位置差分変数の大きさ(dPx対dPy)
から、長軸を確定することができる。長軸は多角形の辺
を描出すべき方向を指示する。ここで示す例では、長軸
は第1の辺についてはy軸であり、第2の辺については
y軸であり、第3の辺についてはx軸である。短軸に関
する位置差分変数を長軸の差分変数で除算すると、短軸
に関する増分が得られる。そこで、1単位増分を使用し
て、走査線描出方式に従って三角形の辺をトラバースす
る。次に、頂点を分類して、各走査線の左側の端と、右
側の端とを確定する。
から、長軸を確定することができる。長軸は多角形の辺
を描出すべき方向を指示する。ここで示す例では、長軸
は第1の辺についてはy軸であり、第2の辺については
y軸であり、第3の辺についてはx軸である。短軸に関
する位置差分変数を長軸の差分変数で除算すると、短軸
に関する増分が得られる。そこで、1単位増分を使用し
て、走査線描出方式に従って三角形の辺をトラバースす
る。次に、頂点を分類して、各走査線の左側の端と、右
側の端とを確定する。
【0044】走査線方式の論理によれば、頂点間の辺を
表すために走査線の式で使用する変数は頂点属性となる
べく初期設定され、差分変数から取り出した増分変数は
多角形をトラバースするために使用される。位置差分変
数を長軸によって除算すると、正規化位置増分が得ら
れ、法線差分変数を長軸によって除算すると、正規化法
線増分が得られ、色差分変数を長軸によって除算する
と、正規化色増分が得られる:
表すために走査線の式で使用する変数は頂点属性となる
べく初期設定され、差分変数から取り出した増分変数は
多角形をトラバースするために使用される。位置差分変
数を長軸によって除算すると、正規化位置増分が得ら
れ、法線差分変数を長軸によって除算すると、正規化法
線増分が得られ、色差分変数を長軸によって除算する
と、正規化色増分が得られる:
【0045】 dPx(1):=dPx(1)/dPy(1) dPx(2):=dPx(2)/dPy(2) dPx(3):=1 dPy(1):=1 dPy(2):=1 dPy(3):=dPy(3)/dPx(3) dPz(1):=dPz(1)/dPx(1) dPz(2):=dPz(2)/dPx(2) dPz(3):=dPz(3)/dPx(3) dNx(1):=dNx(1)/dPy(1) dNx(2):=dNx(2)/dPy(2) dNx(3):=dNx(3)/dPx(3) dNy(1):=dNy(1)/dPy(1) dNy(2):=dNy(2)/dPy(2) dNy(3):=dPy(3)/dPx(3) dNz(1):=dNz(1)/dPy(1) dNz(2):=dNz(2)/dPy(2) dNz(3):=dPz(3)/dPx(3) dCr(1):=dCr(1)/dPy(1) dCr(2):=dCr(2)/dPy(2) dCr(3):=dCr(3)/dPx(3) dCg(1):=dCg(1)/dPy(1) dCg(2):=dCg(2)/dPy(2) dCg(3):=dCg(3)/dPx(3) dCb(1):=dCb(1)/dPy(1) dCb(2):=dCb(2)/dPy(2) dCb(3):=dCb(3)/dPx(3)
【0046】次に、増分値を利用し、辺補間論理を使用
して、三角形の辺に沿って頂点属性を補間する:
して、三角形の辺に沿って頂点属性を補間する:
【0047】 Px(1):=Px(1)+/dPx(1) Px(2):=Px(2)+/dPx(2) Px(3):=Px(3)+1 Py(1):=Px(1)+1 Py(2):=Py(2)+1 Py(3):=Py(3)+/dPy(3) Pz(1):=Pz(1)+/dPz(1) Pz(2):=Pz(2)+/dPz(2) Pz(3):=Pz(3)+/dPz(3) Nx(1):=Nx(1)+/dNx(1) Nx(2):=Nx(2)+/dNx(2) Nx(3):=Nx(3)+/dNx(3) Ny(1):=Ny(1)+/dNy(1) Ny(2):=Ny(2)+/dNy(2) Ny(3):=Ny(3)+/dNy(3) Nz(1):=Nz(1)+/dNz(1) Nz(2):=Nz(2)+/dNz(2) Nz(3):=Nz(3)+/dNz(3) Cr(1):=Cr(1)+/dCr(1) Cr(2):=Cr(2)+/dCr(2) Cr(3):=Cr(3)+/dCr(3) Cg(1):=Cg(1)+/dCg(1) Cg(2):=Cg(2)+/dCg(2) Cg(3):=Cg(3)+/dCg(3) Cb(1):=Cb(1)+/dCb(1) Cb(2):=Cb(2)+/dCb(2) Cb(3):=Cb(3)+/dCb(3)
【0048】多角形をトラバースするために、頂点属性
を補間して走査線の左側の端と右側の端における値を生
成する(図13を参照)。走査線を充填するために、ま
ず、その走査線に関する差分数を確定する。図14の走
査線に関する差分変数は次の通りである。
を補間して走査線の左側の端と右側の端における値を生
成する(図13を参照)。走査線を充填するために、ま
ず、その走査線に関する差分数を確定する。図14の走
査線に関する差分変数は次の通りである。
【0049】 dPx(y):=Px(xr)−Px(xl) dNx(y):=Nx(xr)−Nx(xl) dCr(y):=Cr(xr)−Cr(xl) dPy(y):=0 dNy(y):=Ny(xr)−Ny(xl) dCg(y):=Cg(xr)−Cg(xl) dPz(y):=Pz(xr)−Pz(xl) dNz(y):=Nz(xr)−Nz(xl) dCb(y):=Cb(xr)−Cb(xl)
【0050】次に、変数を走査線の幅、すなわちdPx
(y)で除算して、変数を正規化し且つ走査線に関する
均一な増分変数(ラスターの均一な増分に整合するのが
好ましい)を得る:
(y)で除算して、変数を正規化し且つ走査線に関する
均一な増分変数(ラスターの均一な増分に整合するのが
好ましい)を得る:
【0051】 dPx(y):=1 dNx(y):=dNx(y)/dPx(y) dCg(y):=dCr(y)/dPx(y) dPx(y):=0 dNy(y):=dNy(y)/dPx(y) dCg(y):=dCg(y)/dPx(y) dPz(y):=dPz(y)/dPx(y) dNz(y):=dNz(y)/dPx(y) dCb(y):=dCb(y)/dPx(y)
【0052】この情報を利用して、頂点属性を三角形
に沿って補間することにより、三角形を充填する:
に沿って補間することにより、三角形を充填する:
【0053】 Px(x,y):=Px(x,y)+1 Nx(x,y):=Nx(x,y)+dNx(y) Cr(x,y):=Cr(x,y)+dCr(y) Py(x,y):= 定数 Ny(x,y):=Ny(x,y)+dNy(y) Cg(x,y):=Cg(x,y)+dCg(y) Pz(x,y):=Pz(x,y)+dPz(y) Nz(x,y):=Nz(x,y)+dNz(y) Cb(x,y):=Cb(x,y)+dCb(y)
【0054】反射の式に対する一次の解は描出プロセス
を簡略にする。より高次の解とは異なり、一次の解では
法線ベクトルに関して差分方程式を確定する必要がな
く、その代わりに、頂点(1,2,3)における拡散反
射重みを確定する:
を簡略にする。より高次の解とは異なり、一次の解では
法線ベクトルに関して差分方程式を確定する必要がな
く、その代わりに、頂点(1,2,3)における拡散反
射重みを確定する:
【0055】 cos(α1):=Lx(1)*Nx(1)+Ly(1)*Ny(1)+Lz(1)*Nz(1) cos(α2):=Lx(2)*Nx(2)+Ly(2)*Ny(2)+Lz(2)*Nz(2) cos(α3):=Lx(3)*Nx(3)+Ly(3)*Ny(3)+Lz(3)*Nz(3)
【0056】次に、拡散反射重みをそれぞれの頂点色属
性に吸収させる。 Cr(1)=(Kar+Kdr *cos(α1))*Cr(1) Cg(1)=(Kag+Kdg *cos(α1))*Cg(1) Cb(1)=(Kab+Kdb *cos(α1))*Cb(1) Cr(2)=(Kar+Kdr *cos(α2))*Cr(2) Cg(2)=(Kag+Kdg *cos(α2))*Cg(2) Cb(2)=(Kab+Kdb *cos(α2))*Cb(2) Cr(3)=(Kar+Kdr *cos(α3))*Cr(3) Cg(3)=(Kag+Kdg *cos(α3))*Cg(3) Cb(3)=(Kab+Kdb *cos(α3))*Cb(3)
性に吸収させる。 Cr(1)=(Kar+Kdr *cos(α1))*Cr(1) Cg(1)=(Kag+Kdg *cos(α1))*Cg(1) Cb(1)=(Kab+Kdb *cos(α1))*Cb(1) Cr(2)=(Kar+Kdr *cos(α2))*Cr(2) Cg(2)=(Kag+Kdg *cos(α2))*Cg(2) Cb(2)=(Kab+Kdb *cos(α2))*Cb(2) Cr(3)=(Kar+Kdr *cos(α3))*Cr(3) Cg(3)=(Kag+Kdg *cos(α3))*Cg(3) Cb(3)=(Kab+Kdb *cos(α3))*Cb(3)
【0057】尚、上記の式は光源が1つであるときの拡
散反射を表していることに注意すべきである。複数の光
源がある場合には、その寄与分が加算されてゆくので、
解は拡散反射を合計する。
散反射を表していることに注意すべきである。複数の光
源がある場合には、その寄与分が加算されてゆくので、
解は拡散反射を合計する。
【0058】一次の解では、位置差分変数と色差分変数
を先に説明した通りに確定する。法線差分変数を確定す
る必要はない。頂点色値は拡散重み値を考慮に入れたも
のである。ところが、この解に関連して、拡散重みの値
が少なめになってしまう場合があるという問題が生じ
る。二次の解は法線差分変数を利用することによりこれ
を修正する。前述のように、まず、頂点における法線ベ
クトルを多角形の辺に沿って補間し、次に、その大きさ
に関して正規化する。続いて、多角形の走査線に沿って
多角形の左右の辺の間で法線ベクトルを増分し、各表示
要素でそれを正規化する。
を先に説明した通りに確定する。法線差分変数を確定す
る必要はない。頂点色値は拡散重み値を考慮に入れたも
のである。ところが、この解に関連して、拡散重みの値
が少なめになってしまう場合があるという問題が生じ
る。二次の解は法線差分変数を利用することによりこれ
を修正する。前述のように、まず、頂点における法線ベ
クトルを多角形の辺に沿って補間し、次に、その大きさ
に関して正規化する。続いて、多角形の走査線に沿って
多角形の左右の辺の間で法線ベクトルを増分し、各表示
要素でそれを正規化する。
【0059】次に、この法線ベクトルを使用して、各表
示要素における拡散重みを計算する: cos(α(x,y)):=Lx(x,y)*Nx(x,y)+ Ly(x,y)*Ny(x,y)+Lz(x,y)*N z(x,y)また、この拡散値を色値に取り入れる: Cr(x,y)=(Kar+Kdr*cos(α(x,
y)))*Cr(x,y) Cg(x,y)=(Kag+Kdg*cos(α(x,
y)))*Cg(x,y) Cb(x,y)=(Kab+Kdb*cos(α(x,
y)))*Cb(x,y)
示要素における拡散重みを計算する: cos(α(x,y)):=Lx(x,y)*Nx(x,y)+ Ly(x,y)*Ny(x,y)+Lz(x,y)*N z(x,y)また、この拡散値を色値に取り入れる: Cr(x,y)=(Kar+Kdr*cos(α(x,
y)))*Cr(x,y) Cg(x,y)=(Kag+Kdg*cos(α(x,
y)))*Cg(x,y) Cb(x,y)=(Kab+Kdb*cos(α(x,
y)))*Cb(x,y)
【0060】上記の公式は、光ベクトルL(x,y)が
多角形に沿って変動しないことを前提としている。光ベ
クトルが実際には変動する場合には、光ベクトルと法線
ベクトルを補間し且つ正規化しなければならない。この
補間と正規化の追加は余分の時間を必要とし、コスト高
にもつながる。本発明のシステムはそれらの点について
反射の計算を簡単にする。第1に、本発明のシステム
は、法線ベクトルの変動、光ベクトルの変動又は視点ベ
クトルの変動のいずれかが現実により高次の解を要求し
ているときにのみコストの高い高次の解が使用されるよ
うに、ゼロ次の解、一次の解、二次の解をそれぞれ適用
すべきときを決定する。第2に、本発明のシステムは、
オプションとして、多角形に沿ってどのベクトルが著し
く変動しているかを判定し、それにより、補間を必要し
ないベクトル値をも含む3つのベクトル値を補間して時
間を無駄にするという事態を回避することによって、ど
の特定のベクトル値が補間を必要とするかを検出しても
良い。さらに、本発明のシステムは、オプションとし
て、色値を補間するために通常の差分方程式に置き換え
られても良い。このオプションにより、3つのベクトル
を補間し、正規化するさらに高コストの従来の解を使用
しなくても良くなる。
多角形に沿って変動しないことを前提としている。光ベ
クトルが実際には変動する場合には、光ベクトルと法線
ベクトルを補間し且つ正規化しなければならない。この
補間と正規化の追加は余分の時間を必要とし、コスト高
にもつながる。本発明のシステムはそれらの点について
反射の計算を簡単にする。第1に、本発明のシステム
は、法線ベクトルの変動、光ベクトルの変動又は視点ベ
クトルの変動のいずれかが現実により高次の解を要求し
ているときにのみコストの高い高次の解が使用されるよ
うに、ゼロ次の解、一次の解、二次の解をそれぞれ適用
すべきときを決定する。第2に、本発明のシステムは、
オプションとして、多角形に沿ってどのベクトルが著し
く変動しているかを判定し、それにより、補間を必要し
ないベクトル値をも含む3つのベクトル値を補間して時
間を無駄にするという事態を回避することによって、ど
の特定のベクトル値が補間を必要とするかを検出しても
良い。さらに、本発明のシステムは、オプションとし
て、色値を補間するために通常の差分方程式に置き換え
られても良い。このオプションにより、3つのベクトル
を補間し、正規化するさらに高コストの従来の解を使用
しなくても良くなる。
【0061】図8を参照して、本発明のプロセスを説明
する。ブロック200では、面の湾曲を確定する。この
湾曲は、多角形のそれぞれの頂点における法線と、法線
から求めた湾曲の量に従って確定され、対の頂点の間の
湾曲の量を比較することにより、多角形の面に沿った湾
曲が大きいか否かを判定する。下記の式を使用するのが
好ましい(図15を参照)。
する。ブロック200では、面の湾曲を確定する。この
湾曲は、多角形のそれぞれの頂点における法線と、法線
から求めた湾曲の量に従って確定され、対の頂点の間の
湾曲の量を比較することにより、多角形の面に沿った湾
曲が大きいか否かを判定する。下記の式を使用するのが
好ましい(図15を参照)。
【0062】cos(φ)=min(cosφ(1)),cos(φ
(2)),cos(φ(3)))式中、cos(φ(1))=Nx
(1)*Nx(2)+Ny(1)*Ny(2)+Nz(1)*Nz(2)cos
(φ(2))=Nx(2)*Nx(3)+Ny(2)*Ny(3)+Nz
(2)*Nz(3)cos(φ(3))=Nx(3)*Nx(1)+Ny
(3)*Ny(1)+Nz(3)*Nz(1)
(2)),cos(φ(3)))式中、cos(φ(1))=Nx
(1)*Nx(2)+Ny(1)*Ny(2)+Nz(1)*Nz(2)cos
(φ(2))=Nx(2)*Nx(3)+Ny(2)*Ny(3)+Nz
(2)*Nz(3)cos(φ(3))=Nx(3)*Nx(1)+Ny
(3)*Ny(1)+Nz(3)*Nz(1)
【0063】cos(φ) 値は頂点法線ベクトル間の最大
変動を測定する。これは多角形における最大湾曲を予測
する。ブロック205で、 cos(φ)値が大きいことを
示す場合には、ブロック210で二次のシェーディング
式を実現するが、そうでない場合には、cos(φ)値を
後続するプロセスのステップで使用すべくセーブする。
変動を測定する。これは多角形における最大湾曲を予測
する。ブロック205で、 cos(φ)値が大きいことを
示す場合には、ブロック210で二次のシェーディング
式を実現するが、そうでない場合には、cos(φ)値を
後続するプロセスのステップで使用すべくセーブする。
【0064】大きな湾曲を示すcos(φ)の値を確定す
るときには、所定の閾値を使用する。閾値は実験によっ
て確定されるのが好ましい。閾値は、二次(又は三次以
上)の式を使用して初めて高画質の画像を生成できる最
小限の湾曲に対応する。この画質の基準はアプリケーシ
ョンによって異なる。たとえば、cos(α)が約1であ
って、LとNが平行であることが示され且つ基準が色の
項について8ビットの精度を維持すべきものであった場
合には、ゼロ次、一次及び二次の式を選択するための閾
値は次のようになるであろう:
るときには、所定の閾値を使用する。閾値は実験によっ
て確定されるのが好ましい。閾値は、二次(又は三次以
上)の式を使用して初めて高画質の画像を生成できる最
小限の湾曲に対応する。この画質の基準はアプリケーシ
ョンによって異なる。たとえば、cos(α)が約1であ
って、LとNが平行であることが示され且つ基準が色の
項について8ビットの精度を維持すべきものであった場
合には、ゼロ次、一次及び二次の式を選択するための閾
値は次のようになるであろう:
【0065】 1.000<cos(φ)<0.996・・ ゼロ次を使用 0.996<cos(φ)<0.992・・ 一次を使用 0.992<cos(φ)<0 ・・・ 二次を使用
【0066】使用するアプリケーションごとに、また、
生成される画像ごとにプロセスをカスタマイズするため
に、ユーザーは閾値を修正できるのが好ましい。通常、
cos(φ)がほぼ1の値であれば、多角形に沿った湾曲
は最小限であり、プロセスの流れはブロック220に続
く。湾曲が大きく、高速の低次シェーディング式を使用
したのでは、所望の画質が得られないであろうというこ
とがわかれば、さらに構成度ではあるが、多くの時間を
要し且つコスト高である高次のシェーディングプロセス
を使用する。当然のことながら、ユーザーが画像を急速
に生成することを要求し、画質には配慮しない場合に
は、画像の多角形のより多くの部分をゼロ次の式を使用
して生成するために、閾値をさらに低い値にセットする
ことができる。たとえば、基準が色の項について4ビッ
トの精度を維持すべきものである場合には、ゼロ次、一
次及び二次の式を選択するための閾値は次のようになる
であろう:
生成される画像ごとにプロセスをカスタマイズするため
に、ユーザーは閾値を修正できるのが好ましい。通常、
cos(φ)がほぼ1の値であれば、多角形に沿った湾曲
は最小限であり、プロセスの流れはブロック220に続
く。湾曲が大きく、高速の低次シェーディング式を使用
したのでは、所望の画質が得られないであろうというこ
とがわかれば、さらに構成度ではあるが、多くの時間を
要し且つコスト高である高次のシェーディングプロセス
を使用する。当然のことながら、ユーザーが画像を急速
に生成することを要求し、画質には配慮しない場合に
は、画像の多角形のより多くの部分をゼロ次の式を使用
して生成するために、閾値をさらに低い値にセットする
ことができる。たとえば、基準が色の項について4ビッ
トの精度を維持すべきものである場合には、ゼロ次、一
次及び二次の式を選択するための閾値は次のようになる
であろう:
【0067】 1.000<cos(φ)<0.938・・ ゼロ次を使用 0.938<cos(φ)<0.879・・ 一次を使用 0.879<cos(φ)<0 ・・・ 二次を使用
【0068】同様に、ユーザーが精密にシェーディング
された画像を要求するのであれば、多角形のより多くの
部分をより高次のシェーディング式を使用して描出させ
るために、閾値を1の値により近い値にセットすること
ができる。ブロック220で湾曲が大きくない場合に
は、頂点に関する光源の位置の変動を確定する。
された画像を要求するのであれば、多角形のより多くの
部分をより高次のシェーディング式を使用して描出させ
るために、閾値を1の値により近い値にセットすること
ができる。ブロック220で湾曲が大きくない場合に
は、頂点に関する光源の位置の変動を確定する。
【0069】光源が多角形に近接するにつれて、頂点に
関する光の方向の変動は大きくなる。無限光源の場合、
すなわち、無限の距離をおいて離間している光源の場
合、光源の方向は全ての頂点について等しい。有位置光
源、すなわち、図16に示すように有限の距離をおいて
離間している光源については、頂点間の光源位置の変動
は次のように定められる:
関する光の方向の変動は大きくなる。無限光源の場合、
すなわち、無限の距離をおいて離間している光源の場
合、光源の方向は全ての頂点について等しい。有位置光
源、すなわち、図16に示すように有限の距離をおいて
離間している光源については、頂点間の光源位置の変動
は次のように定められる:
【0070】 cos(Ψ)=min(cos(Ψ(1)),cos(Ψ(2)),cos(Ψ(3)))) 式中、 cos(Ψ(1))=Lx(1)*Lx(2)+Ly(1)*Ly(2)+Lz(1)*Lz(2) cos(Ψ(2))=Lx(2)*Lx(3)+Ly(2)*Ly(3)+Lz(2)*Lz(3) cos(Ψ(3))=Lx(3)*Lx(1)+Ly(3)*Ly(1)+Lz(3)*Lz(1) 尚、Lx,Ly,Lzは頂点に関する光源の位置を表
す。
す。
【0071】cos(Ψ)値は頂点光ベクトル間の変動の
測定値である。光源の種類が無限光源である場合、 cos
(Ψ)値は定義の上では1の値となる。ブロック225
で変動が大きいことがわかれば、二次のシェーディング
式を実現する(ブロック230)。
測定値である。光源の種類が無限光源である場合、 cos
(Ψ)値は定義の上では1の値となる。ブロック225
で変動が大きいことがわかれば、二次のシェーディング
式を実現する(ブロック230)。
【0072】反射の式が鏡面反射を含む場合(ブロック
240)、ブロック250で頂点視点ベクトル(図17
を参照)、すなわち、頂点位置に対する視点の位置を次
のように計算する: cos(η)=min(cos(η(1),cos(η(2),cos(η(3))) 式中、 cos(η(1))=Vx(1)*Vx(2)+Vy(1)*Vy(2)+Vz(1)*Vz(2) cos(η(2))=Vx(2)*Vx(3)+Vy(2)*Vy(3)+Vz(2)*Vz(3) cos(η(3))=Vx(3)*Vx(1)+Vy(3)*Vy(1)+Vz(3)*Vz(1)
240)、ブロック250で頂点視点ベクトル(図17
を参照)、すなわち、頂点位置に対する視点の位置を次
のように計算する: cos(η)=min(cos(η(1),cos(η(2),cos(η(3))) 式中、 cos(η(1))=Vx(1)*Vx(2)+Vy(1)*Vy(2)+Vz(1)*Vz(2) cos(η(2))=Vx(2)*Vx(3)+Vy(2)*Vy(3)+Vz(2)*Vz(3) cos(η(3))=Vx(3)*Vx(1)+Vy(3)*Vy(1)+Vz(3)*Vz(1)
【0073】鏡面シェーディングは面に対するハイライ
トの量を含む。ハイライトは面に関する光源の位置と、
面における光源に関する目の位置とに直接対応する。反
射の式が鏡面シェーディングを含むべきものでない場合
には、視点ベクトルに変動がないことを示すために、ブ
ロック245でcos(η)を1にセットする。
トの量を含む。ハイライトは面に関する光源の位置と、
面における光源に関する目の位置とに直接対応する。反
射の式が鏡面シェーディングを含むべきものでない場合
には、視点ベクトルに変動がないことを示すために、ブ
ロック245でcos(η)を1にセットする。
【0074】次に、ブロック260において、最大強さ
の変動を法線ベクトルの変動、光ベクトルの変動及び視
点ベクトルの変動の関数として確定する。たとえば、下
記の関数は3つの余弦量の中の最小の値を選択すること
により、最大の角度変動を選択する: cos(φΨη)=min(a(φ)*cos(φ), a(Ψ)*cos(Ψ),a(η)*cos(η ) 重みa(φ),a(Ψ),a(η)は、3つの余弦値が
完全反射式にどのような影響を与えるかを表す。たとえ
ば、cos(η)値のわずかな変化は目に到達する反射
の強さの大きな変化として現れるであろう。すなわちそ
れらの重みは、最大の変動を正確に確定することができ
るように値を「平らにならす」ために使用されるのであ
る。
の変動を法線ベクトルの変動、光ベクトルの変動及び視
点ベクトルの変動の関数として確定する。たとえば、下
記の関数は3つの余弦量の中の最小の値を選択すること
により、最大の角度変動を選択する: cos(φΨη)=min(a(φ)*cos(φ), a(Ψ)*cos(Ψ),a(η)*cos(η ) 重みa(φ),a(Ψ),a(η)は、3つの余弦値が
完全反射式にどのような影響を与えるかを表す。たとえ
ば、cos(η)値のわずかな変化は目に到達する反射
の強さの大きな変化として現れるであろう。すなわちそ
れらの重みは、最大の変動を正確に確定することができ
るように値を「平らにならす」ために使用されるのであ
る。
【0075】ブロック270及び280では、多角形の
シェーディングを計算するために一次のシェーディング
式を使用すべきか、又は二次のシェーディング式を使用
すべきかを、最大強さ変動を閾値と比較することにより
決定するための試験を実行する。第1の閾値と第2の閾
値は実験に基づいて確定されても良いが、ユーザーが用
途ごとに所望の画質と、画像を生成するための時間の量
とに従って値を調整しても良い。第1の閾値は 0.996
から 0.938 の範囲にあり、第2の閾値は 0.992から 0.
879 の範囲にあるのが好ましい。たとえば、最大変動
cos(φγη)について: 1 < cos(φγη)<ε1 ゼロ次の式を使用 ε1<cos(φγη)<ε2 一次の式を使用 ε2<cos(φγη)<ε0 二次の式を使用
シェーディングを計算するために一次のシェーディング
式を使用すべきか、又は二次のシェーディング式を使用
すべきかを、最大強さ変動を閾値と比較することにより
決定するための試験を実行する。第1の閾値と第2の閾
値は実験に基づいて確定されても良いが、ユーザーが用
途ごとに所望の画質と、画像を生成するための時間の量
とに従って値を調整しても良い。第1の閾値は 0.996
から 0.938 の範囲にあり、第2の閾値は 0.992から 0.
879 の範囲にあるのが好ましい。たとえば、最大変動
cos(φγη)について: 1 < cos(φγη)<ε1 ゼロ次の式を使用 ε1<cos(φγη)<ε2 一次の式を使用 ε2<cos(φγη)<ε0 二次の式を使用
【0076】ブロック270では、最大強さ変動を第1
の閾値ε1と比較する。最大強さ変動が第1の閾値より
大きい場合、ゼロ次の式を使用する(ブロック31
0)。変動が第1の閾値以下である場合には、ブロック
280で最大変動を第2の閾値ε2と比較する。最大強
さ変動が第2の閾値より小さい場合、二次の式を使用し
てシェーディングを生成する。そうでなければ、ブロッ
ク290で一次の式を使用してシェーディングを実行す
る。使用すべき反射式の次が確定したならば、多角形の
辺に沿って色値を確定し、正方向差分方式を使用して多
角形を描出し、多角形と交わる各走査線上に画素(表示
要素)を描出する(ブロック320)。
の閾値ε1と比較する。最大強さ変動が第1の閾値より
大きい場合、ゼロ次の式を使用する(ブロック31
0)。変動が第1の閾値以下である場合には、ブロック
280で最大変動を第2の閾値ε2と比較する。最大強
さ変動が第2の閾値より小さい場合、二次の式を使用し
てシェーディングを生成する。そうでなければ、ブロッ
ク290で一次の式を使用してシェーディングを実行す
る。使用すべき反射式の次が確定したならば、多角形の
辺に沿って色値を確定し、正方向差分方式を使用して多
角形を描出し、多角形と交わる各走査線上に画素(表示
要素)を描出する(ブロック320)。
【0077】次に、図9及び図10を参照して本発明の
第2の実施例を説明する。図9は、拡散反射を含む実施
例を示し、図10は、鏡面反射をも含む実施例を示す。
あるいは、用途に応じて、図9に関して説明する実施例
の速度と図8に関して説明した実施例のすぐれた精度と
を組み合わせて利用する総合システムを提供するため
に、図9に関して以下に説明する実施例を図8に関して
説明した実施例と組み合わせても良い。同様に、図10
に関して説明する実施例を図8に関して説明した実施例
と組み合わせても良い。
第2の実施例を説明する。図9は、拡散反射を含む実施
例を示し、図10は、鏡面反射をも含む実施例を示す。
あるいは、用途に応じて、図9に関して説明する実施例
の速度と図8に関して説明した実施例のすぐれた精度と
を組み合わせて利用する総合システムを提供するため
に、図9に関して以下に説明する実施例を図8に関して
説明した実施例と組み合わせても良い。同様に、図10
に関して説明する実施例を図8に関して説明した実施例
と組み合わせても良い。
【0078】図9に関して説明すると、ブロック420
では、それぞれの頂点に関する光源の位置を確定する。
光源が有位置光源、すなわち、多角形の頂点から有限の
距離をおいて離間している光源である場合、それぞれの
頂点に関する光源の位置は異なる。光源が無限光源であ
れば、光源の位置は各頂点について同じである。
では、それぞれの頂点に関する光源の位置を確定する。
光源が有位置光源、すなわち、多角形の頂点から有限の
距離をおいて離間している光源である場合、それぞれの
頂点に関する光源の位置は異なる。光源が無限光源であ
れば、光源の位置は各頂点について同じである。
【0079】ブロック430では各頂点における光ベク
トルと面法線との点乗積を求め、ブロック440では、
頂点のそれぞれの点乗積(内積)の差を求める。ブロッ
ク450では、最大値cosdiff(α)を点乗積
(内積)の最大差であるとして確定する: max(abs(cos(α1)−cos(α2)), abs(cos(α2)−cos(α3)),abs(cos(α 3)−cos(α1)))
トルと面法線との点乗積を求め、ブロック440では、
頂点のそれぞれの点乗積(内積)の差を求める。ブロッ
ク450では、最大値cosdiff(α)を点乗積
(内積)の最大差であるとして確定する: max(abs(cos(α1)−cos(α2)), abs(cos(α2)−cos(α3)),abs(cos(α 3)−cos(α1)))
【0080】この値は、多角形のシェーディングを計算
する際にゼロ次の式を使用すべきか、一次の式を使用す
べきか、二次の式を使用すべきか、もしくはさらに高い
次数の式を使用すべきかを確定するために利用される。
第1の閾値τD1は、ゼロ次のシェーディング式を使用す
べきか否かを判定するために使用される。ゼロ次のシェ
ーディング式を使用すると、時間とコストを節約できる
一方で、生成される描出画像の画質は尚も所望のレベル
にとどまる。第2の閾値τD2は、二次のシェーディング
式を利用すべきか否かを判定するために使用される。
する際にゼロ次の式を使用すべきか、一次の式を使用す
べきか、二次の式を使用すべきか、もしくはさらに高い
次数の式を使用すべきかを確定するために利用される。
第1の閾値τD1は、ゼロ次のシェーディング式を使用す
べきか否かを判定するために使用される。ゼロ次のシェ
ーディング式を使用すると、時間とコストを節約できる
一方で、生成される描出画像の画質は尚も所望のレベル
にとどまる。第2の閾値τD2は、二次のシェーディング
式を利用すべきか否かを判定するために使用される。
【0081】閾値τD1及びτD2は実験により確定されて
も良いが、適用時に用途ごとに定められても良い。たと
えば、ユーザーが精密シェーディングを伴う画像を描出
することを望む場合、二次の反射式を使用してシェーデ
ィングを計算することが望ましい。従って、閾値τ
D2を、多角形の中の表示要素の大部分を二次の式を使用
して描出させる値に設定すべきである。閾値τD1は低い
値に設定されても良く、また、画像を形成する多角形の
大半のシェーディングが二次の式を使用して実行される
ように、閾値τD2も低い値に設定されて良い。これに対
し、ユーザーがシェーディングの品質に関わらず画像を
高速表示することを望む場合には、閾値τD1及びτD2は
その効果を生成するように設定されるであろう。詳細に
いえば、実行される試験の大半で、ゼロ次の式を使用す
べきであるということを指示するために、閾値τD1は高
い値に設定され、閾値τD2は高い値に設定されるものと
考えられる。
も良いが、適用時に用途ごとに定められても良い。たと
えば、ユーザーが精密シェーディングを伴う画像を描出
することを望む場合、二次の反射式を使用してシェーデ
ィングを計算することが望ましい。従って、閾値τ
D2を、多角形の中の表示要素の大部分を二次の式を使用
して描出させる値に設定すべきである。閾値τD1は低い
値に設定されても良く、また、画像を形成する多角形の
大半のシェーディングが二次の式を使用して実行される
ように、閾値τD2も低い値に設定されて良い。これに対
し、ユーザーがシェーディングの品質に関わらず画像を
高速表示することを望む場合には、閾値τD1及びτD2は
その効果を生成するように設定されるであろう。詳細に
いえば、実行される試験の大半で、ゼロ次の式を使用す
べきであるということを指示するために、閾値τD1は高
い値に設定され、閾値τD2は高い値に設定されるものと
考えられる。
【0082】閾値は、高画質の画像を得る必要性と、画
像をできる限り速く描出する必要性との釣合をとる値に
設定されるのが好ましい。また、閾値は面がどれほど光
っているか、すなわち、鏡面反射のビーム幅をも考慮に
いれなければならない。ビーム幅が広いときには、一次
の式を選択することになる。その結果、人間の目には許
容し得る程度からほぼ完全に見える画像が得られ、その
描出速度はフォンシェーディング方式を使用して画像全
体を描出するときの25%から50%ほど速い。ビーム
幅が狭いときにも許容しうる画質の画像が生成された
が、いくつかの多角形に沿って、1つの多角形は一次の
式を使用してシェーディングされ、隣接する多角形は二
次の式を使用してシェーディングされているというシェ
ーディングの不連続性が起こった。しかし、より小さな
多角形を使用すれば、この問題を回避できる。実際に
は、より高画質の画像を生成しなければならないため
に、ゼロ次の式を頻繁には使用しないのが普通である。
従って、大半の多角形が一次以上の式を使用して描出さ
れるように、閾値τD1を約0.1の値に設定するのが好
ましい。
像をできる限り速く描出する必要性との釣合をとる値に
設定されるのが好ましい。また、閾値は面がどれほど光
っているか、すなわち、鏡面反射のビーム幅をも考慮に
いれなければならない。ビーム幅が広いときには、一次
の式を選択することになる。その結果、人間の目には許
容し得る程度からほぼ完全に見える画像が得られ、その
描出速度はフォンシェーディング方式を使用して画像全
体を描出するときの25%から50%ほど速い。ビーム
幅が狭いときにも許容しうる画質の画像が生成された
が、いくつかの多角形に沿って、1つの多角形は一次の
式を使用してシェーディングされ、隣接する多角形は二
次の式を使用してシェーディングされているというシェ
ーディングの不連続性が起こった。しかし、より小さな
多角形を使用すれば、この問題を回避できる。実際に
は、より高画質の画像を生成しなければならないため
に、ゼロ次の式を頻繁には使用しないのが普通である。
従って、大半の多角形が一次以上の式を使用して描出さ
れるように、閾値τD1を約0.1の値に設定するのが好
ましい。
【0083】図10を参照して、本発明の別の実施例を
説明する。拡散反射に加えて鏡面反射が含まれていると
いう点を除いて、プロセスの流れは図9に示されている
流れと同様である。プロセスが鏡面反射を含むべき場合
には、ブロック610で頂点ごとの視点ベクトルを計算
する。この計算は各視点ベクトルをその大きさによって
正規化する。ブロック620では、頂点ごとに、反射ベ
クトルの視点ベクトルへの投影を設定する(R/V)。
この値 cos(δ(i))は鏡面反射を予測する。ブロッ
ク630では、各頂点におけるcos(δ(i))値の
差、すなわち、abs(cos(δ1)−cos(δ2))、abs
(cos(δ2)−cos(δ3))、 abs(cos(δ3)−c
os(δ1))を計算する。ブロック640では、最大差
を確定する。最大差 cosdiff(δ)が一次の閾値以下で
あれば、ブロック650においてゼロ次のシェーディン
グを選択する。最大差cosdiff(δ)が二次の閾値より
大きければ、ブロック670で二次のシェーディングを
選択する。そうでない場合にはブロック690において
一次のシェーディングを使用する。
説明する。拡散反射に加えて鏡面反射が含まれていると
いう点を除いて、プロセスの流れは図9に示されている
流れと同様である。プロセスが鏡面反射を含むべき場合
には、ブロック610で頂点ごとの視点ベクトルを計算
する。この計算は各視点ベクトルをその大きさによって
正規化する。ブロック620では、頂点ごとに、反射ベ
クトルの視点ベクトルへの投影を設定する(R/V)。
この値 cos(δ(i))は鏡面反射を予測する。ブロッ
ク630では、各頂点におけるcos(δ(i))値の
差、すなわち、abs(cos(δ1)−cos(δ2))、abs
(cos(δ2)−cos(δ3))、 abs(cos(δ3)−c
os(δ1))を計算する。ブロック640では、最大差
を確定する。最大差 cosdiff(δ)が一次の閾値以下で
あれば、ブロック650においてゼロ次のシェーディン
グを選択する。最大差cosdiff(δ)が二次の閾値より
大きければ、ブロック670で二次のシェーディングを
選択する。そうでない場合にはブロック690において
一次のシェーディングを使用する。
【0084】図18は、ここで説明する方式を使用する
ことの利点を示す表である。この表は、二次の式を採用
するフォンのシェーディング方式と、一次の式を採用す
るグローの方式と、本発明の適応シェーディング方式を
使用して同じオブジェクトをシェーディングした結果を
示す。鏡面反射力は面の反射能力を示す値である。鏡面
反射力が大きくなるにつれて、面の輝きも増す。描出時
間は、この方式を使用して画像を描出するのに要する時
間の量である。「NMSE」は、適応シェーディング方
式と、二次のフォンシェーディング方式とにより生成し
た画像の画素表示の正規化平均二乗誤差を表す。これは
次の式を使用して計算される。
ことの利点を示す表である。この表は、二次の式を採用
するフォンのシェーディング方式と、一次の式を採用す
るグローの方式と、本発明の適応シェーディング方式を
使用して同じオブジェクトをシェーディングした結果を
示す。鏡面反射力は面の反射能力を示す値である。鏡面
反射力が大きくなるにつれて、面の輝きも増す。描出時
間は、この方式を使用して画像を描出するのに要する時
間の量である。「NMSE」は、適応シェーディング方
式と、二次のフォンシェーディング方式とにより生成し
た画像の画素表示の正規化平均二乗誤差を表す。これは
次の式を使用して計算される。
【0085】
【数2】
【0086】 式中、 Pr(i):フォンの方式を経て生成した画像のi番目の画素の赤成分 Pg(i):フォンの方式を経て生成した画像のi番目の画素の緑成分 Pb(i):フォンの方式を経て生成した画像のi番目の画素の青成分 Ar(i):適応シェーディングを経て生成した同じi番目の画素の赤成分 Ag(i):適応シェーディングを経て生成した同じi番目の画素の緑成分 Ab(i):適応シェーディングを経て生成した同じi番目の画素の青成分
【0087】NMSE値が小さくなるほど、画質は良く
なる。すなわち、閾値τD1が低くなるほど、生成される
画像の画質は向上し、描出時間は長くなる。逆に、閾値
が高くなれば、画像を描出する際に使用する鏡面反射力
とは関係なく、生成される画像の画質は低下し、描出時
間は短くなる。一般に、適応シェーディングにより生成
した画像のNMSEは(フォン方式で生成した画像と比
較して) 0.0001 未満であり、これは、その画像がフォ
ン方式でシェーディングした画像とほぼ同じであること
を示す。NMSEが 0.0001 から 0.00025 の 間にある
画像は幾分かの微妙なシェーディングの不連続性を有
し、NMSEが 0.00025 から 0.0005 の間にある画像
は目に見えるシェーディングの不連続性を有する。NM
SEが 0.0005 を越える画像は顕著な欠陥を伴って目に
映る。
なる。すなわち、閾値τD1が低くなるほど、生成される
画像の画質は向上し、描出時間は長くなる。逆に、閾値
が高くなれば、画像を描出する際に使用する鏡面反射力
とは関係なく、生成される画像の画質は低下し、描出時
間は短くなる。一般に、適応シェーディングにより生成
した画像のNMSEは(フォン方式で生成した画像と比
較して) 0.0001 未満であり、これは、その画像がフォ
ン方式でシェーディングした画像とほぼ同じであること
を示す。NMSEが 0.0001 から 0.00025 の 間にある
画像は幾分かの微妙なシェーディングの不連続性を有
し、NMSEが 0.00025 から 0.0005 の間にある画像
は目に見えるシェーディングの不連続性を有する。NM
SEが 0.0005 を越える画像は顕著な欠陥を伴って目に
映る。
【0088】本発明が多角形のシェーディングを計算す
るためのある特定の種類の式に限定されないことは明ら
かである。この明細書の説明を読めば、本発明の範囲内
で周知のどのシェーディング方式を利用しても良いこと
は当業者には明白であるが、下記の式を使用するのが好
ましい。以下に示す式は、式の次数を確定するために従
来より実行されてきた計算を数多く利用しているので、
シェーディングアルゴリズムを実行する時間を節約でき
る。ここで説明する計算はあらゆる次数の式について先
に説明した走査線方式を使用している。
るためのある特定の種類の式に限定されないことは明ら
かである。この明細書の説明を読めば、本発明の範囲内
で周知のどのシェーディング方式を利用しても良いこと
は当業者には明白であるが、下記の式を使用するのが好
ましい。以下に示す式は、式の次数を確定するために従
来より実行されてきた計算を数多く利用しているので、
シェーディングアルゴリズムを実行する時間を節約でき
る。ここで説明する計算はあらゆる次数の式について先
に説明した走査線方式を使用している。
【0089】下記の例は三角形を基本として利用する
が、任意の多角形や、パラメータ面に方式を拡張して良
い。特定の点又は頂点における法線ベクトルは、面を規
定するパラメータ関数から確定される。Bartels, Beatt
y, Barsky の「An Introduction to Splines for Use
in Computer Graphics」( Margan Kanfmann, 1987
年),293〜299ページ;Faux, Pratt の「Comput
ational Geometry for Design and Manufacture. (Wil
ey, 1979年),110〜113ページを参照。
が、任意の多角形や、パラメータ面に方式を拡張して良
い。特定の点又は頂点における法線ベクトルは、面を規
定するパラメータ関数から確定される。Bartels, Beatt
y, Barsky の「An Introduction to Splines for Use
in Computer Graphics」( Margan Kanfmann, 1987
年),293〜299ページ;Faux, Pratt の「Comput
ational Geometry for Design and Manufacture. (Wil
ey, 1979年),110〜113ページを参照。
【0090】一次の解は三角形の頂点における全反射を
計算する。反射が周囲反射と、拡散反射のみから成る場
合の式は次の通りである: C(1)=(Ka+Kd*cos(α1))*C(1), C(2)=(Ka+Kd*cos(α2))*C(2), C(3)=(Ka+Kd*cos(α3))*C(3),
計算する。反射が周囲反射と、拡散反射のみから成る場
合の式は次の通りである: C(1)=(Ka+Kd*cos(α1))*C(1), C(2)=(Ka+Kd*cos(α2))*C(2), C(3)=(Ka+Kd*cos(α3))*C(3),
【0091】式中、Kaは周囲反射の係数、Kdは拡散
反射の係数である。さらに、 cos(α1)=Lx(1)*Nx(1)+Ly(1)*Ny(1)+Lz(1)*Nz(1), cos(α2)=Lx(2)*Nx(2)+Ly(2)*Ny(2)+Lz(2)*Nz(2), cos(α3)=Lx(3)*Nx(3)+Ly(3)*Ny(3)+Lz(3)*Nz(3) となっている。尚、説明を簡明にするために、上記の式
は色成分ごとの別個の式を統合したものである。カラー
スペースが加法であれば、個々の成分は同じ形態を共用
する。
反射の係数である。さらに、 cos(α1)=Lx(1)*Nx(1)+Ly(1)*Ny(1)+Lz(1)*Nz(1), cos(α2)=Lx(2)*Nx(2)+Ly(2)*Ny(2)+Lz(2)*Nz(2), cos(α3)=Lx(3)*Nx(3)+Ly(3)*Ny(3)+Lz(3)*Nz(3) となっている。尚、説明を簡明にするために、上記の式
は色成分ごとの別個の式を統合したものである。カラー
スペースが加法であれば、個々の成分は同じ形態を共用
する。
【0092】反射が鏡面反射を含むべき場合には、式は
次のようになる: C(1)=(Ka+Kd*cos(α1)))*C(1)+Ks*(cos(δ1))P*Cl, C(2)=(Ka+Kd*cos(α2)))*C(2)+Ks*(cos(δ2))P*Cl, C(3)=(Ka+Kd*cos(α3)))*C(3)+Ks*(cos(δ3))P*Cl
次のようになる: C(1)=(Ka+Kd*cos(α1)))*C(1)+Ks*(cos(δ1))P*Cl, C(2)=(Ka+Kd*cos(α2)))*C(2)+Ks*(cos(δ2))P*Cl, C(3)=(Ka+Kd*cos(α3)))*C(3)+Ks*(cos(δ3))P*Cl
【0093】式中、Clは光源の色であり、Ksは鏡面
反射の係数である。さらに、 cos(δ1)=2*cos(α1)*cos(β1)−cos(χ1) cos(δ2)=2*cos(α2)*cos(β2)−cos(χ2) cos(δ3)=2*cos(α3)*cos(β3)−cos(χ3) となっている。また、式中、
反射の係数である。さらに、 cos(δ1)=2*cos(α1)*cos(β1)−cos(χ1) cos(δ2)=2*cos(α2)*cos(β2)−cos(χ2) cos(δ3)=2*cos(α3)*cos(β3)−cos(χ3) となっている。また、式中、
【0094】 cos(β1)=Nx(1)*Vx(1)+Ny(1)*Vy(1)+Nz(1)*Vz(1), cos(β2)=Nx(2)*Vx(2)+Ny(2)*Vy(2)+Nz(2)*Vz(2), cos(β3)=Nx(3)*Vx(3)+Ny(3)*Vy(3)+Nz(3)*Vz(3), 及び cos(χ1)=Vx(1)*Lx(1)+Vy(1)*Ly(1)+Vz(1)*Lz(1), cos(χ2)=Vx(2)*Lx(2)+Vy(2)*Ly(2)+Vz(2)*Lz(2), cos(χ3)=Vx(3)*Lx(3)+Vy(3)*Ly(3)+Vz(3)*Lz(3)
【0095】ゼロ次の解を利用するときの連続する三角
形の色値の差をできる限り少なくするために、3つの頂
点の色値を平均する。(この平均は三角形の中心で一次
の解が実現する色値と一致する): C=0.33*(C(1)+C(2)+C(3))
形の色値の差をできる限り少なくするために、3つの頂
点の色値を平均する。(この平均は三角形の中心で一次
の解が実現する色値と一致する): C=0.33*(C(1)+C(2)+C(3))
【0096】一次の解は上に示すように色値を取り出
す。一次の解の場合、先に(ゼロ次の解に関して)説明
したのと同じ反射式を使用する。一次の式は頂点の色値
を平均せずに、色値を補間する。ここでは、頂点の色に
関して走査線アルゴリズム(従来の技術の項を参照)を
使用する1つのプロセスを説明する。辺論理によれば、
まず、三角形のそれぞれの辺に沿って色値を補間し、次
に、三角形の各走査線に沿って色値を補間する。
す。一次の解の場合、先に(ゼロ次の解に関して)説明
したのと同じ反射式を使用する。一次の式は頂点の色値
を平均せずに、色値を補間する。ここでは、頂点の色に
関して走査線アルゴリズム(従来の技術の項を参照)を
使用する1つのプロセスを説明する。辺論理によれば、
まず、三角形のそれぞれの辺に沿って色値を補間し、次
に、三角形の各走査線に沿って色値を補間する。
【0097】二次の式の場合には、三角形の頂点におけ
る色値を確定する。それらの色値は三角形の各辺につい
ての2つの境界条件、すなわち、三角形の各辺の2つの
端点における色値を表す。定義の上では二次の式は3つ
の境界条件を必要とするので、周囲反射に拡散反射が加
わったときの解は法線ベクトル及び光ベクトルを三角形
の頂点間のいずれかの三角形の辺上の中間位置まで補間
する。以下の例では、その位置が辺の中心であると仮定
すると共に、法線ベクトルと光ベクトルが共に三角形に
沿って変動するという最悪の場合を仮定する。従って、
この例では頂点間の距離の二分の一である第3の境界条
件(図19を参照)は次のように確定される:
る色値を確定する。それらの色値は三角形の各辺につい
ての2つの境界条件、すなわち、三角形の各辺の2つの
端点における色値を表す。定義の上では二次の式は3つ
の境界条件を必要とするので、周囲反射に拡散反射が加
わったときの解は法線ベクトル及び光ベクトルを三角形
の頂点間のいずれかの三角形の辺上の中間位置まで補間
する。以下の例では、その位置が辺の中心であると仮定
すると共に、法線ベクトルと光ベクトルが共に三角形に
沿って変動するという最悪の場合を仮定する。従って、
この例では頂点間の距離の二分の一である第3の境界条
件(図19を参照)は次のように確定される:
【0098】 Nx(4):=0.5*(Nx(1)+Nx(2)) Nx(5):=0.5*(Nx(2)+Nx(3)) Nx(6):=0.5*(Nx(3)+Nx(1) ) Ny(4):=0.5*(Ny(1)+Ny(2)) Ny(5):=0.5*(Ny(2)+Ny(3)) Ny(6):=0.5*(Ny(3)+Ny(1) ) Nz(4):=0.5*(Nz(1)+Nz(2)) Nz(5):=0.5*(Nz(2)+Nz(3)) Nz(6):=0.5*(Nz(3)+Nz(1) )式中、Nx(4),Ny(4),Nz(4)は第1の
頂点と第2の頂点との間の所定の点についての法線座
標、Nx(5),Ny(5),Nz(5)は第2の頂点
と第3の頂点との間の所定の点についての法線座標、N
x(6),Ny(6),Nz(6)は第3の頂点と第1
の頂点との間の所定の点についての法線座標である。
頂点と第2の頂点との間の所定の点についての法線座
標、Nx(5),Ny(5),Nz(5)は第2の頂点
と第3の頂点との間の所定の点についての法線座標、N
x(6),Ny(6),Nz(6)は第3の頂点と第1
の頂点との間の所定の点についての法線座標である。
【0099】さらに: Lx(4):=0.5*(Lx(1)+Lx(2)) Lx(5):=0.5*(Lx(2)+Lx(3)) Lx(6):=0.5*(Lx(3)+Lx(1) ) Ly(4):=0.5*(Ly(1)+Ly(2)) Ly(5):=0.5*(Ly(2)+Ly(3)) Ly(6):=0.5*(Ly(3)+Ly(1) ) Lz(4):=0.5*(Lz(1)+Lz(2)) Lz(5):=0.5*(Lz(2)+Lz(3)) Lz(6):=0.5*(Lz(3)+Lz(1) )式中、Lx(4),Ly(4),Lz(4)は第1の
頂点と第2の頂点との間の所定の点からの光ベクトル座
標、Lx(5),Ly(5),Lz(5)は第2の頂点
と第3の頂点との間の所定の点からの光ベクトル座標、
Lx(6),Ly(6),Lz(6)は第3の頂点と第
1の頂点との間の所定の点からの光ベクトル座標であ
る。ベクトルの大きさはベクトルを正規化するために計
算される。計算時間とコストを節約するため、次に示す
拡散重みの計算終了後まで大きさによる除算を延期する
のが好ましい:
頂点と第2の頂点との間の所定の点からの光ベクトル座
標、Lx(5),Ly(5),Lz(5)は第2の頂点
と第3の頂点との間の所定の点からの光ベクトル座標、
Lx(6),Ly(6),Lz(6)は第3の頂点と第
1の頂点との間の所定の点からの光ベクトル座標であ
る。ベクトルの大きさはベクトルを正規化するために計
算される。計算時間とコストを節約するため、次に示す
拡散重みの計算終了後まで大きさによる除算を延期する
のが好ましい:
【0100】 cos(α4):=Lx(4)*Nx(4)+Ly(4)*Ny(4) +Lz(4)*Nz(4))/(L(4)*N(4)) cos(α5):=Lx(5)*Nx(5)+Ly(5)*Ny(5) +Lz(5)*Nz(5))/(L(5)*N(5)) cos(α6):=Lx(6)*Nx(6)+Ly(6)*Ny(6) +Lz(6)*Nz(6))/(L(6)*N(6)) 式中、 L(4)=sqrt(Lx(4)*Lx(4)+Ly(4)*Ly(4)+Lz(4)*Lz(4)) L(5)=sqrt(Lx(5)*Lx(5)+Ly(5)*Ly(5)+Lz(5)*Lz(5)) L(6)=sqrt(Lx(6)*Lx(6)+Ly(6)*Ly(6)+Lz(6)*Lz(6)) 及び N(4)=sqrt(Nx(4)*Nx(4)+Ny(4)*Ny(4)+Nz(4)*Nz(4)) N(5)=sqrt(Nx(5)*Nx(5)+Ny(5)*Ny(5)+Nz(5)*Nz(5)) N(6)=sqrt(Nx(6)*Nx(6)+Ny(6)*Ny(6)+Nz(6)*Nz(6))
【0101】第3の境界条件として使用すべき中心位置
に関する複合反射は次のように確定される: C(4):=(Ka+Kd*cos(α4))*C(4) C(5):=(Ka+Kd*cos(α5))*C(5) C(6):=(Ka+Kd*cos(α6))*C(6) この例においては、頂点の色自体が三角形に沿って変動
するという最悪の場合を仮定している。すなわち、多角
形の辺に沿った中間点の色は次の通りである: C(4)=0.5*(C(1)+C(2)) C(5)=0.5*(C(2)+C(3)) C(6)=0.5*(C(3)+C(1))
に関する複合反射は次のように確定される: C(4):=(Ka+Kd*cos(α4))*C(4) C(5):=(Ka+Kd*cos(α5))*C(5) C(6):=(Ka+Kd*cos(α6))*C(6) この例においては、頂点の色自体が三角形に沿って変動
するという最悪の場合を仮定している。すなわち、多角
形の辺に沿った中間点の色は次の通りである: C(4)=0.5*(C(1)+C(2)) C(5)=0.5*(C(2)+C(3)) C(6)=0.5*(C(3)+C(1))
【0102】複合反射が鏡面反射を含むべき場合には、
中心位置における視点ベクトルをさらに確定する。この
例でも、同様に、最悪の場合、すなわち、視点ベクトル
が三角形に沿って変動する場合を仮定している。
中心位置における視点ベクトルをさらに確定する。この
例でも、同様に、最悪の場合、すなわち、視点ベクトル
が三角形に沿って変動する場合を仮定している。
【0103】 Vx(4):=0.5*(Vx(1)+Vx(2)) Vx(5):=0.5*(Vx(2)+Vx(3)) Vx(6):=0.5*(Vx(3)+Vx(1) ) Vy(4):=0.5*(Vy(1)+Vy(2)) Vy(5):=0.5*(Vy(2)+Vy(3)) Vy(6):=0.5*(Vy(3)+Vy(1) ) Vz(4):=0.5*(Vz(1)+Vz(2)) Vz(5):=0.5*(Vz(2)+Vz(3)) Vz(6):=0.5*(Vz(3)+Vz(1) )
【0104】次に、ベクトルを正規化するための大きさ
を計算する。最も低コストの公式化は、鏡面反射重みの
計算終了後まで大きさによる除算を遅らせるものであ
る。
を計算する。最も低コストの公式化は、鏡面反射重みの
計算終了後まで大きさによる除算を遅らせるものであ
る。
【0105】 cos(δ4):=2*cos(α4)*cos(β4)−cos(χ4) cos(δ5):=2*cos(α5)*cos(β5)−cos(χ5) cos(δ6):=2*cos(α6)*cos(β6)−cos(χ6) 式中、 cos(β4):=(Nx(4)*Vx(4)+Ny(4)*Vy(4)+ Nz(4)*Vz(4))/(N(4)*V(4)) cos(β5):=(Nx(5)*Vx(5)+Ny(5)*Vy(5)+ Nz(5)*Vz(5))/(N(5)*V(5)) cos(β6):=(Nx(6)*Vx(6)+Ny(6)*Vy(6)+ Nz(6)*Vz(6))/(N(6)*V(6)) 及び cos(χ4):=(Vx(4)*Lx(4)+Vy(4)*Ly(4)+ Vz(4)*Lz(4))/(V(4)*L(4)) cos(χ5):=(Vx(5)*Lx(5)+Vy(5)*Ly(5)+ Vz(5)*Lz(5))/(V(5)*L(5)) cos(χ6):=(Vx(6)*Lx(6)+Vy(6)*Ly(6)+ Vz(6)*Lz(6))/(V(6)*L(6)) 式中、 V(4):=sqrt(Vx(4)*Vx(4)+Vy(4)*Vy(4)+Vz(4)*Vz(4)) V(5):=sqrt(Vx(5)*Vx(5)+Vy(5)*Vy(5)+Vz(5)*Vz(5)) V(6):=sqrt(Vx(6)*Vx(6)+Vy(6)*Vy(6)+Vz(6)*Vz(6))
【0106】鏡面反射が加わると、複合反射は次のよう
に変化する: C(4):=(Ka+Kd*cos(α4))*C(4)+Ks*(cos(δ4)P)*Cl C(5):=(Ka+Kd*cos(α5))*C(5)+Ks*(cos(δ5)P)*Cl C(6):=(Ka+Kd*cos(α6))*C(6)+Ks*(cos(δ6)P)*Cl 付加色値C(4),C(5),C(6)は第3の境界条
件を規定する。
に変化する: C(4):=(Ka+Kd*cos(α4))*C(4)+Ks*(cos(δ4)P)*Cl C(5):=(Ka+Kd*cos(α5))*C(5)+Ks*(cos(δ5)P)*Cl C(6):=(Ka+Kd*cos(α6))*C(6)+Ks*(cos(δ6)P)*Cl 付加色値C(4),C(5),C(6)は第3の境界条
件を規定する。
【0107】先に述べた通り、二次の解は二次の式の係
数(m0,m1,m2)を取り出すために3つの境界条
件を必要とする(図17を参照): C(u(i))=m0(i)+m1(i)*u(i)+m2(i)*u(i)2 式中、0<=u(i)<=1
数(m0,m1,m2)を取り出すために3つの境界条
件を必要とする(図17を参照): C(u(i))=m0(i)+m1(i)*u(i)+m2(i)*u(i)2 式中、0<=u(i)<=1
【0108】係数について解くために、3つの境界条件
に対し連立方程式を確定する。境界条件は次のようにな
る: C(1)=m0(1) C(4)=m0(1)+0.5m1(1)+0.25m2(1) C(2)=m0(1)+m1(1)+m2(1) C(2)=m0(2) C(3)=m0(3) C(5)=m0(2)+0.5m1(2)+0.25m2(2) C(3)=m0(3) C(6)=m0(3)+0.5m1(3)+0.25m2(3) C(1)=m0(3)+m1(3)+m2(3)
に対し連立方程式を確定する。境界条件は次のようにな
る: C(1)=m0(1) C(4)=m0(1)+0.5m1(1)+0.25m2(1) C(2)=m0(1)+m1(1)+m2(1) C(2)=m0(2) C(3)=m0(3) C(5)=m0(2)+0.5m1(2)+0.25m2(2) C(3)=m0(3) C(6)=m0(3)+0.5m1(3)+0.25m2(3) C(1)=m0(3)+m1(3)+m2(3)
【0109】パラメータ変数は次の通りである: u(1):=u(1)+du(1) u(2):=u(2)+du(2) u(3):=u(3)+du(3) 式中、du(1):=1/(Py(2)-Py(1)) du(2):=
1/(Py(3)-Py(2)) du(3):=1/(Px(1)-Px(3))係数を確定したなら
ば、二次の式を正方向差分方程式にし、辺に沿って色を
計算することができる。
1/(Py(3)-Py(2)) du(3):=1/(Px(1)-Px(3))係数を確定したなら
ば、二次の式を正方向差分方程式にし、辺に沿って色を
計算することができる。
【0110】三角形の内側の色を計算するときには、二
次の解を採用し、先に示したように、辺に沿って値を補
間して、ラスタースパンの両側におけるベクトル値を確
定する。次に、スパンの中心までベクトル値を補間す
る。図21を参照すると、スパンの中心に位置する点に
おけるベクトルは次のように確定される:
次の解を採用し、先に示したように、辺に沿って値を補
間して、ラスタースパンの両側におけるベクトル値を確
定する。次に、スパンの中心までベクトル値を補間す
る。図21を参照すると、スパンの中心に位置する点に
おけるベクトルは次のように確定される:
【0111】 Nx(xc):=0.5(Nx(xl)+Nx(xr)) Lx(xc):=0.5(Lx(xl)+Lx(xr)) Vx(xc):=0.5(Vx(xl)+Vx(xr)) Ny(xc):=0.5(Ny(xl)+Ny(xr)) Ly(xc):=0.5(Ly(xl)+Ly(xr)) Vy(xc):=0.5(Vy(xl)+Vy(xr)) Nz(xc):=0.5(Nz(xl)+Nz(xr)) Lz(xc):=0.5(Lz(xl)+Lz(xr)) Vz(xc):=0.5(Vz(xl)+Vz(xr)) そこから、反射式の余弦項を計算する: cos(δxc):=2*cos(αxc)*cos(βxc)−cos(χxc)
【0112】 式中、 cos(αxc):=(Lx(xc)*Nx(xc)+Ly(xc)*Ny(xc)+ Lz(xc)*Nz(xc)))/(L(xc)*N(xc)) cos(βxc):=(Nx(xc)*Vx(xc)+Ny(xc)*Vy(xc)+ Nz(xc)*Vz(xc)))/(N(xc)*V(xc)) cos(χxc):=(Vx(xc)*Lx(xc)+Vy(xc)*Ly(xc)+ Vz(xc)*Lz(xc)))/(V(xc)*L(xc)) 及び L(xc):=sqrt(Lx(xc)*Lx(xc)+Ly(xc)*Ly(xc)+Lz(xc)*Lz(xc) ) N(xc):=sqrt(Nx(xc)*Nx(xc)+Ny(xc)*Ny(xc)+Nz(xc)*Nz(xc )) V(xc):=sqrt(Vx(xc)*Vx(xc)+Vy(xc)*Vy(xc)+Vz(xc)*Vz(x c))
【0113】従って、スパン中心の色は: C(xc):=(Ka+Kd*cos(αxc))*C(xc)+Ks*cos(δxc)P*Cl となるが、これは境界条件を完全なものにするための第
3の色値を提供する(図21を参照):
3の色値を提供する(図21を参照):
【0114】 C(xl)=m0(4) C(xc)=m0(4)+0.5*m1(4)+0.25*m2(4) C(xr)=m0(4)+m1(4)+m2(4) 次に、正方向差分方程式を利用して三角形に沿って補間
を実行し、完全な反射式を実現する。
を実行し、完全な反射式を実現する。
【0115】この方法を三次の式に拡張することができ
る。三次の解について要求される4つの境界条件を指定
するために、辺ごとに4つの色値を計算する。2つの頂
点色値に加えて、辺の長さの(1/3)及び(2/3)
の位置の色値を確定する。すなわち、辺論理に関わる境
界条件は次のようになる(図22を参照):
る。三次の解について要求される4つの境界条件を指定
するために、辺ごとに4つの色値を計算する。2つの頂
点色値に加えて、辺の長さの(1/3)及び(2/3)
の位置の色値を確定する。すなわち、辺論理に関わる境
界条件は次のようになる(図22を参照):
【0116】 C(1)=m0(1) C(4)=m0(1)+0.33m1(1)+0.11m2(1)+0.04m3(1) C(5)=m0(1)+0.67m1(1)+0.44m2(1)+0.30m3(1) C(2)=m0(1)+m1(1)+m2(1)+m3(1) C(2)=m0(2) C(6)=m0(2)+0.33m1(2)+0.11m2(2)+0.04m3(2) C(7)=m0(2)+0.67m1(2)+0.44m2(2)+0.30m3(2) C(3)=m0(2)+m1(2)+m2(2)+m3(2) C(3)=m0(3) C(8)=m0(3)+0.33m1(3)+0.11m2(3)+0.04m3(3) C(9)=m0(3)+0.67m1(3)+0.44m2(3)+0.30m3(3) C(1)=m0(3)+m1(3)+m2(3)+m3(3)
【0117】次に、ラスタースキャンに沿った4つの
境界条件を確定する。走査論理に関わる境界条件は次の
ようになる(図23を参照): C(xl)=m0(4) C(xm)=m0(4)+0.33m1(4)+0.11m2(4)+0.04m3(4) C(xn)=m0(4)+0.67m1(4)+0.44m2(4)+0.30m3(4) C(xr)=m0(4)+m1(4)+m2(4)+m3(4)
境界条件を確定する。走査論理に関わる境界条件は次の
ようになる(図23を参照): C(xl)=m0(4) C(xm)=m0(4)+0.33m1(4)+0.11m2(4)+0.04m3(4) C(xn)=m0(4)+0.67m1(4)+0.44m2(4)+0.30m3(4) C(xr)=m0(4)+m1(4)+m2(4)+m3(4)
【0118】走査線方式は、三角形に沿って頂点の属
性(色)を補間する1つの方法である。走査線方式の利
点は、多角形が常に辺の間で複数の単純なセグメントに
直され、セグメントごとに頂点の属性を計算するため
に、任意の形状の多角形に拡張できることである。とこ
ろが、計算される差分方程式は除算計算を含むのでプロ
セスは時間をとるものとなる。あるいは、基本の三角形
の場合には、平面方程式を使用することができる。3つ
の境界条件は三角形の3つの頂点における頂点の状態で
あり、差分方程式は基本全体について計算される。すな
わち、差分方程式は三角形全体について適用されるので
ある。平面方程式は三角形である多角形には容易に適用
できるが、4つ以上の頂点を有する多角形については、
頂点が共通平面にない場合があるので、平面方程式を適
用できないこともある。
性(色)を補間する1つの方法である。走査線方式の利
点は、多角形が常に辺の間で複数の単純なセグメントに
直され、セグメントごとに頂点の属性を計算するため
に、任意の形状の多角形に拡張できることである。とこ
ろが、計算される差分方程式は除算計算を含むのでプロ
セスは時間をとるものとなる。あるいは、基本の三角形
の場合には、平面方程式を使用することができる。3つ
の境界条件は三角形の3つの頂点における頂点の状態で
あり、差分方程式は基本全体について計算される。すな
わち、差分方程式は三角形全体について適用されるので
ある。平面方程式は三角形である多角形には容易に適用
できるが、4つ以上の頂点を有する多角形については、
頂点が共通平面にない場合があるので、平面方程式を適
用できないこともある。
【0119】平面方程式を使用してシェーディングを確
定するためには、まず、3つの頂点における色を計算す
る。次に、境界条件を計算する。境界条件の計算に当た
っては、三角形の中心のベクトル(法線ベクトル,光ベ
クトル及び視点ベクトル)を確定する(図24を参
照)。先に説明した反射の式を使用して、ベクトルを色
値に補間する。次に、それら4つの色値を双線形方程式
に代入する。
定するためには、まず、3つの頂点における色を計算す
る。次に、境界条件を計算する。境界条件の計算に当た
っては、三角形の中心のベクトル(法線ベクトル,光ベ
クトル及び視点ベクトル)を確定する(図24を参
照)。先に説明した反射の式を使用して、ベクトルを色
値に補間する。次に、それら4つの色値を双線形方程式
に代入する。
【0120】 C(u,v)= |1 v1 | |m00 m01||1| |m10 m11||u1| 及び0<=u<=1,0<=v<=1。 また、(u,v)パラメータ変数は次のようになる: u:=u+du 式中、du=1/(Py(2)-Py(1)) v:=v+dv 式中、dv=1/(Px(2)-Py(3))
【0121】一次の解に関わる境界条件は: C(1)= m00+m01*u+m10*v+m11*u*v 式中、u=0,v=0 C(2)= m00+m01*u+m10*v+m11*u*v 式中、u=1,v=1 C(3)= m00+m01*u+m10*v+m11*u*v 式中、u=1,v=0 C(4)= m00+m01*u+m10*v+m11*u*v 式中、u=2/3,v=1/2 すなわち:C(1)= m00 C(2)= m00+m01+m10+m11 C(3)= m00+m01 C(4)= m00+0.67*m01+0.5*m10+0.33*m11
【0122】(C00,C01,C10,C11)係数
について代数解が存在する。色に関する双線形方程式を
正方向差分方程式に変換し、それらを使用して三角形に
沿って補間を実行する。
について代数解が存在する。色に関する双線形方程式を
正方向差分方程式に変換し、それらを使用して三角形に
沿って補間を実行する。
【0123】平面方式を二次の式に拡張しても良い。そ
の公式化は、次のようになるであろう: C(u,v)= |1 v1 v2||m00 m01 m02||1| |m10 m11 m12 ||u1| |m20 m21 m22 ||u2| 式中、0<=u<=1,0<=v<=1。 二次の解は9つの境界条件を要求するので、9つの位置
におけるベクトルを確定しなければならない(図26を
参照)。反射の式(先に説明した)を使用して、9つの
位置の色値を計算する。次に、(m00,m01,m2
2)係数についての境界方程式を解く。従って、境界条
件は次のようになる(図27を参照)。
の公式化は、次のようになるであろう: C(u,v)= |1 v1 v2||m00 m01 m02||1| |m10 m11 m12 ||u1| |m20 m21 m22 ||u2| 式中、0<=u<=1,0<=v<=1。 二次の解は9つの境界条件を要求するので、9つの位置
におけるベクトルを確定しなければならない(図26を
参照)。反射の式(先に説明した)を使用して、9つの
位置の色値を計算する。次に、(m00,m01,m2
2)係数についての境界方程式を解く。従って、境界条
件は次のようになる(図27を参照)。
【0124】 C(1)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=0,v=0 C(2)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1,v=1 C(3)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1,v=0 C(4)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1/2,v=1/2 C(5)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1,v=1/2 C(6)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1/2,v=0 C(7)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=2/3,v=2/3 C(8)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=2/3,v=1/3 C(9)= m00+m01*u+m02*u2+m10*v+m11*u*v+m12*u2v +m20*v2+m21*u*v2+m22*u2*v2 式中、u=1/3,v=1/3
【0125】 すなわち、 C(1)=1.00*m00 C(2)=1.00*m00+1.00*m01+1.00*m02+1.00*m10+1.00*m11 +1.00*m12+1.00*m20+1.00*m21+1.00*m22 C(3)=1.00*m00+1.00*m01+1.00*m02 C(4)=1.00*m00+0.50*m01+0.25*m02+0.50*m10+0.25*m11 +0.12*m12+0.25*m20+0.12*m21+0.06*m22 C(5)=1.00*m00+1.00*m01+1.00*m02+0.50*m10+0.50*m11 +0.50*m12+0.25*m20+0.12*m21+0.25*m22 C(6)=1.00*m00+0.50*m01+0.25*m02+1.00*m10+0.50*m11 +0.25*m12+1.00*m20+0.50*m21+0.25*m22 C(7)=1.00*m00+0.67*m01+0.44*m02+1.67*m10+0.44*m11 +0.30*m12+0.40*m20+0.30*m21+0.19*m22 C(8)=1.00*m00+0.67*m01+1.44*m02+0.33*m10+0.22*m11 +0.15*m12+0.11*m20+0.07*m21+0.05*m22 C(9)=1.00*m00+0.33*m01+0.11*m02+0.33*m10+0.11*m11 +0.04*m12+0.11*m20+0.04*m21+0.01*m22
【0126】次に、色に関する四次式を三角形に沿っ
て補間するために使用される正方向差分方程式に変換す
る。
て補間するために使用される正方向差分方程式に変換す
る。
【0127】二次の解については3つの例外がある。第
1の状況は、重みが正のままであるように確保する関数
に関連する: cos(α(i)):=max(cos(α(i),0)) cos(δ(i)):=max(cos(δ(i),0)) 拡散重みが負になることがわかったならば、三角形の辺
上の、値がゼロになる位置を確定する。この点で三角形
を分割して、三角形を2つ、3つ又は4つの三角形に細
分する。三角形の数は、クランプ値を有することがわか
った辺が1つであるか、2つであるか又は3つであるか
によって決まる。
1の状況は、重みが正のままであるように確保する関数
に関連する: cos(α(i)):=max(cos(α(i),0)) cos(δ(i)):=max(cos(δ(i),0)) 拡散重みが負になることがわかったならば、三角形の辺
上の、値がゼロになる位置を確定する。この点で三角形
を分割して、三角形を2つ、3つ又は4つの三角形に細
分する。三角形の数は、クランプ値を有することがわか
った辺が1つであるか、2つであるか又は3つであるか
によって決まる。
【0128】第2の状況は、面の湾曲が大きいときに起
こる。距離 cos(φ)はこの状態を表している。三次の
式は三角形に沿った放線ベクトルの変動を少なく見積も
っていると考えられるので、三角形を複数の三角形に細
分する。
こる。距離 cos(φ)はこの状態を表している。三次の
式は三角形に沿った放線ベクトルの変動を少なく見積も
っていると考えられるので、三角形を複数の三角形に細
分する。
【0129】第3の状況は、光源が三角形に近接してい
るときに起こる。距離cos(γ)はこの状態を表してい
る。三次の式は三角形に沿った光ベクトルの変動を少な
く見積もっていると考えられるので、三角形を複数の三
角形に細分する。
るときに起こる。距離cos(γ)はこの状態を表してい
る。三次の式は三角形に沿った光ベクトルの変動を少な
く見積もっていると考えられるので、三角形を複数の三
角形に細分する。
【0130】以下には、本発明の適応シェーディングシ
ステムの実例について論じる。この例は拡散照明の場合
のみを含み、鏡面照明については考慮しない。鏡面照明
を考慮しないので、視点ベクトルを計算する必要はな
い。画像は、4つの三角形を形成する6つの頂点から成
る三角形の編目から構成されている。この例では、各頂
点の色値C(i)は一定であり且つ各項目の光ベクトル
L(i)は一定であるが、各頂点の放線ベクトルN
(i)は変動するものと仮定する。法線ベクトルに関す
る値は次の通りである:
ステムの実例について論じる。この例は拡散照明の場合
のみを含み、鏡面照明については考慮しない。鏡面照明
を考慮しないので、視点ベクトルを計算する必要はな
い。画像は、4つの三角形を形成する6つの頂点から成
る三角形の編目から構成されている。この例では、各頂
点の色値C(i)は一定であり且つ各項目の光ベクトル
L(i)は一定であるが、各頂点の放線ベクトルN
(i)は変動するものと仮定する。法線ベクトルに関す
る値は次の通りである:
【0131】 N(v0)=(0.000000, 0.000000, 1.000000) N(v1)=(0.017450, -0.017452, 0.999695) N(v2)=(0.035188, -0.034590, 0.998782) N(v3)=(0.053199, -0.051396, 0.997260) N(v4)=(0.071466, -0.067857, 0.995132) N(v5)=(0.089973, -0.083957, 0.992399)
【0132】この例では、光ベクトルは L(vi) = (0,0,1) であると仮定する。第1のステップは、次の式に従って
拡散重みを計算する: cos(α(v))=N(v)・L(v)
拡散重みを計算する: cos(α(v))=N(v)・L(v)
【0133】この例に関わる値は次の通りである: cos(α(v0))= 1.000000 cos(α(v1))= 0.999695 cos(α(v2))= 0.998782 cos(α(v3))= 0.997260 cos(α(v4))= 0.995132 cos(α(v5))= 0.992399
【0134】次に、強さの変動を確定する。拡散重み間
の最大差は最大変動を予測する距離である:dcos(α
(t0))=max(abs(cos(α(v0)))-cos(α(v
1))),)abs(cos(α(v1))-cos(α(v2)))-a
bs(cos(α(v2))-cos(α(v0))))dcos(α(t
1))=max(abs(cos(α(v0)))-cos(α(v
3))),)abs(cos(α(v3))-cos(α(v1)))-a
bs(cos(α(v1))-cos(α(v0))))dcos(α(t
2))=max(abs(cos(α(v1)))-cos(α(v
4))),)abs(cos(α(v4))-cos(α(v2)))-a
bs(cos(α(v2))-cos(α(v1))))dcos(α(t
3))=max(abs(cos(α(v0)))-cos(α(v
2))),)abs(cos(α(v2))-cos(α(v5)))-a
bs(cos(α(v5))-cos(α(v0))))
の最大差は最大変動を予測する距離である:dcos(α
(t0))=max(abs(cos(α(v0)))-cos(α(v
1))),)abs(cos(α(v1))-cos(α(v2)))-a
bs(cos(α(v2))-cos(α(v0))))dcos(α(t
1))=max(abs(cos(α(v0)))-cos(α(v
3))),)abs(cos(α(v3))-cos(α(v1)))-a
bs(cos(α(v1))-cos(α(v0))))dcos(α(t
2))=max(abs(cos(α(v1)))-cos(α(v
4))),)abs(cos(α(v4))-cos(α(v2)))-a
bs(cos(α(v2))-cos(α(v1))))dcos(α(t
3))=max(abs(cos(α(v0)))-cos(α(v
2))),)abs(cos(α(v2))-cos(α(v5)))-a
bs(cos(α(v5))-cos(α(v0))))
【0135】最大変動の値は次の通りである: cosdiff(α(t0))= 0.001218 cosdiff(α(t1))= 0.002740 cosdiff(α(t2))= 0.004563 cosdiff(α(t3))= 0.007601
【0136】次に、最大変動を第1の閾値(ε1)及び
第2の閾値(ε2)と比較する。この例における閾値は
次の通りである:
第2の閾値(ε2)と比較する。この例における閾値は
次の通りである:
【0137】 ε1=0.0025 e1はゼロ次と一次とを区別する。 ε2=0.0050 e2は一次と二次とを区別する。
【0138】第1の三角形に関しては、 0<max(cosdiff(α(t0)))<e1 であるので、ゼロ次の式を使用する。3つの頂点におけ
る拡散重みに差があれば、それを補正するために、値を
平均する: cos(α(t0))=0.333*(cos(α(v0)) +cos(α(v1))+cos(α(v2)))
る拡散重みに差があれば、それを補正するために、値を
平均する: cos(α(t0))=0.333*(cos(α(v0)) +cos(α(v1))+cos(α(v2)))
【0139】次に、一定色を確定する: C(t0)=(Ka+Kd*cos(α(t0))*C(t0)) 第2の三角形及び第3の三角形に関しては、 ε1 <max(dcos(α(t1)))<ε2 ε2 <max(dcos(α(t2)))<ε2 となるので、一次の式を使用する。走査線アルゴリズム
と組み合わせて使用する場合、解は、まず、三角形の辺
に沿って色値を補間することを要求する。次に、三角形
の左側の辺から右側の辺に向かって色値を補間する。た
とえば、第2の三角形に関していうと、 C(v0)=(Ka+Kd*cos(α(v0))*C(t1)) C(v3)=(Ka+Kd*cos(α(v3))*C(t1)) C(v1)=(Ka+Kd*cos(α(v1))*C(t1))
と組み合わせて使用する場合、解は、まず、三角形の辺
に沿って色値を補間することを要求する。次に、三角形
の左側の辺から右側の辺に向かって色値を補間する。た
とえば、第2の三角形に関していうと、 C(v0)=(Ka+Kd*cos(α(v0))*C(t1)) C(v3)=(Ka+Kd*cos(α(v3))*C(t1)) C(v1)=(Ka+Kd*cos(α(v1))*C(t1))
【0140】次に、走査線論理を使用して、まず、三角
形の辺において色値を補間し、続いて、三角形の内側の
色値を補間する。
形の辺において色値を補間し、続いて、三角形の内側の
色値を補間する。
【0141】第4の三角形の最大変動は、 dcos(α(t3))>ε2 となるので、この三角形については二次の式(フォンの
シェーディング)を選択する。この方式は、頂点に拡散
重みが既に存在していることを利用することができる
が、三角形の辺の法線成分を伝播しなければならない。
各ステップの成分を正規化する。次に、三角形の内側を
たどって法線成分を伝搬し、各画素の法線成分を正規化
する。その後、各画素の拡散重みを確定する:
シェーディング)を選択する。この方式は、頂点に拡散
重みが既に存在していることを利用することができる
が、三角形の辺の法線成分を伝播しなければならない。
各ステップの成分を正規化する。次に、三角形の内側を
たどって法線成分を伝搬し、各画素の法線成分を正規化
する。その後、各画素の拡散重みを確定する:
【0142】 cos(α(x,y))=Lx(x,y)*Nx(x,y)+Ly(x,y)*Ny(x,y) +Lz(x,y)*Nz(x,y) C(x,y)=(Ka+Kd*cos(α(x,y)))*C(t3) 式中、L(x,y)は仮定の上では一定である。
【0143】以上、本発明を好ましい実施例に関連して
説明したが、先の説明を参照すれば当業者には数多くの
代替構成、変形、変更及び利用法が明白になることは明
らかである。すなわち、本発明は先に説明したシェーデ
ィング式を越えるシェーディング式を含むことができ
る。実行される試験の数及び利用できる次数の式の数を
増すために、閾値を追加することが可能である。あるい
は、ゼロ次と一次のシェーディング式または一次と二次
のシェーディング式のみを利用するようにシステムを構
成することができる。
説明したが、先の説明を参照すれば当業者には数多くの
代替構成、変形、変更及び利用法が明白になることは明
らかである。すなわち、本発明は先に説明したシェーデ
ィング式を越えるシェーディング式を含むことができ
る。実行される試験の数及び利用できる次数の式の数を
増すために、閾値を追加することが可能である。あるい
は、ゼロ次と一次のシェーディング式または一次と二次
のシェーディング式のみを利用するようにシステムを構
成することができる。
【図1】,
【図2】従来のシェーディング方式で使用していた用語
及び変数を示す図。
及び変数を示す図。
【図3】鏡面シェーディング計算で使用する幾何学的配
置を示す図。
置を示す図。
【図4】本発明のシステムで採用するコンピュータシス
テムの1例を示す図。
テムの1例を示す図。
【図5】,
【図6】,
【図7】高画質のシェーディング画像を生成するための
高次の式を必要とする面の照明状況を示す図。
高次の式を必要とする面の照明状況を示す図。
【図8】本発明の好ましい一実施例を示すフローチャー
ト。
ト。
【図9】,
【図10】それぞれ本発明の別の好ましい実施例を示す
フローチャート。
フローチャート。
【図11】〜
【図14】本発明の好ましい一実施例で採用する用語及
び変数を示す図。
び変数を示す図。
【図15】〜
【図17】本発明の好ましい一実施例で採用する用語及
び変数をさらに示す図。
び変数をさらに示す図。
【図18】本発明のシステムに従って生成した画像の画
質と、フォンシェーディング方式に従って生成した画像
とを比較した表。
質と、フォンシェーディング方式に従って生成した画像
とを比較した表。
【図19】〜
【図23】本発明のシステムにおいて二次の式及び三次
の式を利用するときに採用する用語及び変数を示す図。
の式を利用するときに採用する用語及び変数を示す図。
【図24】〜
【図27】本発明のシステムにおいて平面式を利用する
ときに採用する用語及び変数を示す図。
ときに採用する用語及び変数を示す図。
101 コンピュータ 102 入出力(I/O)回路 103 中央処理装置(CPU) 104 メモリ 105 入力装置 106 大容量記憶装置 107 表示モニター 108 フレームバッファ 109 カーソル制御装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェイムズ・ヴァン・ルー アメリカ合衆国 カリフォルニア州・ロ ス アルトス・ファーンハム アヴェニ ュ・1864 (72)発明者 ジャック・アール・マッケオウン アメリカ合衆国 カリフォルニア州・カ ッパチーノ・アボケイド プレイス・ 710196 (72)発明者 ムクンド・バークタ アメリカ合衆国 カリフォルニア州・サ ン ホゼ・ウィンドソー パーク ドラ イブ・4460 (56)参考文献 特開 平2−171877(JP,A) 特開 平2−69882(JP,A) 特開 昭62−204386(JP,A)
Claims (2)
- 【請求項1】 図形のシェーディング画像にして、光源
に応じてシェーディングされていてユーザーが希望する
画質を備えているシェーディング画像を、画素のマトリ
クスから構成された表示装置上に生成する装置であっ
て、中央処理装置(CPU)と、メモリと、表示装置に
接続されるフレームバッファとを具備し、前記フレーム
バッファには表示装置における画素位置と画素の色とを
それぞれ含む複数の画素データが記憶され、前記フレー
ムバッファに記憶されている画素データに従ってシェー
ディング画像を生成する装置において、 a)CPU及びフレームバッファに結合され、次の1)
〜4)を備えたシェーディング手段を備え、 1)前記CPUに接続され、そのCPUから図形画像を
定める複数の多角形を受ける入力手段であって、複数の
頂点をそれぞれ有する各多角形が、頂点の位置と、各頂
点での法線ベクトルすなわち多角形の各頂点における面
に対する法線ベクトルとにより定められものである、複
数の多角形を受ける入力手段. 2)各多角形に沿った反射を確定すべく、多角形に沿っ
て最高の品質の反射を生成する最高の次数の反射式を含
めて少なくとも3つの次数の反射式の組から、採用すべ
き次数の反射式を選択する、選択手段にして、 i)前記多角形における、各頂点の光ベクトルの組ある
いは視点ベクトルの組のうち少なくとも1つの組を含む
所定の図形特性について、それらの変動の程度を決定す
る変動決定手段と、 ii)決定された変動度を、設定変動度を示す図形特性
閾値と比較し、変動度がその閾値より大きいとき、制御
手段により所定の高次の反射式が選択されるよう構成さ
れた比較手段とを具備している、選択手段. 3)選択手段により確定された次数の反射式を受け取
り、その次数の反射式を採用して多角形に沿った反射を
確定するとともに、シェーディング多角形画像を表す複
数の修正画素データを生成する反射確定手段. 4)前記フレームバッファに結合し、シェーディング多
角形を表している複数の修正画素データを前記フレーム
バッファへ出力する出力手段. b) 前記フレームバッファ及び表示装置に結合し、前
記フレームバッファに記憶されている修正画素データを
読み取り、表示装置における対応する画素を修正画素デ
ータにより指定される色でイネーブルして、表示装置に
シェーディング多角形画像を生成する表示制御手段を備
えている、 図形のシェーディング画像を生成する装置。 - 【請求項2】 CPUと、メモリと、フレームバッファ
と、このフレームバッファに接続されていて画素マトリ
クスから構成されて図形画像を表示する表示装置とを具
備し、表示装置における画素位置と画素の色とをそれぞ
れ含む複数の画素データにして、前記フレームバッファ
に記憶された画素データによって、図形画像が定まる、
図形表示システムにおいて、光源に応じてシェーディン
グされていてユーザーが希望する画質を備えているシェ
ーディング画像を生成する、シェーディング画像の生成
方法であって、 a) 図形画像を定める複数の多角形にして、それぞれ
複数の頂点を有しており、頂点の位置と、各頂点での法
線ベクトルすなわち多角形の各頂点における面に対する
法線ベクトルとによって定められる、複数の多角形を受
ける過程と、 b) 各多角形に沿った反射を確定すべく、多角形に沿
って最高の品質の反射を生成する最高の次数の反射式を
含めて少なくとも3つの次数の反射式の組から、採用す
べき次数の反射式を選択する、選択過程にして、 1)前記多角形における、各頂点の光ベクトルの組ある
いは視点ベクトルの組のうち少なくとも1つの組を含む
所定の図形特性について、それらの変動の程度を決定
し、 2)決定された変動度を、設定変動度を示す図形特性閾
値と比較し、変動度がその閾値より大きいとき、制御手
段により所定の高次の反射式が選択できるようになすこ
と、 を含む選択過程と、 c) 選択された次数の反射式を採用して多角形に沿っ
た反射を確定するとともに、シェーディング多角形画像
を表す複数の修正何素データを生成する過程と、 d) シェーディング多角形を表している複数の修正画
素データを前記フレームバッファへ出力する過程と、 e) 前記フレームバッファに記憶されている修正画素
データを読み取り、表示装置における対応する画素を修
正画素データにより指定される色でイネーブルして、表
示装置にシェーディング多角形画像を生成する過程と、 を備えた、シェーディング画像の生成方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US560,869 | 1990-07-26 | ||
US07/560,869 US5253339A (en) | 1990-07-26 | 1990-07-26 | Method and apparatus for adaptive Phong shading |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04233674A JPH04233674A (ja) | 1992-08-21 |
JP2645620B2 true JP2645620B2 (ja) | 1997-08-25 |
Family
ID=24239700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3181578A Expired - Fee Related JP2645620B2 (ja) | 1990-07-26 | 1991-06-27 | シェーディング画像を生成する装置およびその生成方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US5253339A (ja) |
JP (1) | JP2645620B2 (ja) |
KR (1) | KR960012670B1 (ja) |
CN (2) | CN1048347C (ja) |
AU (1) | AU638102B2 (ja) |
CA (1) | CA2045889C (ja) |
DE (1) | DE4124564B4 (ja) |
FR (1) | FR2665277B1 (ja) |
GB (1) | GB2246497B (ja) |
HK (1) | HK65995A (ja) |
SG (1) | SG32582G (ja) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5415549A (en) * | 1991-03-21 | 1995-05-16 | Atari Games Corporation | Method for coloring a polygon on a video display |
JP2682559B2 (ja) * | 1992-09-30 | 1997-11-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 物体の画像をディスプレイ装置上に表示する装置及び方法並びにコンピュータ・グラフィックス表示システム |
GB2271259A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271261A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
US5739820A (en) * | 1992-11-19 | 1998-04-14 | Apple Computer Inc. | Method and apparatus for specular reflection shading of computer graphic images |
JPH06274653A (ja) * | 1993-03-18 | 1994-09-30 | Fujitsu Ltd | グラフィック表示装置 |
EP0622747B1 (en) * | 1993-04-01 | 2000-05-31 | Sun Microsystems, Inc. | Method and apparatus for an adaptive texture mapping controller |
US5798765A (en) * | 1994-03-21 | 1998-08-25 | Motorola, Inc. | Three dimensional light intensity display map |
JP3794502B2 (ja) | 1994-11-29 | 2006-07-05 | ソニー株式会社 | 画像領域抽出方法及び画像領域抽出装置 |
JP3442181B2 (ja) * | 1995-02-17 | 2003-09-02 | 株式会社ナムコ | 3次元ゲーム装置及び画像合成方法 |
US5704024A (en) * | 1995-07-20 | 1997-12-30 | Silicon Graphics, Inc. | Method and an apparatus for generating reflection vectors which can be unnormalized and for using these reflection vectors to index locations on an environment map |
JPH09128529A (ja) * | 1995-10-30 | 1997-05-16 | Sony Corp | ディジタル画像の雑音の投影に基づく除去方法 |
JP3994445B2 (ja) * | 1995-12-05 | 2007-10-17 | ソニー株式会社 | 動きベクトル検出装置及び動きベクトル検出方法 |
DE19606357A1 (de) * | 1996-02-12 | 1997-08-14 | Gmd Gmbh | Bildverarbeitungsverfahren zur Darstellung von spiegelnden Objekten und zugehörige Vorrichtung |
TW357327B (en) * | 1996-08-02 | 1999-05-01 | Sony Corp | Methods, apparatus and program storage device for removing scratch or wire noise, and recording media therefor |
JP3387750B2 (ja) * | 1996-09-02 | 2003-03-17 | 株式会社リコー | シェーディング処理装置 |
WO1998015328A1 (fr) | 1996-10-09 | 1998-04-16 | Namco Ltd. | Machine a jeu et support de donnees |
US5854632A (en) * | 1996-10-15 | 1998-12-29 | Real 3D | Apparatus and method for simulating specular reflection in a computer graphics/imaging system |
US6078616A (en) | 1997-03-13 | 2000-06-20 | Sony Corporation | Methods and apparatus for error concealment utilizing temporal domain motion vector estimation |
DE19714915A1 (de) | 1997-04-03 | 1998-10-08 | Gmd Gmbh | Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens |
JP3514945B2 (ja) * | 1997-05-26 | 2004-04-05 | 株式会社ソニー・コンピュータエンタテインメント | 画像作成方法および画像作成装置 |
US6226006B1 (en) * | 1997-06-27 | 2001-05-01 | C-Light Partners, Inc. | Method and apparatus for providing shading in a graphic display system |
JP2001509934A (ja) * | 1997-11-14 | 2001-07-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | コンピュータグラフィックス・バンプマッピングの方法及び装置 |
US6072505A (en) * | 1998-04-01 | 2000-06-06 | Real 3D, Inc. | Method and apparatus to efficiently interpolate polygon attributes in two dimensions at a prescribed clock rate |
JP4383585B2 (ja) * | 1998-06-30 | 2009-12-16 | シーメンス コーポレイト リサーチ インコーポレイテツド | コンピュータグラフィック処理方法 |
US6552726B2 (en) * | 1998-07-17 | 2003-04-22 | Intel Corporation | System and method for fast phong shading |
US6259454B1 (en) | 1998-08-11 | 2001-07-10 | S3 Graphics Co., Ltd. | Method and apparatus for interpolative, adaptive illumination in 3D graphics |
EP1026639A3 (en) | 1999-02-04 | 2002-09-04 | Canon Kabushiki Kaisha | 3D computer graphics processing apparatus and method |
DE60026785T2 (de) | 1999-03-01 | 2006-09-07 | Canon K.K. | Bildverarbeitungsgerät |
DE19915308A1 (de) * | 1999-04-03 | 2000-10-12 | Daimler Chrysler Ag | Verfahren zur zweidimensionalen Bildpunkt-Darstellung von Objekten auf einer Anzeigevorrichtung |
US6226007B1 (en) | 1999-05-21 | 2001-05-01 | Sun Microsystems, Inc. | Method and apparatus for modeling specular reflection |
JP2001084405A (ja) * | 1999-09-16 | 2001-03-30 | Sega Corp | ポリゴン画像形成方法及び、これを用いた画像処理装置 |
JP3269814B2 (ja) * | 1999-12-03 | 2002-04-02 | 株式会社ナムコ | 画像生成システム及び情報記憶媒体 |
US6654013B1 (en) * | 2000-03-17 | 2003-11-25 | Hewlett-Packard Development Company, Lp. | Apparatus for and method of enhancing shape perception with parametric texture maps |
US7071937B1 (en) * | 2000-05-30 | 2006-07-04 | Ccvg, Inc. | Dirt map method and apparatus for graphic display system |
US6614431B1 (en) * | 2001-01-18 | 2003-09-02 | David J. Collodi | Method and system for improved per-pixel shading in a computer graphics system |
JP4581261B2 (ja) | 2001-02-14 | 2010-11-17 | ソニー株式会社 | 演算装置、演算処理方法及び画像処理装置 |
FR2826769B1 (fr) * | 2001-06-29 | 2003-09-05 | Thales Sa | Procede d'affichage d'informations cartographiques sur ecran d'aeronef |
US8133115B2 (en) | 2003-10-22 | 2012-03-13 | Sony Computer Entertainment America Llc | System and method for recording and displaying a graphical path in a video game |
US20060071933A1 (en) * | 2004-10-06 | 2006-04-06 | Sony Computer Entertainment Inc. | Application binary interface for multi-pass shaders |
US7636126B2 (en) | 2005-06-22 | 2009-12-22 | Sony Computer Entertainment Inc. | Delay matching in audio/video systems |
US20070139408A1 (en) * | 2005-12-19 | 2007-06-21 | Nokia Corporation | Reflective image objects |
US8976173B2 (en) * | 2006-01-27 | 2015-03-10 | Tandent Vision Science, Inc. | Bi-illuminant dichromatic reflection model for image manipulation |
US8976174B2 (en) * | 2006-01-27 | 2015-03-10 | Tandent Vision Science, Inc. | Bi-illuminant dichromatic reflection model for image manipulation |
US7965859B2 (en) | 2006-05-04 | 2011-06-21 | Sony Computer Entertainment Inc. | Lighting control of a user environment via a display device |
US7880746B2 (en) | 2006-05-04 | 2011-02-01 | Sony Computer Entertainment Inc. | Bandwidth management through lighting control of a user environment via a display device |
US8169435B2 (en) * | 2007-12-06 | 2012-05-01 | Esko Ip Nv | Generating and rendering three dimensional models of flexible packaging |
US20100128038A1 (en) * | 2008-11-25 | 2010-05-27 | Sony Computer Entertainment America Inc. | Method and apparatus for interpolating color and direction as one entity in computer graphics |
US8355022B2 (en) * | 2008-11-25 | 2013-01-15 | Sony Computer Entertainment America Llc | Method and apparatus for aggregating light sources per-vertex in computer graphics |
JP5561975B2 (ja) * | 2009-03-09 | 2014-07-30 | カルソニックカンセイ株式会社 | 表面加工データの作成方法および装置 |
US10786736B2 (en) | 2010-05-11 | 2020-09-29 | Sony Interactive Entertainment LLC | Placement of user information in a game space |
US9342817B2 (en) | 2011-07-07 | 2016-05-17 | Sony Interactive Entertainment LLC | Auto-creating groups for sharing photos |
US9208603B2 (en) * | 2012-05-03 | 2015-12-08 | Zemax, Llc | Methods and associated systems for simulating illumination patterns |
US9965893B2 (en) * | 2013-06-25 | 2018-05-08 | Google Llc. | Curvature-driven normal interpolation for shading applications |
US10733794B2 (en) | 2013-12-13 | 2020-08-04 | Nvidia Corporation. | Adaptive shading in a graphics processing pipeline |
US9552667B2 (en) | 2013-12-13 | 2017-01-24 | Nvidia Corporation | Adaptive shading in a graphics processing pipeline |
IL233523A (en) | 2014-07-06 | 2017-06-29 | Au10Tix Ltd | A system and method for quantifying repetition such as in the analysis of laminated documents |
EP3057067B1 (en) * | 2015-02-16 | 2017-08-23 | Thomson Licensing | Device and method for estimating a glossy part of radiation |
KR20170034727A (ko) | 2015-09-21 | 2017-03-29 | 삼성전자주식회사 | 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치 |
US10152819B2 (en) | 2016-08-15 | 2018-12-11 | Microsoft Technology Licensing, Llc | Variable rate shading |
US10147227B2 (en) | 2017-02-17 | 2018-12-04 | Microsoft Technology Licensing, Llc | Variable rate shading |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60217461A (ja) * | 1984-04-13 | 1985-10-31 | Hitachi Ltd | 3次元物体表示方式 |
US4805116A (en) * | 1986-04-23 | 1989-02-14 | International Business Machines Corporation | Interpolated display characteristic value generator |
EP0259971A1 (en) * | 1986-08-14 | 1988-03-16 | AT&T Corp. | Fast phong shading |
US5109481A (en) * | 1987-07-24 | 1992-04-28 | Hewlet-Packard Company | Quadratic interpolation for shaded image generation |
GB2207585B (en) * | 1987-07-27 | 1992-02-12 | Sun Microsystems Inc | Method and apparatus for shading images |
JP2667835B2 (ja) * | 1987-10-09 | 1997-10-27 | 株式会社日立製作所 | コンピユータグラフイツクス表示装置 |
US4912659A (en) * | 1987-10-30 | 1990-03-27 | International Business Machines Corporation | Parallel surface processing system for graphics display |
US4866637A (en) * | 1987-10-30 | 1989-09-12 | International Business Machines Corporation | Pipelined lighting model processing system for a graphics workstation's shading function |
JPH0269882A (ja) * | 1988-09-06 | 1990-03-08 | Toshiba Corp | 画像処理方式 |
US5142617A (en) * | 1988-10-27 | 1992-08-25 | Tektronix, Inc. | Method of shading a graphics image |
US5031117A (en) * | 1990-02-13 | 1991-07-09 | International Business Machines Corporation | Prioritization scheme for enhancing the display of ray traced images |
US5163126A (en) * | 1990-05-10 | 1992-11-10 | International Business Machines Corporation | Method for adaptively providing near phong grade shading for patterns in a graphics display system |
-
1990
- 1990-07-26 US US07/560,869 patent/US5253339A/en not_active Expired - Lifetime
-
1991
- 1991-02-26 AU AU71394/91A patent/AU638102B2/en not_active Ceased
- 1991-03-01 GB GB9104327A patent/GB2246497B/en not_active Expired - Fee Related
- 1991-06-27 JP JP3181578A patent/JP2645620B2/ja not_active Expired - Fee Related
- 1991-06-27 SG SG1995907440A patent/SG32582G/en unknown
- 1991-06-28 CA CA002045889A patent/CA2045889C/en not_active Expired - Fee Related
- 1991-07-06 KR KR1019910011442A patent/KR960012670B1/ko not_active IP Right Cessation
- 1991-07-24 DE DE4124564A patent/DE4124564B4/de not_active Expired - Fee Related
- 1991-07-25 FR FR9109444A patent/FR2665277B1/fr not_active Expired - Fee Related
- 1991-07-26 CN CN91105218A patent/CN1048347C/zh not_active Expired - Fee Related
-
1995
- 1995-05-04 HK HK65995A patent/HK65995A/xx not_active IP Right Cessation
-
1999
- 1999-02-26 CN CN99102577A patent/CN1233030A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN1048347C (zh) | 2000-01-12 |
CA2045889C (en) | 2001-03-20 |
CN1233030A (zh) | 1999-10-27 |
US5253339A (en) | 1993-10-12 |
DE4124564A1 (de) | 1992-02-27 |
FR2665277B1 (fr) | 1996-03-08 |
GB9104327D0 (en) | 1991-04-17 |
SG32582G (en) | 1995-09-01 |
AU7139491A (en) | 1992-01-30 |
AU638102B2 (en) | 1993-06-17 |
CN1058480A (zh) | 1992-02-05 |
KR960012670B1 (ko) | 1996-09-23 |
GB2246497A (en) | 1992-01-29 |
FR2665277A1 (fr) | 1992-01-31 |
DE4124564B4 (de) | 2005-02-24 |
CA2045889A1 (en) | 1992-01-27 |
GB2246497B (en) | 1994-11-02 |
HK65995A (en) | 1995-05-12 |
KR920003200A (ko) | 1992-02-29 |
JPH04233674A (ja) | 1992-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2645620B2 (ja) | シェーディング画像を生成する装置およびその生成方法 | |
KR100261076B1 (ko) | 범프 맵핑과 퐁 쉐이딩을 동시에 수행하는 렌더링방법 및 장치 | |
US5659671A (en) | Method and apparatus for shading graphical images in a data processing system | |
US5063375A (en) | Method and apparatus for shading images | |
US6356263B2 (en) | Adaptive subdivision of mesh models | |
Bishop et al. | Fast phong shading | |
JP4355697B2 (ja) | グラフィックモデル生成方法およびグラフィックモデル生成装置 | |
US5745666A (en) | Resolution-independent method for displaying a three-dimensional model in two-dimensional display space | |
US6593924B1 (en) | Rendering a non-photorealistic image | |
JP4255449B2 (ja) | 描画処理装置、テクスチャ処理装置、およびテセレーション方法 | |
US7106325B2 (en) | System and method for rendering digital images having surface reflectance properties | |
US9489770B2 (en) | Method for generating quartic bezier triangle patches from triangle mesh for computer graphics | |
JP2005508057A (ja) | パラメトリックテクスチャマップを用いた3dオブジェクトのレンダリング | |
JP4834773B2 (ja) | 光反射強度計算回路 | |
WO2008013605A1 (en) | Real-time gpu rendering of piecewise algebraic surfaces | |
US5739820A (en) | Method and apparatus for specular reflection shading of computer graphic images | |
US5499324A (en) | Graphic display apparatus with improved shading capabilities | |
US6570575B1 (en) | Associated color texture processor for high fidelity 3-D graphics rendering | |
JPH0772915B2 (ja) | 図形シェーディング装置 | |
Cho et al. | Improved specular highlights with adaptive shading | |
Kolb et al. | Fair surface reconstruction using quadratic functionals | |
Anantakrishnan et al. | Integer de Casteljau algorithm for rasterizing NURBS curves | |
US8217955B2 (en) | Producing wrinkles and other effects for a computer-generated character based on surface stress | |
KR100277546B1 (ko) | 서피스 모델 랜더링을 위한 기하 연산에서의 룩업 테이블을 이용한 연산량 절약 방법 | |
JP2000040163A (ja) | 対象物の表面のスム―ジング方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |