JP3548218B2 - 画像処理方法及び装置 - Google Patents

画像処理方法及び装置 Download PDF

Info

Publication number
JP3548218B2
JP3548218B2 JP01831394A JP1831394A JP3548218B2 JP 3548218 B2 JP3548218 B2 JP 3548218B2 JP 01831394 A JP01831394 A JP 01831394A JP 1831394 A JP1831394 A JP 1831394A JP 3548218 B2 JP3548218 B2 JP 3548218B2
Authority
JP
Japan
Prior art keywords
polygon
list
viewing
polygons
range
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
JP01831394A
Other languages
English (en)
Other versions
JPH0793591A (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.)
Canon Inc
Original Assignee
Canon Inc
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
Priority claimed from GB939303009A external-priority patent/GB9303009D0/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of JPH0793591A publication Critical patent/JPH0793591A/ja
Application granted granted Critical
Publication of JP3548218B2 publication Critical patent/JP3548218B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Description

【0001】
【産業上の利用分野】
本発明は画像処理方法と装置とに係わる。具体的には、本発明は、三次元空間で多角形の位置を表現するデータを処理して例えば二次元空間で前記の多角形の視野像を表出するために必要な順序リストを生成する方法と装置とに係わる。
【0002】
【従来の技術】
本出願人の同時に申請中の欧州特許公開公報第EP−A−0531157号(最初に記載の日付の時点では未公開)において開示されているシステムを始めとする対話式三次元図形システムにおいては、オペレータからの入力指令に応答して、多角形を表現するデータが対話式に三次元空間で加工処理される。オペレータと仮想三次元環境との間の閉フィードバックループを維持するのに充分な速度で二次元画像がオペレータに提示される。
【0003】
【発明が解決しようとする課題】
三次元画像データを二次元平面に表出することによって二次元画像を生成する。視野毎に「潜伏面除去」を実行して、他の多角形を遮る多角形が、遮られる多角形の代わりか少なくとも遮られる多角形の後かに確実に二次元平面に表出されるようにする。遮り方は部分的なことが多い。従って、遮る側の多角形を表出する前に遮られる側の多角形を表出する方が好ましい。また、完全に目に見えない多角形を選別して、表出プロセス中に更に注目しないようにしても良い。このように、表出プロセスの非常に重要な側面は多角形を正確な順序で確実に表出することである。しかし、反復毎に繰り返し表出順序を正確に決定することは、処理時間の相当な部分の浪費につながる。
【0004】
先述の同時に申請中の欧州特許公開公報に表出順序リストを生成するシステムが開示されている。このシステムにおいては、対話操作の前に位相的分類法を用いて前プロセスとして表出順序リストの生成を実行する。必要ならば、視野の向きを複数個選択して、それらの視野の一つ一つに対して表出順序リストを生成する。対話操作においては、実際の視野の向きと前処理で得た向きとを比較して、実際の向きにほぼ合致する前処理の向きを判定することによって、これらの表出順序リストの中からどれか一つを選択する。これによって、対話操作に必要な演算オーバヘッドが顕著に低減する。
【0005】
【課題を解決するための手段】
本発明によれば、選択された観察方向から観察した場合における被写体の画像を表出するために使用する、表出順序リスト、ツリー、又は、有向グラフを作成するために、複数の多角形によって3次元空間上に定義される前記被写体を処理する方法であって、
複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義する工程と、
隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義する工程と、
選択された観察方向として、観察方向を特定する工程と、
選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する工程と、
表出画像データを作成するために、前記選択されたリストに応じて前記多角形を表出する工程と、
前記被写体の画像を表示するために前記表出画像データを処理する工程と、を含み、
各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする方法が提供される。
【0006】
また、本発明によれば、選択された観察方向から観察した場合における被写体の画像を表出するために使用する、表出順序リスト、ツリー、又は、有向グラフを作成するために、複数の多角形によって3次元空間上に定義される前記被写体を処理する図形装置であって、
複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義する範囲定義手段と、
隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義する表出順序定義手段と、
選択された観察方向として、ユーザが観察方向を特定することを許可する手段と、
選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する手段と、
表出画像データを作成するために、前記選択されたリストに応じて前記多角形を表出する手段と、
前記オブジェクトの2次元画像を表示するために前記表出画像データを処理する表示手段と、を備え、
各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする図形装置が提供される。
【0007】
また、本発明によれば、複数の多角形によって定義される面を有する被写体を、3次元空間で定義する対話式図形システムにおいて、前記被写体の表現を含む画像を表出する方法であって、
選択された観察方向により表出され得る前記画像に従って、現実の観察方向を特定する工程と、
前記選択された観察方向に従って、複数の所定の表出順序リスト、ツリー、又は、有向グラフの中から、隠れた面が除去されるように前記多角形を表出する順序を定義する選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する工程と、
表出画像データを作成するために、前記選択されたリストに従って、前記多角形を表出する工程と、
前記被写体の画像を表示するために前記表出画像データを処理する工程と、を含み、
前記所定の表出順序リスト、ツリー、又は、有向グラフは、複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義し、かつ、隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義することによって生成され、各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする方法が提供される。
【0008】
【実施例】
三次元図形システムは、被写体と光源と観察位置とを概念的な三次元空間内で処理するための仮想三次元環境を提供する。観察位置には、「世界空間」と呼ばれる仮想三次元世界へのウィンドウが設けられる。世界空間自体は、三次元座標および色や反射力などの変数を定義するデータとして存在する。概念的なウィンドウに提示される二次元画像は、表出処理として知られる手続き内で三次元画像データを処理することによって作成される。
【0009】
周知のシステムにおいては、三次元空間に存在する被写体をその被写体の表面上の選択された点の座標で表示する。表出処理には、画像の二次元領域に画素値を割当てる段階が含まれる。従って、これら座標点を直線で連結して平坦な二次元多角形の三次元ネットを提供することによって、座標点を概念的な領域に変換する。
【0010】
物体全体が表出されるまで、画素値は多角形毎に生成される。その後、表出プロセスによって生成された画素値はラスタで走査され、映像信号が生成される。ところが、固定三次元被写体の幻影を維持するためには、遮る多角形が表出される前に遮られる多角形が確実に表出されるという順序に従ってこれら多角形を表出することが大切である。この問題を一層深刻にするのは、観察方向が変化するにつれて、遮り優先度が変化するという事実である。
【0011】
三次元図形環境を提供する段階を図1 に示す。まず最初に、被写体を定義するデータを用意する。ステップ15で第一の被写体をモデル化する。同様に、ステップ16で第二の被写体をモデル化する。被写体のモデル化は、ステップ17でN 番目の被写体がモデル化されるまで続く。各被写体は、それ自体のモデル化空間と呼ばれる座標集合に従ってモデル化される。被写体データの各集合は形状を定義する。図形環境でその形状を再生するのに必要なデータは、形状ファイルに格納される。
【0012】
次の段階は、ステップ18、19、および20から成り前処理段階の一部を成す。
【0013】
ステップ18で形状ファイルを読む。形状ファイルのデータは、多角形の頂点と多角形の表面特性とに基づき被写体の形状を定義する。ステップ19で、形状ファイルのデータで定義されるデータを処理し、多角形表出順序リストを作成する。被写体が多数ある場合、その個数だけ順序リストが必要になる。ステップ20で別の被写体を処理するかどうかを判断する。判断の結果が肯定の場合、ステップ18と19を繰返する。そして、次の被写体の形状ファイルを読む。
【0014】
被写体一つ一つに対する順序リストの用意が終了したら、表出段階へ進むことが出来る。ステップ21で照明パラメータと視野パラメータとを定義する入力指令を受信する。入力指令に応えて、被写体を表現する三次元データをステップ22で加工処理する。ステップ23で観察主の位置と向きとに基づいて二次元画像を生成する。そして、ステップ24で画像を表示する。環境によっては、普通非常に精細度の高い単体画像を特定の視野位置に作成する。対話式三次元環境においては、オペレータ指令に応じてパラメータを調整し、対話中に新しい視野を繰り返し生成する。点線25で示すようにステップ21〜24が繰返される。以降、図形システムの具体的な実現方法について図23と24を参照しながら要約する。
【0015】
前述のように、被写体は、隣合う頂点を共有する多角形を接続したものと考えられる。従って、形状ファイルに定義される被写体データは、複数個の接続された多角形を定義する。
【0016】
形状ファイルに被写体データを格納するために、多数の異なるデータ構造が考えられる。その内の一つを図2 詳細に示す。図2 において、データ項目の特徴は、そのデータ項目のデータ構造内の位置によって決まる。
【0017】
図2 に示す形状ファイルの第一行には、被写体内に存在する頂点の個数を示す整数値N(V)と被写体を形成する多角形の個数を示す第二の整数値N(P)とが設定される。その後の行には頂点の座標が設定される。例えば、形状ファイルの第二行には、第一の頂点V1の座標が設定される。この行の第一の値は、頂点V1のX 座標を表す浮動小数点値X(V1) ある。第一の値の次には、頂点のY 座標を表すY(V1) とz 座標を表すZ(V1) とが設定される。同様に、次の行にはX(V2) 値とY(V2) 値とZ(V2)値とが第二の頂点V2のX 座標とY 座標とZ 座標として設定される。この設定は、最後の頂点の値X(Vm) 、Y(Vm) およびZ(Vm) が設定されるまで続く。ここで、m はN(V)に等しい。
【0018】
頂点全部の座標が求められると、それらの座標から多角形が定義される。第一の多角形をP1とし、第二の多角形をP2とする。同様に、多角形Pq(q=N(P))までの多角形を定義する。第一の多角形P1の場合、第一項目には多角形P1を構成する頂点の個数を示す整数値N(V)1 が設定される。それ以降、その多角形の一部を構成する頂点が一つ一つ次の手続きに従って順次設定される。多角形の前面から反時計回りに多角形を構成する頂点が列記される。このようにして、すなわち、多角形の前面から反時計回りに多角形の各頂点Va1 〜Vn1 が判別され、最終的にN(V)1 個の頂点が列記される。
【0019】
多角形P1が頂点三個から成る三角形である場合、多角形の第一の値N(V)1 は3 に等しい。多角形を構成する頂点は、前面から反時計回りに、例えば、頂点V2、V3およびV4と記される。従って、頂点の個数を定義する項目に続く項目には整数値が記入される。各整数値は先に規定された頂点に対応する。
【0020】
多角形を構成する頂点が列記された時点では、特定の多角形に関する項目には、光に対する多角形の反射力を示す値が含まれている。第一の値Kaは周囲の光に対する反射力を表し、第二の値Kdと第三の値Ksとは各光源に関する反射力係数を表す。第二の値Kdは拡散反射力を規定する。第三の値Ksは鏡面反射力すなわち多角形の表面の輝きを規定する。反射力値は、同時に申請中の欧州特許出願第93307772.9号(代理人の参照番号:2227830 )に記載されているように、浮動小数点値もしくは固定小数点値として格納される。
【0021】
各多角形に関する最後の項目は多角形の色を規定する。これには、多数の構成が考えられる。例えば、24ビット値を使ってRGB 色空間に色を定義してもよい。あるいは、ビット数を減らしてルックアップテーブルのアドレスを指定するようにしてもよい。同時申請中の欧州特許出願第93307611.5(代理人の参照番号:2227730 )に記載されているように、色データを非線形ルックアップテーブルに格納してもよい。
【0022】
このように、頂点と反射力値と色値とから成るリストが、被写体を構成する多角形P1〜Pqの各々に対して作成される。最後に、形状ファイルには注解が設けられる。多角形Pqに対して色を定義した後に設定したデータが、注解として処理される。
【0023】
形状ファイルを読む段階すなわち図1 のステップ18を図3 に詳細に示す。ステップ31で被写体の頂点の個数を表す値N(V)を読取る。ステップ32で被写体を構成する多角形の個数を表す値N(P)を読取る。ステップ33で各頂点のX 、Y およびZ 座標を定義する頂点データを読取る。ステップ34で各多角形を構成する頂点の中のどれか一つを指定する多角形データを各多角形の反射力値と色値と一緒に読取る。注解は、この段階では読み取られず破棄される。
【0024】
各多角形は、三次元世界空間内に設定された無限平面内に存在すると見なされる。これらの平面は各々、次の平面方程式によって定義される。
【0025】
Ax+By+Cz+D =0
ここで、A 、B 、C およびD は平面の位置を示すパラメータである。A 値、B 値およびC 値は、多角形の前面から延長し多角形の平面に対して法線となるベクトル、すなわち、多角形の平面に垂直なベクトルを規定する。平面の向きを判別するばかりでなく、法線ベクトルは多角形の表面のどれが前面かを識別する。
【0026】
ステップ34で多角形データ全部の読取りが終了したら、多角形を順番に処理する。ステップ35で多角形の平面方程式の演算を試みる。ステップ36で平面方程式を演算できるかどうかを判断する。判断の結果が否定ならば、その多角形をステップ37で破棄する。
【0027】
ステップ35で平面方程式の演算が終了したら、算出された表面の法線ベクトル(A、B 、C)をステップ38で処理(正規化)して、同一方向に向いた単位長のベクトルを設定する。単位法線ベクトルを定義するデータを多角形データに追加する。これらのデータは、ステップ19で多角形順序リストを用意するために使用されるばかりでなく、ステップ23の表出手続きでも使用される。具体的には、単位法線ベクトルは、照明パラメータを算出するときにパラメータ値を判定するために必要である。同時申請中の欧州特許出願第93307772.9号(代理人の参照番号:2227830 )に記載されているように、被写体自体のモデル化空間で照明パラメータ量を算出してもよい。
【0028】
ステップ38で単位法線ベクトルが算出されたら、ステップ39で別の多角形が存在するかどうかを判断する。結果が肯定ならば、次の多角形に対する平面方程式をステップ35で演算する。多角形全部を着目し終ると、ステップ39での判断の結果は否定となる。図1 のステップ19へ制御を戻す。
【0029】
このように、図3 に詳細に示した手続きは、形状ファイルを読み多角形毎に単位法線ベクトルを算出し注解があれば注解を破棄する。
【0030】
図1 のステップ19で多角形表出順序リストを用意する。これについて、以下に述べる。観察主をカメラと考える。カメラの特性については、パラメータ三個で充分に定義できる。パラメータは、カメラが指示する方向とカメラの位置とカメラの視野とである。各表出順序リストは、カメラの方向の集合一個もしくは複数個に対応づけられる。理想的には、考えられる全てのカメラ方向を二個か三個の集合に分類する。こうすれば、選択対象の表出順序リストの個数が最低になる。一般的には、カメラのパラメータ全部が、所定の表出順序リストに対応づけられた値に影響を及ぼす。しかし、本実施例では、最も大きな影響を及ぼすパラメータをカメラの方向であるとみなす。カメラの方向は、カメラの絶対位置とは無関係でカメラの観察軸が指示する方向に一致する。特定の方向に広がる領域は視野によって異なる。状況によっては、カメラの位置をも処理の対象にしなければ、完璧な順序リストを作成することができないかもしれない。このような状況では、リストはツリーか有向グラフかの形態をとる。観察位置に従って特定の岐を選択する。このように、方向のみに従ってリストを完成することが不可能となる位置で分岐が発生する。分岐点では、カメラの絶対位置に関連した判断が下される。判断の結果によって二つの枝の一方か他方を選び、リスト形成を続ける。
【0031】
対話操作によって、カメラの特定の向き(観察方向)に対して特定の表出順序リストが選択される。多数の表出順序リストが作成される。各表出順序リストは、後述のように、いわゆる概念的な観察軸に関係する。本実施例においては、概念的な観察軸数個の中で実際の観察方向に最も近接しているのはどれかを評価することによって、リストが選択される。
【0032】
理解し易いように、これ以降「リスト」という用語は、リスト、ツリー、有向グラフなどのデータ構造を意味するものとする。
【0033】
方向空間を図4 に示す。図4 において、球体41上の各点は球体の中心の原点42への方向を表現する。
【0034】
必要な表出順序リスト(ツリーかグラフ)の個数は、被写体の幾何学的形状によって異なる。しかし、本実施例に係わるプロセスの場合、最小リスト数は4 個である。概念的な観察軸の個数すなわち作成されるリストの個数は、オペレータによって指定される。図4 に示す例では観察軸は8 本指定される。従って、球体41は8 個の区画に分割される。
【0035】
概念的な観察軸43は、概念的な観察軸8 本の中の一つであり、水平な分割面45と第一の垂直分割面46と第二の垂直分割面47と境を成す区画44を画定する。着目される区画は、視野錐体によってではなく平面間の交点によって画定される。関心方向を上記のように定義することによって、データを加工し易くなり処理時間を顕著に短縮できる。
【0036】
多角形表出順序リストの準備に係わる図1 のステップ19について図5 で詳細に説明する。ステップ51で概念的な観察軸の集合が一組選択される。集合中の軸の個数によって、対話操作で選択される表出順序リストの個数が決まる。先述のように、この選択はオペレータ指令に応答して実行される。時間が立てば、オペレータは、着目する被写体の幾何学的形状の特徴によって好適な軸集合を判別することに慣れる。
【0037】
ステップ52で、ステップ51で選択された観察軸の位置に基づいて分割面の位置を決定する。このように、例えば、観察軸43から、ステップ42で算出される分割面44、46および47の位置が決まる。次に、ステップ52について図6 を参照して詳細に説明する。図4 から明白なように、各平面は二つの概念的な観察方向に共有されていると考えられる。特定の概念的な観察軸の領域を画定する実際の分割面全部をその軸に対して演算するようなシステムを構成する。このように構成されたシステムの場合、(概念的な観察軸43に関する処理ステップで必要な)平面46の前面は、その平面の背面とは異なる平面であり、隣接する概念的な観察軸に対して演算されるべきものである。
【0038】
概念的なカメラや目には、パラメータ定義方向があるばかりでなく、中心観察軸の方向に向いていても、視野錐体内ならば他の方向をも目に見れる視野がある。図4 に示すような観察平面の中のどれか一つの平面方向に向いているとき、カメラや目は、その平面と境を成す区画内ならどの方向をも観察できる。しかし、カメラや目は、視野のお陰で、観察面の他方の面に存在するその他の方向をもある程度は観察できる。更に、視野が増大するにつれて、境界をつけられた区画の外側に存在するその他の方向をカメラが観察できる度合が増す。
【0039】
ステップ54で境界面の位置を調節して視野を設定する。この調整について図7 を参照して更に詳細に説明する。視野を補償するために、境界面を概念的な観察軸から離れた位置に置き直す。これによって、着目している区画の寸法が増加する。
【0040】
概念的な観察軸一つ一つに対して、常に後ろを向いている多角形がいくつかあり、後ろを向いているがために目に見えないということがありえる。ステップ55では、この種の目に見えない多角形を除去する。次に、この除去について図8 を参照して詳細に説明する。
【0041】
ステップ56で予備リストを作成する。この際、概念的な観察軸方向に存在する多角形の最も遠くの頂点間の距離に着目する。図9 を参照して一層詳細に説明する。予備リストは最終表出順序リストを表すのではなく、表出順序リストを作成し易くするものである。また、予備リストを設ける目的は、完全な表出順序リストの生成を行う処理段階において論理順序に従って多角形を選択できるようにすることである。また、演算オーバヘッドを顕著に短縮できる。予備リストによって定義された順序で多角形を比較することによって、最終表出順序リストを作成するのに必要な比較回数が顕著に低下する。
【0042】
ステップ57で、予備リストからの選択を実行し、着目している特定の概念的な観察軸に対する最終表出順序リストを作成する。次に、図11と12を参照して一層詳細に説明する。
【0043】
ステップ58で、着目していない概念的な観察軸があるかどうか(別の表出順序リストを作成する必要があるかどうか)を判断する。判断の結果が肯定ならば、ステップ53へ制御を戻す。
【0044】
ステップ58での判断の結果が否定ならば(概念的な観察軸一つ一つに対する表出順序リストの作成が終了したならば)、図1 のステップ20へ制御を戻す。
【0045】
図6 は、図5 のステップ52に示された分割面の位置を算出する段階について詳細に示す。ステップ61で第一の軸を選択する。この軸は特定の方向をもちベクトルI とされる。ベクトルI は、図4 に示す概念的な観察軸43に対応する。ステップ62で軸があるかどうかを判断する。反復一回目では結果は肯定である。
【0046】
ステップ63で第二の軸J を選ぶ。この選択で、先に選択された軸が再度選択されることもある。ステップ64で軸があるかどうかを判断する。反復一回目では、やはり、結果は肯定である。
【0047】
ステップ63で、ステップ61で選択された軸を再度選んでしまったかもしれないので、ステップ65で軸J と軸I が同じかどうかを判断する。結果が肯定ならば、ステップ63へ制御を戻し別の軸を軸J として選択する。
【0048】
ステップ65での判断の結果が否定ならば、ベクトル減算を実行する。ベクトル減算では、軸J が軸I から減算される。この演算を実行するために、ベクトルI の大きさはベクトルJ の大きさと同じでなければならない。
【0049】
図4 から、ベクトル43と平面46の他方の面に存在する同様なベクトルとに対してベクトル減算を実行できることが分かる。ベクトル減算によって、別のベクトルが作成される。このベクトルは、ベクトル43を隣接ベクトルに接続する働きをし、平面46に垂直な方向に存在する。ベクトルI とベクトルJ とは長さが等しいので、作成されたベクトルは平面46の法線となる。また、このベクトルは、ベクトルJ ではなくベクトルI を指示する方向に向いている。
【0050】
ステップ66で算出されたベクトル(I−J) をステップ67で絶対値を使って除算する。これによって、単位長の等価ベクトルが算出される。このようにして、単位法線ベクトルで平面46を規定する。そして、ステップ63へ制御を戻して第二の軸J を選択できるようにする。この際、平面44を規定し、次に平面47を規定できるようにベクトルを選択してもよい。
【0051】
J ベクトル軸全部が特定のI ベクトル軸に対して着目されてしまうと、ステップ64での判断の結果は否定となり、ステップ61へ制御が戻される。
【0052】
ステップ61に制御が戻されるとすぐに、更なる軸がI 軸として選択されプロセスが繰返される。概念的な観察軸43と平面46の他方の面上の概念的な観察軸とに関連づけて説明したプロセスは、反復一回目でなくとも効率よく再実行される。但し、上記のベクトルの役目は逆転する。平面46の位置が再度判断されるが、単位法線ベクトルは、平面の背面から伸長して他の概念的な観察軸に係わる平面を規定する。
【0053】
こうして最終的には、概念的な観察軸全部が第一の軸I として着目され、ステップ62での判断の結果は否定となる。そして、制御がステップ53に渡される。
【0054】
特定の概念的な観察軸に対応する観察方向は、境界面によって規定される。また、境界面は、その他の有限数の概念的な観察軸を規定するベクトルに算術演算を実行することによって算出される。
【0055】
各境界面は、特定の概念的な観察軸に対応しない方向の範囲とその観察軸に対応する範囲とに観察方向全部を分類する。平面から除外される範囲は、その平面の単位法線ベクトルの方向で判別され、許容観察方向に配向される。対応する観察方向の実際の範囲は、概念的な観察軸I を指示する単位法線ベクトルを有する境界面から除外される範囲である。
【0056】
概念的な観察軸43に対応するカメラの向き(観察方向)の範囲に着目するとき、境界面はカメラが観察できる方向全部を規定する。このように、境界面によって画定される領域は、元来、観察方向のみに係わるものである。しかし、これでは視野を合わせないから、好ましくない状況もある。そのため、境界面によって画定される区画の拡大処理を実行して視野を変更する。この場合、境界面は調整されるが平面としての幾何学的構成は維持される。
【0057】
図7 に詳細に示す手続きに従って、視野の半角で指定される量だけ境界面を調整して視野を合わせる。視野の半角とは、視野錐体の中心観察軸と錐体の周縁部との間の角度である。視野領域は事実上円錐形をしているので、上記の処理は拡張部分を完全には反映できない。従って、平面を実際に必要な量より僅かに多い量だけ調整して、着目している区画の幾何学的形状を複雑にし過ぎないようにする。
【0058】
図5 を再度参照する。ステップ54での視野調整は概念的な観察軸毎に実行される。ステップ54は軸選択ループの中にある。従って、図4 において、隣接する区画に係わる境界面を調整すると、境界面は合致しなくなり区画は重なり合う。
【0059】
視野を調整する手続きを図7 に詳細に示す。概念的な観察軸をステップ53で選択する。そして、その他の観察軸に対して演算を行う。ステップ71で他の観察軸の中のどれか一つを選択する。この形態が設定されていない場合、単位ベクトルを算出する。この単位ベクトルをA とする。
【0060】
ステップ72で軸があるかどうかを判断する。反復一回目では、判断の結果は肯定である。ステップ71で選択される軸が、ステップ53で選択された概念的な観察軸と同一ではないという保証はない。従って、ステップ71で選択された軸がステップ53で選択された軸と同一かどうかをステップ73で判断する。判断の結果が肯定である場合、ステップ71へ制御を戻し別の軸を選択する。判断の結果が否定である場合、二本の選択された軸を分離する平面を規定する単位法線ベクトルN を読取る。この単位法線ベクトルはステップ67で算出されたものであり、このステップで格納されステップ74で読出される。
【0061】
ステップ75で単位ベクトルA とN との点乗積を算出する。これらのベクトル両方の長さが単位長であるならば、それらの点乗積は双方の間の角度の余弦関数である。
【0062】
ステップ75で算出された点乗積の絶対値あるいは大きさが1 より大きいかどうか、すなわち、その大きさが+1より大きいか−1より小さいかどうかをステップ76で判断する。点乗積の大きさが1 より大きい場合、丸め誤差が原因なので、ステップ77で大きさを1 に設定する。必要ならば、判断処理を重ねて、システム内の論理誤差の存在を明確に反映する数値を判別してもよい。
【0063】
点乗積が+1に極めて近いか(例えば、0.9999より大きいか)をステップ78で判断する。判断の結果が肯定ならば、ステップ71へ制御を戻し別の軸を選択する。
【0064】
ステップ78での判断の結果が否定ならば、ステップ79で点乗積の逆余弦関数を算出し、二つのベクトル間の角度α値を判定する。
【0065】
ステップ80で、ステップ79で算出された角度α値から視野の半角を減算する。この結果、新しい値α’が得られる。この値は、平面を視野に合わせて調整した後のその他の概念的な観察軸からの角度を表す。
【0066】
ステップ81でα’値がゼロより小さいかゼロと等しいかどうかを判断する。判断の結果が肯定ならば、制御をステップ71へ戻す。
【0067】
ステップ81での判断の結果が否定ならば、ベクトルA とN とのクロス乗積を算出して回転軸R を求める。ステップ83で新しい単位法線ベクトルN ’を算出して、視野を変更するために置換させられた境界面の向きを規定する。新しい単位ベクトルは、例えば、(i) 概念的な観察軸ベクトルA で乗算された角度α’値の余弦関数、あるいは、(ii)ベクトルR とA とのクロス乗積で乗算された角度α’値の正弦関数を加算することによって求められる。
【0068】
ステップ84で、調整された単位ベクトルN ’を記述し制御をステップ71へ戻す。後続の演算では、N で規定される半空間の代わりにN ’で規定される半空間を使用する。
【0069】
最終的には、ステップ72での判断の結果が否定になり、制御がステップ85へ渡される。これによって、観察軸自体が観察角度構造に追加される。
【0070】
図8 は、図5 のステップ55での目に見えない多角形の除去について詳細に示す。ステップ91では、ステップ54で視野に合わせて調整された境界面に着目する。具体的には、着目する境界面とは、ステップ53で選択された概念的な観察軸に対応する方向に境界をつけるために必要な平面のことである。このような境界面の小集合を非冗長境界面と呼ぶ。これらの境界面は、現在選択されている観察軸に対しては非冗長なのである。
【0071】
ステップ91で選択された非冗長境界面は交差している。ステップ92で、交点を規定する辺ベクトルを算出する。これらのベクトルは後続の処理に使用される。従って、これらのベクトルを定義するデータを将来の使用のために格納する。
【0072】
ステップ93〜98で、多角形全部に順番に着目して、着目している概念的な観察軸方向に目に見えるか見えないかを判断する。目に見えない多角形は、選択された概念的な観察軸に関する表出順序リストの作成に関して更に着目されることはないので除去される。
【0073】
具体的には、ステップ93で別の多角形があるかどうかを判断する。反復一回目では、判断の結果は肯定である。ステップ94では別の辺ベクトル(ステップ92で算出された集合に含まれる辺ベクトル)があるかどうかを判断する。反復一回目では、判断の結果は肯定である。
【0074】
ステップ95で、多角形単位法線ベクトルとステップ94で選択された辺ベクトルとの間の点乗積を算出する。
【0075】
ステップ96で、ステップ95で演算された点乗積がゼロより大きいかどうかを判断する。点乗積がゼロより大きい場合、判断の結果は肯定となる。従って、ステップ97で多角形を保持し、制御をステップ93へ戻す。そして、別の多角形を選択する。
【0076】
ステップ96での判断の結果が否定ならば、多角形は目に見えない可能性がある。但し、その多角形が目に見えないのは、辺ベクトル全部で構成された点乗積がゼロより大きくないときだけである。このように、ステップ96での判断の結果が否定ならば、制御をステップ94へ戻し別の辺ベクトルを選択する。ステップ95で、次の辺ベクトルに対する点乗積を再度算出し、ステップ96で、この点乗積はゼロより大きいかどうかを判断する。
【0077】
点乗積がどれもゼロより大きくない場合、ステップ94での判断の結果は否定となる。そのため、ステップ98で当該多角形を除去し更に着目しないようにする。
【0078】
多角形全部が着目されてしまうと、ステップ93での判断の結果は否定となり、制御はステップ56へ移る(図5)。
【0079】
図9 は予備リストを作成するためのステップ56(図5 )を詳細に示す。ステップ101 で、ステップ18(図1 )で形状ファイルから読取られた多角形データを再構成して図10に示す形態にする。多角形データの各ブロックにはラベルがつけられ、一意に判別できるようになっている。このラベルは目に見える多角形を判別する。また、目に見えない多角形はステップ55(図5 )で除去される。更に、各多角形には追加空間が設けられ、図10に示すように予備リストや「子「および/あるいは「親」への接続を示すポインタが設定される。後に、これらのポインタの機能について図10を参照して説明する。
【0080】
図9 に戻る。ステップ102 で、概念的な観察軸方向に最も遠くまで広がる多角形を選択する。そして、概念的な観察軸方向の距離に着目して予備リストを作成する。この予備リストから後続の処理の対象となる多角形の論理順序が決まり、表出順序リストを作成できる。
【0081】
ステップ103 で、選択された多角形を予備リストの最後に追加し、ステップ104 で、別の多角形があるかどうかを判断する。判断の結果が肯定であれば、制御をステップ102 へ戻し、最も遠くまで広がる次の多角形を選択する。
【0082】
最終的には、ステップ104 での判断の結果は否定となり、制御はステップ57へ戻される。
【0083】
他の多角形に優先して表出される多角形を判別して、表出順序リストを作成する。リストに設定される第一の多角形は、後続の多角形で遮られるものであり、最初に表出されるものである。優先して他の多角形を遮る多角形は、最後にリストに設定される。
【0084】
状況によっては、存在する多角形から(予備リストに類似した)正しくリストを作成できない。例えば、第一の多角形が第二の多角形を遮り、第二の多角形が第三の多角形を遮り、第三の多角形が第一の多角形を遮るという具合いに、多角形が相互に互いを遮るという状況である。この場合、どの多角形がどの多角形より優先されるかを判断するのは不可能である。このような状況を以降サイクルと呼ぶ。
【0085】
本実施例においては、後により詳細に説明するが、サイクルの破壊に二通りの手続きが採用される。第一の手続きにおいては、多角形を分割して「子」多角形を二個作成することによってサイクルを破壊する。すなわち、子多角形を表出順序リストに設定し、次に別の多角形をリストに設定し、その後に他方の子多角形をリストに設定することで、相互に遮るのを回避しようとする。分割多角形は、子多角形二個の「親」と呼ばれる。子多角形に対して図10に示す親ポインタが設定され、関連する親多角形のラベルを指示する。同様に、子ポインタを設け、親多角形が順番に特定の子多角形に関する多角形データを指示できるようにしている。本実施例においては、親多角形は常に子二個に分解される。その後に、子多角形を両方とも表出順序リストに設定して、あたかも親多角形がそのリストに設定されたかのように処理する。
【0086】
多角形を分割してサイクルを破壊することができない場合、第二の手続きが試みられる。すなわち、表出順序リストを分岐させてサイクル破壊を実行し、表出順序リストに決定点を設定するのである。決定点に達したら、概念的なカメラの実際の位置およびカメラの視野(観察)方向に着目し、どれか一つの枝を選択する。サイクルを破壊するには、様々な地点で表出順序リストを分岐させることが必要である。すなわち、ツリー構造を採用するのである。ツリーの各枝は同一の多角形集合で構成される。但し、多角形のいくつかは、異なる方法で子多角形に分割されているかもしれない。枝間の相違は基本的には多角形の順序である。この順序は概念的なカメラの実際の位置によって異なる。
【0087】
分岐が行われ複数個の多角形が(枝毎に異なる順序で)列記されたら、枝二本における多角形の順序が再び同じになる可能性がある。このような状況では、どれか一つの枝に存在する多角形を列記し、多角形の完全なリストが出来ている枝を指示するポインタを他の枝に設定する。この場合、リストは有向グラフの形態をとる。また、最終表出順序リストへの参照にはツリーや有向グラフへの参照が含まれる。
【0088】
図10において、各多角形データブロックは一意な多角形ラベルを備えている。多角形ラベルは、形状ファイルから読取られた多角形データに付加される。更に、特定の多角形がそれ自体子多角形である場合に親を指す親ポインタと、予備リスト内の位置を直接あるいは親多角形を介して示す接続ポインタと、多角形が子多角形に分割されている場合に子多角形を判別する子ポインタとが多角形データブロックに設定される。
【0089】
予備リストは多角形のどれかが分割される前に形成されるので、この段階で着目している多角形全部が接続ポインタを予備リスト内のある位置に設定される。しかし、多角形を分割して表出順序リストを作成する場合もある。また、子多角形が表出順序リストに設定されたとき、付随する子多角形も親多角形に優先してそのリストの適当な位置に設定される。
【0090】
図11と12は図5 のステップ57を詳細に示す。先述のように、多角形はこの段階では既に予備リストに設定されている。そして、その予備リストから多角形を選択して最終表出順序リストを作成する。具体的には、予備リストの位置から鑑み最終表出順序リストに設定される可能性が最も高い多角形が選ばれる。この多角形は「現行本命多角形」と認識される。最終表出順序リストに設定する前に、試験を実行して現行本命多角形をリストに設定できるかどうかを確認する。試験を実行して、現行本命多角形と他の多角形とを比較し、現行本命多角形が最終表出順序リストに設定されるのを阻止しようとする多角形を判別する。現行本命多角形に比較される多角形を候補多角形と呼ぶ。
【0091】
現行本命多角形が表出順序リストに設定されるのを候補多角形が阻止しようとしているかどうかを判断するために行われる試験について説明する前に、現行本命多角形を表出順序リストに設定されない場合に採られる論理処理構成について述べる。
【0092】
現行本命多角形と候補多角形とを比較して、本命多角形がリストに付加されるのを候補多角形が阻止できるかどうかを判断する。本命多角形がリストに付加されるのを候補多角形が阻止できることが検出されると、特定の多角形が現行本命多角形として選択されたが、表出順序リストへの設定は拒絶されたという趣意が表示される。その後、別の現行本命多角形が選択される。
【0093】
拒絶された現行本命多角形はスタックに投入される。そして、以前に候補多角形だった多角形であって、以前の現行本命多角形が最終表出順序リストあるいはツリーに設定されるのを阻止した多角形が、新しい現行本命多角形として選択される。新しい現行本命多角形が最終表出順序リストに設定されたら、以前の現行本命多角形はスタックから弾き出され、他の候補多角形に対して試験される。
【0094】
このように、現行本命多角形はスタックに付加されたりスタックから除去されたりする。これによって、現行本命多角形が拒絶された場合には、そのことが表示される。一方、予備リストの残りの多角形に優先して過去の現行本命多角形に再度着目できるようにする。
【0095】
スタックも、サイクルの発生を識別するための機序を与える。すなわち、既にスタックに入っている新しい現行本命多角形がスタックに投入されそうになったら、それは明らかにサイクルが存在するということであり、サイクルを破壊するための処理を実行しなければならない。
【0096】
上記のように、多角形を分割してサイクルを破壊しようとすると、特定の多角形が分割されて一対の子多角形が作成される。子としての多角形は再度分割され一対の子多角形が作成される。子多角形が小さ過ぎないよう保証する手段が設けられている。
【0097】
多角形をスタックに投入するための構成では、子多角形を処理でき、親多角形に優先して子多角形を表出順序リストに設定することできる。
【0098】
図12を詳細に考察する。ステップ121 で空のスタックを作成し、ステップ122 でスタックが空かどうかを判断する。反復の一回目では判断の結果が肯定なのは明かである。制御をステップ124 へ渡す。
【0099】
ステップ124 で多角形全部が処理されたかどうかを判断する。判断の結果が肯定であるとき、最終出力表出順序リストあるいはツリーが完成したことを意味する。制御を図5 のステップ58へ戻す。
【0100】
ステップ124 での判断の結果が否定であるとき、制御をステップ125 へ渡す。そして、予備リストから次の多角形を現行本命多角形として選択する。
【0101】
多角形のスタックへの投入が終了すると、ステップ122 での判断の結果は否定となる。ステップ123 で、予備リストから多角形を取出すのに優先してスタックから最上位の多角形を取出し、次の現行本命多角形を判別する。その後、制御を再びステップ126 へ渡す。
【0102】
ステップ126 で現行本命多角形が既に最終表出順序リストに設定されているかどうかを判断する。判断の結果が肯定ならば、制御をステップ122 へ戻す。判断の結果が否定ならば、制御をステップ127 へ渡す。
【0103】
ステップ127 で現行本命多角形が子多角形かどうかを判断する。判断の結果が肯定ならば、最下位の子多角形を判別し現行本命多角形として設定する。最下位の子多角形は、それ自体は子を持たない多角形であり、多角形のツリー構造の末端の「葉」と呼ばれるものを同定することで判別される。
【0104】
ステップ127 での判断の結果が否定ならば、制御をステップ128 の次のステップ129 へ渡す。ステップ129 で現行本命多角形が遮ることができる多角形を判別するための処理を実行する。この処理で現行本命多角形が遮れる多角形を判別できたら、ステップ129 で、遮る側の多角形に関する表示と供にこの事実に関する情報が表示される。あるいは、現行本命多角形が遮れる多角形はないという趣意が表示される。
【0105】
ステップ130 で現行本命多角形が遮ることができる多角形があるかどうかを判断する。判断の結果が否定ならば、制御をステップ137 へ渡す。
【0106】
ステップ130 での判断の結果が肯定ならば、これは、すなわち、現行本命多角形を最終表出順序リストに設定できないということである。ステップ131 で、今では古い現行本命多角形と呼ばれる現行本命多角形をスタックに投入し、制御をステップ132 へ渡す。
【0107】
ステップ131 で古い現行本命多角形のスタックへの投入が終了したら、ステップ129 で判別された多角形(候補多角形)がステップ132 で新しい現行本命多角形となる(図12)。
【0108】
ステップ133 で、新しい現行本命多角形が既にスタックに存在するかどうか、そして、サイクルが存在するかを判断する。判断の結果が肯定ならば、サイクルが存在する。そして、ステップ134 でサイクルを破壊しようとする。
【0109】
ステップ133 での判断の結果が否定ならば、制御をステップ129 (図11)へ戻す。そして、新たに選択された現行本命多角形が遮れる多角形を判別するための処理を実行する。
【0110】
図12において、ステップ134 でサイクルの破壊が終了すると、多角形の中には修正(例えば、分割とか切捨て)されたものがあるかもしれない。ステップ135 でこれらの多角形をスタックから除去す。ステップ134 のサイクル・破壊・ルーチンは、ステップ135 の制御に戻る前に最下位の修正された多角形を記録する。ほかの修正された多角形より長くスタックに存在した修正されたポリゴンを意味する。それからステップ135 は修正された多角形の他に、修正された多角形の1つより後にスタックに追加された未修正の多角形も取り除く。サイクル分割の試みが常に不成功に終る可能性がある。また、サイクルが存在するということを受け付けるか無視するかを判断する処理も必要かもしれない。しかし、図12に関連づけた説明では、サイクル全部を破壊するものとする。大多数の場合、サイクル全部を破壊するからである。
【0111】
ステップ135 で修正された多角形のスタックからの除去が終了したら、ステップ136 でスタックは空かどうかを判断する。ステップ136 での判断の結果が否定ならば、スタックは空ではないということなので、制御をステップ123 へ戻す。そして、最上位の多角形をスタックから排除して現行本命多角形を選択する。あるいは、ステップ136 での判断の結果が肯定ならば、スタックは空であるということなので、制御をステップ124 へ戻す。そして、多角形全部が処理されたかどうかを再度判断する。
【0112】
ステップ130 (図11)での判断の結果が否定ならば、ステップ129 で呼出された手続きは、現行本命多角形が遮れる多角形を判別できなかったということである。従って、ステップ137 で現行本命多角形を表出順序リストに設定す(図12)。ステップ138 で、多角形データに変更を加えて、その多角形は表出順序リストに設定されているという事実を記録する。ステップ139 で、別の子多角形が存在するかどうかを判断する。現行本命多角形自体が子多角形ならば、判断の結果は肯定である。そうでなければ、判断の結果を否定にし制御をステップ122 へ戻す。
【0113】
ステップ137 で表出順序リストに設定された多角形が子多角形ならば、ステップ140 でその他の子多角形が表出順序リストに設定されているがどうかを判断する。判断の結果が否定ならば、制御を再びステップ122 へ戻す。あるいは、判断の結果が肯定ならば、親多角形を判別するデータに着目することが必要になる(ステップ141 )。子多角形が両方とも表出順序リストに設定されたということは、親多角形が表出順序リストに設定されたということと同じなので、親多角形を除去して着目しないようにする。
【0114】
ステップ141 で制御をステップ138 へ戻す。そして、親多角形に関する項目が変更されて、親多角形は表出順序リストに設定されているという趣意になる。先述のように、この親多角形はそれ自体が子なので、ステップ139 で判断が再度下される。そして、制御をステップ122 へ戻すまでループを数回反復させる。
【0115】
図13は図11のステップ129 に示された手続きを詳細に示す。この手続きは、現行本命多角形が遮れる多角形を識別する。ステップ151 で、次の多角形を予備リストから選択して現行本命多角形によって遮られる候補多角形として試験する。
【0116】
ステップ152 で、別の多角形がステップ151 で抽出されたかどうかを判断する。予備リスト内の多角形全部の処理が終了したならば、判断の結果は否定になる。ステップ152 での判断の結果が否定ならば、現行本命多角形は多角形をどれも遮れない(多角形は何も残ってないので遮れない)という趣意を表示し、制御を図11A のステップ130 へ戻す。この場合、ステップ130 での判断の結果は否定になる。従って、制御をステップ図12の137 へ渡す。そして、現行本命多角形を順番に表出順序リストに設定する。
【0117】
ステップ151 で予備リストから候補多角形を求めることができたら、ステップ152 での判断の結果を肯定にし、制御をステップ154 へ渡す。
【0118】
ステップ154 で、選択された候補多角形が現行本命多角形と同一かどうかを判断する。候補多角形が現行本命多角形と同一であり、ステップ154 での判断の結果が肯定ならば、制御をステップ151 へ戻し、次の多角形を新しい候補多角形として予備リストから選択し、現行本命多角形によって遮られるかどうかについての試験を実施する。
【0119】
ステップ154 での判断の結果が否定ならば、候補多角形は現行本命多角形とは異なるということなので、試験を実施して現行本命多角形が候補多角形を遮れるかどうかを判断する。
【0120】
ステップ155 で、観察軸方向の広がりの度合に着目する。広がりの度合に基づいて予備リストを作成するのである。観察軸方向に最も遠くまで広がる多角形を観察主の近辺に広がる多角形に優先してリストに設定するという順序で、多角形を予備リストに設定する。予備リストを作成する際、観察方向に最も遠くまで広がる多角形同士の頂点同士を比較して多角形を分類する。このようにして、ステップ155 で活用された特性に基づく予備リストが作成される。
【0121】
ステップ155 で、最も遠くまで広がる候補多角形の広がりの度合すなわち候補多角形を予備リストに位置づける際に使用された広がりの度合を、最も近くで広がる現行本命多角形の広がりの度合に比較する。現行本命多角形に関する限り、ステップ155 で着目されるのは最も遠くまで伸びる広がりの度合(予備リストへ投入する際に使用された広がりの度合)ではなく最も近くで伸びる広がりの度合である。
【0122】
ステップ156 で、最も近くで広がる現行本命多角形の広がりの方が実際には最も遠くまで広がる候補多角形の広がりより遠くまで伸びているかどうかを判断する。この判断の結果が肯定ならば、現行本命多角形は候補多角形を覆い隠すことは出来ない。
【0123】
予備リストの重要な特徴は、ステップ155 と156 で行われた比較の結果に基づいて、本命多角形が候補多角形を遮ることは出来ないと判断される場合、多角形が予備リストに順序正しく配置されると仮定すれば、本命多角形は他のどの多角形をも覆い隠すことはできないということである。これは、予備リストに設定される多角形全部が最も遠くまで広がっているからである。このように、最も遠くまで広がる多角形の広がりが、最も近くで広がる本命多角形の広がりよりも近くまでしか伸びていない場合、その他の多角形全部の広がりは、最も近くで広がる本命多角形の広がりより近くまでしか伸びていないことになる。従って、本命多角形は他の多角形のどれをも遮ることは出来ない。すなわち、予備リストに残る他の多角形のどれかに対して試験をしなくても現行本命多角形を表出順序リストに設定できる。この手続きの優位性は、ステップ156 で実施した試験が成功すれば、必要な処理時間を顕著に低減できるこということである。
【0124】
この試験の優位な特徴は、サイクルを破壊するために分割された候補多角形の子多角形に着目する必要が無い点である。最も遠くまで広がる親多角形の広がりが、最も遠くまで広がる子多角形の広がりと同等となる。また、この(最も遠くまで広がる)子多角形が現行本命多角形によって遮られなければ、他の子多角形のどれもが現行本命多角形によって遮られない。このように、ステップ155 と156 で実施される試験は、試験が成功して、残りの多角形のどれかを試験する必要がなければ、非常に有効である。
【0125】
予備リストの作成で二つの重要な機能が発揮される。第一の機能は、表出順序リストに設定するために本命多角形を選択するときや本命多角形に対して比較するために候補多角形を選択するときの論理順序を提供する。第二の機能は、それをステップ155 と156 の処理に組合わせて実行すれば、本命多角形を最終表出順序リストに設定するのに必要な演算オーバヘッドをかなり短縮できるというものである。
【0126】
ステップ156 での判断で、現行本命多角形は候補多角形を遮れないことを確認できない場合、図11のステップ130 へ復帰する前に何等かの処理を行わなければならない。実現し易くするために、候補多角形を分割して複数個の子多角形を作成するときに、葉の子多角形一つ一つに個別に着目することが望ましい。また、ステップ152 での判断の結果が否定になるまで、あるいは、ステップ155 と156 で実施される広がり試験が成功するまで、予備リストに残っている多角形全部に着目することが必要である。
【0127】
ステップ157 で、候補多角形は子多角形かどうかを判断する。判断の結果が肯定ならば、子多角形の構造を検査して葉の子多角形すなわち親ではなく分割されてない子多角形を判別する。ステップ158 で次の葉の子多角形を選択する。子多角形の構造に関連したプロセスは、予備リストから選ばれた根の多角形を構成する葉の子多角形全部が着目されるまで続く。子多角形を作成するステップにおいて、第一の子多角形は普通第二の子多角形よりも観察主から離れた位置に作成される。従って、ステップ158 では、ツリー構造の階層毎に階層順位順に子多角形を選択する。
【0128】
ステップ157 での判断の結果が否定ならば、制御をステップ159 へ渡す。制御はステップ158 に続くステップ159 にも渡される。ステップ159 で、手続きを実行して現行本命多角形が候補多角形を遮れるどうかを確認する。この候補多角形は、予備リストから選択された候補多角形あるいは予備リストから選択された多角形の葉の子多角形としての候補多角形である。
【0129】
ステップ160 で、現行本命多角形が候補多角形を遮れるかどうかを判断する。判断の結果が肯定ならば、ステップ161 でこの趣意を表示し制御をステップ130 へ戻す。ステップ130 での判断の結果が肯定ならば、ステップ131 で現行本命多角形をスタックに投入する。
【0130】
ステップ160 での判断の結果が否定ならば、予備リストから選択された多角形から派生した別の葉の子多角形があるかどうかをステップ162 で判断する。判断の結果が肯定ならば、制御をステップ158 へ戻しステップ159 で次の葉の子多角形を選択し現行本命多角形と比較する。このように、選択された多角形の葉の子多角形全部が着目されるまで、このループは繰返される。
【0131】
葉の子多角形全部に着目し終えたら、ステップ162 での判断の結果を肯定にし、制御をステップ151 へ戻す。ステップ151 で、次の多角形を候補多角形として予備リストから選択する。その後、先に詳細に説明した手続きが繰返えされる。
【0132】
予備リストから選択された次の多角形の広がりをステップ155 で比較する。ステップ156 での判断の結果が肯定ならば、残りの多角形のどれも現行本命多角形によって遮られないことが明白となる。すると、残りの多角形全部を候補多角形として着目する必要がなくなる。但し、ステップ155 と156 で実施した試験が不成功に終った場合は着目しなければならない。
【0133】
図14は図13のステップ159 の手続きを詳細に示す。この手続きは、現行本命多角形が候補多角形を遮れるかどうかを判断する。ステップ183 で、候補多角形のどこかの部分が現行本命多角形の平面の後に来るかどうかを判断する。現行本命多角形の平面は現行本命多角形の単位法線ベクトルによって規定される。また、現行本命多角形の平面は、実際の多角形の辺より先へ伸び、着目している世界空間の境界から外れた平面である。候補多角形のどの部分も現行本命多角形の平面の後に来ていないならば、現行本命多角形が候補多角形を遮ることはできない。また、ステップ183 での判断の結果は否定になる。
【0134】
ステップ183 での判断の結果が否定ならば、制御をステップ195 へ渡す。そして、現行本命多角形が候補多角形を遮ることは出来ないという趣意を表示し、制御を図13のステップ160 へ戻す。
【0135】
ステップ183 での判断の結果が肯定的ならば、候補多角形の一部が現行本命多角形の平面の後に来るということなので、ステップ184 で「候補多角形の断片」と呼ばれるこの部分を表現するデータを格納する。
【0136】
ステップ185 で、現行本命多角形のどこかの部分が候補多角形の平面の前に来ているかどうかを判断する。現行本命多角形のどの部分も候補多角形の平面の前には来ていない場合、現行本命多角形が候補多角形を遮ることはできない。ステップ185 での判断の結果が否定ならば、制御を再びステップ195 へ渡す。そして、ステップ160 で、現行本命多角形は候補多角形を遮れないという趣意のデータを表示する。しかし、ステップ185 での判断の結果が肯定ならば、現行本命多角形は候補多角形を遮れる可能性が限定的ではないがある。
【0137】
ステップ186 で、候補多角形の平面の前に来ている現行本命多角形の断片を定義するデータを格納する。次に、ステップ184 と186 で格納された断片と境界面とを比較する。
【0138】
ステップ187 で境界面を選択する。平面には絶対位置はないが、その単位法線ベクトルで向きが規定される。単位法線ベクトルの正の方向は、対応する概念的な観察軸の方向である。また、多角形の断片の位置は、この正の方向に対して比較される。具体的には、ステップ188 で、境界面の法線ベクトルの正の方向に最も近くに位置する現行本命多角形の断片の点を判定する。その後ステップ189 で、同一の境界面の法線ベクトルの正の方向に最も遠くに位置する候補多角形の断片の点を判定する。ステップ190 で、現行本命多角形の断片の最も近い点は候補多角形の断片の最も遠い点より遠いかどうかを着目している平面に対して判断する。
【0139】
現行本命多角形の断片上の境界面に最も近い点が、前記の方向において候補多角形の断片の最も遠い点より遠い場合、現行本命多角形は境界面と平行な観察方向において候補多角形を遮れない。ステップ190 での判断の結果が肯定ならば、ステップ191 で、着目している境界面はもっとあるかどうかを判断する。この判断の結果が肯定ならば、制御をステップ187 へ戻す。そして、次の境界面を選択し、ステップ188 、189 および190 で距離試験を繰返す。現行本命多角形の境界面のどれかに最も近い点が、候補多角形のその境界面から最も遠い点よりも遠い場合、ステップ190 での判断の結果は肯定となり、現行本命多角形は候補多角形を遮れない。また、制御はステップ195 へ渡される。
【0140】
複数個の試験が入れ子形式で実施される。試験は、相互の効果が最大となるような順序で実施される。ステップ183 と185 で実施される試験は第一段階試験と見なされる。すなわち、候補多角形のどこかの部分が好適多角形の平面の後に来ているかどうかが判断される試験の他に、候補多角形の断片を定義するデータが収集される試験が実施される。同様に、現行本命多角形のどこかの部分が候補多角形の平面の前に来ているかどうかがステップ185 で判断されるとき、現行本命多角形の断片を定義するデータが収集される。
【0141】
ステップ183 と185 で実施される試験が不成功に終った場合、すなわち、判断の結果が肯定となった場合、第二段階試験が実施される。しかし、第二段階試験は、元の多角形データに対しては実行されず、ステップ184 と186 で格納されたデータに対して実行される。
【0142】
このように、現行本命多角形が表出順序リストに追加されるのを候補多角形が阻止する位置にあるかどうかの判断が試みられる場合、第一試験で一方の多角形のポテンシャル摩擦が発生する可能性のある部分(あるいは、両方の多角形の部分)を判別する。これによって、現行本命多角形が表出順序リストに追加されるのを阻止する。その後、遮る側の多角形の特定の部分一個あるいは複数個に対してのみ第二段階試験が排他的に実施される。このように、第一段階試験で現行本命多角形がリストに追加されるかどうかの決定が不成功に終ることがあったとしても、第二段階試験の実施を可能にする情報は得られる。
【0143】
ステップ190 での判断の結果が境界面全部に対して否定ならば、ステップ91での判断の結果も否定になる。この時点で、候補多角形は現行本命多角形によって遮られないとは言えなくなる。ステップ192 で、現行本命多角形が候補多角形を遮れるかどうかの最終判断を下す。
【0144】
ステップ193 で、現行本命多角形が候補多角形を遮れるかどうかを判断する。判断の結果が再度否定ならば、制御をステップ195 へ渡す。しかし、試験全部を終了した後でも、ステップ193 での判断の結果が以前として肯定ならば、現行本命多角形は候補多角形を遮れると推測する。ステップ160 でこの趣意の情報を表示する。
【0145】
現行本命多角形が候補多角形を遮れるかどうかの最終判断を下すステップ192 の手続きを図15と16に詳細に示す。
【0146】
上記のように、図14のステップ185 での現行本命多角形の断片に関する判断の結果に基づいて行えば、ステップ189 での判断は下し易くなる。更に、もしステップ189 の後でも遮りがあると判断される場合、この遮りの原因は、現行本命多角形の断片として判別された現行本命多角形の一部であることは周知の通りである。このように、候補多角形を遮るものがあるとしたら、それは現行本命多角形の断片である。また、現行本命多角形の残りの部分は候補多角形のどの部分をも遮れない。従って、図15と16の手続きにおいて、更に着目する必要があるのは現行本命多角形のみである。現行本命多角形の断片が候補多角形を遮っていないことを示すことができれば、現行本命多角形全体を最終表出順序リストに設定できる。
【0147】
上記のように、ステップ190 (図14)で実施される試験では、境界面の法線ベクトル方向に最も近い現行本命多角形の断片の点と最も遠い候補多角形の点とを比較する。この試験に関する限り、着目された領域は、境界面の位置に関係する領域であり、断片自体の実面積より大きい領域になりがちである。実際の断片より大きい面積に着目すると、実際には遮りが起こる可能性が無い時に発生する遮りの可能性を試験で認識することができる。従って、ステップ192 の手続きは、現行本命多角形の断片の広がりで画定される領域ではなく実際の現行本命多角形が原因で遮りが発生するかどうかを判断する。
【0148】
図15と16は、候補多角形が現行本命多角形を実際に遮れるかどうかを判断する手続きを詳細に示す。この手続きは、境界辺、すなわちベクトルによって規定される境界面の交点で画定される辺と、断片辺と呼ばれる現行本命多角形の断片の辺とを参照する。具体的には、この手続きは、現行本命多角形の断片の一辺を選択し境界辺毎にその断片に着目する。その後、同様な手続きが他の断片の辺に対して繰り返される。
【0149】
ステップ201 (図15)で少なくとも一つの境界辺があるかどうかを判断する。境界面が一つだけ存在する場合、この判断の結果は否定である。覆い隠しが発生し易くなり、制御はステップ215 (図16)へ渡される。
【0150】
境界辺が少なくとも一つはある場合、ステップ201 での判断の結果が肯定になり境界辺が選択される。ステップ202 で、ステップ186 (図14)で格納された現行本命多角形の断片の詳細情報を読取る。
【0151】
ステップ203 で現行本命多角形の断片に別の辺があるかどうかを判断する。反復一回目では、この判断の結果は肯定になる。断片の辺を選択して更なる試験を実施する。その後、ステップ204 で、断片辺の長さがゼロより大きいかどうかを判断する。ステップ204 での判断によって、辺が存在するように見えるが実際には長さがゼロであり存在しない場合の条件が認識される。こうして、ステップ204 での判断の結果が否定ならば、制御をステップ203 へ戻し次の断片辺を選択する。
【0152】
ステップ204 での判断の結果が肯定になるとき、ステップ205 で、断片のある平面が「視野錐体」に交差するかどうかを判断する。
【0153】
視野錐体は、境界面を境を成す方向の集合として定義される。視野錐体に交差する平面は、許容観察方向を示す正接ベクトルをもつ。この種の平面においては、前面を見れる観察方向があり、背面を見れる観察方向もある。逆に、断片の平面は、それが視野錐体の外側方向のみをもつ場合、視野錐体に交差しないと考えられる。この様な多角形の場合、視野錐体内の全方向に前面が見えるか、あるいは、視野錐体内の全方向に後面が見える。
【0154】
ステップ205 での判断の結果が肯定ならば、現行本命多角形平面は視野錐体に交差するということなので、ステップ206 で、現行本命多角形の断片の選択された辺の方向が視野錐体内にあるかどうかを判断する。すなわち、選択された辺を規定するベクトルが、視野錐体によって規定される許容観察方向の一つの方向に一致するかどうかを判断する。
【0155】
選択された辺ベクトルが許容観察方向に一致する場合、ステップ206 での判断の結果を肯定にし、制御をステップ203 へ戻して、別の辺を選択する。ステップ206 での判断の結果が否定ならば、あるいは、ステップ205 での判断の結果が否定ならば、制御をステップ207 へ渡して、ベクトルK を算出する。
【0156】
ステップ207 で、選択された断片辺を規定するベクトルと選択された境界辺を規定するベクトルとのクロス乗積を算出することによってベクトルK を決定する。
【0157】
ステップ208 で、別の境界辺があるかどうかを判断する。判断の結果が肯定ならば、次の境界辺を選択し更に着目する。
【0158】
ステップ209 で、先に算出されたベクトルK とステップ208 で新たに選択された境界辺との間に形成される点乗積が負となるかどうかを判断する。
【0159】
ステップ209 で算出された点乗積が負の場合、ステップ210 で、K の新しい値が断片辺の新しい境界辺(ステップ208 で選択される辺)とのクロス乗積として算出される。あるいは、ステップ209 での判断の結果が否定ならば、算出された点乗積はゼロより大きいかゼロと等しいとうことなので、以前に算出されたK の値をそのままにし、制御をステップ208 へ戻す。そして、別の境界辺を選択する。このように、ステップ208 と209 とを境界辺毎に繰返す。ステップ209 で算出された点乗積が負であることが判明したら、格納されていたベクトルK を再度算出する。
【0160】
最終的には、ステップ208 での判断の結果は否定になる。すなわち、境界辺はもうないので、制御を図16のステップ211 へ渡す。
【0161】
ステップ211 で、先に算出されたベクトルK に垂直な平面で、断片辺を規定するベクトルをもつ平面S を算出する。
【0162】
ステップ212 で断片のどこかの部分がステップ211 で算出された平面S の前に来ているかどうかを判断する。この判断の結果が肯定ならば、ステップ213 で着目している断片の定義内容を変更し、実際に平面S の前に来ている断片の部分の定義を含むようにする。その後、制御をステップ203 へ戻し、更なる断片辺に着目する。
【0163】
ステップ212 での判断の結果が否定ならば、断片のどの部分も新たに算出された平面S の前に来ていないとうことなので、現行本命多角形が候補多角形を遮ることはできない。従って、制御をステップ214 へ渡し、この趣意をも念的な観察軸に対応する許容観察方向のどれに対しても現行本命多角形によって遮られることはない。
【0164】
断片辺全部に着目し終えると後はずっと、ステップ212 での判断の結果は肯定になる。すなわち、断片の一部が常に新たに算出された平面S の前に来るということなので、現行本命多角形が候補多角形を遮るように見える。こうして、ステップ203 での判断の結果は否定になり、制御をステップ215 へ渡す。
【0165】
ステップ215 での判断の結果によって、現行本命多角形が候補多角形を遮れないことを確認しようと試みる。ステップ213 で現行本命多角形の断片をおそらく数回修正したので、現行本命多角形の断片は非常に小さくなっている。ステップ215 で、現行本命多角形の断片がシステム内の丸め誤差と同じくらい小さくなったかどうかを判断する。現行本命多角形の断片が実際に存在するか、あるいは、この段階で断片と思われるものは単なる算術的な丸め誤差の産物なのかどうかについては、そのどちらにしても断言できない。ステップ215 での判断の結果が肯定ならば、残存する現行本命多角形の断片がシステム内の丸め誤差と同じくらい小さいということなので、現行本命多角形は候補多角形を遮れないという趣意のデータをステップ214 へ戻す。
【0166】
しかし、修正された現行本命多角形の断片が許容丸め誤差より大きい場合、ステップ215 での判断の結果は否定になり、現行本命多角形は候補多角形を遮れると推測する。この趣意を表すデータをステップ216 で設定し、制御を図14のステップ193 へ戻す。
【0167】
詳細に説明してきた手続きは、表出順序リストに設定するための現行本命多角形を判別する。その後、試験を実施して、現行本命多角形と表出順序リストに設定されていない候補多角形とを比較することによって、現行本命多角形をリストに設定するのは適切かどうかを判断する。現行本命多角形が候補多角形を遮れるために、現行本命多角形をリストに追加できない場合、現行本命多角形をスタックに投入し、遮られる候補多角形を次の現行本命多角形と見なす。
【0168】
説明してきた手続きを使えば、リスト、ツリーあるいは有向グラフを完璧に組立てることができる。但し、それらの手続きは、現行本命多角形をリストに設定できるかどうか、あるいは、候補多角形を遮れるため現行本命多角形をリストに設定できないかどうかについて、そのどちらにしても、常に判断を下すことができなければならない。
【0169】
これらの手続きに障害が起こると思われる唯一の状況は、図12のステップ133 のサイクルが認識される状況である。すなわち、新しい現行本命多角形が選択されるが、この現行本命多角形は以前に選択されたことがあり、既にスタックに投入されている場合である。ステップ133 で試験が実施されなければ、連続ループに陥り先に進まない。
【0170】
図12のステップ134 に示すように、サイクル破壊手続きが設けられている。また、本実施例では、サイクル全部をステップ134 の処理で破壊できると仮定している。
【0171】
図17〜22は、図12のステップ134 に示すサイクル破壊手続きを多数詳細に示す。サイクルが存在する場合、その中には多角形が二個だけ含まれる。多角形は互いに相手を遮ることが出来る。多角形の一方を他方の平面の周囲で分割させることでサイクルを破壊できるならば、このような二重多角形サイクルの破壊は比較的簡単である。しかし、本実施例では、必要とされる分割回数を低減させるために、手続きを最適化する。多角形を二個より多く有するサイクルには、より高度な分割手続きが必要である。
【0172】
図17のステップ221 と222 で、サイクル長が2 に等しいかどうかを判断する。判断の結果が否定ならば、サイクルには多角形が二個より多く存在するということなので、制御を図19のステップ241 に渡する。
【0173】
ステップ222 での判断の結果が肯定ならば、サイクルには多角形が二個だけ存在するということなので、多角形の構成は図18の構成に類似したものとなる。図18は二個の多角形P1とP2の先端を突合わせた様子を示す。図18において、多角形の平面は軸240 の方向に交差している。図18において、多角形の二次元図は軸240 の方を見おろしている。
【0174】
多角形P2の平面に着目すると、多角形P1は、多角形P2の平面の一方の面例えば左側の面の方へ垂線距離d1だけ伸長している。同様に、多角形P1は、多角形P2の平面の他方の面の方へ距離d2だけ伸長している。更に、逆の見方をすれば、多角形P2は、多角形P1の平面の一方の面の上方へ距離d3だけ延長し、多角形P1の平面の他方の面の上方へ距離d4だけ延長している。ステップ223 でこれらの距離d1、d2、d3およびd4を算出し、ステップ224 でd2値がd1値より大きいかどうかを判断する。d2値がd1値より大きい場合、ステップ224 での判断の結果は否定になり、ステップ225 で変数v1をd2に等しい値に設定する。あるいは、判断の結果が肯定ならば、d2値はd1値より大きいということなので、ステップ226 で変数v1をd1に等しい値に設定する。
【0175】
ステップ227 で、d4値がd3値より大きいかどうかを判断する。判断の結果が否定ならば、d4値はd3値より大きくないということなので、ステップ228 で変数v2をd4と等しい値に設定する。あるいは、判断の結果が肯定ならば、d4値はd3値より大きいということなので、ステップ229 で変数v2をd3に等しい値に設定する。
【0176】
ステップ230 で、変数v2が変数v1より大きいかどうかを判断する。判断の結果が肯定ならば、v2値はv1値より大きいということなので、ステップ231 で多角形P2を分割する。あるいは、ステップ230 での判断の結果が否定になれば、変数v2は変数v1より大きくないということなので、ステップ232 で多角形P1を分割する。
【0177】
どちらの場合でも、多角形の分割は交線240 上で起こる。図18に示す例においては、d1値はd3値より大きいので、変数v1は変数v2より大きいと判断される。これによって、多角形P1は二つの子多角形に分割される。分割は軸240 で起こる。この分割によって、サイクルが破壊し制御は図12のステップ135 へ戻る。
【0178】
ステップ222 での判断の結果が否定ならば、サイクルには多角形が二個より多く存在するということなので、制御を図19のステップ241 へ渡す。
【0179】
ステップ241 で、別の多角形がサイクルに存在するかどうかを判断する。反復の一回目では判断の結果は肯定になる。
【0180】
ステップ242 で、多角形の平面が観察(視野)錐体に交差するかどうかを判断する。前述のように、現行の概念的な観察軸に対応する観察方向全部から表面を一つだけを見ることができ、その表面は背面か前面であるとき、平面は観察錐体に交差しない。同様に、平面が観察錐体に交差するならば、いくつかの方向から前面を見ることができ、他の方向から背面を見ることができる。単位法線ベクトルの向きを変化させることによって、このような平面を検出できる。すなわち、単位法線ベクトルを反転して、以前に背面だった表面を前面すればよい。多角形が観察錐体に交差しない場合、反転後の多角形は目に見えなくなる。従って、不可視試験を繰返せば、この種の多角形平面を判別できる。しかし、平面が観察錐体に交差する場合、反転させても向きによっては依然として目に見えるようならば、多角形の反転は何の効果もない。
【0181】
図19に示す手続きの目的は、観察錐体に交差しない多角形を判別することである。この多角形の観察方向は、平面の一方の面上にあるとも平面の他方の面上にあるとも考えられる。このような多角形が存在する場合、その多角形を使えば、サイクルの破壊後に他の多角形全部を分割させるための平面を判別できる。具体的には、ステップ241 で選択された平面が観察錐体に交差するかどうかのステップ242 での判断の結果が肯定ならば、その平面を拒絶し制御をステップ241 へ戻す。ステップ242 での判断の結果が否定ならば、選択された多角形は観察錐体に交差しない平面に存在するということなので、ステップ243 でサイクル内の他の多角形全部を選択された多角形の平面の周囲で分割する。ステップ244 で、最下位の分割多角形が判別されたことを記録し、修正(分割)された多角形全部をスタックから除去し制御をステップ135 へ戻す。
【0182】
ステップ241 での判断の結果が否定ならば、多角形全部が着目され、その多角形全部が観察錐体に交差するということなので、多角形のどれか一つを使用して残りの多角形全部を分割させるための平面を識別することはできない。ステップ241 での判断の結果が否定ならば、制御を図20のステップ251 へ渡す。
【0183】
図20に示す手続きは、観察錐体に交差しない平面の回りで多角形を分割するという点で図19の手続きに類似している。前述の手続きにおいては、多数の平面が演算の対象となる。具体的には、初期境界面と、視野の調節後に設定された境界面とが演算の対象となる。観察錐体内に多角形が何も存在しないので、多角形を使って分割を実行できない場合、この条件を満たす別の平面が選択される。
【0184】
ステップ251 で、境界面の位置を定義するために先に生成されたデータから候補多角形の分割面を選択する。法線ベクトルに基づいて適当な候補多角形を選択する。法線ベクトルを反転しても、依然として不可視試験に合格せず、いくつかの有効観察方向から見える場合、その平面は候補平面となる。
【0185】
候補平面の集合の収集が終了したら、候補平面一つ一つに着目して多角形分割を実行するのに適当な平面を判別する。
【0186】
先に演算されたデータを参照して選択した候補平面は、単位法線ベクトルで規定される。各単位法線ベクトルは実際に平行面族を規定する。平行面の向きは同じだが絶対位置によって規定されない。この平面集合から、概念的な平面を法線ベクトル方向に所望の絶対位置まで移動することによって、実際の分割面を画定することができる。ステップ252 で、別の候補平面があるかどうかを判断する。判断の結果が肯定ならば、第一の候補平面を選択する。先述のように、この段階では、候補平面は絶対位置をもたない。また、候補平面は法線ベクトル方向に移動させられる。候補平面を法線ベクトル方向に移動すると多角形の交点が発生する。その交点の個数を記録する(ステップ253 )。
【0187】
ステップ254 で、多角形の交点の個数から局所最小点の位置を判別する。交点の位置を定義するデータをヒストグラムとする。局所最小点はヒストグラム内の一つの位置であり、その位置に対して平面を法線方向に移動させると交点数が増加する。実施例では、これらの局所最小点位置を候補多角形の分割面用のポテンシャル位置と考える。
【0188】
理想的な分割面は多角形を一つだけ分割させる。このような平面を識別できれば、それを即座に好適な分割面として採用する。ステップ255 で、たった一つの多角形に交差する候補平面に関して局所最小点位置があるかどうかを判断する。この判断の結果が肯定ならば、制御をステップ258 へ渡す。すなわち、選択された平面の周囲に対して分割を実行し、これによって、サイクルを破壊するのである。そして、手続きは図12のステップ135 へ戻る。ステップ255 での判断の結果が否定ならば、局所最小点全部が一つより多くの多角形に交差するということなので、制御をステップ252 へ戻し、別の候補平面を選択する。
【0189】
ステップ255 での判断の結果が肯定になるまで、候補平面毎にステップ252 〜255 を繰返す。その結果、分割が発生する。さもなければ、ステップ252 での判断の結果が否定になる。
【0190】
ステップ252 での判断の結果が否定になると、候補平面各々の局所最小点を互いに比較し、最下位の局所最小点をもつ平面を選択する(ステップ256 )。最下位の局所最小点がゼロに等しいならば、丸め誤差からサイクルを検出できる。すなわち、丸め誤差のないサイクルが判別される。この場合、分割するものは何もないので、制御を図12のステップ135 へ渡す。
【0191】
最下位の局所最小点がゼロに等しくない場合、制御をステップ258 へ渡し、選択された平面に対して分割を実行する。その後、サイクルを破壊した後、制御をステップ135 へ渡す(図12)。
【0192】
ステップ256’で、局所最小点があるかどうかを判断する。判断の結果が否定ならば、サイクルを破壊する別の手続きが、図21に詳細に示すように起動される。
【0193】
図21において、ステップ261 で多角形をP1と見なす。この多角形は、概念的な観察軸方向に最も遠くまで広がる多角形である。サイクル内に存在する多角形の中でP1は、サイクル内の他のどの多角形よりも先に予備リストに設定された多角形である。多角形P1の概略を図22に示す。
【0194】
ステップ262 で、多角形P2を判別する。多角形P2は、多角形P1を遮れる多角形である。この多角形も図22に認識される。
【0195】
ステップ263 で、多角形P2に実際に遮られた多角形P1の断片を判別する。ステップ264 で、ステップ263 で判別された多角形の断片が多角形P1全体に該当するかどうかを判断する。すなわち、多角形P1全体が実際には多角形P2によって遮られているかどうかを判断する。判断の結果が肯定ならば、制御をステップ265 へ渡す。そして、次に最も遠くまで広がる多角形があるかどうかを判断する。判断の結果が肯定ならば、制御をステップ261 へ戻し、最も遠くまで広がる次の多角形を選択し新しいP1とする。
【0196】
各多角形が全体的に別の多角形によって遮られることは殆ど有り得ないが、有り得ない事態が起こったとき、ステップ265 での判断の結果は否定になる。その結果、制御をステップ266 へ渡し、サイクルを破壊できないという趣意を表示する。そして、制御をステップ135 へ戻する。
【0197】
ステップ264 での判断の結果が否定ならば、断片は多角形P1全体より小さいということなので、制御をステップ267 へ渡す。そして、多角形P2によって遮られた多角形P1の断片はサイクル内の次の多角形を遮るかどうかを判断する。
【0198】
図22に示す例では、多角形P2によって遮られた多角形P1の断片は多角形P3を遮らない。この場合、ステップ267 での判断の結果は否定になる。そうしたら、多角形P1を分割して断片と残りの部分とにし(ステップ268 )、これによって、サイクルを破壊し、制御をステップ135 へ戻す。
【0199】
ステップ267 での判断の結果が肯定ならば、多角形P2によって遮られた断片は多角形P3を遮るということなので、多角形P1の断片と残りの部分への分割はサイクルの破壊には到らない。しかし、この分割によって他の処理でサイクルを破壊し易くなる。従って、分割によって断片や残りの部分が非常に小さくなることがなければ、分割は実行する価値がある。
【0200】
ステップ267 での判断の結果が肯定ならば、制御をステップ269 へ渡す。そして、多角形の残りの部分の面積(P1−断片)が究極の親多角形の面積を3 で除した商より大きいかどうかを判断す。究極親多角形は、予備リストに存在する根元の多角形であり、子ではない多角形である。
【0201】
ステップ269 での判断の結果が肯定ならば、残りの部分は究極親多角形の面積を3 で除した商より大きいということなので、ステップ270 で分割を実行し制御をステップ261 へ戻す。そして、別の多角形P1を選択する。
【0202】
ステップ269 での判断の結果が否定ならば、残りの部分は小さいということなので、分割を実行しても何も達成されないと判断する。この場合、制御をステップ266 へ戻し、サイクルを破壊できないという意味で肯定応答をする。その後、制御をステップ135 へ戻す。
【0203】
図23は、内部メモリ装置に対してデータの読み書きを行うプロセッサ315 が配置された対話式三次元図形システムを示す。メモリ装置に格納されたデータは三次元画像データと二次元画像データとプロセッサへの指令とを定義する。
【0204】
プロセッサ315 は入力装置からデータを入力し、手動キーボード316 とマウスやトラックボール317 やデジタルタブレット/スタイラスなどの位置検出装置とで構成される。
【0205】
二次元画像は可視表示装置(VDU)318上に表示される。可視表示装置318 は、フレームバッファをラスタで走査することによって映像速度で出力画像データを受信する装置で、専用表示器を備えている。可視表示装置318 が提供できる精細度は、例えば、画素1000個に対応する走査線を1000本という形式で表現される。従って、1,000,000 個の画素に対応する領域をもつフレームバッファが必要である。プログラムデータと画像データとの一括転送を実行するために、ハード磁気ディスクや光ディスクや光テープドライブなどの大容量記憶装置319 が設けられている。
【0206】
フロッピーディスク320 やCD ROMなどの取り外し可能記憶装置を使用して画像データ及び/あるいはプロセッサ命令を格納してもよい。画像信号は、VDU318に出力されて画像を表示し、フレームバッファやプロセッサ315 から取出されて送信もしくは格納される。例えば、ビデオカセット記録器322 を接続して、取り外し可能ビデオカセット324 に生成された画像を記録する。
【0207】
図24を参照して、一般的なシステムの操作法について説明する。プロセッサ315 は異なる時刻に異なる多数の処理を実行して、内部メモリに格納されたプログラムを走行させる。プロセッサ315 は、(内部メモリの外に)その処理を行う手段402 〜410 を備えている。これらの手段を図24に図示する。本実施例においては、これらの手段は全部プロセッサ315 によって実現される。しかし、別のプロセッサや専用論理回路を相互接続して各々の機能を果たすようにも構成できる。
【0208】
システムは、第一に動画化される三次元の被写体の形状を定義し、選択的に被写体を編集するために配置された定義器すなわちエディタ402 で構成される。通常、定義器402 は大容量記憶装置319 と320 に接続され、定義された被写体を格納して後に使用できるようにする。また、エディタ402 は入力装置316 と317 に接続され、オペレータが三次元の被写体を変更できるようにする。その他の入出力装置(例えば、ネットワークを介して接続される他のコンピュータ)を追加してもよいし、入力装置316 と317 および大容量記憶装置319 と320 の代わりに用いてもよい。次に詳細に説明するが、本実施例においては、三次元被写体を定義するデータとは、被写体を構成する複数個の多角形表面(通常、連続する多角形表面)の頂点を表現するデータである。頂点のみを定義するだけで、多数の画素をもつ表面を比較的小さくしかも被写体の画像が再生される際の解像度に左右されずに表現できる。
【0209】
プロセッサ315 は、更に、他の領域を遮る領域を最後に描出するという描出順序(すなわち、フレームバッファ412 に表出する順序)を決定する順位に従って被写体の表面あるいは領域を分類するという初期処理を実行するための手段404 を備えている。分類器404 は、定義器402 によって定義された被写体データを読取り、後に使用される領域の分類リストを生成し、その後、被写体を描出し動画化する。
【0210】
表示器318 などの二次元画面上に表示された被写体やフレームバッファ412 に格納された画像データは、被写体が観察される方向に依存する。しかも、被写体と表示器318 の平面に対応する概念的な観察点との間の距離にも依存するかもしれない。プロセッサ315 は、オペレータが入力装置317 を使って(例えば、観察点の座標および/もしくは方向を定義することによって)観察方向すなわち方向と距離とを定義できるようにする視野制御手段406 を備えている。一度に一つづつ観察点を定義するのではなく、入力手段317 を使って、例えば、連続的に表出される画像を動画化するのに充分な移動方向と速度とを設定することによって連続する観察点の軌道すなわち観察方向を規定する。観察方向および/もしくは距離を定義するデータは、被写体と表示器318 の概念的な平面(概念的な観察点)との間の相対的な距離と方向とを規定する。また、被写体が一つだけ表示されている場合、問題なのは被写体と画面との間の相対的な傾きだから、上記のデータを使って被写体の位置と向きあるいは画面の位置と向きを規定する。一方、相互に規定された位置に存在する多数の被写体を描出する場合、視野コントローラ406 は、一度に一つの被写体に対して視野位置か新しい位置かを規定し、一つの被写体を単独で移動できるか視野を被写体全部に対して移動できることが好ましい。
【0211】
表示器318 に対応する観察面に関して被写体の相対的な向きを規定し終えると、プロセッサ315 は、必要なデータを使って投影手段408 が各三次元被写体を(領域毎に)二次元観察面に投影できるようにする。投影器408 によって投影された二次元観察面領域は、その領域を着色する(すなわち、その領域内の画素に対応するフレームバッファ領域に予め設定された色値を割当てる)ための表出器410 によって分類器404 が先に定義した順序で表出される。外側か(前向きの)被写体の方へ向いている領域だけを表出することが必要である。表出器410 は、各領域を試験して投影面上でその領域が向いている方向を判定する。領域全部を表出しフレームバッファ318 に対応する画像データを書込み終ると、視野コントローラ406 は必要ならば観察点を更新する。観察点が変更されると、投影器408 と表出器410 とが各々のプロセスを前述のように再実行する。
【0212】
図23と24に示すシステム内の手段402 〜410 は、被写体の新しい視野が表示される度に作動する必要のあるもの(手段406 、408 および410 )と実際に必要な視野に関係なく作動できるもの(手段402 と404 )との二つのグループに分類される。当業者ならば、この二つのグループの内で機能毎に分類して機能ブロックを作成して、その機能ブロックを様々な形態に実現できることが認識されよう。
【0213】
プロセッサ315 の対話プロセス段階406 〜410 における操作手順について背景に触れながら簡単に述べる。視野コントローラ406 は制御されて観察変換を定義する。観察変換は、被写体の頂点が規定された「世界」座標系に観察点を関係づける。局所変換と観察変換とが終了すると、実際に見える被写体の広がりを判定することによって被写体選別を実行する。広がりは、次元毎に被写体に対して規定される。すなわち、最高値と最低値とが、被写体に対してX 軸、Y 軸およびZ 軸の各々について決定される。X 軸、Y 軸およびZ 軸方向の広がりが一定の平面から成る立方体の境界箱を画定すれば、このプロセスを容易に実行できる。境界箱は観察空間へ変換され、変換された境界箱の位置が着目され、境界箱が観察可能な空間内に完全に入っているか、観察可能空間から完全に外れているか、観察可能空間に交差しているどうかが判断される。
【0214】
被写体が観察可能空間から完全に外れている場合、その被写体を画定する多角形に対しては何も処理を施さない。このため、処理時間は顕著に低減される。観察空間内に完全に入っている被写体の場合、多角形に対する処理は進み、処理時間の低減は行われない。しかし、境界箱を変換するための処理オーバヘッドは極めて僅かである。一部が観察可能空間内にあり一部が観察可能空間外にある被写体の場合、交差面を定義するデータを格納して多角形の切抜きを行い易くする。
【0215】
反復毎に一意に時刻を刻むクロックが設けられている。この刻時は、光源か被写体かの位置が変わる度に適用される。前回の反復期間から今回の反復期間までの間に、照明の位置や向きあるいは多角形の位置に変化が生じなかったことが分かれば、先回の反復期間中に算出された照明パラメータ値を再使用する。
【0216】
局所変換は、被写体を被写体自体の空間から世界空間へ変換する。光源の位置に逆変換を施して光源を被写体空間へ変換することによって、照明パラメータ値を求める。すなわち、被写体空間で照明パラメータ値を算出する。そして、連結マトリックスに基づいて被写体自体の空間から直接観察空間へ被写体を変換する。
【0217】
このように連結局所変換と視野変換を実現して、被写体の幾何学的構造を観察空間へ変換する。
【0218】
観察空間内に存在しない多角形は切抜かれる。このプロセスを実行するために、被写体選別で発生した追加情報が使用される。
【0219】
三次元画像データを二次元画像データへ変換し、背面選別を実行する。走査変換を施す。このプロセスは、1画素当りのビット数が8 しかないというフレームバッファの限定容量によって制限される。その後、ビデオ速度でフレームバッファをラスタ走査して、二次元ビデオ画像を作成する。
【0220】
上記の方法が三次元画像生成の前処理段階で実現されているが、その中の少なくともいくつかの方法を対話段階に使用できることは当業者には明白である。例えば、電子図形システムは、周知の通り、前処理なしで多角形を分類して対話を通して設定される観察位置単位に表出順序リストを作成する。このように、本発明は本書に記載の実施例に限定されない。
【発明の効果】
以上説明したように本発明によれば、3次元空間上に定義されたオブジェクトを陰面除去等も踏まえて表出する処理を行うに際し、複数の観察方向に対する表出順序リストを準備するので、効率よく特定の観察方向に対応する表出順序を決定できる。
また、各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されるにより、適切に視野を表現可能である。
【図面の簡単な説明】
【図1】三次元対話式図形環境の各段階を示す図、
【図2】被写体を構成する多角形の位置を定義する形状ファイルの構造を示す図、
【図3】図2に示された形状ファイルを読む手続きを示す図、
【図4】概念的な観察方向と境界面とを示す図、
【図5】分割面の位置を算出するステップと、視野を調節するステップと、目に見えない多角形を除去するステップと、予備リストを作成するステップと、表出順序リストを作成するステップとから成る表出順序リストの準備段階を示す図、
【図6】図5に示す分割面の位置の算出に係わるステップを詳細に示す図、
【図7】図5に示す視野の調節手続きを詳細に示す図、
【図8】図5に示す可視性試験手続きを詳細に示す図、
【図9】図5に示す予備リストの作成手続きを詳細に示す図、
【図10】親多角形を分割して子多角形を作成するときの多角形データ構成を示す図、
【図11】予備リストの多角形を選択して表出順序リストあるいはツリー上にそれらの多角形を設定するための手続きであって、現行本命多角形によって遮られる候補多角形を判別しようとするステップを含む手続きを詳細に示す図、
【図12】予備リストの多角形を選択して表出順序リストあるいはツリー上にそれらの多角形を設定するための手続きであって、現行本命多角形によって遮られる候補多角形を判別しようとするステップを含む手続きを詳細に示す図、
【図13】図11に示す現行本命多角形が遮れる候補多角形を判別するための手続きを詳細に示す図、
【図14】図13に示す現行本命多角形が候補多角形を遮れるかどうかを確認するための手続きを詳細に示す図、
【図15】図14に示す現行本命多角形が候補多角形を遮れるかどうかを確認するための更なる手続きを詳細に示す図、
【図16】図14に示す現行本命多角形が候補多角形を遮れるかどうかを確認するための更なる手続きを詳細に示す図、
【図17】多角形二個から成るサイクルを破壊するための図11B に示す手続きを詳細に示し、二個より多くの多角形をもつサイクルを破壊するための手続きを示す図、
【図18】図17に示す手続きについて図解する図、
【図19】図17に示す二個より多くの多角形をもつサイクルを分割するための手続きを詳細に示す図、
【図20】二個より多くの多角形をもつサイクルを分割するための更なる手続きを詳細に示す図、
【図21】二個より多くの多角形をもつサイクルを分割するための更なる手続きを詳細に示す図、
【図22】図21に詳細に示された手続きについて図解する図、
【図23】対話式三次元図形環境を提供するシステムについて図解する図、
【図24】対話式三次元図形環境を提供するシステムについて図解する図。
【符号の説明】
41 球体
42 原点
43 概念的な観察軸
44 区画
45 水平分割面
46 第一の垂直分割面
47 第二の垂直分割面

