JPH0727581B2 - 図形処理装置 - Google Patents

図形処理装置

Info

Publication number
JPH0727581B2
JPH0727581B2 JP63224448A JP22444888A JPH0727581B2 JP H0727581 B2 JPH0727581 B2 JP H0727581B2 JP 63224448 A JP63224448 A JP 63224448A JP 22444888 A JP22444888 A JP 22444888A JP H0727581 B2 JPH0727581 B2 JP H0727581B2
Authority
JP
Japan
Prior art keywords
shadow
polygon
data
pixel
depth
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 - Lifetime
Application number
JP63224448A
Other languages
English (en)
Other versions
JPH0273479A (ja
Inventor
尚 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP63224448A priority Critical patent/JPH0727581B2/ja
Priority to EP19890309044 priority patent/EP0358493A3/en
Priority to US07/404,238 priority patent/US5043922A/en
Publication of JPH0273479A publication Critical patent/JPH0273479A/ja
Publication of JPH0727581B2 publication Critical patent/JPH0727581B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • G09B9/02Simulators for teaching or training purposes for teaching control of vehicles or other craft
    • G09B9/08Simulators for teaching or training purposes for teaching control of vehicles or other craft for teaching control of aircraft, e.g. Link trainer
    • G09B9/30Simulation of view from aircraft
    • G09B9/301Simulation of view from aircraft by computer-processed or -generated image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

【発明の詳細な説明】 以下の順でこの発明を説明する。
A.産業上の利用分野 B.従来技術 C.発明が解決しようとする問題点 D.問題点を解決するための手段 E.実施例 E1.システムの概要 E2.パイプライン型プロセッサの詳細 E3.広がりを持つ光源 E4.複数の点光源 E5.複数の広がりのある光源 E6.ダミーのスパンデータ F.発明の効果 A.産業上の利用分野 この発明は、3次元グラフィックス表示において、Zバ
ッファ法(スキャンライン・Zバッファ法を含む)の隠
面消去ハードウエアを流用して高速に物体の影を描くこ
とができる図形処理装置に関し、とくに簡易な構成で影
の有無を判定できるようにしたものである。
B.従来技術 従来の影付けの技術は大きく分けて、シャドウ・マッピ
ング、レイ・トレーシングおよびシャドウ・ポリゴンの
3種類の方法に分けられる。シャドウ・ポリゴンの方法
は後述するように本質的には隠面消去法の変形であり、
他の2つの手法と異なり、スキャンライン法やZバッフ
ァ法によりハードウェア化および高速化が図れる。この
発明はシャドウ・ポリゴン法を改善するものであり、従
来技術としてこのシャドウ・ポリゴン法について説明す
る。
まずオリジナルのシャドウ・ポリゴンの方法を説明し、
つぎに、シャドウ・ポリゴンの方法をZバッファ法と組
合せて使えるように改良したBrotmanおよびBadlerのア
ルゴリズムについて説明する。
(1)オリジナルの方法 シャドウ・ポリゴンの方法ではシャドウ・ボリュームと
呼ばれる影付けのための仮想の物体(領域)を用いる。
シャドウ・ボリュームというのは光源と物体とによって
生じる影空間(内側ではその物体の影になる空間)のこ
とである(第23図)。高速描画で通常なされているよう
に、すべての物体をポリゴンで表した場合、シャドウ・
ボリュームは半無限の多面体で表現され、その側面もす
べてポリゴン(半無限)で表現される。そしての側面の
ことをシャドウ・ポリゴン(影ポリゴン)と呼ぶ。この
シャドウ・ポリゴンをもともとある物体のポリゴンと同
時に陰面消去して、影の部分を見つけようとするのがシ
ャドウ・ポリゴンの方法である。
第24B図のような視点および光源のもとで、A,Bの2つの
物体を考える。影は第24A図のようにできる。物体AはS
1,S2というシャドウ・ポリゴンと面A0A1,A1A2で囲まれ
たシャドウ・ボリュームとを作る。視線とシャドウ・ポ
リゴンとが交差するとき、視線はシャドウ・ボリューム
を出入りしている。スキャンライン法などによって、各
ピクセル内部にあるシャドウ・ポリゴンを物体の表面ま
で順に調べていくこと(一種の陰面消去)により、影付
けを行うことができる。
第24B図で点aの方向のポリゴンを調べると、最初にあ
るのが点aの乗ったポリゴンB0B2であるので、点aは影
の外にあるとわかる。点bの方向には最初にシャドウ・
ポリゴンS1があり、次にあるのが点bの乗ったポリゴン
B0B2であるので、点bはシャドウ・ボリュームの中にあ
ることがわかる。点cの場合は途中にシャドウ・ポリゴ
ンS1とS2とがあり、視線はS1で一度シャドウ・ボリュー
ムに入るが、S2によってシャドウ・ボリュームから抜け
る。点cは結局シャドウ・ボリュームの外にあることが
わかる。
実際には第25図のように、視点がすでにシャドウ・ボリ
ュームの中にあったり、複数のシャドウ・ボリュームが
重なっていたりする場合もある。そこで、シャドウ・レ
ベルというものを考え、シャドウ・ボリュームと視線と
の交差毎に1ずつ増減させ、シャドウ・レベルが0の点
だけ影の外と判定する。
このシャドウ・ポリゴンの方法の最大の問題点はシャド
ウ・ポリゴンのデータをポリゴン・データに加えるため
扱うポリゴン数が増加し、元の物体は小さくても半無限
のシャドウ・ポリゴンは画面上で大きな面積を占めるた
め、1つのピクセルにかかわるポリゴンの数が大幅に増
大することである。
(2)BrotmanおよびBadlerのアルゴリズム (1)で説明した方法をZバッファ法(スキャンライン
・Zバッファ法を含む)と共に用いるには少し工夫が必
要である。この問題を解決したBrotmanおよびBadlerの
アルゴリズムについて説明する。詳しくは論文L.S.Brot
man and N.I.Badler,“Generating Soft Shadows with
a Depth Buffer Algorithm",IEEE Computer Graphics a
nd Applications,October 1984,pp.5-12.を参照された
い。
基本的にはZバッファ(デプス・バッファ)を修正し
て、デプス値の他に影付けの際に必要になる情報も格納
することにして、以下のように描画する。
1)情景内のすべての物体を通常のポリゴン展開方法
(ポリゴン・データをピクセル毎のデータに展開する方
法)でZバッファに書き込む。
2)シャドウ・ボリュームを計算し、同じ展開方法でバ
ッファに書き込む。しかしその際に直接画像のデータは
変化させず、ピクセル内のデータ構造(バッファ)の中
の様々なカウンタの値を更新する。
3)影による影響を考慮して(バッファのカウンタの値
を参照して)、輝度値を計算する。
第26図にこの手法で使っている修正された(拡張され
た)Zバッファを示す。第26図に沿って修正されたZバ
ッファの説明を行う。2次元の配列の各セルが画面上の
各ピクセルに相当しており、各セルは5つの要素からな
るレコードの構造を持っている。その内の1つはもちろ
んデプス値(DEPTH)で、他に物体の記述へのポインタ
(OBJPTR)、そのピクセルでの法線ベクタ(NORMAL)、
影表現のための2つのポインタ(Sf,Sb)が格納され
る。物体へのポインタと垂線ベクタは輝度値がポリゴン
展開時に計算されないたえ記憶しておく必要がある。物
体へのポインタは該当するピクセルで見えているポリゴ
ンの記述を指し示しており、各ポリゴンに対して1つの
記述レコードが用いられる。その記述レコードにはポリ
ゴンの色(COLOR)、発光度(TRANSMITTANCE)、光沢
(GLOSSINESS)、反射率(REFLE CTANCE)といった輝度
計算に必要なポリゴンの属性データが入っている。バッ
ファの法線ベクタはそのピクセルを占めるポリゴンのそ
の点における法線ベクタで、通常ポリゴン展開時に補完
された値として計算される。
ある点が影になっているかどうか決定するために、その
点を取り囲むシャドウ・ボリュームについての情報を管
理する必要がある(第27図参照)、Sfポインタは表側の
シャドウ・ポリゴン(FSP:外向の法線ベクタが視点に向
かうベクタと鋭角をなすシャドウ・ポリゴン)が記述さ
れたレコードのリストをさす(第26図参照)。同様にSb
ポインタは裏側のシャドウ・ポリゴン(BSP:外向の法線
ベクタが視点に向かうベクタと鋭角をなさないシャドウ
・ポリゴン)が記述されたレコードのリストを指す。各
SfまたはSbのリスト内に1つの光源において多くて1つ
のレコードが存在する。つまり、ある光源についてその
ピクセルを占めるポリゴンが自己陰面になっていれば、
その光源についてのレコードは必要ない。しかし、メモ
リ容量としては各ピクセルについて光源の数だけのレコ
ードを格納するのに十分な量を用意する必要がある。こ
のレコードは光源の識別子(LIGHT-SOURCEI.D.)と影か
どうか判定するためのフラグやカウンタが入れられてい
る。
そのフラグやカウンタである第26図中のPOINT-SOURCELE
VEL,OBJECT LEVEL,DARKNESS LEVELの使われ方、つまり
影かどうかの判定方法について解説する。
普通の物体を構成するポリゴンのバッファへの展開(Z
バッファ法に従って、ピクセル毎にデプス値,法線ベク
タ,物体へのポインタをセットする)が済んだら、シャ
ドウ・ポリゴンをバッファへ展開する。シャドウ・ポリ
ゴンのバッファへの展開に際しては、拡張されたZバッ
ファのSfまたはSbのポインタが指すレコードの内の該当
する(そのシャドウ・ポリゴンを生成した光源に相当す
る)レコードのみを操作する。シャドウ・ポリゴンの展
開はシャドウ・ボリューム単位で行われる。あるピクセ
ル上の点(普通のポリゴンの展開でセットされた点)が
表側のシャドウ・ポリゴンの後ろにあればSfリストの該
当するレコードのPOINT-SOURCE LEVELを1にセットす
る。点が裏側のシャドウ・ポリゴンの手前にあればSbリ
ストの該当するレコードのPOINT-SOURCE LEVELを1にセ
ットする。もし、レコードがリスト内にないときは、新
たにそのシャドウ・ボリュームを生成した光源に対する
レコードをリストに追加して前記の操作を行なう。
1つのシャドウ・ボリュームについてのすべてのシャド
ウ・ポリゴンの展開が済むたびに、各ピクセルのSf,Sb
のリストについて、該当するレコードが存在し、かつ、
2つのPOINT-SOURCE LEVELが共に1であるか調べる。こ
の条件を満たす点はそのシャドウ・ボリューム内に含ま
れ、影になっていることが確定する。
光源が単純な点光源のときはこのことだけ判明すれば十
分である。つまり、影の部分であることが確定したとい
う情報を記憶するためにDARKNESS LEVELにでも1をセッ
トしておけばよい(もちろん、POINT-SOURCE LEVELとDA
RKNESS LEVELはシャドウ・ポリゴンの展開を始める前に
0にリセットされている)。
BrotmanおよびBadlerの論文では広がりを持つ光源を扱
い、半影も描画できるように工夫がなされている。通常
よくやられているように、広がりを持つ光源は複数個の
同等な点光源で近似して扱う。それぞれの点光源につい
てシャドウ・ボリュームを生成する。同一光源に属して
いる点光源について、ある点を影にしている点光源の数
と影にしていない点光源の数の比で半影の度合が決定さ
れる。そのためSfリストのレコード内には、ある光源に
属しその点を影にしている点光源の数をカウントするカ
ウンタOBJECT LEVELが設けられている。前述のようにあ
る点があるシャドウ・ボリュームについて影であると確
定したらOBJECT LEVELをカウント・アップする。ただ
し、この際に彼等のアルゴリズムでは、シャドウ・ボリ
ュームの元になる物体の外形ポリゴン(第27図の物体シ
ルエットポリゴンOSPい相当)毎にシャドウ・ボリュー
ムの処理を行っている。物体の外形ポリゴン毎にOBJECT
LEVELの集計をとり、最大のOBJECT LEVELをそのピクセ
ルのDARKNESS LEVELとしている。そうすることで、同一
の点光源と異なる外形ポリゴンによって生成される複数
のシャドウ・ボリュームに関して、それらの重なり部分
で影のダブル・カウントが起こるのを防いでいる。結
局、 1)物体の外形ポリゴンが替わる度にOBJECT LEVELを0
にリセットする。
2)その物体の外形ポリゴンから生成されるすべてのシ
ャドウ・ボリュームについて前述の方法で影判定を行な
う。影である点についてはそのピクセルのSfリスト内の
該当するレコードのOBJECTLEVELを1だけカウント・ア
ップする。
3)その物体の外形ポリゴンから生成されるすべてのシ
ャドウ・ボリュームについて処理が済んだら、現在のDA
RKNESS LEVELとOBJECT LEVELの内の値の大きい方でDARK
NESS LEVELを更新する。
という手順で広がりを持つ光源を近似するための点光源
をサポートしている。
以上で述べた影判定が終了したら、各ピクセルについ
て、そのピクセルを占めるポリゴンの属性と法線ベク
タ、光源毎にその点が影になっているかどうか(光源が
広がりを持っていれば、どの程度影になっているか)と
いった情報が判る。これらの情報を用いてピクセル毎に
輝度値を計算する。
つぎにこのアルゴリズムの問題点について述べる。
1)最大の問題点はシャドウ・ボリュームを生成するも
とになる物として凸の外形ポリゴンしか使えないことで
ある。凸でない外形ポリゴンが作るシャドウ・ボリュー
ムを許すと、表側のシャドウ・ポリゴンより後ろにあっ
て、裏側のシャドウ・ポリゴンよりも手前にある(つま
り、前述の影判定の条件を満たしている)が、光が当た
る点が存在するため矛盾が生じる。高速描画では通常、
描画時に三角形または細かい凸ポリゴンに物体を細分割
して表示しているので、このアルゴリズムでは実際上こ
の細分割されたポリゴンからシャドウ・ボリュームひい
てはシャドウ・ポリゴンを生成することになり、取り扱
うポリゴンの数が数倍に増えてしまう。
2)シャドウ・ボリューム毎に各ピクセルで影の条件を
満たしているかどうかチェックする必要があるが、彼等
のアルゴリズムにはこのチェック法が示されていない。
正直にバッファの全空間を調べたのでは、余程特殊なハ
ードウェアがなくてはたいへん効率が悪い。
3)アルゴリズムの問題点というよりは品質と高速性、
品質と記憶容量のトレード・オフの問題であるが、この
方法では単一点光源のみでも普通のZバッファの10倍程
度の容量のバッファが必要である。輝度計算も画面上の
1つ1つのピクセルについて色々な情報を参照しながら
複雑な計算を行なっている。インターラクティブまたは
リアルタイムの表示用には品質重視の程度が強過ぎる。
非常に高品質な映像が要求される時はレイ・トレーシン
グ等を時間を掛けて行なえばよくアニメーション,デー
タ作成や設計の際のプレビューには高速性が欠かせな
い。なお同様の先行文献として特開昭61−133483号があ
る。これは上述のものと本質的に同じである。
C.発明が解決しようとする問題点 この発明は以上の点を考慮してなされたものであり、凹
物体の影を直接判定することができ、その結果凹物体を
凸物体に分割して判別するという煩雑さのない影付け手
法を提供することを目的としている。
また影の判定自体を極めて簡易に行える影付け手法を提
供することを目的としている。
さらに複数の点光源(1つの広がりのある光源も含
む。)による影を簡易に生成できる影付け手法を提供す
ることを目的としている。
さらに量子化の手法を採用することにより、若干の品質
の劣化のもとで格段の処理の高速化が図れる影付け手法
を提供することを目的としている。
D.問題点を解決するための手段 この発明は以上の目的を達成するために、視線と、所定
のシャドウボリュームに属するシャドウポリゴンとの交
差の回数の偶奇性を用いて画面上に見えている点が影の
中にあるかどうかを判定するようにしている。
この原理は以下のとおりである。
第2図(a)に凸の外形ポリゴンがつくるシャドウ・ボ
リューム、図第2図(b)に凸でない外形ポリゴンがつ
くるシャドウ・ボリュームの例を示す。ただし図は所定
のスキャンラインと視点とがつくる平面上で描いてあ
る。今後もこの描き方を断わりなく用いることがある。
第2図からも判るように、凸または凸でない外形ポリゴ
ンからつくられた1つのシャドウ・ボリュームでは光の
直進性より、第2図(b)のように影の部分が、ある平
面内で2つ以上になってもその部分はお互に重なること
はない。つまり、第3図のようには決してならない。そ
こで、第2図の場合、影になる点が存在する部分という
のは視線がシャドウ・ポリゴンと奇数回交わる部分にな
っていることがわかる。
ところで実際には第4図のように視点がシャドウ・ボリ
ュームの中にあるときもある。このときは奇数回交わる
部分が光が当たっており、偶数回の部分が影になってい
る。
視線とシャドウ・ポリゴンとの交差の回数の偶奇性と、
視点がシャドウ・ボリューム内にあるかどうかに基づい
て影かどうか決定するのが、この発明の影判定の基本ア
イデアである。
さらにこの発明では複数の光源を扱う場合に、光源単位
で各ピクセル位置の影判別を独立して実行し、その後各
ピクセル位置ごとに影と判別された回数を求め、これに
応じて影の濃さを決定するようにしている。この場合影
判別回数をカウントするカウンタは一種類で済み、構成
が簡単になる。すでに述べたように、従前ではシャドウ
・ボリューム単位でいくつかの光源が当該ピクセル位置
に影を落としているかを決め、そのち最も多い回数をそ
のピクセル位置の影の濃さとしていたので、二種類のカ
ウンタ(記憶領域)が必要であった。
またこの発明では光源どうしが離れてそれぞれの個性を
考慮しなくてはならない場合に、すなわち各光源の角度
とポリゴンの法線ベクタとに基づいて影の濃さが変化す
る場合に、法線ベクタをクラス分けして量子化するよう
にしている。このようにすることにより高速な計算が可
能になる。
さらにこの発明ではシャドウ・ボリュームを処理する際
に処理範囲を規定する情報を設けるようにして、不必要
な計算を回避するようにしている。
E.実施例 E1.システムの概要 以下この発明に一実施例について説明しよう。
第5図はこの実施例の図形処理装置を全体として示すも
のであり、この第5図において図形処理装置はポリゴン
分割されたサーフェス・モデルを処理してピクセル・デ
ータを生成し、このピクセル・データを画面に表示させ
るものである。この図形処理装置の基本的な機能は隠面
消去、グーロー・シェーディングおよび影付けである。
ホスト・コンピュータ1上ではグラフィックス・アプリ
ケーションが実行され、変換部2にワールド座標表示の
ポリゴン・データ、すなわちポリゴンの各頂点の座標お
よび色情報と、同様のシャドウ・ポリゴン・データが供
給されている。変換部2は通常のポリゴンおよびシャド
ウ・ポリゴンのワールド座標を透視変形、スケール変形
し、画面上の座標および奥行(デプス)データに変換す
る。スパン・データ生成部3はDDA(デジタル・デファ
レンシャル・アナライザ)等の手法で変換ポリゴン・デ
ータからそのポリゴンが掛かっているスキャンラインご
とのスパン・データを生成している。
スパン・データは第7図に示すようなものである。なお
図ではスキャンライン・Zバッファ法およびグーロー・
シェーディングに用いるデータのみを説明の便宜上示し
てある。まずこれらについて説明する。
まず、表記法を説明する。今後とくに断わらない限り、
スパン・データに関する部分はこの表記法を用いるもの
とする。直交座標系(スクリーン座標系)においては、
便宜的に座標軸の向きを通常のスキャンライン走査方
向、つまりx座標値は左から右へ増加し、y座標値は上
から下に増加するものとする。xn,ynをそれぞれn番目
の頂点の画面(スクリーン)上のx,y座標とし、znをn
番目の頂点のデプス値とし、inをn番目の頂点の輝度の
値とする(第6図)。もちろん、カラーがサポートされ
ているときは、一つの点あたりの輝度値の数は、例え
ば、赤、緑、青につきそれぞれ一つずつというように、
複数になる。ここでは、説明を簡単にするため一点あた
りの輝度値は一つとする。
グーロー・シェーディングでは、画面上のポリゴンの各
頂点で指定されたデプス値や輝度のデータを画面上で線
形に補完して描画する。この際ほとんどのシステムで、
まずスパン・データをスキャンライン毎に作成し、それ
からスパン・データをスキャンライン方向に展開する
(多くのエンジニアリング・ワークステーションでは、
このスパンデータの展開をハードウェアで実行してい
る)。ここで、スパン・データというのは描こうとして
いるポリゴンのうち特定のスキャンラインに掛かってい
る部分を表現するデータで、通常以下のようなデータを
含んでいる(第7図)。
(XL,XR,ZL,dZ,IL,dI) XL,XRはスパンの両端のx座標を表わし、今は便宜上そ
れぞれ左端、右端とする。ZL,ILはそれぞれXLにおける
デプス値、輝度値を表わす。dZ,dIはXL側からXR側へス
キャンライン上で、1ピクセルずれたときのデプス値、
輝度値の変化量(差分:線形補完なので定数)を表わ
す。よって、スパンデータの展開はXLからXRに向かっ
て、デプス値と輝度値にそれぞれ、dZ,dIをピクセル毎
に加算することによって行われる。コンスタント・シュ
ーディングの場合は、同一のポリゴン内では輝度一定で
色づけを行なうので、上記の説明からdIについての記述
を削除したものとなっている。
この実施例では以上のデータのほかに属性データATTRを
用いスパン・データをつぎのようにしている。
(ATTR,XL,XR,ZL,dZ,IL,dI) 属性データはシャドウ・ポリゴンと普通のポリゴンを区
別したり、影付け処理のためのものであり、つぎの4つ
の値を採る。
OP:シャドウ・ポリゴンでない普通のポリゴンのスパン
(Ordinary Polygon) SP:シャドウ・ポリゴンのスパン(EV,IFでない)(Shad
owPolygon) EV:1つのシャドウ・ボリューム内の最後のシャドウ・ポ
リゴンのスパン(End span in a Volume) IF:シャドウ・ポリゴンのスパンの一種で影判定フラグ
を反転する動作を伴う(Invert Flag) なおEVは上述のとおり影判定をシャドウボリューム単位
で行う必要から設けたものである。すなわちシャドウ・
ボリュームごとに各ピクセル位置においてシャドウ・ポ
リゴンと視線との交差の回数の偶奇性より、ピクセル位
置を占めている点が影になっているかどうかの判定を下
ださなくてはならない。そのため、1つのシャドウ・ボ
リュームに属するシャドウ・ポリゴン毎にスパン・デー
タの処理を行なう。その際、各シャドウ・ボリュームの
終りをEVで表わすのである。
またIFは視点の位置に関するものである。すなわち、影
判定フラグで偶奇性を調べることにし、シャドウ・ポリ
ゴンと視線が交差する度にこのフラグを反転する。しか
し、第4図を参照して説明したように、視点がシャドウ
・ボリュームの中に含まれていると、影判定の際の偶奇
性が逆転する。このため、視点がシャドウ・ボリューム
内に含まれるときはそのシャドウ・ボリュームのスパン
・データの1つにIFの属性を持たせて、影判定フラグを
反転させることにする。シャドウ・ボリューム内に視点
が含まれているかどうかは、たとえばそのシャドウ・ボ
リュームをつくる元になった外形ポリゴンまたは立体と
視点を一緒に、光源を仮の視点として陰面消去すれば判
る。本来の視点が可視であればシャドウ・ボリューム外
にあるし、不可視ならシャドウ・ボリュームに含まれ
る。
第5図の説明に戻る。
ピクセル変換部4はスパン・データから隠面消去、グー
ロー・シェーディングおよび影付けの施されたピクセル
・データを生成するものである。このピクセル変換部4
においてはスパン・データ生成部3からのポリゴンごと
のスパン・データを第8図に示すようにスキャンライン
単位でまとめて表示リスト・メモリにストアする。なお
第8図でLはスキャンライン、Sはスパンを示す。また
図は誇張されている。このようにストアするのは後段の
パイプライン型プロセッサ6がスキャンライン単位で全
ポリゴンのスパン・データを受け取り、ピクセル・デー
タを生成するからである。パイプライン型プロセッサ6
からのピクセル・データはフレーム・バッファ7にスト
アされ、CRT(陰極線管)8へと供給される。
パイプライン型プロセッサ6の主たる機能は第1図に示
すとおりである。具体的な構成は後述する。
なおこのプロセッサ6においては、所定のスキャンライ
ン上のスパン・データをピクセル毎のデータに展開する
処理を行うとき、スパン・データを処理する順番が問題
になる。その順序は、 1)まず普通のポリゴンのスパン・データをすべて処理
する。
2)つぎにシャドウ・ポリゴンのスパン・データをシャ
ドウ・ボリューム毎に処理する となる。第11図はこのような順序による処理における入
力例を示す。
第1図において、スキャンラインごとに処理が実行され
る。1スキャンラインにおける処理はつぎのようであ
る。まず通常のポリゴン、すなわち物体を表示するため
のポリゴンに関するスパン・データが隠面消去部9およ
びシェーディング部10に供給される。隠面消去部9は当
該スパン・データに基づいて当該スキャンラインの各ピ
クセル位置の奥行データzを展開し、Zバッファ11の奥
行データz′と比較する(第9図(a))。Zバッファ
11には先行するポリゴンの奥行データがストアされてい
る。ただし今回が当該スキャンの初めてのデータの場合
には初期値たとえば背景奥行位置がストアされている。
隠面消去部9は各ピクセル位置で手前側の奥行データを
残すようになっている。第9図(a)の例では入力デー
タzのうち丸印のものがZバッファ・データz′より手
前側となっており、この結果第9図(B)に示すように
Zバッファ11の内容が変更される。
他方シェーディング部10はスパン・データに基づいてシ
ェーディングの施されたピクセル値Iを生成する。この
際シェーディング部10は隠面消去部9の処理を反映させ
てピクセル値バッファ12のデータI′を更新する。すな
わちスパン・データに基づいて生成された新たなピクセ
ル値Iのうち、その奥行データzが新たにZバッファ11
に書き込まれることになったものをピクセル値バッファ
12に書き込むようにしている(第9図(b))。このよ
うな処理を当該スキャンラインに掛かっているすべての
ポリゴンのスパン・データについて実行することにより
当該スキャンラインについても最も手前にあるデータの
みが表示されることになる。
当該スキャンラインのすべての通常のポリゴンについて
隠面消去およびグーロー・シェーディングの処理が終了
したらシャドウ・ポリゴンを処理する。すなわち疑似隠
面消去部13に各シャドウ・ポリゴンのスパン・データが
順次供給される。疑似隠面消去部13はスパン・データか
らシャドウ・ポリゴンの奥行データzを展開し、各ピク
セル位置で上述隠面消去後の確定したZバッファ11の奥
行データz′と比較を行う。この場合当該ピクセル位置
でZバッファ11の奥行データz′の方がシャドウ・ポリ
ゴンの奥行データzより奥にあれば視線がシャドウ・ポ
リゴンを横切ったことになる。他方Zバッファ11の奥行
データz′が手前であれば横切っていない。そして横切
ったときには暫定影判定フラグ・バッファ14を反転さ
せ、他方横切らないとき暫定影判定フラグ・バッファ14
をそのままとする。第10図の例では丸印が視線の交差に
対応する。その結果斜線部分が反転される。なお第10図
(b)ではATTRがIFの場合すなわち視点がシャドウ・ポ
リゴン内にある場合であり、反転の態様が他と異なって
いる。また第10図(c)ではATTRがEVであり、暫定影判
定フラグ・データは最終影判定フラグ・バッファ15に転
送される。擬似隠面消去部13の機能は実質的には隠面消
去部9のそれと同一であり、隠面消去部9で兼用され
る。
当該スキャンラインについて全てのシャドウ・ポリゴン
のスパン・データが処理されると確定した最終影判定フ
ラグ・データが変更部16に供給され入力ピクセル値を変
更して影付けを行う。
以上の処理は他のスキャンラインについても実行され
る。
なおこの実施例では凸でない外形ポリゴンを凸に細分割
してシャドウ・ボリュームをつくる必要がないのは明ら
かである。さらにこの実施例ではシャドウ・ポリゴンの
より上位のデータを採用して処理を高速化できる。
すなわち最近のグラフィックス・システムでは高速描画
の際でも、モデルのつくり易さのためにポリゴン・デー
タのみではなく、もっと上位の形状データ(ポリゴンが
どういう立体を構成するかを示すデータ)も保持してい
る。この形状データを使用してシャドウ・ボリュームを
つくることにより、シャドウ・ボリュームの数を大幅に
減らすことができる。
例えば第12図のような形状があるときに、この形状に対
して唯一つのシャドウ・ボリュームを用意するだけでよ
く、第13図で示される位置に光源があるときは、シャド
ウ・ポリゴンの数は9枚で済む。つまり、第12図の辺A
B,AM,EF,EG,FO,GL,MO,KL,BIについてシャドウ・ポリゴ
ンをつくればよい。
ただし、ここで辺BI、辺KLからつくられるシャドウ・ポ
リゴンについては注意が必要である。例えば、辺BIから
つくられるシャドウ・ポリゴンを通常のように光源から
点Bを通る半直線の点B以遠と光源から点Iを通る半直
線の点I以遠と辺BIで囲まれるポリゴンとする訳にはい
かない。この実施例の影判定法では同一のシャドウ・ボ
リューム内でシャドウ・ポリゴン同志が交わることは許
されないのであるが、辺BIからこのようにして作ったシ
ャドウ・ポリゴンは辺KLから作ったシャドウ・ポリゴン
と交わってしまう。
従って、辺BIと光源を含む平面と辺KLの交点Tを求め第
14図のように辺BIについてのシャドウ・ポリゴンを作
る。辺KLについては線分TLを使ってシャドウ・ポリゴン
を作る立体のどの辺を使ってシャドウ・ポリゴンを作れ
ばいいかということや、先程の辺BIのような取扱いをす
る必要がある辺を見つけることや、その辺から作るシャ
ドウ・ポリゴンが他のどの辺と交わるかを見つけること
はその立体に対して光源から陰面消去することによって
可能である。この隠面消去は立体を構成しているポリゴ
ンのみで実行すればよいので計算量は少ない。
このように、各立体(形状)毎にシャドウ・ボリューム
とそれを構成するシャドウ・ポリゴンを作ることが可能
であり、大幅にシャドウ・ポリゴンの数を減らすことが
できる。この発明の影判定法ではシャドウ・ポリゴン同
志が交わらなければ、複数のシャドウ・ボリュームも一
度に取り扱うことができる(シャドウ・ボリューム単位
で影判定をしなくて済む)。そのため、前段の考え方を
さらに進めて、複数の立体について光源から陰面消去し
て最良のシャドウ・ポリゴンの組(複数のシャドウ・ボ
リューム分できる)を求めることもできる。ただし、シ
ャドウ・ポリゴン同志の交りをなくす操作(辺BIについ
てのシャドウ・ポリゴンを作ることに相当)が複雑にな
る。
またこの実施例では影判定に視線とシャドウ・ポリゴン
の交差の数の偶奇性を用いている。このため、1つのシ
ャドウ・ボリュームに属するシャドウ・ポリゴンのつな
ぎめの所が問題になる。第15図の状況でAB,BCに対する
(XL,XR)を(X1,X2),(X2,X3)としてスパン・デー
タを作ると、X2つまり点Bで交差をダブル・カウントし
てしまい、点Bを通る視線上の点はたとえ領域ABCDEF内
にあっても、影とは判定されない。それどころか、領域
外を影と判定するようなことも起こりうる。
そこで、シャドウ・ポリゴンのスパンデータを作る時に
は、辺を共有するシャドウ・ポリゴンについてはスパン
の範囲(XL,XR)が重ならないようにスパンデータを生
成する。具体的には、スパンの二端点をXl,Xrとする
と、シャドウ・ポリゴンは総て(Xl,Xr-1)(または(X
l+1,Xr))としてスパンの範囲を指定すると不都合が
なくなる。よって、先程の例では(X1,X2-1),(X2,X3
-1)と指定する。
またこの実施例では残留光レベル(上記のRBL)が0で
ないとき、ハイライト効果を含めたグーロー・シェーデ
ィングを扱えない。何故なら、影の部分にまでハイライ
ト効果が残ってしまうからである。また、厳密な意味で
は上記のRBLで残留光を表しているとは言いがたい。し
かし、これは記憶容量(またはハードウェア量)とのト
レード・オフに過ぎず、ハイライト効果と拡散光による
輝度値(IB)と残留光による輝度値(RB)に分けてピク
セル毎に保持しておけば、FSF(最終シャドウフラグ)
=0ならIB+RBを輝度値とし、FSF=1ならRBのみをピ
クセルの輝度値とすればよい。また同様に、シェーディ
ング法がグーロー・シェーディングでは不満で、ハード
ウェア量もしくは計算量が増えることを厭わなければ、
複雑なシェーディング法も使用可能である。
E2.パイプライン型プロセッサの詳細 つぎにパイプライン型プロセッサ6について詳細に説明
する。
第16図はパイプライン型プロセッサ6を全体として示す
ものであり、1つのスキャンラインに掛かっている通常
のポリゴンおよびシャドウ・ポリゴンのスパン・データ
が順次入力されるようになっている。スパン・データは
第11図に示すように初めに通常のポリゴン、つぎにシャ
ドウ・ポリゴンの順に入力されて処理される。シャドウ
・ポリゴンの処理が終わるとピクセル値Iおよび最終影
判定フラグFSFが順次出力される。プロセッサ6内部に
は1スキャンライン分のピクセルの数(この例では1024
個)だけのプロセッシング・エレメントPEが連鎖上に並
んでいる。プロセッシング・エレメントPEはそれぞれ固
有の数値IDを有している。スパン・データの入力側から
0、1、2、3…1023という値になっている。個々のプ
ロセッシング・エレメントPEは1スキャンライン分のピ
クセルの各々に対応している。プロセッシング・エレメ
ントPEは直前のプロセッシング・エレメントPEからスパ
ン・データを受け取って必要なら内部状態を変更し、ま
たスパン・データも変更し、次段のプロセッシング・エ
レメントPEに引き渡す。
第17図はプロセッシング・エレメントPEの詳細を示す。
この図においてプロセッシング・エレメントPEは範囲判
別部17、Zバッファ部18、影付け部19およびシェーディ
ング・ピクセル値バッファ20からなっている。範囲判別
部17にはスパンの左右限界値XLおよびXRが入力されてい
る。範囲判別部17は自己のIDがXLとXRとの間にあるとき
にイネーブル信号EN1をZバッファ部18に供給する。こ
の信号EN1は影付け部19およびシェーディング・ピクセ
ル値バッファ20にも供給されている。したがってプロセ
ッシング・エレメントPEは自己に関連したスパン・デー
タにしか動作しない。
Zバッファ部18は対応するピクセル位置の奥行データを
ストアするようになっている。またこのZバッファ部18
にはスパン・データのうちZおよびdZが入力され当該ピ
クセル位置の奥行データを算出している(Z+dZ)。ス
パン・データが通常のポリゴンに関するものである場合
には、算出した奥行データがストア奥行データより大き
いときにデータの更新を行う。同時にシェーディング・
ピクセル値バッファ20にピクセル値の更新イネーブル信
号EN3を供給する。他方シャドウポリゴンの場合にはこ
のようなときには暫定影判定フラグTSFを反転させるイ
ネーブル信号EN2を影付け部19に供給する。これはシャ
ドウ・ポリゴンを視線が交差したことに対応する。
影付け部19にはスパンデータのうちATTRが入力されてい
る。ATTRがIFのときには暫定影判定フラグTSFを反転さ
せる。これは視点がシャドウ・ボリューム内にあること
に対応する。またATTRがEVのときには暫定影判定フラグ
TSFの内容を最終影判定フラグFSFに転送する。
シェーディング・ピクセル値バッファ20にはスパン・デ
ータのうちIおよびdIが供給されている。シェーディン
グ・ピクセル値バッファ20はIおよびdIに基づいてグロ
ー・シェーディングを行い、イネーブル信号EN3に応じ
てバッファに書き込みを行う。
1スキャンライン分のすべての通常のポリゴンおよびシ
ャドウ・ポリゴンの処理が終了したら影付け部19および
シェーディング・ピクセル値バッファ20からそれぞれピ
クセル値および最終影判定フラグが送出される。
第18図は以上の処理を示すフローチャートである。なお
このフローチャートの内容は図から明らかであるから詳
細な説明は省略する。
E3.広がりを持つ光源 つぎに1つの広がりを持つ光源の影をどのように生成す
るかについて述べる。
この実施例でも通常よくやられているように、広がりを
持つ光源を複数個の同等な点光源で近似して扱う。それ
ぞれの点光源についてシャドウ・ボリュームを生成し、
ある点を影にしている点光源の数と影にしていない点光
源の数の比で半影の度合を決定する。光源の広がりに比
べて表示する物体が光源から離れている場合は、この半
影の度合の決定法はよい近似である。ピクセル毎にその
ピクセルを占める点が幾つの点光源について影になって
いるかカウントする必要がある。このためスパン・デー
タを展開するスキャンライン上の各ピクセルに対して1
つのカウンタ(P COUNT)を用意する。
この例では上述のBrotmanおよびBadlerのアルゴリズム
とは異なり、点光源毎にシャドウ・ボリュームの処理を
行う(第19図参照)。こうすることにより、カウンタが
COUNT 1種類で済む。BrotmanおよびBadlerのアルゴ
リズムではOBJECT LEVEL(P COUNTに相当)とDARKNES
S LEVELという複数ビット幅の記憶域をピクセル毎に2
つ必要とする。尚、1つの点光源についての最後のスパ
ン・データであることを示すためのEL(End span by a
Light source)という属性をスパン・データの属性項の
取りうる値の1つとして追加する。
まず普通のポリゴンのスパン・データを展開するとき
に、輝度値も補完されて決められていく(影は考慮に入
っていない)わけだが、この輝度値というのはすべての
点光源からの光を合算して求めたものを用いる。
E4.複数の点光源 普通のスパン・データを展開する際に光源毎に輝度値を
バッファ上に展開するか、スパン・データ展開時には輝
度値を展開せず法線ベクタとポリゴンの識別子をピクセ
ル毎に展開しておき後から1ピクセルずつ輝度値を計算
するか、のどちらかの方法を用いれば上述の手法の自然
な拡張で複数の光源もサポートできる。しかし、前者の
方法だとピクセル毎に光源の数だけの輝度値を記憶して
おくバッファが必要だし、後者の方法だと1ピクセル毎
の計算を行う際いろいろな情報を参照する必要がありハ
ードウェア化しても手間が掛かる。もちろん将来的には
LSIの集積度が上がりスピードも速くなり、この2つの
方法も高速に実行できるようになると思われる。
ここでは、この2つの方法を修正して足し合わせた輝度
計算の近似計算法を導入して、ピクセル当たりのハード
ウェアの増加と高速性のトレード・オフを取った手法を
説明する。輝度値の計算と光源を複数化したための処理
以外は記述の手法を用いる。
まず、輝度計算法について述べる。ここでは光源と物体
がかなり離れているという仮定(1つの光源からの光の
方向は一定という仮定)を採用する。これが認められな
い状況では、各ピクセル上の法線ベクタとその他の情報
から丹念に1ピクセルずつ輝度計算を行うか、光源から
各ピクセルへの方向ベクタもスパン・データ展開時に求
め記憶しておくようなことを行わなくてはならず、計算
量やハードウェア量が大きくなる。ここでは仮定が満た
される状況のみを考える。
この例においても法線ベクタが判れば、その点への各光
源からの寄与が判ることを利用して輝度値を求めること
にする。ただし、スパン・データ展開と影判定の終了
後、輝度値を法線ベクタから計算する(BrotmanおよびB
adlerのアルゴリズムではこれに相当することを行って
いる)のではない。影なしとして全部の光源の寄与を合
算した輝度値とポリゴンの法線ベクタを共にスパン・デ
ータの要素とし、スパン・データを展開する。その後、
ピクセル毎に法線ベクタと影についての情報を使って輝
度値を修正する。このままだと、法線ベクタのみから計
算するのとあまり手間が変わらない。そこで法線ベクタ
といってもクラス分けして少し粗めに量子化されたもの
を用いて、そのクラスを示すインデックスとどの光源か
ら影になっているかの情報で輝度値をどの程度修正する
(割り引く)かの割合の入ったテーブルを引くことにす
る。テーブルから得た値とピクセルに保持されていた輝
度値を掛けたものを修正された輝度値とする。
法線ベクタのクラス分けをもう少し具体的に例を挙げて
説明する。例えば、第20図のような立方体を考え、各面
をN×N等分しておく(図では4×4等分)。立方体の
中心とN×N等分された四角形のつくる四角錐を考え、
立方体の中心をベクタの始点とした時どの四角錐に含ま
れるかでクラス分けを行うことができる。この例だと1
から6×N×Nまでの整数で番号(インデックス)付け
される。Nを大きく取れば取るだけ輝度計算の近似は良
くなるが、サポートする光源の数をMとすると、6×2M
×N×Nの大きさをもつ修正の割合を記憶するテーブル
が必要になる。しかし、最終的な輝度値も離散な値で良
いので必要以上に細分化する必要はない。例えば、N=
16,M=4,テーブルに記憶される値が4バイトの数値とす
ると、96Kバイトのテーブルとなる。
この方式において、サポートする光源数をM個とした
時、各ピクセルについてM個の光源のどれについて影に
なっているかを記憶するM個のフラグが必要である。ま
た、法線のクラス分けインデックスを12ビットの数値と
すると、前出の2つのフラグDSF,FSFを加えてピクセル
当たりの記憶量の増加は影付けをしないときにくらべて
M+12+2ビットで済む。各ピクセルにおける法線ベク
タのクラス分けインデックスをNID(Normal Index in D
irection)とし、点光源に対するフラグの配列をLM
[n](Light Mask:LM[0..M-1])と表記することに
する。また、単にLMと書くときはLM[0]からLM[M-
1]までをMビットの符号なし整数とみなしていること
にする。輝度値を修正するためのテーブルをBT[n,m]
(Bright Table:BT[0..6×N×N-1,0..2M‐1])と
し、このテーブルは法線の方向と影にする光源の組合せ
と光源の光の方向から前もって値を計算し設定してお
く。
この複数個の点光源による影を生成する手法におけるス
パン・データの処理の順序はほぼ上述の広がりを持つ光
源の手法と同じで、点光源毎にシャドウ・ボリュームを
処理する。ただし、今回は点光源を区別する必要がある
ので、各点光源の終りのスパン・データを示すELの属性
値の代りにELn(nは0からM−1までの整数で点光源
の識別番号)を用いることとする(第21図参照)。
使用するスパン・データはポリゴンの法線ベクタに対す
るクラス分けのインデックス(NID)を含む以下のよう
な方式のものである。
(ATTR,XL,XR,ZL,dZ,IL,dI,NID) もちろん、スパン・データをピクセル・データに展開す
るときには法線ベクタを補完しながら展開し、後からピ
クセルごとにインデックスを求めることもできる(こち
らの方が画像の品質は良いが計算量が増える)。シャド
ウ・ポリゴンではスパン・データのうち法線ベクタと輝
度に関する項は使用されない(意味をもたない)。普通
のポリゴンのスパン・データの輝度に関する項は総ての
点光源の影を考慮にいれない寄与の和が用いられてい
る。
E5.複数の広がりを持つ光源 複数の広がりを持つ光源に対する影を含む画像の生成で
も、この実施例の影判定法や影判定フラグのチェック法
や光源ごとにシャドウ・ボリュームを処理する方式はそ
のまま使用可能である。
E6.ダミーのスパン・データ 以上の実施例ではスキャンライン上のすべてのピクセル
で上記の処理が実行される。パイプライン(またはシス
トリック・アレイ)型でスキャンライン上の全てのピク
セルに対応する処理機構をもっているようなハードウェ
アには以上の手法が最適である。しかし、ソフトウェア
で実行する時やスキャンライン上の全てのピクセルに対
応する処理機構がない時は、TSFのチェックをすべての
ピクセルについて行うのは効率的でない。
そこで、そういう場合に効率を上げる方法を述べる。こ
のような場合には、通常スパン・データのXL,XRで囲ま
れるピクセルのみが操作対象になる。この操作方式で、
第11図のスパン・データ列を用いれ処理を行うと、シャ
ドウ・ボリューム毎に影のチェックを行うときに対象と
なるシャドウ・ボリュームに関連しているのにチェック
されないピクセルができる可能性がある。このため、EV
の属性はやめ、シャドウ・ボリューム毎のチェックのた
めのダミーのスパン・データを各シャドウ・ボリューム
に属するスパンデータの最後に加える(第22図参照)。
CHという属性でこのダミーのスパン・データは区別さ
れ、もちろんデプス値や輝度値に関するスパン・データ
の要素は意味をもたない。CHの属性をもつスパン・デー
タのXL,XRとしては、それぞれ、そのスパンデータが属
するシャドウ・ボリュームのシャドウ・ポリゴンのスパ
ン・データのXLの内の最小値、XRの内の最大値が採用さ
れる。
F.発明の効果 以上説明したようにこの発明によれば同一のシャドウ・
ボリュームを規定する一組のシャドウ・ポリゴンと視線
との交差回数の個数の偶奇を求め、その偶奇と、視点が
そのシャドウ・ボリューム内にあるかどうかの判断とに
基づいて視線上のピクセル位置に影があるかどうかを判
断している。この場合物体が凹形状でもよく、従前のよ
うに凹物体を凸物体に分割する必要がなく処理が簡易に
なる。またシャドウ・ボリュームについて視点の裏側か
表側かという情報が不要であるので構成が簡単になる。
さらに複数の点光源を扱う場合にもピクセル単位で影の
回数を求めることにより構成が簡単になり(すなわちカ
ウンタの種類が減る)、また量子化した法線ベクタを用
いることにより大幅は簡略化が図れる。ダミーのスパン
・データを用いることによりパイプライン型以外の処理
における高速化が図れる。
【図面の簡単な説明】
第1図はこの発明の一実施例の要部を示すブロック図、
第2図、第3図および第4図はこの発明の原理を説明す
る図、第5図は上述実施例の全体構成を示すブロック
図、第6図、第7図、第8図、第9図、第10図、第11
図、第12図、第13図、第14図および第15図は第1図の動
作を説明する図、第16図は第1図のパイプライン型プロ
セッサ6の詳細を示すブロック図、第17図は第16図のプ
ロセッサのプロセッシングエレメントを示すブロック
図、第18図は第16図および第17図の構成例の動作を説明
すフローチャート、第19図は広がりを持つ光源の処理を
説明する図、第20図および第21図は複数の点光源の処理
を説明する図、第22図はパイプライン型でないプロセッ
サを用いた例で採用するダミーのスパンデータを説明す
る図、第23図、第24A図、第24B図、第25図、第26図およ
び第27は従来例を説明する図である。 9……隠面消去部、10……シェーディング部、11……Z
バッファ、12……ピクセル値バッファ、13……疑似隠面
消去部、14……暫定影判定フラグバッファ、15……最終
影判定フラグバッファ、16……変更部。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】物体を規定する物体ポリゴン、および該物
    体ポリゴンが光源からの光線を遮ることによって生じる
    影空間を規定する影ポリゴンが与えられ、該物体ポリゴ
    ンおよび影ポリゴンは各頂点の座標値および奥行値によ
    り定義され、表示装置の画面上のスキャンラインにおい
    て前記物体ポリゴンおよび影ポリゴンの内部に含まれる
    ピクセルを表示することにより前記物体およびその影を
    表示する図形処理装置において、 前記物体ポリゴンを定義する座標値および奥行値を受け
    取り、スキャンラインにおいて前記物体ポリゴンの内部
    に含まれるピクセルのピクセル・データ及び関連する奥
    行データを生成するピクセル・データ生成手段と、 複数の前記物体ポリゴンについて前記ピクセル・データ
    および奥行データを順次受け取り、1つの物体ポリゴン
    の奥行データと次の物体ポリゴンの奥行データとを比較
    して、各ピクセル位置について最も奥行の短いピクセル
    ・データを選択して取り出すピクセル・データ選択手段
    と、 前記影空間の各影ポリゴンについて、各ピクセル位置に
    おいて最も奥行きの短いものとして選択されたピクセル
    ・データの奥行データと前記影ポリゴンの対応位置にお
    ける奥行データとを比較することにより前記視点の奥行
    位置とそのピクセル位置に対して選択されたピクセル・
    データの奥行位置との間にその影空間を規定する影ポリ
    ゴンが存在するかどうかを判断し、その間に存在する影
    ポリゴンの個数の偶奇を判別する偶奇判別手段と、 上記視点が上記偶奇判別に関連する影空間内にあるかど
    うかを判別する視点位置評価手段と、 上記偶奇判別手段および上記視点位置評価手段のそれぞ
    れの判別結果に基づいて、上記視点が上記偶奇判別に関
    連する影空間内にあり、かつ上記偶奇判別が偶数のとき
    に、または上記視点が上記偶奇判別に関連する影空聞外
    にあり、かつ上記偶奇判別が奇数のときに当該ピクセル
    位置に影があると判別する影判別手段と、 この影判別手段の判別結果に基づいて上記ピクセル・デ
    ータ選択手段からのピクセル・データを調節してこのピ
    クセル・データに影を反映させるピクセル・データ調整
    手段と、 調整されたピクセル・データを表示装置へ出力するピク
    セル・データ出力手段とを有することを特徴とする図形
    処理装置。
  2. 【請求項2】物体を規定する物体ポリゴン、および該物
    体ポリゴンが光源からの光線を遮ることによって生じる
    影空間を規定する影ポリゴンが与えられ、該物体ポリゴ
    ンおよび影ポリゴンは各頂点の座標値および奥行値によ
    り定義され、表示装置の画面上のスキャンラインにおい
    て前記物体ポリゴンおよび影ポリゴンの内部に含まれる
    ピクセルを表示することにより前記物体およびその影を
    表示する図形処理装置において、 前記物体ポリゴンを定義する座標値および奥行値を受け
    取り、スキャンラインにおいて前記物体ポリゴンの内部
    に含まれるピクセルのピクセル・データ及び関連する奥
    行データを生成するピクセル・データ生成手段と、 複数の前記物体ポリゴンについて前記ピクセル・データ
    および奥行データを順次受け取り、1つの物体ポリゴン
    の奥行データと次の物体ポリゴンの奥行データとを比較
    して、各ピクセル位置について最も奥行の短いピクセル
    ・データを選択して取り出すピクセル・データ選択手段
    と、 前記影空間の各影ポリゴンについて、各ピクセル位置に
    おいて最も奥行きの短いものとして選択されたピクセル
    ・データの奥行データと前記影ポリゴンの対応位置にお
    ける奥行データとを比較することにより前記視点の奥行
    位置とそのピクセル位置に対して選択されたピクセル・
    データの奥行位置との間にその影空間を規定する影ポリ
    ゴンが存在するかどうかを判断し、その間に存在する影
    ポリゴンの個数の偶奇を判別する偶奇判別手段と、 上記視点が上記偶奇判別に関連する影空間内にあるかど
    うかを判別する視点位置評価手段と、 上記偶奇判別手段および上記視点位置評価手段のそれぞ
    れの判別結果に基づいて、上記視点が上記偶奇判別に関
    連する影空間内にあり、かつ上記偶奇判別が偶数のとき
    に、または上記視点が上記偶奇判別に関連する影空聞外
    にあり、かつ上記偶奇判別が奇数のときに当該ピクセル
    位置に影があると判別する影判別手段と、 複数の光源の各々について上記影判別手段が実行した、
    上記影生成物体のいずれかによって影が生成されるかの
    判別結果に基づいて、各ピクセル位置ごとにいくつの光
    源の影が生成されるかをカウントするカウント手段と、 このカウント手段のカウント結果に基づいて上記ピクセ
    ル・データ選択手段からのピクセル・データを調節して
    このピクセル・データに半影を含む影を反映させるピク
    セル・データ調整手段と、 調整されたピクセル・データを表示装置へ出力するピク
    セル・データ出力手段とを有することを特徴とする図形
    処理装置。
  3. 【請求項3】物体を規定する物体ポリゴン、および該物
    体ポリゴンが光源からの光線を遮ることによって生じる
    影空間を規定する影ポリゴンが与えられ、該物体ポリゴ
    ンおよび影ポリゴンは各頂点の座標値および奥行値によ
    り定義され、表示装置の画面上のスキャンラインにおい
    て前記物体ポリゴンおよび影ポリゴンの内部に含まれる
    ピクセルを表示することにより前記物体およびその影を
    表示する図形処理装置において、 前記物体ポリゴンを定義する座標値および奥行値を受け
    取り、スキャンラインにおいて前記物体ポリゴンの内部
    に含まれるピクセルのピクセル・データ及び関連する奥
    行データを生成するピクセル・データ生成手段と、 複数の前記物体ポリゴンについて前記ピクセル・データ
    および奥行データを順次受け取り、1つの物体ポリゴン
    の奥行データと次の物体ポリゴンの奥行データとを比較
    して、各ピクセル位置について最も奥行の短いピクセル
    ・データを選択して取り出すピクセル・データ選択手段
    と、 前記影空間の各影ポリゴンについて、各ピクセル位置に
    おいて最も奥行きの短いものとして選択されたピクセル
    ・データの奥行データと前記影ポリゴンの対応位置にお
    ける奥行データとを比較することにより前記視点の奥行
    位置とそのピクセル位置に対して選択されたピクセル・
    データの奥行位置との間にその影空間を規定する影ポリ
    ゴンが存在するかどうかを判断し、その間に存在する影
    ポリゴンの個数の偶奇を判別する偶奇判別手段と、 上記視点が上記偶奇判別に関連する影空間内にあるかど
    うかを判別する視点位置評価手段と、 上記偶奇判別手段および上記視点位置評価手段のそれぞ
    れの判別結果に基づいて、上記視点が上記偶奇判別に関
    連する影空間内にあり、かつ上記偶奇判別が偶数のとき
    に、または上記視点が上記偶奇判別に関連する影空間外
    にあり、かつ上記偶奇判別が奇数のときに当該ピクセル
    位置に影があると判別する影判別手段と、 複数の光源の各々について上記影判別手段が実行した、
    上記影生成物体のいずれかによって影が生成されるかの
    判別結果に基づいて、各ピクセル位置ごとにどの光源の
    影が生成されるかを示す影光源データを生成する影光源
    データ生成手段と、 各ピクセル位置ごとに、そのピクセル位置を占めるピク
    セル・データの属する物体ポリゴンの法線データを生成
    する手段と、 上記影光源データおよび法線データに基づいて影の強度
    を決定する影強度決定手段と、 上記影強度決定手段からの影強度データに基づいて上記
    ピクセル・データ選択手段からのピクセル・データを調
    節してこのピクセル・データに半影を含む影を反映させ
    るピクセル・データ調整手段と、 調整されたピクセル・データを表示装置へ出力するピク
    セル・データ出力手段とを有することを特徴とする図形
    処理装置。
  4. 【請求項4】上記法線データは量子化されている請求項
    3記載の図形処理装置。
  5. 【請求項5】上記物体表示用データ生成手段、ピクセル
    ・データ選択手段および偶奇判別手段をパイプライン型
    処理手段により構成した請求項1ないし4記載の図形処
    理装置。
  6. 【請求項6】上記影空間ごとにスキャンラインのどの範
    囲で処理が必要かを示す処理範囲限定データを生成する
    処理範囲限定手段と、上記処理範囲限定データに基づい
    て不必要な処理を回避する処理回避手段とをさらに有す
    る請求項1ないし5記載の図形処理装置。
