JPH0776989B2 - 3次元物体の2次元イメージ発生方法及びその装置 - Google Patents

3次元物体の2次元イメージ発生方法及びその装置

Info

Publication number
JPH0776989B2
JPH0776989B2 JP60002647A JP264785A JPH0776989B2 JP H0776989 B2 JPH0776989 B2 JP H0776989B2 JP 60002647 A JP60002647 A JP 60002647A JP 264785 A JP264785 A JP 264785A JP H0776989 B2 JPH0776989 B2 JP H0776989B2
Authority
JP
Japan
Prior art keywords
node
window
block
image
volume
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
JP60002647A
Other languages
English (en)
Other versions
JPS60237578A (ja
Inventor
ドナルド・ジエイ・ミーハー
Original Assignee
オクトリー・コーポレーション
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 オクトリー・コーポレーション filed Critical オクトリー・コーポレーション
Publication of JPS60237578A publication Critical patent/JPS60237578A/ja
Publication of JPH0776989B2 publication Critical patent/JPH0776989B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00—Three-dimensional [3D] image rendering
    • G06T15/06—Ray-tracing
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00—Three-dimensional [3D] image rendering
    • G06T15/10—Geometric effects
    • G06T15/40—Hidden part removal
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00—Three-dimensional [3D] modelling for computer graphics
    • G06T17/005—Tree description, e.g. octree, quadtree
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00—Image coding
    • G06T9/40—Tree coding, e.g. quadtree, octree

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)
  • Inorganic Compounds Of Heavy Metals (AREA)
  • Luminescent Compositions (AREA)
  • Digital Computer Display Output (AREA)
  • Image Generation (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Transforming Light Signals Into Electric Signals (AREA)
  • Solid State Image Pick-Up Elements (AREA)

Description

【発明の詳細な説明】 この発明は3次元の物体のモデル画像発生に関し、特
に、観察者からみて陰になった裏側表面像が除去された
状態で、3次元の物体の2次元の画像を高速で発生させ
るための方法および装置に関する。この発明は任意の複
雑な形状の物体画像をリアルタイムで発生する場合や、
ユーザとの相互動作を行なう物体画像を発生するシステ
ムに好適するものである。
物体のモデル画像発生、自動描画、操作、分析、画像表
示に関して多くのシステムが考えられている。現在のと
ころ、モデル画像発生システムとしては、コンピュータ
による設計、製造システムとしてのCAD/CAMシステムが
第一に挙げられる。このCAD/CAMシステムは、機械部品
の設計、分析、空間利用プロセス、例えば梱包、プロセ
ス設計、ロボット設計、部品組立てに関する分析、分子
モデル形成、その他多くの用途に有効に用られる。
モデル画像発生システムは又、医用の画像形成にも応用
されている。例えば、人体各部の画像が、CT(コンピュ
ータ・トモグラフィ)、NMR又は超音波スキャナーから
得られたデータを用いて形成され、医師がこの画像を観
察し、分析し、操作できるようになっている。このモデ
ル画像発生システムを用いることによって、医師は、人
体各部を種々の角度および大きさで観察することができ
る。更に、“電子ナイフ”を用いて人体各部の切り出し
像を得、その大きさおよび移動量を分析し、人体各部の
寸法および位置を知ることができる。
モデル画像発生システムのもう1つの有効な利用法はフ
ライトシミュレータである。これを用いると、パイロッ
トは、実際の飛行機を用いる場合に付きものの危険な費
用の問題なしに、種々のフライト状況下での訓練を行な
うことができる。更に他の利用法は地震学の分野への応
用である。これを用いて地質学者は、地表部分の地質構
造を示す音響的又は電磁的なデータから形成された画像
を分析することによって、有効鉱床の位置を予測し、地
震発生を予知することができる。
更に他の利用方法は人工ビジョンの分野への応用であ
る。ここでは、種々の角度および高さから見た物体の型
が観察データと比較され、物体の認識に利用される。更
に、このモデル画像発生システムを用いて物体のリアル
な画像、又は解析物体の画像形成ができ、これらの画像
の相互操作を行って映画又はビデオゲームに用いること
ができる。このようにモデル画像発生システムはますま
す有効なものとなり、コストも安いので、他の種々の分
野への応用が可能であることは明らかである。
現在、種々の異なるモデル画像発生システムが市販され
ているが、これらはすべて画像形成のための物体表示の
方法や、画像形成のスピードによって制約を受けてい
る。市販システムの多くは任意の複雑な形状を持った物
体に付いては適用できない。部分的に複雑な物体形状に
付いて適用可能なシステムはあるが、これらは単一画像
の発生に或る程度の長い時間を必要とする。この時間
は、しばしば1画像発生につき数分から数時間に達す
る。これは、このような複雑な物体の画像に付いて、像
の相互干渉の検出やかくれた表面像の除去や物体の操作
のために非常に多くの演算を行なう必要があるためであ
る。
勿論、画像形成に要する時間は多くの適用分野において
大した問題とはならない。しかしながら、もし人間と画
像形成プロセスとが相互動作を行なう必要がある、例え
ば視点の決定、測定尺度の決定、断面図の形成等の場合
には、画像をリアルタイムで生成することが望ましい。
例えば、ビデオゲームやフライトシミュレーションシス
テムは、ユーザが種々の相互動作の入力装置を操作した
ときは、生成された画像に対してリアルタイムで応動す
る必要がある。同様に、医師が患者の一部の画像を指示
した後で、実際にその画像を見るまでは、それに対する
医師の創造的な思考プロセスは厳しく禁止される。CAD/
CAMシステムの生産は、各画像生成の時間が増大するに
従って大幅に減少してきている。
市販されているグラフィックス・システムの一部には、
3次元の物体の実際のモデル画像発生でなく、その輪郭
(表面ではない)を表示スクリーン上に投射することに
よって、画像生成に要する時間を短縮したものがある。
この場合には、実際の物体形状がどのようなものである
かは、人間が頭の中で考えなければならない。このシス
テムは多くの分野で有効であるが、このような実際上は
複雑な自動描画システムとしてしか用い得ないシステム
は、物体のリアルな画像を生成することはできない。
物体の画像を描画するための種々の手法が、現在の実モ
デル画像発生システムに用いられている。その内の或る
システムは、物体を基本形状に分解することによって画
像化するものである。このシステムでは、基本形状の種
類によって、およびその基本形状、例えば多面体を表わ
す所定組のパラメータによって物体が分類される。その
他、物体を複数の立方体のセルの集合として表わし、そ
の立方体のセルを計数する空間計数システムが用いられ
ることがある。このシステムの一般的な方法はセル分解
法であり、ここでは各セルは立方体である必要も、形状
が同一である必要もない。他の従来の方法は構造的物体
幾何学法であり、ここでは物体は基本形状、例えば立方
体、円筒体の集合として表わされる。基本形状を構成す
るためにツリー構造が代表して用いられ、このツリーの
リーフ・ノードが基本形状を表わし、ブランチ・ノード
がこの基本形状に付いての一連の操作を示している。物
体表示の更に他の方法は、2次元又は3次元形状を曲線
に沿って移動させて物体を走査し、この物体を体積とし
て定義付けるものである。又、物体をその閉表面例え
ば、平面、正方形表面、によって特徴づけることによる
境界表示法が従来用いられている。
従来用いられている種々の物体表示法の利点および欠点
を、現在のモデル画像発生システムの分類とともに記載
した記事が、1983年10月に発行された“IEEE Computer
Graphics and Applications"の3巻No.7の25頁〜37頁
に、レクイカ(Requicha,A.)およびボルカー(VVoelke
r,H.)によって、「物体モデリング:その現在と未来」
と題して発表されている。更に、1982年3月に発行され
た“IEEE Computer Graphics and Applications"の2巻
2号の9頁〜24頁に、レクイカ(Requicha.A.)および
ボルカー(Voelker,H.)によって、「物体モデリング:
その歴史と現在の評価」として発表されている。更に、
1979年9月発行の“Computer Aided Design"の11巻5号
には、バール(Baer.A.)イーストマン(Eastman,C.)
およびヘンリオン(Henrion,M.)によって「幾何学的モ
デリング:その調査」が発表されている。
最も多く市販されている物体モデル画像発生システム
は、構造的物体幾何学法又は境界表示法のいずれか一方
もしくは双方を、物体表示の主要手法として用いてい
る。例えば、TIPS,PADL,シンタビジョン(SynthaVisio
n)の各システムは構造的物体幾何学法を用い、ビルド
(Build),CADD,デザイン(Design),ソリデザイン(S
olidesign)およびロムラス(Romulus)システムは境界
表示法を用い、ユークリッド(EUKLID)およびジーエム
ソリッド(GMSolid)システムはこれら両手法を用いる
ものである。これらのうち或るシステムは表示法を交換
できるもので、例えば交換データ入力法では、物体は走
査体積表示法で表示される。TIPSシステムは基本形状を
前記の空間計数システムにおけるセル配列に変えること
によって、画像の相互干渉の分析を行なうことができ
る。
従来開発された物体モデル画像発生システムで問題とな
っている多くの欠点を解消し、少なくとも減らすために
必要な新しい方法が求められている。現在の多くのシス
テムでは、用いられている表示手法に起因して、表示で
きる物体の範囲に厳しい制限が設けられる。物体が、数
学的に明確に解析された限られた数の表面もしくは基本
形状で表示される必要があるときは、更に厳しい制限が
課される。多くの画像表示方法において、表示画像中に
含まれるべき真正の表面に対応しない異なる表面が、物
体表示の不正確さの故に、表示されてしまう。
リアルタイムで画像生成を行なうことが求められている
現在の物体モデル画像発生システムの重大な1つの欠点
は、任意の複雑な形状の物体を表示するのに必要なデー
タ量が極めて巨大化することであり、又、画像表示のた
めにこのデータを処理する手間が極めて大きいことであ
る。画像表示のためにコンピュータが大型になり、アル
ゴリズムに用いるメモリが大容量化される率は、表示す
べき物体の数と複雑さの増大に対して、直線的な比例関
係をこえて更に大きなものであってはならない。任意に
複雑な物体を表示できる大多数の現在のシステムは、こ
れらの要求を満足するものではない。
現在用いられている物体モデル画像発生システムのほと
んどは、限られたハードウエアを用いて、且つ記憶装置
に関して種々の制限を考慮して設計されている。ハード
ウエアのほとんどはシステムの動作速度に付いて考慮さ
れておらず、結果的に構成されるシステムの動作速度も
低いものとなっている。最近になって開発されたVLSI技
術によってもたらされた安価な固体メモリとハードウエ
アによって、多くのハードウエアが従来よりも比較的安
くて早い動作速度を持つようになってきた。
物体画像を効率的に発生するための1つの鍵は、アルゴ
リズムを直線的な増加率の範囲にとどめることである。
このために用い得る1つの方法が、表示面を順次小さい
区域に分割してゆく階層的分割法である。この方法はワ
ーノック(Warnock)の米国特許No.3,602,702号(1971
年8月31日発行)に開示されている。これは3次元物体
の影線付2次元斜視図を電子的に発生させ表示する方法
とシステムとを示したものである。ワーノックシステム
は、物体を表示画面上に投射したときに得られる多角形
平面の基本形状によって物体表示を行なうものである。
ここでは、正方形の表示画面は多数の副正方形に分割さ
れ、必要に応じて更に細かく分割される。基本形状は表
示画面中の副正方形によってテストされ、この副正方形
が基本形状中に含まれるかどうか確かめられ、あるいは
基本形状を含まずにそれと交わるかどうか確かめられ、
あるいは基本形状とまったく接触しないかどうか確かめ
られる。これらのテストは、基本形状の各線分の座標
と、対象となる表示画面の副正方形の座標とを比較する
ことによって行なわれる。
基本形状中に完全に含まれる副正方形には、表示スクリ
ーン上で影線が付される。基本形状に含まれずにこれと
交わっている副正方形は更に、基本形状の外形線と細分
された副正方形の外形線とが一致する程度まで、細分さ
れる。勿論、この細分された結果、基本形状に含まれる
ようになった正方形には適当な影線が付される。
更に、階層的に分割された表示画面を用いる画像処理の
分野でクワドツリーと呼ばれる、2次元的な階層的ツリ
ー構造を用いることが、1979年4月に発行の、“IEEE T
ransactions on Pattern Analysis and Machine Intell
igence"のPAMI−1巻,No.2に、「クワドツリーを用いた
画像処理」と題してハンター(Hunter,G,M.)およびス
タイグリッツ(Steiglitz,K.)によって発表された。
又、1980年12月に開催されたパターン認識の第5回国際
会議で「パターン認識と画像処理のためのクワドツリー
とピラミッド」と題してローゼンフエルド(Rosenfeld,
A.)によって発表された論文には、パターン認識と画像
処理のためのクワドツリーの使用に付いて記されてい
る。又、この第5回国際会議で、「バイナリ画像のクワ
ドツリーによる表示」と題してサメット(Samet,H.)お
よびローゼンフエルド(Rosenfeld,A.)によって発表さ
れたなかにクワドツリーに関しての全般的な説明があ
る。又、1982年に発行された“Computer Graphics and
Image Processing"の18巻の37頁〜57頁には、「クワド
ツリーによって表示された画像の隣接像形成技術」と題
してサメット(Samet,H.)が発表したものは、クワドツ
リーによって表示された画像の隣接像を形成する技術に
付いて説明している。
更に、3次元物体を表示するための8系列の階層的ツリ
ー構造を用いることが、1978年6月にプリンストン大学
の電子工学・コンピュータ科学学科に提出されたハンタ
ー(Hunter,G,M.)による学位論文、「グラフィックス
のための効果的なコンピュータ利用とデータ構成」に、
クワドツリーの発展の可能性として示されている。この
概念は後に以下の別々の論文中にも表明されている。19
79年7月にシアトルのワシントン大学のコンピュータ科
学学科からのテクニカルレポートNo.79−07−06に、
「オクトツリーと、3次元物体表示におけるその使用」
としてジャキンス(Jackins,C.L.)とタニモト(Tanimo
to,S.L.)によって発表された論文、1980年12月に“Com
puter Graphics and Image Processings"中に「オトク
ツリーと、3次元物体表示におけるその使用」と題し
て、ジャキンス(Jackins,C.L.)とタニモト(Tanimot
o,S.L.)によって公表された論文。1980年7月にバッフ
ァローのニューヨーク州立大学のコンピュータ科学学科
から発行されたテクニカルレポートNo.162に、スリハリ
(Srihari,S.N.)による論文、「3次元物体画像の表示
法」。1980年12月の第5回パターン認識国際学会でスリ
ハリ(Srihari,S.N.)が発表した「直線断面画像のため
の階層的表示法」。1980年10月にレンセラーポリテクニ
ク大学の画像処理研究所からのテクニカルレポート,No.
IPL−TR−80−111に、メーガー(Meagher,D.)が発表し
た、「オクトツリー・エンコード法:任意の3次元物体
のコンピュータによる図式化表示、操作、画像表示のた
めの新しい技術」。
更に、オクトツリー・エンコード法に付いて記した論文
として次のようなものがある。1981年7月に発行された
“IEEE Computer Graphics and Applications"第1巻,N
o.3に、ドクター(Doctor,L.J.)およびトルボルグ(To
rborg,J.G.)によって発表された「オクトツリー・エン
コード法によって処理された物体の表示技術」。1980年
12月に、レンセラーポリテクニク大学の相互コンピュー
タグラフィックスセンターから発行された、ドクター
(Doctor,L.)による「オクトツリー・エンコード法を
用いた固体モデリングアルゴリズム」。1981年5月にレ
ンセラーポリテクニク大学の電子・コンピュータ・シス
テム工学科のイフチカー(Iftikhar,A.)による論文
「オクトツリーによるリニア幾何学変換」。1981年1月
にバッファローのニューヨーク州立大学のコンピュータ
サイエンス学科から出された、テクニカルレポートNo.1
70に表明されたヤー(Yau,M.M)とスリハリ(Srihari,
S.N.)による「複次デジタル画像のための階層的データ
構造の繰返し発生」。
更に本願発明者も、オクトツリー・エンコード法に付い
て記したいくつかの論文を発表している。1983年10月に
オクトツリー・エンコード法について発表したあとで本
願発明者は、1982年6月に発行の“Computer Graphics
and Image Processing"19巻に公表された、メーガー(M
eagher,D.)による「オクトツリー・エンコード法を用
いた幾何学的モデリング法」を公表した。表示アルゴリ
ズムに付いては、1981年9月のレンセラーポリテクニク
大学の画像処理研究所のレポートNo.IPL−TR−021号に
は、メーガー(Meagher,D.)による「オクトツリー・エ
ンコード法を用いた3次元医用画像の高速表示」と題す
る論文中に述べられている。更に最新の表示アルゴリズ
ムに付いては、1982年6月のIEEEコンピュータ学会のパ
ターン認識と画像処理に関する会議で、メーガー(Meag
her,D.)によって、「任意の3次元物体の効率的な合成
画像の発生」と題して発表された論文にある。1982年4
月の、レンセラーポリテクニク大学の画像処理研究所の
レポートNo.IPL−TR−027には、効率的な画像発生アル
ゴリズムの改良が、メーガー(Meagher,D.)の論文「オ
クトツリーの発生、分析、操作」中に見える。最後に、
効率的な固体モデリングのための方法と共に用いられ
る、オクトツリー・エンコード法およびアルゴリズムに
関してのまとめが、1982年8月のレンセラーポリテクニ
ク大学の画像処理研究所のレポート,No.IPL−TR−032
に、メーガー(Meagher,D.)によって「効率的固体モデ
リングのためのオクトツリー・エンコード法」と題して
発表されている。ドナルド・メーガー(Donald J.R.Mea
gher)によって発表された上記すべての論文は、本願発
明の理解のために有益であろう。
この発明の目的は、3次元物体の2次元画像を効率的
に、高速で発生するための方法およびシステムを提供す
ることである。
画像表示すべき3次元物体は、立方体で構成される、複
数のレベルで階層的に分割された3次元空間内で表示さ
れる。この3次元空間の各レベルは、同一寸法の複数の
個別の空間を有し、又、同一方向性を有する。各空間
は、その中に表示すべき物体がどの程度含まれるかによ
って特徴付けられる。各階層レベルの各空間は、物体に
よって部分的に占められているが、所定の程度までは占
められていないような程度まで分割された空間である。
各階層中の分割された空間は、同一寸法、形状、方向を
持った8個の空間に細分される。
3次元空間内の各空間をどの程度物体が占めるかという
特徴は、オクトツリー・エンコード法で構成されたメモ
リ内に構築されたオクトツリー構造中の各ノードに記憶
される。任意の複雑な形状を持った物体は、このオクト
ツリー構造によって表示することができる。
ユーザーは表示物体の表示視点を指示することによっ
て、画像表示プロセスとの相互動作を実現することがで
きる。又、2次元画面が形成され、これは所定複数レベ
ルの階層に分けられる。階層の各レベルは同一寸法、方
向を持った複数の区画を有する。各レベルの各区画は、
各々1つ上のレベルの区画を分割した大きさを有する。
オクトツリー構造の各ノードは、ユーザーによって選択
された表示視点によって決定された順番に処理される。
これによって、他の空間によって妨げられない空間に対
応するノードが第1番に処理される。物体によって占め
られた空間は、選択された表示視点と3次元空間内にお
ける空間の位置によって決定された位置と方向を持っ
て、表示画面上に投射される。
表示画面の各区画は投射物体像によって完全に占められ
ているかどうか、交わっているが占められていない状態
かどうか、又はまったく占められていないかどうか、に
付いてテストされる。投射物体像によって完全に占めら
れた区画は、所定の濃さになるように着色される。一部
分が占められた区画は更に、各細分区画が投射像によっ
て完全に占められるようになるまで細分される。この投
射像によって占められる細分区画も又着色される。この
細分動作は、所定の分解レベルに達するまで続けられ
る。
3次元空間の各空間の形状および方向はすべて同一なの
で、それの投射像の形状、方向も、位置および寸法は異
なるが、正確に同一となる。同様に、表示画面内で各区
画は幾何学的に対称なので、各区画はその寸法および位
置が異なるだけある。このため、部分的に物体像によっ
て占められた区画と物体像との関係をテストするのに必
要な計算は極めて簡単なものになり、単純な演算で計算
できるので演算速度も非常に早くなる。同様に、任意の
複雑な物体を、オクトツリー構造によって図式的に表わ
すことができる。このようにして、任意の複雑な3次元
物体の画像が、最小の計算時間で発生でき、高速画像生
成が可能となる。
階層的に分割された画面に対応するクワドツリー構造
が、別に設けられたメモリ中に記憶される。画面上の区
画に着色される都度、この区画に対応するクワドツリー
構造上の位置にマークが付される。
1つの区画に着色される前に、クワドツリー構造中の対
応位置がチェックされる。クワドツリー構造中のマーク
が付されたウィンドウに対応する区画が再び着色される
ことはない。このようにして、発生画像中には、観察者
から陰になった部分の物体表面は表示されない。
3次元空間中の空間の投射像は、3個の内部表面と6辺
とを持つ多角形であるので、各区画内に物体像が含まれ
るかどうかのテストは、投射像全体に付いてせずに、空
間の1つの内部表面に付いて行なうだけでよい。異なる
表面の物体像によって占められた区画を異なる色で着色
し、よりリアルな3次元画像を生成することができる。
ユーザーは、他の画像表示のために、他の3次元空間を
設定することができる。この他の空間の外側にある空間
は、表示画面上に投射されないので、断面図の発生が可
能となる。
3次元および2次元空間の階層的構造とこれらの分割空
間の対称性によって、および画像生成に必要な計算が簡
単であることによって、リアルタイムで画像を発生させ
ることが可能となる。
実施例の詳細な説明 まず、3次元空間のハイアラキ構成およびオクトツリー
構造によるこの3次元空間の表現方式と、2次元空間の
ハイアラキ構成およびクアドツリー構造によるこの2次
元空間の表現方法とについて説明する。次に、オクトツ
リー構造により限定された物体を2次元の視野領域に投
影し、かつバウンディングボックスおよびウィンドーオ
ーバレイを使用して、投影像により囲まれたまたは交叉
するところの、前記視野領域のウィンドーをチェックす
る処理を説明する。更に、切断面を使用して断面をチェ
ックする処理についても説明する。
本発明の一実施例においては、オクトツリーデータ変換
および初期化制御方式が説明されている。更に、画像表
示処理ブロックにより実行されるアルゴリズムについ
て、およびこの画像表示処理ブロックの構成および動作
について説明がされている。
第1(A)図において、3次元空間32内に配置された3
次元物体30が示されている。この空間32内における物体
30の位置を、数学的に容易に確定し得るように、ここで
は空間32の形状を直方体形状にしている。また本実施例
においては、空間32内に存在する物体またはその一部分
に対する像のみを取扱い、この空間32外に存在する物体
は無視している。
第1(B)図に示すように、空間32は、相互に同じ寸
法、形状および方位をもつところの8コの小さな直方体
形状の空間に分割されている。これらの小空間は空間32
のチャイルド(子)として扱われる。空間32内に置かれ
た物体30は1コまたは複数の小空間、この例においては
小空間34および36内に収容される。この物体30は一体的
なものである必要はなく、例えば複数の分離された小物
体の集合であってもよい。
第1(C)図および1(D)図に示されるように小空間
またはチャイルド空間34および36の各々が更に8コのチ
ルドレン(子)空間に分割されている。チルドレン空間
34または36を8分割して得られる小空間は空間32に対し
てグランドチルドレン(孫)として扱われる。物体30は
チャイルド空間34のグランドチルドレン空間38およびチ
ャイルド空間36のグランドチルドレン空間40および42を
完全に満たしている。空間32を繰返し分割することによ
り微小空間を形成し、物体30により完全に占有されたす
べての微小空間を確定することにより、空間32内におけ
る物体30の位置および寸法を検出することが可能とな
る。従って、この空間32内における物体30の位置決定の
精度はこの空間32を分割して得られる微小空間の数によ
り定められることになる。
空間32を分割することにより得られた小空間は物体30に
対して3種類の関係をもつ。即ち、各小空間は、物体30
による占有度を表わすところの3種類の状態値E,Fおよ
びPの中の1つをもつことになる。Eは小空間および物
体30が完全に隔離されている状態を示し、Fは小空間が
物体30により完全に占有されている状態を示し、Pは小
空間が物体30により部分的に占有されている状態を示
す。例えば小空間35は状態値Eをもち、小空間38,40お
よび42は状態値Fをもち、小空間34および36は状態値P
をもつ。
小空間が状態値Eをもつ場合、この小空間に対するチル
ドレン空間もすべて状態値Eをもつことになる。同様
に、小空間が状態値をもつ場合には、この小空間に対す
るチルドレン空間はすべて状態値Fをもつことになる。
小空間が状態値Pをもつ場合、この小空間に対するチル
ドレン空間、グランドチルドレン空間等の微小空間には
状態値E,FおよびPをもつものが含まれることになる。
即ち、状態値PをもつP空間は、すべてが状態値Fのチ
ルドレン空間に分割されることはないが、少なくとも1
個の、空でないチャイルド空間をもつことになる。
第2図において、第1(A)図ないし1(D)図に示し
た3次元空間を表わすオクトツリー構造が示される。こ
の構造はハイアラキ構成に基いて任意数のレベルのノー
ドで構成したツリー構成である。ここでは基本ノード、
即ちレベル0から出発して3レベルのツリー構造が示さ
れている。各レベルは上位レベルより高精度に同一空間
を表わしている。オクトツリー構造とは各レベルにおけ
るノードを8コのチルドレンノードに分割することによ
り得られる構造である。あるノードを8コのチルドレン
ノードに分割した場合、このノードは枝ノードと呼ば
れ、分割されないノードは葉ノードまたは終端ノードと
呼ばれる。
基体ノードとは第1(A)図に示した空間32に相当す
る。このオクトツリー構造における下位レベルの各ノー
ドは空間32を分割することにより得られるセグメントス
ペースの1つに相当する。第1(A)図ないし1(D)
図および2図において、基体ノード32aは空間32を表わ
し、レベル1における8コのノードは夫々空間32の8コ
のチルドレン空間を表わしている。即ち、レベル1は第
1(B)図に示した分割状態に相当し、ノード34aおよ
び35aは夫々チルドレン空間34および35に対応してい
る。同様に、レベル2における各ノードは第1(C)図
および1(D)図に示したグランドチルドレン空間の1
つを表わしている。このように、レベル1におけるノー
ド数は8となり、レベル2におけるノード数は64とな
り、レベルnにおけるノード数は8nとなる。
第1(A)図ないし1(D)図および第2図を参照して
説明したように、オクトツリー構造における各ノードは
三次元スペースおよび物体30間の関係に応じた状態値を
もつ。即ち、各ノードは、三次元スペースが空白状態の
場合にはEノードとして示され、物体30により完全占有
されている場合にはFノードとして示され、物体30によ
り部分的に占有されている場合にはPノードとして示さ
れる。例えば第1(B)図に示した例においては、レベ
ル1におけるノードの中の6個はEノードとして示され
る。第2図に示したレベル1におけるノード35aは空白
の小空間35を表わしている。またレベル2におけるノー
ド38a,40aおよび42aは、空間32内において対応する小空
間38,40および42が物体30により完全占有されているの
でFノードとして示される。このレベル2における他の
ノードは物体30により部分的にも占有されることはない
ので、すべてEノードとして示される。ノード38のペア
レント(親)ノード34およびノード40および42のペアレ
ントノード36は、共にPノードとして示される。同様に
基体ノード32もPノードとして示される。
前述したように、物体により完全占有された微小空間を
表わすFノードを得るためには、部分占有された空間を
表わすPノードを更に分割することが要求される。しか
し、空白状態や完全占有状態にある小空間を表わす終端
ノードを更に分割する必要はない。これはこの種ノード
から分割されたノードはすべて空白状態または完全占有
状態となるからである。従って、第2図に示したオクト
ツリー構造においては、Pノードのみを取残すように、
剪定処理が実行される。この剪定処理のおかげでハード
ウエアの構成が非常に簡素化される。
いかなる形状および寸法の物体であっても第2図に示し
たオクトツリー構造で表現することが可能である。更
に、レベル数を増加することによりこの表現の精度を向
上させることが可能である。
第3(A)図は矩形または正方形の2次元視野領域66を
示す。勿論、この視野領域の形状を他の適当な形状に設
定することが可能である。この視野領域、即ち2次元空
間66は、相互に同じ寸法および方位をもつ4個の小さな
ウィンドー52,54,56および58に分割される。これらの小
ウィンドーは各々、更に4コの小さなウィンドーに分割
され得る。この分割を繰返し実行することが可能であ
る。この視野領域のハイアラキ構成は前述したワーノッ
クの米国特許明細書に記載されているものと同様であ
る。
この視野領域のウィンドーも、この視野領域内に表示さ
れる画像により完全占有されるか、部分的に占有される
か、または全く占有されないかに応じてFウィンドー、
PウィンドーおよびEウィンドーとして示される。
第3(B)図は第3(A)図に示した視野領域66を表わ
すクワドツリー構造を示す。このクワドツリー構造はペ
アレントウィンドーが8コではなく4コのチルドレンウ
ィンドーに分割されるということを除いて第2図に示し
たオクトツリー構造と同様のものである。このクワドツ
リー構造における各ウィンドーは、このウィンドーおよ
び視野領域に表示される画像との関係に応じてEウィン
ドー、PウィンドーおよびFウィンドーに分類される。
オクトツリー構造が3次元の小空間を表わす複数のノー
ドで構成されるのと同様にして、クワドツリー構造は2
次元ウィンドーを表わす複数のノードにより構成されて
いる。以後の説明を簡潔にするために、クワドツリー構
造のノードはウィンドーとして示し、3次元空間内にお
ける小空間をノードとして示す。オクトツリー構造にお
ける基本ノードは3次元空間32を表わすものである。
第4(A)図は、3次元空間32を所定角度から観察した
場合において、この空間32に対応した基本ノード60の8
コのチルドレン空間0ないし7に対するトラバースシー
ケンスを示す。いかなる観察角度においても、チルドレ
ンノードに収容された物体は、他のチルドレンノードに
収容されたところの、この物体の他の部分、または別の
物体を観察を妨害する。例えば、図示した観察角度にお
いては、チルドレンノード0が他のチルドレンノードに
より妨害されているために観察し得ない。またこの場
合、チルドレンノード7が観察者に最も近い位置に存在
することになり、このチルドレンノード7に含まれた物
体は他のチルドレンノードにより妨害されることはな
い。
オクトツリー構造におけるトラバースシーケンス、即ち
あるペアレントノードの8コのチルドレンノードが観察
される順序は、後側に隠された面を見せないようにした
3次元画像を発生する場合に、あるノードが別のノード
の観察を妨害する割合に応じて決定される。例えば第4
(A)図においては、ノード7が最初に観察され、以
後、ノード6,5,4,3,2および1が観察され、最後にノー
ド0が観察される。即ち、ノード7からノード0に向け
てトラバースシーケンスが決定される。これらのノード
を観察する場合、後に観察されるノードが先に観察され
たノードを妨害することのないように、トラバース処理
が実行される。こうして決定されたトラバースシーケン
スは順方向(front-to-back)トラバースシーケンスと
呼ばれる。このトラバースシーケンスにおけるいくつか
のノードに対する順序は任意に定められる可能性があ
る。例えば、図示した観察角度においては、ノード3お
よびノード6の観察順序はいずれが先でもよい。
観察角度が変更されると、トラバースシーケンスも変更
される可能性がある。例えば、第4(A)図に示したノ
ードをx,yおよびz軸に関して180°回転させた場合、チ
ルドレンノード7の観察は他のノードにより完全に妨害
されるであろうし、ノード0はこのトラバースシーケン
スの第1ノードとなるであろう。観察者が3次元空間内
において位置する8コのオクタントに応じて、8コのト
ラバースシーケンスを定めることが要求される。本実施
例においては、第4(A)図に示した観察角度に対応し
たトラバースシーケンスが使用され、あるペアレントノ
ードのチルドレンノードの各々に番号が与えられる。ハ
ードウエアはこのトラバースシーケンスに従って観察さ
れるノードを観察角度の関数として処理する。
第4(B)図は第4(A)図に示したペアレントノード
内に置かれた物体62を示す。第4(C)図は、ペアレン
トノード60内に置かれた物体60の位置を明確にするため
に、第4(B)図に示したペアレントノードを部分的に
こまかく分割した様子を示す。即ち、第4(C)図にお
いて、ノード60のチルドレンノード7は更に8コのチル
ドレンノードに分割される。これらの8コのチルドレン
ノードに対しては、第4(A)図に示した7−0トラバ
ースシーケンスに従って、夫々7′,6′,5′,4′,3′,
2′,1′および0′が与えられる。更にノード7′は8
コのチルドレンノードに分割され、これらのチルドレン
ノードに対しても7−0トラバースシーケンスに沿って
7″ないし0″の番号が与えられる。この例において
は、物体62はノード7″を満たすと共に、このノード
7″内に完全に収容されている。
前述したように、物体を少なくとも部分的に収容するノ
ードは、同一観察角度で観察された場合に、他の物体ま
たは同一物体の他の部分を収容しているノードの観察を
妨害する可能性がある。勿論、Eノードが他のノードの
観察を妨害することはない。同様に、どのノードがFノ
ードにより妨害されているかを容易に確定することがで
きる。しかしPノードによりどのノードが妨害されてい
るのかを確実に検出するためには、このPノードがEノ
ードおよびFノードのみにより構成されるまで、このP
ノードを細分化する必要がある。このように最初のノー
ドがEまたはFノードでない限り、このノードを分割し
てどのノードの観察が妨害されているかを確定すること
が要求される。このために、オクトツリー構造はトラバ
ースシーケンスにおいて順位の遅いノードを観察する前
に、順位の早いノードを完全に処理することにより、即
ち細分化することによりトラバース処理されることにな
る。例えば、第4(C)図に示されたノード7″は、ト
ラバースシーケンスにおいてノード60より後の順位をも
つところの、ノード60の同族ノード(即ち、同じペアレ
ントを共通にもつノード)、例えばノード6″,6′およ
び6よりも前に、またトラバースシーケンスにおいてノ
ード60の先祖ノードより後の順位をもつところの、この
先祖ノードの同族ノードよりも前に観察されることにな
る。
オクトツリー構造における深さ方向優先トラバース処
理、即ちペアレントノードからチルドレンノードへと進
みすべての子孫ノードが処理された時にのみペアレント
ノードに戻すトラバース処理が本実施例において使用さ
れている。これは画像が発生されている間に隠れた面を
除去することを可能にするためである。隠れた面を除去
することを必要とする3次元画像以外の画像を形成する
場合、または投影される物体の構成に何らかの制限が加
えられている場合には、同一レベルにおけるすべてのノ
ードを処理した後に下位レベルのノードの処理に移ると
ころの幅方向優先トラバース処理や、深さ方向優先トラ
バース処理および幅方向優先トラバース処理の混成処理
を使用するのが有利な場合がある。またこの深さ方向優
先トラバース処理は画像形成に必要とされる計算のため
のクワドツリー構造が複雑になるのを防止するためにも
使用される。
逆方向(back-to-front)トラバースシーケンスを順方
向トラバースシーケンスの代わりに使用することが可能
である。この逆方向トラバースシーケンスを使用した場
合、ある物体を妨害し、かつこの逆方向トラバースシー
ケンスにおいて、この物体より後の順位をもつ妨害物体
を前述の物体上に重ねて描くことにより、隠れた面の除
去処理を実行することができる。しかし、オクトツリー
構造におけるすべての枝葉ノードを処理する必要がない
ので、順方向トラバースシーケンスを使用した方がより
効率的である。勿論、特定の場合には逆方向トラバース
シーケンスを使用した方が有利な場合もある。
第5図はFノードにより表現された3次元空間に対応す
るノード64を2次元の視野領域66に投影したところの投
影図を示す。通常、視野領域66上に投影されたノード64
の投影像は6辺68a,68b,68c,68d,68eおよび68fをもつ2
次元の多角形である。3次元ノード64の最大で3コの面
が種々の角度から観察され、このノードの最大で3コの
面が種々の角度から視野領域66上に投影される。勿論、
特定の角度においては、ノード64の1コまたは2コの面
のみが観察され、この1コまたは2コの面のみが視野領
域66上に投影されることがある。この場合、投影像68は
四辺形となる。
六角形の投影像68は、投影領域内における辺により分離
された3コの面の投影像として見做すことができる。第
6(A)図に示すように、ノード64の3コの面が各々投
影像68内の四辺形として投影される。即ち、ノード64の
第1,第2および第3の面が投影像68内において面領域7
0,71および72として投影される。
第6(B)図は第6(A)図に示した投影像68により規
定されたバウンディングボックス74を示す。このバウン
ディングボックス74は、投影像68を完全に囲み、かつ所
定の方位、例えば視野領域の縦軸に平行な辺をもつとこ
ろの、最小の矩形として定義される。通常、このバウン
ディングボックス74は長方形であるが、正方形となる場
合もある。このバウンディングボックス74の基点76は例
えばこのボックスの左側下端にセットされる。
第6(C)図において、ノード投影像68およびそのバウ
ンディングボックス74上にウィンドーオーバーレイ78が
重畳されている。このウィンドーオーバーレイ78は同一
寸法の4コの相接触したウィンドー78(0),78(1),
78(2)および78(3)により構成されている。視野領
域のウィンドーは所定の寸法をもって所定位置に配置さ
れることになるので、通常の場合、バウンディングボッ
クス74を囲む単一のウィンドーを検出するのは不可能で
ある。レベルnにおけるウィンドーの一辺の長さは、視
野領域の一辺の長さの1/2nに等しい。バウンディングボ
ックスの位置は不定であるために、このボックスがウィ
ンドーの辺上に位置して、複数のウィンドーと交叉する
ことがある。このため、このバウンディングボックス74
を取囲むのに充分大きく、かつクワドツリー構造におい
て可能な限り上位の、同一レベル内の4コのウィンドー
により構成されるウィンドーオーバーレイ78が使用され
る。このため、次の下位レベルにおけるところの、いか
なる4コのウィンドーにより構成されるウィンドーオー
バーレイはバウンディングボックスを取囲むのには小さ
すぎることになる。このことは、ウィンドーオーバーレ
イ内の4コのウィンドーの各々がバウンディングボック
ス74と同じか、より大きな寸法をもつことを意味してい
る。
このように、ノード68に対するバウンディングボックス
74は4コの相接触するウィンドーをもつところの、少な
くとも1つのウィンドーオーバーレイ78により取囲まれ
る。通常、バウンディングボックス74は1コのウィンド
ーオーバーレイ内に収容される。しかし、あるバウンデ
ィングボックスを収容する場合、このボックスの方位に
応じて複数のウィンドーオーバーレイが使用されること
がある。例えば、単一のウィンドーにより完全に収容さ
れるバウンディングボックスが、各々がの単一のウィン
ドーをもつ4コのウィンドーオーバーレイにより取囲ま
れることがある。このような場合には、これらのウィン
ドーオーバーレイの中の1つを適当に選択すればよい。
ノード68を8コのチルドレンノードに分割した場合、各
チルドレンノードの投影像は、各チルドレンノードのバ
ウンディングボックスと同様に、ウィンドーオーバーレ
イ78内に収容されることになる。また、ノードおよびウ
ィンドー間には特定の位置関係があるので、8コのチル
ドレンノードの投影像の中の1つにより定められるバウ
ンディングボックスは、ウィンドー78(0)ないし78
(3)を各々4分割することにより得られる16コのチル
ドレンウィンドーから選択されたウィンドーにより構成
されたウィンドーオーバーレイ内に収容されることにな
る。クワド ツリー構造が1レベルだけ下位方向に進められ
て、ノード投影像のウィンドーオーバーレイを4×4の
ウィンドーアレイに分割した場合、このノード投影像の
8コのチルドレンノード投影像の各ウィンドーオーバー
レイ、即ち、前記チルドレンノード投影像用のバウンデ
ィングボックスを完全に収容するのに必要かつ充分な大
きさの4コのウィンドーが前記4×4のウィンドーアレ
イから選択される。勿論、異なるチルドレンノード投影
像に対して異なるウィンドーオーバーレイを選択するこ
とが可能である。また、ウィンドーオーバーレイを構成
する4コのウィンドーは同じペアレントウィンドーをも
つチルドレンウィンドーである必要はない。この場合で
も、これらの4コのウィンドーは連続していることが要
求される。
あるノード投影像に対してウィンドーオーバーレイが設
定されると、クワドツリー構造およびオクトツリー構造
が、任意のノードのチルドレンノードに対するウィンド
ーオーバーレイを検出するために、相互に同様の分割処
理を受ける。あるノードのウィンドーオーバーレイを検
出した後には、このノードの子孫ノードの投影像のウィ
ンドーオーバーレイを検出するために、クワドツリー構
造の、幅方向ではなく、下位方向へのトラバース処理が
必要とされる。最後にクワドツリー構造を下位方向に1
レベルずつトラバース処理し、かつこのクワドツリー構
造を下位方向にトラバース処理する前に、あるノード投
影像のウィンドーオーバーレイが常に検出されるように
なった場合、このクワドツリー構造における分野処理に
おいて、ウィンドーオーバーレイは4×4のウィンドー
アレイに変換される。こうして、必要かつ最少数のウィ
ンドーが用意され、かつクワドツリー構造における下位
方向へのトラバース処理により増加するウィンドーの数
は急激にではなく略直線的に大きくなる。この特徴は動
作速度および効率の面からみて非常に重要なことであ
る。
ノードおよびウィンドーを分割する場合、ある時点にお
いて、オクトツリー構造における分割処理により得られ
た8コのチルドレンノードから1コのチルドレンノード
投影像が選択され、このチルドレンノード投影像に対す
るウィンドーオーバーレイを、クワドツリー構造におけ
る分割処理により得られた4×4のウィンドーアレイか
ら選択し、更に、このウィンドーオーバーレイの中の4
コのウィンドーを個々に処理する。4×4のウィンドー
アレイからウィンドーオーバーレイを選択するために、
例えば第6(D)図ないし6(F)図に示すように6ビ
ットコードが使用される。勿論、この場合、より少数の
ビットのコードを使用することが可能である。
第6(D)図に示すように、4×4のウィンドーアレイ
(16コのウィンドーをもつ)から、チルドレンノード投
影像のバウンディングボックスを収納し、かつ4×4の
ウィンドーアレイ内において得られる4コの3×3のア
レイの中の1つが選択される。変数W3×3Xは、選択され
た3×3のウィンドーアレイが直線aの左側に位置する
ウィンドーを含む場合に論理値0にセットされ、選択さ
れた3×3のウィンドーアレイがすべて直線aの右側に
位置している場合には、理論値1にセットされる。同様
に、変数W3×3Yは、選択された3×3のウィンドーアレ
イが直線bの下側に位置するウィンドーを含む場合には
論理値0にセットされ、選択された3×3のウィンドー
アレイがすべて直線bの上側に位置する場合には論理値
1にセットされる。
次に、第6(E)図に示すように、第6(C)図におい
て選択された3×3のウィンドーアレイ内に含まれると
ころの、4コの3×3のウィンドーアレイの中から、チ
ルドレンノード投影像を含む1つのウィンドーオーバー
レイが選択される。変数W2×2Xは、選択されたウィンド
ーオーバーレイが直線cの左側に位置するウィンドーを
含む場合には、論理値0にセットされ、選択されたウィ
ンドーオーバーレイがすべて直線cの右側に位置してい
る場合には論理値1にセットされる。同様に、変数W2×
2Yは、選択されたウィンドーオーバーレイが直線dより
下側に位置するウィンドーを含む場合には論理値0にセ
ットされ、この選択されたウィンドーオーバーレイがす
べて直線dより上側に位置している場合には論理値1に
セットされる。
4×4のウィンドーアレイからウィンドーオーバーレイ
が選択されると、2ビットの変数WNUMによりこのウィン
ドーオーバーレイから単独のウィンドーが選択される。
ウィンドーオーバーレイの選択のために、変数W3×3X,W
3×3Y,W2×2XおよびW2×2Yにより選択コードWBITSが形
成される。変数WNUMの符号化について、第6(F)図を
参照して説明する。左側下方のウィンドーはウィンドー
0(00)として示され、左側下方のウィンドーはウィン
ドー1(01)として示され、左側上方のウィンドーはウ
ィンドー2(10)として示され、右側上方のウィンドー
はウィンドー3(11)として示されている。勿論、この
番号の与え方は変更してもよい。4コのチルドレンウィ
ンドーをもつ各グループを処理する場合、この番号付け
はこれらのウィンドーが処理される順序を確定するため
にトラバースシーケンスとして使用される。
本実施例においては、オクトツリー構造におけるFノー
ドの投影像により完全に取囲まれたところの、視界領域
内のウィンドー、即ち3次元空間内に置かれた物体によ
り完全に占有された小空間を表わすノードが検出され、
例えば画像表示器上の対応する領域に斜線を施すことに
より描かれる。第6(C)図に示したノード投影像68が
Fノードの投影像だとすると、ウィンドーオーバーレイ
78の4コのウィンドーの中のどのウィンドーが前記投影
像により完全に占有されているかを確定することが必要
である。もしも、投影像により完全に占有されたウィン
ドーが存在している場合には、これらのウィンドーが描
写される。投影像68により部分的に占有されたウィンド
ーは、完全に占有されるウィンドーが得られるまで細分
化される。
投影像により全く占有されていないウィンドーを素早く
除去して効率を上げるために、ウィンドーオーバーレイ
内の各ウィンドーがテストされる。このテストは、3種
類の独立したテスト、即ち、バウンディングボックステ
スト(BBOXテスト)、多角形交叉テスト(PIテスト)お
よび占有度テスト(Eテスト)を続けて実行することに
より、テスト下のウィンドーがノード投影像により完全
に占有されているか否かを確定するものである。これら
のテスト結果から、テスト下のウィンドーが投影像と交
叉しているのか、或いは占有されているのかが確定され
る。
BBOXテスト 第7図に上述の3つのテストのうちの第1のテスト、BB
OXテストについての幾何学上の構成を示す。ノード投影
像68とバウンディングボックス74を視野平面の任意の場
所に定義し、バウンディングボックス74の原点76の座標
を(NPX+ax,NPY+ay)とする。バウンディングボック
ス74のx′方向の長さ(幅)をbx,y′方向の長さ(高
さ)をbyとする。これにより、バウンディングボックス
74は4つの直線X′=NPX+ax,x′=NPX+ax+bx,y′=
NPY+ay,y′=NPY+ay+byによって定義される。このよ
うにバンディングボックス74は視野平面のx′軸,y′軸
に平行な直線で定義されるが、これはバウンディングボ
ックスを定義する際の制約の1つである。
また、第7図には(Wx,Wy)を原点とし1辺の長さをe
とするウインドウ78(3)も示されている。ここで、全
てのウィンドウは正方形である。ウインドウ78(3)
は、第6図(c)に示したノード投影像68のウインドウ
・オーバーレイ78の中の任意の(右上の)ウインドウで
ある。ウインドウ78(3)は4つの直線、x′=Wx,x′
=Wx+e,y′=Wy,y′=Wy+eによって定義される。
BBOXテストの目的は、テストされるノード投影像により
定義されるバウンディングボックスが、そのノード投影
像により定義されるオーバーレイ78の中の1つ、また
は、複数のウインドウと交差しているかどうかを判定す
ることである。このため、オーバーレイ78の中のウイン
ドウ各々の4つの辺の位置が、次のようにして、バンデ
ィングボックスの対応する4つの辺の位置と比較され
る。
ウインドウ78(3)の下辺80aがバウンディングボック
ス74の上辺80bより下にあるか? ウインドウ78(3)の上辺82aがバウンディングボック
ス74の下辺82bより上にあるか? ウインドウ78(3)の左辺82aがバウンディングボック
ス74の右辺84bより左にあるか? ウインドウ78(3)の右辺86aがバウンディングボック
ス74の左辺86bより右にあるか? これら4つの比較は下等式で表わすと次のようになる。
Wy<NPY+ay+by Wy+e>NPY+ay Wx<NPY+ax+bx Wx+e>NPX+ax 上述の4つの不等号が全て成立するとそのウインドウは
ノード投影像と交差していてBBOXテストをパスしたとい
える。
一般に、バウンディングボックス74はノード投影像68よ
りも大きいので、ウインドウはバウンディングボックス
74と交差してもノード投影像68と交差するとは限らな
い。しかしながら、あるノード投影像68のバウンディン
グボックス74と交差しないウインドウはそのノード投影
像68とは絶対に交差しない。このように、BBOXテストを
パスしたウインドウはノード投影像と必ずしも交差する
とは限らないが、BBOXテストをパスしなかったウインド
ウは絶対にノード投影像と交差しない。第2のテストは
ウインドウがノード投影像それ自体と交差するかどうか
を判断するテストである。
PIステト 多角形交差テスト(PIテスト)とは対象としているノー
ド投影像のバウンディングボックスと交差していると判
断されたウインドウがノード投影像それ自体と交差する
かどうか判断することである。PIテストは先ずノード投
影像の6つのエッジそれぞれについてのウインドウでの
臨界頂点を選び、次ぎに、ノード投影像の6つのエッジ
の位置と対応する臨界頂点の位置をそれぞれ比較し、臨
界頂点がノード投影像の内側にあるかどうか判定する。
このようにPIテストはノード投影像の6つのエッジそれ
ぞれについての6つの比較からなる。
第8図に任意のウインドウ88と、6つの外周エッジ11〜
16を有する任意のノード投影像68を示す。ウインドウ88
の一部がノード投影像68の一部と交差するかどうか判断
するために、ウインドウ88の位置が各エッジ11〜16の位
置と比較されなければならない。
第9図(a)〜(b)にPIテストにおけるノード投影像
の各エッジについてのウインドウ88の臨界頂点の選び方
を、エッジの傾きとノード投影像の内部についてのエッ
ジの相対位置との関係で示す。ウインドウ88の左上頂点
88aは正の(視野平面の座標系で)傾きを有し、平面を
2つの半平面に2分する線で、かつ、ノードを投影像で
その線の上(y方向において正)側にあるような線の線
分であるエッジ90のようなエッジ(第8図ではエッジ1
1)についての臨界頂点として選ばれる。ウインドウ88
の右下頂点88bは正の傾きを有し、平面を2分する線
で、かつ、ノード投影像がその線の下側にあるような線
の線分であるエッジ92のようなエッジ(第8図のエッジ
14)の臨界頂点として選ばれる。ウインドウ88の右上頂
点88cは負の傾きを有し、ノード投影像より下側で平面
を2分する線の線分であるエッジ94のようなエッジ(第
8図のエッジ13)の臨界頂点として選ばれる。ウインド
ウ88の左下頂点88dは負の傾きを有し、ノード投影像よ
り上側で平面を2分する線の線分であるエッジ96のよう
なエッジ(第8図のエッジ16)に臨界頂点として選ばれ
る。
第10図はノード投影像68のエッジ11についてのPIテスト
の幾何学的構成を示す。エッジ11は正の傾きを有し、ノ
ード投影像68が完全にその線の上にあるように平面を2
分する線98の線分であるなので、ウインドウ88の頂点88
aがエッジ11についての臨界頂点として選ばれる(第9
図(a)の場合と同様である)。PIテストは臨界頂点88
が線98により2分された半平面のうちノード投影像68を
含む半平面内にあるかどうかを判定する。上述した幾何
学的構成のために、臨界頂点が線の上側かどうかを判定
すればよい(もし、ノード投影像68が線98より下側の半
平面内にあれば、反対側の頂点88bが臨界頂点として選
ばれ、PIテストは頂点88bが線98の下側かどうか判定す
ることになる)。
臨界頂点88aが線98の上側にあるかどうか調べるために
補足的な2本の線100,102が用いられる。線100はノード
投影像68の対象としているエッジ(ここではエッジ11)
に並行で視野平面の原点104を通る線である(原点をど
のように定義するかは後述するが、ここでは、PIテスト
における6つのエッジと臨界頂点の比較に用いられる任
意の固定点を原点104とする)。
線102は線98に並行で臨界頂点88aを通る線である。も
し、線102が線98により分けられた半平面のうちのノー
ド投影像98を含む半平面内にあれば、臨界頂点88aも同
一半平面内にあるであろう。
線分Nd1は線100から線98に向かって、これら両線に直交
するようにひかれた線分である。このため、線分Nd1の
長さは線98,100間の距離である。同様に、線分d1は線10
0から線102に向かって、これら両線に直交するようにひ
かれた線分である。線分Wd1の長さは線100,102間の距離
である。線分Nd1の長さが線分Wd1の長さと比較される。
線分Nd1の長さが線分Wd1の長さより短かい場合は、臨界
頂点88aは線98に分けられた2つの半平面のうちのノー
ド投影像を含む半平面内にあることになる。
前述したように、この比較はノード投影像68の6つのエ
ッジ全てについて行なわれる。そして、6つの比較結果
が全てパスした場合のみ(すなわち、6つのエッジにつ
いての臨界頂点が全て各エッジにより定義されノード投
影像を含む半平面側にあると判断された場合のみ)、ウ
インドウ88はPIテストをパスする。もし、ウインドウが
PIテストをパスしない場合は、ウインドウは必ずしもノ
ード投影像68と交差しないことになる。これは、PIテス
トの6つの比較はノード投影像それ自体に関して行なっ
たのではなく、半平面に関して行なったからである。
上述したように、BBOXテストをパスしなかったウインド
ウはノード投影像と絶対に交差しないが、BBOXテストを
パスしたウインドウはノード投影像と交差するかどうか
決まってはいない。同様にPIテストをパスしなかったウ
インドウはノード投影像と絶対に交差しないが、PIテス
トをパスしたウインドウはノード投影像と交差するかど
うか決まってはいない。しかしながら、BBOXテストもPI
テストもともにパスしたウインドウはノード投影像と交
差することが立証されたことになる。
このように2つの簡単な幾何学的なテスト、BBOXテスト
とPIテストが所定のウインドウについて連続して行なわ
れることにより、そのウインドウがノード投影像と交差
するかどうかが確実に判定される。この発明の実施例が
交差テストのためにこの方法を用いたのは、簡単な計算
と少ない演算数で実行できるという効率上の理由からで
ある。当業者は、ウインドウ88とノード投影像との幾何
学的な交差を調べるのにより少ない比較でより確実な結
果をもたらす他の方法を考えられるであろう。しかしな
がら、1つのより複雑な一連のテストを行なうのではな
く比較的簡単な一連のテストを行なうことにより、この
実施例は全く交差しないことを速く検出することがで
き、全く交差しないウインドウを速く捨てることができ
る(統計上の分析によれば、BBOXテストによって約80%
のウインドウがノード投影像と交差しないことが立証さ
れている)。
Eテスト 上述したように、この発明の目的は視野平面上にありF
ノードの投影像によって完全に囲まれているウインドウ
を全て塗りつぶすことである(Fノードはオブジェクト
によって囲まれている)。所定のノード投影像と交差し
ないウインドウはたぶんそのノード投影像によって囲ま
れない。しかしながら、ノード投影像と交差するウイン
ドウのうちの一部(上述のBBOXテストとPIテストの両結
果の組み合せにより定義された一部)は、ノード投影像
に囲まれる。そのため、Eテストと呼ばれる第3のテス
トを行なう必要がある。
この実施例は「ブロック描影法」と呼ばれる技術を用い
ているが、これはノード投影像68を3つの面(第6図
(a)に示した)に分割する必要がある。Eテストはあ
るウインドウがノード投影像によって囲まれるかどうか
は判定しないで、あるウインドウがノード投影像の3つ
の目のうちの1つによって囲まれているかどうかを判定
する。Eテストをノード投影像全体について行なえばこ
の実施例で用いたアルゴリズムは簡単化できる。しか
し、ノード投影像の3つの面の各々についてEテストを
行なうことにより、より現実的な三次元画像の作成が可
能になる(各面ではなくノード投影像そのものを用いた
「表面一般(サーフェイス・ノーマル)描影法」と呼ば
れる別の描画法は後述する)。
所定のウインドウが塗られる時、塗られる色または濃淡
は多くの要因により決定される。ウインドウは所望のど
のような色または濃淡によって塗ることが可能である。
あるウインドウをノード投影像の3つの面のうちのどの
面がそのウインドウを囲んでいるかに応じて3色または
3つの濃淡のうちの1つで塗ることにより、最終的な画
像に奥行きが表われることが証明されている。これは、
視者は対象物の3つの方向性面(3次元空間の並列な3
つの視野面により定義される)を互いに識別できるから
である。この区別をつけさせるためには、単にノード投
影像があるウインドウを囲むかどうかを判定するだけで
はなく、ノード投影像の3つの面のうちのどの面がその
ウインドウを囲むかを判定する必要がある。
したがって、Eテストの目的はウインドウがノード投影
像の3つの面のいずれかによって完全に囲まれているか
どうかを判定することである。Eテストの幾何学的構成
はPIテストの場合と似ている。第11図(a)〜(d)に
Eテストにおける任意のウインドウ88の臨界頂点の選び
方をノード投影像の面のエッジの傾きと、ノード投影像
の面の内側に関する面のエッジの相対位置とに応じて示
すものである。第9図(a)〜(d)と第11図(a)〜
(d)を比べると、PIテストの場合に選ばれた臨界頂点
と反対側の頂点がEテストの場合に臨界頂点として選ば
れていることがわかる。エッジ90のように、正の(視野
平面座標系で)傾きを有し、その線の上側にある半平面
が面の内部を含んでいるような平面を2分する線の線分
であるようなエッジは、Eテストの界臨頂点としてはウ
インドウ88の頂点88bを選択する。同様にして、ウイン
ドウ88の頂点88a,88c,88dは面のエッジ92,94,96につい
ての臨界頂点として選択される。
第12図に、ノード投影像68の面71のエッジ11に関するE
テストの幾何学的構成を示す。Eテストはノード投影像
の3つの面の各々をテストするために、ノード投影像の
各面について4つの比較(合計で12個の比較)を行なわ
なければならないことがわかる。
PIテストの場合と同様に面72のエッジ11を含む線98が描
かれる。同様に、線98に平行で視野平面の原点104を通
る第2の線100が描かれる。線98に平行でウインドウ88
の臨界頂点88bを通る第3の線106が描かれる。PIテスト
の場合と同様に、線100,98の間に両者に直交する線分Nd
1が描かれる。同様に、線100,106の間に両者に直交する
線分Wd1が描かれる。
このような幾何学的配置によれば、ウインドゥ88が面71
により完全に囲まれれば、次のことが必ずいえる。すな
わち、臨界頂点88bはエッジ11の上側で、臨界頂点88aは
エッジ8の下側で、臨界頂点88cはエッジ16の左側で、
臨界頂点88dはエッジ16の右側である。
臨界頂点88bが線98により2分された半平面のうち面71
の内部を含む半平面内にあることを判断するためには、
線106の位置と線98の位置を比較しさえすればよい。何
故ならば、線106が線98の上側にあれば、臨界頂点88bも
必ず線98の上側になるからである(このようになれば、
半平面の内部にもなる)。この比較は線分Nd1とWd1の長
さの比較により行なわれる。Nd1<Wd1であれば、臨界頂
点88bはEテストをパスしたことになる(反対側の臨界
頂点88aが比較の対象として選択された場合のように、
線98により2分された半平面のうち面71を含む半平面が
線98の下側の場合は不等号は逆になる)。同様な比較が
面71の4つのエッジ各々について行なわれる。4つの比
較(不等号)が全て成立すれば、ウインドウは完全にそ
の面によって囲まれていることを意味し、そのウインド
ウはEテストをパスすることになる。
所定のウインドウは所定のノード投影像の3つの面の1
つのみにより囲まれることが明らかである。しかしなが
ら、12個の比較は似たような情報を必要とするので、12
個の比較は同時に行なわれ、次のことが判定される。
(1)ウインドウが面によって囲まれているかどうか
(この場合、囲まれているときはEPASS信号が発生され
る)。(2)面がウインドウを囲んでいる場合、3つの
面のうちのどの面が囲んでいるかどうか(3つの面のう
ちのどの面がウインドウを囲んでいるかを示す面番号を
発生し、ウインドウを適当な色で塗る)。
第13図に、上述したBBOX,PI,Eテスト結果が、本発明の
実施例によってどのように用いられるかをブロック図と
して示す。既に説明したように、各テストは夫々独立し
て実行される。各テストにおいては、バス108について
おこなわれるノードプロジェクション(ノード結合構
造)の位置及び方位、バス110についておこなわれる表
示画面上でのウインドゥ(ウインドゥ結合構造)の位置
及び方位について同じ情報が用いられる。BBOXテストブ
ロック112は、ウインドゥが上記BBOXテストをパスした
か否かを表わす出力信号BPASSを生成し、PIテストブロ
ック114は、ウインドゥが上記PIテストをパスしたか否
かを表わす出力信号PPASSを生成する。これらの出力信
号はANDゲート115によりAND処理され、ウインドゥが上
述したように、ノードプロジェクションと交差すること
を示す信号INTERSECTを得る。
Eテストブロック116は、ウインドゥがEテストをパス
したときに出力信号EPASSを生成し、また、ウインドゥ
がノードプロジェクションのどの面によって囲まれてい
るかを示す信号FACE NUMBERを出力する。EAPSS信号はAN
Dゲート117により上記INTERSECT信号とAND処理され、出
力信号PAINTが生成される。
第13図示されたプロセスによれば、3種類のテストの各
テストを同時に実行するように構成されているが、本発
明の実施例は、実際には、ウインドゥノットフル(wind
ow not full)テスト及びBBOXテストを順次実行し、そ
れからPIテストを、最後にEテストを実行するように構
成されている。ウインドゥがフル状態でなくかつBPASS
信号が出力された場合に限ってPIテストが実行され、ま
た、PPASS信号が出力された場合に限ってEテストが実
行される。このような様式を採用することにより、上記
複数のテストの中の最初の1つのテストに失敗したよう
なウインドゥについては最小の計算処理数で処理される
から、演算効率を向上できる。
VLSI等のハードウェア的構成を適用できるならば、上述
した複数のテストを同時に実行するように構成してもよ
く、これにより更に演算効率を向上せしめるから一層好
ましい。実際、他のハードウェア構成を適用すれば、他
の異なったテストアルゴリズムを用いることができる。
例えば、PIテストは、全体のノードプロジェクションよ
りもノードプロジェクションの複数の面についておこな
うことができ、この場合は、個々の面についてPIテスト
が実行される。テストアルゴリズムのいくつかの特徴に
ついては、実際に適用されたハードウェア構成に応じて
任意に決められるものであり、本発明でのVLSI等を用い
た異なったハードウェアの適用に対して好ましいもので
はないかもしれない。また、当業者により容易に理解さ
れるように、PIテスト及びEテストは、実際には省略し
てもよく、ノードプロジェクションがテストに供されて
いるウインドゥと交差するか否かを決定するために重要
なのはBBOXテストである。それは、BBOXテストをおこな
えば、ノードプロジェクションがテストに供されている
ウインドゥと交差するか否かを決定できるからである。
BBOXテストだけを実行するように構成すれば、実質的な
効率低下が発生するが、その場合でも画像生成処理その
ものは、良好におこなうことができる。このような効率
低下は、例えばVLSIを用いたハードウェア構成を採用す
ることにより、ハードウェア的に補償して計算処理を高
速化することができるから、さして深刻なものではな
い。
画像生成アルゴリズム 3種類のテストの各テストの動作について説明するため
に、ここでは任意のノードプロジェクション及び任意の
ウインドゥを想定する。しかしながら、既に説明したよ
うに、ウインドゥ88は、実際には、第6図(C)に示さ
れたウインドゥオーバーレー78の4個のウインドゥ78
(0)〜78(3)の中の1つである。ウインドゥオーバ
ーレー78の各ウインドゥについて、BBOXテスト、PIテス
ト及びEテストをおこなわなければならない。
当該実施例によれば、交差(intersection)ついて
は、、ノンエンプティノード(即ち、PノードまたはF
ノード)のプロジェクションがテストされる。これは、
被検体を含むかまたはこれに含まれるかしているノード
だけが、表示画面上に画像を映し出すからである。同様
に、Eテストに供されるのはFノードだけである。なぜ
なら、部分ノードにより囲まれているウインドゥがペン
イト処理されるべきか否か(そのようなウインドゥの一
部分が実際に被検体により含まれたノードのプロジェク
ションにより実際に囲まれているか、または全く囲まれ
ていない)についてはっきりと確定されていないからで
ある。部分ノードは交差に関するテスト(即ち、BBOXテ
スト及びPIテスト)に供されるが、もしもウインドゥと
ノードとが交差している場合は、ウインドゥの『グラン
ドチルドレン(孫)』(分割されて上述された階層構造
での下位レベルに相当するものを意味している)がノー
ドの『グランドチルドレン』によって囲まれることがで
きる。交差していないことが確認されれば、下位レベル
での多くの不要なテスト処理を実行しなくて済むことに
なる。Eノード(即ち、エンプティノード)が除外され
たとき、もしもノードがペイント処理されていない少な
くとも1つのウインドゥと交差しているとすれば、部分
的に交差しているノードは、その全部の『グランドチル
ドレン』が包囲されるまで細分割される。
ウインドゥが全ノードプロジェクションと交差しINTERS
ECT信号が出力されているにも拘らず、Eテストに失敗
した場合は、そのウインドゥの一部分だけがノードプロ
ジェクションによって囲まれることになる。第3図の
(A)及び(B)に示された表示画面上での4本の分岐
をもつツリー構造(quadtree structure)を参照して、
上記ウインドゥの少なくとも1つの『グランドチルドレ
ン』ウインドゥは、ノードプロジェクションによって完
全に包囲されたようなFノードとなるはずである(この
とき、ツリー構造のレベル数は無限数であると仮定され
ている)。この場合、そのウインドゥは4個の『チルド
レン(子)』ウインドゥに細分割され、BBOXテスト、PI
テスト、Eテストが各『チルドレン』ウインドゥに対し
て夫々おこなわれ、その中の1つが上記ノードプロジェ
クションに完全に囲まれているか否かが決定される。
(当該実施例においては、特殊な場合として、ウインド
ゥオーバーレーが同一の『ペアレント(親)』をもつ4
個の『チルドレン』ウインドゥにより構成されている場
合を考える。)このようなプロセスは、全部の部分包囲
ウインドゥ(partiallyenclosed window)がFまたはE
ウインドゥに細分割されるまで(または予め決められた
分解能率に達するまで)反復的に繰り返し続けられる。
あるウインドゥが上記3種類のテストをパスしFノード
プロジェクションにより完全に囲まれていることが確認
されると、第3図(B)に示されたツリー構造中におい
て該ウインドゥは、“FULL(即ち、F)”とマークされ
る。このツリー構造を正確にするために、Eとマークさ
れたFウインドゥの全ての『祖先』についてPARTIAL
(即ち、P)とマークする。更に、このウインドゥの他
の3個の『兄弟』(即ち、当該ツリー構造中での同一の
『ペアレント』ウインドゥに対して『チルドレン』に対
応する他の3個のウインドゥ)がフル状態であると確認
された場合には、その『ペアレント』ウインドゥに“FU
LL"とマークされる。第13図に示されたツリー構造ブロ
ック118は、最新のツリー構造を格納するように用いら
れる。
ここで読み出しは開始され、本発明に従ったツリー構造
のアルゴリズムの帰納的性質(recursive nature)を識
別する。三次元空間を表わしている図示された8本の分
枝をもつオクトツリー構造(octree structure)はトラ
バース処理されこれによりFノードを配置し、同時に、
第3図(B)のツリー構造はトラバース処理されて、こ
れらのFノードのプロジェクションによって完全に囲ま
れたウインドゥを配置する。このツリー構造の任意のレ
ベルにおいて、8個の全ての『チルドレン』ウインドゥ
は処理され、この結果、Eノードは直ちに処理され、F
ノードはこれらのノードによって規定されているウイン
ドゥオーバーレー(window overlay)のウインドゥを細
分割することにより(即ち、下方向へのツリー構造をト
ラバース処理することにより)処理され、この結果Fノ
ードのプロジェクションによって完全に囲まれたウイン
ドゥを配置し、そしてPノード(PARTIALノード)は該
ノードのプロジェクションによって規定されているウイ
ンドゥオーバーレーと共に処理され、全部の交差ウイン
ドゥがフル状態(即ちペイント完了状態)となっていな
い場合に限り、Fノードを配置する。
Fノードがあったとき、オーバーレー中において交差し
ているペイント未処理ウインドゥは、上記Fノードのプ
ロジェクションによって完全に囲まれているかどうかに
ついて、夫々テストされる。Fノードのプロジェクショ
ンによって完全に囲まれているウインドゥはペイント処
理され、ノードプロジェクションと交差していないウイ
ンドゥは除外され、そして、交差はしているがノードプ
ロジェクションによって囲まれていないウインドゥにつ
いては、更に細分割(これにはウインドゥ解像度による
限界が決められている)処理され、囲まれているウイン
ドゥを配置させる。
前述したように、所定の視野角度で操作者から見えない
面が発生するのを防ぐために、第2図のツリー構造にて
“FULL"とマークされたノードの部分セットだけについ
て実際にペイント処理される。なぜなら、いくつかのF
ノードは、他のFノードによって遮断され見えなくなる
からである。ここでの被検体が三次元物体であるから、
いくつかのウインドゥはFノードプロジェクションによ
って完全に囲まれることになる。同時に、トラバース順
位において最初に検出された包囲ノードのプロジェクシ
ョンだけがウインドゥのペイント処理を許される。これ
は、ツリー構造でのトラバース順位に従って最初に出会
った第1のFノードが、後に出てくるFノードにより表
わされる被検体の一部分を視覚的に妨害するからであ
る。実際には、そのような後のノードはしばしば出てこ
ない場合が多い。何故なら、『祖先』ノードがいかなる
ノンフルウインドゥとも交差せず、該『祖先』ノード及
びその『グランドチルドレン』ノードはアクセスされず
除外されてしまうからである。しかしながら、ウインド
ゥを完全に囲んでいるようなノードが後で出てくる場合
には、そのウインドゥはフル状態であると確認されペイ
ント処理されることになる。従って、上記第1の包囲
(neClosure)についてだけがペイント処理を結果とし
ておこなわしめる。これと関連して、ツリー構造での任
意のノードが一回だけ現われ、任意のウインドゥが数回
にわたって現われるが、ペイント処理については唯1回
だけおこなわれるのである。
第13図を再び用いて説明を続ける。任意のウインドゥが
唯1度だけペイント処理されることを確実化するため
に、ツリー構造ブロック118は、テスト対象たるウイン
ドゥが既にペイント処理されたか否かを表わすWINDOW E
MPTY信号を出力する。該出力信号はANDゲード117により
INTERSECT信号及びEPASS信号とAND処理される。従っ
て、該ウインドゥがノードプロジェクションの面により
包囲されておりかつ未だペイントされていないときに限
って、PAINT信号が出力されるように構成されている。
このPAINT信号が生成されると、3種類の濃淡レベルま
たは上述した(ブロック濃淡識別化のための)FACE NUM
BER信号により決定される色に応じて表示画面上でかつ
ウインドゥ幾何バス110により特定された位置にてペイ
ント処理される。
カットプレーンテスト 上述したアルゴリズムの最も重要な利点の1つとして、
三次元物体の現実に即しておりかつその全体にわたって
視野的に隠された部分が無い二次元画像が得られること
があげられよう。しかしながら、該三次元物体の断面画
像を表示し操作者をして物体の表示されていない部分を
認識せしめることがしばしば有用である場合もあり、そ
れは、操作者が物体の見たい部分を観察するのを妨害す
るものではない。
本発明の実施例でおこなわれるアルゴリズムを更に拡張
すれば、三次元空間の三次元的部分セットを設定するこ
とができる。このようなアルゴリズムによれば、Fノー
ドがテスト対象たるウインドゥを完全に包囲する場合
に、このウインドゥが未だペイント処理されておらず、
また上記Fノードが使用者が規定した三次元空間内に完
全に存在している場合について、PAINT信号を出力す
る。この空間を異なった方法で定義することにより、使
用者は、物体の特定の視野角(または各視野角)につい
て通常は隠れて見えない領域を観察することができる。
第14図(A)に、三次元空間が絵画的に描かれている。
この三次元空間の一部分は、関心領域から除外されてい
る。計算処理を単純化するために、当該実施例によれ
ば、操作者が互いに平行な一対の切断面(cut plane)1
20,122を定義することにより、一連の関心空間32を規定
することができるように構成されている。これらの切断
面120,122は、空間32について任意の包囲領域をもつこ
とができ、唯一の拘束条件は、これらの面が互いに平行
に設定されることだけである。
空間32の表示される部分は、上記切断面120,122間の空
間領域の内側(または使用者の選択に応じて該切断面で
挟まれた空間領域の外側)に存在する部分である。図示
の図形について説明すれば、ノード7、ノード2、ノー
ド0(図示せず)は、表示された切断面120,122によっ
て規定された空間内に全て位置しており、前述したよう
に処理されるのである。同様にして、もしも切断面120,
122が、元のノード32のいくつかの『グランドチルドレ
ン』ノードが表示領域の完全な外側に存在するように設
定され(例えば、表示されるべき領域が上記切断面間の
空間の外側に存在しているようなノード部分が上述した
表示領域として定義される場合には、ノード7、ノード
2、ノード0が相当である)、これらのノードは、(た
とえFノードであったとしても)ペイント処理に用いら
れることはないから、直ちに除外され、交差または包囲
に関するテストには一切関与されない。
上記切断面120,122の一方と交差しているノードは、前
述したPノードについての概念に幾分似通っている。例
えば、元のノード32の『チルドレン』ノード3は一方の
切断面120と交差しており、従って、そのいくつかの
『チルドレン』ノードが表示領域内に存在しており、ま
た他のものは上記領域の外側に位置している。丁度、P
ノードがその『グランドチルドレン』ノードのどれがF
ノードとなっているかを決定するために細分割されなけ
ればならないように、切断面120,122と交差しているノ
ードは、更に細分割され、その全ての『グランドチルド
レン』に相当する全てのFノード(これらのノードは上
記切断面120,122により規定されているところの表示領
域内に存在している)を配置する。従って、『チルドレ
ン』ノードのうちの『チルドレン』ノード7′,6′,
5′,4′が切断面120,122により規定された表示空間内に
含まれており、前述したような処理方法に従って処理さ
れることになる。しかしながら、『チルドレン』ノード
3のうちノード3′,2′,1′(そして図示していないが
ノード0′も含まれる)が切断面120と順次交差してい
るから、これについても更に細分割する必要がある。
まず最初に、元のノード32の『グランドチルドレン』ノ
ードのうちのどのノードが上記切断面120,122によって
規定される表示領域内に配置されているかを決定するた
めに元のノード32を分割し、オクトツリー構造をトリミ
ングしてそのように配置していない全てのノードを除外
し、そして変形されたオクトツリー構造に関して既に説
明したようなアルゴリズムを実行するように構成するこ
とは勿論可能であるが、そのような方法は、切断面120,
122による種々の異なった領域定義方法のそれぞれにつ
いて、別個のオクトツリー構造を必要とする。本発明の
当該実施例は、唯1回だけオクトツリー構造をトラバー
ス処理し、1つのノードがPノードかまたはFノードで
あって切断面と交差していれば、そのノードを細分割す
る。PAINT信号は、上述した条件が全て満たされ、かつ
テストしたにあるFノードが上述した2つの切断面120,
122により規定される表示領域内に完全に含まれている
場合に限って出力される。
第14図(B)に、上記切断面を用いたテスト(“カット
プレーンテスト”と称する)の幾何的図形を示してお
り、このカットプレーンテストは、切断面120,122によ
って挟まれた表示領域内にノードが含まれているか否か
を決定するためのものである。テスト下のノードは、切
断面119(ページ面とも呼ばれる)に直交する二次元の
カットプレーンテスト面上に映し出され、ノードプロジ
ェクション124を得る。このような処理方法は上述した
ビュープレーン(view plane)上でのノードのプロジェ
クション方法と極めて類似しているが、本発明のこの実
施例においては、テストプレーンとビュープレーンとは
同一物ではない。なぜなら、切断面、即ちカットプレー
ンは、ビュープレーンに対して任意に方位指定されるこ
とができるからである。
両切断面120,122に直交するようにk軸が設定される。
切断面120(ここでは基準切断面として機能する)はk
=0に位置し、切断面122はk=LDIAGに位置している。
当該実施例によれば、使用者はテストプレーン上のk軸
の方向、点126(k=0)の3−Dでの位置、切断面12
0,122間の距離LDIAG、及び表示されるべき領域が切断面
の内側(即ち、0≦k≦LDIAG)であるかまたは同切断
面の内側(即ち、k≦0またはk≧LDIAGであるかを指
定することにより、切断面120,122の方位を決定するよ
うに構成される。当業者ならば容易に理解されるよう
に、テストプレーン119上にノードを映し出すことは実
際には必要でなく、実際にはノードをk軸ライン(面で
はなく線)上に映し出すから、三次元物体は実際には一
次元で映し出され距離を決定する。
最小値と最大値のk座標を有するノードプロジェンショ
ン124の2個の頂点128a,128bを分離することは必要であ
る。このノードプロジェクション124の最左端に位置す
る頂点128a(即ち、最小のk座標値をもっている)の該
k座標値を“NPK"と定義する。同様にして、ノードプロ
ジェクション124の最右端に位置する頂点128b(即ち、
k座標値は最大となっている)の該k座標値を“NPK+K
DIAG"と定義する。
表示領域が上記切断面120,122の内側の領域であるよう
に指定されたとすると、ノードプロジェクション124
は、 NPK>0かつ NPK+KDIAG<LDIAG の場合に、表示領域内に完全に含まれることになる。こ
れらの式は、最左端の触点128aが基準切断面120の右側
にあり、かつ最右端の頂点128bが切断面122の左側に位
置しているときに、満たされることになる。従って、第
14図(B)に示されたノードプロジェクション124はこ
れらの条件を満たしている。
もし表示されるべき領域が、上記切断面120,122の外側
の領域であるように選択されれば、該表示領域内に位置
しているノードは、 NPK>LDIAGまたは NPK+KDIAG<0 の何れかの式を満たすことになる。これらの式は、最左
端の頂点128aが切断面122の右側にあり、または最右端
の頂点128bが基準切断面120の左側に位置しているとき
に、満たされることになる。
上述した2つの条件の何れも満たされない場合には、テ
スト対象たるノードプロジェクションは表示領域の内側
及び外側のどちらにも完全に含まれるものはなく、切断
面120,122の一方またはその両方と交差していることを
示している。上述したように、切断面と交差しているノ
ードは、その『グランドチルドレン』ノードのうちのど
れが表示領域の内側にあり、どれが表示領域の外側にあ
るかを決めるために、更に細分割される。おそらく直ち
に明らかとはならないかもしれないが、1つの切断面に
より規定されている物体のエッジに添った全てのノード
(即ち、第14図(A)に示す表示領域を境界づけるとこ
ろの1つの切断面によって規定されている平坦表面に添
った全てのノード)が、一般的には、解像度条件によっ
て許される細分割の最下レベルに相当する。
三次元空間中での表示領域を規定するために一対の互い
に平行な平面を用いることは有用であり、計算処理量を
低減することができるが、その反面、常に平面的な断面
状態しか表示できないという欠点がある。このようなや
りかたは、平面的断面状態が従来タイプの断面形状のも
のであるようなCAD/CAMシステム等の多くの技術分野へ
の応用に際しては、非常に有用である。しかしながら、
使用者レベルで表示領域をより複雑な形状に設定できる
ような余地を残しておくことは望ましい。
断面表示のために使用される複雑な形状の領域を規定す
る使用者のキャパシティを拡張するための1つの方法
は、複数対の平行切断面を夫々独立して設定することで
ある。これらの全ての切断面対によって規定される表示
領域内に含まれるノードだけが、ウインドゥのペイント
処理が許される。同様に、エンプティ状態ではなくて多
数の切断面の何れかにと交差しているものがあれば、そ
のノードを更に細分割する。使用者に3組の切断面対を
独立的に設定するキャパシティを設けて(そして同時に
表示領域が各切断面対の内側か外側を夫々指定して)や
れば、更に複雑な断面表示をおこなうことができる。二
次方程式(またはより高次の方程式)を用いることによ
り、たとえノードが表示領域内に存在するか否かを決定
するための計算処理が更に複雑化されるものの、上述の
ような領域を規定することができることは容易に理解さ
れよう。
実施例の機能的な説明 本発明の好ましい一実施例を機能的に示すブロック図を
第15図に示す。本実施例の機能は、データ収集(data a
quisition)ブロック129、オクトリーデータ変換(octr
ee data conversion)ブロック130、オクトリーコード
化(オクトリーエンコードされた)オブジェクト記憶
(octree encoded object storage)ブロック140、対ユ
ーザ対話(interaction with user)ブロック150、初期
化コントローラ(initializing controller)ブロック1
60、イメージディスプレイプロセッサ(image display
processor)ブロック152、およびイメージディスプレイ
(image display)ブロック154からなる7つのブロック
で構成されている。
データ収集ブロック129は、応用に応じたいくつかの方
法により適宜実施される。例えば、もしもこの発明が、
医用画像生成等のように、物質界に存在するオブジェク
ト(すなわち物体)の像の生成に適用されるならば、デ
ータ収集ブロック129は、CT(computed tomography)ス
キャナによるオブジェクトの走査と、位置および密度情
報を与える複数のセルにより各スライスが形成される複
数のデータスライス(断層面データ)の生成とを含んで
いる。
もしも、この発明の実施例がCAD/CAM(computer-aided
designおよびcomputer-aided manufacturing)の応用に
使用されるならば、データ収集ブロック129は、位置、
密度、形、その他に従って三次元空間内で面あるいは立
体をユーザが数学的に定義することを許容する対話型デ
ィジタル計算機において実行されるソフトウェアプログ
ラムからなる。当業者は、それによって入力され且つ表
わされるであろうオブジェクトをデータが定義する異な
る手法による広範囲の変形を直ちに理解するであろう。
オクトリーデータ変換ブロック130は、入力としてデー
タ収集ブロック129からのデータを受け、オクトリーコ
ード化オブジェクト記憶ブロック140に格納される出力
として(第2図に示された)オクトリー構造(octree s
tructure)を生成する。該オクトリーデータ変換ブロッ
ク130は、生データを、各々が対応付けられた固有の値
E、PまたはFを有するオブジェクトの節(node)の階
層構造に構成しなければならない。また、該オクトリー
データ変換ブロック130は、オクトリー構造における枝
(branch)をターミネイトするエンプティ(EMPTY〜
空)(「葉(leaf)」)節を生成することによりデータ
収集ブロック129からのデータによって指定されない三
次元領域の範囲を定義しなければならない。最終的に、
このオクトリーデータ変換ブロック130は、(最初に変
換処理を行なうとき、あるいは記憶されたオクトリーを
辿る第2パスの間に、)フル(FULL〜満たされた)であ
る8つのチャイルド節のペアレントにはフル、エンプテ
ィである8つのチルドレン節のペアレントにはフル、そ
してフルである子孫(ディセンデント)およびエンプテ
ィである子孫を有する節にはパーシャル(PARTIAL〜部
分的)をそれぞれマークし(印し)て生成オクトリーを
形成する。
この発明の実施例においては、オクトリーデータ変換ブ
ロック130は、ディジタルコンピュータ上で実行される
ソフトウェアプログラムによって実施される。この実施
例のためのオクトリーデータ変換ブロック130について
の詳細は間もなく後述する。
オクトリーコード化オブジェクト記憶ブロック140は、
オクトリーデータ変換ブロック130で生成されたオクト
リー構造を格納し、且つ記憶されたオクトリー構造をイ
メージディスプレイプロセッサブロック152がランダム
にアクセスすることを許容するためのものである。該オ
クトリーコード化オブジェクト記憶ブロック140は、大
容量の半導体ランダムアクセスメモリ(RAM)または情
報の高速ランダムアクセスを許容する他の記憶装置によ
り適宜実施され得る。
対ユーザ対話ブロック150は、視角を選択すること(す
なわち、視野面に関して三次元オブジェクトを回転およ
び移動させること)、表示される像の尺度を選択するこ
と、表示される像の彩色および濃淡を選択すること、断
面表示を生成するための切断面を定義すること、像がい
つ表示されるかを選択すること、その他のためにユーザ
が初期化コントローラブロック160を介してイメージデ
ィスプレイプロセッサブロック152と対話することを可
能としている。該対ユーザ対話ブロック150は、この発
明の実施例においては英数字(alphanumeric)キーボー
ド(好ましくは、ディジタルエクイップメント社製VT−
100)、トラックボール(好ましくは、メジャメントシ
ステムズ社製636−G893型)、およびビットパット(好
ましくは、サマグラフィックス社製BP−10型)により実
施される。
初期化コントローラブロック160は、対ユーザ対話ブロ
ック150からの情報を受け、イメージディスプレイプロ
セッサブロック152およびイメージディスプレイブロッ
ク154に対する初期化値を発生する。この発明の実施例
においては、該初期化コントローラブロック160は、対
ユーザ対話ブロック150により設定されたいかなる指定
パラメータの組合せ(すなわち、いかなる指定画像)に
対しても1組の初期化値を発生する。初期化コントロー
ラブロック160は、モトローラ社製の68000マイクロプロ
セッサをベースとしたコンピュータ上で適宜実行される
ソフトウェアにより実施される。初期化コントローラブ
ロック160の動作は後に詳細に論じられる。
イメージディスプレイプロセッサブロック152は、オク
トリーコード化オブジェクト記憶ブロック140に格納さ
れたオクトリーコード化情報を、初期化コントローラブ
ロック160により発生されたユーザ定義パラメータに従
ってアクセスし、表示されるべきピクセル(画素)のア
ドレスおよびそれらのピクセル(ピクセルは、ドットマ
トリクス表示画面における1ドットに対応する表示の単
位である)に対する彩色または濃淡からなるイメージデ
ィスプレイブロック154に対する出力を生成する。該イ
メージディスプレイプロセッサブロック152のこの発明
の実施例においてハードワイアドディジタルロジックに
よって実施される構造および動作は、後に詳述される。
イメージディスプレイブロック154は、イメージディス
プレイプロセッサ152からの出力を受け、該イメージデ
ィスプレイプロセッサ152で生成されたピクセル情報を
(半導体ダイナミックランダムアクセスメモリ、好まし
くはアディッジ社製RDS−3000フレームバッファに)格
納し、そして完成された像を(好ましくは、1024本の走
査線を有する高解像度CRT(cathode raytube)を用いた
ビデオモニタに)表示する。
オクトリーデータ変換 第16図には、この発明の現在望ましい典型的な実施例に
用いられる、第15図に示されるデータ収集ブロック129
で収集された三次元オブジェクトを定義する生データを
第15図のオクトリーコード化記憶ブロック140に格納さ
れるオクトリー構造に変換するためのプロセス(処理)
の図解例が示されている。
この実施例におけるオクトリーデータ変換ブロック130
は、モトローラ社製の68000マイクロコンピュータ上で
実行されるソフトウェアプログラムによって実施され
る。このソフトウェアの写しはこの文書に付録Aとして
付されている。
第16図には、各々4行4列の配列を構成するエレメント
からなる4つの配列132a〜132dが示されている。該エレ
メントの各々は、その特定のエレメントの密度を示すグ
レイスケールイメージ値に対応付けられている。配列13
2a〜132dは、医用CT(computed tomography)スキャナ
により普通に生成されるタイプの情報である。そのよう
な在来のスキャナは、スキャンされるオブジェクトの複
数のスライスを生成し、その各々は位置によってソート
されたエレメントの配列からなっている。各配列におけ
るエレメントの各々は、当該エレメントに対応するオブ
ジェクトの空間の密度の情報に対応付けられている。そ
のような情報は、通常の方法で生成され、且つ磁気ディ
スクまたはテープのような大容量情報記憶装置に格納さ
れる。
配列132a〜132dの各々は、実際に、表示されるべきオブ
ジェクトの種々の深さにおける該オブジェクト内の厚み
の限定されたしばしば不連続なスライスを示す平板上の
像であり、これらは、この実施例では、三次元的に近似
される、均一な厚みのオブジェクトの隣接するスライス
群として扱われ、各スライスの各エレメントは均一の密
度を有している(均一の厚さのスライスとしてのこの配
列の表現は線によって示される)。いくらかのケースに
おいては、画質を向上させるため、付加的なスライスが
原スライス間に補間により生成される。
一般にCTスキャナは非常に多量の情報を生成するので、
この実施例では一度に4スライスの生データについての
み操作する。これら4スライスのデータは、上述した大
容量情報記憶装置から読み出され、ランダムアクセスメ
モリに格納される。そして、該オクトリーデータ変換ブ
ロック130は、各スライスを4×4の配列(各々16のエ
レメントからなる)に分割し、1つが4スライスの各々
からなる4つの4×4配列を一度に操作する。第16図に
おいては、配列132aを求める元となるスライスが最底部
のスライスとなり、配列132b、132cおよび132dを求める
元となるスライスがこの最底部のスライスの上に(順
次)積層される。このように、配列132a〜132dは、それ
らが作像されるべきオブジェクトに存在するのと同様に
逐次積層され、そしてオブジェクトを平面図として観察
する観察者のために各スライスの二次元範囲を定義す
る。
当業者によれば、いかなる在来のスキャナまたは他のデ
ータ収集装置は限られた分解能しか有していないことは
理解されるであろう。そして、配列132a〜132dの各々
は、実際、オブジェクトの小さな部分についての均一の
平均密度値である。与えられたエレメントに対応する実
際の部分は必ずしも(そして一般的なケースにおいては
ほとんど)均一の密度を有してはいない。この分解能に
おける制限によって、生成されるオクトリー構造は無限
数のレベルは持たないが、むしろ任意数のレベルを持
つ。この発明の実施例においては、現在のハードウェア
の制限による16に対して概して8〜10のレベルが用いら
れる。しかし、もちろん、生成される像の解像度と、像
を生成するのに要する、すなわちデータ収集ブロック12
9(およびイメージディスプレイプロセッサブロック152
およびイメージディスプレイブロック154の分解能)の
分解能によってのみ制限される、時間およびハードウェ
アとの間のトレードオフ(取捨選択)に応じたいかなる
数のオクトリーレベルも使用される。
配列132a〜132dに示されるエレメントは、オクトリーの
基底レベル(例えば、レベル8)として表現される部分
を構成する。故に、第15図にオクトリーデータ変換ブロ
ック130は、最下層から最上層へオクトリー構造を生成
しなければならない(もしも、作像されるべき三次元オ
ブジェクトが、CADの応用において用いるために入力さ
れる1組の方程式のように、良好に定義されたパラメー
タの組によって表現されているならば、オクトリー構造
は適切に最上層から最下層へ生成され得る。当業者なら
ば、解析的に定義されたオブジェクトからオクトリーを
生成するためのアルゴリズムを容易に設計し得る。) オクトリーデータ変換ブロック130が行なわなければな
らない第1のステップは、配列132a〜132d内のエレメン
トの各々の密度情報を半導体RAM内に小容量で記憶させ
るのにふさわしい2進値に変換することである。既に述
べたように、オクトリー構造に記憶されている各節は、
エンプティ、パーシャルまたはフルの3つの特性値の1
つを持つことができる。その最も単純化されたレベルに
おいて、オクトリーデータ変換ブロック130は、配列132
a〜132dのエレメントの各々がエンプティであるかフル
であるかを決定する(これらエレメントのいずれもパー
シャルをマークされることはないことを忘れてはならな
い。何故ならば、そのようにマークすることは、その節
がいくつかのフルの子孫といくつかのエンプティの子孫
を有していることを示しているからであり、また、上記
エレメントはオクトリーの基底レベルにあるので子孫を
持たないからである)。
もちろん、単にそれらがフルであるかエンプティである
かということ以外のこれらの節の各々に関する情報を記
憶させることが望ましい。例えば、生成された像におい
て異なる色によって異なる密度を表現することが望まし
い(例えば、医用イメージングにおいて骨と肉との間の
識別のため)。オクトリー構造それ自体の中にE、Pお
よびFの特性情報と共にそのような補助的な情報を記憶
させることは可能である。実際、オクトリー構造の節毎
に、それぞれが三次元オブジェクトの異なる物理的なま
たはその他の特性の特性値を表現する複数のフィールド
を持ち得ることは当業者においては自明のことであろ
う。しかしながら、この発明の実施例は、各節にたった
2ビットの特性値を付与して、当該節がエンプティ(0
0)、フル(11)またはパーシャル(01)のいずれであ
るかのみを表わす。(この最小の表現でさえも、三次元
オブジェクトの第2の物理特性あるいは三次元領域に含
まれる異なる分離したオブジェクト間の識別のためのフ
ルの特性値を表わすもう1つのビットの組合せ(10)が
存在することに注意すべきである。) この発明の実施例は、オクトリーの各節に関する付加的
な特性情報を格納するため、節が書込まれる前にイメー
ジディスプレイブロック154によって直接アクセスされ
得る補助的な「特性メモリ」(図示せず)を使用する。
該付加的情報は、各節(に対応するオブジェクトのノー
ド[node]〜すなわちオクトリーの節[node]に対応す
る部分)の実際の密度、各節の(レッド、グリーンおよ
びブルーの各々の輝度にエンコードされた)色、各節の
(例えば、オブジェクトの面に接し且つノードを通る面
の観察者の「背後」に位置する仮想光源に関しての方
向、観察者からのノードの距離、あるいは他の要素によ
り決定される)輝度または一層リアルな像の生成を可能
としあるいはオブジェクトに関する他の情報を提供する
ための各節に結付けられた他の特性を含む。
配列132a〜132dのエレメントの各々の密度の値がE(ユ
ーザにより定義された予定レベルより上のグレイスケー
ルに対応する)かF(ユーザにより定義された予定レベ
ルより下のグレイスケールに対応する)かに変換される
と、これらのエレメントのペアレントが生成される。こ
こで、単純なスレッショルドによる決定よりも一層複雑
なE/Fの決定方法が用いられ得ることに注意すべきであ
る。オクトリー構造において、8の隣接するレベルの8
つの節がまとめられて1つのファミリーにグループ化さ
れ、該8つのチャイルドのグループからの単一のペアレ
ント節が生成される。4組の8つの子の8つの子の4つ
のファミリーへのグループ化は、構造134aおよび134bの
各々によって表示されている。
オクトリーデータ変換ブロックは、4×4配列132aの上
に4×4配列132bを積層して4×4×2配列134aを生成
する。こうして、該4×4×2配列134aは、8つのレベ
ル8の節の4つのファミリーを含む。ほぼ同様に、4×
4のレベル8の配列132cの上に4×4のレベル8の配列
132dを積層することにより4×4×2配列134bが生成さ
れる。
一旦、8つのレベル8の節がまとめられてグループ化さ
れると、それら8つの節のペアレントの特性値が、該8
つの節すべての特性値を調べることによって決定され
る。もしも、8つのレベル8の節の全てがEであるなら
ば、ペアレントもEとマークされる。同様に、もしも、
8つのレベル8の節の全てがFであるならば、ペアレン
トもFとマークされる。最終的に、いくつかのレベル8
の節がEで且ついくつかのレベル8の節がFであるなら
ば、その8つの節のペアレントはPとマークされるはず
である。言替えれば、その8つのチャイルド節と同じ節
の値および特性情報が与えられたあるペアレント節の8
つのチャイルド節は特性情報が等しいはずであり、そう
でなければ、ペアレント節はPなる値が与えられてい
る。
こうして、4×4×2配列134aおよび134bの各々は、32
のレベル8の節のグループだけでなく、4つのレベル7
のペアレント節のグループからなる構成を表わす。4つ
のレベル8の節のこれら2つのグループは、一方の上に
他方が積層されて8つのファミリーからなるレベル7の
節136を形成し、そしてそれは単一のレベル6の節を形
成するためさらに組合わされる。
今、レベル7の節の各々はEかFかPかにマークされ、
レベル6の節の特性は、そのチルドレンの特性により直
接的に決定される。上述のように、8つにグループ化さ
れたレベル7の節の全てがEならば、レベル6のペアレ
ント節はEとマークされる。同様に、もしもレベル7の
チルドレンが全てFならば、レベル6のペアレント節は
Fとマークされる(特性情報は上述と同様に操作され
る)。そうでなければ、レベル6のペアレントは(その
いくつかの子孫、必ずしもチルドレンである必要はな
い、がEであって且つそのいくつかの子孫、必ずしもチ
ルドレンである必要はない、がFであること、例えば、
レベル7のチルドレンのいくつかがE、レベル7のチル
ドレンのいくつかがF、そしてレベル7のチルドレンの
いくつかがPであることを示す)Pとマークされる。
この発明の実施例により生成されるオクトリー構造が
「抽出(trim)される」ことが想起されるであろう。そ
して、それはFまたはEの子孫は構造に含まれないこと
を意味している。したがって、レベル7の節がPとマー
クされたときにのみ、その8つのレベル8のチルドレン
節がオクトリーに格納される必要がある。
同様に、8つのレベル7のチルドレン節は、それらのレ
ベル6のペアレントがPとマークされたときにオクトリ
ー構造に格納される必要があるだけである。オクトリー
データ変換ブロック8つのチルドレン節のファミリーか
らなる「節パケット(node packet)を出力として発生
する。それは、節パケットのペアレント節がPとマーク
されたならば、そのような節パケットを生成するだけに
過ぎない。そうでなければ、節パケットは生成せず、そ
の代わりとしてペアレント節の特性値を記憶し、そして
次のレベルの節(すなわち、そのペアレント)を生成す
るのに用いる。
オクトリーデータ変換ブロック130が節パケットを生成
する度に、ダイレクトメモリアクセス(DMA)技術を適
宜用いて、該節パケットをオクトリーコード化オブジェ
クト記憶ブロック140(第15図に示されている)に格納
する。加えて、それはその時作成されたペアレント節の
特性値に節パケットが生成されたか否かを保持させる。
このペアレント節の特性値は、後にオクトリーさらに節
パケットの一層高いレベルさえも作成するため生成され
るオクトリーにおける同レベルの隣接する節を組合わせ
るのに用いられる。第16図は、レベル8、7および6の
節の生成についてのみ示しているが、それらのレベルを
生成するのに使用されるアルゴリズムは、レベル0すな
わち根節(root node)に至るまで再帰的に為遂げ得
る。
オクトリーデータ変換ブロック130のランダムアクセス
メモリに格納された生データの4つのスライスにおける
4×4配列の各々は、上述したように、生データの新た
な4つのスライスが大容量情報記憶装置から読み出され
る前に完全に処理される。この処理は、再帰的に行なわ
れるので、オクトリーのより高いレベルが逐次生成され
る。オクトリー構造を完成させるために、オクトリーデ
ータ変換ブロック130が空データ(empty data)のスラ
イスを生成する必要がある(すなわち、大容量情報記憶
装置に格納されたスライスの数が最低位のトリーレベル
をnとしたときの2のn乗に等しくない場合)。同様
に、データ収集ブロック129によって生成されたデータ
のフォーマットに依存して、各スライスにおけるエレメ
ントの行の数が列の数に等しくなければ、あるいは行と
列の数が4で割切れないならば、オクトリーデータ変換
ブロック130が、エンプティエレメントを大容量記憶装
置から得た各スライスに加える必要がある。最終的に異
なるデータ収集装置の変形の両立性を与え、あるいはユ
ーザがオクトリー構造のいくらかを変形しあるいは定義
することを可能とするため、生データのさらなる処理を
提供することが望ましい。
与えられた節の子孫がその節に隣接して(7から0への
順序に従ってシーケンシャルに)格納されるシーケンシ
ャル記憶(ヒープ記憶)フォーマットが、オクトリー構
造の深さ優先のトラバースのシーケンシャル性のために
オクトリーコード化オブジェクト記憶ブロック140に使
用され得る。このように、オクトリーをトラバースする
ために、記憶ロケーションは単にシーケンシャルに読出
し得る。この方法は、記憶空間の最も効率的な使用を与
えるが、例えば、P節がどのフルでないオーバレイウイ
ンドウも横切らないようにする場合に、内部サブツリー
(subtree)をスキップする手法を提供しない。シーケ
ンシャルオクトリーラバースは、通常ツリー(tree)の
先端から始まり、ツリー全体をトラバースする。もしも
ツリー構造を変更する(例えば、他の三次元オブジェク
トを領域内に挿入する)を必要が生じたならば、全オク
トリーは書換えられる。より重要なことは、オクトリー
構造は、トラバースのシーケンスに従って変化され、視
角が新たな観察オクタントに入る毎に書換えられ、ある
いはその代わりに、各異なるトラバースのシーケンスに
対して一つのオクトリーの複合コピーが生成されるはず
である。
オクトリーを格納するその他の可能な方法は、全体的ラ
ンダムアクセス結合リスト型記憶方式(totally random
access liked-list type storage method)を使用する
ことによるものである。すなわち、与えられた節は、一
方が節の特性値(E、PまたはF)を含み且つ他方がそ
の8つのチルドレン(シーケンシャルに格納される)を
有するブロックのメモラにおける絶対アドレスを含む、
2つのフィールドと共に格納される。この記憶方式は、
おそらく最も汎用的である。何故なら、与えられた「節
パケット」(8つの子のファミリー)がメモリのどこに
でも格納され、そして該節パケットのペアレントは節パ
ケットのロケーションを直接示すことができる。与えら
れた節の祖先は、通常、節それ自身より前にアクセスさ
れるので、節の絶対アドレスに到達するためにその節の
全ての祖先がアクセスされなければならないという事実
は、いかなる不便も呈することはない。与えられたペア
レント節は、その8つのチルドレンのファミリーの絶対
アドレスを「知っている」ので、8つのチルドレンは、
(それらが1つのブロック内に一緒に格納される限り)
メモリ内のどこにでも格納され得る。節は、絶対アドレ
スを含むフィールドを単に操作することにより、オクト
リーに加算しあるいは減算し得る。その上、同じオクト
リーが、選択された視角のためのトラバースのシーケン
スに従って異なる順序でアクセスされ得る。
この方法の不利なところは、相当大きな記憶容量を有す
るメモリのために、絶対アドレスを含む各フィールド
が、(32またはそれ以上の)多数ビットの情報を格納す
ることが要求されることである。オクトリーコード化記
憶ブロック104は、非常に大きなメモリである必要があ
り、その大部分が単にアドレスポインタを格納するため
に使用される。オクトリーは、アクセス時間を短縮する
ためにむしろ(半導体メモリのような)ランダムアクセ
スメモリに格納されるので、該メモリが非常に高価にな
る。
第17図に示すように、この発明の好ましい典型的な実施
例は、関連性のあるアドレスフォーマット即ち上述した
洗練されたランダム・アクセス・リンクリスト方法を用
いることである。8つのチルドレンノードから成る族
は、メモリにノードパッケットと呼ばれるユニットとし
て共に、常時記憶されている。各ノードは3つの固有値
(E,P,又はF)の一つを採ることで憶い起こされる。こ
のようにして、各ノードの固有値は上述したようにただ
2つのビットにエンコードされる。8つのチルドレンノ
ードより成る全ノードパッケットの固有値は夫々2ビッ
トの8フィード、即ち全体で16ビット(2バイド)にス
トアされる。前記ノードパッケットの各チルドレンノー
ドは、その8つのチルドレンノードを含んだブロックを
指し示す必要がある。このように1個のノードパッケッ
トは、個々のチルドレンノード毎に多くても8つのグラ
ンドチルドレンノードパッケットを指し示す必要があ
り、それらの全ては連続して1個の“ノードパッケット
ブロック”にストアされる。オクトリー(octree)構造
は刈り込まれるので一部のノード(全部もしくは空ノー
ドではなく)のチルドレンはストアされ、所定のノード
パッケット内の部分的なチルドレンノードの数に依存す
る1から8までのグランドチルドレンノードパッケット
を含むブロックは可変長である。アドレス指定を簡単に
するために、各ノードパッケットはその自己アドレスか
ら各ノードアドレスが含んでいるノードのチルドレンノ
ードパッケットを含むブロックのスタートアドレスへ前
記メモリオフセットと共にストアされる。前記ブロック
の長さと前記ブロック内の各独立したノードパッケット
のアドレスの長さは簡単に知られるので、所定のノード
パッケット内のPチルドレンノードの数から直ちに確認
される。
第17図に示すように、オクトリー構造の8レベルでnノ
ードを含む任意ノードパッケット138はメモリの位置X
における32ビットワードにストアされる。
ノードパッケット138は2つのハーフワードフィールド
を含む1つのワードにストアされる。最小桁16ビットは
8つの2−ビットフィールドを占め、2ビットフィール
ドの夫々は、ノードパッケットにおける8チルドレンノ
ードより成るファミリーの一つの固有値(E,PorF)を含
んでいる。
第2のハーフワードフィールドはアドレスオフセット、
オフセット(OFFSETA)を含み、このオフセットは、ノ
ードパッケット138のチルドレンノードを含むノードパ
ッケットのブロックを指示する。ノードパッケット138
における8チルドレンノードのうち3チルドレンノード
のみにPのマークが付され、これらのチルドレンノード
を表わすノードパケットのブロックは3ノードパケット
のみで構成され、アドレス位置X+オフセット(OFFSET
A)において最初の部分が見出される。
ブロック139は、ノードパケット140,142及び144を含
み、これらノードパケットの夫々は、ノードパケット13
8におけるノードのうちの一つのチルドレンノードを含
んでいる。ブロック139は、アドレス位置X+オフセッ
ト(OFFSETA)において最初の部分が記憶される。ノー
ドパケット140,142及び144の夫々の構造は、ノードパケ
ット138と同じである。ノードパケット140,142及び144
の夫々は、それら自身が含むチルドレンノードを有する
複数のノードパケットで構成される1個のブロックを同
様に指示しなければならない。
オフセット(OFFSETA)はノードパケット138のアドレス
フィールドにおいてブロック139の最初を指示するのみ
である。このようにブロック139のノードパケット140は
アドレス位置X+オフセット(OFFSETA)+0を有し、
ブロック139のノードパケット142はアドレス位置X+オ
フセット(OFFSETA)+1を占有し、ブロック139のノー
ドパケット144はアドレス位置X+オフセット(OFFSET
A)+2を占有する。
所定のノードパケットのアドレスは、ベースアドレス
(X)と、そのノードパケットを含むブロックの最初を
位置付ける前記ベースアドレスからのオフセット及び最
後にそのブロック内のノードパケットの位置を示す第2
のオフセットより構成されるとみなすことができる。こ
の第2のオフセットは、ペアレントノードパケットに記
憶されたときに、所定のノードパケットのペアレントノ
ードの前に生じるPノードの数を単にカウントすること
によって簡単に計算されることができる。好ましい実施
例において、チルドレンノードの固有値がペアレントノ
ードパケットの固有値ハーフワードフィールドの最右端
の位置にストアされるようなチルドレンノードについて
の情報を含むチルドレンノードパケットはペアレントノ
ードパケットが指示するブロックの最上段に記憶され
る。このようにノードパケット138のチルドレンノード1
58aはブロック139のノードパケット140にストアされ
る。同様にノードパケット138のチルドレンノード158b
はブロック13aのノードブロックにストアされる。
ノードパケット138のアドレス位置がXであるとすると
ノードパケット138に含まれるチルドレンノードを表わ
すノードパケットのブロックのアドレスは既に述べたよ
うに位置X+オフセット(OFFSETA)として求められ
る。ノードパケット138に含まれるノードはノード158a
から始めて右から左へ走査される。ノードパケット138
におけるノード158a,158b及び158cのみが、マークPを
付されているノードであるという理由で子孫を有するこ
とになる。チルドレンノード158aを含むノードパケット
のアドレスはX+オフセット(OFFSETA)+0として求
められる(第2のオフセットはノード158aが右から左へ
走査される時にノードパケット138に出合う最初のPノ
ードであるという理由で0に等しい)。ノードパケット
142(チルドレンノード158bを含む)のアドレス位置X
+オフセット(OFFSETA)+1として求められる(第2
のオフセットの値は、ノード158bが右から左へ走査され
るときにノードパケット138に出合う第2のPノードで
あるという理由で1に等しい)。ノードパケット144
(ノードパケット138のチルドレンノード158cを含
む。)のアドレスはアドレス位置X+オフセット(OFFS
ETA)+2として求められる(第2のオフセットの値は
ノード158cが右から左へ走査されるときにノードパケッ
ト138に出合う第3のPノードであるという理由で2に
等しい)。
ブロック139のノードパケット144に含まれたノードはこ
れらのノードがマークPを有さないという理由からグラ
ンドチルドレンノードを持たない。しかしながら、ノー
ドパケット140と142におけるノードのいくつかはグラン
ドチルドレンノードを持ち、更に分けられねばならな
い。ノードパケット140におけるチルドレンノードを含
むノードパケットブロック145は記憶位置X+オフセッ
ト(OFFSETA)+オフセット(OFFSETB)から開始される
(現実の計算では3つのオフセットはブロックアドレス
として求められる一方で、この発明の好ましい実施例で
はベースレジスタ値XをX=X+OFFSETAとなるよう簡
単に更新し、ノードパケットの所定のブロックのアドレ
スを求めるのに簡単な一回の加算が要求されるに過ぎな
いことに留意されるべきである。) ブロック139のノードパケット140は4つのマークPのノ
ードを含み、ブロック145は4つのノードパケットを含
んでいて、それらの一つはPノードの一つ毎に8つのチ
ルドレンをストアしている。前述したように、ブロック
145内のこれらの4つのノードパケットの夫々のオフセ
ットはノードパケット140が右から左へ走査されるとき
ノードパケット140内でそのペアレントノードの発生に
従って求められる。従って、例えば、ブロック145(ノ
ードパケット140のノード159cに対応する8つのチルド
レンノードをストアしている)内のノードパケット150
はアドレス位置X+オフセット(OFFSETA)+オフセッ
ト(OFFSETB)+2の記憶位置を有している(というの
はブロック140内のペアレントノード159cはノードパケ
ット140が右から左へ走査される時に出合う第3のPノ
ードであるからである)。ノードパケット146,148及び1
52のアドレスは同様にして求められる。
ブロック139のノードパケット142にストアされたチルド
レンノードをストアするノードパケットは分離されてい
るブロック153に移される。ブロック153のアドレスはX
+オフセット(OFFSETA)+オフセット(OFFSETC)とし
て求められる。ブロック153は2つのノードパケット154
及び156のみを含む。その理由はノードパケット142には
マークPのノードは2つのみであるからであるというこ
とに留意すべきである。ブロック153内のノードパケッ
ト154及び156の夫々のアドレスは上述したようにして求
められる。
ブロック145内のノードパケット150は2つのPノードを
含み、2つのノードパケットを含む図示されていない他
のブロックを指示する。このブロックは記憶位置X+オ
フセット(OFFSETA)+オフセット(OFFSETB)+オフセ
ット(OFFSETG)においてストアが開始される。同様
に、ブロック153内のノードパケット156はマークPのノ
ードを含み、その結果、ノードパケット156は記憶位置
X+オフセット(OFFSETA)+オフセット(OFFSETC)+
オフセット(OFFSETJ)においてストアされた1つのノ
ードパケットより成る図示しない他のブロックを指示す
る。
上述したように、所定のノードパケットはもしPノード
を含んでいなければ、ノードパケットのブロックを指示
することはない。このように意味のあるアドレスオフセ
ットはそのようなノードパケットにはストアされない。
従ってノードパケット144,146,148,152及び154はオフセ
ット値を含まない。それにもかかわらず、スペースが使
用されないのに、これらのノードパケットにおけるオフ
セット値のために、スペースが取られている。このこと
はメモリの記憶スペースを幾分浪費していると見られる
が、そのスペースは、もしオクトリー構造が後に変更さ
れる場合にノードパケットの処理の均一性を保ち、多様
性を与えるために残される。
この発明の好ましい実施例においては、1個のノードパ
ケットを32ビットワード(4バイト)メモリにストアす
る。16ビットは8ノードの夫々の固有値E,P及びFをス
トアするために使用される。16ビットは次いでアドレス
オフセットをストアするために残される。好ましい実施
例では正のアドレスオフセットのみを用いる。当該技術
分野の熟練者は、このような概要に従って、ノードが指
示するノードパケットのブロックの開始位置はノードパ
ケットのアドレスから0から216のアドレス範囲内のオ
クトリーエンコードストリッジブロック148に設定され
なければならない。前記オクトリーの低レベルに対して
は充分であるが、メモリのこの範囲はオクトリーの高レ
ベルのアドレスを指定するには充分ではない(その理由
は、オクトリーは0レベルから低レベルに横切られるの
で、要求されるストリッジスペースは、各レベル毎に4
つで成る1つのファクターとなるまで特徴的に増加する
からである)。
より広いアドレス指定されているオフセット範囲を設け
るために、前記オクトリーのより高いレベルにおけるノ
ードを含むノードパケットは“長い”関連アドレスフォ
ーマットを適宜使用することができ、上述したアドレス
オフセットは追加されるワードにストアされる(それに
よって各ノードパケットはメモリ中で、2つの隣接する
ワードを必要とする)。上述したように、16ビットは、
ペアレントノードの8つのチルドレンノード毎に固有値
E,P及びFを表わすために必要とされる。前記16ビット
の短いアドレスフィールドは他の目的のためにも有効で
あり、一方、関連アドレスはメモリの次の32ビットの隣
接ワードにストアされる。このように、各ノードパケッ
トは、合計64ビットを占めることになる。アドレスオフ
セットの32ビットの232の範囲のいずれかでアドレス指
定を行う。前記オクトリーにストアされた三次元の対象
に対する複雑さによって、前記“長い”フォーマット方
法は前記オクトリーの二,三のレベルに対して最初の1
つのレベルに適宜用いられ、一方、前述した“短い”フ
ォーマットは前記オクトリーの残りのレベルに対して用
いられる。当該技術分野では上述した手法は簡単に実現
でき、各ノードパケットにおけるフィールドは前記各ノ
ードパケットのフィールドはそのノードパケットが“長
い”フォーマットか“短い”フォーマットのいずれにス
トアされているかどうかを指示するために使用される。
一方のフォーマットにおいてはフラッグビット(16ビッ
トオフセットフィールドに含まれている)が全ての低レ
ベルノードが短いフォーマットにあるということを指示
するまでノードは長いフォーマットにある。
上記の説明は、ブロックにおける不必要なノードパケッ
トに対してはスペースは設けられないような“パックさ
れた”フォーマットに対してのものである。
“パックされない”フォーマットも又用いられる。前記
“パックされない”フォーマットにおいて、各ブロック
は8つのノードパケットを含み、このノードパケットは
(E及びFノードに対してすら)各ペアレントノード毎
に含まれる。このことは、ツリー構造で実行されるべき
多くの動作に対して必要とされたオクトリーにおけるノ
ードをランダムに加えたり、抹消したりする動作を容易
にする。ツリー 管理のための多くのアルゴリズムが使用される。
これらアルゴリズムは通常の目的でのコンピュータ動作
システムにおけるメモリ管理技術と同様であり、当該技
術分野の熟練者によって容易に実現できる。
固有の情報は、Fノード及び可能ならPノードに対する
各ノードパケットに添付された追加のワードとしてスト
アされる。処理スピードが増加した場合には、交互に前
記固有の情報は補助メモリの相対的に同じメモリ位置に
ストアされる(それによって異なるアドレスオフセット
値は追加の固有メモリで求める必要はない)。各固有情
報に必要なビットの数によって、相対的なアドレスは定
数である整数が乗算されることによって特別なノードに
対する固有値を位置付けることができる。
ノードのランダムアクセスを実行するいかなる方法であ
ってもオクトリーをストアするに適するということは当
該技術分野の熟練者に理解されるところである。
上述したように、この発明によるイメージ発生器は、コ
ンピュータトモグラフィスキャナによって得られる目的
データのイメージを表示するのに制限とはならない。
前記熟練者は、イメージは得られる目的データを限定す
るのに用いられる多くの異なる技術を既に打ち立てた。
例えば、イメージが得られる対象物は、自動化された相
互入力装置に使用者によって入力されたデータによって
限定される。この自動化相互入力装置はイメージが得ら
れる対象物を解析的に特定化する。このように解析的に
特定化された目的物は、自動化装置によって全く自動的
に限定されるか、一部が使用者の明細事項及び一部が自
動化装置によって自動的に限定されるか、或いは完全に
使用者によって限定されるかのいずれかである。前記自
動化装置は、次いで出力を発生し、前記オクトリー構造
をオクトリーエンコードオブジェクトストリッジブロッ
ク140(第15図に示す)にストアされる。
又、前記オクトリーエンコードオブジェクトストリッジ
ブロック140は表示されるべき対象物を解析的に特定化
し、要求に応じてノードパケットを生み出すような機能
ブロックによって置き代えることができる。このような
機能ブロックは、かならずしもオクトリー構造をストア
しなければならないというものでもない。というのは三
次元空間におけるノードの位置と表示されるべき解析的
に限定された対象物の位置とを単に比較することによっ
て要求されたノードパケットの固有値を求めることがで
きるからである。当該技術分野の熟練者は、多様な用途
に適応できるような機能ボックスを得るための具体的な
方法を既に実現することができた。
イメージ表示プロセッサによって行なわれるアルゴリズ
ム 第15図に示すイニシャライジングコントローラブロック
160の動作を述べる前に、イメージ表示プロセッサブロ
ック152がアクセスし、オクトリーを横切ることによ
り、次いで、これらのノードとクワドツリー(quadtre
e)を横切ることによって得られたウィンドウ(windo
w)とを比較することによってノードをテストするとい
う方法を一般的にリーダーになじませることが必要であ
る。一旦、通常のアルゴリズムが理解されれば、前記イ
ニシャライジングコントローラブロック160は詳細に検
討されよう。
前記イメージ表示プロセッサブロック152によって実行
された通常のアルゴリズムは既にある程度くわしく既に
述べられたので、より正確な以下のようなパスカルプロ
グラム(PASCAL program)によって表わされる。procedure PROCESS(NODE)begin If NODE inntersects any non-FULL window thenIf NODE is FULL thenbegin For WINDOW←non-FULL intersecting windowbegin TERM(NODE,WINDOW)end end else begin PROCESS(CHILD(NODE))end else begin NODE←NEXT(NODE)end end procedure TERM(NODE,WINDOW)begin if WINDOW is EMPTY and enclosed by NODE thenbegin PAINT WINDOW mark WINDOW FULLend else begin for I:1to4dobegin TERM(NODE,CHILD2(WINDOW(I)))end end end procedure CHILD(NODE) (*subdivides NODE into its children and returns f
irst non-empty child*) procedure CHILD2(WINDOW,I) (*returns child number I of WINDOW*) porcedure NEXT(NODE) (*returns next node in front-to-back traversal se
quence,i,e,the first non-empty node in sequence no
t a descendant of NODE*) 可変ノードはオクトリー構造に単一ノードをストアし、
プログラムが開始する前にルートノード(零レベルにお
けるノード)に初期設定される。可変ウィンドウ(WIND
OW)は、クワドツリー構造に単一ウィンドウをストア
し、アルゴリズム動作が行なわれている間、目下プロセ
スされているノードと関連する4つの上に置かれたウィ
ンドウから選ばれる。
ノードプロジェクションのサイズ(このサイズはユーザ
ーによって特定化したスケールファクターが決められて
いる)に従って、前記上に置かれたウィンドウはオクト
リーのルートに関連する特別なレベルにおいて初期設定
される。この初期設定されたレベルは、ノード突出の境
界となるボックスがそのレベルにおいてウィンドウと同
じ寸法若しくはそれ以下(各ディメンションにおいて)
であるような最も低いレベルである。最初のオーバレイ
は勿論、(全体で)前記オクトリールートノードの突出
を含むそのレベルで4つのウィンドウより構成されてい
る。
アルゴリズムはプロセス(PROCESS)の過程で抗入さ
れ、最初に前記ルートノードを通過する。前記アルゴリ
ズムは、前記ノード突出が該当するウィンドウカーバレ
イ(4つのウィンドウのうちのいずれか)における満た
されていないウィンドウのいずれかと交差するかどうか
を最初に決定する。もし交差しているのであれば前記ノ
ードは“処理”されることになる。もし前記ノードが満
たされていないウィンドウのいずれかと交差しないので
あれば、前方から後方への進行するシーケンス中の次の
空でないノードが処理“NEXT"によって処理される。前
記アルゴリズムは、処理“NEXT"前記ルートノードを伴
って呼び出されるときに決定される。
上述したように、前記ノードが満たされていない(即ち
空か又は一部が空である)ウィンドウと交差するのであ
れば、そのノードは“処理”される。最初に前記ノード
が満たされたものかどうか決められる。もし、満たされ
ないものであれば、前記オクトリーの底とは別の他のあ
るレベルで(前記手順“NEXT"が空ではないノードのみ
に戻るという理由から)部分的なノードとなるはずであ
り、そのノードはそのチルドレンに副分割され(プロセ
ス(PROCESS)がそれ自身を呼び出し、現ノードのチル
ドレン自身に対して行なわれる時に)前記チルドレンノ
ードは処理される。もし前記ノードが満たされていて、
更に副分割されないのであれば、むしろ、前記オーバレ
イのウィンドウは副分割され、フルノードによって完全
に含まれたこれらの全てのウィンドウを位置付ける。
しかしながら、前記ウィンドウは、もしそれらが、(満
たされたウィンドウが既に描かれ、再び描かれなくな
る、という理由で)空若しくは部分的に空でないなら
ば、副分割されない。もしウィンドウが満たされておら
ず、前記ノードを横切るのであれば次いで前記ウィンド
ウは手順“TERM"によって処理される。前記手順“TERM"
の実行中、フルノードによって完全に含められたウィン
ドウは位置付けられ(アルゴリズムによって発生された
出力)が描かれる。前記手順“TERM"はもしその過程で
処理されたウィンドウが空であり、前記ノードによって
含まれるのであれば、最初に見ることをテストする。も
し前記ウィンドウが空であるなら、次いで前記ウィンド
ウは描かれ全部マークが付けられる(その結果、再度描
かれることはない)。もし、ウィンドウが空ではないか
又はノードによって含まれないのであれば、部分的ウィ
ンドウであるか処理されているノードによって含まれる
ことがないかのいずれとなり、両者共に、多くとも前記
ウィンドウの子孫のいくつかのみを描くことができると
いうことを指示することを条件としている。このような
場合に前記ウィンドウは、更に副分割され両者が空であ
り、前記ノードによって含まれたこれらウィンドウの全
てを位置付ける。これらのことは前記“TERM"のループ
セクションのウィンドウの4つのチルドレン(及びこれ
らのチルドレンの夫々の子孫の全て)の夫々に対して行
なわれ、それによって前記手順はそれ自身を呼び出すこ
とになる。
当該技術分野の熟練者は、このアルゴリズムの繰り返し
がクワドツリー及びオクトリーの全てのレベルの処理を
行なわせるということを認めると思われる。“TERM"の
ような繰り返しのプロセスを実施するために、繰り返し
における可変値の全ては適宜、ラスト−イン−ファスト
−アウト(Last−In−First−Out)(LIFO)スタックに
ストアされ、その後、可変値の全ては再び用いられ、
(即ち前記可変値を呼び出すステートメントによって手
順に使用される適当なパラメータにセットされ)前記手
順は新らしい可変値をもって最初から再び実行される。
前記手順が所定の繰り返しを終了すると(前記スタック
から得られた)それらの以前の値に、可変値の全てを与
え、正確に実行を再び開始し、それ自身の呼び出し実行
前に終了する。
当該技術分野の熟練者は、LIFOスタックがコンピュータ
ーサイエンスに使用されている通常の構成であるという
ことは理解できるはずである。LIFOスタックは複数の値
を一時的にストアするために使用される可変長記憶構成
である。前記スタックは2つのオペレーションプッシュ
(PUSH)とポップ(POP)を行なう。プッシュ(PUSH)
オペレーションは前記スタックの“トップ”における値
をとる。ポップ(POP)オペレーションは前記スタック
の“トップ”からある値を取り除く。プッシュ(PUSH)
オペレーションによってスタックのトップに置かれた最
終値は、前記次のポップオペレーションによって前記ス
タックから取り除かれた最初の値である。(このように
LIFOスタックはカフェテリアにおいて空のフード皿を納
めるのに見られる通常の簡単な装置に類似していると言
える。このような装置に置かれた最後の皿は、皿が必要
とされる時にこの装置から取り除かれる最初の皿であ
る。)手順“TERM"が呼び出される(従ってクワドツリ
ーの1つのレベルを下げる)毎に、プッシュ(PUSH)オ
ペレーションはスタックに対し、“TERM"で使用され可
変値のうちの現在値をストアするために行なわれる。同
様に、前記手順“TERM"が所定の繰り返しのプロセスを
終了し、それ自身に戻る(即ち前記クワドツリー構成を
1レベル上げて戻る)毎に、ポップ(POP)オペレーシ
ョンは、“TERM"の可変値の全ての既存の値を回復する
ために前記スタックに対して実行され、それによって前
記手順は、それ自身の呼び出しが行なわれた点以後、正
しく実行を開始し始めることができる。
示されたアルゴリズムは実際に2つの箇所で(それ自身
が呼び出され)繰り返される。即ち、手順“PROCESS"は
それ自身で呼び出し、手順“TERM"はそれ自身で呼び出
す。“PROCESS"がそれ自身で呼び出すときはいつでもノ
ードとウィンドウの両者は副分割され、即ち前記オクト
リーと前記クワドツリー構成は同時に1レベルだけダウ
ンするように移動される。PROCESSはそれ自身呼び出
し、当該ノードのチルドレン自身をパスするのでノード
は明らかに副分割される。前記クワドツリーレベルにお
いて、処理されるノードの突出によって決められた境界
ボックスを充分含むような大きさの寸法のウィンドウよ
り成る4つのオーバレイウィンドウから常に選択される
ので複数のウィンドウが絶対的に副分割される。ノード
を伴ってのウィンドウの副分割はアルゴリズムのオペレ
ーションにとって本質的なものではなく、このような態
様は各Fノードに関連してテストされるべきウィンドウ
の数が2次増加するのを妨げることによって前記アルゴ
リズムをより効率的なものにする。
前記手順“TERM"がそれ自身を呼び出すと、前記クワド
ツリー構成のみが1レベルだけダウンするよう移動さ
れ、一方前記オクトリーレベルは一定に維持される。こ
のことは、前記“TERM"がターミナルノードが一回置か
れた時にのみ呼び出され、このノードは更に副分割され
ない(それはオクトリーにチルドレンを有さない)こと
を意味することを実感することによって直感的に理解で
きることである。
第18(A)図及び第18(B)図において、この発明の好
ましい実施例のアルゴリズムのより詳細なフローチャー
トが示される。このフローチャートのフローはトップか
らボトムに移り、入力ポイント162に入力される。ブロ
ック168は、次のノードパケットにおいて読みとる動作
が行なわれる。デシジョンブロック170は前記ノードパ
ケットに残された空でないノードがあるかどうかを知る
ためのテストを行なう。もし空でないノードがある場合
には、ブロック172はブロック168によって読み込まれた
ノードパケットにおける移動シーケンス中に次の空でな
いノードを得ることになり、前記ウィンドウオーバレイ
を前記クワドツリー構成、(即ちノードによって限定さ
れた境界ボックスを完全に含むクワドツリー構成中に4
つの隣接するウィンドウを有する)内に位置させる。ブ
ロック174は、前記ウィンドウオーバレイにおける4つ
のウィンドウの全てに対して同時に最適にBBOXテストを
実行し、前記4つのウィンドウのどれかが前記BBOXテス
トをパスするということを決める(ここで4つのウィン
ドウのうちの少なくとも1つは、ウィンドウオーバレイ
の限定となるので前記BBOXテストをパスしなければなら
ない)。
前記アルゴリズムはデシジョンブロック176に進み、こ
こで前記BBOXテストをパスしたこれらのウィンドウのう
ち処理されるために残された、いくつかの満たされてい
ない(即ちE or P)ウィンドウがあるかどうか決定す
る。満たされたウィンドウは未だ描かれてないというこ
とが呼び出され、そしてデシジョンブロック176によっ
て早急に配置される。もし、満たされていないウィンド
ウが残されていない場合には、前記アルゴリズムは前記
ノードパケットに次のノードがあれば、そのノードを得
るためにデシジョンブロック170にジャンプバックす
る。
BBOXテストにパスしたウィンドウの中でEまたはPウィ
ンドウがある場合には、ブロック178はカッドトリーが
アクセスされるトラバーサル順序に従って次のこのよう
なウィンドウを得る。判定ブロック180は、ブロック178
により得られたそのウィンドウについてPIテストを行な
う。もし、そのウィンドウがPIテストに失敗すると、ア
ルゴリズムは判定ブロック176に戻り、ノンフルウィン
ドウが残されているか判定し、もし残されている場合に
は次のウィンドウを得る。しかしながら、もし、ウィン
ドウがPIテストに合格した場合には、判定ブロック182
はそのウィンドウレベルがクワドツリーの底レベルであ
るかどうかをテストする。クワドツリー の底レベル(すなわち、第15図の画像表示
ブロック154の解像度のレベル)にあるウィンドウは細
分できないので、別に取扱われなければならない。も
し、ウィンドウが底レベルにある場合には、ブロック19
0は、第15図の画像表示ブロック154に対するウィンドウ
をペイントし、クワドツリーの中でそのウィンドウFと
マークする。前述したように、一旦Fとマークされたウ
ィンドウは決して再度ペイントされない。すなわち、F
ウィンドウは、ブロック178により捨てられているので
決して判定ブロック188に達しない。クワドツリーの底
レベルにあるウィンドウについてどのようなアクション
が取られるかについてはいくらか任意的である。本発明
の好ましい実施例は、ノードプロジェクションと交差す
る中心点を有するクワドツリーの底レベルにあるウィン
ドウをペイントするだけである。このため、ウィンドウ
のある領域(エリア)はノードプロジェクションと実際
に交差することが保証される。実際、最低レベルのウィ
ンドウについては、PIテストはウィンドウ自身よりはウ
ィンドウの中心点をテストすることができる。オクトリ
ーのPノードについては、上の方法は、ノードが実際に
はFノードであると仮定している。いくつかの他の方法
が利用できるであろう。Eと仮定されるような状況で
は、ウィンドウは決して書込むことはできないし、Pノ
ードはウィンドウ中心をPIテストに利用して更に細かく
分割できるのであろう。さもなければ、Pノードのサブ
トリーをトラバースして、サブトリーが示すボリューム
の半分以上を物体(Fノード)が占有しているかどうか
を判定することができるであろう。もし、そうであるな
らノードはFと仮定される。もし、そうでないならEと
仮定される。当業者は上述したテストに類似した他の
“中心点交差テスト”を容易に案出することができるで
あろう。経験によれば、正確なウィンドウターミネーシ
ョン方法はほとんどの場合大きな影響をもたない。
アルゴリズムは判定ブロック176に戻り、ブロック190と
ブロック180(ウィンドウがPIテストに失敗した場合)
の両方からBBOXテストにパスした残りのノンフルウィン
ドウを処理する。上述したように、ブロック190はクワ
ドツリーの底レベルにあるウィンドウについてのみ実行
されるので、その機能はいくらか任意的である。すなわ
ち、上に述べた以外のアクションが解像度のレベルにあ
るウィンドウについて取られても発生する画像に大きな
影響を及ぼさない。
もし、ウィンドウがクワドツリーの底にない場合には、
ウィンドウは更に細分されても良い。判定ブロック191
は、ノードがパーシャルノードであるかどうかをテスト
する。もし、ウィンドウがPなら、ブロック184は現在
のノードパケット(ノードパケットのどのノードが処理
されたかということについての、そしてそれ等の共通の
ペアレントのノードプロジェクションの幾何図形につい
ての情報とともに)をLIFOノードスタックにプッシュせ
しめ、そして同様に、現在のウィンドウパケット(その
ウィンドウパケット内でどのウィンドウがすでに処理さ
れているかについて、どのウィンドウがBBOXテストをパ
スしたがまだ処理されなければならないかについて、お
よびウィンドウパケットの形状についての情報を含む)
をLIFOウィンドウスタックにプッシュせしめる。これ等
のスタックは図示されていないが、上述のように機能す
る。アルゴリズムはブロック168に戻り、ノードスタッ
クにプッシュされたばかりのノードのチルドレンを含む
ノードパケットを得、それから4つのウィンドウの新し
いウィンドウオーバレイを持つチルドレンのノードパケ
ットを処理する。チルドレンのおのおのはウィンドウス
タックにプッシュされた4つのウィンドウの1つのチル
ドレンである。
これ等のチルドレンノードおよびウィンドウ(およびこ
れ等のグランドチルドレンの全て)を処理した後、チル
ドレンノードパケットにノードが残されなくなると、判
定ブロック170によりテストされるポイントに最終的に
達する。このポイントでは、判定ブロック164は、処理
されたばかりのノードパケットがオクトリーのレベル1
にあったかどうかをテストし、もしそうであるならば、
オクトリーは完全にトラバースされており、アルゴリズ
ムは出口点166を介して出て行く。もし、処理されたば
かりのノードパケットがオクトリーのレベル1にない場
合にはアルゴリズムは終了せず、ブロック186はペアレ
ントノードパケットおよびそれに関連した幾何図形をノ
ードスタックからポップ(POP)し、ペアレントウィン
ドウパケットおよびそれに関連した幾何図形をウィンド
ウスタックからPOPし、そしてブロック191で処理が停止
した場合ノード、ウィンドウパケットの処理を再開す
る。このため、判定ブロック170は、もしPOPされたノー
ドパケットにノンエプティノードが残されている場合、
ノードパケットから次のノードを決定し、このノードに
対する適当なウィンドウオーバレイがブロック172によ
り得られる。ブロック166はまた、グランドチルドレン
がペイントされていた場合に、オーバレイウィンドウP
またはFのペアレントウィンドウをマークすることによ
り、クワドツリー構造を更新する。
もしノードが判定ブロック191を満足させない場合に
は、ノードはフルであり、アルゴリズムはこのフルノー
ドによって完全に包囲されているウィンドウを探さなけ
ればならない。一旦、アルゴリズムがこの点に達する
と、ブロック180によりテストされたフルノードと交差
するウィンドウを同様に見つけている。このようにし
て、交差ウィンドウのグランドチルドレンのいくつかが
ノードプロジェクションにより包囲される。(ウィンド
ウ自身はノードプロジェクションによって包囲され得な
い。何故なら、ウィンドウは定義によりノードプロジェ
クションのバウンダリボックスより大きいからであ
る。) ブロック192はウィンドウをウィンドウスタックにプッ
シュし、ウィンドウを4つのチルドレンに細分する(ノ
ードはこの時点では細分されない)。4つのチルドレン
は“オーバレイ”を形成するが、実際には、この“オー
バレイ”はもはや正当なオーバレイではない。何故な
ら、これは一般にノードを包囲しないからである(ノー
ドは、細分されていないので今や大きくなりすぎてい
る)。このようにして、この点でブロック192により見
つけられたウィンドウ“オーバレイ”は実際にはプッシ
ュされたばかりのウィンドウの4つのチルドレンである
(これは、オーバレイが同じペアレントを持つ4つのウ
ィンドウから成る必要がなく、一般にはそうでないブロ
ック172の一般の場合と異なる)。ブロック194は、4つ
のチルドレンウィンドウの新しいウィンドウ“オーバレ
イ”についてBBOXテストを実施する。判定ブロック196
はBBOXテストをパスしたノンフル(EまたはP)ウィン
ドウがあるかどうか判定する。もし、ある場合には、ブ
ロック198は、クワドツリー構造をトラバースするため
に使用したトラバース順序にしたがって、次のこのよう
なウィンドウを得る。
判定ブロック200は、PIテストのためブロック198により
得られたウィンドウをテストする。もし、ウィンドウが
このPIテストに不合格の場合には、アルゴリズムはブロ
ック196に戻りBBOXテストをパスしたつぎのノンフルウ
ィンドウを得る。もし、ウィンドウがPIテストをパスし
た場合には、判定ブロック201はウィンドウをテストし
て空いている(エンプティ)かどうかを見る。もし、ウ
ィンドウがエンプティでない場合には、ブロック198に
よってフルウィンドウが捨てられているので、それはパ
ーシャルでなければならない。Pウィンドウはペイント
することができないが、それのEグランドチルドレンを
見つけるため更に細分されなければならないクワドツリ
ーの底にあるウィンドウはパーシャルではあり得ないの
で(全端末ウィンドウはEかFのいずれかである)、全
パーシャルウィンドウは細分することができる。もし、
ウィンドウがパーシャルであるなら、アルゴリズムはブ
ロック192に戻りウィンドウを4つのチルドレンに細分
する。
もし、判定ブロック201がウィンドウをエンプティと判
定すると、判定ブロック202が包囲のためウィンドウを
テストする(Eテスト)。もし、ウィンドウが現在の
(F)ノードのプロジェクションにより包囲されている
なら、そのウィンドウは第15図の画像表示ブロック154
にペイントされ、クワドツリーメモリの中でFとマーク
される。(それで決して再びペイントされることはな
い)。もし、ウィンドウがEテストに失敗する場合に
は、そのウィンドウは、可能ならば、そのグランドチル
ドレン達の中でノードプロジェクションにより完全に包
囲されているものを見つけるために更に細分されなけれ
ばならない。クワドツリーの底レベルにおいてはEテス
トがウィンドウ自身よりはウィンドウの中心に対する包
囲を判定する。このため、底レベルのウィンドウの中心
がFノードプロジェクションにより包囲されている場合
には、そのウィンドウはEテストをパスし、ペイント処
理される。判定ブロック206はウィンドウがクワドツリ
ーの底にあるかどうかを判定し、底にある場合にはウィ
ンドウは捨てられ、アルゴリズムは判定ブロック196に
戻って残りのウィンドウを処理する。もし、ウィンドウ
がクワドツリーの底レベルにない場合には、ブロック19
2によりチルドレンに細分される。
もし判定ブロック196が、現在のウィンドパケットに残
存し、ノードプロジェクションと交差するノンフルウィ
ンドウがないことを判定するならば、アルゴリズムは判
定ブロック208に進み、ウィンドウレベルとノードレベ
ルとが等しいかどうかを判定する。ウィンドウレベルが
以然としてノードレベルより下にあれば、アルゴリズム
は更に他のレベルをトラバースしなければならない(ブ
ロック209においてウィンドウスタック上で他のPOPを実
行することにより)。POPされたウィンドウは、ブロッ
ク192によりプッシュされる前に処理が停止した点か
ら、処理されなければならない(POPはペイントされた
ばかりのウィンドウのペアレント(あるいはそれ等のグ
ランドチルドレン)をPあるいはFとマークすることに
よりクワドツリーを更新する処理を含む。しかしなが
ら、判定ブロック208がウィンドウレベルとノードレベ
ルとが等しいと判定すると、クワドツリーはブロック19
2が実行される前にアルゴリズムが処理していたクワド
ツリーのレベルの下位に完全にトラバースされる。アル
ゴリズムはブロック176に戻り、このレベルで処理され
るべきノンフルウィンドウが残存するかどうかを判定す
る。
第17図のブロック162−191はパスカルプログラムの手続
きプロセスにほぼ対応し、一方ブロック192−209はパス
カルプログラムの手続きタームにほぼ対応することが理
解されよう。
第19図には、第18A−18B図に示したフローチャートの一
部の変更例が示されており、これは切断面テストを含ん
でいる。判定ブロック175がブロック174との間に追加さ
れており、現在のノードが少なくとも部分的には切断面
により定義される表示領域内にあるかどうか判定する
(完全にその領域内にあるか、または部分的にその領域
内にあるかどうかのいずれか)。もし、領域内にない場
合には、ノードが捨てられ、アルゴリズムは判定ブロッ
ク170に戻り、ノード内の残りのノードを処理する。も
し、現在のノードが少なくとも部分的に表示されるべき
領域内にある場合には、アルゴリズムは、前と同じよう
に、判定ブロック176に進む。
判定ブロック183が判定ブロック182、191間に挿入さ
れ、現在のノードが切断面と交差するかどうかを判定す
る。もし、ノードが切断面と交差しない場合には、ノー
ドは完全に表示領域内にあるに違いなく、アルゴリズム
は前と同じようにブロック191に進む。しかしながら、
ノードがある切断面と交差する場合には、更に細分され
てどのグランドチルドレンが表示領域内にあり、どのグ
ランドチルドレンが表示領域外にあるかどうかを判定し
なければならない。アルゴリズムはブロック184に戻
り、ノード(およびウィンドウ)を更に細分する。
初期化制御器 第15図の初期化制御ブロック160はいくつかの基本的機
能を持っている。第1に、このブロックは、使用者によ
り使用者との相互作用ブロック150を介して入力された
パラメータにしたがって3次元空間の線形変換を行な
う。ブロック160は3次元空間を2次元の観察面上に投
影(プロジェクト)する。最後に、ブロック160は3次
元空間のプロジェクションについての“プロトラクタ
(protractor)”機能を実行してペアレントノードプロ
ジェクションとチルドレンノードプロジェクションとの
間、ペアレントウィンドウとチルドレンウィンドウとの
間、および3次元空間のプロジェクションと観察面の原
点との間の幾何学的関係を判定する。計算された幾何学
的関係から、画像表示プロセッサブロック152は視面の
ウィンドウと3次元空間のいずれのノードのプロジェク
ションとの間の幾何学的関係を計算することができる。
第18A−18B図に示すフローチャートは3次元空間内の所
定のノードの幾何学的位置およびそのノードのディメン
ジョンは、そのノードが現われるオクトリー構造におけ
るレベルおよびどのノードがそのノードのペアレントで
あるという知識から得ることができるということを仮定
している。同様に、このフローチャートは、観察面上の
所定のウィンドウの位置およびそのウィンドウのディメ
ンジョンが、クワドツリー構造におけるそのウィンドウ
が現われるレベルおよびどのウィンドウがそのウィンド
ウのペアレントであるという知識から得ることができる
ということを仮定している。これ等の幾何学的位置およ
びディメンジョンはBBOX、PIおよびEテスト、切断面テ
ストおよびペイントブロックに要求される。
この位置およびディメンジョン情報を得るために行なわ
れる計算は実際にはしごく簡単である(そのような計算
が複雑であるとすると、画像の発生には多大の時間を必
要とすることは当業者には容易に理解されよう)。8つ
のチルドレンノードの、それらのペアレントノードにつ
いての幾何図形はオクトリー構造のどのレベルについて
も正確に同じであるので、一旦1つのレベルについての
幾何学的関係が選択された視野について導出されると、
オクトリーのどのレベルにも適用できる。更に、どのチ
ルドレンノードのディメンジョンはペアレントノードの
それの正確に半分であるので、オクトリー構造の隣接レ
ベルについてのチルドレンノードのペアレントノードに
対する幾何図形は全て2のファクタにより関係付けられ
る。
同様に、4つのチルドレンウィンドウとそれらのペアレ
ントとの間の幾何学的関係はクワドツリーのどのレベル
についても正確に同じであるので、一旦幾何学的関係が
クワドツリーの1つのレベルについて得られるとどのレ
ベルについても適用できるようになる。また、チルドレ
ンウィンドウはそのペアレントのディメンジョンの丁度
半分であるので、クワドツリー構造の2つの隣接レベル
についてのチルドレン−ペアレントウィンドウ間の幾何
学的関係は2つのファクタにより関係付けられる。
当業者には、加算、減算および比較のような簡単な計算
は、シフトレジスタを使用して計算に使用されるオペラ
ンドを単にシフトさせることにより2つのファクタだけ
を変えることができるということは容易に理解されよ
う。したがって、チルドレン−ペアレントノードプロジ
ェクションとチルドレン−ペアレントウィンドウとの間
の幾何学的関係の比較的複雑な記述が一旦導出される
と、本発明の実施例は導出されたパラメータを、単にこ
れ等のパラメータを適用な桁数だけ右あるいは左にシフ
トさせながら(アクセスされているオクトリーまたはク
ワドツリーのレベルに依存する)、それぞれオクトリー
およびクワドツリーのどのレベルにも利用する。これ等
のパラメータの導出は、第15図の初期化制御ブロック16
0により実行され、次にこれは画像表示プロセッサブロ
ック152を初期化する。
第20A図には、所定の視角で2次元観察面66に投影され
3次元空間32が示されている。初期化制御ブロック160
が、3次元空間32のプロジェクション211を観察面66に
関係付けることができる前に、観察面の2次元座標系
(x′,y′)についての2次元座標系の向きを決定しな
ければならない。
第15図に示された使用者との相互作用ブロック150には
使用者に観察面66に対する3次元空間のいろいろな線形
変換を行なわせることができる。例えば、使用者はプロ
ジェクション211の原点210を観察面66のどの点にも変え
ることができる。ブロック150は更に使用者に3次元座
標系(x,y,z)を3次元空間の使用者が決めた点の回り
に回転させることができる。最後に、使用者は3次元空
間のディメンジョンを変更(スケール)することができ
る。(ブロック150はx,y,z方向のディメンジョンのおの
おのを独立して適当にスケールすることができる)。初
期化制御ブロックにより実施できる他の可能な線形変換
は、x,y,zディメンジョンのおのおのにおける3次元空
間をスキュウー(skew)することである。第20A図に
は、2次元観察面66に関するスケールファクタの所定組
を有し、所定の並進および回転の位置決め基準点のため
の3次元座標系が示される。第20A図に示すように、観
察面は16個のウィンドウを有しており、それぞれはディ
スプレイスクリーン212(第15図のイメージディスプレ
イブロック154により実際に表示される観察面66の一
部)のサイズを有する。クワドツリー構造は全観察面66
には適用されず、観察面の一部、すなわち、ディスプレ
イスクリーン212のみに適用される。観察面66はディス
プレイスクリーン212より大きくて、同様にディスプレ
イスクリーン212より大きいプロジェクション211を可能
にする(このため、例えば、3次元物体のプロジェクシ
ョンの大きさが変更でき、“クローズアップ”像が発生
される)。第6D図、第20A図、及び第43A図を参照する
と、ディスプレイスクリーン212は空間の最大のノード
プロジェクションに対するウィンドウオーバレイを許し
ながら4×4ウィンドウアレイにウィンドウナンバ12を
具備する。
観察面66の原点104はディスプレイスクリーン212の下方
の左隅に割当てることができる。観察面66は画素(第15
図のイメージディスプレイブロック154により受けいれ
られる画像情報の最小単位)に区分けされる。ディスプ
レイスクリーン212は512×512画素のディメンジョンを
持つ。
3次元座標系のディメンジョンは画素によっては計測さ
れず、むしろノードナンバとレベルにより指示される。
所定の観察角度およびスケールファクタに対して、初期
制御ブロック160はルートノード32のプロジェクション2
12の種々のディメンジョンを2つの羃数(256のよう
な)のファクタだけ増大された画素幅の単位で計算す
る。3次元オクトリー空間の形状寸法を観察面66のそれ
と比較する必要があるときにはいつでも前者はスケール
された画素幅に変換される。
第20A図はまた3個のオフセットNPD0,NPD1,NPD2により
定義される、3次元空間32のプロジェクション211と2
次元観察面66との間の関係を示す。オフセットのおのお
のは観察面原点104からプロジェクション211の3つの縁
により形成される3本の線の1本と直交するように延び
ている。3次元空間32は平行六面体を形成し、それの交
差直交縁は3次元直交軸x,y,zを定める。x,y,z座標軸の
観察面66に対するプロジェクションの位置は、3次元空
間32におけるノードのいずれの観察面に対するプロジェ
クションの位置を定めるために、観察面66のx′,y′座
標軸について定められなければならない。
x′,y′軸に対するx,y,z軸のプロジェクションの位置
を定めるための方法はいくつかあるが、本発明の実施例
は空間32の縁により定義される3本の付加線を定義し、
そしてこれ等の線から原点104までの距離を計算する。
空間32の3つの縁、D0,D1,D3は次のようにして選択され
る。
縁D0は、空間32のz軸と平行であり、x軸と交差する縁
である。縁D1は、y軸と平行であり、z軸と交差する縁
である。縁D2は、x軸と平行であり、z軸と交差する縁
である。
ラインセグメントNPD0は観察面66の原点104から延びて
縁D1により定義される線のプロジェクションと垂直に交
差する。同様に、ラインセグメントNPD1は原点104から
延びて縁D1にとり定義される線のプロジェクションと直
角に交差する。ラインセグメントNPD2は原点104から延
びて縁D2により定義されるラインのプリジェクションと
垂直に交差する。NPD0−NOD2はこのように観察角度(2
次元座標軸に対する3次元座標軸の方向)にかかわらず
構成される。縁D0−D2はノード形状を含むほとんど全て
の計算に使用され(何故なら、ノードプロジェクション
の全ての縁はこれ等の3つの縁のひとつに平行であるか
らである)、一方、NPD0−NPD2は、ノードプロジェクシ
ョンの位置をウィンドウの位置と比べるとほとんど全て
の計算に使用される。
BBOXテストに要求される形状測定について第20B図を参
照して説明する。全3次元オクトリー空間32のプロジェ
クション211により視面66上に形成されるバウンディン
グボック74は前に述べたように構成される。このボック
ス74は点(NPX,NPY)に原点76を有し、x′方向のディ
メンジョンは2bxそしてy′方向のディメンジョンは2by
である。所定のオクトリーレベルでのいずれのチルドレ
ンノードプロジェクションに対するバウンディングボッ
クス74のディメンジョンは、その原点がオフセット分だ
け変わるだろうが、同じであることが理解されよう。更
に、チルドレンノードプロジェクションのバウンディン
グボックス74のディメンジョンは正確にその親のプロジ
ェクションの半分である。何故なら、チルドレンノード
自身のディメンジョンが正確にそのペアレントのそれの
半分であるからである。(例えば、ルートノード32の各
チルドレンノードのプロジェクションにより定義される
バウンディングボックスのディメンジョンはbxおよびby
である。)したがって、一旦ルートノード32のプロジェ
クション211に対するバウンディングボックスのディメ
ンジョンが決定されると、オクトリー構造のいずれのノ
ードに対するバウンディングボックスのディメンジョン
はノードレベルの関数として容易に計算することができ
る。
第20C図には、バウンディングボックス74の左端縁から
のルートノード32の8個のチルドレンノードのおのおの
のプロジェクションのバウンディングボックスの左端縁
のx′方向におけるオフセットが示されている。各バウ
ンディングボックスの原点はペアレントバウンディング
ボックスの原点76プラスx′,y′方向における正のオフ
セット(できる限り0)として定義することができる。
第7図に示すように、いずれのバウンディングボックス
の原点76は(NPX+ax,NPY+ay)として書くことができ
る。オフセットax,ayは勿論チルドレンノードのおのお
のについて異なるであろう。
第20C図に示した計算は、オフセットayを得るために
y′方向についてもなされなければならない。
第4A図と第20C図を参照すると、ルートノード32の8つ
のチルドレンノードが0乃至7と番号が付されている
(7から0へのトラバーサル順序にしたがって)。いず
れのノードに対するバウンディングボックスの左縁は、
そのノードの観察面に対するプロジェクションの左端の
頂点(観察面に関する)を通るy′軸に平行な線を定め
る。(どの頂点が左端のものであるかどうかは観察角度
に依存する。)したがって、線74bは観察面66のy′軸
に平行である。同じように、線74aは観察面のx′軸に
平行である。
ルートノードプロジェクション211の左端の頂点は214
(1)であり、これはプロジェクションの下部の左側頂
点である。3次元空間の対称性のために、ルートノード
32のチルドレンのおのおののプロジェクションの左端頂
点は同様にそのプロジェクションの下部左側頂点であろ
う。これ等の頂点は214(0)乃至214(7)と名付けら
れている。例えば、チルドレンノード6のプロジェクシ
ョンの左端頂点は214(6)である。
ルートノードプロジェクション211のバウンディングボ
ックス74の左縁からルートノード32のいかなる所定のチ
ルドレンのプロジェクションにより決まるバウンディン
グボックスの左縁までのオフセットを計算するために、
チルドレンノードプロジェクションの左端頂点を通って
最初に垂直線が引かれる。バウンディングボックス74の
左縁を形成する垂直線74bとチルドレンノードプロジェ
クションの左端頂点を通る垂直線との両方に垂直な水平
ラインセグメントがこの2本の垂直線の間に引かれる。
このラインセグメントの長さはペアレントノードプロジ
ェクションバウンディングボックスの左縁74bからチル
ドレンノードプロジェクションバウンディングボックス
の左縁に至るオフセットである。例えば、ラインセグメ
ントax4の長さはペアレントバウンディングボックス74
からチルドレンノードプロジェクションにより形成され
るバウンディングボックスまでのオフセットである。同
様なオフセットay0−ay7がy′方向に、バウンディング
ボックス74の下縁74aと8個のチルドレンノードのプロ
ジェクションのおのおのの最底の頂点により形成される
水平線との間に形成される。
ax,ayオフセットを計算するこの処理により16の異なる
値(ax0−ax7,ay0−ay7)が、x′,y′方向における8
つのチルドレンノードプロジェクションにより形成され
るバウンディングボックスのおのおのについて生じる。
(図示の観察角度の場合には、頂点214(1)がたまた
まルートノードプロジェクション211とチルドレンノー
ド1のプロジェクションについて左端頂点であるのでax
1=0であり、同様に図示の観察角度の場合にはay5=0
であることが理解されよう。) どのチルドレンノードプロジェクションにより形成され
るバウンディングボックスの原点はそのチルドレンに相
当するax,ayオフセットを親子ノードプロジェクション
により形成されるバウンディングボックスの原点に加算
することにより計算することができる(したがって、チ
ルドレンノード5のプロジェクションにより形成される
バウンディングボックスの原点は、例えば、NPX+ax5,N
PY+ay5である)。
一度、根交点32のチルドレン群に対して16個のaxおよび
ayのオフセット値群を計算しておけば、根交点の降下を
投影するためのaxとayのオフセット値はチルドレンの数
と交点レベルの関数として、これらのオフセット値群か
ら得ることができる。例えばチルドレン交点1の投影で
ある束縛箱の起点からチルドレン交点1(すなわち根交
点32の孫群)の投影である束縛箱群の起点迄のaxオフセ
ット値は、単純に第20(C)図に示すaxオフセット値群
の1/2である。(何故ならいずれのチルドレン交点の寸
法も正確にペアレント交点の寸法の1/2だからであ
る。)8階層木構造を下方向に移動する毎に、適切なax
およびayオフセット値が単純に1/2され(すなわち1ビ
ット右へシフトする)、ペアレント交点投影によって定
義される束縛箱の起点に加算され、選択されたチルドレ
ン交点の投影である束縛箱の起点を得る。このようにし
て、回帰法を用いて3次元母集団のいずれかの交点の投
影である束縛箱の起点を計算することができる。
第20(B)図に示すbxおよびbyの値も右に1ビットシフ
トすることにより、関心のある束縛箱の寸法を正確に表
わすことができる。
bxのようなシフト操作により値レジスタ群から飛出した
ビットは下位桁あふれレジスタにシフト入力され、退避
される。
8階層木構造を上方向に移動する場合には、左に1ビッ
トシフトすることにより、値群をそれぞれ2倍する。も
ちろん、そのシフト動作によりそれ迄退避させておいた
下位ビットは、8階層木構造上の上方向の横断線上のレ
ジスタに戻される。
上述したように、束縛箱の位置および寸法は、BBOXテス
トを行うために視野に対して交点を投影したときに形成
される幾何についての十分な情報を提供するに過ぎな
い。PIテストおよびEテストでは共に交点を投影したと
きに形成される6つの外縁の位置情報が必要になる。
さらにEテストでは交点を投影したときに3つの内面縁
の位置情報が必要になる。
第21(A)図乃至第21(C)図は、根交点32の投影211
のD0,D1およびD2の縁群から、根交点の8個のチルドレ
ン交点の投影のD0,D1およびD2縁群迄のオフセット値群
を示している。これらのオフセット値群により、ペアレ
ント交点の投影に比例して位置したチルドレン交点を投
影することができる。
第21(A)図において、(第20(A)図に定義された)
根交点32の投影211のD0縁から、根交点32の各チルドレ
ンの投影のD0の縁群迄のオフセット値群が示されてい
る。D1およびD2縁群の相似オフセット値群を、それぞれ
第21(B)図および第21(C)図に示す。このように、
例えば根交点32のチルドレン交点2および3の投影のD0
縁の位置はNPD0+ND0OFF(2)により与えられる。(こ
の場合、第20(A)図のNPD0は視平面の起点に対する縁
D0の位置である。)同様に、チルドレン交点0および2
の投影の縁D1の位置はNPD1+ND1OFF(1)で与えられ、
チルドレン交点2および6の投影の縁D2はNPD2+ND2OFF
(2)で与えられる。
このようにして、いずれかのペアレント交点のそのまた
いずれかのチルドレン交点の投影はペアレント交点の投
影に対して位置付けすることができる。axおよびayのオ
フセット値群に関して言えば、第21(A)図乃至第21
(C)図に示されるオフセット値群は、例えばチルドレ
ン交点2のチルドレン群の位置を決定するために1/2
(右シフト)され、さらに分割された交点群があればさ
らに1/2される。
上述したように、内面縁群ならびに外部交点投影群はE
テストのために位置づけする必要がある。第21(D)乃
至第21(F)図は、チルドレン交点投影のD0,D1およびD
2縁群に対して根交点の任意のチルドレン交点(根交点
そのものではない)の投影の内面縁群の位置を示す。第
21(D)図は根交点32のチルドレン交点217の投影のD0
縁からチルドレン交点の投影の可視面を位置づけするの
に必要な縁D0に並行なチルドレン交点の投影の他の2つ
の縁迄のオフセットを示す。FDIAG0はチルドレン交点21
7の投影のD0縁により定義される直線に垂直にかつこの
直線とチルドレン交点の投影の2つの面を分離する縁21
6により定義される直線との間に作られる線分の長さで
ある。同様にNDIAG0はチルドレン交点217の投影のD0縁
により定義される直線に垂直でかつこの直線とチルドレ
ン交点217の投影の縁218により定義される直線との間に
作られる線分の長さである。縁216と218は図示された視
角に対して視面66上に投影される縁D0に並行なチルドレ
ン交点217の2つの縁である。(このようなラインは多
くて2つであり、第3の並行な縁が交点の後に位置して
おり、それゆえ投影の一部ではない)。
同様に第21(E)図に示すFDIAG1およびNDIAG1はチルド
レン交点217の投影のD1縁からの相似オフセット値であ
り、第21(F)図に示すFDIAG2およびNDIAG2はチルドレ
ン交点217の投影のD2縁からの相似オフセットである。
第21(D)図乃至第21(F)図に示されるオフセット群
のいくつかは実際には冗長である。何故ならそれらオフ
セット群のいくつかは第21(A)図乃至第21(C)図に
示すオフセット群に対応するからである。もちろん好適
実施例ではこの冗長なオフセット値を再計算することは
ない。
第21(A)図乃至第21(F)図に示すオフセット群か
ら、あるチルドレン交点投影の関心のある所定縁の位置
はそのペアレントのD0,D1,D2縁に対して位置づけするこ
とができる。
第4(A)図、第8図、第21(A)図乃至第21(F)図
では例えば根交点32のチルドレン交点2の投影の外縁お
よび内面縁の位置は次のように計算し得る。
縁11=NPD0+ND0OFF(2)=NCD0(チルドレン交点2の
D0縁) 縁12=NPD2+ND2OFF(2)=NCD2(チルドレン交点2の
D2縁) 縁13=NPD1+ND1OFF(1)=NCD1(チルドレン交点2の
D1縁) 縁14=NCD0+NDIAG0 縁15=NCD2+NDIAG2 縁16=NCD1+NDIAG1 縁7=NCD1+FDIAG1 縁8=NCD0+FDIAG0 縁9=NCD2+FDIAG2 第22(A)図乃至第22(B)図は第14(B)図で説明し
た切断面検証を行うのに必要な幾何図形を示す。第22
(A)図に、切断面検証面上への根交点32の投影226の
最左端の頂点228(1)(k軸に対して)から、切断面
検証面上への根交点のチルドレン交点群の各々の投影の
最左端頂点群迄のakオフセット値群が示されている。こ
れらのオフセト値群は投影226の最左端頂点を通過する
k軸に垂直なそれゆえ第14(B)図に示す切断面120お
よび122の各々に並行な直線74kを構成することにより計
算される。直線はすべて、根交点のチルドレン交点投影
の最左端頂点228(0)−228(7)の各々を通過する直
線74kと並行に構成される。
次に直線74kと直交かつチルドレン頂点群を通過する各
ラインとの間に線分群が構成される。(したがって、第
22(A)図に描かれたオフセット群は第20(C)図に示
された束縛箱に多少類似している) 直線74kがk軸と交叉する点はNPKとして定義される。チ
ルドレン交点の位置を決定するには、適切なオフセット
値をNPKに加えるだけで良い。従って例えば、検証面へ
のチルドレン交点4(第4(A)図に示される)の投影
の最左端頂点のk座標はNPK+4で与えられる。切断面
の検証では各頂点のk座標に関する情報があればよいの
で、(束縛箱オフセット値群で必要であったような)k
軸に対して直交する座標に対しての同様な計算を行う必
要が無い。
第22(B)図は、最右端の頂点に対する検証面への根交
点32のチルドレン交点の投影23の最左端頂点間のk軸方
向の距離が示されている。
このオフセット値KDIAGは最右端頂点を通過する第22
(A)図に示す直線74kに並行な直線(従ってk軸に直
交する直線)を形成することにより計算される。この距
離は根交点32の各チルドレン交点に対し正確に同じであ
るので、どのチルドレン交点の投影を用いてこの計算を
行っても良い。
第22(A)図および第22(B)図に示されるオフセット
値群を与えられ、根交点32の8個のチルドレン交点のい
ずれかの切断面検証面への投影の位置を決定することが
できる。例えば、根交点32のチルドレン交点4の投影の
最左端頂点はNPK+ak4で与えられ、そのチルドレン交点
の最右端頂点はNPK+ak4+KDIAGで与えられる。根交点3
2の派生の投影の頂点群の位置は同様にして、その8階
層木構造の派生のレベルに応じて適切なakオフセット値
とKDIAGを適切な2つの係数で割ることにより求めるこ
とができる。
第23(A)図および第43(A)図は各ウィンドウがサイ
ズE(表示スクリーン212のサイズ)である4×4の窓
アレイを示す。視面66は起点104を有している。この起
点104は表示スクリーン212左下隅に位置する。第43
(A)図に示すようにこの4×4のアレイはアレイの中
心が起点104と一致するように選択されている。この実
施例では図示構成はウィンドウレベル0で“ウィンドウ
パケット”になるように任意に定義される。
PI検証およびE検証共に、検証中のウィンドウの選択さ
れた臨界頂点を通過し、かつ交点投影の種々の縁群によ
り定義される直線に並行である直線群を形成する必要が
ある。ある交点投影縁(内部又は外部)によって定義さ
れる直線はその投影の縁D0、縁D1又は縁D2のいずれかに
並行でなければならない。同様に、このような直線によ
りある窓の対向する2つの対の頂点群の1対が傾斜のみ
の関数としてPI検証およびE検証の臨界頂点でなくな
る。(第9図および第11図の説明により、上述のように
臨界頂点からはずれなかった対の一方はPI検証用頂点と
して選択され他方はE検証用頂点として選択される。こ
の頂点は交点の内部に対して関心のある縁位置ぎめの関
数である検証のために使用される。これらの制約のため
に、所定の窓の4つの頂点の各々を通過する各縁D0乃至
D2に並行な直線の位置を決定する必要は無い。そのかわ
り、各窓(各縁D0,D1,D2に並行な2つの窓)に対して6
つの直線の位置を所定のウィンドウに対して決定すれば
良い。
根交点32の投影211の縁D0に並行な点(−2E,2E)(PI検
証およびE検証に対して縁D0の臨界頂点として作用しな
い4×4アレイの2つの頂点の1つ)を通って形成され
る。(同じようにライン220も(2E,−2E)を通って形成
し得る)。線分WPD0は直線220に直交しその直線と交叉
する視面66の起点104から作られる。同様に、根交点32
の投影のD1に並行な直線222は点(2E,−2E)を介して作
られ、線分WPD1は直線222に直交し、その直線と交叉す
る起点104から作られる。最後に直線224は根交点32の投
影211の縁D2に並行な点(2E,2E)を通って作られ、線分
WPD2は起点104から直線224に、この直線224に直交して
作られる。
この実施例では基準ラインとして各オフセット値WPD0,W
PD1,およびWPD2により定義されるラインを用いている。
これら基準ラインに付加オフセット値が加算され、4×
4ウィンドウアレイにおけるあるウィンドウの臨界頂点
を交叉するラインの位置を得ることができる。第23
(B)乃至第23(D)はウィンドウオーバレイの場合
の、各ライン220,222および224から4つのウィンドウの
各対応する頂点迄のオフセットが示される。第23(B)
図はウィンドウオーバレイの場合のライン220(第23
(A)図に示される)から対応する臨界頂点迄のオフセ
ットを示している。
これらのオフセット値はライン220に並行(従って根交
点の投影の縁D0に並行)な各臨界頂点を通過するライン
を構成し、さらに、ライン220から上記各ラインまでの
線分でありかつ上記各ラインに直交する線分を構成する
ことにより計算される。第23(C)図乃至第23(D)図
は縁群D1およびD2に対する相似オフセット値を示す。
第23(E)図は第23(B)乃至第23(D)図に位置した
臨界頂点からウィンドウの対応臨界頂点を位置決めする
のに使用する3つのオフセット値を示す。これらのオフ
セット値の1つはD0乃至D2縁群の各々に使用される。第
23(E)図に示したオフセット値のいくつかは第23
(B)図乃至第23(D)図で計算したオフセット値と同
じである。これらのオフセット値は明瞭に示すために別
々に示しているが、別々に計算するわけではない。
第23(A)図乃至第23(E)図で計算したオフセット値
を用いて、視面66の起点104からレベル0の交点パケッ
トのウィンドウの臨界頂点を通過するライン迄の距離を
計算することができる。第6(D)図乃至第6(F)図
で説明したように、この実施例では、4×4のウィンド
ウアレイ(すなわちウィンドウパケット)から単一のウ
ィンドウを選択する。すなわち始めに4×4のアレイか
ら3×3のウィンドウアレイを選択し、次に3×3アレ
イからウィンドウオーバレイを選択し、最後にウィンド
ウオーバレイから1つのウィンドウを選択する。単一の
ウィンドウの臨界頂点を位置決めするための計算は上記
と同じシーケンスで行われる。
もちろん当業者はそれ以外の方法、例えば視面上の単一
ウィンドウの臨界頂点を位置決めする方法を発明するこ
とは可能であり、この実施例ではそのような方法の1つ
の例示にすぎない。
第6(D)図乃至第6(F)図および第23(A)図乃至
第23(E)図において、3×3アレイの臨界頂点はWPD0
にオフセット値群WD0OFF(0)乃至WD0OFF(3)のいず
れか1つをWBITSの関数として加算することにより計算
し得る。従って、例えば、W3×3X=1およびW3×3Y=1
により与えられる3×3のアレイに対する根交点の投影
211のD0縁の臨界頂点はWPD0(3×3)=WPD0−WD0OFF
(3)として計算し得る。
選択された3×3アレイに対するD1およびD2の縁群に対
する臨界頂点の位置についても同様に計算し得る。
3×3アレイの臨界頂点群がわかれば、3×3アレイか
ら選択されたウィンドウオーバレイに対する臨界頂点群
は、単にオフセットをW2×2XおよびW2×2Yの関数として
加算することにより計算できる。例えば、W2×2X=1、
およびW2×2Y=0により与えられるウィンドウオーバレ
イの場合、根交点の投影32のD0縁のオーバレイに対する
臨界頂点はWCD0=WPD0(3×3)−WD0OFF(1)として
計算できる。D1およびD2の縁群の臨界頂点の位置も同様
に計算し得る。
ウィンドウオーバレイに対する臨界頂点の位置が計算で
きれば、オーバレイの4つのウィンドウのいずれか1つ
の臨界頂点は第23(B)図乃至23(D)図に示すWDnOFF
値の1つおよび第23(E)図に示すWDIAGn値の1つをWN
UMの値の関数として加算することにより計算できる。例
えば、ウィンドウオーバレイの場合にウィンドウ00のD0
縁の2つの臨界頂点群はWCD0+WD0OFF(0)およびWCD0
+WD0OFF(0)+WDIAG0により与えられる。これらの2
つの頂点の1つをPIテストのD0縁に並行な縁の臨界頂点
として又他方をEテストの同一縁の臨界頂点として用い
ることができる。(この頂点は交点投影の内側に対する
縁の位置決めに依存するテストに用いられる。) 縁D1およびD2に並行な縁の臨界頂点は相似的に計算し得
る。
第15図に示すイニシャライズコントローラブロック160
は米国モトローラ社のM68000で実行されるソフトウェア
プログラムで構成される。このフトウェアプログラムの
コピーを付録Bに添附する。第24(A)図及び第24
(B)図にイニシャライズコントローラブロックにより
実行されるアルゴリズムを記述したフローチャートを示
す。
このアルゴリズムは端末ブロック250を介して入力さ
れ、最初にINPUTブロック252に入る。
INPUTブロック252は種々のI/Oデバイスを介してユーザ
から多くの入力を受取る。例えば、x,y,zの3次元母集
団のスケールファクタ、この3次元母集団の回転中心の
294(第24(D)図に示す)、3次元母集団における3
つの各直交方向の回転角、3次元座標システムの回転中
心294が(第24(C)図に示すように)変換される視面6
6上の点296の位置、1対の切断面間の配置と距離、さら
には切断面により定義された表示される領域が切断面の
内部か又は外部かというような情報を受取る。
次にブロック254に進み回転マトリクスを構成する。
回転マトリクスを用いて3次元座標システムの線形変換
を行うことは公知であり、例えばNewman,W.M.およびSpr
oull,R.F.著、“Principles of Interactive Computer
Graphics"第2版、Mc Craw−Hill,ニューヨーク,1979,
付録491乃至501頁に記述されている。
第24(E)図に示すように、ブロック256ではマイクロ
コンピュータによる浮動小数点演算によりブロック252
に入力されたX,Y、およびz方向の独立したスケールフ
ァクタを用いて3次元座標システムに対する3次元母集
団を計測する。第24(F)図に示すように、ブロック25
8で、視面座標システムの起点104を、回転中心としてユ
ーザにより定義される点294に変換する。ブロック260で
はブロック254でセットされた回転マトリクスを用い
て、第24(G)図に示すようにユーザが入力した所望の
回転角だけ、回転中心294(この点は3次元母集団内の
ユーザが規点した点)に対して3次元母集団を回転させ
る。(この線形変換は3次元座標軸上で行われるのでは
なく、その母集団の局部座標系の座標軸(および母集団
の起点)と交叉する平行六面体形状の母集団の点上で行
われる。)第1のユーザが指定した回転角によりy′−
x′面(y′からx′)の3次元母集団を回転する。第
2のユーザが指定した回転角によりy′−z′面(y′
からz′)の3次元母集団を回転する。
第3のユーザが指定した回転角によりx′−z′面
(x′からz′)の3次元母集団を回転する。これら各
回転角は独立の値をとることができる。
第24(H)図に示すように、母集団が回転されると、ブ
ロック262において、母集団の回転中心294をユーザが選
択した視面上の点296に変換する。次にブロック264にお
いて、第24(I)図に示すように立方形の3次元座標の8
つの頂点298(1)乃至298(8)の各々の2次元座標
(x′,y′)を計算することにより視面上に3次元母集
団を“投影”する。(この投影プロセスはブロック264
において8つの頂点298(1)乃至298(8)の各々の
z′座標を0にすることにより行われる。
ブロック266では、3次元母集団における並列断面対が
定義され、(第22(A)図乃至第22(B)図に示すよう
に回転されていない3次元母集団をブロック264におい
て行ったと同様の方法によりテスト面上に投影すること
により)KDIAGの値とakオフセット値を計算する。
第24(J)図に示すように、ブロック268において、3
次元母集団の投影の8つの頂点298(1)乃至298(8)
のどの頂点が最左端(299LE)であるか、最右端(299
V)であるか、および最下端(299LW)であるかをブロッ
ク264において計算した座標を比較することにより決定
する。ブロック270では、8つの頂点の各組合対間の縁
群を構成し、これらの縁群のいずれがD0,D1およびD2の
縁であるかを定義し、交点投影の内部に対して各縁のこ
う配と配置を決定する。このこう配は算術的に容易に計
算でき、他方内部方向は、その投影のどの縁が3次元直
交座標軸上にある平行六面体母集団の縁に相当するかを
覚えておくことにより決定される。
ブロック272ではブロック268の結果を用いて根交点(第
20(B)図に示す)の投影により定義される束縛箱の起
点と寸法を決定し、第20(C)図に示す種々のaxおよび
ayオフセット値群を決定する。これらの位置、寸法およ
びオフセット値を計算する方法は公知である。ブロック
274乃至280では第20(A)図に示すオフセット値群を計
算し、ブロック270において決定したデータに基づいて
(第9(A)図乃至第9(D)図および第11(A)図乃
至第11(D)図に示すように)交点投影の各縁D0,D1お
よびD2に対する所定のウィンドウの臨界頂点群を決定
し、第23(A)図乃至第23(E)図に示すウィンドウオ
フセット値群を計算する。ブロック282において第21
(A)図乃至第21(F)図に示す交点オフセット値群を
計算する。
ブロック284において、第20(A)図および第43(A)
図に示すように表示スクリーンの左下隅に、視面の起点
を設定する。ブロック286ではその面の配向に基づいた
交点投影の3つの面の各々に対する独特の網かけを計算
する。今物体から無限に離れた仮想点光源を考える。こ
れは、一般に視者と同一点に位置するが、いずれに位置
しても良い。各面の表面正規のベクトルが作られる。各
表面の輝度は、上述したNewmanおよびSproullの著書の3
93頁乃至395頁に記述があるように、表面正規ベクトル
と光源へのベクトルのドット積として計算し得る。
表示すべき各ウィンドウの輝度計算のもう1つのさらに
高度な方法は、8階層木構造の各FULL交点の強度を計算
することである。この技術は“表面正規網かけ”と呼ば
れ、同じFULL交点により囲まれた各ウィンドウを同じ輝
度で表示する方法である。8階層木構造の各交点の輝度
は、開示すべき物体の表面上の点として交点を近似し、
その点と交叉し、かつ物体表面に接している面を作るこ
とにより計算される。この接面に対する表面正規ベクト
ルおよびその交点に付加される輝度は表面正規ベクトル
と視点方向のベクトルとドット積により計算し得る。表
面正規網かけでは各終端交点の値の輝度を格納するのに
(上述した)メモリが必要になる。表面正規網かけ輝度
の計算は8階層木構造を通過する別個の路により行うこ
とができる。当業者には接面の配向を決定する種々の方
法を容易に認識し得る(例えば、物体表面の局部形状を
決定するためにFULL又はEMPTYかどうかを知るために輝
度が決定される交点に隣り合わせて交点を配置する) ブロック288では、ブロック272で計算した束縛箱の寸法
から、8階層木構造のどのレベルが4階層木構造のレベ
ル0のウィンドウ(すなわち表示スクリーンのサイズの
ウィンドウ)よりも小さい交点を投影するかを決定す
る。この交点レベルは上述したようにウィンドウレベル
に等しくセットされているので、ウィンドウオーバレイ
は交点投影と適切な関係を有している。
ブロック290では、イニシャライズするために、イメー
ジディスプレイプロセッサブロック152(第15図参照)
の種々のレジスタをダウンラインロードすることにより
イニシャライズコントローラブロックの出力ステップを
実行する。イニシャライズコントローラブロックは終端
ブロック292を介して脱出し、“GO"信号をイメージディ
スプレイプロセッサ152に供給し、イニシャライズが完
了してイメージ発生の開始可能になったことを知らせ
る。
イメージ表示プロセサ 第15図および第25図において第15図のイメージ表示プロ
セサブロック152の詳細なブロック構成を示す。このイ
メージ表示プロセサの機能は、選択された像に応じた2
次元平面上のオクトリ構造により代表される3次元領域
の単一投影像を発生させることにある。イメージ表示プ
ロセサブロック152は、入力として初期化制御ブロック1
60から所望の像を特定する初期値を受け入れ、オクトリ
エンコーデッドオブジェクト格納ブロック140に格納さ
れたオクトリ構造にアクセスし、そしてイメージ表示ブ
ロック154にイメージを出力する。
イメージ表示プロセサ152は、メモリアドレスプロセサ
ブロック300およびこれに対属するメモリアドレススタ
ック400と、オブジェクトノードパケットプロセッサブ
ロック500およびこれに付属するオブジェクトノードパ
ケットスタック410と、ノード選択ロジックブロック600
と、オブジェクトノードジオメトリブロセサ700および
これに付属するオブジェクトノードジオメトリスタック
420と、イメージウインドウメモリブロック800と、イメ
ージウインドウパケットプロセサ900およびこれに付属
するイメージウインドウパケットスタック430と、イメ
ージウインドウジオメトリプロセサブロック1000および
これに付属するイメージウインドウジオメトリスタック
440と、ウインドウオーバレイ選択ロジックブロック110
0およびこれに付属するWBITSスタック450と、ウインド
ウ選択ロジックッブロック1200およびこれに付属するBB
OX結果スタック460と、カット面プロセサブロック1300
およびこれに付属するカット面ジオメトリスタック470
と、ウインドウ書込ブロック1400と、サイクル結果ブロ
ック1500と、シーケンスコントローラブロック1600とを
備えている。
メモリアドレスプロセサブロック300の機能は、オクト
リエンコーデッドオブジェクト格納ブロック140からの
特定されたノードパケットを得ることを、選択された像
に対する横断シーケンスに応じて得られたノードパケッ
ト内の8つのノードを再整理することである。これに加
えて、メモリアドレスプロセサブロック300は、アクセ
スされているノードパケットの絶対アドレスのトラック
を保持するとともに、オクトリエンコーデッドオブジェ
クト格納ブロック140内の、回収すべき次のノードパケ
ットの絶対アドレスを算出する。
オブジェクトノードパケットプロセサブロック500の機
能は、小区分すべき現行ノードパケット内のチルドレン
ノードのチルドレン番号(CNUMO)を提供することによ
り、メモリアドレスプロセサブロック300からのノード
パケットを要求することにある。オブジェクトノードパ
ケットプロセサブロック500の出力は現行ノードパケッ
トNPROPであり、この出力は現行ノードパケット中でま
だ処理しなければならないノード用のE,PまたはF特性
値を与える。オブジェクトノードパケットプロセサブロ
ック500はまた、処理済のノードが再処理されることの
ないように、これらのノードのトラックを保持する。
ノード選択ロジックブロック600は、入力NPROPとして現
行ノードパケットを受け入れて、いくつかの出力を発生
する。そのうちの1つの出力(CNUM)は、現行ノードパ
ケット内の7→0横断シーケンスにおける第1非空室ノ
ードの番号を示す。ノード選択ロジックブロック600は
また、シーケンスコントローラブロック1600の入力とし
て、他に2つの出力を発生する。そのうちの第1の出力
は、現行ノードがPまたはFのいずれであるのかを示す
(現行ノードはEとなり得ないのでEノードについては
スキップされる)。また、その第2の出力(NREM)は、
現行ノードパケットが完全に処理されたか否かを示す
(それ故次のノードパケットが回収されなければならな
いときを示す)。
オブジェクトノードジオメトリプロセサブロック700
は、初期化コントローラブロック160により発生される
種々のロケーションおよびオフセット値(これらはBBOX
テストに使用されるxおよびy値のファミリーとPIおよ
びEテストに使用されるD0,D1およびD2値のファミリー
により特徴付けることができる)と、ノード選択ロジッ
クブロック600により発生されるチルドレン番号(CNU
M)と、シーケンスコントローラブロック1600により発
生されるノードレベル(NLEV,図示せず)とから、現行
ノードのジオメトリを引き出す。このようにして、オブ
ジェクトノードジオメトリプロセサブロック700は、画
像面上の投影の現行ノード位置のトラックを保持する。
イメージウインドウメモリブロック800は、クワドツリ
ー構造中の画像面内におけるウインドウを編成、記憶す
るとともに、新たなウインドウがイメージ表示プロセサ
152によりイメージ表示ブロック154にプリントされるに
つれてクワドツリー構造を連続して更新する。このイメ
ージウインドウメモリブロックは、現行ウインドウオー
バレイのジオメトリとともに入力WPROP(現行4×4ウ
インドウアレイのE,PまたはF特性値)を受け入れ、次
のウインドウパケットを出力する。
イメージウインドウパケットプロセサブロック900は、
前述した出力WPROPを発生することにより、イメージウ
インドウメモリブロック800により作られたウインドウ
パケットを処理する。イメージウインドウパケットプロ
セサブロック900は、新ウインドウが表現されるにつれ
イメージウインドウメモリブロック800に記憶されるク
ワドツリーにペイントせねばならず(このペイントは、
上記表現にともなうウインドウFをマークするととも
に、イメージ表示プロセサPOPがレベルを上げるときは
いつでも、適切なものとしてのPまたはFに対するウイ
ンドウの祖先を変更することによりなされる)、かつ、
イメージウインドウメモリ800が更新される前であって
も、現行ウインドウに対する更新された特性値をさらに
提供しなければならない(なお、効率向上のためにクワ
ドツリー構造が上方に通過するときにだけ、このクワド
ツリー構造は更新される)。
イメージウインドウジオメトリプロセサブロック1000
は、現行ウインドウのジオメトリに関する情報を発生す
る。イメージウインドウジオメトリプロセサブロック10
00は、初期化制御ブロック160と、現在テスト中のウイ
ンドウのウインドウ番号(WBITSおよびWNUM)と、シー
ケンスコントローラブロック1600により発生されたウイ
ンドウレベル(WLEV、図示せず)とにより算出される種
々なロケーションおよびオフセットから、現行ウインド
ウのジオメトリを算出する。
ウインドウオーバレイ選択ロジックブロック1100は、現
行ノードパケットWPROPからの現行ノード用のウインド
ウオーバレイを選択する。ウインドウオーバレイ選択ロ
ジックブロック1100は、入力としてWPROP(現行4×4
ウインドウアレイ中の16個のウインドウおのおのに対す
るE,PまたはF特性値)を受け入れ、4×4アレイから
選択された2×2ウインドウオーバレイ内のウインドウ
おのおのに対するE,PまたはF特性値を出力する。ウイ
ンドウオーバレイ選択ロジックブロック1100はまた、選
択されたウインドウオーバレイ(第6D図ないし第6E図に
示すようにエンコードされたもの)を示すWBITS(W3×3
X,W3×3Y,W2×2XおよびW2×2Y)も発生する。
ウインドウ選択ロジックブロック1200は、入力として現
行ウインドウオーバレイの特性値を受け入れ、かつ、処
理すべきオーバレイ内の次のウインドウおよび選択され
たウインドウの特性値を選択する出力WNUMを発生する。
このウインドウの選択はBBOXテストの結果に左右される
ので、ウインドウ選択ロジックブロック1200は、BBOXテ
ストをパスしたウインドウとこのテストをパスしなかっ
たウインドウとの識別を行なわなければならない。ウイ
ンドウ選択ロジックブロック1200はまた、処理すべきウ
インドウが現行ウインドウオーバレイ内にもし残ってい
るならば、そのことを示す信号(WREM)を発生する。
カット面プロセサブロック1300は、その入力として、現
在処理中のノードのチルドレン番号(CNUM)およびノー
ドレベル(NVEV、図示せず)を受ける。カット面プロセ
サブロック1300は、現行ノードの投影のジオメトリをカ
ット面テスト面上に与えるとともに、第14B図を用いて
説明したカット面テストを行なう。カット面プロセサブ
ロック1300は2つの出力を発生する。1つは信号カット
面OKなる出力であり、この出力は、表示されるべきカッ
ト面により規定される領域内に少なくとも部分的に現行
ノードがあるときに発生される。もう1つは信号カット
面INTなる出力であり、この出力は現行ノードにカット
面の1つが交差したときに出力される。これらの出力
は、それぞれ、サイクル結果ブロック1500およびシーケ
ンスコントローラブロック1600に送られる。
サイクル結果ブロック1500はBBOX,PIおよびEテストを
行ない、これらのテストにパスしたか否かの結果を示す
出力を発生する。このブロックは、その入力として、オ
ブジェクトノードジオメトリプロセサブロック700によ
り作られた現行ノードの投影(X,Y,D0,D1およびD2オフ
セット値のファミリー)のジオメトリと、イメージウイ
ンドウジオメトリプロセサブロック1000からの現行ウイ
ンドウ(X,Y,D0,D1およびD2オフセット値のファミリ
ー)のジオメトリとを受ける。サイクル結果ブロック15
00はまた、その入力として、オーバレイからの16個のウ
インドウのうちどの4個であるかを決定するために現行
4×4ウインドウパケットからのウインドウオーバレイ
を選択するところのウインドウオーバレイ選択ロジック
ブロック1100により発生されるWBITSを受ける。つま
り、上記ウインドウはBBOX,PIおよびEテストによりテ
ストされるべきものとなる。最終的に、サイクル結果ブ
ロック1500は、その入力として、選択された4個のウイ
ンドウオーバレイについてのE,PまたはF特性値情報と
ともに、カット面プロセサブロック1300からのカット面
OK信号を受ける。サイクル結果ブロック1500は、シーケ
ンスコントローラブロック1600の命令にもとづき種々な
テストを行なうときに、上述した多くの入力を少数の出
力に変換する。
サイクル結果ブロック1500は、現行のウインドウオーバ
レイ中の4個のウインドウ全てについて同時にBBOXテス
トを行ない、4つの出力(BPASS0,BPASS1,BPASS2および
BPASS3)を発生する。これら4つの出力のおのおのは、
4個のウインドウの1つに対するBBOXテストの結果を示
す。これら4つのBBOX結果出力はウインドウ選択ロジッ
クブロック1200に送られる。すると、4個のウインドウ
のうちのいくつかがさらにPIおよびEテストを受けなけ
ればならないような選択ができるようになる。サイクル
結果ブロック1500はまた、シーケンスコントローラブロ
ック1600の命令の下で、オーバレイからの1個のウイン
ドウに対してPIテストおよび可能ならばEテストを行な
って、特定のウインドウが行なわれたテストにパスした
か否かを示す出力をシーケンスコントローラブロックに
送る。ここで、もしFノードについてウインドウがBBO
X、カット面、PIおよびEテストにパスするならば(そ
してもしこのウインドウが空であるならば)、サイクル
結果ブロック1500は、このウインドウがペイントされね
ばならないことを示す出力PAINTを発生するとともに、
このウインドウがどんな色もしくはどんな濃淡でペイン
トされるべきなのかを示すフェース番号出力を発生す
る。これらの2つの出力はウインドウ書込ブロック1400
に送られる。
ウインドウ書込ブロック1400は、ペイントされるべきウ
インドウの位置および寸法を、イメージ表示ブロック15
4上の画素領域に変換する。ウインドウ書込ブロック140
0は、その入力として、ウインドウの現行4×4アレイ
のジオメトリと、(この4×4アレイ内の現行ウインド
ウオーバレイの位置を示す)WBITSと、(ペイントされ
るべき1つのウインドウを上記ウインドウオーバレイ内
に配置する)WNUMと、WLEV(ウインドウレベルであり、
図示しない)とを受ける。そして、これらの入力から、
ウインドウ書込ブロックは、上記ウインドウに対応する
ものであってイメージ表示ブロック154上の領域内の各
画素のアドレスを発生する。
ウインドウ書込ブロック1400は、サイクル結果ブロック
1500からPAINT信号を受取ったときは、上記ウインドウ
に対応した表示スクリーン上の領域がペイントされるよ
うに、イメージ表示ブロック154を制御することにな
る。このペイントは、(上記ウインドウを囲むところの
ノードの投影のフェース番号に対応して決定されるもの
として、)適当な色もしくは濃淡によりなされる。(こ
こで、ウインドウ書込ブロック1400がウインドウをペイ
ントすると同時に、PAINT信号を受けるところのイメー
ジウインドウインドウパケットプロセサブロック900
が、同じウインドウが後に再びペイントされないように
イメージメモリブロック800に格納されたクワドツリー
構造を更新しなければならないことに、注意せよ。) シーケンスコントローラブロック1600は、イメージ表示
プロセサ152の他の全ブロックが自身の仕事を実行する
ためのシーケンスを制御する。このシーケンスコントロ
ーラ1600はまた、ウインドウやノードがいつ小区分され
なければならないかを決定する。シーケンスコントロー
ラブロック1600は、こうして、第18A図ないし第18B図に
示されるアルゴリズムによってイメージ表示プロセサ15
2を動作させる。
なお、スタックとラベルされたイメージ表示プロセサの
色々なブロックについては、さらに説明の必要がある。
メモリアドレススタック400はメモリアドレスプロセサ
ブロック300に接続され、オブジェクトノードパケット
スタック410はオブジェクトノードパケットプロセサブ
ロック500に接続され、オブジェクトノードジオメトリ
スタック420はオブジェクトノードジオメトリプロセサ
ブロック700に接続され、イメージウインドウパケット
スタック430はイメージウインドウパケットプロセサブ
ロック900に接続され、イメージウインドウジオメトリ
スタック440はイメージウインドウジオメトリプロセサ1
000に接続され、WBITSスタック450はウインドウオーバ
レイ選択ロジックブロック1100に接続され、BBOX結果ス
タック460はウインドウ選択ロジック1200に接続され、
カット面ジオメトリスタック470はカット面プロセサブ
ロック1300に接続される。メモリアドレススタック400
に、オブジェクトノードパケットスタック410、オブジ
ェクトノードジオメトリスタック420およびカット面ジ
オメトリスタック470は、全て、オクトリ構造が次のノ
ードレベルに行くときに処理されている現行ノードパケ
ットに関する情報を格納する機能と、イメージ表示プロ
セサが処理停止中にノードパケットの処理を続行できる
ように、上記オクトリがもとのレベルにもどるときにこ
のことを示す情報を一旦発生する機能とを、同じように
持っている。同様に、イメージウインドウパケットスタ
ック430、イメージウインドウジオメトリスタック440、
WBITSスタック450およびBBOX結果スタック460は、クワ
ドツリー構造が次のレベルダウンに行くときに(つまり
現行ウインドウが小区分されているときに)処理されて
いる現行ウインドウに関する情報を格納する機能と、こ
のクワドツリー構造がもとのウインドウレベルにもどる
ときにそのウインドウパケットに関する情報を発生する
機能とを、同様に持っている。
これらのスタックブロックおのおのは、PUSHおよびPOP
動作がなされるLIFOスタックとなる。メモリアドレスス
タック400、オブジェクトノードパケットスタック410、
オブジェクトノードジオメトリスタック420およびカッ
ト面ジオメトリスタック470は、全て、NPUSH(ノードプ
ッシュ)に応答して情報をプッシュし、NPOP(ノードポ
ップ)動作に応答して情報をポップする。同様に、イメ
ージウインドウパケットスタック430、ウインドウイメ
ージジオメトリスタック440、WBITSスタック450およびB
BOX結果スタック460は、全て、WPUSH(ウインドウプッ
シュ)命令に応答して情報をプッシュし、WPOP(ウイン
ドウポップ)命令に応答して情報をポップする。
上記スタックブロックは、イメージ表示プロセサに、第
18(A)ないし18(B)図に示されるアルゴリズムの循
環的な部分を実行させ、前記オクトリおよびクワドツリ
ー構造の双方を「ロックステップ」内で同時に、もしく
は独立別個に、通過させる。これらのスタックブロック
おのおのが互いに異なる情報(つまりこのブロックに付
随するワーキング値)を格納すると、これらは全て厳密
に同一の方法で同様な機能を持つようになる。(実際、
「ウインドウ」スタックは十分な幅の単一スタックとし
て機能することができる一方、「ノード」スタックは次
に幅広のスタックとして機能することができる。) イメージ表示プロセサ152を備えた互いに異なるブロッ
クおのおのについては、この発明の実施例の機能、作用
にもとづいて、さらに詳しく述べることにする。
メモリアドレスプロセサ 第15,25および26(A)ないし26(B)図は、本願実施
例に係るメモリアドレスプロセサ300のブロック構成を
示す。メモリアドレスプロセサ300の機能は、次のノー
ドパケットを得るためにオクトリエンコーデッドオブジ
ェクト格納ブロック140にアドレスすることと、このオ
クトリエンコーデッド格納ブロック内の現行ノードパケ
ットの子供を含むノードパケットの絶対アドレスを算出
することである。第17図において、オクトリエンコーデ
ッド格納ブロック内のメモリのワードでもってノードパ
ケットが相対アドレスフォーマットに格納されることを
思い出してほしい。各ワードの下位16ビットはノードパ
ケット内に格納された8つのチルドレンに対してE,Pま
たはF特性値を含む。一方、ノードパケット内に含まれ
るノードのチルドレンを含んだノードパケットのブロッ
クのアドレスを得るために、その上位16ビットは、ノー
ドパケットの絶対アドレスに加えられるところのアドレ
スオフセットを有している。
第26(A)ないし26(B)図において、ノードパケット
は、(好ましくは32ビット幅の)DATAラインを介して、
メモリアドレスプロセサブロック300に読込まれる。
(8つのノードのおのおののE,PまたはF特性値を格納
するところの)ノードパケットの下半分は、ノードパケ
ットレジスタ302に格納される。一方(アドレスオフセ
ット情報を示すところの)上位16ビットは、オフセット
レジスタ304に格納される。アドレスレジスタ306は、現
行ノードパケットのオクトリエンコーデッドオブジェク
ト格納ブロック140内に絶対アドレスを格納する(この
アドレスレジスタ306は、イメージ発生初期において、
初期化制御ブロック160により、ルートノードのチルド
レンを含んだノードパケットの絶対アドレスに初期化さ
れなければならないものである)。
アドレスレジスタ306の出力およびオフセットレジスタ3
04の出力は、加算器308により加算合成され、これによ
り(第17図に関して前述したように)現行ノードパケッ
トのノードのチルドレンを含んだノードパケットのブロ
ックのアドレスが発生される。このブロックアドレス値
はアドレスマルチプレクサ(MUX)310に入力される。こ
のマルチプレクサの出力はブロックポインタレジスタ31
2に接続される。加算器308に接続されたアドレスMUX310
の入力は、シーケンスコントローラブロック1600により
起動されるNPUSH動作中に選択される。これにより、現
在のノードパケットのノードをそのチルドレンに小区分
できるようになる。
ブロックポインタレジスタ312の出力はメモリアドレス
スタック400の入力に接続される。また、このメモリア
ドレススタックの出力は、アドレスMUX310の第2の入力
に接続され、NPOP動作中にMUX310により選択される。ノ
ードパケットがそのチルドレンに小区分されかつこれら
のチルドレンとそのグランドチルドレンが処理された後
は、NPOPはメモリアドレススタック400に働きかけて、
オクトリ構造のバックアップを拒否する。このとき、ブ
ロックポインタレジスタ312の前半の内容(これは小区
分が行なわれる前にメモリアドレススタック400に押込
まれたもの)は、メモリアドレススタックにより出力さ
れ、アドレスMUX310を介して多重化され、そしてブロッ
クポインタレジスタ312に再ロードされる。ノードパケ
ットのポップされたブロックの処理は、オクトリ構造の
小区分が開始される前は行なわれないようになってい
る。
上述のことからわかるように、この実施例では、「ショ
ートな」相対アドレスフォーマットではなく「ロング
な」アドレスフォーマット中のオクトリの高レベル内
に、ノードパケットのうちのいくつかが格納される(こ
れは、オクトリを格納するのに使えるメモリの幅を拡張
するためである)。この「ロング」フォーマット内に格
納されたノードパケットは、単一ワードとしてではなく
(オクトリエンコーデッドオブジェクト格納ブロック14
0内の連続した2ワードとして)64ビットメモリに格納
される。この64ビットノードパケットに正しくアクセス
するために、「ダブルフェッチ」サイクルが採用され
る。
シーケンスコントローラブロック1500は、オクトリエン
コーデッドオブジェクト格納ブロックから回収されるノ
ードパケットがショートフォーマットであるのかあるい
はロングフォーマットであるのかの決定を行なうことが
できる(ここで、トップパケットはロングフォーマット
内にあり、他の未使用ショートオフセットフィールド内
のビットはサブトリーがショートアドレスフォーマット
パケットを使うのみなのがいつなのかを示す)。もし、
回収されたノードパケットがロングフォーマットで格納
されるならば、このノードパケットの第1ワードが前述
したようにレジスタ302,304に回収、格納される。も
し、(仮に親がロングフォーマットであるときのショー
トアドレスフィールド内のフラグビットの値およびペア
レントのパケットサイズから)シーケンスコントローラ
ブロック1500が第2のフェッチが要求されていると判定
すると、このブロックは、アドレスを1つ増やすために
アドレスレジスタ306の出力上の加算器307にロジック1
を与え、かつレジスタ305内のDATAライン上に現われる
第2の32ビットワードを格納する(この情報は32ビット
ロングオフセットを示す)。レジスタ305の出力はオフ
セットレジスタ304の出力と加算器307の出力との和に加
えられ、これにより、メモリ内に、現行ノードパケット
から次に回収されるべきノードパケットまでのオフセッ
トが生じる。
上述したように、各ロングノードパケットの第1ワード
内のビットの1つは、そのチルドレンが「ショート」で
なく「ロング」であることを示すフラグビットとして用
いられる。こうして、ロングノードパケットはオクトリ
のいかなるレベルにおいても生じることができ、このオ
クトリの所定レベルにおけるノードパケットのいくつか
は、他のショートである間、「ロング」であることがで
きる。もちろん、ロングパケットの全ての先祖はロング
でなければならない。また、いくつかのノードパケット
を相対アドレスフォーマットとする一方で他のノードパ
ケットがチルドレンノードパケットのブロックの絶対ア
ドレスを含むように、メモリアドレスプロセサブロック
300を修正することは、当業者にとって容易なことであ
る。
ノードパケットレジスタ302に格納された現行ノードパ
ケットは、メモリアドレスプロセサ300の出力のうちの
1つであり、これはオブジェクトノードパケットプロセ
サブロック500に接続される。さらに、ノードパケット
レジスタ302の出力に生じるビットは、ロジックアレイ3
13(好ましくは、図示しないが、インバータ列とこれら
に続く2入力ANDゲート列)により平凡に合成され、8
つの出力が発生される。この8つの出力おのおのは、現
行ノードパケット内の対応ノードがP特性値(この実施
例ではPは「01」としてエンコードされるものとしてい
る)であるときに生じる。これら8つの値はMUX314を介
してノード置換レジスタ316に与えられる。
ノード置換レジスタ316の出力は、ロジックアレイ317
(平凡な組合せロジックアレイ)を介して7つの出力が
生じるよう結線される。この7つの出力とは、PART0
(ノードパケットに格納される最右ノードがPであると
きに生じる)、PART0+PART1(これはノードパケットの
2つの最右位置にあるPノード番号の演算和に等し
い)、PART0+PART1+PART2(これはノードパケットの
3つの最右位置にあるPノード番号の和に等しい)、…
およびPART0+PART1+PART2+PART4+PART5+PART6(こ
れはノードパケットレジスタ302に格納されたノードパ
ケットの7つの最右位置にあるPノード番号)である。
これら7つのライン(おのおのは好ましくは3ビット
幅)はゼロ値とともにMUX318の8つの入力に接続され
る。これらのラインから選択されたラインがCNUMO信号
に結合される(このCNUMO信号は、オブジェクトノード
パケットプロセサブロック150により発生された現行ノ
ードパケット内で現に処理されているチルドレンの番号
を示す)。
MUX318の出力は、処理されている現行ノードのチルドレ
ンを含むノードパケットのブロックポインタレジスタ31
2により指定されたノードパケット内でのオフセットで
ある。このオフセットは加算器320によりブロックポイ
ンタレジスタ312内に格納されたアドレスに加算され
る。これにより、チルドレンノードパケット(つまり現
行ノードパケットのチルドレンを含むノードパケット)
の絶対アドレスが発生される。また、このオフセットは
アドレスレジスタ306の入力に与えられる。ここで、も
しシーケンスコントローラブロック1600がNPUSHを指令
したとすると、この値はアドレスレジスタ306内にクロ
ックされ、メモリアドレスプロセサ300は現行ノードの
チルドレンにアクセスする。こうして、1レベル下にオ
クトリが通過する。
ノード置換レジスタ316の出力はまた、メモリアドレス
スタック400の入力に接続され、このメモリアドレスス
タックの出力はMUX314の入力に接続される。ここで、NP
USHが実行されると、ノード置換レジスタ316の内容がメ
モリアドレススタック400に格納される。同様に、NPOP
が実行されると、ノード置換情報がメモリアドレススタ
ックからMUX314を介してノード置換レジスタ316へもど
される。こうして、ノード置換情報は、オクトリが1レ
ベル下に通過するときに保持され、オクトリが現状レベ
ルにもどってくるときに停止していた処理を再開できる
ようになる。
メモリアドレスプロセサブロック300は未パックのオク
トリを取扱えるようにするために、「未パック」モード
とすることができる。この場合、ブロック313は全ての
ノードがPノードであることを示すよう強制される(た
とえ多くのPノードが実際にレジタ302に含まれている
としても、である)。
メモリ・アドレス・スタック 第27図を参照すると、メモリ・アドレス・スタック400
の概略的なダイヤグラムが示されている。先に述べたよ
うに、オブジェクト・ノード・パケット・スタック(Ob
ject Node Packet Stack)410、オブジェクト・ノード
・ジオメトリ・スタック(Object Node Geometry Stac
k)420、イメージ・ウインドゥ・パケット・スタック
(Image Window Packet Stack)430、イメージ・ウイン
ドゥ・ジオメトリ・スタック(Image Window Geometry
Stack)440、WBITSスタック450、BBOX・ソザルト・スタ
ック・(BBOX Results Stack)440、カット・プレーン
・ジオメトリ・スタック(Cut Plane Geometry Stack)
470はすべてメモリ・アドレス・スタック400と正確に同
じ態様で提供される。したがって、第27図は実際に規格
化されたスタック480を示している。スタック480は、ラ
ンダム・アクセス・メモリ(RAM)482およびデータ・レ
ジスタ(DATA Register)484を具備している。RAM482と
しては、スタック480が格納しなければならないレベル
数によってロケーション(location)数が決定される特
定のスタック適用に対して必要とされる容量を有する半
導体スタティック・ランダム・アクセス・メモリが適し
ている。メモリ・アドレス・スタック400、オブジェク
ト・ノード・パケット・スタック410、オブジェクト・
ノード・ジオメトリ・スタック420あるいはカット・プ
レーン・ジオメトリ・スタック470のようにスタック480
がノード・インフォメーション(Node Information)を
格納する場合には、それは1−パート−イン−65,536解
像度(1−part−in−65,536 resolution)(各ディメ
ンジョンにおいて)オクトリー(octree)に対して16個
のロケーションを有することが好ましい。付加的なレベ
ルがより高解像度のオブジェクトに対して使用される。
スタック480がウインドゥ・インフォメーション(例え
ばイメージ・ウインドゥ・パケット・スタック430、イ
メージ・ウインドゥ・ジオメトリ・スタック440、WBITS
スタック450あるいはBBOXリザルト・スタック460が格納
する)を格納する場合には、スタックとしては、10レベ
ル・クワドツリー(10 level quadtree)の上位9レベ
ルを格納するために、512ピクセル・ディスプレイ・ス
クリーンに対して9個のロケーションを有するものであ
ることが好ましい。付加的なレベルがより高解像度のイ
メージに対して使用されてもよい。
RAM482のアドレス・インプットは、シーケンス・コント
ローラ・ブロック1600によって発生される、(ノード・
スタックに対する)ノード・レベル信号NLEVあるいは
(ウインドゥ・スタックに対する)ウインドゥ・レベル
信号WLEVのいずれかに接続される。シーケンス・コント
ローラ・ブロック1600は、NLEVを単に増加させること
(およびRAM482についての書込みコントロールを付勢す
ることによって)NPUSHを遂行し、またNLEVを減少させ
ることによって(およびデータ・レジスタ484をクロッ
キングすることによって)NPOPを遂行する。シーケンス
・コントローラ・ブロック1600は、WLEVを増加させるこ
とによって(およびRAM482についての書込みコントロー
ルを付勢することによって)WPUSH動作をアナログ的に
遂行し、またWLEVを減少させることによって(レジスタ
484をクロッキングすることによって)WPOPを遂行す
る。
RAM482のデータ・アウト・アウトプット(DATA OUT out
put)はレジスタ484のインプットに接続されている。レ
ジスタ484は、常に、RAM482に格納された最新の値(し
たがってLIFOスタックを提供する)を含んでいる。RAM4
82のデータ・イン・インプット(DATA IN input)は、
次のプッシュ(PUSH)動作中にスタック480によって格
納されるべき値が入力されるスタック480のインプット
である。スタック480から適当な時に適当な信号が得ら
れることを確実にすることにおいて生じる複雑さが黙認
できる程度のものであるならば、レジスタ484は省くこ
とができることは当業者には理解されるところである。オブジェクト・ノード・パケット・プロセッサおよびノ
ード・セレクト・ロジッタ(NODE SELECT LOGIC) 第28図を参照すると、第25図に示されているオブジェク
ト・ノード・パケット・プロセッサ500およびノード・
セレクト・ロジック600の概略的なダイヤグラムが示さ
れている。
オブジェクト・ノード・パケット・プロセッサ500の機
能は、メモリ・アドレス・プロセッサ・ブロック300か
らのノード・パケットを受納して、所与の視野角に対し
てトラバーサル(traversal)・シーケンスにしたがっ
てノード・パケットにおけるノードをリオーダー(reor
der)し、かつノード・パケットにおけるすでに処理さ
れたノードのトラック(track)を保持することであ
る。オブジェクト・ノード・パケット・プロセッサ500
は、リオーダーされたノード・パケットNPROP(リオー
ダーされたノード・パケットに対するE,PあるいはF固
有値を含んでいる)を発生し、かつそれをノード・セレ
クト・ロジック・ブロック600に送る。ノード・セレク
ト・ロジック・ブロック600は、ノード・パケットNPROP
における7対0トラバーサル・シーケンスにおける次の
非エンプティ(non−Empty)ノードを選択する。ノード
・セレクト・ロジック・ブロック600は、その時のノー
ド(Eノードはとばされる)に対するPあるいはF固有
値を発生し、また(リオーダーされた)ノード・パケッ
トにおけるどのチャイルド番号(child number)がその
時のノードであるかを示す値CNUMを発生する。ノード・
セレクト・ロジック・ブロック600はまた、NPROPノード
・パケットに1個以上の非エンプティ・ノードが残って
いる場合に限定される信号NREMを発生する。
オブジェクト・ノード・パケット・プロセッサ・ブロッ
ク500は、入力として、メモリ・アドレス・プロセッサ3
00によって発生されたノード・パケットを受納する。こ
のノード・パケット(好ましくは16ビット・ワイド、す
なわち2ビット/ノード)はトラバーサル・シーケンス
・エンコーダ504に入力として供給される。トラバーサ
ル・シーケンス・エンコーダ・ブロック504は、所与の
視野角に対してトラバーサル・シーケンスにしたがって
ノード・パケットにおけるすべてのノードのポジション
を再編成する。第4(A)図および第17図を参照する
と、任意の所与のノード・パケットにおけるノードが任
意的に番号付けされており、かつ任意の視野角に対して
7対0(seven−to−zero)トラバーサル・シーケンス
にしたがってオクトリー・エンコーデッド・オブジェク
ト・ストレージ・ブロック140内に格納される。ユーザ
ー・ブロック150とのインターアクションを介してユー
ザーによって選択された視野角は、ノード・パケットに
おけるノードが視野角にしたがってアクセスされなけれ
ばならない(したがって隠れた表面は表示されないよう
に)シーケンス(八個のうちの一個)を決定する。
所与の視野角に対するトラバーサル・シーケンスは、第
4(A)図に示されるオクトリー座標系の八個の八分円
位置のうちのどこからオクトリー・ユニバース(octree
universe)が観察されるかによって決定される。三次
元座標系には八個の八分円位置があるので、各八分円位
置に対して一個、合計異なる八個のトラバーサル・シー
ケンスがあることになる。第15図のユーザー・ブロック
150とのインターアクションは、トラックボール(Track
ball)のポジィションを監視することによってどの八分
円位置から三次元ユニバースが観察されるかを決定し、
かつ各イメージ生成(image generation)の開始時にお
いてケース番号レジスタ503に格納されるケース番号値
(好ましくは3ビット・ワイド)を発生する。
次表は、表示されるべきオブジェクトが観察される三次
元ユニバースにおける八分円位置の関数としてのケース
番号に対する好ましいエンコーディング(encoding)を
示していると共に、第4(A)図において番号付けされ
たようなノードのトラバーサル・シーケンスを示してい
る。
第28図を再度参照すると、トラバーサル・シーケンス・
エンコーダ・ブロック504は二元的な機能を有する結合
性のあるロジック・アレイであることが好ましい。すな
わち、(1)ノードがケース番号値の関数としてトラバ
ーサル・シーケンス内に現われるようにメモリ・アドレ
ス・プロセッサ・ブロック300によって送られたノード
・パケットをリオーダーすること、(2)ノード・セレ
クト・ロジック・ブロック600によって発生されたCNUM
値(チャイルド番号)を、ケース番号によって特定され
るような所与の視野角のトラバーサル・シーケンスにし
たがってその時のノードのチャイルド番号を示すフォー
マットからそれがオクトリー・エンコーデッド・オブジ
ェクト・ストレージ・ブロック140に格納されるように
(すなわちそれがリーオーダーされる以前に)対応する
ノード番号に変形すること、である。
したがって、トラバース・シーケンス・エンコーダ・ブ
ロック504は、三つのインプット、すなわち、メモリ・
アドレス・プロセッサ・ブロック300によって発生され
たノード・パケット(好ましくは16ビット・ワイド)、
ノード・セレクト・ロジック・ブロック600によって発
生されたCNUM値(好ましくは3ビット・ワイド)、およ
びケース番号レジスタ503からのケース番号、を受納す
る。トラバーサル・シーケンス・エンコーダ・ブロック
504は、二つのインプット、すなわち、変形されたCNUM
値CNUM0(好ましくは3ビット・ワイド)、およびリオ
ーダーされたノード・パケットNOROP(好ましくは16ビ
ット・ワイド)、発生する。一般的なロジック・エレメ
ントを用いて、CNUMの1対1マッピング(one−to−one
mapping)をCNUM0に、またノード・パケットをNPROPに
変形するためのロジック・アレイを設計することは、当
業者には容易であろう。
マルチプレクサMUX502は、トラバーサル・シーケンス・
エンコーダ504のノード・パケット・インプットに接続
されており、またメモリ・アドレス・プロセッサ・ブロ
ック300によって発生されたノード・パケットと一組の
パード・ワイヤド(hard−wired)・ロジック“1"イン
プットとの間で選択する。MUX502のセレクト・ライン
は、ノード・セレクト・ロジック・ブロック600によっ
て発生されたその時のノードの固有値に接続される。そ
の時のノードがFである場合にはMUX502は、ハード・ワ
イヤド・ロジック“1"インプットを選択してFノードの
チルドレン(children)を含むノード・パケットを発生
あるいはシミュレートする(EおよびFノードのすべて
のチルドレンを除くためにオクトリー・ストラクチャ
(octree structure)はトリムされていることを思い出
されるであろう。しかしながら、Fノードはもしそれが
カット・プレーンと交差している場合には細分されなけ
ればならない)。そうでない場合には、メモリ・アドレ
ス・プロセッサ・ブロック300によってアクセスされた
チャイルド・ノード・パケットは、MUX502によって、ト
ラバーサル・シーエンス・エンコーダ504へのインプッ
トであるとして選択される。
変形されたCNUM0値は、オブジェクト・ノード・パケッ
ト・プロセッサ・ブロック500からメモリ・アドレス・
プロセッサ・ブロック300へのアウトプットであり、ノ
ードパケットのブロック内におけるアドレス・オフセッ
ト(adress offset)を決定するために使用される。ト
ラバーサル・シーケンス・エンコーダ504によって発生
されたリオーダーされたノード・パケットNPROPはMUX50
6のインプットに接続されており、そのアウトプットはN
PROPレジスタ508に供給される。NPROPレジスタ508のア
ウトプットはオブジェクト・ノード・パケット・スタッ
ク410のインプットに供給され、そのアウトプットはMUX
506の他のインプットに接続されている。NPUSHについて
は、NPROPレジスタ508にその時に格納された値がオブジ
ェクト・ノード・パケット・スタック410に入力され
る。(この時点において、新しい、細分化されたノード
・パケットがメモリ・アドレス・プロセッサ・ブロック
300によってオブジェクト・ノード・パケット・プロセ
ッサ・ブロック500に送られ、トラバーサル・シーケン
ス・エンコーダ・ブロック504によってリオーダーさ
れ、MUX506によって選択され、新しいノード・パケット
としてNPROPレジスタ508に格納される)。NPROPについ
ては、MUX506がオブジェクト・ノード・パケット・スタ
ック410のアウトプットを選択し、したがって、スタッ
ク410に格納された最新のNPROP値がNPROPレジスタ508に
クロック的に供給されそれによってノード・パケットの
処理はそれがスタック410に供給される以前にどこにあ
ったかについて回復することができる。NPROPレジスタ5
08のアウトプットはまた、オブジェクト・ノード・パケ
ット・プロセッサ・ブロック500からノード・セレクト
・ロジック・ブロック600へのアウトプットである。オ
ブジェクト・ノード・パケット・プロセッサ・ブロック
500は、ノード・セレクト・ロジック・ブロック600か
ら、その時処理されているノード・パケットNPROPのノ
ードのチャイルド番号であるインプットCNUMを受ける。
先に述べたように、CNUMはトラバーサル・シーケンス・
エンコーダ504にインプットとして供給されそれによりC
NUM0に変形される。さらに、CNUMは3対8(three−to
−eight)デコーダ510にインプットとして供給され、そ
れはまたシーケンス・コントローラ・ブロック1600によ
ってゲートされる。3対8デコーダ510はアウトプット
として八本のリセット・ラインを有しており、その各々
は、チャイルド・ノードの固有値を格納するNPROPレジ
スタ508の二ビットの八個のセットの一個に供給され
る。CNUMが新しくされた場合(その時のノードの処理が
完了しかつ次の非エンプティー・ノードが処理されなけ
ればならないことを指示する)にはいつでも、八本のリ
セット・ラインのうちの一本が限定されNPROPレジスタ5
08における特定のノードをクリア(エンプティに)す
る。このようにして、オブジェクト・ノード・パケット
・プロセッサ・ブロック500は、その時のノード・パケ
ットにおけるノードがすでに処理されているトラック
(track)を保持する。
ノード・セレクト・ロジック・ブロック600は、インプ
ットとして、オブジェクト・ノード・パケット・プロセ
ッサ・ブロック500からその時のノード・パケットNPROP
を受納する。それは、三つのアウトプット、すなわち、
CNUM(その時処理されているノード・パケットNPROPに
おけるノードのチャイルド番号を指示する3ビット値で
あることが好ましい)、チャイルド番号CNUMに対するP
あるいはF個有値、NPROP内に任意の“アクティブ”
(すなわち非エンプティ)な未処理のノードが残存して
いる場合に限定されるNREM、を発生する。
ノード・パケットNPROPは、プライオリティ・エンコー
ダ(Priority Encoder)602(74F148プライオリティ・
エンコーダを含んでいることが好ましい)のインプット
に接続されている。プライオリティ・エンコーダ602の
アウトプットは、NPROPにおける(7対0トラバーサル
・シーケンスにおける)次の非エンプティ・ノードを示
す3ビット値である。この3ビット・アウトプットはCN
UMレジスタ604のインプットに接続され、シーケンス・
コントローラ・ブロック1600がその時のノードの処理が
完了であることを決定するときにはいつでもレジスタ60
4にクロック的に入力される。CNUMレジスタ604のアウト
プットCNUMは、処理されているその時のノードNPROPの
番号である。
NPROMは8ビットの二個のセットに分割される。一方の
セットの8ビットはNPROPにおける八個のノードの下位
固有値ビットを構成しており、他方のセットの8ビット
はNPROPにおける八個のノードの上位固有値ビットを構
成している。これれはそれぞれ8対1MUX(MUX606および
MUX608、それぞれ)に送られる。MUX606および608はプ
ライオリティ・エンコーダ602からの同じ3ビット・セ
レクト・ライン・3ビット(未登録)・アウトプットに
よって選択される。したがって、MUX606および608は相
互に、NPROPにおける次の非エンプティ・ノードに対す
るPあるいはFインフォメーションを選択する。MUX606
および608の出力は共にCNUMレジスタ604に接続されてお
り、またCNUMの新しい値と共にレジスタ604にクロック
的に入力される。任意の所与の時刻におけるCNUMレジス
タ604は、ノード・パケットNPROPのCNUMチャイルド番号
に対するPあるいはF固有値とCNUMとを含んでいる。
ノード・セレクト・ロジック・ブロック600は、NPROPに
非エンプティの未処理ノードが残っている場合にはいつ
でも限定される1ビット値であることが好ましい1つ以
上のアウトプットNREMを発生する。その時のノードCNUM
に対するPあるいはF個有値およびNREM値は共にシーケ
ンス・コントローラ・ブロック1600に送られ、それによ
りシーケンス・コントローラは処理されているその時の
ノードの固有値ならびにその時のノード・パケットNPRO
Pがいつ完全に処理されたかを決定することができる。
その時のノード・パケットにおけるノードが処理される
場合には、それらの固有値はオブジェクト・ノード・パ
ケット・プロセッサ・ブロック500のNPROPレジスタ508
からクリアされ、それによりオブジェクト・ノード・パ
ケット・プロセッサ・ブロック500はノード・セレクト
・ロジック・ブロック600と共にその時のノード・パケ
ットにおけるノードが処理されたトラックを保持する。
NREM信号は、16ビットNPROPの任意のものが限定された
場合にプライオリティ・エンコーダ・ブロック602によ
って限定される(一般的に入手可能なゲートによって一
般的に提供される信号)。
オブジェクト・ノード・ジオメトリ・プロセッサ 第25図を参照すると、オブジェクト・ノード・ジオメト
リ・プロセッサ・ブロック700の機能は、その時のノー
ドのジオメトリに関するインフォメーションを、ウイン
ドゥ・オーバーレイ・セレクト・ロジック・ブロック
(Window Overlay Select Logic block)1100(ウイン
ドゥ・オーバーレイの選択を可能にするために)に、ま
たサイクル・リザルト・ブロック(Cycle Results bloc
k)1500(それをしてBBOX、PIおよびEテストの実行を
可能にするために)に供給することである。オブジェク
ト・ノード・ジオメトリ・プロセッサ700は、インプッ
トとして、ノード・セレクト・ロジック・ブロック600
からのCNUM値(その時のノード・パケットにおいて処理
されているノードの番号を表わす)を受納する。それ
は、五系のアウトプット、X′,Y′,D0,D1,D2ディメン
ション(第20(A)図ないし第20(C)図および第21
(A)図ないし第21(F)図参照)の各々において処理
されているその時のノードのジオメトリを発生する。
第29図を参照すると、オブジェクト・ノード・ジオメト
リ・プロセッサ700は二つの基本セクション、すなわ
ち、ノード・バウンディング・ボックス・ジオメトリ・
ブロック(Node Bounding Box Geometry block)702お
よびノード・ポリゴン・ジオメトリ・ブロック(Node P
olygon Geometry block)750に分割されている。二個の
ブロックのみが示されているけれども、実際には、ノー
ド・バウンディング・ボックス・ジオメトリ・ブロック
702は二つのディメンジョンの重複体(duplication)
(一方はX′に対して、また一方はY′に対して)であ
り、ノード・ポリゴン・ジオメトリ・ブロック750は三
つのディメンジョンの重複体(それぞれD0,D1,D2のディ
メンジョンの各々に対して)である。
オブジェクト・ノード・ジオメトリ・プロセッサ・ブロ
ック700は、初期化用(Initialization)コントローラ
・ブロック160によって初期化され、ノードPUSHに対し
て右に一位置だけシフトされノードPOPに対して左に一
位置だけシフトされる数個のシフト・レジスタを含んで
いる。それらは、ノード・レベルNLEV(処理されている
その時のノードが位置しているオクトリーのレベルを示
すシーケンス・コントローラ・ブロック1600によって発
生された値)にしたがって左あるいは右に適当ビット数
だけシフトする。bレジスタ704は、初期化用コントロ
ーラ・ブロック160によって、第20(B)図に示される
ように計算された値bxに初期化される(あるいはy′デ
ィメンジョンにおけるノード・バウンディング・ボック
ス・ジオメトリ・ブロック702の二つのディメンジョン
に対して初期化される)。aテーブル706は、第20
(C)図に計算され示されているax0−ax7オフセット
(あるいはy′方向におけるノード・バウンディング・
ボックス・ジオメトリ・ブロック702の二つのディメン
ジョンに対するay0−ay7オフセット)を含む八個のシフ
ト・レジスタのバンク(bank)である。同様に、NDOFF
テーブル752は四個のシフトレジスタを具備しており、
その各々は第21(D)図ないし第21(F)図に計算され
示されている三個のND0OFF値の適当な一つあるいは0に
初期化される(ND1OFF値はノード・ポリゴン・ジオメト
リ・ブロック750のD1ディメンジョンに対するものであ
り、ND2OFF値はノード・ポリゴン・ジオメトリ・ブロッ
ク750のD2ディメンジョンに対するものである)。同様
に、FDIAGレジスタ754は第21(D)図ないし第21(F)
図に計算されて示されているようにFDIAG0値に初期化さ
れる(FDIAG1値はノード・ポリゴン・ジオメトリ・ブロ
ック750のD1ディメンジョンに対するものであり、FDIAG
2値はノード・ポリゴン・ジオメトリ・ブロックのD2デ
ィメンジョンに対するものである)。同様に、NDIAGレ
ジスタ756は第21(D)図ないし第21(F)図に計算さ
れて示されているNDIAG0値に初期化される(NDIAG1およ
びNDIAG2は値はそれぞれノード・ポリゴン・ジオメトリ
・ブロック750のD1およびD2ディメンジョンに対するも
のである)。ジオメトリック値の各々は所望の精度を提
供するために24ビット・ワイドのものであることが好ま
しい。
bレジスタ704、FDIAGレジスタ754、NDIAGレジスタ75
6、aテーブル706およびNDOFFテーブル752を提供するた
めに用いられるシフトレジスタは好ましくは24ビットよ
り実質的に大きいが、24ビットアウトプットのみを発生
する。これらシフトレジスタの残りのビットは“アンダ
ーフロー容量”を提供する。このことは、アウトプット
を発生する24ビットからシフトした値が失われず他のと
ころに格納されそれによってシフトレジスタにシフトバ
ックされることを意味している。この“アンダーフロー
容量”は、ロング・シフトレジスタ(long shift regis
ter)によってあるいはRAMのような補助格納エレメント
によって提供されることが好ましい。
すべてのこれらのシフトレジスタは信号NLEVに依存して
同数のビットだけシフトする。任意の所与のノードのデ
ィメンジョンはそのペアレント(parent)のディメンジ
ョンの正に1/2であるので、第20(B)図ないし第20
(C)図および第21(A)図ないし第21(F)図に示さ
れるように計算されたすべての値はそれを単に2の適当
な因数で割ることによって任意のノード・レベルで使用
されることを思い出すであろう。二進数を2の適当な因
数で割ることは単にその数を適当ビット数だけ右へシフ
トさせることによって達成されることは当業者には理解
されるところである。したがって、bレジスタ704、FDI
AGレジスタ754、NDIAGレジスタ756、およびaテーブル7
06およびNDOFFテーブル752の各々におけるレジスタは、
その時のノード・レベルに対する適当なノード・ジオメ
トリ値を計算するためにオクトリー・ストラクチャが細
分化されたノード(NPUSH)に下方に向って横切られる
毎に右に一位置だけシフトされ、またオクトリー・スト
ラクチャが基根ノード(root node)(NPOP)に向って
1レベルだけバック・アップされて横切られる毎に左に
一位置だけシフト・バックされる。
ノード・バウンディング・ボックス・ジオメトリ・ブロ
ック702はまた、第20(B)図に示されるように計算さ
れたNPX値(NPYはノード・バウンディング・ボックス・
ジオメトリ・ブロック702のY′ディメンジョンであ
る)を含むように初期化用コントローラ・ブロック160
によって初期化されるバウンディング・ボックス・オリ
ジン・レジスタ(Bounding Box Origin Resister)708
を具備している(NPX,NPYはオクトリー・ユニバースに
対するバウンディング・ボックスの基根(origin)であ
ることを思い出されるであろう。)。レジスタ708のア
ウトプットは加算器710のインプットに接続されてお
り、その他方のインプットはaテーブル706のアウトプ
ットに接続されている。
先に述べたように、aテーブル706はax0−ax7(ay0−ay
7はノード・バウンディング・ボックス・ジオメトリ・
ブロック702のy′ディメンジョンに対するものであ
る)値を格納する。これら値の各々は、その時のノード
・パケットにおける八個のノードの一個に対するバウン
ディング・ボックス・オフセットに対応する。3対8デ
コーダ714は、ノード・セレクト・ロジック・ブロック6
00からのインプットとしてCNUMを受納し、また各々がa
テーブル706における八個のシフトレジスタの一個を選
択するために使用される相互に排他的な八個のアウトプ
ットの一個を発生する。したがって、その時のノード・
パケットにおいてアクセスされるノードに対する適当な
ax(ay)値が加算器710に供給される。
したがって加算器710のアウトプットはその時のノードN
CX(NCY)のチャイルドに対するバウンディング・ボッ
クスの基根を表わしている。アウトプットNCXはMUX712
のインプットに接続されており、そのアウトプットはバ
ウンディング・ボックス・オリジン・レジスタ708のイ
ンプットに接続されている。MUX712の他方のインプット
はオブジェクト・ノード・ジオメトリ・スタック420の
アウトプットに接続されている。オブジェクト・ノード
・ジオメトリ・スタック420のインプットはレジスタ708
のアウトプットに接続されている。NPUSHの間、MUX712
はNCXインプットを選択し、NCXはレジスタ708内にクロ
ック的に入力される。同時に、NPXのその時の値がオブ
ジェクト・ノード・ジオメトリ・スタック420に入力さ
れる。NPOPの間、MUX712はオブジェクト・ノード・ジオ
メトリ・スタック420のアウトプット(ペアレント・ノ
ードのNPX(NPY)値)を選択し、それはレジスタ708に
クロック的に入力される。このようにして、オブジェク
ト・ノード・ジオメトリ・プロセッサ700は、オクトリ
ーがあるレベルを上方にあるいは下方に向って横切られ
た時にバウンディング・ボックス・オリジン(NPX,NP
Y)に対する適当な値を発生する。
NDOFFテーブル752からの四個のNDOFF値のうちの適当な
一個を選択するために3対8デコーダ714のアウトプッ
トがまた供給される。NDOFFテーブル752のアウトプット
は加算器758の一方のインプットに接続されており、そ
の他方のインプットはNPDレジスタ760のアウトプットに
接続されている。NPDレジスタは、第20(A)図に示さ
れるように計算されたNPD0値(NPD1およびNPD2はそれぞ
れノード・ポリゴン・ジオメトリ・ブロック750のD1お
よびD2ディメンジョンに対してである)を含むように初
期化用コントローラ・ブロック160によって初期化され
る。したがって、加算器758のアウトプットは、ディス
プレイ・スクリーン212(第20(A)図に示されるよう
な)のオリジン104から、NPDレジスタ760に格納された
ペアレント・ノードのチャイルド・ノードCNUMのプロジ
ェクション(projection)のD0(D1あるいはD2)エッジ
へのオフセットである。この値はサイクル・リザルト・
ブロック1500へのアウトプットであり、MUX762のインプ
ットに供給される。MUX762のアウトプットはNPDレジス
タ760のインプットに接続されている。NPDレジスタ760
のアウトプットはまたオブジェクト・ノード・ジオメト
リ・スタック4420のインプットに接続されており、その
アウトプットはMUX762の他方のインプットに接続されて
いる。NPUSHの間、NPDレジスタ760の内容はオブジェク
ト・ノード・ジオメトリ・スタック420に入力され、加
算器758のアウトプットはMUX762によって選択されかつN
PDレジスタにクロック的に入力される。このようにし
て、チャイルド・ノード・プロジェクションに対するNP
D0(NPD1およびNPD2)偏位置がそのペアレントの偏位置
から引き出される。同様に、NPOPの間、オブジェクト・
ノード・ジオメトリ・スタック420のアウトプットは、M
UX762によって選択され、また細分化処理の完了時にオ
クトリーがあるレベル上方に横切られた時にNPD0(NPD1
およびNPD2)偏位置をNPDレジスタに戻すためにNPDレジ
スタ760にクロック的に入力される。
イメージウィンドメモリ 第30(A)図は第25図のイメージウィンドウメモリブロ
ック800の詳細なブロック図を示している。イメージウ
ィンドウメモリ800の機能はクワドツリー構造の視野面
のウィンドウを表現すること、要求されている選択され
たウィンドウパケットを取り戻すこと、描かれたウィン
ドウをFに変え、描かれたウィンドウのアクセスをPあ
るいは適当にFに変化することによりクワドツリーを更
新することである。
アクセスされるときに8チルドレンノードの全てのノー
ドパケットを生む、オクトリーに符号化されたオブジェ
クトストレージブロック140とは異なり、イメージウィ
ンドウメモリブロック800は、ペアレントウィンドウオ
ーバレイの四個のペアレントウィンドウの各々の四個の
チルドレンからなるウィンドウパケット(結果的に、全
てで16ウィンドウとなる)を生じなければならない。ウ
ィンドウオーバレイセレクトロジックブロック1100は、
上記の16ウィンドウから4個の連続したウィンドウの新
しいウィンドウオーバレイを選択する。ウィンドウオー
バレイが与えられたノードプロジェクションを閉じるた
めに設けられた四個の連続したウィンドウとして規定さ
れるために、この付加された複合体が存在する。これら
の四個の連続したウィンドウが同じペアレントウィンド
ウのチルドレンであるかは保証されていない。また、全
ての16個のウィンドウはWPOP動作の期間中に同時に必要
とされるかもしれない。というのは、それらは全て四個
の減少されたペアレント値を発生させるために試験され
る必要があるからである。
カレント4×4ウィンドウアレイにおいて任意の四個の
連続したウィンドウの四個のチルドレンを同時にアクセ
アスするためには、本発明の好ましい現在の実施例で
は、物理的に分離され、個々にアドレスされる四個の異
なるメモリからなる差込まれたメモリが用いられてい
る。四個のメモリの各々はクワドツリー構造の四分の一
を記憶している。第30(B)図によれば、ディスプレス
クリーン212からなるクワドツリーのレベルで、全ての
ウィンドウは図に示されたように、A,B,C,Dウィンドウ
に組織される。Aウィンドウは左下部の頂部がオリジン
104に対応するように任意的に位置し、B,C,Dウィンドウ
は図示されたようにAウィンドウを囲むように配置され
ている。
第30(A)および第30(B)図によれば、Aウィンドウ
のチルドレンはAアレイ802に記憶され、Bウィンドウ
のチルドレンはBアレイ804に記憶され、Cウィンドウ
のチルドレンはCアレイ806に記憶され、Dウィンドウ
のチルドレンはDアレイ808に記憶される。四個のチル
ドレンウィンドウのファミリはその各々のアレイの同一
のワードに記憶される。もしも同じアドレスが全てのア
レイ802、804、806、808に適用されると、同じペアレン
トウィンドウの16個のグランドチルドレンが発生され
る。例えばウィンドウ295A−295Dである。
上述したように、4×4のウィンドウアレイのどの四個
のウィンドウがウィンドウオーバレイとして選択される
かは予め定めることはできない。第30(B)−30(F)
図によれば、任意のウィンドウオーバレイはAウィンド
ウ、Bウィンドウ、Cウィンドウ、Dウィンドウからな
り、これらのウィンドウの四個の異なる配置のみが可能
であることが理解される。
再び第30(A)図によれば、クワドツリーアドレスマッ
プ810は入力として値WPX WPYを許容する。ウィンドウオ
ーバレイのオリジンを補助分割されるように表わされて
いる。更に、クワドツリーアドレスマップ810はMAPXビ
ット、MAPYビットを受入れる。これらのビットはウィン
ドウオーバレイにおける種々のウィンドウがアレイ80
2、804、806、808に如何にマップされるべきかを決定す
る。すなわち、どのウィンドウがどのアレイによって発
生されるべきかを決定する。アドレスWPX、WPYはウィン
ドウオーバレイを第30(C)図に示されたフォーマット
に配置された挿入メモリに実際に仕分けする。MAPX、MA
PYは、このフォーマットでの変化を異容するための最小
有意ビットとして眺められる。
クワドツリーアドレスマップ810は、A,B,C,Dアレイ80
2、804、806、808への入力に印加された16ビットの1−
1マッピングを行なう。WPX,WPYはそれぞれ適切には7
ビットであり、一方MAPX,MAPYは適切には1ビットであ
る。各アレイに対するアドレスは次のようにして計算さ
れる。
Aアレイアドレス=WPX!WPY Bアレイアドレス=(WPX+MAPY)!WPY Cアレイアドレス=WPX!(WPY+MAPY) Dアレイアドレス=(WPX+MAPX)!(WPY+MAPY) ここで!は連鎖機能であり、+は代数和を示している。
MAPX,MAPYビットが両方とも0(この場合には、補助分
割されたウィンドウカーバレイが同じペアレントウィン
ドウの四個のチルドレンウィンドウを構成する特別のケ
ースである)であれば、A,B,C,Dアドレスは全て等しく
なることは、当業者なら容易に理解されるであろう。MA
PXとMAPYが共に0でない場合には、アレイ802−808に実
際に入力されたアドレスは等しくなくなる。この理由か
ら、クワドツリーアドレスマップ810は単一的な1−1
マッピングを実行する(このことはアレイ802、804、80
6、808の任意の一個におけるロケーションはWPX,WPY,MA
PX,MAPYの唯一の組合せを介してのみ到達されることが
できることを意味する)。一方、情報はアレイの各々に
連続的に記憶されるのではなくむしろ外観上ランダム形
式で記憶される(所定の情報のアドレスはたやすく計算
されるけれども)。
WPX,WPY,MAPX,MAPY値の任意のセットに対して、32ビッ
トのデータからなるウィンドウパケットはA,B,C,Dアレ
イ802,804,806,808によって発生される。上記32ビット
は補助分割された2×2ウィンドウオーバレイからなる
四個のペアレントの各々に対する四個のチルドレンウィ
ンドウの各々の2ビットの適値からなる。このデータは
第6(F)図に示されたウィンドウオーバレイの任意の
横方向のシーケンスとの一致を保つために再び整理され
なければならない。この再整理はデータリードマップ81
2によってなされ、データリードマップ812はMAPXとMAPY
の値にしたがって情報を再整理する。
隠れた表面がイメージにディスプレイされないように、
ウィンドウがイメージディスプレイブロック154によっ
て描かれるあらゆる時にクワドツリー構造は連続的に更
新されなければならないので、イメージウィンドウメモ
リ800は書込み及び読出しがなされなければならない。
オクトリーに符号化されたオブジェクトストレージブロ
ック140に比較すると、そこでは読出しだけがなされ、
書込みはなされていない。これは所定のノードは一度だ
けアクセスされるが、所定のウィンドウは多数回アクセ
スでき一度だけ描き出されるからである。データライト
マップ814はWPROPを第6(F)図に示された横方向のシ
ーケンスからA,B,C,Dアレイ802,804,806,808へのストレ
ージに対するフォーマットに再整理することによって、
データリードマップ812のタスクに似たタスクを行な
う。WPROPは要するにイメージウィンドウパケットプロ
セッサ900によって既に更新されたウィンドウパケット
を示している。2方向のトリステートバス816はA,B,C,D
アレイ802,804,806,808のデータインプット/アウトプ
ットをデータライトマップ814の出力あるいはデータリ
ードマップ812の入力に接続するために使用されてい
る。
クワドツリーブロックイネーブルロジックブロック818
は四個のアレイ802,804,806,808の任意の組合せを選択
的に可能とする為に用いられている。一般的に、クワド
ツリーイネーブルロジック818は全てのアレイをイネー
ブルする。しかしながら、要するに、所定のウィンドウ
オーバレイがディスプレイスクリーン212上に全く存在
しないことは有りうる。前述したように、視野のディス
プレイスクリーンセクションのみがクワドツリー構造に
組織化される。だからディスプレイスクリーン上のウィ
ンドウのみがイメージウィンドウメモリ800に記憶され
る。ディスプレイスクリーン212の先端に位置するFノ
ードは四個のウィンドウのウィンドウオーバレイを規定
する。そのうちの数個のウィンドウのみがディスプレイ
スクリーンの一部である。クワドツリーブロックイネー
ブルロジックブロック818はディスプレイスクリーン上
のウィンドウに対応するアレイ802,804,806,808のみを
イネーブルする。すなわち、イメージウィンドウジオメ
トリプロセッサーブロック1000によって発生される四個
の値POUTRX,POUTRY,POUTLX,POUTRYからディスプレイス
クリーン上にどのウィンドウが存在するかを決定する。
最後に、イメージが形成される前にクワドツリー構造の
あらゆるレベルでの各ウィンドウは、E(00)に初期化
されなければならない。というのはディスプレイスクリ
ーンは各イメージが発生される前にはブランクであるか
らである。イメージが発生される前にクワドツリーをク
リーニングする機能はクワドツリークリアアドレスジェ
ネレータ820とアドレスMUX822,824,826,828によってな
される。クワドツリークリアアドレスジェネレータはイ
メージが発生される前にシーケンスコントローラ1600か
らスタート信号を受取る。スタート信号に応答して、ク
ワドツリークリアアドレスジェネレータ820はクワドツ
リーブロックイネーブルロジックブロック818及び四個
のMUX822,824,826,828の選択インプットに接続されたク
リアビージィ信号を主張する。MUX822−828はそれぞれ
クワドツリーアドレスマップ810とA,B,C,Dアレイ802,80
4,806,808間のアドレス線上に位置している。MUX822,82
4,826,828は、クリアビージィラインが主張されている
かどうかによって、クワドツリーアドレスマップ810の
アウトプットとクワドツリークリアアドレスジェネレー
タ820によって発生される単一のパラレルアドレス間を
選択する。すなわちクリアビージィラインが主張されて
いる場合にはクワドツリークリアアドレスジェネレータ
820によって発生されるアドレスを選択する。クワドツ
リークリアアドレスジェネレータ820によって発生され
るアドレスはロケーション0で始まり、アレイ802,804,
806,808におけるあらゆるロケーションを介してステッ
プされる。一方、アレイ802,804,806,808は全てクワド
ツリーブロックイネーブルロジックブロック818によっ
てイネーブルされ、トリステートバス816の全てのビッ
トはロジックレベル0にされ、したがって0データが全
てのアレイのデータインプットに現われる。このように
して0値が各々四個のアレイ802,804,806,808のあらゆ
るロケーションにストアされ、こうしてクワドツリー構
造を全てのエンプティウィンドウに初期化する。
第31(A)図にはクワドツリーアドレスマップ810の概
略図が示されている。上述したように、クワドツリーア
ドレスマップ810は各アレイ802,804,806,808に対する四
個のアドレスを発生させるために値WPXとWPY(適切には
7ビット)と値MAPXとMAPY(適切には1ビット)とを結
合する。WPXとMAPXはアダー822によって加算され値(WP
X+MAPX)が生じ、一方WPYとMAPYはアダー824によって
加算されて値(WPY+MAPY)が生じる。式に示されてい
る種々の連鎖は適当なラインを単純に平行化することに
より達成される。四個のアドレスアウトプットはMUX82
2,824,826,828にそれぞれ接続され、アレイ802,804,80
6,808をそれぞれアドレスするために使用される。
第31(B)図には四個のアレイ802,804,806,808の中の
ひとつの概略図が示されている。四個のアレイの各々の
概略図は全く等しい。各アレイ802−808は九個のセクシ
ョンからなっている。これらのセクションの内の八個は
RAMあるいはRAM部であり、各RAMはクワドツリー構造の
異なるレベルでのウィンドウを記憶する。だからRAM828
はクワドツリーのレベル2でのウィンドウをストアし、
RAM828はクワドツリーのレベル7でのウィンドウをスト
アし、RAM830はクワドツリーのレベル8でのウィンドウ
をストアし、RAM832はクワドツリーのレベル9でのウィ
ンドウをストアする。明らかに、RAMのサイズはクワド
ツリーレベルが増加するに伴ない増加しなければならな
い。というのは、レベルにおける各変化はウィンドウ数
における四倍の増加を表しているからである。だからRA
M826(レベル2)は1ロケーションを有し、RAM828(レ
ベル7)は32×32ロケーションを有し、RAM832(レベル
9)は128×128ロケーションを有している。各RAMにお
ける各ロケーションは8ビットワードであり、補助分割
されたウィンドウオーバレイにおける四個のウィンドウ
の内の一個に属する四個のチルドレンの特性値を記憶す
る。だから例えばアレイ802はAウィンドウのA,B,C,Dチ
ルドレンの特性値を生む。
本設計では、512対512ピクセルスクリーンに対し、レベ
ル9で四個のアレイ802−808は各々128×128ロケーショ
ンRAM832を有し、各ロケーションは四個のピクセルを表
している。だから全ての512対512ピクセルが表現され
る。その方法は他のディスプレイスクリーンサイズに対
して容易に拡張あるいは縮小される。実際、多重レベル
に対するメモリはアドレス空間の離隔した領域に置くこ
とにより物理的に同じメモリチップに結合することがで
きる。また、レベル9では、ピクセルあたり1ビット
(ロケーションあたり4ビット)のみが必要とされる。
というのは、EとFノートだけが表現される必要がある
からである(クワドツリーの最小レベル、すなわちレベ
ル9ではPノードは有り得ない)。この結果メモリの節
約ができる。
これら八個のRAM826−832の各々はそれらに接続された
イネーブルラインを有していて、したがってただ一個の
RAMだけが任意の時間にイネーブルされる(ただしそれ
ら全てが同時にイネーブルされる消去動作中は除い
て)。八個のRAMはクワドツリーアドレスマップ810によ
って生起される共通アドレスラインによってアドレスさ
れ、それらのデータラインの全ては共通のトリステート
2方向データバス816A(第30(A)図に示された同一の
トリステートバスの一部)に接続される。レベル9RAM83
2は14ビットのアドレス情報を必要とし、レベル8RAM830
は12ビットだけを必要とする。クワドツリーアドレスマ
ップブロック810(第31(A)図に示す)によって形成
される各WPXとWPY表現における最上位のビットはクワド
ツリーの低位レベルを記憶しているRAMに対して適当に
消去される。
MUX834、トリステートバスディバイダ836とORゲート838
からなるコンビネーションロジックブロック833は、種
々の特別なケースを取り扱うための種々の機能を達成す
る。ブロック833はクワドツリーの消去動作中に全ての
零をバス816A上に位置させる。またディスプレイスクリ
ーン212の外部のウィンドウがアクセスされる場合には
全ての“1"をそのバス上に置く。最後に、ブロック833
は、簡単に説明したように、レベル1RAMに対抗する。
コンビネーションロジックブロック833の第一の機能は
クワドツリーの消去動作中に全ての零を816A上に置くこ
とである。第30(A)図に示されたクワドツリークリア
アドレスジェネレータブロック820によって形成される
クワドツリークリアビージィラインが主張された場合に
は、MUX834は全ての零のインプットを選択して、それを
バスドライバ836に供給する。一方、ORゲートのアウト
プットが主張された場合には、バスドライバ836のアウ
トプットをバス816Aにイネーブルする。このようにして
全ての零がRAM826−832の全てのインプットに現われ
る。
このコンビネーションロジックはまた、アクセスされる
ウィンドウがディスプレイスクリーン上にない場合も取
扱う。第30(A)図のクワドツリーブロックイネーブル
ロジックブロック818は特別なアレイに供給されたアド
レスがディスプレインスクリーン上のウィンドウに対す
るものではなく、したがってそのアレイに意味のあるア
ドレスではないことを示す信号OUT(各アレイ802,804,8
06,808に対して一個)を発生する。各アレイ802,804,80
6,808はアドレスされる全ての可能なウィンドウを含む
ように十分に大きく構成されているが、本発明のここに
示す実施例では、スクリーン上にないウィンドウに対す
るメモリをシミュレートすることにより、必要とされる
メモリサイズを最小に減少させている。もしもOUT信号
が主張されたならば、トリステートバスドライバ836が
イネーブルされ、OUT信号はそれ自身全てのF情報をデ
ータバス816上に置くためにMUX834によって選択される
(想起されるように、Fウィンドウは決して描かれな
い。ディスプレイスクリーン上にない全てのウィンドウ
は捨て去られる)。OUT信号は以下に示すように全ての
E情報をデータバス816上に置くために使用される。
クワドツリー構造のレベル1は、ディスプレイスクリー
ン上に存在しないウィンドウを取り扱う特別なケースと
してみなされる。クワドツリーのレベル1でのウィンド
ウはディスプレイスクリーンのサイズのウィンドウ(レ
ベル0ウィンドウ)のチルドレンであることは取消され
る。第20(A),43(A)と30(B)図から、ディスプ
レイスクリーンのサイズのウィンドウからなるウィンド
ウオーバレイの選択は無理であり、したがってディスプ
レイスクリーンに対応するウィンドウはオーバレイにお
ける左下部のウィンドウと“A"ウィンドウの両方であ
る。だからオーバレイは第30(C)図に示すような配置
を有している。ここでAウィンドウはディスプレイスク
リーンである。B,C,Dウィンドウのチルドレンは定義
上、ディスプレイスクリーン上には存在せず、上で議論
したようにFに押しやられる。Aウィンドウは想像上F
であるが(このことは単一のノードプロジェクションの
フェースによって全く閉じられていることを意味す
る)、一方現在の実施例はこの場合のようにディスプレ
イスクリーンを任意に補助分割している。このことは全
ての零をAアレイ802に対するバス816A上に形成するこ
とによって保証される。したがって四個のチルドレンは
全てエンプティになる。
再び第31(B)図を参照すれば、イネーブルブロック1A
ラインが主張された場合には、ORゲート838はバスドラ
イバ836をバス816Aにイネーブルする。一方、OUTライン
はMUX834によって選択され、ドライバ836のデータイン
プットに供給され、したがってOUT値はバス816A上に位
置される。第30(A)図に示されたクワドツリーイネー
ブルロジックブロック818は、クワドツリーのレベル1
がアクセスされた場合にはOUTAは0値を有し、OUTB,OUT
C,OUTDは全て1値を有することを保証する。このように
して、ディスプレイスクリーン(ディスプレイスクリー
ンのサイズのウィンドウのウィンドウオーバレイにおけ
るウィンドウA)は常に補助分割され、残りのウィンド
ウは捨て去られる。
第32図には、第30(A)図に示されたクワドツリーブロ
ックイネーブルロジックブロック818の概略図が示され
ている。クワドツリーブロックイネーブルロジックブロ
ック818の機能は、各アレイ802,804,806,808の適当なレ
ベルRAMをイネーブルすること、ディスプレイスクリー
ン部でないウィンドウを示すOUTA−OUTD信号を形成する
ことである。シーケンスコントローラブロック1600によ
って発生される信号WLEVは複数の相互排他的レベルライ
ンを形成する4−16デコーダ836に供給される。前記排
他的レベルラインはクワドツリーの各レベルのひとつで
ある。WLEVは16個の可能な値のうちの10個のみを引受け
ていて、したがってデコーダ836の16個のアウトプット
ラインの内の10個のみが主張される。デコーダ836によ
って出力されるこれら10個のレベルラインの各々はデコ
ーダブロック837の複製物に接続される。デコーダブロ
ック837の各々は四個の2−インプットANDゲート838,84
0,842,844からなり、前記ANDゲートのアウトプットはOR
ゲート846,848,850,852のインプットにそれぞれ接続さ
れる。
第25図に示されているイメージウィンドウジオメトリプ
ロセッサ1000は四個の信号POUTRX,POUTRY,POUTLX,POUTL
Yを発生する。これらの信号はディスプレイスクリーン
上にないカレントウィンドウオーバレイのウィンドウを
示している。これらの信号はA,B,C,Dウィンドウの内の
どれがディスプレイスクリーン上に存在しないかを仕分
けするために翻訳されなければならない。これらの信号
の各々は、次のような信号を形成するために四個の2−
インプットORゲート854,856,858,860の二個のバンクの
インプットの1つに供給される。
POUTA=POUTRX OR POUTRY POUTB=POUTRY OR POUTLX POUTC=POUTRX OR POUTLY POUTD=POUTLX OR POUTLY これらのラインPOUTA,POUTB,POUTC,POUTDの各々は反転
されてINA,INB,INC,INDをそれぞれ形成する。これらのI
NA,INB,INC,INDの各々は各デコーダブロック837の1つ
のANDゲート838,840,842,844に供給される。各ORゲート
846,848,850,852の第二のインプットはクワドツリーク
リアアドレスジェネレータ820によって形成されるクリ
アビージィラインに共通に接続される。同様に、各デコ
ーダブロック837のANDゲート838−844の各第二のインプ
ットはデコーダ836の1つのアウトプットに共通に接続
される。
各ORゲート846,848,850,852のアウトプットである所定
のデコーダブロック837の各ブロックイネーブルアウト
プットは、クリアビージィラインが主張された場合か、
あるいはアドレスされたウィンドウがINA,INB,INCある
いはINDによって示されるディスプレイスクリーン内に
ある場合のどちらかであって、レベルRAMがデコーダ836
によって選択された場合に主張される。クリアビージィ
ラインが主張される場合とは、全ての四個のアレイ802,
804,806,808に対するレベルRAMの全てが、クワドツリー
クリアアドレスジェネレータ820がイメージウィンドウ
メモリ800をクリアする期間にイネーブルされることで
ある。もしも一以上のウィンドウがディスプレイスクリ
ーン上にないならば、ORゲート846,848,850,852の対応
するものによって形成されるブロックイネーブルアウト
プットは主張されなくて、むしろPOUTA,POUTB,POUTC,PO
UTDの対応するものが主張される。POUTA−POUTDの各々
は次の信号を発生させるためにゲート892,894,896,898
の1つに接続される。
OUTA=POUTA AND LEVEL1 OUTB=POUTB OR LEVEL1 OUTC=POUTC OR LEVEL1 OUTD=POUTD OR LEVEL1 これらの信号は以前議論した第31(B)図のコンビネー
ションロジックブロック833に供給される。
第33図は第30(A)図に示したクワドツリークリアアド
レスジェネレータブロック820の概略図である。クワド
ツリークリアアドレスジェネレータ820は入力として、
第25図に示されたシーケンスコントローラブロック1600
からのスタート信号としての単一ビットを受ける。この
スタート信号はイメージウィンドウメモリ800に記憶さ
れた全てのクワドツリー構造が、全てEウィンドウに初
期化されることを要求する。スタート信号はセット・リ
セットフリップフロップ862をセットし、このフリップ
フロップの出力は自走クリスタル発振器865の出力とAND
ゲートを介してゲートされる。ANDゲート864の出力は14
ビットのバイナリーカウンタ866のクロック入力に接続
される。カウンタ866の出力は第30(A)図に示された
各MUX822,824,826,828の入力の1つに供給される。
第30(A)と33図を参照すれば、SRフリップフロップ86
2の出力はまたクワドツリーブロックイネーブルロジッ
ク818とクリアビージィ信号としてのMUX822−828のセレ
クトインプットに出力される。よって、MUXはクワドツ
リーアドレスマップ810の出力よりもむしろカウンタ866
の出力を選択するため、およびアドレスインプットとし
てのカウンタアウトプットをアレイ802,804,806,808に
供給するためにコントロールされる。同時に、クワドツ
リーブロックイネーブルロジック818へのクリアビージ
ィインプットは全てのアレイ802,804,806,808の全てのR
AMをイネーブルさせ、全ての零データをデータバス816
上に置く。カウンタ866は全てが零の状態から3FFFHまで
循環し、したがって各アレイ802,804,806,808の各アド
レスを通して循環し、循環のたびに各ロケーションをク
リーニングする。
第34(A)図は第30(A)図に示されたデータリードマ
ップ812の概略図である。データリードマップ812の機能
は、第30(A)図に示されたアレイ802,804,806,808に
よって形成された4×4ウィンドウアレイを、第6
(F)図に示された横方向のシーケンス、例えば所定の
ウィンドウオーバレイがアクセスされた左底部、右底
部、左頂部、右頂部の任意の横方向のシーケンスに再整
理することである。第34(A)図によれば、アレイ802,
804,806,808によって形成された4個の8ビットワイド
データインプットは四個の32対8ビットのMUX868,870,8
72,874の各々に供給される。各MUX868,870,872,874は適
当に八個の4対1ビットMUXのバンクである。各MUX868
−874は任意の時間で異なるアレイA−Dからの出力を
選択する。
各MUX868,870,872,874へのデータインプットは同一であ
るが、それらのセレクトインプットに供給される信号は
同一ではない。MUXのセレクトインプットはMAPXとMAPY
であり、MUX870のセレクトインプットはMAPXとMAPYであ
り、MUX872のセレクトインプットはMAPXとMAPYであり、
MUX874のセレクトインプットはMAPXとMAPYである。だか
ら各MUX868,870,872,874の8ビットワイドアウトプット
は異なる。MAPXとMAPY値に依存して、第30(A)図に示
され各アレイ802,804,806,808のアウトプットはMUX868,
870,872あるいは874の内の一個のアウトプットに発送さ
れる。このように、データリードマップ812はウィンド
ウパケットへのアレイ802−828のアウトプットの1−1
マッピングを達成する。
第34(B)図は第30(A)図に示されたデータライトマ
ップ814の概略図を示す。データライトマップ814の機能
はデータリードマップ812の機能の逆である。データラ
イトマップは、4チルドレンの4ファミリを、第6
(F)図に示されたクワドツリーの横方向のシーケンス
の順序から第30(C)−30(F)図に示された四個の配
置の適当なものに再整理し、したがって第30(A)図に
示された適当はアレイ802,804,806,808の適当なロケー
ションは更新される。データライトマップ814は、四個
の32対8ビットのMUX876,878,880,882を用いるデータリ
ードマップ812と同じように、適当に権限が与えられて
いる。MUX876,878,880,882に対するセレクトインプット
はそれぞれMUX868,870,872,874のそれと全く同一であ
る。MUX876,878,880,882には、また、第30(A)図に示
されたトリステートバス816上にMUXのアウトプットをイ
ネーブルするために、ウィンドウPOP期間中にイネーブ
ルされるトリステートイネーブルインプットが適当に供
給される。アレイ802−808のライトイネーブルはまた、
このときにイネーブルされる。
イメージウインドウパケットプロセッサ 第25図および第35図には、イメージウインドウパケット
プロセッサ(Image Window Packet Processor)900のブ
ロック図が開示されている。このプロセッサ900の機能
としては以下のものがある。イメージウインドウパケッ
トメモリ800からウインドウパケットを命令すること、
新たなウインドウがウインドウライタ1400によってペイ
ントされるようにこれらウインドウパケットを変更し、
これによって、イメージウインドウメモリ800中に記憶
されたクワドツリー(四枝)構造(quadtree structur
e)が正確なものとなること、更に、これらパケットを
アクセスするよう変更し(しかし、これら1パケットが
イメージウインドウメモリ800に戻されて記憶されてし
まう前に行なう)、この結果、処理すべきクワドツリー
のセクションが常に正確なものとなることである(この
メモリ中に記憶されたクワドツリー構造がいまだ変更さ
れていないにも抱ず)。このプロセッサ900には、チャ
イルド変更ロジックブロック(Child Modify Logic blo
ck)912、グランドペアレント変更ロジックブロック(G
randparent Modify Logic block)904、MUX906、WPROP
レジスタ908およびウインドウデコーダ910が設けられて
いる。
前述したように、4個の隣接したペアレント(必ずしも
兄弟関係がなくても良い)ウインドウの各々のチルドレ
ンから形成された4×4ウインドウアレイを有するウイ
ンドウパケットがイメージウインドウメモリ800より得
られる。このウインドウパケットがチャイルド変更ロジ
ックブロック902に入力される。また、4個のペアレン
トウインドウ(ウインドウ・オーバレイ・セレクト・ロ
ジックブロック1100から得られた)のE,PまたはF特性
値がチャイルド変更ロジックブロック902へ入力として
供給される。
上述のチャイルド変更ロジックブロック902の機能とし
ては、最新のウインドウオーバレイ中のあらゆるFウイ
ンドウのチルドレン(子供)をまたFに変更することで
ある。このことは以下の理由により必要なことである。
即ち、ウインドウを高いレベルでペイントでき、従って
“F"とマーク付けできるが、プロセッサはすべての子孫
ノード(descendant nodes)を“F"としてマーク付けす
ることを妨げない。チャイルド変更ロジックブロック90
2によってFノードFより下のこのようなすべてのノー
ドをこれらがアクセスされるように自動的にマーク付け
する。変更されたウインドウパケットをMUX906の入力に
供給し、これの出力をWPROPレジスタ908の入力に供給す
る。WPROPレジスタ908の出力をイメージウインドウパケ
ットスタック430の入力に接続し、これの出力をグラン
ドペアレント変更ロジックブロック904の入力に接続す
る。このブロック904にはまたWPROPレジスタ908の出力
およびウインドウオーバーレイ選択ロジックブロック11
00によってWBITSを必要である(即ち、W3x3X,W3x3Y,W2x
2XおよびW2x2Yであり、これらによって、最近の4×4
ウインドウパケットWPROP中のウインドウオーバーレイ
を特定化するものである。このパケットは処理中であ
る)。
グランドペアレント変更ロジックブロック904の機能と
しては、WPOP(即ち、クワドツリーの低レベルから高レ
ベルの横断線)以前の最新のウインドウオーバーレイの
ペアレント(両親)を変更することであり、これによっ
て、“F"マーク付けられた4つのチルドレンウインドウ
のペアレントに“F"マークを付けると共に、1個以上の
“P"マーク付けられたチルドレン、または全てではない
がいくらかの“F"マーク付けられたチルドレンを有する
あらゆるペアレントウインドウに“P"マーク付けること
である。グランドペアレント変更ロジックブロック904
の出力をMUX906の他の入力に接続すると共に、これをMU
Xによって選択し、WPOPが実行された時(即ち、クワド
ツリーがチルドレンからペアレントウインドウへ横断す
ること)、WPROPレジスタ908中にクロック入力される。
この結果、WPROPレジスタの内容は常時正しいものとな
る。同様に、MUX906によってチャイルド変更ロジックブ
ロック902からの出力が選択されると共に、WPUSHが実行
された場合(即ち、クワドツリー(四枝)構造が下方向
へ横断して最新のウインドウオーバレイを4×4アレイ
に分割する場合)、この出力を、WPROPレジスタ908にク
ロック入力する。WPROPレジスタ908の出力をイメージウ
インドウメモリ800の入力に供給する(他の場所に存在
する)と共に、WPOPが実行される場合にイメージウイン
ドウメモリ中に記憶されたクワドツリー構造を更新す
る。
ウインドウをウインドウライタ1400によってペイント付
けした場合に、このウインドウをクワドツリー構造中で
“F"マーク付けする必要がある。この結果、このウイン
ドウ(およびこれの子孫)は再びペイント付けされるこ
とはない。この機能はウインドウデコーダ910によって
実行される。即ち、WPROPレジスタ908中のウインドウに
対応するビット(ウインドウライタ1400によってFと書
込まれた)をセットすることによって実行される。この
デコーダ910はWBITS(W3x3X′,W3x3Y,W2x2XおよびW2x2
Y)およびWNUMを入力として受ける。これら信号が第6D
図〜6F図で示したようにエンコードされる。更に、サイ
クル結果ブロック(Cycle Results block)1500からのP
AINT(ペイント)信号がウインドウデコーダ910に供給
される(これは最新のウインドウをペイントされる場合
に行われる)。ウインドウデコーダ910の出力を相互に
排他的にセットされた16本のラインの1ラインであり、
4×4ウインドウパケットWPROP中の16個のウインドウ
の1つである。これら16本のライン中の1つが実行され
ると、WPROPレジスタ908中の適当な2ビットがF(11)
にセットされる。
ウインドウデコーダブロック910は、組合せロジック(c
ombinational logic)によって適当に実現される。ウイ
ンドウデコーダ910の出力を記載した真理表は以下の通
りである(この表から、当業者であれば必要な組合せロ
ジックアレイを容易に組立てることができる)。
上述の真理表において、WBITS(W3x3X,W3x3Y,W2x2Xおよ
びW2x2Y)およびWNUMから成る組合せ可能な4個のもの
すべてを水平方向にリストアップした。従って、これら
6ビットのすべての組合せに対して、ウインドウデコー
ダ910からの16本の出力ラインの1本を実行すべきもの
と特定化する。表IIに示したエンコード動作は第6D〜第
6F図に絵図的に表わしたエンコード動作と対応するもの
である。サイクル結果ブロック1500からのペイント信号
が存在する場合にのみこの1本の出力ラインがイネーブ
ル状態となるものである。
第36A図には、第35図のチャイルド変更ロジックブロッ
ク902のブロック図が図示されている。このブロック902
は、第25図のイメージウインドウメモリブロック800か
らの4×4ウインドウパケットを入力として受け入れ
る。4×4アレイ中の4個のチルドレンウインドウのフ
ァミリーの各々の特性値をORゲート912,914,916または9
18によってウインドウオーバーレイ選択ロジックブロッ
ク1100によって発生させた4個の“Full"信号の1つと
共に論理和(OR)を取る。このことは、4個のチルドレ
ンウインドウのペアレントがFマーク付けされてしまっ
た場合に行われるものである。従って、4個のORゲート
912,914,916および918の各ゲートよりの出力は4個のチ
ルドレンウインドウの1つのファミリのE,PまたはFの
特性値である。これら特性値はこれら4個のチルドレン
ウインドウのペアレントに“F"マークが付けられてしま
った場合(即ち、ペイント付けられる)に、すべてのF
値によって“過剰書込み”(overwritten)されてい
る。従って、Fウインドウの分割は常にF個のチルドレ
ンとなる。
第36B図には、第35図に示したグランドペアレント変更
ロジックブロック904のダイヤグラムが図示してある。
前述したように、このロジックブロック904の機能は、
イメージウインドウパケットスタック430から得られた
ウインドウ特性値をWPOPに“過剰書込み”して、これの
子孫のウインドウの1つまたはそれ以上のペイント作業
を反映するものである。このロジックブロック904によ
ってこのような機能をWPORがクワドツリー構造内の1レ
ベルに横断してバックアップされる毎に実行する。
イメージウインドウパケットスタック430からの各出力
を5入力ORゲート920−930の1入力に接続する(32個の
ORゲートの合計に対して、スタックから各ビット出力の
1つである)。イメージウインドウパケットスタック43
0からの16ビット出力の各ペア内の各ビットはウインド
ウオーバーレイを含むウインドウパケット内の16個のウ
インドウの1つについてのP情報(LSB)またはF情報
(MSB)を表わす。このウインドウオーバーレイは分割
されて最新のウインドウパケットを得るものであった。
それぞれのORゲートの4個の入力のいずれかが実行され
ると、これらビットの各1つが過剰書込みされるように
なる。
WPROPレジスタ908の出力(最新のウインドウパケット)
をペアレント減少ロジックブロック(Parent Bcduction
Logic block)932の入力に供給する。これによってWPR
OP中の4個のチルドレンの4つのファミリを一緒にグル
ープ化し、4個のチルドレンの各ファミリのE,Pまたは
Fの特性値を検査し、更にこのファミリのペアレントと
E,P,またはFマーク付けすべきであるならば決定するよ
うになる(前述したように、Fマーク付けられた4個の
チルドレンのペアレントおよびFマーク付けられたいく
つかのペアレント、またはすべてのペアレント(4個)
のペアレントまたは、Pマーク付けられた1個またはそ
れ以上のチルドレンをPマーク付けする必要がある)。
このロジックブロック932によって、8個の出力POP,PO
F,PIP,PIF,P2P,P2F,P3PおよびP3Fを発生する。これら出
力はウインドウオーバーレイを含む最新の4×4ウイン
ドウパケットの4個のペアレント(0−3)のそれぞれ
にPまたはFにマーク付けするかどうかを表示するもの
である。
第37図には、ペアレント減少ロジックブロック932の1/4
のダイヤグラムが図示されている(即ち、4番目は出力
POPおよびPOFを発生する)。第37図は、8入力ORゲート
934および4入力ANDゲート936も図示されており、前者
からPOP出力が発生され、後者からPOF情報が発生され
る。ここで回想すると、ウインドウ特性値は00に対して
E、01に対してはPおよび11に対してはFとエンコード
されていた。従って、所定ウインドウの特性値の最大ビ
ット(MSB)がロジック1の場合、あのウインドウはF
である。
4個のチルドレンウインドウの各々の特性値のMSBがAND
ゲート936に入力される。4ビット全てがロジック1の
場合(即ち、4個すべてのチルドレンがFであることを
表わしている)、このANDゲートよりPOF用のロジック1
出力が発生される(即ち、これら4つのウインドウのペ
アレントか“F"とマーク付けされていることを表わ
す)。このことは、これらチルドレンのペアレントウイ
ンドウの特性値のMSBをロジック1で過剰書込みするた
めに用いられる。
同様に、4個のチルドレンのすべての特性値のあらゆる
ビットがロジック1である場合には、これら4つのウイ
ンドウのペアレントの特性値の最小ビット(LSB)をロ
ジック1でマーク付けする必要がある(チルドレンのす
べてがEでないので、ペアレントはPまたはFであるに
相違ない。これら両者は特性値のLSBにおいてロジック
1を有するようにエンコードされる)。従って、ORゲー
ト934およびANDゲート936の両者によってウインドウの
チルドレンの4つの特性値からペアレントウインドウの
特性値を発生している。最新のWPROPウインドウパケッ
トの8ビットの各々は(4つのチルドレンの4セットを
表わしている)、同様に処理されて、4つのペアレント
の各々の特性値を発生している。
再び第36B図に戻って、ペアレント減少ロジックブロッ
ク932の8出力の各々を8個のグランドペアレントウイ
ンドウデコーダブロック(Grandparent Window Decoder
block)938−952の1ブロックの入力に接続する。出力
POPを、これらデコーダブロック938の入力に接続し、PO
Fをデコーダブロック940の入力に接続し、P1Pをグラン
ドペアレントウインドウデコーダブロック942の入力に
接続し、更にP3Fをデコーダブロック952の入力に接続す
る(8個のグランドペアレントウインドウデコーダブロ
ック938−952の合計として、ペアレント減少ブロック93
2の各出力に対して1つ設けてある)。ウインドウオー
バーレイ選択ロジックブロック1100によって発生された
WBITS(W3x3X,W2x2X,W3x3YおよびW2x2Y)をグランドペ
アレントウインドウデコーダブロック938−952の各々の
他方の入力に接続する。これらデコーダブロック938−9
52はPOP−P3F信号を適当はORゲート920−930へマッピン
グする作用を有する。換言すれば、グランドペアレント
ウインドウデコーダブロック938−952によって、信号PO
P−P3Fの中のどの信号(最新のウインドウパケットを構
成するチルドレンの4つのウインドウオーバーレイの特
性値を特定化する信号)が最新のウインドウオーバーレ
イが分割されている4×4ウインドウパケット中の16個
のウインドウの4つのどれに対応するかを決定するもの
である。
グランドペアレントウインドウデコーダブロック938−9
52が組合わされたロジックアレイによって実現される。
本例によれば、同一のアレイがこれらデコーダブロック
938−952の各々を実現するために用いられている。これ
らブロック938−952は以下の真理表に従って機能する。
テーブルIIIの水平線に沿った4ビットの組合せは、WBI
TSの種々の組合せである。WBITSにはW3x3X,W2x2X,W3x3Y
およびW2x2Yがある。また、テーブルIIIの頂部に沿っ
て、“ハードワイヤード・ウインドウ・アサイメント
(Hard-Wired Window Assigment)”と命名された2ビ
ットの組合せが4個存在する。これら2ビットは、グラ
ンドペアレントウインドウデコーダブロック938−952の
各のハードワイヤード入力であり、一対のグランドペア
レントウインドウデコーダブロックをウインドウ番号0
−3の各々に割当てるように作用するものである(従っ
て、ハードワイヤードウインドウアサイメント00での出
力の第1コラム(列)のみはグランドペアレントウイン
ドウデコーダブロック938および940の対に対して有効な
ものである。また同様に、ハードワイヤードウインドウ
アサイメント値01,10および11における出力コラムのみ
は、グランドペアレントウインドウデコーダブロック94
2と944、946と948,950と952のそれぞれの対に対して有
効なものである)。グランドペアレントウインドウデコ
ーダブロック938−952の各々の出力は、ペアレント減少
ロジックブロック932から受信した入力によってイネー
ブル状態となる。
“P"グランドペアレントウインドウデコーダブロック93
8,942,946および950の各々の16個の出力の1つをORゲー
トの他方の1つにそれぞれに接続する。このORゲートに
は“P"ゲート920,…,924および928があり、これらゲー
トは、イメージウインドウパケットスタック430からの
4×4ウインドウパケット出力に対する特性値のLSBに
相当するものである。同様に、“F"グランドペアレント
ウインドウデコーダブロック940,944,948および952の各
々の16個の出力の1つを他のORゲート(即ち、“F"ゲー
ト922,…,926および930)の他方のセットに接続する。
これらゲートはイメージウインドウパケットスタック43
0による4×4ウインドウパケット出力の各特性値のMSB
に相当するものである。
このようにして、PおよびF特性値の決定(ペアレント
減少ロジックブロック932によって発生した4個のウイ
ンドウに対する特性値)を、ハードワイヤードウインド
ウアサイメント(表III)およびWBITS(W3x3X,W3x3Y,W2
x2XおよびW2x2Y)によってイメージウインドウパケット
スタック430によって発生させた4×4ウインドウパケ
ット中にマッピングする。ORゲート920−930の各Pおよ
びF対の各出力は、4×4内の16個のウインドウの1つ
に対して“過剰書込み”された特性値を表わしている。
イメージウィンドウ幾何プロセッサ 第38図には、第25図のイメージウィンドウ幾何プロセッ
サ1000が図示されている。このプロセッサ1000の機能
は、観察面上の所定のウィンドウオーバーレイの位置を
決定すること、およびこのウィンドウがディスプレイス
クリーン上に存在しているかどうかを決定することであ
る。
このプロセッサ1000は2つの部分に分けられる。即ち、
ウィンドウ包囲ボックス幾何ブロック(Window Boundin
g Box Geometry block)1002(これによって、X,Y領域
におけるウィンドウ幾何学値のファミリを決定する)お
よびウィンドウ多角形幾何ブロック1050(これによっ
て、D0,D1,D2の方向におけるウィンドウ幾何学値のファ
ミリを決定する)に分けられる。第38図に示したウィン
ドウ包囲ボックス幾何ブロック1002を2つ設け、一方を
X′用に他方をY′用にする。同様に、ウィンドウ多角
形幾何ブロック1050を3つ設け、それぞれをD0,D1およ
びD2用とする。
イメージウィンドウ幾何プロセッサ1000は、第25図で示
したウィンドウ・オーバーレイ・選択ロジックブロック
1100によって発生させたWBITS(W3×X,W2×2X,W3×3Yお
よびW2×2Y)を入力として受け入れる。また、同様に、
シーケンスコントローラブロック1600によって発生した
信号WLEW((最新のウィンドウが見つかったクワドツリ
ーのレベルを特定する信号)を入力として受け取る。こ
のWLEW信号を4/16デコーダ1004の入力に供給する。この
デコーダは相互に排他性の16個の出力の1つを保持しこ
れは、最新レベル(適当な2の倍率によって分割した第
23A図に示したようなEの値)でのウィンドウのサイズ
eを特定化するものである。
W3×3X信号(ウィンドウ包囲ボックス幾何ブロック1002
のY′デュプリケーション用のW3×3Y)をアダー1006の
入力に供給し、これの出力をMUX1008の入力に供給す
る。MUX1008の出力をWPレジスタ1010の入力に供給す
る。このWPレジスタ1010を、イメージの発生初期におい
て第23A図に示した観察視野66WPX(ウィンドウ包囲ボッ
クス幾何ブロック1002のYデュプリケーション用のWP
Y)のオリジン104となるようにイニシャライズする。こ
のWPレジスタ1010の出力をイメージウィンドウ幾何スタ
ック440の入力に供給し、これの出力をMUX1008の他方の
入力に供給する。
WPUSHにおいて、アダー1006の出力をMUX1008によって選
択すると共に、WPレジスタ1010の旧内容をイメージウィ
ンドウ幾何スタック440に挿入している間に、上述の出
力をWPレジスタ1010にクロック入力させる。これによっ
て、ペアレントウィンドウオーバーレイのオリジンをウ
ィンドウ幾何スタック上に配置すると共に、チルドレン
ウィンドウオーバーレイのオリジンをWPレジスタ1010中
に配置する。WPOPにおいて、MUX1008によってイメージ
ウィンドウ幾何スタック440の出力を選択し、これをWP
レジスタ中にクロック入力させて、ペアレントウィンド
ウオーバーレイのオリジンをレジスタ中に回復させるこ
とができる(クワドツリーが分割処理の後にトランスバ
ースする時に)。
WPレジスタ1010の出力をブロック1014によって左側へ1
ビットだけハードワイヤシフトした後に、アダー1012の
入力に供給する(ここで、ブロック1014は、アダー1012
のLSBにロジック0が結合されることを単に表わすと共
に、WPレジスタ1010の出力がアダーの残余のビットに結
合されることを単に表わすので、この結果このレジスタ
の出力はアダーに供給する前に実際上2倍されるように
なる)。このアダー1012の他方の入力をW2×2X(ウィン
ドウ包囲ボックス幾何ブロック1002のYデュプリケーシ
ョン用のW2×2Y)に供給する。アダー1012の出力をアダ
ー1006の他方の入力に供給する。従って、アダー1006の
出力は、 WCX=(WPX*2)+(W2×2X+W3×3X) となる〔ウィンドウ包囲ボックス幾何ブロック1002の
Y′デュプリケーション用(WPY*2)+(W2×2Y+W3×
3Y)〕。この値は、最新の4×4アレイ内で選択したウ
ィンドウオーバーレイのオリジンであり、この選択につ
いては、第6D図〜第6F図に関連してすでに説明してあ
る。
W3×3XおよびW2×2Xビット(ウィンドウ包囲ボックス幾
何ブロック1002のY′デュプリケーション用のW3×3Yお
よびW2×2Yビット)の両方を2入力XORゲート1016に供
給し、これの出力はCMAPXビット(幾何ブロック1002の
Y′デュプリケーション用のCMAPYビット)であり、ウ
ィンドウの次の分割用であり、このことについては第30
C図および第30F図に関連してすでに説明済みである。XO
Rゲート1016の出力をMUX1018の入力に供給し、これの出
力をMAPレジスタ1020に供給する。XORゲート1016の出力
をまた2個の2入力ANDゲート1022,1024の各々の一方の
入力に接続する。これらANDゲート1022,1024の出力をMU
X1018に供給すると共に、従って、MAPレジスタ1020の入
力に供給する。
MAPレジスタ1020には3つの値、即ち、MAPX(MAPY)ビ
ット、POUTLXおよびPUTRXビット(幾何ブロック1002の
Y′デュプリケーション用POUTLYおよびPUTRYビット)
である。これら値は、最新ウィンドウオーバーレイ中の
どのウィンドウがディスプレイスクリーン(このレジス
タを各イメージが発生される前にイニシャライズする必
要がある)上に存在しないことを表示する。MAPレジス
タ1020のPOUTLX(POUTLY)出力をANDゲート1022の他方
の入力に供給し、他方、このレジスタ1020のPOUTRX(PO
UTRY)出力をANDゲート1024の他方の入力に供給する。
このようにして、チャイルドウィンドウオーバーレイ中
のどのウィンドウがディスプレイスクリーン上に存在し
ていないかを決定し、これから最新のウィンドウオーバ
ーレイ中のペアレントウィンドウがスクリーンから外れ
ると共に、4×4アレイ(WBITZSによって特定化され
る)以内においてチャイルトウィンドウオーバーレイの
位置より外れるようになる。
MAPレジスタ1020の出力をまた、イメージウィンドウ幾
何スタック440の入力にも供給し、これの出力をMUX1018
の入力に供給する。WPUSHにおいて、MAPレジスタ1020の
出力をイメージウィンドウ幾何スタック440に押し上
げ、MAPX,PUTLXおよびPUTRX(MAPY,POUTLYおよびPOUTR
Y)の分割したオーバーレイ用の値をMAPレジスタ中にク
ロック入力する。この結果、クワドツリーが1レベル下
方にトランスバース(横に移動)した場合に、適当なチ
ャイルド値がレジスタ中に現われるようになる。同様
に、WPOPにおいて、イメージウィンドウ幾何スタック44
0の出力をMUX1018によって選択すると共に、MAPレジタ1
020中にクロック入力させる。この結果、前者の値はク
ワドツリーがあるレベルだけ背後にトランスバースした
時にレジスタ1020中に再び装荷されるようになる。
イメージウィンドウ幾何プロセッサ1000のウィンドウ多
角形幾何ブロック1050をD0,D1およびD2の各々に対して
1回、合計3回復製する。この幾何ブロック1050は、ウ
ィンドウオーバーレイ選択ロジックブロック1100および
ウィンドウ選択ロジックブロック1200でそれぞれ発生し
たWBITS(W3×3X,W2×2X,W3×3YおよびW2×2Y)これと
一緒にWNUM(これによって最新のウィンドウオーバーレ
イ中の4つのウィンドウのどのウィンドウが処理されて
いるかを特定する)。W3×3X,W2×2XおよびWNUMの2ビ
ットの一方を3/1MUX1052の入力に供給し、W3×3Y,W2×2
YおよびWNUMの他方のビットを3/1MUX1052の入力に供給
する。
これら2つのMUX1052および1054の両者によって、シー
ケンスコントローラブロック1600からの選択入力に従っ
てこれら3入力を選択する。W3×3XおよびW3×3YがWPUS
H中にMUX1052,1054のそれぞれによって選択され、W2×2
XおよびW2×2YがBBOXテスト中に選択され、更に、PIテ
ストおよびEテスト中にWNUMが選択されるようになる。
MUX1052,10554の出力を2/4デコーダ1056に供給し、この
デコーダによって4個の相互に排他的な出力の一つを発
生する。デコーダ1056の出力を用いてWDOFFテーブル105
8中の4つのシフトレジスタの1つを選択する。このWDO
FFテーブル1058を、第23B図〜23D図で説明したように、
ゼロおよび3個の適当なウィンドウオフセットでイニシ
ャライズする。
WDOFFテーブル1058の出力をラッチ1060に供給し、これ
の出力をアダー1062の一方の入力に供給する。このアダ
ー1062の出力をMUX1064の入力に供給し、これの出力をW
PDレジスタ1066の入力に供給する(このレジスタは第23
A図で示したようにWPD0,WPD1またはWPD2に対して各イメ
ージの発生の開始時においてイニシャライズされ、D0,D
1およびD2に対してウィンドウ多角形幾何ブロック1050
の各デュプリケーションの1つである)。WPDレジスタ1
066の出力をアダー1062の他方の入力を供給する。WPDレ
ジスタ1066の出力をイメージウィンドウ幾何スタック44
0の入力に供給する。これの出力をMUX1064の他方の入力
に供給する。このMUX1064によって、WPOP中にイメージ
ウィンドウ幾何スタック440の出力を選択し、これをWPD
レジスタ1066中にクロック入力する。WPUSHにおいて、M
UX1064によってアダー1062の出力を選択し、これをWPD
レジスタ1066中にクロック入力する。
第23A図〜23D図に関連して前述した処を要約すると、本
願の実施例によれば、最新の4×4ウィンドウアレイの
クリチカルバーテックス(critical vertex:決定的な頂
点)から最新のウィンドウオーバーレイ中の所定のウィ
ンドウのクリチカルバーテックスを3段階で計算するこ
とである。即ち、第1段階として、3×3ウィンドウア
レイを4×4ウィンドウアレイから選択すると共に、3
×3アレイのクリチカルバーテックスを決定し、次に、
ウィンドウオーバーレイ(2×2ウィンドウアレイ)を
選択された3×3アレイから選択すると共にオーバーレ
イ用のクリチカルバーテックスを決定し、最後に単一の
ウィンドウをウィンドウオーバーレイから選択し、それ
のクリチカルバーテックスを決定する。
WPUSHの直後に、WPDレジスタ1066には、4×4ウィンド
ウアレイ用のWPD0(WPD1,WPD2)オフセットが含まれる
(第23A図で示したように)。この時、MUX1052および10
54によってW3×3XおよびW3×3Yが選択されて、WDOFFテ
ーブル1058から適当なオフセットが選択される。これに
よって、4×4アレイから選択された3×3アレイのク
リチカルバーテックスを計算するようになる。このオフ
セット値をラッチ1060にラッチすると共に、アダー1062
に供給するのでこの結果、観察視野のオリジンから3×
3アレイのクリチカルバーテックスへのオフセットがMU
X1064の入力に供給されるようになる。
ラッチ1060が一旦ラッチされると、WDOFFテーブル1058
の出力は自由に変化するようになる。この場合、アダー
1062の計算した結果には悪影響を及ぼさないようにな
る。WPUSHの後、BBOXサイクルが開始する。MUX1052およ
び1054のW2×2X及びW2×2Y入力が選択され、これらによ
ってWDOFFテーブル1058から、選択されたウィンドウオ
ーバーレイのクリチカルバーテックスを計算するための
適当なウィンドウオフセットが選択されるようになる。
3×3アレイに対して説明した上述の値をWPDレジスタ1
066中にクロック入力すると共に、ウィンドウオーバー
レイ用のウィンドウオフセットをラッチ1060内にラッチ
する。前述の通りに、新しい値をアダー1062によって発
生させ、この時、この値はWCDOとなり、これは観察視野
オリジンから選択されたウィンドウオーバーレイのクリ
チカルバーテックスへのオフセットである。WCDOは、イ
メージウィンドウ幾何プロセッサブロック1000からの出
力である。
ラッチ1060が第2時間(BB0Xサイクル期間中)において
一旦ラッチ動作すると、PIT(またはET)サイクルに入
れると、MUX1052,1054によってMNUM値が選択される。こ
の値を用いて、WDOFFテーブル1058から、ウィンドウオ
ーバーレイ中の個々のウィンドウのクリチカルバーテッ
クスを計算するための適当なオフセットを選択するよう
になる。オーバーレイ中の4個のウィンドウのすべてが
BBOXテスト中に同時にテストされ、事実、対角線(DO,D
1,D2)情報が必要なくなることが知られている(BBOXま
たはEテストの準備において3×3から2×2へ単に更
新される)。しかし乍ら、PIまたはEテストに対して
は、単一ウィンドウに対して対角線情報が必要となり、
従って2×2値からこの情報を発生させる。WNUMが変化
するので、(即ち、PIおよびEテストがウィンドウオー
バーレイ中のウィンドウの異なる1つに対して行われる
ので)、出力WOFFは変化するようになる。WCDOの新たな
値はしかし乍、次のWPUSH(またはWPOP)までは発生さ
れない。
ウィンドウ多角形幾何ブロック1050中にはWDIAGシフト
レジスタンス1068が設けられており、これは、各イメー
ジ発生の開始時においてイニシャライズコントローラブ
ロック160によってイニシャライズされて、第23F図に示
したように計算された値WDIAGO(ウィンドウ多角形幾何
フロック1050のD1およびD2デュプリケーション用のWDIA
G1およびWDIAG2)である。前述したようにすべてのシフ
トレジスタと共に、WDIAGレジスタはWPUSH毎に1ビット
だけ右側へシフトすると共に、WPOP毎に左側へ1ビット
シフトすることによってアクセスされるクワドツリーの
レベルの補正を含む値を保持するようになる。
ウィンドウ・オーバーレイ・選択ロジック 第39A図および39B図には、第25図のウィンドウオーバー
レイ選択ロジックブロック1100が図示されている。この
ロジックブロック1100の機能は、最新のウィンドウパケ
ットを有する4×4ウィンドウアレイから適当なウィン
ドウオーバーレイを選択することである。このブロック
1100には2つのブロックが設けられている。即ち、WBIT
Sプロセッサ1102(これは2つに分けられている(複製
されている)1つはX′用にもう1つはY′用になって
いる)およびWPROP減少ロジックブロック1198である。
このWBITSプロセッサブロック1102によってWBITSを計算
する。このことは、第6D図および6E図に関連してすでに
説明してある。このWBITSプロセッサブロック1102は
X′およびY′用に複製されているが、X′複製につい
てのみ説明し、Y′の複製はこれと直接類似したもので
ある。
イメージウィンドウ幾何プロセッサ1000によって発生さ
れたWPX信号をバーレルシフター(Barrel Shifter)110
4に入力される。このシフタ1104によって、シーケンス
コントローラブロック1600によって発生させたWLEVの値
に基いてWPXを予め決められたプレース(place)の数だ
け左側へシフトさせる。このバーレルシフタ1104によっ
てWPX値を0〜8プレースの間で左側に適切にシフトさ
せる。例えば、クワドツリーの底部レベル(レベル9、
最小のウィンドウ寸法)においては、このバーレルシフ
タによって0プレース(0p laces)を左側に、一方クワ
ドツリーレベル1(クワドツリー構造において最小の寸
法のウィンドウ)では、このバーレルシフタによって8
プレースを左側にシフトさせる。バーレルシフタ1104の
出力は信号WPX*2eであり、これはピクセルのユニット
(単位)における4×4ウィンドウアレイのオリジンで
ある(この変換は以下の理由により必要なものである。
即ち、ノードの位置がピクセルのユニットで特定化され
ているからである)。WPX値はペアレント値であり、従
ってeより2eによって掛算されて4×4オリジン(4×
4origin)を得ることができる。
このバーレルシフタ1104の出力をアダー1106の一方の入
力に供給し、これの他方の入力を値eに供給する(この
値は、クワドツリーの最新レベルのピクセルにおけるウ
ィンドウ寸法である)。従って、アダー1106の出力は、
(WPX*2e)+eに等しいものとなる(第6D図のラインa
の位置に等しい)。
eのビットの各々を値W3×3Xと一緒にANDゲート1108(1
6個の2入力 ANDゲートの適当なバンク)によってゲー
トする。このゲートの出力をアーダ1110の入力に供給す
る。従って、このアダー1110の出力は(WPX*2e)+e+
(e・W3×3X)に等しくなる(第6E図に示したラインc
の位置)。
NPXおよびNPYもまた、ウィンドウオーバーレイ選択ロジ
ックブロック1100に入力する。ここで、(NPX,NPY)
は、第6B図に示したノードプロジェクション68の包囲ボ
ックス74のオリジン76であることが知られている。この
NPXをアダー1112の一方の入力に供給し、これの他方の
入力をオブジェクトノード幾何プロセッサブロック(Ob
ject Node Geometry Processor block)700によって発
生させた値ax(CNUM)に供給する。このアダー1112の出
力は従ってNPX+ax(CNUM)であり、チャイルドノード
プロジェクション(child node projection)の包囲ボ
ックスのオリジンである。
アダー1106出力および信号NPXをマグニチュードコンパ
レータ(Magnitude Comparation;大きさ比較器)1114の
入力に供給し、このコンパレータ1114の出力はNPX≧WPX
*2e)+eの場合に保持される。同様に、アダー1110お
よび1112の出力をマグニチュードコンパレータ1116の2
入力に供給する。このコンパレータ1116の出力は、NPX
+ax(CNUM)≧(WPX*2e)+e+(e・W3×3X)の場合
に保持される。最後にアダー1112の出力をマグニチュー
ドコンパレータ1118の入力に適切に供給し、これの他方
の入力をロジック0に供給する。コンパレータ1118の出
力はNPX+ax(CNUM)≧0の場合に保持される。
コンパレータ1114,1116および1118の出力をWNUMと一緒
に、2つのMUX1120,1122の一方の種々の入力に供給す
る。このWNUMは、ウィンドウ選択ロジックブロック1200
(第25図)からの出力でありこれは最新ウィンドウオー
バーレイ中の4つのウィンドウの内のどれか1つを表わ
すものである。これらMUX112O,1122これら入力を選択し
てノードレベルおよびウィンドウレベル間の種々の関係
に依存してWBITSを計算するものである。これらMUXには
シーケンスコントローラブロック1600(図示せず)によ
って発生させた信号に対して並列に接続された選択入力
を有している。
MUX112O,1122がこれらのライン上に00を有する場合に選
択され入力は両者共に“ドントケア(don't cares)”
であり(0または1にセットできる)、これら入力は、
オブジェクトノードのプロジェクションがディスプレイ
スクリーンのサイズより大きい場合(即ち、ノードレベ
ルがスクリーンレベルより大きい場合)に選択される。
ウィンドウオーバーレイをクワドツリー構造内で見つけ
ることができないので、これは特殊なケースである。こ
のクワドツリー構造によってディスプレイスクリーンよ
り大きなノードプロジェクションの包囲ボックスを包含
するようになる。この特殊ケースではイメージディスプ
レイプロセッサブロック152はWBITS情報を必要としない
で処理するものである。当業者であれば、イメージウィ
ンドウメモリブロック1800によってディスプレイスクリ
ーンにより大きなクワドツリー構造を記憶した場合に
(最大のスケール倍率で計測してユニバースのプロジェ
クションを包囲するのに十分に大きい場合に)、このよ
うな特殊なケースを回避することができる。しかし乍
ら、本例においては、ディスプレイスクリーンのみクワ
ドツリー構造によって分割すると共に、イメージウィン
ドウメモリブロック800中に蓄積して、ハードウエアの
コストを軽減することができる(決して表示しない情報
を蓄積しないので、より小容量のメモリを使用でき
る。)また、処理時間を減少させることが可能となる
(ディスプレイスクリーン上ではないがウィンドウを捨
てるのに僅かな時間が費やされる)。
MUX1120および1122に対する選択ラインを01にセットす
る場合に、MUX1120によってロジック1入力を選択し、
他方MUX1122によってコクパレータ1118からの出力を選
択する。このことは、クワドツリーレベル0がアクセス
された場合に起る。(即ち、最新のウィンドウパケット
中の16個のウィンドウの各々がディスプレイスクリーン
のサイズとなる場合に起る)。この場合、W3×3Xおよび
W3×3Yの両方をロジック1にセットし、従って第6D図で
示したように、4×4ウィンドウパケット以内の上側右
手の3×3を選択することができる。第6D図および43A
図を参照し乍ら、ディスプレイスクリーン212をこの3
×3の中心ウィンドウとなるように規定するので、(即
ち、第6D図におけるウィンドウ12)、この結果、ディス
プレイスクリーンを3×3から選択した4ウィンドウア
レイのいずれかに包含するようになる。W2×2XおよびW2
×2Yの値によって3×3以内のウィンドウオーバーレイ
を以下の条件に応じて選択する。即ち、ノードプロジェ
クションの包囲ボックスがX′軸の上側であるかどう
か、およびこのボセックスが観察視野のY′軸の右側に
あるかどうかに依存して選択されるようになる。
値10をMUX1120および1122の選択入力に供給した場合、M
UX1120によってコンパレータ1114の出力が選択され、MU
X1122によってコンパレータ1116の出力が選択されるよ
うになる。これは一般的なケースである。即ち、ノード
およびウィンドウレベルが同一なものであり、最新のウ
ィンドウパケット中の隣接したウィンドウを見つけ、こ
れによってウィンドウオーバーレイを構成することがで
きる。このオーバーレイはノードプロジェクトションの
包囲ボックスを包含するようになる。このような一般的
なケースにおいては、WBITSを演算によって求める必要
がある。
第6D図で示したように、ノードプロジェクションの包囲
ボックスの左側縁部の位置をラインaの位置と比較して
値W3×3Xを決定する。同様に、選択した3×3以内にお
いて、ノードプロジェクションによって規定された包囲
ボックスの左側縁部の位置を第6E図に示した3×3内の
ラインcの位置と比較して値W2×2Xを決定する。これら
の比較動作はコンパレータ1114および1116によって行わ
れるようになっている。同じような比較動作が第6D図〜
6E図に示したラインbおよびdについても行われ、これ
によってW3×3YおよびW2×2Yが決定できる。
次に、値11をMUX1120,1122の選択入力に供給すると、こ
れら両方のMUXによってWNUMのLSBが選択される(WNUMの
MSBがWBITSプロセッサブロック1102のYデュプリケーシ
ョンによって選択される)。第6F図に示したように、こ
のことによってWBITSによって選択されたウィンドウオ
ーバーレイから1つのウィンドウの選択動作が行われ
る。
MUX1120の出力をMUX1124の入力に供給する一方、MUX112
2の出力をMUX1126の入力に供給する。MUX1124,1126の出
力をW3×3レジスタ1128およびW2×2レジスタ1130のそ
れぞれの入力に供給する。レジスタ1128および1130の出
力(最新のウィンドウオーバーレイ用のWBITS)をWBITS
スタッフ450の入力に供給し、これの出力をMUX1124,112
6の他方の入力に供給する。WPUSHおよびBBOXテスト期間
中、MUX1124および1126によってMUX1120,1122の出力を
選択する。これら出力は次にレジスタ1128,1130へクロ
ック入力される。WPOPにおいて、MUX1124,1126によって
WBITSスタック450の出力を選択し、この出力はレジスタ
1128,1130にクロック入力されて、チルドレンのいくつ
かが分割されてしまってからペアレントウィンドウオー
バーレイを再び配置させる。
前述したように、レジスタ1128,1130の出力をイメージ
ディスプレイプロセッサブロック152内の沢山のブロッ
クに供給する(例えば、WBITSをイメージウィンドウパ
ケットプロセッサ900、イメージウィンドウ幾何プロセ
ッサ1000、ウィンドウ書込みブロック1400およびサイク
ルリザルトブロック1500によって選択する)。これらの
出力はまた、ウィンドウオーバーレイ選択ロジックブロ
ック1100以内において、WPROP減少ロジックブロック119
8によって更に処理される。このブロックの機能として
は、WPROPと一緒にWBITSを取ることによって(イメージ
ウィンドウパケットプロセッサブロック900によって発
生させた最新の4×4ウィンドウパケット)、最新のウ
ィンドウオーバーレイ内の4つのウィンドウの適切な値
E,P,またはFを発生させることである。本例において
は、このWPROP減少ロジックブロック1198は、以下の真
理表に従って実行する組合せロジックアレイによって実
行するものである。
ウィンドウ選択ロジック 第40図において、ウィンドウ選択ロジックブロック1200
(第25図の)が開示されている。このブロック1200の機
能は、最新のウィンドウオーバーレイから、BBOXテスト
を通過した非充満ウィンドウを供給することである。こ
のブロック1200は、最新のウィンドウオーバーレイの適
切な値E,PまたはFと一緒にBBOXテストの結果を入力と
して受け取る。このテスト結果は、サイクルリザルトボ
ックス1500によって供給された4個の1ビット信号BPAS
SO,BPASS1,BPASS2およびBPASS3である。これら信号は、
それらの対応のウィンドウ(第6F図に示したようにエン
コードされもの)がBBOXテストを通過すると共に非充満
状態である場合には、保持されるようになる。
BBOXリザルト信号をMUX1202の入力に供給し、これの出
力をBBOXリザルトレジスタ1204の入力に供給する。レジ
スタ12O4の出力をBBOXリザルトスタック460の入給に供
給し、これの出力をMUXの他方の入力に供給する。WPUSH
において、MUX1202によってサイクルリザルトブロック1
500によって発生させたBBOXリザルト入力(BPASSO,BPAS
S1,BAPSS2およびAPASS3)を選択すると共に、これらの
値をBBOXリザルトレジスタ1204中にクロック入力させ
る。WPOPにおいて、MUX12O2によってBBOXリザルトスタ
ック460の出力を選択し、この出力をレジスタ1204にク
ロック入力させる。従って、BBOXリザルト値をWPUSHに
おいてBBOXリザルトスタック460中で節約できると共
に、最新のウィンドウオーバーレイの分割が処理される
と共にWPOPが実行された後に、このリザルト値が回復さ
れるようになる。
BBOXリザルトレジスタ1204の出力をプライオリティエン
コーダ(Priority Encoder)1204の入力に供給する。こ
のプライオリティエンコーダ1206は1ビットの出力WREM
を発生し、この信号WREMは、レジスタ1204の出力におけ
るあらゆるビットが保持された場合に保持される。従っ
て、WREMは、最新ウィンドウオーバーレイ中のウィンド
ウの少なくとも一つが非充満状態であり、且つBBOXテス
ト(即ち、更に処理が必要であること)を通過した場合
に保持される。このWREMを入力としてシーケンスコント
ローラブロック1600に供給する。
前述のプライオリティエンコーダブロック1206から出力
WNUMが発生される。この出力は2ビットの値を有し、こ
れはウィンドウオーバーレイ中のウィンドウ番号を表わ
し、第6F図に示したクワドツリートラバース(横断方
向)シーケンスに従って次に処理されるものである。こ
の出力をWNUMレジスタ1208の入力を供給する。(未登
録)出力をまたMUX1210の選択入力に供給し、これの入
力は最新のウィンドウオーバーレイ中の4個のウィンド
ウの特性値E,P'およびFである。従って、WNUMによって
選択されウィンドウオーバーレイの特性値をMUX1210の
出力で発生させ、この出力をWNUMレジスタ1208の入力に
供給する。このWNUMレジスタ1208の出力には、最新のウ
ィンドウオーバーレイ中にの4個のウィンドウの内のど
の1つが次に処理されるかを表わす信号およびこのウィ
ンドウのE.PまたはF特性値が含まれている。
WNUMレジスタ1208のWNUM出力を2/4デコーダ1212の入力
に供給し、このデコーダは、シーケンスコントローラブ
ロック1600からゲート入力を受ける。このデコーダ1212
の出力は4つの相互に排他的な1ビットラインであり、
これらラインをBBOXレジスタ1204のリセット入力に接続
する。最新のウィンドウオーバーレイ中の処理すべき次
のウィンドウの値WNUMをWNUMレジスタ1208中にクロック
入力した場合、このデコーダ1212によってBBOXリザルト
レジスタ1204中のそのウィンドウに相当するBBOXリザル
ト値をクリアするので、この結果、プライオリティエン
コーダ1206に対して、ウィンドウがすでに処理されたと
共に、従ってこのウィンドウを再び選択しないという情
報を与えるようになる。
カットプレーンプロセッサ 第41図には、カット・プレーン・プロセッサ・ブロック
(Cut Plane Procesor block)1300の詳細なブロックダ
イヤグラムが示されている。このブロック1300の機能
は、最新のノードがカットプレーンによって規定された
映出すべきリージョン(領域)以上に少なくとも部分的
に存在するかどうかを決定すると共に、もしそうであれ
ば、このノードがカットプレーンと交差しているかどう
かを決定することである。このプロセッサブロック1300
から2つの出力が発生される。即ち、カットプレーンOK
信号は、最新のノードの少なくとも一部分が映出すべき
リージョン内に存在する場合には保持され、ならびに、
この最新ノードがカットプレーンによって交差する場合
にはカットプレーンINTが保持されるようになることで
ある。若し、カットプレーンOKが保持されカットプレー
ンINTが保持されないならば、このノードは映出すべき
リージヨン以内において全体的に存在する必要がある。
このカットプレーンプロセッサブロック1300には、カッ
トプレーン幾何ブロック1301およびカットプレート演算
ブロック1350が設けられている。映出すべきリージョン
を規定するために用いられたカットプレーンの各対に対
してこれらブロックの1セットが存在する。カットプレ
ート幾何ブロック1301は、信号CNUM(ノード選択ロジッ
クブロック600によって発生させた信号)を入力として
受信する。この信号によって最新ノードパケット中の8
個のノードの内のどのノードが処理すべきであるかを特
定するものである。CNUMを3/8デコーダ1302の入力に供
給し、このテコーダ1302から8本の相互に排他的な出力
ラインが発生され、このノードパケット内の各ノードに
対して1本である。この3/8デコーダ1302の出力ライン
を用いてakテーブル1304中の8個のシフトレジスタの1
個を選択するようになる。このakテーブル1304と共に、
アダー1306、MUXI1308およびNPKレジスタ1310によっ
て、第14B図に関連して説明したカットプレーンテスト
プレーン上に、最新ノードのプロジェクションの最左端
および最右端の種々の幾何位置を発生させる。これらの
コンポーネントのオペレーションは第29図に示したオブ
ジェクトノードプロセッサブロック7000のノード包囲ボ
ックス幾何ブロック702内の等価構造と極めて類似した
ものである。カットプレート幾何スタック470は、オク
トリー構造が下方向および上方向にそれぞれトラバース
(横断)する場合に、計算したオフセット値の記載およ
び回復を行なうことができる。
カットプレーン幾何ブロック1301には2つの追加レジス
タ、KDIAGレジスタ1312およびLDIAGレジスタ1314が含ま
れている。akテーブル1304、KDIAGレジスタ1312、LDIAG
レジスタ1314およびNPKレジスタ1310のすべてを第14B,2
2Aおよび22Bに示した演算値にイニシャライズされるよ
うになっている。akテーブル1304およびKDIAGレジスタ1
312は両方共シフトレジスタであり、これらレジスタは
現在アクセスすべきオクトリーのレベルに従ってシフト
するようになる。NPKレジスタ1310およびLDIAGレジスタ
1314は両者共に固定されたレジスタである。
カットプレーン幾何ブロック1301から3つの値が発生さ
れる。即ち、NCK値(カットプレーンテストプレーン上
の最新ノードのプロジェクションの最左端のバーテック
スの位置)、KDIAG値(最右端バーテックスに対するノ
ードプロジェクションの最左端バーテックスからのオフ
セット値)、およびLDIAG値(2つのカットプレーン間
の距離)。これら3つの信号をカットプレーン演算ブロ
ック1350に送給する。この演算ブロック1350によって第
14B図に関してすでに説明したカットプレーンテストを
実行する。IN/OUTレジスタ1370は単一ビットレジスタで
あり、このレジスタはイニシャライズコントローラブロ
ック160によってロジック1または0にイニシャライズ
される。これは映出すべきリージョンがカットプレーン
間で規定されたリージョンであるか、または2つのカッ
トプレーン間のリージョンの外側のリージョンであるか
に応じてイニシャライズされる。IN/OUTレジスタ1370の
出力を利用してMUX1368を選択する。また、このMUX1368
によって適当にINおよびOUT入力を選択するようにな
る。これらINおよびOUT信号はアダー1352、マグニチュ
ードコンパレータ1354,1356,1358および1360、ならびに
ANDゲート1362とORゲート1364によって発生される。こ
れら素子によって第14B図に関連してすでに説明したカ
ットプレーンテスト用の演算比較を実行する。ANDゲー
ト1366からカットプレーンINT信号(これは第25図のシ
ーケンスコントローラブロック1600に供給される)が発
生され、ORゲート1372からのカットプレーンOK信号(こ
れは第25図のサイクルリザルトブロック1500へ供給され
る)が発生される。
カットプレーン幾何ブロック1301およびカットプレーン
演算ブロック1350の対をデュプリケーション処理するこ
とによって、映出すべきリージョン(領域)をカットプ
レーンの2対によって規定されるリージョンに更に限定
することができる。カットプレーン演算ブロック1350の
デュプリケーション処理のカットプレーンINT信号を一
緒に論理和(OR)処理する一方、カットプレーンOK信号
を一緒に論理積(AND)処理する。追加のカットプレー
ンや更に複雑化した可視性決定基準を容易に加え得るこ
とは当業者にとって容易である。
サイクルリザルト 第42図には、第25図に示したサイクルリザルトブロック
1500の詳細なブロック線図が図示されている。サイクル
リザルトブロック1500には4個のブロックが設けられて
いる。即ち、スクリーン交差ロジックブロック(Screen
Intersection Logic block)1502、BBOX演算ブロック1
520、PIテスト演算ブロック1540、およびEテスト演算
ブロック1560である。
BBOX演算ブロック1520によって、最新ウィンドウオーバ
ーレイ中の4個のウィンドウに関して包囲ボックステス
ト(Bounding Box test)を行なうと同時に、4個の単
一ビット出力を発生する。これら出力の各々は、オーバ
ーレイ中の4つのウィンドウの1つがBBOXテストを通過
したかどうかを表わす。これらの出力の各々を、4個の
2入力ANDゲート1582,1584,1586および1588によって対
応するウィンドウの特性値E,PまたはF(これら値は充
満または非充満状態を表わしている)のMSBとの間で論
理積を取っている。これらANDゲート1582,1584,1586,15
88の出力は第40図に関して説明したBPASS0−BPASS3信号
である。
これら4個の信号BPASS0−BPASS3をORゲート1590によっ
て論理和を取る。このゲートの出力をカットプレーンOK
信号(カットプレーンプロセッサブロック1300によって
発生させたもの)と共に論理積を取ることによって、単
一出力BPASSを発生する。この単一出力BPASSは、最新の
ウィンドウオーバーレイ中の4つのウィンドウにいずれ
か1つがBBOXテストを通過したかどうか、映出すべくカ
ットプレーンによって規定されたリージョン内に少なく
とも部分的に存在するかどうか、および非充満状態であ
るかどうかを表示するものである。BPASS信号をシーケ
ンスコントローラブロック1600の入力に供給することに
よってこのブロックによりPIおよびEテストによるウィ
ンドウオーバーレイの更にテストが必要であるかどうか
を決定することが可能となる。
スクリーン交差ロジックブロック1502は特別なケースに
おいてBBOXテストを実行するものである。即ち、最新ウ
ィンドウオーバーレイ中のウィンドウのサイズがディス
プレイスクリーンのサイズより大きいか、または等しい
かのケースである。クワドツリー構造内に組込まれる観
察視野のセクション部のみがディスプレイスクリーンで
あることが知られている。その理由は、スクリーン上に
投影されるこれらノードのみが観察者に観察可能とな
る。最新のウィンドウサイズがディスプレイスクリーン
のサイズに等しいかまたは大きい場合において、本例に
よればBBOXテストを簡単なスクリーン交差テストに簡素
化することができる。このテストによれば、ディスプレ
イスクリーン(ディスプレイスクリーンのサイズより大
きいかまたは等しいサイズのウィンドウのアレイにおけ
る関心ウィンドウのみ)が最新のノードのプロジェクシ
ョン(投影)によって規定された包囲ボックスのいずれ
の部分と交差するかどうかを単に決定することができ
る。このスクリーン交差ロジックブロック1502から単一
出力、即ちSPASSが発生され、この出力は包囲ボックス
がディスプレイスクリーンを交差する場合に保持される
ようになる。
PIテスト演算ブロック1540によって最新ウィンドウオー
バーレイ中の個々のウィンドウに関する多角形交差テス
ト(Polygon Intersection Test)が行われ、これらウ
ィンドウが最新ノードのプロジェクションを交差するか
どうかを決定する。このテストブロック1540から単一出
力、PPASSが発生され、この出力は、テスト中のウィン
ドウが多角形交差テストを通過してしまったことを表示
する。
Eテスト演算ブロック1560によって最新のウィンドウオ
ーバーレイ中の個々のウィンドウに関する包囲テスト
(Enclosure Test)が行われ、これによってこれらウィ
ンドウが最新のノードプロジェクションの3面の1つに
よって包囲されたかどうかを決定できる。所定のウィン
ドウは、ノードプロジェクションの3面すべてについて
同時に包囲テストされる。Eテスト演算ブロック1560か
らPAINT信号が得られ、この信号は、テスト中のウィン
ドウがノードプロジェクションの3面のいずれの1面に
関してEテストを通過した時に保持される。所定のウィ
ンドウを多くても3面の内の1面によって包囲すること
ができるが、しかし乍ら、正確な演算動作には限度があ
るために、前述のEテストによって所定ウィンドウが同
時に1面以上の面によって包囲されることを表わすこと
がある。このような場合には、このような面の1つを任
意に選んでいる。このEテスト演算ブロック1560からFA
CE NUMBER信号が発生される。この信号は2ビット値を
有し、ノードプロジェクションの3面のうちのどの面が
テスト中のウィンドウを包囲するのかを表示する(勿
論、実際上このウィンドウがこれら面のいずれかによっ
て包囲された場合において)。
第42図から明らかなように、BBOX演算ブロック1520、PI
テスト演算ブロック1540およびEテスト演算ブロック15
60のいずれか1つによって最新のウィンドウの幾何デー
タ(geometry of current windows)(即ち、最新のウ
ィンドウオーバーレイの位置およびX,Y,D0,D1およびD2
空間におけるテスト中の単一ウィンドウを表わす値のフ
ァミリーのこと)、ならびに最新ノードの幾何データ
(geometry of current node)(即ち、X,Y,D0,D1およ
びD2空間における最新ノードプロジェクションの位置を
表わす値のファミリーのこと)を入力する。これらデー
タはイメージウィンドウ幾何プロセッサブロック1000お
よびオブジェクトノード幾何プロセッサブロック700の
それぞれから発生される。ディスプレイスクリーンの位
置が固定されているので、スクリーン交差ロジックブロ
ック1502は、最新ノードの幾何データを含んだ情報のみ
が必要となる。
第43A図には、以下のような特別なケースが線図的に表
わされている。このケースとは、スクリーン交差ロジッ
クブロック1502が利用され、これによってこのスクリー
ンが最新のノードプロジェクションを交差するかどうか
を決定するための簡単なBBOXテストが実行されることで
ある。上述したように、このスクリーン交差ロジックブ
ロック1502をBBOX演算ブロック1520の代りに用いること
によって、最新ウィンドウパケット中のウィンドウサイ
ズがディスプレイスクリーンのサイズに等しいかまたは
大きい場合には何時でもBBOXテストを行なうことができ
る。第20A図の説明から明らかなように、ディスプレイ
スクリーン212の下側の左手隅が点(WPX,WPY)=(0,
0)に位置(観察視野66のオリジン104)すると共に、デ
ィスプレイスクリーン212の空間領域は、512×512ピク
セルである。また、このことより容易に理解できるよう
に、以下の4つの式のいずれもが真実であるならば、最
新のノードプロジェクション68の包囲ボックス76はディ
スプレイスクリーンと交差しないようになる。
NPX+ax(CNUM)≧512 NPX+ax(CNUM)+bx≦0 NPY+ay(CNUM)≧512 NPY+ay(CNUM)+by≦0 (上式では、それぞれ以下の状態を決定するためのもの
である。即ち、最新のノードプロジェクション包囲ボッ
クスの左縁部がスクリーンの右縁部の右側であるかどう
か、このボックスの右縁部がスクリーンの左縁部の左側
であるかどうか、このボックスの底部縁部がスクリーン
の頂部の上側であるかどうか、ならびにノードプロジェ
クションの包囲ボックスの頂部縁部がスクリーンの底部
の下側にあるかどうかを上述の式によって決定でき
る)。これらの式は通常の如く、アダー1504,1506,1508
および1510とマグニチュードコンパレータ1512,1514,15
15および1516によって実行される。コンパレータ1512,1
514,1515,1516の出力(これは上述の式の比較の結果を
表わすものである)を4入力NORゲート1518の入力に供
給し、このゲート1518の出力はこれら4式のいずれもが
満足されない場合のみ保持されるようになる。NORゲー
ト1518の出力は信号SPASSであり、これは、最新ノード
プロジェクションの包囲ボックスがスクリーンを交差す
ることを表わす。
本例によれば、ディスプレイスクリーンより大きな観察
視野のウィンドウは使用できないが、この代りに、レベ
ル0のウィンドウ(スクリーンのサイズ)を含むウィン
ドウオーバーレイをこれらのプロジェクションが規定す
るまでノードを分割することができる。スクリーン交差
テストを大きさに関係なくあらゆるノードプロジェクシ
ョンに適応することが可能である。
第44B図には第42図に示したBBOX演算ブロック1520の一
部分のダイヤグラムが表わされている。ここで、第7図
および44B図を参照し乍ら、このBBOX演算ブロック1520
の動作についてBBOXテストの幾何データに関連して詳述
する。このBBOX演算ボックス1520は最新のウィンドウオ
ーバーレイ中の4つのウィンドウに対してBBOXテストを
同時に実行し、4つの出力信号BPASS0−BPASS3を発生
し、これら信号はオーバーレイのウィンドウ0−3(第
6F図に示した様にラベルが付されている)がBBOXテスト
を通過したかどうかを表示している。
第44B図にはロジックアレイブロック1529が示されてい
る。このアレイブロック1529によって最新のウィンドウ
オーバーレイ中のウィンドウの1つが最新のノードプロ
ジェクションの包囲ボックスを交差するかどうかを決定
する(4つのロジックアレイブロック1529が必要であ
り、ウィンドウオーバーレイ中の各ウィンドウに対して
1つ必要である)。アダー1522,1524,1526および1528は
マグニチュードコンパレータ1530,1532,1534および1536
と一諸に以下の式を実行する。
(WX+e)>NPX+ax(CNUM) WX<NPX+ax(CNUM)+bx (WY+e)>NPY+ay(CNUM) WY<NPY+ay(CNUM)+by (これらの式は以下の状態において満足されるものであ
る。即ち、テスト中のウィンドウの右縁部が最新のノー
ドプロジェクションの包囲ボックスの左縁部の右側にあ
り、このウィンドウの左縁部がボックスの右縁部の左側
にあり、このウィンドウの頂部がボックスの底部縁部の
上側にあり、このウィンドウの底部縁部が包囲ボックス
の頂部縁部の下側にそれぞれある場合に、式を満足させ
る)。コンパレータ1530,1532,1534および1536の出力を
4入力ANDゲート1538に供給し、これの出力が、すべて
の4式が満足された時にのみ保持される(即ち、テスト
中のウィンドウが最新のノードプロジェクションの包囲
ボックスを交差する場合である)。
第44A図には、BBOX演算ロジックブロック1521中に包含
されたウィンドウ位置ロジックブロック1521のブロック
図が開示されている。このブロック1521から8個の出力
が発生される。即ち、最新のウィンドウオーバーレイ中
の4つのウィンドウの各々に対してX′軸およびY′軸
の値(ピクセル値)である。このブロック1521には、入
力としてWLEV(最新のオーバーレイのウィンドウレベ
ル),e(最新のウィンドウのサイズ),WPXおよびWPY
(最新の4×4アレイのオリジン)およびWBITS(W3×3
X,W3×3Y,W2×2XおよびW2×2Yであり、これらによって
4×4ウィンドウアレイ内の最新のウィンドウオーバー
レイを特定する)。このロジックブロック1521によって
WX0,WY0,WX1,WY1,WX2,WY2,WX3およびWY3を生じせしめ
る。これらの各対によって、最新のウィンドウオーバー
レイ内の4つのウィンドウの各々の左下部のバーテック
ス(即ち、ウィンドウオリジン)の位置を特定すること
ができる。値WX0,WY0を最新のウィンドウオーバーレイ
内の0ウィンドウに対する第44B図に示したロジックブ
ロック1529のデュプリケーションのWX,WY入力に供給
し、WX1,WY1をウィンドウ1用のロジックブロック1529
のデュプリケーション用のWX,WY入力に供給する。
このウィンドウ位置ロジック1521は、以下の式を実行す
る組合せロジックアレイである。
WX0=WX2=(WPX*2e)+(eANDW3×3X) +(eANDW2×2X) WX1=WX3=WX0+e WY0=WY2=(WPX*2e)+(eANDW3×3Y) +(eANDW2×2Y) WY2=WY3=WY0+e (これらの式をバイナリアレー,パーレルシフター,お
よびロジックファンクションゲートを駆使し、値eは2
のべき数として実行できることは当業者にとって容易で
ある)。
第45図には、第42図に示したPIテスト演算ブロック1540
のダイヤグラムが示されている。第10図,第44図を参照
し乍ら説明すると、この演算ブロック1540によって最新
のウィンドウオーバーレイ中の4つのウィンドウの1つ
に関して多角形交差テストを実行する。これは、ノード
プロジェクションの6つの縁部の各々に対するウィンド
ウのクリチカルバーテックスを選択した後に、これら縁
部の位置をそれに対応するクリチカルバーテックスと比
較して、ウィンドウがノードプロジェクションを交差し
ているかどうかを決定する。第9図で示したように、ノ
ードプロジェクションの所定の縁部に対するクリチカル
バーテックスとしてウィンドウの4つのバーテックスの
1つを選択する場合は、このノードプロジェクションの
内側に関する縁部の傾きおよび方向性によって決定され
る。ここで、クリチカルバーテックスの選択は、所定の
観察角度に対するクワドツリー構造におけるあらゆるウ
ィンドウに関して、オクトリー構造におけるあらゆるノ
ードのプロジェクションと同一である。
第45図には6つのマグニチュードコンパレータ1541−15
46を有するPI演算ブロック1540が図示されている。これ
らコンパレータ1541−1546の各出力を6個の2入力XOR
ゲート1547−1552の入力に供給する。これら6個のXOR
ゲート1547−1552の出力を、6入力ANDゲート1553によ
って理論積を取る。このANDゲートの出力はPPASS信号で
あり、これはテスト中のウィンドウが多角形交差テスト
を通過したことを表わしている。これらXORゲート1547
−1552の機能は、コンパレータ1541−1546によって行な
われる比較動作の不等号サインを反転することであり、
この動作は、前述したように、比較すべき対応の縁部に
関してノードプロジェクションのインテリア方向の配置
状態に依存したものである。これらXORゲートの他方の
入力をインテリア方向レジスタ(Interior Direction R
egister)1554の3つの出力ID0−ID2の1つに供給し
(第42図に示したように)、このレジスタに新たなイメ
ージ発生開始時においてイニシャライズコントローラブ
ロック160(第15図)によって3つの単一ビット値を有
して負荷を掛る。これら値は、縁部D0,D1およびD2のノ
ードプロジェクションのインテリア方向をそれぞれ表わ
す。
PIテスト演算ブロック1540にはバイナリアダー1555,155
6が設けられており、以下の値を発生する。
ND1=NCD0 WD1=WCD0+WD0OFF(WNUM) ND2=NCD2 WD2=WCD2+WD2OFF(WNUM) ND3=NCD1 WD3=WCD1+WD1OFF(WNUM) ND4=NCD0+NDIAG0 WD4=WD1+WDIAG0 ND5=NCD2+NDIAG2 WD5=WD2+WDIAG2 ND6=NCD1+NDIAG1 WD6=WD3+WDIAG1 本発明の実施例によればXORゲート1547(WD1とND1とを
比較するコンパレータ1541の出力に接続された)とXOR
ゲート1550(図示しないが、ND4とWD4とを比較するコン
パレータ1544(図示せず)の出力に接続された)には、
インテリア方向レジスタ1554の出力ID0に接続された入
力を有する。この出力ID0は、縁部の下方に存在する最
新のノードプロジェクションの縁部D0によって規定され
た半分の視野のノードプロジェクションのインテリアが
含まれる場合に、保持される。XORゲート1549および155
2(図示せず、これらのゲートはND3とWD3とを比較し、
またはND6とWD6とを比較するコンパレータ1543,1546の
それぞれに接続されている)には、インテリア方向レジ
スタ1554の出力ID1に接続された入力が設けられてい
る。この出力ID1は、縁部D1を介してラインD1の左側へ
通過するラインによって規定された半分の視野にノード
プロジェクションのインテリアが含まれる場合に保持さ
れる。更に、XORゲート1548,1551(図示せず、ND2とWD2
またはND5とWD5とをそれぞれ比較するコンパレータ154
2,1545に接続されている)をインテリア方向レジスタ15
54の出力ID2に接続する。この出力ID2は、ノードプロジ
ェクションの縁部D2を介して延在すると共に縁部D2の下
方に存在するラインによって規定される半分の視野にノ
ードプロジェクションのインテリアが含まれる場合に保
持される。
第46図には、第42図に示したEテスト演算ブロック1560
のブロック1565の1つが図示されている(即ち、第12図
に示したノードプロジェクションの面※3用の包囲テス
トを実行するブロックである)。このEテスト演算ブロ
ック1560によってテスト中の所定のウィンドウに関して
ノードプロジェクションの3面の各々に対して同時に包
囲テストを行なうものである。マグニチュードコンパレ
ータ1566,1567,1568および1569は、WD11>ND11,WD7>ND
7,WD8<ND8およびWD16<ND16であるならば出力を保持す
るようになる。これらコンパレータ1566−1569の各出力
を2入力XORゲート1570−1573の入力に供給し、これの
他方の入力をインテリア方向レジスタ1554(第42図に図
示)の3つの出力の1つに供給する。これらXORゲート1
570−1573の目的は、ノードプロジェクションの面のイ
ンテリアに関して種々の縁部の配置状態に依存して、コ
ンパレータ1566−1569によって実行された比較動作によ
る不等号サインの方向づけである。
バイナリアダー(図示せず)によって適切に構成された
演算ブロック1575,1576によってノードプロジェクショ
ンの面#3用の演算ブロック1565のデュプリケーション
用の以下の値を計算する。
ND11=NCD0 WD11=WCD0+W0OFF(WNUM)+WDIAG0 ND8=NCD0+FDIAG0 WD8=WCD0+W0OFF(WNUM) ND7=NCD1+FDIAG1 WD7=WCD1+W1OFF(WNUM)+WDIAG1 ND16=NCD1+NDIAG1 WD16=WCD1+W1OFF(WNUM) 第12図、21A〜21F図、23A〜23E図に示した幾何データダ
イヤグラムから明らかなように、ノードプロジェクショ
ンの他の2面に対する演算ブロック1575,1576のデュプ
リケーションによって実行される式を演算できることが
知られている。
ウィンドウライタ(書込器) 第47A図,第47B図には、第25図に示したウィンドウ書込
みブロック1400が図示されている。この書込み器の機能
は、クワドツリー内のウィンドウに対応する、第15図の
イメージディスプレイブロック154のピクセルのすべて
にぺイント付けすることである。このクワドツリーに対
してサイクルリザルトブロック1500はペイント信号を発
生している。このイメージディスプレイブロック154を
ピクセルレベルでアドレス付けする。従って、ウィンド
ウ書込みブロック1400は、WLEV(これによってペイント
すべきウィンドウサイズを決定する)と一諸にペイント
すべきウィンドウのオリジンに関する値をペイントすべ
きウィンドウによって占有された面積に対応したイメー
ジディスプレイブロック154の隣接ピクセルのアドレス
に変換する必要がある。
アダー1402,1404,1406をカスケード接続して、第6D図−
6F図に示したように、(W3×3X×WPX)+W2×2X+WNUM
(LSB)としてペイントすべきウィンドウのオリジンの
X′軸の値を発生する。同様に、アダー1408,1410,1412
によって、(W3×3X×WPY)+W2×2Y+WNUM(MSB)とし
てペイントすべきウィンドウのオリジンのY′軸の値を
演算する。これらの値はバーレルシフタ1414,1416のそ
れぞれによって、シフトされる。これらバーレルシフタ
1414,1416のシフト選択入力(即ち、シフトされた場所
の数を制御する入力である)をWLEVに供給し、これは最
新のウィンドウが存在しているクワドツリーのレベルを
表わす。この結果、これらバーレルシフタ1414,1416の
機能は、ペイントすべきウィンドウのオリジンのアドレ
スをイメージディスプレイブロック154における適当な
ピクセル位置に変換することである(バーレルシフタ14
14,1416によってクワドツリーゼロの底部レベルにおけ
るウィンドウのアドレスや、クワドツリー1の底部レベ
ルに隣接したウィンドウ等をシフトするようにする)。
バーレルシフタ1414の出力をプログラマブルカウンタ14
18の入力に供給し、一方、バーレルシフタ1416の出力を
プログラマブルカウンタ1420の入力に供給する。レジス
タ1422,1424の各々を値eで装荷する。この値eはペイ
ントすべきウィンドウのサイズである。
カウンタ1418を開始値から開始値+eまでのすべての値
を1つずつ順次増加させる。従って、ペイントすべきイ
メージディスプレイの領域の底部の列に対してイメージ
ディスプレイブロック154のすべてのピクセルをアドレ
ス付けするようになる。このポイントにおいて、カウン
タコントロールブロック1426によってカウンタ1420を1
だけ増加せしめると共にカウンタ1418をそれの開始値に
再び装荷する。カウンタ1418は再びその開始値からこの
値+eまで増大する。従って、ペイントすべきウィンド
ウに相当するイメージディスプレイブロック154の領域
の底部から第2の列内のいずれのピクセルについてアド
レス番号付けするようになる。この処理は継続するよう
になる。ここで、カウンタ1420は一定の値に保持され、
他方カウンタ1418はペイントすべき領域の列内のすべて
のアドレスで増大するようになる。これに従ってカウン
タ1420は1だけ増大し、カウンタ1418は開始値に装荷さ
れるようになると共に再びもう1つの列に増大されるよ
うになる。この動作は、カウンタ1418,1420の両者にこ
れらの開始値+eが含まれるまで行われる(この開始値
+eは、ペイントすべきイメージディスプレイブロック
154の全体領域がアドレス番号付けされたことを意味す
るものである)。このような動作が一旦起ると、ウィン
ドウは完全にイメージディスプレイブロック154にペイ
ントされると共に、ペイント処理が完了することを表わ
す信号(図示せず)をシーケンスコントローラブロック
1600(第25図)に供給するようになる。
MUX1428の出力をイメージディスプレイブロック154(カ
ウンタ1418,1420の出力と共に)に供給する。この出力
は、ペイントすべきピクセルの色に関する情報を与える
ものである。MUX1428は、3つのレジスタ、即ち、FACE1
レジスタ1430,FACE2レジスタ1432,FACE3レジスタ1434の
出力間で選択動作を行なう。これらレジスタは、各イメ
ージの発生の開始前にイニシャライズコントロールブロ
ック160によって負荷が掛けられ(装荷)、これにより
異なった色および輝度値(好適には、赤,緑および青に
対してそれぞれ8ビットから成る24ビットワイドとな
る)を含み、これら値は所定のノードプロジェクション
の3面のそれぞれに対して設定されている。
MUX1428の選択入力をサイクルリザルトボックス1500に
よって発生させたFACE NUMBER出力に供給して、ペイン
トすべきピクセルの色を、ペイントすべきウィンドウが
最新のノードプロジェクションのどの面に包囲されてい
るかに応じて選択している。すでに説明したように、ノ
ードプロジェクションの異なる面のプロジェクションに
対して異なる色および輝度を与えることによって、最終
画像に3次元のリアリズムを付加することができる。
ペイントすべき色をFACE NUMBER以外の係数(例えば最
新ノードのPまたはF特性値以外の特性値情報のような
値)によって影響を受けることができ、この結果、異な
った密度を有するオブジェクトの部分に対応するオブジ
ェクトノードが異なった色でペイントされ得るようにな
ることが知られている。
本例によれば、特別な強調を、ウィンドウがクワドツリ
ーのレベル9(底部)でペイントした場合に、アンチ・
アライジング・ピクセル(anti−aliasing pixels)に
より発生させたイメージに対して与えることができる。
1対1対応しているクワドツリーのレベル9におけるウ
ィンドウおよびイメージディスプレイブロック154のピ
クセルと共に有するより他に、本発明によれば、256×2
56のピクセルアレイとしてイメージディスプレイを別個
にアドレス付けしている(これらピクセルは4つの“サ
ブピクセル”を表わしており、クワドツリー内の最も低
いレベルのウィンドウの4つの相当するものである)。
レベル9のクワドツリーウィンドウをペイントするため
に、ウィンドウ輝度値の1/4を、組合せたイメージディ
スプレイピクセル中に合算させている(書込む代り
に)。勿論、このイメージディスプレイをイメージ発生
プロセスが開始する前にクリヤする必要がある。アンチ
・アライジングの追加の“レベル”を実行できるように
なる(1ピクセルを例えば4レベルの8個のクワドツリ
ーウィンドウまたは16レベルの9個のウィンドウに合算
することが可能である)。
アンチ・アライジング(anti−aliasing)の目的は、ピ
クセルの組(セット)を単一のピクセル(本例では4ピ
クセルを1つのピクセルに)平均値化することであり、
これによってイメージの2次元空間周波数成分を減少さ
せることができる。従ってオブジェクト(物体)のエッ
ジ(縁部)が階級としてより直線または曲線として現わ
れるようになる。表面部もまた平滑化されて現われるよ
うになる。本発明による効果がイメージに現われると、
これは人間の目に好ましいものとなる。上述したように
実行されると、レベル9のウィンドウをクワドツリー中
に書込んだ時のみアンチ・アライジングが行われる。
シーケンスコントローラ 第48図には、第25図のシーケンスコントローラブロック
1600の状態図が図示されている。このシーケンスコント
ローラブロック1600の機能は、イメージディスプレイプ
ロセッサブロック152内で起るイベントの順序を制御す
るための信号を供すること、およびこのプロセッサ中の
各ブロックの動作を直接制御することである。
このような複雑なディジタルロジックデバイスの種々の
コンポーネントのすべてのオペレーションのシーケンス
動作に包含されているかなり多くのタイミングトラブル
が諸々の実行中に発生することが知られている。このよ
うなトラブルは、適当な値が計算され、これら値が計算
され、これら値が必要となる前にこれらの宛先(行先
き)に正しく到達するために解決する必要がある。ま
た、同様に、このディジタルロジックデバイスを実行す
るために使用された種々のコンポーネントの動作スピー
ドによってこのデバイスが動作し得るスピードを決定で
きることが知られている。これらの設計変更は、技術的
可能性以内において多く実施できるので、本明細書にお
いてはこれ以上説明しない。
本発明によるイメージディスプレイプロセッサブロック
152を、8つの状態、NPUSH,WPUSH,BBOX,PIT,ET,NPOPお
よびWPOPを有する有限値状態同期シーケンス回路(fini
te−state synchronous sequentialcircuit)として実
現できる。第48図を参照すると、僅か6種の状態が表わ
されている。その理由は、PUSH状態を実際にはWPUSHお
よびNPUSH位置に分割する一方、POP状態を実際にはNPOP
およびWPOP位置に分割している。このイメージディスプ
レイプロセッサブロック170をWPUSHまたはNPUSHまたは
両方の場合には、このプロセッサは、POP状態にあると
称し、同様に、イメージディスプレイプロセッサブロッ
ク170をNPOPまたはWPOP状態または両方の場合には、こ
のプロセッサをPOP状態にあると称す。
イニシャライズコントローラブロック160(第15図参
照)によって、マシーンをINIT状態にさせる開始信号を
送給することによってイメージディスプレイプロセッサ
ブロック152の動作を開始させる。このINIT状態は、信
号GOが保持されない限りパス(path)1を経てそれ自身
のループ(環状)動作が継続されるようになる。この信
号GOはイニシャライズコントローラブロック160によっ
て、適当なノードのすべての値を発生させ、ウィンドウ
幾何データ値を発生させてしまうと共に、これらの値で
イメージディスプレイプロセッサブロック160をイニシ
ャライズさせた時に保持される。このGO信号が保持され
ると、マシーンは状態をパス2に従って変化し、BBOX状
態になる。
このBBOX状態から5つの状態転移パス(state transiti
on path)が存在する。即ち、マシーンは、BBOXテスト
の結果に応じてこれら5つのパスの1つをトラバース
(横切る)する。最新のウインドウのサイズがディスプ
レイスクリーンのサイズより小さい場合および最新のウ
インドウオーバーレイ中の4つのウインドウの1つがBB
OXテストを通過する場合はいつでも、PIテストを通過し
たクワドツリートラバースシーケンス(quadtree trave
rsal sequence)中における第1ウインドウについて行
なう必要がある。パス3はPIT状態へトラバースする。
パス4 状態転移パス4はNPOPおよび/またはWPOPを実行するた
めにトラバースする。最新のウインドウオーバーレイ中
のすべてのウインドウがBBOXテストを失敗すると共に、
このマシーンはロックステップ状態(即ち、ノードおよ
びウインドウレベルが同一となる状態を意味する)とな
り、更に、最新のノードパケット中に残存している非E
ノードが全く存在しない場合に、NPOPが実行されるよう
になる。同様に、最新のウインドウのサイズがディスプ
レイスクリーンのサイズと等しいかまたは大きい場合、
最新ノードのプロジェクションがディスプレイスクリー
ンを交差しない場合、(即ち、スクリーン交差テストを
失敗した場合)、およびノードが最新のノードポケット
中に残存しない場合には、NPOPが同様に実行されるよう
になる。最新のウインドウサイズがディスプレイスクリ
ーンのサイズより小さく、ウインドウオーバーレイ中の
すべてのウインドウがBBOXテストを失敗し、更に、最新
のノードポケット中に残っているノードが全く無くなっ
た場合には、WPOPが実行される。最後に、ウインドウサ
イズがディスプレイスクリーンサイズより小さく、オー
バーレイ中のすべてのウインドウがBBOXテストに失敗
し、マシーンがロックステップ状態でない場合(即ち、
ノードレベルがウインドウレベルと同一でないこと、換
言すれば、充満したノード(full node)が見出され、
これを交差するウインドウが更に分割されてどのウイン
ドウが上述の充満したノードによって十分に包囲された
かを位置決めすることを意味する)、WPOPを実行する必
要がある。
パス5 パス5はBBOX状態からPUSH状態へトラバースする。この
パス5をWPUSHおよびNPUSHに分離する必要がある。この
パス5はBBOX状態からPUSH状態へトラバースして、最新
ウインドウのサイズがディスプレイスクリーンのサイズ
に等しいか、または大きい場合およびディスプレイスク
リーンサイズが最新ノードプロジェクションを交差する
場合(即ち、スクリーン交差テストを通過すること)に
はいつでもNPUSHを実行する。最新のウインドウのサイ
ズがディスプレイスクリーンのサイズが等しい場合(即
ち、ウインドウがクワドツリー構造のレベル0である場
合)にWPUSHを実行する。
パス6 パス6によってBBOX状態の転移からBBOX状態に戻るよう
になる。パス6は以下の場合にトラバースするようにな
る。即ち、最新のウインドウのサイズがスクリーンサイ
ズより小さく、ウインドウオーバーレイの最新のウイン
ドウのいずれもがBBOXテストを通過しない場合で、最新
のノードパケット内に非空白ノード(non−Empty node
s)が残存している場合である。この場合、このノード
パケット内の次のノード(オクトリーの7/0トラバース
シーケンスに従って)を選択すると共に、これに対して
BBOXテストを実行する。最新のウインドウサイズがスク
リーンサイズに等しいかまたは大きい場合、スクリーン
交差テストを通過しなかった(失敗)場合、および最新
ノードパケート中にノードが残存している場合には、こ
のパスがトラバースする。
マシーンが一旦PIT状態にあると、前述したように最新
ウインドウオーバーレイ中のウインドウの1つに対して
多角形交差テストを実行する。このPIT状態をパス7,8,
9,10または11を介して導入する。
パス7 パス7によってPIT状態からET状態への状態の変化が行
われる。このことは2つの場合のどちらか一方で起る。
即ち、PIテストを通過し、最新のノードがFとなり、最
新のウインドウがEとなり更に、マシーンがロックステ
ップ状態(即ち、ノードレベルが以下の理由によりウイ
ンドウレベルに一致しない状態である。この理由とは、
ウインドウが分割されて充満したノード(Fall node)
を交差したウインドウを見つけるからである)の場合に
は何時でも、パス7はトラバースする。また、他方の場
合とは、PIテストを通過し、最新のウインドウがクワド
ツリーの最も底のレベルにある場合(この結果、これ以
上分割できなくなる)である。包囲テストを行なうET状
態をFノードのみに実行するようになっている。この理
由は、Pノードは処理される前に(即ち、充満したノー
ドによって包囲されたこれらウインドウのみをペイント
するからである)、更に分割する必要がある。同様に、
最新のウインドウがEである場合に、ET状態のみが導入
されるようになる。この理由は、ウインドウを更に分割
する必要があり、Fウインドウを捨るからである(これ
はEウインドウのみすでにペイントしてあるからであ
る)。
パス8 このパス8をトラバースすることによって、マシーンを
PIT状態からPUSH状態へ変化させる。このパス8をトラ
バースして以下の場合にMPUSHを実行する。即ち、PIテ
ストを通過し、最新ノードがPまたはFの場合、最新の
ノードプロジェクション用のウインドウオーバーレイ中
のウインドウがクワドツリーの底部レベルでない場合、
更にこのノードがカットプレーンによって交差された場
合(この場合、このノードを分割する必要がある)は、
いつでもNPUSHを実行する。また、パス8をトラバース
して以下の場合に、WPUSHを実行する。即ち、PIテスト
を通過し、最新ウインドウがPである場合(ウインドウ
を分割するために)には、WPUSHを実行する。同様に、
パス8をトラバースさせて以下の場合にはWPUSHを実行
する。即ち、PIテストを通過し、マシーンをロックステ
ップ状態となる(即ち、ノードレベルがウインドウレベ
ルと一致する)と共に、ウインドウレベルがクワドツリ
ーの底部レベルにない場合である。このET状態は、マシ
ーンがロックステップ状態にある場合には決して発生し
ない。この理由は、このような条件では、最新のウイン
ドウは、規定によって最新のノードプロジェクションよ
り大きくなるからである(例え、このウインドウがこの
ノードプロジェクションを交差できたとしても、このウ
インドウによってノードを包囲することはできない)。
パス9 パス9がトラバースすると、マシーンはPIT状態からPIT
状態へ戻るようになる。このことは、PIテストが失敗す
るが、最新のウインドウオーバーレイ中に未だウインド
ウが残存している場合にはいつでも起るようになる。こ
の場合、オーバーレイ中の次のウインドウが得られ、こ
れにPIテストが行われる。
パス10 このパス10はPIT状態からPOP状態に変化させる。PIテス
トを失敗し(通過できない)、ウインドウオーバーレイ
中にウインドウが残存していない場合、ノードパケット
中に非Eノードが残存していない上に、マシーンがロッ
クステップ状態にある場合(この場合、WPOPも行われ
る)にはいつでも、NPOPが実行される。また、ウインド
ウがPIテストを失敗し、オーバーレイ中にウインドウが
存在しない場合、マシーンがロックステップ状態でない
場合(即ち、ウインドウがノードレベル以下に分割され
て充満ノードによって包囲されたこれらウインドウを位
置させる場合を意味する)。
パス11 このパス11はPIT状態からBBOX状態へ以下の場合にトラ
バースする。即ち、PIテストに失敗し、最新ウインドウ
オーバーレイ中にウインドウが残存していなく、最新ノ
ードパケット中に非Eノードが残存している場合で、マ
シーンがロックステップ状態の場合である。
マシーンが一旦ET状態にある場合に、前述したように最
新のウインドウオーバーレイ中のウインドウの1つに対
して包囲テストを行なう。ET状態をパス12,13,14および
15を介して導入する。
パス12 パス12によってマシーンがET状態からBBOX状態へ移行す
る。最新のウインドウがEテストを通過し(およびペイ
ント付けされる)、最新のノードプロジェクションがク
ワドツリーの底部レベルにある場合、および最新ノード
パケット中に非Eノードを残存する場合には何時でもこ
のマシーンがパス12をトラバースする。最新のウインド
ウオーバーレイ中に最大でも1つのウインドウのみが最
新ノードプロジェクションによって包囲できるので(ノ
ードがクワドツリーの底部レベルにある時にトルー
(真:true)であることを保証する)、このノードの処
理が完了し、ノードパケット中に残存しているノードを
処理する必要がある。また、Eテストが失敗し、最新ノ
ードプロジェクションがクワドツリーの底部レベルに存
在し(即ち、最新のウインドウレベルがクワドツリーの
底部にある場合も意味する)、処理すべきウインドウオ
ーバーレイ中にウインドウが残存しない場合および処理
すべきノードパケット中にノードが存在しない場合に
は、パス12もまたトラバースする。この場合、同様に次
のノードが得られるようになる。
パス13 このパス13によってET状態からPOP状態にトラバースし
て、以下の場合にNPOPを実行する。即ち、Eテストを通
過し、最新のノードプロジェクションレベルがクワドツ
リーの底部レベルにある場合、更に、最新のノードパケ
ット中にノードが残存していない場合にはいつでもNPOP
を実行する。この場合、オクトリーの上述の分割処理が
完了し多くても、1つのウインドウをオクトリーの底部
レベルにあるノードによって包囲することができること
を思い出すこと、更に、オクトリーの次のレベルアップ
をトラバースする必要がある。パス13をトラバースして
以下のケースでNPOPを実行するようにする。即ち、Eテ
ストを失敗し、最新ノードがオクトリーの底部レベルに
ある場合、最新のウインドウオーバーレイ中に処理すべ
きウインドウが存在していない時、および残存している
最新ノードパケットの中のノードが存在する場合にはい
つでもNPOPを実行する。これら2つのケースでは、NPOP
も実行される(即ち、パス13をトラバースして以下の場
合にWPOPおよびNPOPが実行される。つまり、Eテストを
通過し、最新ノードがオクトリーの底部レベルである場
合、ならびにノードパケットにノードが残存していない
場合はいつでも実行される)。このパス13はまたトラバ
ースされてNPOPおよびWPOPを実行する。Eテストを失敗
し、最新ノードがオクトリーの底部レベルである場合、
およびオーバーレイ中に処理すべきウインドウが存在し
ないだけでなく、ノードパケット中に処理すべきノード
が存在しない場合には何時でも実行される。Eテストが
通過し、オーバーレイ中に処理すべきウインドウが存在
しない時には、何時でもパス13をトラバースしてWPOPを
実行する。同様に、Eテストを失敗し、ウインドウレベ
ルがクワドツリーの底部にある場合、オーバーレイ中に
処理すべきウインドウが残存していなく、更に最新のノ
ードがオクトリーの底部にある場合には何時でもパス13
をトラバースしてWPOPを実行する。
パス14 このパス(path)14をトラバースしてマシーンをET状態
からPIT状態へ2つのケースの一方において変化させ
る。第1としては、Eテストを通過し、最新ノードがオ
クトリーの底部レベル存在しない場合、およびウインド
ウオーバーレイ中に処理すべきウインドウが残存する場
合である(即ち、BBOXテストがウインドウオーバーレイ
中の4個すべてのウインドウに対して同時に実行され、
PIおよびEテストがオーバーレイ中の個々のウインドウ
に対して順次行われることである)。パス14は、Eテス
トが失敗し、最新のレベルがクワドツリーの底部に存在
し、処理すべきウインドウオーバーレイ中にウインドウ
が残存する時に、パス14をトラバースする(最新のウイ
ンドウをこれ以上分割できない。その理由は、このウイ
ンドウが底部レベルに存在し、従って如何なるアクショ
ンも実行されず、次の処理すべきウインドウが得られ
る)。
パス15 パス15のトラバースによって、Eテストが失敗すると共
にウインドウレベルがクワドツリーの底部レベルに存在
しない場合にはいつでもET状態からWPUSH状態へマシー
ンが変化するようになる。この状態は、マシーンがノー
ドでなくウインドウを分割する時に(即ち、ロックステ
ップ以下となる)起るものである。
POP状態をパス16,17,18を介して導入する。
パス16 このパスのトラバースによって、最新のノードパケット
中にノードが存在する場合にはいつでもNPOPからBBOXへ
状態が変化する。パス16はまた、WPOP、しかしNPOPでは
ないものが実行された場合、最新のウインドウオーバー
レイ中にウインドウが存在しない場合、更に、最新ノー
ドパケット中にノードが存在し、マシーンがロックステ
ップ状態である場合にもトラバースする。
パス17 このパス17がトラバースして4つのケースでPOP状態の
ままとなる。第1のケースとして、パス17は、NPOPが実
行されると共に、新して最新のノードパケットに非空白
ノードが残存している場合には何時でもトラバースす
る。この場合、第2のNPOPが直ちに実行される。このパ
ス17は、NPOPが丁度実行された時、新たな最近のノード
パケット内に非空白ノードが残存しないと共に、ウイン
ドウレベルがスクリーンレベルより低い場合には何時で
もトラバースする。この場合、第2のNPOPおよびWPOPが
実行されるようになる。パス17は、WPOPが丁度実行され
てしまった場合、新しいウインドウオーバーレイ中に非
充満ウインドウが残存しなく、新たな最近のノードパケ
ット中に非空白ノードが残存しない場合、更に、プロセ
ッサがロックステップの状態にある場合にはトラバース
するようになる。この場合、NPOPおよびWPOPの両方が実
行されるようになる。最後に、パス17はWPOPが丁度実行
され、マシーンがロックステップ状態でない場合および
新たなウインドウオーバーレイ中に非充満ウインドウが
存在しない時にはいつでもトラバースするようになる。
この場合、第2のWPOPが実行されていまだ処理されてい
ないウインドウを探すようになる。
パス18 このパス18のトラバースによってマシーンの状態がPOP
状態からPIT状態と変化するようになる。このことは、W
POPがNPOP無しで実行された場合およびウインドウオー
バーレイ中にウインドウが残存する場合に起るものであ
る。即ち、ウインドウパケットがPOPおよびPUSH処理さ
れる前に、BBOXテストがウインドオーバーレイ中の4個
すべてのウインドウについて実行されてしまうので、BB
OXテストを通過してしまったウインドウのみが残存する
ようになる。処理が残っているこのオーバーレイを継続
して処理するためには、オーバーレイ中に残存している
次のウインドウについて次のPIテストを実行する必要が
ある。
パス19 このパス19をトラバースすることによって、マシーンの
状態をPUSH状態からBBOX状態へ変化させる。このパスは
PUSHサイクルの終りで常にトラバースする。
第48図に示した状態転移ダイヤグラムに関する上述した
状態の転移を以下の状態転移テーブルを用いて要約す
る。
表V 1.INIT→INIT:GO 2.INIT→BBOX:GO 3:BBOX→PIT:(BELOW.BPASS) 4a.BBOX→NPOP:(BELOW.BFAIL.LOCKSTEP.NREM)+(BEL
OW.SFAIL.NREM) 4b.BBOX→WPOP:(BELOW.BFAIL.LOCKSTEP.NREM)+(BEL
OW.SFAIL.LOCKSTEP) 5a.BBOX→NPUSH:(BELOW.SPASS) 5b.BBOX→WPUSH:(SCREEN.SPASS) 6.BBOY→BBOX:(BELOW.BFAIL.LOCKSTEP.NREM)+(BELO
W.SFAIL.NREM) 7.PIT→ET:(PPASS.NFULL.WEMPTY.LOCKSTEP)+(PPAS
S.WSUBPX) 8a.PIT→NPUSH:(PPASS.NPART)+(PPASS.INT.NSUBP
X) 8b.PIT→WPUSH:(PPASS.WPART)+(PPASS.ROCKSTEP.WS
UBPX) 9.PIT→PIT:(PFAIL.NREM) 10a.PIT→NPOP:(PFAIL.WREM.NREM.LOCKSTEP) 10b.PIT→WPOP:(PFAIL.WREM.NREM.LOCKSTEP)+(PFAI
L.WREM.LOCKSTEP) 11.PIT→BBOX:(PFAIL.WREM.NREM.LOCKSTEP) 12.ET→BBOX:(EPASS.NSUBPX.NREM)+(EFAIL.NSUBPX.
WREM.NREM) 13a.ET→NPOP:(EPASS.NSUBPX.NREM)+(EFAIL.NSUBP
X.WREM.NREM) 13b.ET→WPOP:(EPASS.NSUBPX.NREM)+(EFAIL.NSUBP
X.WREM.NREM)+(EPASS.WREM.NSUBPX)+(EFAIL.WSUB
PX.WREM.NSUBPX) 14.ET→PIT:(EPASS.NSUBPX.WREM)+(EFAIL.WSUBPX.W
REM) 15a.ET→NPUSH:not allowed 15b.ET→WPUSH:(EFAIL.WSUBPX) 16a.NPOP→BBOX:NREM 16b.WPOP→BBOX:(NPOP.WREM.NREM.LOCKSTEP) 17a.NPOP→NPOP:NREM 17b.NPOP→WPOP:(NREM.BELOW) 17c.WPOP→NPOP:(NPOP.WREM.LOCKSTEP.NREM) 17d.WPOP→WPOP:(WREM.LOCKSTEP)+(NPOP.WREM.LOCK
STEP.NREM) 18a.NPOP→PIT:not allowed 18b.WPOP→PIT:(NPOP.NREM) 19a.NPUSH→BBOX:Always 19b.WPUSH→BBOX:Always 前述した状態転移テーブルに用いられたロジックについ
て以下のような定義が与えられる。
BELOW:ノードレベル(NLEV)がスクリーンレベル(クワ
ドツリーレベル0)より小さく、クワドツリーの底部レ
ベルと等しいかそれ以上の場合にトルー(true:真)と
なる。
BFAIL:ウインドウオーバーレイ中のウインドウのいずれ
もがBBOXテストを通過しなかった時にトルーとなる。
BPASS:ウインドウオーバーレイ中のいずれのウインドウ
がBBOXテストを通過した時にトルーとなる。
EFAIL:包囲テストが通過しなかった(失敗した)時にト
ルーとなる。
EPASS:包囲テストを通過した時にトルーとなる。
GO:イニシャライズコントローラブロック160によって、
イメージディスプレイプロセッサをイニシャライズした
時にトルーとなる。
INT:カットプレーンの1つが最新のノードを交差する場
合にトルーとなる。
LOCKSTEP:ウインドウレベル(WLEV)がノードレベル(N
LEV)に等しい場合にトルーとなる。
NFULL:最新のノードが充満(fall)の場合トルーとな
る。
NPART:最新のノードが不完全(partial)の場合トルー
となる。
NREM:最新のノードパケット中の処理すべき不完全なま
たは充満したノードが残存する場合にトルーとなる。
NSUBPX:最新のノードプロジェクション用のウインドウ
オーバーレイがクワドツリーの底部レベルにあるウイン
ドウを含む場合にはトルーとなる。
PFAIL:多角形交差テストを通過できない失敗の場合には
トルーとなる。
PPASS:多角形交差テストを通過する場合にはトルーとな
る。
SCREEN:最近のノードプロジェクション用のウインドウ
オーバーレイが、ディスプレイスクリーンと同じサイズ
であるウインドウを包含する場合にはトルーとなる。
SFAIL:スクリーン交差テストを通過できなかった時にト
ルーとなる。
SPASS:スクリーン交差テストを通過した時にトルーとな
る。
WEMPTY:最新のウインドウが空白の場合にトルーとな
る。
WPART:最新のウインドウが不完全の場合にトルーとな
る。
WREM:最新のウインドウオーバーレイ中に処理すべきウ
インドウが残存している場合にトルーとなる。
WSUBPX:最新のウインドウレベルがクワドツリーの底部
レベルにある場合にトルーとなる。
第49図には、シーケンスコントローラブロック1600のダ
イヤフラムが図示されている。このシーケンスコントロ
ーラ1600には、次期状態ロジックブロック(Next State
Logic block)1602(組合せられたロジックアレイから
構成される)、状態レジスタ1604およびシステムクロッ
ク発振器1606(クリスタル制御型発振器が好適である)
が設けられている。この状態レジスタ1604の内容は、イ
メージディスプレイプロセッサブロック152の最新状態
であり、好適には8ビットの二進数でエンコードされて
いる。この結果、1出力ラインが8つの状態の各々に保
持されている。この状態レジスタ1604を継続的にシステ
ムクロック1606から出力によってクロック信号化する
(この出力は、またイメージディスプレイプロセッサブ
ロックのリセット入力にも供給する)。この状態レジス
タ1604の出力をイメージディスプレイプロセッサブロッ
ク152の種々のブロックに供給すると共に、この出力に
よってイメージディスプレイプロセッサ中のイベントの
順序の制御している。
状態レジスタブロック1604の出力を次期状態ロジックブ
ロック1602の入力に供給する(状態レジスタ内に記憶す
べき次期状態が現在の状態によって一部分ではあるが決
定されるためである)。また、このブロック1602に入力
として供給されるのは状態転移テーブル中で使われた信
号のすべてである。これら信号のいくつかは個々に説明
してないが、当業者であれば、簡単なロジックオペレー
ションを用いて説明された信号からこれら信号を容易に
作り出すことは可能である。
第48図の状態転移ダイヤグラムおよび状態転移テーブル
(表V)が与えられ、次期状態ブロック1602の入力とし
ての機能の出力を完全に説明することができる(種々の
状態をエンコードする2進数の任意の割当ては除外す
る)。更に、上述の次期状態ロジックブロック1602を本
発明によれば組合せたロジックアレイとして実現してい
たが、他に実現することも可能である。例えば、ROM
(ここで、ROM内の各位置に記憶された情報を入力アド
レスは次期状態である)、マイクロプロセッサ、第48図
の状態転移ダイヤグラム、および状態転移テーブルVを
実行するハドウエアの他のグループを用いることもでき
る。
本発明は上述した実施例に限定されず、種々の変更を加
え得ることは当業者にとって容易に推考できるものであ
る。
【図面の簡単な説明】
第1(A)図は三次元空間及び描画される空間内に形成
される三次元物体を示す図、第1(B)は空間がツリー
(木)のルートノード(根節)として定められるオクト
(8)ツリー体系に組立てられた第1(A)図に示す空
間の図、第1(C)図は第1(B)図に示すルートノー
ドのチャイルドノード(節)1を8チルドレンノードに
分けた図、第1(D)図は第1(B)図に示す根節のチ
ルドレンノード5を8チルドレンノードに分けた図、第
2図は第1図に示す空間に対応するツリー構造を表す
図、第3(A)図はウインドウのいくつかはチルドレン
に分割され更にグランドチルドレンウィンドウに分割さ
れ、視野面の限定されたウィンドウのいくつかは格子模
様にされているクワドツリー体系に組立てられた二次元
視野面を示す図、第3(B)図は第3(A)図に示す観
察図に対応するクワドツリー構造の概略図、第4(A)
図は所定角度でのツリー構造の任意のノードの8チルド
レンノード0〜7のトラバーサルシーケンスを示す図、
第4(B)図は第4(A)図に示すツリー構造内のオブ
ジェクト(単一レベル1のノード)を示す図、第4
(c)図はオブジェクトを表すノードの位置を示すため
にチルドレンノード及びグランドチルドレンノードに分
割した分割ノード7に、第4(B)図に示すツリーにお
けるトラバーサルシーケンスを反復適用したことを示す
図、第5図はクワド(方形)構造に体系化されている視
野面に投影した二次元オブジェクトノードを表す図、第
6(A)図は所定視角でノードの3つの可視面が投影内
に形成されている第5図に示される三次元オブジェクト
ノードの投影図、第6(B)図は第6(A)図に示され
たノード投影によって形成される束縛箱の図、第6
(C)図は第6(B)図に示されたノード投影及び束縛
箱の周囲に形成されたウインドウオーバレイを示す図、
第6(D)図は第6(C)図に示されたウインドウオー
バレイを4×4ウインドウアレイに分割し、4×4ウイ
ンドウアレイ内の3×3ウインドウアレイを選択するこ
とを示すウインドウオーバレイの図、第6(E)図は第
6(D)図に示されたウインドウアレイから選択された
3×3ウインドウアレイから選択されるウインドウオー
バレイの図、第6(F)図は第6(E)図に示されたウ
インドウオーバレイから選択された1つのウィンドウの
図、第7図は第6(B)図にツリーオブジェクトノード
の投影によって形成される束縛箱が視野面の所定のクワ
ドツリーウインドウであるかを決定する束縛箱テストと
関連するジオメトリ(幾何)を示す図、第8図は投影の
6外部エッジ及び3内部エッジが多角交点(ポリゴンイ
ンターセクション)テスト及びツリーノード投影が方形
ウィンドウ(クワドウインドウ)を包囲しているかを決
定するための包囲(エンクロージャ)テストによって行
われる比較のためにナンバ付されているノード投影を示
す図、第9図は多角交点テストのために視野面に投影さ
れたノードのエッジのスロープ及び内部方位の関数とし
て選択されるクワドウィンドウの臨界頂点を示す図、第
10図はウィンドウがノード投影と交差しているかどうか
を決定するために、視野面に投影されたノードの各外部
エッジの位置がクワドウィンドウの関連する臨界頂点の
位置と比較される多角交点テストに関連するジオメトリ
の図、第11図は包囲テストのために、視野面に投影した
ノードのエッジのスローブ及び内部方位の関数として選
択されるクワドウィンドウの臨界頂点を示す図、第12図
はウィンドウがノード投影の面によって完全に包囲され
たかを決定するために、視野面に投影されたノードの各
表面の各エッジの位置がクワドウィンドウの関連する臨
界頂点の位置と比較される包囲テストと関連するジオメ
トリを示す図、第13図はクワドツリーウィンドウが交差
しているかまたはノード投影の面によって完全に包囲さ
れているかを示す結果を得るために束縛箱テスト、多角
交点テスト及び包囲テストの結果の応用を示す機能ブロ
ック図、第14(A)図は一対のカット面によって形成さ
れる領域内にある、第14(A)図に示すノード60の部分
を示す図、第14(B)図はノードが一対のカット面によ
って形成される領域の内側または外側にあるかどうか及
びノードがカット面によって交差されているかどうかを
決定するカット面テストと関連するジオメトリを示す
図、第15図はこの発明に従った三次元固体物体像発生装
置のブロック図、第16図は第15図に示されたツリーデー
タ変換ブロックによって行われるような入力をツリーデ
ータに変換することを示す図、第17図は第15図に示され
たオクトリーコード化物体記憶ブロックに記憶されるツ
リー構造を示す図、第18(A)図〜第18(B)図は第15
図に示されるイメージディスプレイ(画像表示)プロセ
ッサブロックの機能を表すフローチャート図、第19図は
第18(A)図〜第18(B)図に示すフローチャートの変
形であり、カット面テストが断面像を発生するように用
いられるときの第15図に示すイメージディスプレイプロ
セッサブロックの動作を示すフローチャート図、第20
(A)図はこの発明に従って二次元座標系と三次元座標
系との相関関係を定める所定視点に対して二次元クワド
ツリー空間に投影された三次元ツリー空間を示す図、第
20(B)図はルートノードの投影の束縛箱を示す図、第
20(C)図はX方向への束縛箱オフセットを示し、二次
元視野面の8つのチルドレンノード投影の束縛箱がペア
レントノード(第20(B)図)の束縛箱から変位するこ
とを示す図、第21(A)図は第20(A)図に示すペアレ
ントノード投影のD0エッジからの各チルドレンノード投
影のD0エッジの変位を表すノードエッジオフセットを示
す図、第21(B)図は第20(A)図に示すペアレントノ
ード投影のD1エッジからの各チルドレンノード投影のD1
エッジの変位を表すノードエッジオフセットを示す図、
第21(C)図は第20(A)図に示すペアレントノード投
影のD2エッジからの各チルドレンノード投影のD2エッジ
の変位を表すノードエッジオフセットを示す図、第21
(D)図はチルドレンノード投影のD0エッジからのD0エ
ッジに並行なチルドレンノード投影の各面エッジのオフ
セットを示す図、第21(E)図はチルドレンノード投影
のD1エッジからの同D1エッジに並行なチルドレンノード
投影の各面エッジのオフセットを示す図、第21(F)図
はチルドレンノード投影のD2エッジからの同D2エッジに
並行なチルドレンノード投影の各面エッジのオフセット
を示す図、第22(A)図はペアレントノード投影の頂点
から各チルドレンノード投影の頂点までのオフセットで
あり、ノードが一対の並行面によって限定される領域に
あるかを決定するカット面テストに使用されるオフセッ
トを示す図、第22(B)図はカット面テストに使用する
ためのノード投影の寸法測定を示す図、第23(A)図は
各々がディスプレイスクリーンのサイズであり、ルート
ノード投影のD0、D1、D2エッジに関連し、しかも4×4
アレイのチルドレンウィンドウの寸法を限定する4×4
ウィンドウアレイの臨界頂点コーナへのクワドツリー空
間の起点からのオフセットを示す図、第23(B)図は第
23(A)図に示されたルートノード投影のD0エッジに関
連して規定される頂点から所定のクワドツリーウィンド
ウオーバレイの(D0エッジに対する)他の臨界頂点の各
々までの変位を限定するオフセットを示す図、第23
(C)図は第23(A)図に示されたルートノード投影の
D1エッジに関連して規定される頂点から所定のクワドツ
リーウィンドウオーバレイの(D1エッジに対する)他の
臨界頂点の各々までの変位を限定するオフセットを示す
図、第23(D)図は第23(A)図に示されたルートノー
ド投影のD2エッジに関連して規定される頂点から所定の
クワドツリーウィンドウオーバレイの(D2エッジに対す
る)他の臨界頂点の各々までの変位を限定するオフセッ
トを示す図、第23(E)図は第23(A)図に示されたル
ートノード投影のD0、D1、D2エッジの各々に関する所定
のクワドツリーウィンドウの対向頂点間のオフセットを
示す図、第24(A)図〜第24(B)図は第15図に示す初
期化コントローラブロックの機能を説明するフローチャ
ート図、第24(C)図は三次元座標系内に限定される第
5図に示す視野面であり、この視野面の一点が三次元空
間の投影を視野面に位置付けするために使用者によって
定められることを示す図、第24(D)図は三次元ツリー
空間及び座標系を示し、回転できる回転中心が使用者に
よって定められる三次元空間によって限定される座標系
に、視野面によって限定される第24(C)図に示す座標
系が重ねられていることを示す図、第24(E)図は第24
(A)図に示されるブロック256によって目盛り付けさ
れた後の第24(D)図の三次元空間を示す図、第24図
(F)図は視野面によって限定される第24(C)図の座
標系の起点が第24(A)図のブロック258によって回転
中心に位置付けされる第24(E)図の目盛り付け三次元
空間を示す図、第24(G)図は第24(F)図に示すよう
に変換され第24(A)図のブロック260によって回転中
心を回転される三次元空間を示す図、第24(H)図は第
24(G)図に示すように回転され回転中心が第24(C)
図に示す視野面における使用者特定点に対応するように
第24(A)図のブロック262によって変換される三次元
空間を示す図、第24(I)図は第24(A)図のブロック
264によって視野面に投影される、第24(H)図に示す
三次元空間を示す図、第24(J)図は第24(A)図のブ
ロック268によって示されるように第24(I)図に示す
三次元空間によって限定される束縛箱を示す図、第25図
は第15図に示すイメージディスプレイプロセッサブロッ
クの詳細ブロック回路図、第26(A)図〜第26(B)図
は第25図に示すメモリアドレスプロセッサブロックの回
路図、第27図は第25図に示したメモリアドレススタッ
ク、オブジェクトノードパケットスタック、オブジェク
トノードジオメトリスタック、WBITSスタック、イメー
ジウィンドウパケットスタック、イメージウィンドウジ
オメトリスタック、B−Box結果スタック、カット面ジ
オメトリスタックに使用される一般的スタック構造を示
す図、第28図は第25図に示すオブジェクトノードパケッ
トプロセッサブロックを示す図、第29図は第25図に示す
オブジェクトノードジオメトリプロセッサブロックを示
す図、第30(A)図は第25図に示すイメージウィンドウ
メモリブロックを示す図、第30(B)図はディスプレイ
スクリーンの一部であり、第30(A)図に示す問挿アレ
イ(A,B,C,D)によってウィンドウがどのように記憶さ
れるかを示すクワドツリーのある任意のレベルでウィン
ドウに分割される部分を示す図、第30(C)図〜第30
(F)図は第30(A)図に示す問挿アレイ(A,B,C,D)
に対する所定ウィンドウオーバレイの4つの可能な形態
を示す図、第31(A)図は第30(A)図に示すクワド
(方形)アドレスマップを示す図、第31(B)図は第30
(A)図に示す4つのアレイ(A,B,C,D)の1つを示す
図、第32図は第30(A)図に示すクワドツリーブロック
イネーブルロジックを示す図、第33図は第30(A)図に
示すクワドツリークリアアドレスジェネレータブロック
を示す図、第34(A)図は第30(A)図に示すデータリ
ートマップの図、第34(B)図は第30(A)図に示すデ
ータライトマップの図、第35図は第25図に示すイメージ
ウインドウパケットプロセッサブロックの図、第36
(A)図は第35図に示すチルドレンモデファイロジック
の図、第36(B)図は第35図に示す祖先モデファイロジ
ックの図、第37図は第36(B)図に示すペアレントレダ
クションロジックの図、第38図は第25図に示すイメージ
ウインドウジオメトリプロセッサブロックの図、第39
(A)図〜第39(B)図は第25図に示すウインドウオー
バレイセレクトロジックブロックの図、第40図は第25図
に示すウィンドウセレクトロジックの図、第41図は第25
図に示す断面プロセッサブロックの図、第42図は第25図
に示すサイクルレザルトブロックの図、第43(A)図は
クワドツリーウィンドウのサイズがディスプレイスクリ
ーンのサイズに等しくなるような4×4ウインドウアレ
イを示し、第42図のスクリーンインターセクションロジ
ックブロックがBBOXテストの代わりにスクリーンインタ
ーセクションテストを行なうために用いられる状態の一
つを示すウィンドウアレイ図、第43(B)図は42図に示
すスクリーンインターセクションロジックブロックの
図、第44(A)図は第42図に示すBBOX演算ブロックの構
成体の1つであるウィンドウロケーションロジックブロ
ックの図、第44(B)図はウインドウオーバレイの4つ
のウィンドウの一つに対してBBOXテストを行なう第42図
に示すBBOX演算ブロックの一部の図、第45図は第42図に
示す多角インターセクション演算ブロックの図、第46図
は第42図に示す(ノード投影の3つの面にEテストを行
なうために使用する)面演算ブロックの1つを示す図、
第47(A)図及び第47(B)図は第25図に示すウィンド
ウライトブロックの図、第48図は第25図に示すシーケン
スコントローラブロックの機能動作を示す図、そして第
49図は第25図に示すシーケンスコントローラブロックの
図である。 30…三次元オブジェクト、32…三次元空間、32a…ルー
トノード、34,35,38,40,42…平行六面体(ノード)、5
2,54,56,58…ウィンドウ、60…ペアレントノード、64…
オブジェクトノード、66…視野面、68…プロジェクショ
ン(投影)、74…束縛箱、78…ウィンドウオーバレイ、
120,122…カット面、129…データアクイジションブロッ
ク、130…オクトリーデータコンバージョンブロック、1
40…オクトリーエンコーデドオブジェクトストレイジブ
ロック、150…インターラクションウイズユーザブロッ
ク、152…イメージディスプレイプロセッサブロック、1
54…イメージディスプレイブロック。
フロントページの続き (56)参考文献 PROCEEDINGS OF IEE E COMPUTER SOCIETY CONFERENCE ON PATTE RN RECOGNITION AND IMAGE PROCESSING La s Vegas Nevada 14th− 17th June 1982 page473− 478 IEEE,New York,U s:D.J.MEAGHER “Effi cient synthetic ima ge generation of ar bitrary 3−D object s."

Claims (56)

    【特許請求の範囲】
  1. 【請求項1】任意の視点を選択するユーザ入力にリアル
    ・タイムに応答して、少なくとも一つのオブシェクト
    (30)を含む任意に複雑な三次元シーンを前記選択され
    た視点から示す二次元画像を、ディスプレイ(154)に
    発生するための対話式リアル・タイム画像発生方法であ
    って、 (a)三次元ユニバース(32)の中で前記オブシェクト
    (30)を容積測定的に定義するオクトリーを表すデータ
    (138−156)を供給するステップと; (b)前記オクトリー・データにアクセスし、これによ
    り横断シーケンスに従って前記ユニバースを(32)を容
    積再分割部分(34,35,36)に漸次再分割するステップで
    あって、前記オクトリーを横断する動作を伴う再分割ス
    テップと; (c)前記オブジェクト(30)が含む前記容積再分割部
    分(34,35,36)を観察面(66)に投影するステップと; (d)前記容積再分割部分(34,35,36)の投影に対応し
    ていると判断される前記観察面に対応する前記ディスプ
    レイ(154)の領域をペイントするステップとを具備す
    る方法において (i)ユーザが対話形式で任意の視点を入力することを
    可能にするステップと、 (ii)前記対話形式で指定された視点にリアル・タイム
    で対話形式で応答して、初期値を決定するステップと、 (iii)前記対話形式で指定された視点にリアル・タイ
    ムで対話形式で応答して、前記横断シーケンスに従っ
    て、前記オブシェクト(30)が含む前記容積再分割部分
    (34,35,36)にアクセスし、前記観察面(66)に投影す
    る投影ステップであって、 (1)前記横断シーケンスの各下流横断に対して前記初
    期値に基づいてシフト・加算動作を実行するサブステッ
    プと、 (2)前記シフト・加算動作の結果を使用して、前記観
    察面上に容積再分割部分の投影を表わすサブステップ
    と、 (3)前記投影された容積再分割部分の更に再分割部分
    を投影するために、前記シフト・加算動作の結果を部分
    的結果として蓄積するサブステップとを含み、 それにより計算の複雑さとゲートカウントを減少させる
    投影ステップと; (iv)前記対話形式で入力された視点にリアル・タイム
    で対話形式で応答して、前記対話形式で入力された視点
    から観察されるオブジェクト(30)を示す画像を表示す
    るステップとを含むことを特徴とする方法。
  2. 【請求項2】前記供給ステップ(a)は、前記供給され
    た入力データが、一組の容積再分割部分の特性値(158
    a,158b,158c)を指定するパケット(138)と、前記一組
    の容積再分割部分のさらなる再分割部分と関連する特性
    値を指定する別のパケット(140,142,144)のブロック
    (139)を指し示すポインタを含むことを特徴とする特
    許請求の範囲1記載の方法。
  3. 【請求項3】前記ステップ(ii)は、前記ユーザ入力に
    対話形式で応答して、特殊な目的で構成されたデジタル
    論理回路によって実行されることを特徴とする特許請求
    の範囲1記載の方法。
  4. 【請求項4】前記ステップ(ii)は、前記ユーザ入力に
    対話形式で応答して、予め定められた分解能限界に達す
    るまで、前記領域再分割部分(52,54,56,57)をさらに
    小さい前記観察面(66)の再分割部分に反復的に再分割
    するステップを含むことを特徴とする特許請求の範囲1
    記載の方法。
  5. 【請求項5】前記供給ステップ(a)は、ボリュームを
    表し、第一の記憶アドレスに格納され、そのアドレスと
    関係した記憶された前記ポインターに相当するオフセッ
    トを有するエントリーを含み、前記オクトリーを表す記
    憶されたトリー構造を与えるステップを含み、前記決定
    ステップ(e)は前記第一の記憶アドレスと前記オフセ
    ットに応じて、前記ボリュームの再分割部分を表す記憶
    されたトリー構造エントリーの記憶アドレスを決定する
    ステップを含むことを特徴とする特許請求の範囲1記載
    の方法。
  6. 【請求項6】ユーザが対話形式で前記ユニバースの容積
    サブセットを定義することを可能にするステップを含
    み、前記投影ステップ(c)は、前記ユーザの定義に対
    話形式に応答して、前記定義された容積サブセット内に
    ある容積再分割部分(34,35,36)のみを投影するステッ
    プを含むことを特徴とする特許請求の範囲1記載の方
    法。
  7. 【請求項7】前記オブジェクトを通過し、前記ユニバー
    スを第一と第二の部分に分割する切断面の位置と方向
    を、ユーザが対話形式で定義することを可能とするステ
    ップ更に含み、前記投影ステップ(c)は、前記ユーザ
    の定義に対話形式に応答して、前記ユニバースの第一の
    部分内にある容積再分割部分(34,35,36)のみを投影す
    るステップを含むことを特徴とする特許請求の範囲1記
    載の方法。
  8. 【請求項8】前記切断面定義ステップは、第一と第二の
    平行面と、前記第一と第二の平行面の間に定義された領
    域とを定義し、前記投影ステップ(c)は前記定義され
    た領域内にある容積再分割部分(34,35,36)のみを対話
    形式で投影するステップを含む特許請求の範囲7記載の
    方法。
  9. 【請求項9】前記投影ステップ(iii)は、前記ユーザ
    入力に対話形式に応答して、次のステップ:すなわち 8個の容積再分割部分を表すデータ・パケットを受け取
    るステップと; 前記受け取ったノード・パケットに少なくとも部分的に
    応答して次の事項を示すステップと、 (a)処理している現在の容積再分割部分 (b)前記現在の容積再分割部分に関連する特性値(フ
    ル、パーシャル、またはエンプティ) (c)処理ている現在の容積再分割部分の中に非エンプ
    ティ未処理ノードがあるかどうかを対話形式で実行する
    ステップと を含む特許請求の範囲7記載の方法。
  10. 【請求項10】前記アクセス・ステップ(b)の前に実
    行される次のステップ:すなわち ユーザから入力パラメータを受け取るステップと; 前記入力パラメータに応じて三次元ユニバースに線形変
    換を行うステップと; 前記変換に応じて前記二次元観察面に前記三次元ユニバ
    ースを投影するステップと; 三次元ユニバースの投影にプロトラクタ機能を用いるス
    テップと を更に含むことを特徴とする特許請求の範囲1記載の方
    法。
  11. 【請求項11】前記プロトラクタ機能は、次のステッ
    プ:すなわち ペアレントノード投影部分とチルドレンノード投影部分
    の間の幾何学的関係を決定するステップ; ペアレントウィンドウとチルドレンウィンドウの間の幾
    何学的関係を決定するステップ; 三次元ユニバースの投影図と観察面の原点との間の幾何
    学的関係を決定するステップ のうちの一つを含む特許請求の範囲10記載の方法。
  12. 【請求項12】前記再分割ステップ(d)は、前記観察
    面において4個の隣接した同じ大きさのウィンドウのい
    ずれにも同時にアクセスすることを可能とするステップ
    を含む特許請求の範囲1記載の方法。
  13. 【請求項13】前記可能とするステップは、各々が前記
    観察面構造の1/4を記憶する4個の個別にアクセスでき
    るメモリ配列を実現するステップを含む特許請求の範囲
    1記載の方法。
  14. 【請求項14】前記再分割ステップ(d)は、前記ディ
    センダントがアクセスされたとき、フル観察面ウィンド
    ウにフルの印を自動的に付けるステップを含む特許請求
    の範囲1記載の方法。
  15. 【請求項15】前記再分割ステップ(d)は、各観察面
    再分割部分をただ一度だけペイントするステップを含む
    特許請求の範囲1記載の方法。
  16. 【請求項16】前記再分割ステップ(d)は、前記横断
    シーケンスに従って、4個の観察面ウィンドウからなる
    2x2オーバレイを表すデータを再配列するステップ含む
    特許請求の範囲1記載の方法。
  17. 【請求項17】前記アクセス・ステップ(b)は、反復
    処理能力を実現するスタック(400)に値を積み重ねる
    ステップを含む特許請求の範囲1記載の方法。
  18. 【請求項18】次のパラメータ、すなわち オブジェクト・ノード・パケット・パラメータ、 オブジェクト・ノード幾何パラメータ、 画像ウィンドウ・パケット・パラメータ、 画像ウィンドウ幾何パラメータ、 ウィンドウ・オーバレイ選択パラメータ、 B−BOXテスト結果、および 切断面幾何パラメータ のうちの少なくとも一つを前記スタック(400)に押し
    込むステップをさらに含む特許請求の範囲1記載の方
    法。
  19. 【請求項19】前記オクトリーを下方に横断する際、オ
    ブジェクト関連パラメータをスタック(400)に押し込
    むステップと、 前記オクトリーを上方に横断する際、前記スタック(40
    0)から前記押し込まれたオブジェクト関連パラメータ
    をはじき出すステップとをさらに含む特許請求の範囲1
    記載の方法。
  20. 【請求項20】前記観察面構造を下方に横断する際、観
    察面関連パラメータをスタック(400)に押し込むステ
    ップと、 前記観察面構造を上方に横断する際、前記スタック(40
    0)から前記押し込まれた観察面関連パラメータをはじ
    き出すステップとをさらに含む特許請求の範囲1記載の
    方法。
  21. 【請求項21】前記アクセス・ステップ(b)は、 前記観察面との交点に関して非エンプティ容積再分割部
    分のみ試験するステップと、 観測面再分割部分の包囲に関してフル容積再分割部分の
    み試験するステップを含む特許請求の範囲1記載の方
    法。
  22. 【請求項22】前記アクセスするステップ(b)は、エ
    ンプティと決定された容積再分割部分を捨てるステップ
    を含む特許請求の範囲1記載の方法。
  23. 【請求項23】前記容積再分割部分の画像特性に関する
    パラメータを格納するために特性メモリが設けられたこ
    とを特徴とする特許請求の範囲7記載の方法。
  24. 【請求項24】前記格納された画像パラメータは、少な
    くとも次の項目:すなわち密度、色、および強さ のうちの一つを含む特許請求の範囲23記載の方法。
  25. 【請求項25】前記容積再分割部分のそれぞれと関係す
    る密度値を与えるステップと、 前記与えられた密度値に基づいて密度スレッショルドを
    決定するステップとをさらに特徴とする特許請求の範囲
    1記載の方法。
  26. 【請求項26】前記密度スレッショルドを決定するステ
    ップは、ペアレント容積再分割部分の特性値が、そのデ
    ィセンダントの特性値を調べることによって決定される
    ことを特徴とする特許請求の範囲25記載の方法。
  27. 【請求項27】前記提供ステップは、表示するオブシェ
    クトを指定するステップと、要求があり次第、前記オブ
    ジェクトの容積再分割部分を表すパケットを作成するス
    テップを含む特許請求の範囲1記載の方法。
  28. 【請求項28】三次元ユニバース(32)内の三次元オブ
    ジェクトを表す情報を受け取るように接続され、視点を
    選択するユーザ入力にリアル・タイムで応答して、前記
    選択された視点から見た前記オブジェクトの画像を表す
    信号を出力する対話式リアル・タイム高速画像表示プロ
    セッサ(152)において、 任意の視点を選択するユーザからの入力をリアル・タイ
    ムで受け取る対話式入力手段(150)と; 前記オブジェクトを表す情報(138−156)と前記選択さ
    れた視点とを受け取るように接続され、前記ユーザによ
    って入力された視点の受信にリアル・タイムで対話形式
    で応答し、そのユニバース(32)を容積再分割部分(3
    4,35,36)に漸次再分割するためのオブジェクト・ノー
    ド処理手段(150)と; 前記オブジェクト・ノード処理手段(500)に接続さ
    れ、前記選択された視点を受け取るように接続され、前
    記視点に対応したシーケンスで、かつ前記ユーザによっ
    て入力された視点の受信にリアル・タイムで対話形式で
    応答して、前記容積再分割部分(34,35,36)を連続的に
    選択するためのノード選択論理手段(600)と; 前記ノード選択論理手段(600)に接続され、前記ユー
    ザによって入力された視点の受信にリアル・タイムで対
    話形式で応答して、二次元観察面(66)に投影されると
    き、ノード選択論理手段(600)によって選択された前
    記容積再分割部分(34,35,36)の少なくとも一つの特性
    を表すノード幾何信号を発生するためのオブジェクト・
    ノード幾何処理手段(700)と; 前記二次元観察面(66)を領域再分割部分(52,54,56,5
    8)に漸次再分割し、前記ユーザによって入力された視
    点の受信にリアル・タイムで対話形式で応答して、選択
    された領域再分割部分(52,54,56,58)の特性を表すウ
    ィンドウ幾何信号を発生するための画像ウィンドウ論理
    手段(900,1000,1100)と; 前記ノード幾何信号と前記ウィンドウ幾何信号を受け取
    るように接続され、前記ユーザによって入力された視点
    の受信にリアル・タイムで対話形式で応答して、前記選
    択された容積再分割部分(34,35,36)の投影部分によっ
    て前記選択された領域再分割部分(52,54,56,58)が包
    囲されているかどうかを示す結果を作成するためのサイ
    クル結果手段(1500)と; 前記結果と前記ウィンドウ幾何信号を受け取るように接
    続され、投影部分(68)によって包囲されると決定され
    た領域再分割部分(52,54,56,58)に応じて画像を構成
    し、前記ユーザによって入力された視点の受信にリアル
    ・タイムで対話形式で応答して、前記画像を表す信号を
    発生し出力するためのウィンドウ・ライター手段(140
    0)と; 前記オブジェクト・ノード処理手段(500)、ノード選
    択論理手段(600)、オブジェクト・ノード幾何処理手
    段(700)、および画像ウィンドウ論理手段(900,1000,
    1100)を制御して、前記ユーザによって入力された視点
    の受信にリアル・タイムで対話形式で応答して、前記ウ
    ィンドウ・ライター手段(1400)によって、少なくとも
    前記オブジェクト(30)の一部を含み前記視点からの視
    野から隠れていない容積再分割部分を映像化するように
    前記観察面(66)と前記オブジェクト・ユニバース(3
    2)を反復的に再分割するためのシーケンス制御手段(1
    600)と を有することを特徴とする前記プロセッサ(152)。
  29. 【請求項29】前記オブジェクトを表すデータは、一組
    の容積再分割部分の特性値(158a,158b,158c)を指定す
    るパケット(138)と、前記一組の容積再分割部分の一
    層の再分割に関係する特性値を指定する別のパケット
    (140,142,144)のブロック(139)を指し示すポインタ
    とを含むことを特徴とする特許請求の範囲28記載のプロ
    セッサ。
  30. 【請求項30】前記オブジェクト・ノード処理手段(50
    0)、前記ノード選択論理手段(600)、前記オブジェク
    ト・ノード幾何処理手段(700)、前記画像ウィンドウ
    論理手段(900,1000,1100)、前記サイクル結果手段(1
    500)、前記ウィンドウ・ライター手段(1400)、およ
    び前記シーケンス制御手段(1600)は、それぞれ前記ユ
    ーザ入力に対話形式で応答する特殊目的デジタル論理回
    路を含むことを特徴とする特許請求の範囲28記載のプロ
    セッサ。
  31. 【請求項31】前記画像ウィンドウ論理手段(900,100
    0,1100)は、前記ユーザ入力に対話形式で応答して、予
    め定められた分解能限界に達するまで前記領域再分割部
    分(52,54,56,58)を前記観察面の一層小さな再分割部
    分に反復的に再分割することを特徴とする特許請求の範
    囲28記載のプロセッサ。
  32. 【請求項32】前記オブジェクトを表す情報は、ボリュ
    ームを表し、第一の記憶アドレスに格納され、そのアド
    レスと関係した記憶された前記ポインターに相当するオ
    フセットを有するエントリーを含み、オクトリーを表す
    記憶されたトリー構造からなり、前記オブジェクト・ノ
    ード処理手段(500)は、前記第一の記憶アドレスと前
    記オフセットに応答じて、前記ボリュームの再分割部分
    を表す記憶されたトリー構造エントリーの記憶アドレス
    を決定する手段を含むことを特徴とする特許請求の範囲
    28記載のプロセッサ。
  33. 【請求項33】ユーザが対話形式で前記ユニバースの容
    積サブセットを定義することを可能にする手段(150)
    を更に有し、前記ウィンドウ・ライター手段(1400)
    は、前記ユーザの定義に対話式応答をして、前記定義さ
    れた容積サブセット内にある容積再分割部分(34,35,3
    6)のみを書くことを特徴とする特許請求の範囲28記載
    のプロセッサ。
  34. 【請求項34】ユーザが対話形式で前記オブジェクトを
    通過し、前記ユニバースを第一と第二の部分に分割する
    切断面の位置と方向を定義することを可能にする手段
    (150)を更に有し、前記ウィンドウ・ライター手段(1
    400)は、前記ユーザの定義に対話式応答をして、前記
    ユニバースの第一の部分内にある容積再分割部分(34,3
    5,36)のみを書くことを特徴とする特許請求の範囲28記
    載のプロセッサ。
  35. 【請求項35】前記手段(150)は、第一と第二の平行
    面と、前記第一と第二の平行面の間に定義された領域と
    を定義するための手段を含み、前記ウィンドウ・ライタ
    ー手段(1400)は、前記定義された領域内にある容積再
    分割部分(34,35,36)のみを書く特許請求の範囲34記載
    のプロセッサ。
  36. 【請求項36】前記ノード選択論理手段(600)は、8
    個の容積再分割部分を表すデータ・パケットを受け取
    り、前記ユーザ入力に対話式応答をして、前記受け取っ
    たノード・パケットに少なくとも部分的に応答して、次
    の事項:すなわち (a)処理されている現在の容積再分割部分 (b)前記現在の容積再分割部分に関連する特性値(フ
    ル、パーシャル、またはエンプティ) (c)処理されている現在の容積再分割部分の中に非エ
    ンプティ未処理ノードがあるかどうか を示す特許請求の範囲28記載のプロセッサ。
  37. 【請求項37】ユーザから入力パラメータを受け取と
    り; 前記入力パラメータに応じて三次元ユニバースに線形変
    換を行い; 前記変換に応じて前記二次元観察面に前記三次元ユニバ
    ースを投影し; 三次元ユニバースの投影にプロトラクタ機能を用いる ための初期化処理手段を更に有することを特徴とする特
    許請求の範囲28記載のプロセッサ。
  38. 【請求項38】前記プロトラクタ機能は、次の機能:す
    なわち ペアレントノード投影部分とチルドレンノード投影部分
    の間の幾何学的関係を決定する; ペアレントウィンドウとチルドレンウィンドウの間の幾
    何学的関係を決定する;および 三次元ユニバースの投影部分と観察面の原点との間の幾
    何学的関係を決定する機能の少なくとも一つを含むこと
    を特徴とする特許請求の範囲37記載のプロセッサ。
  39. 【請求項39】画像ウィンドウ論理手段(900,1000,110
    0)は、前記観察面における4個の隣接した同じ大きさ
    のウィンドウのいずれにも同時にアクセスすることを可
    能とするウィンドウ・オーバレイ選択論理手段(1100)
    を含む特許請求の範囲28記載のプロセッサ。
  40. 【請求項40】各々が前記観察面構造の1/4を記憶する
    4個の個別にアクセスできるメモリ配列を更に有するこ
    とを特徴とする特許請求の範囲28記載のプロセッサ。
  41. 【請求項41】画像ウィンドウ論理手段(900,1000,110
    0)は、前記ディセンダントがアクセスされたとき、フ
    ル観察面ウィンドウのディセンダントにフルの印を自動
    的に付ける手段(900)を含むことを特徴とする特許請
    求の範囲28記載のプロセッサ。
  42. 【請求項42】前記ウィンドウ・ライター手段(1400)
    は、各観察面再分割部分をただ一度だけペイントするこ
    とを特徴とする特許請求の範囲28記載のプロセッサ。
  43. 【請求項43】前記画像ウィンドウ論理手段(900,100
    0,1100)は、前記横断シーケンスに従って、4個の観察
    面ウィンドウからなる2x2オーバレイを表すデータを再
    配列する手段(1100)を有することを特徴とする特許請
    求の範囲28記載のプロセッサ。
  44. 【請求項44】前記プロセッサは、反復処理能力を実現
    するためのスタック(400)を含むことを特徴とする特
    許請求の範囲28記載のプロセッサ。
  45. 【請求項45】前記プロセッサは、次の要素、すなわち オブジェクト・ノード・パケット・スタック、 オブジェクト・ノード幾何スタック、 画像ウィンドウ・パケット・スタック、 画像ウィンドウ幾何スタック、 ウィンドウ・オーバレイ選択スタック、 B−BOXテスト結果スタック、および 切断面幾何スタック を含むことを特徴とする特許請求の範囲28記載のプロセ
    ッサ。
  46. 【請求項46】前記オクトリーを下方に横断する際、オ
    ブジェクト関連パラメータを押し込み、前記オクトリー
    を上方に横断する際、前記押し込まれたオブジェクト関
    連パラメータをはじき出すためのスタック(410)を更
    に有する特許請求の範囲28記載のプロセッサ。
  47. 【請求項47】前記観察面構造を下方に横断する際、観
    察面関連パラメータを押し込み、前記観察面構造を上方
    に横断する際、前記押し込まれた観察面関連パラメータ
    をはじき出すためのスタック(430,440)を更に有する
    特許請求の範囲28記載のプロセッサ。
  48. 【請求項48】前記サイクル結果手段(1500)は、前記
    観察面との交点に関して非エンプティ容積再分割部分の
    み試験し、観測面再分割部分の包囲に関してフル容積再
    分割部分のみ試験することを特徴とする特許請求の範囲
    28記載のプロセッサ。
  49. 【請求項49】前記サイクル結果手段(1500)は、エン
    プティと決定された容積再分割部分を捨てることを特徴
    とする特許請求の範囲28記載のプロセッサ。
  50. 【請求項50】前記容積再分割部分の画像特性に関する
    パラメータを格納するために特性メモリが設けられたこ
    とをさらに特徴とする特許請求の範囲28記載のプロセッ
    サ。
  51. 【請求項51】前記格納された画像パラメータは、少な
    くとも次の項目:すなわち密度、色、および強さ のうちの一つを有する特許請求の範囲50記載のプロセッ
    サ。
  52. 【請求項52】前記容積再分割部分のそれぞれと関係す
    る密度値を与える手段と、 前記与えられた密度値に基づいて密度スレッショルドを
    決定する手段とをを更に有することを特徴とする特許請
    求の範囲28記載のプロセッサ。
  53. 【請求項53】前記密度スレッショルドを決定する手段
    は、ペアレント容積再分割部分の特性値が、そのディセ
    ンダントの特性値を調べることによって決定されること
    を特徴とする特許請求の範囲52記載のプロセッサ。
  54. 【請求項54】前記プロセッサは、表示するオブジェク
    トを指定し、要求があり次第、前記オブジェクトの容積
    再分割部分を表すパケットを作成する手段を含むことを
    特徴とする特許請求の範囲28記載のプロセッサ。
  55. 【請求項55】前記蓄積ステップは、前記観察面の各大
    きさに対して少なくとも8個のシフト・加算動作の結果
    を蓄積するステップを含むことを特徴とする特許請求の
    範囲第1項に記載の方法。
  56. 【請求項56】前記方法は、前記観察面の領域を再分割
    部分に漸次再分割するステップを含み、 前記ペイントステップは、前記観察面の再分割部分のど
    れが前記容積再分割部分の投影部分によって包囲されて
    いるかを決定するステップを含む、ことを特徴とする特
    許請求の範囲第1項に記載の方法。
JP60002647A 1984-01-12 1985-01-12 3次元物体の2次元イメージ発生方法及びその装置 Expired - Lifetime JPH0776989B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/570,287 US4694404A (en) 1984-01-12 1984-01-12 High-speed image generation of complex solid objects using octree encoding
US570287 1984-01-12

Publications (2)

Publication Number Publication Date
JPS60237578A JPS60237578A (ja) 1985-11-26
JPH0776989B2 true JPH0776989B2 (ja) 1995-08-16

Family

ID=24279027

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60002647A Expired - Lifetime JPH0776989B2 (ja) 1984-01-12 1985-01-12 3次元物体の2次元イメージ発生方法及びその装置

Country Status (7)

Country Link
US (1) US4694404A (ja)
EP (1) EP0152741B1 (ja)
JP (1) JPH0776989B2 (ja)
AT (1) ATE128569T1 (ja)
CA (1) CA1231790A (ja)
DE (1) DE3588057D1 (ja)
IL (1) IL74034A (ja)

Families Citing this family (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4845643A (en) * 1986-04-14 1989-07-04 Clapp Roy A Simplified computer graphics perspectives
ATE113746T1 (de) * 1986-06-03 1994-11-15 Cubital Ltd Gerät zur entwicklung dreidimensionaler modelle.
GB2194656B (en) * 1986-09-03 1991-10-09 Ibm Method and system for solid modelling
US5283859A (en) * 1986-09-03 1994-02-01 International Business Machines Corporation Method of and system for generating images of object transforms
GB2194715B (en) * 1986-09-03 1991-02-13 Ibm Method of and system for generating images of object transforms
JPH01501178A (ja) * 1986-09-11 1989-04-20 ヒューズ・エアクラフト・カンパニー 写実的画面形成用デジタル式視覚感知シミュレーション・システム
US4791567A (en) * 1986-09-15 1988-12-13 General Electric Company Three dimensional connectivity system employing an equivalence schema for determining connected substructures within a body
US4879668A (en) * 1986-12-19 1989-11-07 General Electric Company Method of displaying internal surfaces of three-dimensional medical images
US4821213A (en) * 1986-12-19 1989-04-11 General Electric Co. System for the simultaneous display of two or more internal surfaces within a solid object
JPS63271578A (ja) * 1987-04-30 1988-11-09 Hitachi Ltd 領域の集合演算装置
US4791583A (en) * 1987-05-04 1988-12-13 Caterpillar Inc. Method for global blending of computer modeled solid objects using a convolution integral
US4928247A (en) * 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US5097411A (en) * 1987-08-13 1992-03-17 Digital Equipment Corporation Graphics workstation for creating graphics data structure which are stored retrieved and displayed by a graphics subsystem for competing programs
US4831528A (en) * 1987-11-09 1989-05-16 General Electric Company Apparatus and method for improvement of 3D images derived from tomographic data
GB2214037A (en) * 1987-12-18 1989-08-23 Ibm Solid modelling system
FR2625345A1 (fr) * 1987-12-24 1989-06-30 Thomson Cgr Procede de visualisation en trois dimensions d'objets codes numeriquement sous forme arborescente et dispositif de mise en oeuvre
US5299297A (en) * 1988-01-11 1994-03-29 International Business Machines Corporation Method for enhancing three-dimensional interference checking
JPH0262671A (ja) * 1988-08-30 1990-03-02 Toshiba Corp カラー編集処理装置
US4984157A (en) * 1988-09-21 1991-01-08 General Electric Company System and method for displaying oblique planar cross sections of a solid body using tri-linear interpolation to determine pixel position dataes
US5278983A (en) * 1988-09-30 1994-01-11 International Business Machines Corporation Boundary representation solid modeling system
JPH087553B2 (ja) * 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
FR2638875B1 (fr) * 1988-11-04 1990-12-14 Gen Electric Cgr Procede de selection d'un objet dans un referentiel a n dimensions et de visualisation de l'objet selectionne
FR2639449A1 (fr) * 1988-11-22 1990-05-25 Gen Electric Cgr Procede de projection et de representation d'un objet octree
GB2265803B (en) * 1988-12-05 1994-01-05 Rediffusion Simulation Ltd Image generator
GB8828342D0 (en) * 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
US5113490A (en) * 1989-06-19 1992-05-12 Silicon Graphics, Inc. Method for forming a computer model from an intersection of a cutting surface with a bounded volume
EP0447629A3 (en) * 1990-03-19 1993-01-13 International Business Machines Corporation A compliant sectioning facility for interactive sectioning of solid geometric objects using a graphics processor
US5189626A (en) * 1991-03-27 1993-02-23 Caterpillar Inc. Automatic generation of a set of contiguous surface patches on a computer modeled solid
US5345490A (en) * 1991-06-28 1994-09-06 General Electric Company Method and apparatus for converting computed tomography (CT) data into finite element models
EP0529121A1 (en) * 1991-08-24 1993-03-03 International Business Machines Corporation Graphics display tool
GB2259432A (en) * 1991-09-06 1993-03-10 Canon Res Ct Europe Ltd Three dimensional graphics processing
US6054991A (en) * 1991-12-02 2000-04-25 Texas Instruments Incorporated Method of modeling player position and movement in a virtual reality system
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
US5574835A (en) * 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
GB2278524B (en) * 1993-05-28 1997-12-10 Nihon Unisys Ltd Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency
US5619630A (en) * 1994-02-28 1997-04-08 Hitachi, Ltd. Apparatus for producing exploded view and animation of assembling and method thereof
US5461712A (en) * 1994-04-18 1995-10-24 International Business Machines Corporation Quadrant-based two-dimensional memory manager
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5692184A (en) * 1995-05-09 1997-11-25 Intergraph Corporation Object relationship management system
US5841890A (en) * 1996-05-06 1998-11-24 Northrop Grumman Corporation Multi-dimensional wavelet tomography
WO1998000811A1 (en) * 1996-06-28 1998-01-08 Resolution Technologies, Inc. Fly-through computer aided design method and apparatus
US5883629A (en) * 1996-06-28 1999-03-16 International Business Machines Corporation Recursive and anisotropic method and article of manufacture for generating a balanced computer representation of an object
US5990896A (en) * 1996-09-30 1999-11-23 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Rapid and efficient terrain surface finding system
US6259452B1 (en) * 1997-04-14 2001-07-10 Massachusetts Institute Of Technology Image drawing system and method with real-time occlusion culling
US5914724A (en) * 1997-06-30 1999-06-22 Sun Microsystems, Inc Lighting unit for a three-dimensional graphics accelerator with improved handling of incoming color values
DE69811050T2 (de) * 1997-07-29 2003-11-06 Koninklijke Philips Electronics N.V., Eindhoven Rekonstruktionsverfahren, Vorrichtung und Dekodierungssystem für dreidimensionalen Szenen.
US6111583A (en) 1997-09-29 2000-08-29 Skyline Software Systems Ltd. Apparatus and method for three-dimensional terrain rendering
US6208997B1 (en) * 1997-10-17 2001-03-27 The Regents Of The University Of California Rapid production of optimal-quality reduced-resolution representations of very large databases
US6018348A (en) * 1997-12-31 2000-01-25 Intel Corporation Method for visibility culling
US6059268A (en) * 1998-05-06 2000-05-09 Santelli, Jr.; Albert Bumper system for limiting the mobility of a wheeled device
AU5686299A (en) * 1998-08-20 2000-03-14 Raycer, Inc. Method and apparatus for generating texture
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
JP4150112B2 (ja) * 1998-08-24 2008-09-17 ソニー株式会社 画像データ処理方法および画像データ処理装置
US6211884B1 (en) * 1998-11-12 2001-04-03 Mitsubishi Electric Research Laboratories, Inc Incrementally calculated cut-plane region for viewing a portion of a volume data set in real-time
US20030158786A1 (en) 1999-02-26 2003-08-21 Skyline Software Systems, Inc. Sending three-dimensional images over a network
US6580428B1 (en) * 1999-05-24 2003-06-17 Parametric Technology Corporation Method and system for identifying peripheral elements of a complex model
US6545676B1 (en) * 1999-05-24 2003-04-08 Parametric Technology Corporation Method and system for creating a tessellated approximation of an outer envelope of a complex model
US6396492B1 (en) * 1999-08-06 2002-05-28 Mitsubishi Electric Research Laboratories, Inc Detail-directed hierarchical distance fields
US6266387B1 (en) * 1999-09-16 2001-07-24 Ge Medical Systems Global Technology Company Llc Command sequencer for a CT imaging system
GB9925947D0 (en) * 1999-11-02 1999-12-29 Elixir Studios Limited Improvements relating to image processing
AU1158001A (en) * 1999-11-02 2001-05-14 Elixir Studios Limited Improvements relating to computer graphics
US7324019B2 (en) * 2000-01-03 2008-01-29 Levenson David J Adjustable ergonomic keyboard for use with stationary palm and elements thereof
US6583787B1 (en) * 2000-02-28 2003-06-24 Mitsubishi Electric Research Laboratories, Inc. Rendering pipeline for surface elements
JP4184079B2 (ja) * 2000-11-20 2008-11-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 医療分析装置
US6621492B2 (en) * 2000-12-18 2003-09-16 International Business Machines Corporation Method and apparatus using primitive bounding volumes to improve the accuracy of BSP-trees
US6624810B2 (en) * 2000-12-18 2003-09-23 International Business Machines Corporation Tightened bounding volumes for BSP-trees
JP3468464B2 (ja) * 2001-02-01 2003-11-17 理化学研究所 形状と物性を統合したボリュームデータ生成方法
EP1390919A1 (en) * 2001-05-29 2004-02-25 Natalia Zviaguina Method, apparatus, and article of manufacture for associating objects with regions in coordinate space
KR100561837B1 (ko) * 2001-07-09 2006-03-16 삼성전자주식회사 삼차원 환경에서 이미지 기반의 랜더링의 정보를 표현하기위한 방법
WO2003009183A1 (en) * 2001-07-11 2003-01-30 Riken Method for storing entity data in which shape and physical quantity are integrated and storing program
US6917877B2 (en) 2001-08-14 2005-07-12 Navteq North America, Llc Method for determining the intersection of polygons used to represent geographic features
WO2003017017A1 (en) 2001-08-16 2003-02-27 Riken Ultra-precision machining method and device for heterogeneous material
WO2003016031A1 (en) 2001-08-16 2003-02-27 Riken Rapid prototyping method and device using v-cad data
WO2003017016A1 (fr) * 2001-08-16 2003-02-27 Riken Procede et appareil d'usinage matriciel exploitant des donnees v-cao
US20030132932A1 (en) * 2001-09-17 2003-07-17 Xiangheng Yang Method for constructing polygons used to represent geographic features
US7225207B1 (en) * 2001-10-10 2007-05-29 Google Inc. Server for geospatially organized flat file data
CN1311390C (zh) * 2001-12-04 2007-04-18 独立行政法人理化学研究所 三维形状数据向单元内部数据的变换方法
WO2003073335A1 (en) * 2002-02-28 2003-09-04 Riken Method and program for converting boundary data into in-cell shape
KR100513732B1 (ko) * 2002-12-05 2005-09-08 삼성전자주식회사 3차원 객체 데이터 부호화 및 복호화 방법 및 장치
EP1628490A1 (en) * 2003-05-27 2006-02-22 Sanyo Electric Co., Ltd. Image display device and program
JP4381743B2 (ja) * 2003-07-16 2009-12-09 独立行政法人理化学研究所 境界表現データからボリュームデータを生成する方法及びそのプログラム
US7301538B2 (en) * 2003-08-18 2007-11-27 Fovia, Inc. Method and system for adaptive direct volume rendering
US7839419B2 (en) * 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7817163B2 (en) * 2003-10-23 2010-10-19 Microsoft Corporation Dynamic window anatomy
JP4759291B2 (ja) * 2004-03-08 2011-08-31 三星電子株式会社 適応的2n進ツリーの生成方法、ならびにそれを利用して3次元体積データを符号化/復号化する方法および装置
JP4364706B2 (ja) * 2004-04-05 2009-11-18 富士通株式会社 陰線処理方法
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7385614B2 (en) * 2005-03-28 2008-06-10 Silicon Graphics, Inc. Compositing images using logically divided object space
EP1876956A2 (en) * 2005-04-25 2008-01-16 Xoran Technologies, Inc. Ct system with synthetic view generation
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
JP4783100B2 (ja) * 2005-09-12 2011-09-28 独立行政法人理化学研究所 境界データのセル内形状データへの変換方法とその変換プログラム
US7433191B2 (en) 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US7561156B2 (en) * 2006-02-08 2009-07-14 INOVO Limited Adaptive quadtree-based scalable surface rendering
US8060237B2 (en) * 2007-09-11 2011-11-15 The Boeing Company Method and apparatus for work instruction generation
DE102008020579B4 (de) * 2008-04-24 2014-07-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zur automatischen Objektlageerkennung und Bewegung einer Vorrichtung relativ zu einem Objekt
US8169434B2 (en) 2008-09-29 2012-05-01 Microsoft Corporation Octree construction on graphics processing units
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
JP5571977B2 (ja) * 2010-03-01 2014-08-13 キヤノン株式会社 画像処理装置
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US9110907B2 (en) * 2010-09-29 2015-08-18 International Business Machines Corporation Framework for extremely large complex objects (XLCOs)
US8730264B1 (en) 2011-09-26 2014-05-20 Google Inc. Determining when image elements intersect
JP6069923B2 (ja) * 2012-07-20 2017-02-01 セイコーエプソン株式会社 ロボットシステム、ロボット、ロボット制御装置
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
HRP20240953T1 (hr) * 2013-04-08 2024-10-25 Dolby International Ab Metoda kodiranja i metoda dekodiranja lut i odgovarajući uređaji
JP5712399B2 (ja) * 2013-05-01 2015-05-07 株式会社大都技研 遊技台およびプログラム
US9530226B2 (en) * 2014-02-18 2016-12-27 Par Technology Corporation Systems and methods for optimizing N dimensional volume data for transmission
EP2933777A1 (en) * 2014-04-17 2015-10-21 amberMind Three dimensional modeling
GB2528669B (en) 2014-07-25 2017-05-24 Toshiba Res Europe Ltd Image Analysis Method
US10423693B2 (en) 2014-09-15 2019-09-24 Autodesk, Inc. Parallel processing using a bottom up approach
EP3295431A4 (en) 2015-05-11 2018-04-04 Pointerra Technologies Pty Ltd Method and system for computer graphics rendering
RU2605035C1 (ru) * 2015-05-25 2016-12-20 Общество С Ограниченной Ответственностью "Яндекс" Способ и сервер для восстановления логической иерархии по меньшей мере двух двухмерных объектов
EP3356862A1 (en) 2015-10-02 2018-08-08 ExxonMobil Upstream Research Company Q-compensated full wavefield inversion
WO2017116737A1 (en) 2015-12-30 2017-07-06 Exxonmobil Upstream Research Company A clustering algorithm for geoscience data fusion
CN113014906B (zh) 2016-04-12 2023-06-30 奎蒂安特有限公司 3d场景重建方法、系统及计算机程序存储介质
WO2018022011A1 (en) * 2016-07-26 2018-02-01 Hewlett-Packard Development Company, L.P. Indexing voxels for 3d printing
CN109643442B (zh) * 2016-10-12 2023-02-17 惠普发展公司,有限责任合伙企业 子体积八叉树
US10853998B2 (en) 2016-10-12 2020-12-01 Hewlett-Packard Development Company, L.P.C Serialising a representation of a three dimensional object
US10838094B2 (en) 2017-03-10 2020-11-17 Exxonmobil Upstream Research Company Outlier detection for identification of anomalous cross-attribute clusters
US10373365B2 (en) * 2017-04-10 2019-08-06 Intel Corporation Topology shader technology
EP3429211A1 (en) * 2017-07-13 2019-01-16 Thomson Licensing A method and apparatus for encoding/decoding the colors of a colored point cloud whose geometry is represented by an octree-based structure
WO2019078292A1 (ja) * 2017-10-19 2019-04-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
CN111213176B (zh) 2017-10-24 2024-10-22 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、三维数据编码装置、解码装置
EP3779886A4 (en) * 2018-04-10 2021-06-16 Panasonic Intellectual Property Corporation of America TRIMDIMENSIONAL DATA CODING AND DECODING PROCESS AND TRIDMENSIONAL DATA ENCODING AND DECODING DEVICE
CN112470191B (zh) * 2018-05-02 2024-10-01 奎蒂安特有限公司 用于处理具有几乎无限细节的场景的编解码器
CN119941881A (zh) 2018-06-06 2025-05-06 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置
JP7183309B2 (ja) * 2018-06-25 2022-12-05 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 点群のハイブリッド幾何学的コーディング
US10904564B2 (en) * 2018-07-10 2021-01-26 Tencent America LLC Method and apparatus for video coding
JP6699872B2 (ja) * 2018-09-10 2020-05-27 Necプラットフォームズ株式会社 荷物計測装置、荷物受付システム、荷物計測方法、及びプログラム
EP3863290B1 (en) * 2018-10-02 2025-08-27 Sony Group Corporation Information processing device and information processing method
US12400044B2 (en) * 2020-02-13 2025-08-26 Mitsubishi Electric Corporation Dimension creation device, dimension creation method, and recording medium
WO2023172573A1 (en) 2022-03-07 2023-09-14 Quidient, Llc Systems and methods for generalized scene reconstruction

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3602702A (en) * 1969-05-19 1971-08-31 Univ Utah Electronically generated perspective images
US4384286A (en) * 1980-08-29 1983-05-17 General Signal Corp. High speed graphics
US4463380A (en) * 1981-09-25 1984-07-31 Vought Corporation Image processing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PROCEEDINGSOFIEEECOMPUTERSOCIETYCONFERENCEONPATTERNRECOGNITIONANDIMAGEPROCESSINGLasVegasNevada14th−17thJune1982page473−478IEEE,NewYork,Us:D.J.MEAGHER"Efficientsyntheticimagegenerationofarbitrary3−Dobjects."

Also Published As

Publication number Publication date
CA1231790A (en) 1988-01-19
US4694404A (en) 1987-09-15
IL74034A0 (en) 1985-04-30
EP0152741A3 (en) 1988-11-23
IL74034A (en) 1992-03-29
EP0152741B1 (en) 1995-09-27
JPS60237578A (ja) 1985-11-26
ATE128569T1 (de) 1995-10-15
EP0152741A2 (en) 1985-08-28
DE3588057D1 (de) 1995-11-02

Similar Documents

Publication Publication Date Title
EP0152741B1 (en) High-speed image generation of complex solid objects using octree encoding
Meagher Geometric modeling using octree encoding
Levoy Efficient ray tracing of volume data
Bak et al. Three dimensional representation in a Geoscientific Resource Management System for the minerals industry
US4821210A (en) Fast display of three-dimensional images
Patil et al. Voxel-based representation, display and thickness analysis of intricate shapes
CA2002663C (en) Method and apparatus for storing, accessing, and processing voxel-based data
US6172679B1 (en) Visibility calculations for 3D computer graphics
US4984157A (en) System and method for displaying oblique planar cross sections of a solid body using tri-linear interpolation to determine pixel position dataes
US5095521A (en) Method for the computing and imaging of views of an object
Akman et al. Geometric computing and uniform grid technique
EP0549944A2 (en) Multi-resolution graphic representation for interactive visualization applications
US8497860B2 (en) Spatial decomposition methods using bit manipulation
Wilhelms et al. Hierarchical and parallelizable direct volume rendering for irregular and multiple grids
EP0393309A1 (en) Multiple depth buffers for graphics and solid modelling
Ogayar et al. Point in solid strategies
EP1625519B1 (en) Automated translation of high order complex geometry from a cad model into a surface based combinatorial geometry format
Montani et al. Rendering volumetric data using STICKS representation scheme
WO2004075110A2 (en) Image display, manipulation, and spatial decomposition methods
Shareef et al. Rapid previewing via volume-based solid modeling
Gargantini et al. Ray tracing an octree: Numerical evaluation of the first intersection
EP0373854B1 (en) Apparatus and method for detecting internal structures contained within the interior region of a solid object
Lee et al. On enhancing the speed of splatting using both object-and image-space coherence
Stewart An image-space algorithm for hardware-based rendering of constructive solid geometry
Max et al. Approximate volume rendering for curvilinear and unstructured grids by hardware‐assisted polyhedron projection

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term