Claims (16)

  1. 選択された観察方向から観察した場合における被写体の画像を表出するために使用する、表出順序リスト、ツリー、又は、有向グラフを作成するために、複数の多角形によって3次元空間上に定義される前記被写体を処理する方法であって、
    複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義する工程と、
    隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義する工程と、
    選択された観察方向として、観察方向を特定する工程と、
    選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する工程と、
    表出画像データを作成するために、前記選択されたリストに応じて前記多角形を表出する工程と、
    前記被写体の画像を表示するために前記表出画像データを処理する工程と、を含み、
    各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする方法。
  2. 各範囲は、境界面によって定義され、各境界面は、方向を有するが固定された位置を有しないことを特徴とする請求項1に記載の方法。
  3. 各境界面は、単位法線ベクトルによって定義される方向を有することを特徴とする請求項2に記載の方法。
  4. 前記観察領域の範囲を定義する工程では、各範囲について、
    (a)最初の境界面を参照することによって、前記重なりが無く、前記観察方向の範囲を最初に定義する工程と、
    (b)前記観察軸と前記最初の境界面に対する法線ベクトルとの間の角度を、各々の最初の境界面について決定する工程と、
    (c)工程(b)において決定された前記角度に対する前記所定の視野を画定する半角を加算することによって、前記重なりを前記範囲に結合するために、各境界面を修正する工程と、
    を実行することを特徴とする請求項2に記載の方法。
  5. 更に、前記複数の観察方向の範囲の各々について、表出順序リスト、ツリー、又は、有向グラフを、伝達する信号を発生する工程を含むことを特徴とする請求項1に記載の方法。
  6. 更に、前記信号を記録する工程を含むことを特徴とする請求項5に記載の方法。
  7. 選択された観察方向から観察した場合における被写体の画像を表出するために使用する、表出順序リスト、ツリー、又は、有向グラフを作成するために、複数の多角形によって3次元空間上に定義される前記被写体を処理する図形装置であって、
    複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義する範囲定義手段と、
    隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義する表出順序定義手段と、
    選択された観察方向として、ユーザが観察方向を特定することを許可する手段と、
    選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する手段と、
    表出画像データを作成するために、前記選択されたリストに応じて前記多角形を表出する手段と、
    前記オブジェクトの2次元画像を表示するために前記表出画像データを処理する表示手段と、を備え、
    各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする図形装置。
  8. 各範囲は、境界面によって定義され、各境界面は、方向を有するが固定された位置を有しないことを特徴とする請求項7に記載の図形装置。
  9. 各境界面は、単位法線ベクトルによって定義される方向を有することを特徴とする請求項8に記載の図形装置。
  10. 前記範囲定義手段は、
    (a)最初の境界面を参照することによって、前記重なりが無く、前記観察方向の範囲を最初に定義する手段と、
    (b)前記観察軸と前記最初の境界面に対する法線ベクトルとの間の角度を、各々の最初の境界面について決定する手段と、
    (c)前記決定する手段により決定された前記角度に対する前記所定の視野を画定する半角を加算することによって、前記重なりを前記範囲に結合するために、
    各境界面を修正する手段と、
    を備えたことを特徴とする請求項9に記載の図形装置。
  11. 前記表出する手段は、
    各々の選択された観察方向からの前記被写体を示す一連の画像を発生し、各画像について、前記選択された観察方向に従って、複数の中から表出順序リスト、ツリー、又は、有向グラフを特定することを特徴とする請求項7に記載の図形装置。
  12. 更に、前記表出画像データを記憶するフレームバッファメモリを備えたことを特徴とする請求項7に記載の図形装置。
  13. 複数の多角形によって定義される面を有する被写体を、3次元空間で定義する対話式図形システムにおいて、前記被写体の表現を含む画像を表出する方法であって、
    選択された観察方向により表出され得る前記画像に従って、現実の観察方向を特定する工程と、
    前記選択された観察方向に従って、複数の所定の表出順序リスト、ツリー、又は、有向グラフの中から、隠れた面が除去されるように前記多角形を表出する順序を定義する選択されたリストとして、前記選択された観察方向に関連する表出順序リスト、ツリー、又は、有向グラフを、選択する工程と、
    表出画像データを作成するために、前記選択されたリストに従って、前記多角形を表出する工程と、
    前記被写体の画像を表示するために前記表出画像データを処理する工程と、を含み、
    前記所定の表出順序リスト、ツリー、又は、有向グラフは、複数の概念的な観察軸にそれぞれ対応する観察方向の範囲を定義し、かつ、隠れた面が除去されるように前記多角形を表出する順序を定義する表出順序リスト、ツリー、又は、有向グラフを、各々の前記観察方向の範囲について、定義することによって生成され、各観察方向の範囲は、それぞれに対応する観察軸を含む所定の視野内の方向を全て含み、かつ、隣接する観察方向の範囲と重なり合う様に定義されることを特徴とする方法。
  14. 各々の選択された観察方向からの前記被写体を示す一連の画像が表出され、かつ、各画像について、前記選択された観察方向に従って、前記所定のリスト、ツリー、又は、有向グラフの中から、リスト、ツリー、又は、有向グラフが選択されることを特徴とする請求項13に記載の方法。
  15. 更に、前記表出画像データを伝達する信号を発生する工程を含むことを特徴とする請求項13又は1に記載の方法。
  16. 更に、前記信号を記録する工程を含むことを特徴とする請求項15に記載の方法。