JP63224448A 1988-09-09 1988-09-09 図形処理装置 Expired - Lifetime JPH0727581B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP63224448A JPH0727581B2 (ja) 1988-09-09 1988-09-09 図形処理装置
EP19890309044 EP0358493A3 (en) 1988-09-09 1989-09-06 Graphics system
US07/404,238 US5043922A (en) 1988-09-09 1989-09-07 Graphics system shadow generation using a depth buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63224448A JPH0727581B2 (ja) 1988-09-09 1988-09-09 図形処理装置

Publications (2)

Publication Number Publication Date
JPH0273479A JPH0273479A (ja) 1990-03-13
JPH0727581B2 true JPH0727581B2 (ja) 1995-03-29

Family

ID=16813933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63224448A Expired - Lifetime JPH0727581B2 (ja) 1988-09-09 1988-09-09 図形処理装置

Country Status (3)

Country Link
US (1) US5043922A (ja)
EP (1) EP0358493A3 (ja)
JP (1) JPH0727581B2 (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2523889B2 (ja) * 1989-08-25 1996-08-14 松下電器産業株式会社 隠れ面処理装置
AU632628B2 (en) * 1989-11-13 1993-01-07 Apple Computer, Inc. Method and apparatus for a computer display system with a three dimensional cursor shadow
DE69129995T2 (de) * 1990-01-23 1998-12-24 Hewlett-Packard Co., Palo Alto, Calif. Dezentrales Verarbeitungsgerät und Verfahren zur Anwendung in globaler Wiedergabe
US5377313A (en) * 1992-01-29 1994-12-27 International Business Machines Corporation Computer graphics display method and system with shadow generation
GB2267007B (en) * 1992-04-24 1995-09-13 Sony Broadcast & Communication Video special effect apparatus and method
TW241196B (ja) * 1993-01-15 1995-02-21 Du Pont
IL109462A0 (en) * 1993-04-30 1994-07-31 Scitex Corp Ltd Method for generating artificial shadow
US5974189A (en) * 1993-05-24 1999-10-26 Eastman Kodak Company Method and apparatus for modifying electronic image data
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5729672A (en) * 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
JP2669599B2 (ja) * 1994-09-16 1997-10-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 陰影描画方法及び3次元グラフィック・コンピュータ・システム
US5986667A (en) * 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5777621A (en) * 1994-12-22 1998-07-07 Apple Computer, Inc. Quality control mechanism for three-dimensional graphics rendering
EP0725365B1 (en) * 1995-01-31 2002-06-05 Imagination Technologies Limited Method and apparatus for shading three-dimensional images
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
US5761400A (en) * 1995-08-28 1998-06-02 Apple Computer, Inc. Method and system for increasing the speed of a Z-buffer process
US5739819A (en) * 1996-02-05 1998-04-14 Scitex Corporation Ltd. Method and apparatus for generating an artificial shadow in a two dimensional color image
AU2105797A (en) * 1996-03-14 1997-10-01 I.I. Interactive Innovations Ltd. Computerized graphics systems
US6018350A (en) * 1996-10-29 2000-01-25 Real 3D, Inc. Illumination and shadow simulation in a computer graphics/imaging system
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
DE19714915A1 (de) * 1997-04-03 1998-10-08 Gmd Gmbh Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens
US6028608A (en) * 1997-05-09 2000-02-22 Jenkins; Barry System and method of perception-based image generation and encoding
GB9717656D0 (en) * 1997-08-20 1997-10-22 Videologic Ltd Shading three dimensional images
US5933156A (en) * 1997-12-03 1999-08-03 Margolin; Jed Z-Buffer for row addressable graphics memory with flash fill
JPH11175752A (ja) 1997-12-15 1999-07-02 Sega Enterp Ltd 画像処理装置及び画像処理方法
JP3804328B2 (ja) * 1999-03-02 2006-08-02 株式会社セガ 画像処理装置及び画像処理方法
JP3599268B2 (ja) 1999-03-08 2004-12-08 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置及び記録媒体
US6573896B1 (en) 1999-07-08 2003-06-03 Dassault Systemes Three-dimensional arrow
JP2001092989A (ja) 1999-07-21 2001-04-06 Sega Corp 画像処理方法及びその装置
TW475155B (en) * 1999-09-10 2002-02-01 Sony Computer Entertainment Inc Method of and apparatus for rendering image, recording medium, and program
JP2001084405A (ja) * 1999-09-16 2001-03-30 Sega Corp ポリゴン画像形成方法及び、これを用いた画像処理装置
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
EP1170700A3 (en) * 2000-07-06 2003-08-27 Kuusou Kagaku Corp. Method of high-speed adjustment of luminance by light in 3-D computer graphics
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US7576748B2 (en) * 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6664962B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US7061502B1 (en) 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
JP3641578B2 (ja) * 2000-08-31 2005-04-20 コナミ株式会社 ゲーム用3次元画像処理方法、装置、ゲーム用3次元画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体及びビデオゲーム装置
US7439975B2 (en) 2001-09-27 2008-10-21 International Business Machines Corporation Method and system for producing dynamically determined drop shadows in a three-dimensional graphical user interface
JP2003208601A (ja) * 2002-01-15 2003-07-25 Nec Corp 3次元物体撮影装置、3次元形状モデル生成装置、3次元形状モデル生成方法、3次元形状モデル生成プログラム
JP4181430B2 (ja) * 2003-03-10 2008-11-12 シャープ株式会社 図形処理装置、図形処理方法、図形処理プログラム、および、プログラム記録媒体
JP4193979B2 (ja) * 2003-03-17 2008-12-10 任天堂株式会社 シャドウボリューム生成プログラム及びゲーム装置
JP4513423B2 (ja) * 2004-06-03 2010-07-28 株式会社セガ 仮想三次元座標ポリゴンによるオブジェクト画像の表示制御方法及びこれを用いた画像表示装置
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
US8643701B2 (en) 2009-11-18 2014-02-04 University Of Illinois At Urbana-Champaign System for executing 3D propagation for depth image-based rendering
US9300946B2 (en) 2011-07-08 2016-03-29 Personify, Inc. System and method for generating a depth map and fusing images from a camera array
US8913829B2 (en) * 2012-06-05 2014-12-16 Tandent Vision Science, Inc. Automatic processing scale estimation for use in an image process
JP2016213718A (ja) * 2015-05-11 2016-12-15 キヤノン株式会社 画像処理装置及び画像処理方法、プログラム、記憶媒体
WO2018175299A1 (en) 2017-03-24 2018-09-27 Mz Ip Holdings, Llc System and method for rendering shadows for a virtual environment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625289A (en) * 1985-01-09 1986-11-25 Evans & Sutherland Computer Corp. Computer graphics system of general surface rendering by exhaustive sampling
US4737921A (en) * 1985-06-03 1988-04-12 Dynamic Digital Displays, Inc. Three dimensional medical image display system

Also Published As

Publication number Publication date
JPH0273479A (ja) 1990-03-13
EP0358493A2 (en) 1990-03-14
US5043922A (en) 1991-08-27
EP0358493A3 (en) 1992-06-10

Similar Documents

Publication Publication Date Title
JPH0727581B2 (ja) 図形処理装置
US6664959B2 (en) Method and apparatus for culling in a graphics processor with deferred shading
US6285378B1 (en) Method and apparatus for span and subspan sorting rendering system
Everitt Interactive order-independent transparency
US7116337B2 (en) Transparent depth sorting
US6326964B1 (en) Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system
JP3759971B2 (ja) 3次元像を陰影付けする方法
US6894689B1 (en) Occlusion culling method and apparatus for graphics systems
US5990904A (en) Method and system for merging pixel fragments in a graphics rendering system
US5729672A (en) Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
JP2769427B2 (ja) 一連のグラフィック・プリミティブ用のデータを処理するための方法
US6744430B1 (en) Image processing method and its apparatus
US5249264A (en) Image display method and apparatus
US7952579B1 (en) System, method and computer program product for geometrically transforming geometric objects
WO1997005576A9 (en) Method and apparatus for span and subspan sorting rendering system
US6509897B1 (en) Method and system for providing implicit edge antialiasing
WO2000011613A9 (en) Performing hidden surface removal in a graphics processor with deferred shading
JPH09223244A (ja) 3次元オブジェクトを高速にレンダリングする方法および装置
US5926182A (en) Efficient rendering utilizing user defined shields and windows
McGuire et al. Fast, practical and robust shadows
JP2002531905A (ja) ボクセル空間から透視描画を形成する方法
JPH09500462A (ja) 高性能複数層zバッファを有するコンピュータ・グラフィックス・システム
US5926183A (en) Efficient rendering utilizing user defined rooms and windows
JP3258286B2 (ja) 半透明物体と不透明物体とが混在する複数の物体についての画像データをコンピュータ表示画面に表示する描画方法および描画装置
EP0725365B1 (en) Method and apparatus for shading three-dimensional images