JP01831394A 1993-02-15 1994-02-15 画像処理方法及び装置 Expired - Lifetime JP3548218B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB939303009A GB9303009D0 (en) 1993-02-15 1993-02-15 Processing image data
GB9313646A GB2275157A (en) 1993-02-15 1993-07-01 Image processing
GB9313646.3 1993-07-01
GB9303009.6 1993-07-01

Publications (2)

Publication Number Publication Date
JPH0793591A JPH0793591A (ja) 1995-04-07
JP3548218B2 true JP3548218B2 (ja) 2004-07-28

Family

ID=26302462

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01831394A Expired - Lifetime JP3548218B2 (ja) 1993-02-15 1994-02-15 画像処理方法及び装置

Country Status (4)

Country Link
US (1) US5666474A (ja)
EP (1) EP0612027B1 (ja)
JP (1) JP3548218B2 (ja)
DE (1) DE69431687D1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790950A (en) 1994-03-18 1998-08-04 Fujitsu Limited Computer graphics apparatus having an improved walk-through function
JPH11203501A (ja) * 1998-01-14 1999-07-30 Sega Enterp Ltd 画像処理装置及び画像処理方法
US6266053B1 (en) 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US8665293B2 (en) * 2001-05-16 2014-03-04 Autodesk, Inc. Automatic draw order
US20040210546A1 (en) * 2003-01-13 2004-10-21 Christopher Spooner System and method for spatial organization
KR100679019B1 (ko) * 2004-11-02 2007-02-05 삼성전자주식회사 버퍼링을 이용한 누적식 벡터 드로잉 방법 및 장치
US7808500B2 (en) * 2006-11-21 2010-10-05 International Business Machines Corporation Method for improving spatial index efficiency by jittering splitting planes
US20080295035A1 (en) * 2007-05-25 2008-11-27 Nokia Corporation Projection of visual elements and graphical elements in a 3D UI
KR101682650B1 (ko) * 2010-09-24 2016-12-21 삼성전자주식회사 프레임 유사성을 이용한 백-페이스 컬링 장치 및 방법
US20150062114A1 (en) * 2012-10-23 2015-03-05 Andrew Ofstad Displaying textual information related to geolocated images
US11481974B2 (en) * 2020-01-22 2022-10-25 Vntana, Inc. Mesh optimization for computer graphics

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3816726A (en) * 1972-10-16 1974-06-11 Evans & Sutherland Computer Co Computer graphics clipping system for polygons
US4594673A (en) * 1983-06-28 1986-06-10 Gti Corporation Hidden surface processor
US4862392A (en) * 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US4967375A (en) * 1986-03-17 1990-10-30 Star Technologies, Inc. Fast architecture for graphics processor
US5012433A (en) * 1987-04-27 1991-04-30 International Business Machines Corporation Multistage clipping method
US4825391A (en) * 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems

Also Published As

Publication number Publication date
DE69431687D1 (de) 2002-12-19
US5666474A (en) 1997-09-09
EP0612027A3 (en) 1995-01-04
JPH0793591A (ja) 1995-04-07
EP0612027B1 (en) 2002-11-13
EP0612027A2 (en) 1994-08-24

Similar Documents

Publication Publication Date Title
US5903272A (en) Apparatus and method for determining a rendering order between first and second object surface primitives
EP0531157B1 (en) Three dimensional graphics processing
JP3548218B2 (ja) 画像処理方法及び装置
JPH0581438A (ja) 三次元ソリツド対象物を表現する表示可能情報を発生する装置と方法
JPH0785290A (ja) グラフィック多角形をクリップ領域にクリップする方法および装置
JP2001109903A (ja) ボリューム・レンダリング・システムにおけるボリューム・データ・セットのレンダリング方法
KR100700307B1 (ko) 굴절이 있는 이미지를 렌더링하는 방법 및 장치
KR0150832B1 (ko) 그래픽 대상을 인터로크하기 위한 방법 및 장치
JP4696076B2 (ja) 透過的レンダリングのためのシステムと方法
US5872570A (en) Method and apparatus for use in generating a rendering order for use in rendering images
JP3542372B2 (ja) 画像処理方法及び装置
KR20200018207A (ko) 반사들을 렌더링하는 시스템들 및 방법들
JPH0793582A (ja) 画像処理方法及び装置
JPH06342466A (ja) 画像処理方法及び装置
EP0612032B1 (en) Image processing
JP2000331185A (ja) 画像処理方法、画像処理装置、及びプログラム提供媒体
JPH0793584A (ja) 画像処理方法及び装置
JPH0793590A (ja) 画像処理方法及び装置
JP3251744B2 (ja) 交点追跡法による画像生成方法
JP2001109904A (ja) ボリューム・レンダリング・システムにおけるボリューム・データ・セットのレンダリング方法
KR101682650B1 (ko) 프레임 유사성을 이용한 백-페이스 컬링 장치 및 방법
JP2001109905A (ja) ボリューム・レンダリング・システムにおけるボリューム・データ・セットのレンダリング方法
JPH04367083A (ja) 画像生成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040416

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 10

EXPY Cancellation because of completion of term