DE3872203T2 - Verfahren zur dreidimensionalen anzeige von digitalen achtaestigen kodierten objekten. - Google Patents

Verfahren zur dreidimensionalen anzeige von digitalen achtaestigen kodierten objekten.

Info

Publication number
DE3872203T2
DE3872203T2 DE8888403179T DE3872203T DE3872203T2 DE 3872203 T2 DE3872203 T2 DE 3872203T2 DE 8888403179 T DE8888403179 T DE 8888403179T DE 3872203 T DE3872203 T DE 3872203T DE 3872203 T2 DE3872203 T2 DE 3872203T2
Authority
DE
Germany
Prior art keywords
target
obel
octree
overlay
level
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
DE8888403179T
Other languages
English (en)
Other versions
DE3872203D1 (de
Inventor
Michel Delcroix
Bruce Edwards
Olivier Lis
Donald Meagher Donald Meagher
Daniel Milon
Guy Prevost
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
General Electric CGR SA
Original Assignee
General Electric CGR SA
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 General Electric CGR SA filed Critical General Electric CGR SA
Publication of DE3872203D1 publication Critical patent/DE3872203D1/de
Application granted granted Critical
Publication of DE3872203T2 publication Critical patent/DE3872203T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

  • Die Erfindung betrifft ein Verfahren zur dreidimensionalen Visualisierung von in Baumform digital kodierten Objekten und eine Vorrichtung zur Durchführung dieses Verfahrens.
  • Die digitale Kodierung von Bildern in Baumform, einer Form, die im allgemeinen "Octree" genannt wird, ist durch zahlreiche Veröffentlichungen bekannt, beispielsweise durch den Artikel von D.J.R. MEAGHER: "High Speed Display of 3D Medical Images using Octree Encoding", erschienen in "Rensselaer Polytechnic Institute Technical Report" vom September 1981, oder durch den Artikel "Geometric Modeling Using Octree Encoding" vom selben Autor, erschienen in der Zeitschrift Computer Graphics and Image Processing No.19 vom Juni 1982, Seiten 129 bis 147.
  • Ferner ist aus dem US-Patent Nr. 4 694 404 oder der europäischen Patentanmeldung Nr. 0 152 741 ein Verfahren zur dreidimensionalen Visualisierung (3D) ausgehend von Bildern eines in Octree-Form kodierten Objekts bekannt. Dieses Verfahren besteht im wesentlichen darin, daß ausgehend von den in einem Objektuniversum organisierten Octree-Informationen die Projektion dieses Objekts in einer Zielebene parallel zum Beobachtungsschirm geformt wird.
  • Dieses bekannte Verfahren liefert 3D-Bilder guter Qualität, erfordert jedoch für seine Durchführung umfangreiche und kostspielige Geräte.
  • Gegenstand der Erfindung ist ein Verfahren zur dreidimensionalen Visualisierung von in Octree-Form kodierten Objekten, das sehr schnell ist, und zwar sowohl bei Außenansichten gegebenenfalls mit Schattierungen als auch bei Ansichten in einem beliebigen Schnitt, und das zu seiner Durchführung eine nicht sehr komplexe und sehr kostspielige Vorrichtung erfordert.
  • Gegenstand der Erfindung ist deshalb ein Verfahren zur dreidimensionalen Visualisierung von in Octree-Form digital kodierten Objekten, wobei der Octree in einem Octree- Speicher in einer Baumstruktur gespeichert ist, die in jeder Ebene durch Zweiteilung der Dimensionen des Objektuniversums oder dessen Unterobjektuniversen in jeder Koordinatenachse Ox, Oy und Oz erhalten wird, wobei das Objektuniversum ein Würfel ist, der die gesamte darzustellende Information enthält, dadurch gekennzeichnet, daß man ausgehend vom Objektuniversum nur den Nutzteil eines anderen Ziel-Octree in einem Zieluniversum erzeugt, wobei das Zieluniversum ein Hexaeder ist, dessen Koordinatenachsen Ox', Oy' eine Ebene bilden, die zu einem Darstellungsbildschirm parallel ist.
  • Der Nutzteil dieses anderen Octree kann hierbei dazu dienen, entweder den sichtbaren Teil eines Objekts darzustellen (Weglassung der versteckten Teile) oder alles wegzulassen, was auf der "falschen" Seite einer Schnittebene liegt, oder nur die auf der Schnittebene liegenden Obel zu wählen oder alles zu wählen (transparenter Modus).
  • Zum besseren Verständnis der Erfindung wird im folgenden ein Ausführungsbeispiel beschrieben, das in der beiliegenden Zeichnung dargestellt ist. In dieser Zeichnung zeigen:
  • Fig. 1 eine schematische perspektivische Darstellung eines Objektuniversums,
  • Fig. 2 ein vereinfachtes Diagramm zur Erläuterung der Octree-Struktur,
  • Fig. 3 ein Diagramm, das teilweise die Organisierung der Daten im Octree-Speicher im Fall eines kurzen Offset und in Fig. 3A im Fall eines langen Offset zeigt,
  • Fig. 4 ein zweidimensionales Diagramm zur Erläuterung der Abtastung eines "Overlay",
  • Fig. 5 und 6 Diagramme zur Erläuterung der Bildung und Numerierung der "Sohn-Overlays",
  • Fig. 7 ein Diagramm zur Erläuterung der Bildung des Zieluniversums gemäß der Erfindung,
  • Fig. 8 und 9 ein Diagramm zur Erläuterung des Tests zur Bestimmung der Werte der gesehenen Bildelemente des Ziels bzw. ein Diagramm zur Erläuterung der Wahl des neuen Overlays gemäß der Erfindung,
  • Fig. 10 ein Diagramm zur Erläuterung der Bestimmung der Schnitte gemäß der Erfindung,
  • Fig. 11 ein vereinfachtes Blockdiagramm einer Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens,
  • Fig. 12 und 15 bis 29 schematische Darstellungen von Teilen der Vorrichtung von Fig. 11, und
  • Fig. 13, 14 und 30 Diagramme zur Erläuterung der Arbeitsweise mancher Schaltungen der Vorrichtung von Fig. 11.
  • Vor der ausführlichen Beschreibung der Erfindung sei kurz unter Bezugnahme auf Fig. 1 bis 6 beschrieben, wie im Speicher die dreidimensionalen Objekten entsprechenden Daten, die beispielsweise von nacheinander von einem "Scanner" hergestellten parallelen Schnitten stammen, angeordnet und wie diese Daten verwendet werden können.
  • Fig. 1 zeigt einen Würfel 1, der "Objektuniversum" genannt wird und die gesamte darzustellende Information enthält, d.h. das (in 3D) darzustellende Objekt 2 ist ganz in diesem enthalten. Dieser Würfel 1 ist so ausgerichtet, daß jede seiner Kanten zu einer der drei Achsen eines rechteckigen Koordinatensystems Ox, Oy, Oz parallel ist, wobei eines der Ecken des Würfels im Nullpunkt des Koordinatensystems liegt. Aus weiter unten erläuterten Gründen sind die Abmessungen des Würfels 1 in Hexadezimaldarstellung gleich 7FFF, sind jedoch nicht gleich den tatsächlichen Abmessungen des darzustellenden Objekts.
  • Zur Abtastung des im Würfel 1 enthaltenen Objekts wird eine "hierarchische Dichotomie" vorgenommen. Zu diesem Zweck wird der Würfel 1 in acht gleich große Würfel C0 bis C7 geteilt, indem man den Würfel 1 parallel zu jeder der drei den Trieder (Ox, Oy, Oz) bildenden Ebenen halbiert. Jeder Würfel C0 bis C7 hat Kanten, deren Länge 3FFF in Hexadezimal- Schreibweise ist.
  • Jeder der Würfel C0 bis C7 wird auf gleiche Weise wieder in acht Teile geteilt und so fort.
  • Man erhält auf diese Weise eine "Hierarchie" mit mehreren Ebenen, an deren Spitze (definiert als Ebene Null) der Würfel 1 liegt. In der Ebene 1 liegen die Würfel C0 bis C7 und so fort. Im Nachstehenden wird erläutert, auf welcher Ebene diese Hierarchie anhält, um die gewünschte Lösung zu erreichen.
  • Der Würfel 1 wird "Vater" der Würfel C0 bis C7 genannt, die ihrerseits "Obel" (Abkürzung von "Objekt-Element") genannt werden. Jeder Würfel C0 bis C7 ist der Vater von acht Würfeln der folgenden Ebene (Ebene 2) usw..
  • In jeder Ebene werden die acht Würfel oder von einem gemeinsamen Vater stammenden Sohn-Obel nach einer festen Regel numeriert.
  • So haben die Mittelpunkte der Sohn-Obel, wie in Fig. 2 dargestellt ist, in der Ebene 1 die folgenden Koordinaten (nach Ox, Oy, Oz) in Hexadezimal-Schreibweise:
  • C0 : 1FFF, 1FFF, 1FFF
  • C1 : 5FFF, 1FFF, 1FFF
  • C2 : 1FFF, 5FFF, 1FFF
  • C3 : 5FFF, 5FFF, 1FFF
  • C4 : 1FFF, 1FFF, 5FFF
  • C5 : 5FFF, 1FFF, 5FFF
  • C6 : 1FFF, 5FFFt 5FFF
  • C7 : 5FFF, 5FFF, 5FFF
  • Nun sei untersucht, wie die Koordinaten von in den Würfeln enthaltenen Punkten in Hexadezimaldarstellung und dann in Binärdarstellung geschrieben werden. Zur Vereinfachung werden die Koordinaten der Mittelpunkte der Würfel C0 und C1 in Ox genommen. Von hier aus läßt sich dann auf die anderen Koordinatenachsen und auf jede beliebige Ebene verallgemeinern.
  • Die Koordinate x&sub0; des Mittelpunkts von C0 ist:
  • x&sub0; = 1 F F F (Hexadezimal)
  • oder
  • x&sub0; = 001 1111 1111 1111 (binär)
  • Die Koordinate x1 des Mittelpunkts von C1 ist:
  • x1 = 5 F F F (Hexadezimal)
  • oder
  • x1 = 101 1111 1111 1111 (binär).
  • In der Binärdarstellung haben die verwendeten Bits von rechts nach links die Stellenwerte 0 bis 14. Es genügt also, die Bits mit dem Stellenwert 14 zu betrachten, um zu bestimmen, ob die betreffenden Punkte im linken Würfel (C0) : Bit = 0 oder im rechten (C1) liegen: Bit = 1. Dasselbe gilt für jeden beliebigen in diesen Würfeln liegenden Punkt : die Koordinate eines beliebigen in C0 liegenden Punkt nach Ox ist kleiner als 3FFF, d.h. sein Bit vom Stellenwert 14 in Binärdarstellung ist immer Null, während die Koordinate eines beliebigen in C1 liegenden Punktes nach Ox zwischen 3FFF und 7FFF beträgt, d.h. sein Bit vom Gewicht 14 in Binärdarstellung ist immer gleich 1.
  • Diese Zerlegung des Objektuniversums 1 (Ausgangsuniversum) bildet einen Baum, den man "Octree" nennt (Zusammenziehung von "Octant-tree") Jeder "Knoten" dieses Baums entspricht einem Würfel. Ein Knoten des Octree-Baums trägt zwei Informationstypen: einen Wert des Zustands des Knotens und verschiedene Eigenschaften.
  • Der Zustand eines Knotens kann drei Werte haben: E, P oder F:
  • E (für "empty") stellt einen leeren Knoten dar, und bedeutet, daß das Volumen des entsprechenden Würfels keine mit ihm verknüpfte Eigenschaft enthält. Der entsprechende Würfel wird nicht weiter zerlegt und hat somit keine Söhne. Dies ist der Fall, wenn ein Würfel ganz außerhalb des darzustellenden Objekts liegt (er enthält nur Umgebungsluft).
  • P (für "partial") stellt einen Knoten dar, von dem ein Teil der Nachkommen Eigenschaften besitzt. Dies ist der Fall bei einem Würfel, von dem ein Teil in dem darzustellenden Objekt und ein Teil außerhalb dieses Objekts liegt.
  • F (für "full") stellt einen Knoten dar, der eine einheitliche Eigenschaft besitzt, der aber keine Nachkommen hat und folglich im Octree-Baum ein "Blatt" ist.
  • Die Eigenschaften eines Knotens stellen die charakteristische Information des entsprechenden Obel dar. Im Fall eines Blatt-Obel kann diese Information beispielsweise eine am Scanner gemessene Stoffdichte sein. Im Fall eines teilweise gefüllten Obel (Knoten P) kann diese Information eine Kondensation der Information der Sohn-Obel sein (Mittelwert der Dichten der Söhne oder Minimum und Maximum der Dichten der Söhne).
  • Wenn die einzige Eigenschaft das Vorhandensein oder Nichtvorhandensein des Objekts im betreffenden Obel ist, reicht die Kodierung des Werts des Obel mit F, P oder E aus und ist keine Eigenschaftskodierung erforderlich. Man sagt dann, daß das beschriebene Objekt binär ist.
  • Fig. 2 zeigt ein vereinfachtes Beispiel eines Octree-Baums. Man geht davon aus, daß das darzustellende Objekt 3 nur in den Würfeln C0 und C1 enthalten ist und daß es ein Quader ist, dessen Kanten zu den Achsen Ox, Oy bzw. Oz parallel sind. Das Objekt 3 erstreckt sich längs Ox von 1FFF bis 7FFF, längs Oy von 0 bis 1FFF und längs Oz von 0 bis 1FFF. Man nimmt an, daß dieses Objekt binär ist.
  • Auf der Ebene 0 ist der dem Würfel 1 entsprechende Knoten "P". Auf der Ebene 1 sind von den acht Söhnen des Würfels 1 nur die beiden ersten "P", die anderen sind "E". (C0 bis C7 wird in jeder Ebene von rechts nach links durchnumeriert). Also nur die Würfel C0 und C1 haben Söhne in der Ebene 2. Die Söhne der Würfel C0 und C1 sind die Würfel C00 bis C07 bzw. C10 bis C17. Von den Söhnen von C0 ist C01 "F" und alle anderen sind "E", und von den Söhnen von C1 sind C10 und C11 "F" und alle anderen sind "E", wie die getrennten schematischen Darstellungen von C0 und C1 in Fig. 2 zeigen. Nach der Ebene 2 braucht man in der Hirarchie nicht weiterzugehen, da diese keine Knoten "P" mehr besitzt.
  • Nachdem nun erläutert wurde, wie ein Octree gebildet wird, wird beschrieben, wie die Daten kodiert werden und wie sie im Speicher (Octree-Speicher) angeordnet werden, um so leicht wie möglich ausgewertet werden zu können.
  • Die drei Werte, die der Zustand eines Knotens annehmen kann, sind auf zwei Bit kodiert. Man kodiert beispielsweise 00 für E, 01 für P, 10 für F. Der verbleibende Wert 11 = F1 kann zur Darstellung eines zweiten Objekts in derselben Datenstruktur verwendet werden.
  • Als Knotenpaket ist eine Gruppe von acht Knoten definiert, die denselben Vater haben. Ein Paket wird also auf 16 Bit kodiert, die durch die Verkettung der Werte der acht Knoten gebildet werden, und zwar in der Reihenfolge ihrer Obel-Nummern, wobei die Nummer 0 (Null) sich auf der Seite der unteren Stellen befindet.
  • Als Knotenpaketblock ist eine Gruppe von Knotenpaketen definiert, die die Söhne der Knoten eines gemeinsamen Knotenpakets, Vaterpaket des Blocks genannt, sind. Ein Block kann also je nach der Anzahl partieller Knoten ("P") des Vater- Knotenpakets 1 bis 8 Knotenpakete (d.h. 3 bis 64 Knoten) enthalten.
  • Ein Knotenpaketblock ist in einem Speicher mit aufeinanderfolgenden Adressen von 32 Bitwörtern gespeichert. Jedes 32-Bit-Wort enthält in 16 Bit, beispielsweise den 16 Bit mit den niedrigen Stellenwerten, die 8 Werte der Knoten des entsprechenden Knotenpakets und in den anderen 16 Bit (im vorliegenden Fall den Bit mit den hohen Stellenwerten) den Adressen-Offset.
  • Dieser Adressen-Offset ist der Wert, der der gespeicherten absoluten Adresse eines Vater-Knotenpakets hinzuzufügen ist, um die gespeicherte absolute Adresse jedes der Pakete seines Sohn-Paketblocks zu finden. Fig. 3 zeigt schematisch einen Sohn-Block 4 und seinen Vater 5. Mit 6 ist schematisch ein Addierer dargestellt, der die Addierung des Offset vornimmt, der mit 7 bezeichnet ist.
  • Wenn der Offset größer oder gleich FFFFh (d.h. 16 Bit alle gleich "1") oder negativ ist, schreibt man in das Feld 7' von 16 Bit mit hohen Stellenwerten die Hinweisadresse FFFFh, und der eigentliche Offset 7" wird in der folgenden Adresse in einem mit Vorzeichen versehenen Format gespeichert, wie Fig. 3A zeigt.
  • Die verschiedenen Eigenschaften der Knoten ein und desselben Blocks 4 werden gegebenenfalls in einem Feld in der unmittelbaren Folge dieses Blocks (Bezugszahl 8 in Fig. 3) in der Reihenfolge gespeichert, in der sich die Knoten im Block befinden, und zwar bei den Knoten, die eine Eigenschaft besitzen. Die Länge des Feldes 8 hängt von der Länge der Kodierung der Eigenschaften ab.
  • Die verschiedenen Informationen von Eigenschaften von Knoten können beispielsweise die Dichte (Scanner-Dichte) sein, die auf 8 oder 12 Bit kodiert ist, wobei n Identifikationsbit (beispielsweise n = 4) die Registrierung von 2n verschiedenen Objekten im selben Knoten gestattet (in dem Fall, in dem der genannte Wert der Knotenzustandskodierung F1 = 11 nicht genügt, d.h., wenn mehr als zwei Objekte vorhanden sind), und eine auf bekannte Weise vorberechnete Schattierung auf beispielsweise 8 oder 12 Bit.
  • Der Octree wird in einen Speicher, Octree-Speicher genannt, eingeschrieben, der bei dem bevorzugten Ausführungsbeispiel mit 32 Bitwörtern adressiert ist. Die Adresse des Octree ist die Adresse des Knotenpakets der Ebene 0 des Octree. Dieses Knotenpaket, Vater-Knotenpaket genannt, ist ein auf ein einziges Knotenpaket reduzierter Block. Die gegebenenfalls vorhandenen Eigenschaften jedes der acht Knoten dieses Pakets werden nach diesem Paket gespeichert. (In der Praxis kann der Knoten "P" der Spitze der Hierarchie in der theoretischen Octree-Struktur von Fig. 2 in einem gespeicherten Octree weggelassen werden, da dieser Knoten so gut wie immer "P" ist. Es genügt hierbei also, die Ebenen der gesamten theoretischen Hierarchie um eine Stufe nach unten zu versetzen, wobei die Ebene 0 die der acht ersten Sohn-Knoten des einzigen weggelassenen Vaters ist).
  • Um die gespeicherte Struktur zur Visualisierung des in dem Objektuniversum enthaltenen Objekts auf einem Bildschirm verwenden zu können, der bezüglich dieses Objekts in einer beliebigen Richtung angeordnet ist, muß man zunächst für jeden Punkt des Objekts nicht nur sein eigenes Obel, sondern auch die sieben diesem Obel benachbarten Obel bestimmen, die diesem Punkt am nächsten sind und in derselben Ebene des Octree liegen. Diese Gruppe von acht einen Würfel bildenden Obel wird "Overlay" genannt. Diese acht Obel, die jeweils über drei Flächen an drei andere Obel anschließen, müssen nicht notwendigerweise denselben Vater im Octree haben. Es sind also acht Knotenpakete (also 64 Knoten) erforderlich, um die Eigenschaften eines Overlay zu kennzeichnen. Wie aus dem Nachstehenden hervorgeht, dienen die Overlays dazu, einen anderen Octree zu erstellen, der einem beliebigen Blickwinkel des Objekts entspricht, da in diesem Fall das Obel, das für einen Punkt dieses Objekts in einem auf diesen Blickwinkel bezogenen Koordinatenachsensystem (Ebene der Achsen Ox und senkrecht zur Betrachtungsachse) bestimmt ist, die den Ursprungs-Obel des Punktes benachbarten Obel überdeckt, die nicht außer Acht gelassen werden dürfen, wenn man nicht Informationen verlieren möchte.
  • Das Bezugssystem eines Overlays ist durch drei Achsen Ox', Oy', Oz' definiert, die zu denen des Objektuniversums 1 parallel sind, wobei der Nullpunkt 0 des Overlay eines der Ecken des Obel Nummer Null des Overlay ist. Die fiktiven Abmessungen des Overlay sind in jeder Ebene in Hexadezimal-Schreibweise (7FFF, 7FFF, 7FFF). Die Obel des Overlay sind nach derselben Regel wie bei dem Octree numeriert.
  • In jeder Ebene des Octree-Baums grenzt ein Overlay einen Raum des Objektuniversums ab, der alle für die Behandlung dieser Ebene erforderlichen Informationen enthält. In jeder Ebene ist der Overlay durch die Koordinaten x', y', z' festgelegt, die zwischen 0 und 7FFF (in Hexadezimal-Darstellung) liegen.
  • Das Diagramm von Fig. 4 zeigt (in zwei Dimensionen, was auf drei Dimensionen zu übertragen ist), wie die Overlays bestimmt werden. 9 sei ein Punkt des darzustellenden Objekts. Dieser Punkt befindet sich in dem schraffierten Obel, d.h. in dem Obel C12 (2tes Sohn-Obel des Obel C1 oder 2ter Knoten des Sohn-Pakets des Obels 1). Da die Abzisse x' des Punkts 9 zwischen 3FFF (Abszisse des Mittelpunkts des Würfels 1) und 5FFF (Abszisse des Mittelpunkts des Obels C1) liegt, hat sein Wert in Hexadezimal-Darstellung die Form: x'= 4ghk (ghk sind Hexadezimalzahlen zwischen 0 und F). Desgleichen hat die Ordinate y' des Punkts 9 die Form y'= 3uvw. So muß man für einen Punkt, der in einem Overlay durch seine Koordinaten x', y', z' gegeben ist, in dem gespeicherten Octree die mit diesem Punkt verbundene Information finden. Hierzu muß man mit jeder Gruppe von Koordinaten (x', y', z') die Adressen (Obel, Knoten) im Overlay in Korrespondenz bringen, die das Auffinden der Adresse im gespeicherten Octree gestatten.
  • Da der Overlay aus 64 Knoten besteht, ergeben die beiden Bit mit dem Stellenwert 14 und l3 der Koordinaten (x', y', z') eines beliebigen Punktes im Overlay die Obel-Nummer bzw. die Knoten-Nummer in diesem Obel, das den betreffenden Punkt enthält: (Gleichung Nr. 1)
  • Obel-Nummer = def (was eine binäre Zahl ist, bei der d = Bit 14 von z', e = Bit 14 von y' und f = Bit 14 von x') und
  • Knoten-Nummer = ghi (was ebenfalls eine binäre Zahl ist, in der g = Bit 13 von z', h = Bit 13 von y' und i = Bit 13 von x' ist).
  • Unter den 64 Knoten eines Overlay gibt es 27 Arten (3 Arten in jeder Koordinatenachse: 2 benachbarte Knoten von 4), 8 Knoten zu wählen, um die 8 Obel eines neuen Overlay, Sohn-Overlay genannt, zu formen. Ein Overlay hat also 27 Söhne.
  • Die Fig. 5 und 6 zeigen schematisch, wie die Overlays ausgewählt werden (Fig. 5 ist eine Darstellung in der Ebene Ox', Oy' und ist leicht auf drei Dimensionen übertragbar).
  • Für jede Koordinatenachse gibt es drei mögliche Fälle, die von 0 bis 2 numeriert sind:
  • - Fall 0 : Der Sohn-Overlay liegt in dem Intervall 0-3FFF
  • - Fall 1 : Der Sohn-Overlay liegt in dem Intervall 2000-5FFF
  • - Fall 2 : Der Sohn-Overlay liegt im Intervall 4000-7FFF.
  • Die in dem Kreis 10 von Fig. 5 dargestellten Sohn-Overlays beziehen sich auf den Fall 1 in der Achse Oy' und auf den Fall 2 in der Achse Ox'.
  • Die 27 möglichen Fälle werden durch das Triplet der Fälle bezüglich jeder der Dimensionen bezeichnet: (Fälle in Oz'; Fälle in Oy', Fälle in Ox').
  • Der Sohn-Overlay hat wieder die Abmessung 0 bis 7FFF (der Wert 7FFF des Sohn-Overlay ist wohlgemerkt nicht derselbe wie der des Vaters, sondern macht seine Hälfte aus.
  • Wenn X' die Koordinate eines Punktes im Sohn-Overlay auf Ox' und x' seine Koordinate im Vater ist, erhält man die Beziehung: (Gleichung Nr. 2)
  • X' = 2.(x' - d)
  • wobei der Wert von d (in Hexadezimaldarstellung) folgender ist (vgl. Fig. 6):
  • 0 im Fall 0
  • 2000 im Fall 1
  • 4000 im Fall 2.
  • Da das Ziel der Erfindung die Darstellung des Bildes eines Objekts auf einem Bildschirm ist, wird nun ein "Zieluniversum" definiert. Die folgende Beschreibung bezieht sich auf den Fall, in dem eine Gerade aus Projektion vorgenommen wird. Die Erfindung ist jedoch nicht auf eine solche Projektion beschränkt, sondern man kann auch beispielsweise eine perspektivische Projektion vornehmen, indem das Zieluniversum entsprechend verformt wird. Im Gegensatz zu dem in dem genannten europäischen Patent beschriebenen Verfahren, gemäß welchem man in die Ebene des Bildschirms die einzelnen Obel projiziert, besteht das erfindungsgemäße Verfahren im wesentlichen darin, daß ausgehend von dem gespeicherten Octree ein anderer Octree gebildet wird, dessen Achsen Ox" und Oy" eine zum Bildschirm parallele Ebene bilden, wobei die Achse Oz" des neuen Octree auf den Bildschirm zu gerichtet ist, und daß nur der vom Bildschirm aus sichtbare Teil dieses neuen Octree generiert wird.
  • Das Zieluniversum (in Analogie zum "Objektuniversum") ist das, das dem neuen Octree entspricht. Dieses Universum ist ganz im Overlay des Objekts enthalten. Die Stellung des Zieluniversums ist in dem Koordinatensystem des Overlay des Objekts durch seinen Mittelpunkt festgelegt, den man hier "Target Center" nennt, und durch die im Overlay von diesem Mittelpunkt zu einem besonderen Punkt des Ziels vorzunehmende Verschiebung. Diese Verschiebung wird hier "child offset" oder "Bbox offset" bei manchen spezifischen Punkten des Ziels genannt, die im nachstehenden noch beschrieben werden. In Fig. 7 ist sehr schematisch ein beliebiger Overlay 11 sowie ein Ziel des Zieluniversums 12 mit dem Mittelpunkt 13 dargestellt (es handelt sich hier keineswegs um eine klassische Projektion von Volumen auf eine Ebene, sondern eher um ein erläuterndes Diagramm).
  • Das Zieluniversum 12 ist so ausgelegt, daß, wie oben erwähnt wurde, die von seinen Achsen Ox", Oy" gebildete Ebene zur Ebene eines Bildschirms 14 parallel ist. Das Zieluniversum stellt das Obel der Ebene 0 des zu generierenden Octrees dar. Jedes Obel besitzt acht durch Dichotomie definierte Söhne, d.h. durch Zweiteilung des Obels in jeder Koordinatenachse. Die aufeinanderfolgende Teilung aller Obel definiert den Baum des Zieloctree.
  • Man definiert das "Bilduniversum" als kanonische Projektion des Zieluniversums auf den Bildschirm 14. Die Stellung des Zieluniversums im Overlay 11 des Objekts ist somit durch den Winkel determiniert, unter dem man das Objekt betrachten möchte.
  • Der Zieloctree wird kanonisch in einen Bild-"Quadtree" projiziert ("quad", weil vier Möglichkeiten, da es sich um eine Projektion auf eine Ebene handelt). Die Entsprechung zwischen den Obel-Nummern des Zieloctrees und den "Imel"-Nummern (Zusammenziehung von "image elements", da es sich um eine Ebene handelt) des Bild-Quadtrees ist konstant und unabhängig vom Blickwinkel sowie von der Ebene des Octrees.
  • Die Obel des Octrees werden auf die Imel des Quadtrees des Bildes auf folgende Weise gemäß dem Obel projiziert, das dem Bildschirm am nächsten ist, wenn es das andere maskiert, oder dem anderen, wenn es nicht vom ersten maskiert wird (d.h. wenn das erste leer ist):
  • Obel 0 oder 4 auf das Imel 0, Obel 1 oder 5 auf das Imel 1, Obel 2 oder 6 auf das Imel 2, und Obel 3 oder 7 auf das Imel 3. Vereinbarungsgemäß verdecken die Obel 4, 5, 6 und 7, die dem Bildschirm am nächsten liegen, die Obel 0, 1, 2 bzw. 3. Man kann deshalb folgende Regel aufstellen: das Obel Nummer Cn, das auf drei Bit "b2 : b1 : b0" geschrieben wird, wird auf das Imel Nummer "b1 b0" projiziert, wobei b2, b1 und b0 die Koordinaten nach Oz", Oy" und Ox" sind.
  • Die Matrix der Pixel des auf dem Bildschirm erhaltenen Bildes entspricht der Gesamtheit der Imel ein und derselben Ebene des Quadtrees. Die Pixel eines 512 x 512-Pixel-Bildes werden hierbei in der Ebene 8 des Quadtrees erreicht, wobei die erste Ebene die Ebene Null ist, die vier Imel in einem Knotenpaket-Quadtree darstellt.
  • Die Abtastfunktion des Overlay gestattet die Bestimmung des Wertes des Knotens eines Obel des Zieloctrees je nach seiner Stellung im Objekt-Overlay. Hierbei gibt es zwei Fälle je nachdem, ob das betreffende Obel ein Blatt-Obel des Zieloctrees ist oder nicht.
  • Zunächst sei bemerkt, daß die Blätter des Zieloctrees immer in einer feststehenden Ebene generiert werden, die mit der Größe des Bildes verbunden ist. Ein Obel ist also ein Blatt- Obel, wenn und nur wenn es sich in der letzten Ebene befindet.
  • Wenn das Obel ein Blatt-Obel ist, ist der Wert des Ziel- Obels "E", wenn der Abtastwert des Overlay im Mittelpunkt des Obel "E" ist, und ist im entgegengesetzten Fall "F".
  • Wenn das Obel kein Blatt-Obel ist, wird ein Test vorgenommen, der im nachstehenden "Bbox"-Test genannt wird (Zusammenziehung aus "Bounding Box"), der schematisch in Fig.8 dargestellt ist. Hierin ist 15 ein Ziel-Obel, das zu einem Ziel 16 in einem Overlay 17 gehört. Die Bbox 18 ist das Quader, dessen Seiten zu den jeweiligen Achsen des Overlays 17 parallel sind und das in ein Ziel-Obel eingeschrieben ist (d.h. die Kanten dieses Quaders laufen durch die Spitzen des Ziel-Obels 15). Der Wert des Ziel-Obels ist "E", wenn die Abtastwerte des Overlay an den acht Ecken 19 (in Fig. 8, die keine gebräuchliche Projektion auf eine Ebene ist, sind nur vier Ecken 19 dargestellte der Bbox 18 alle gleich "E" sind, und sind im anderen Fall "P". Dieser Test ist nur korrekt, wenn die Größe der Bbox in allen ihren Dimensionen nicht die Größe der Obel des Overlay überschreitet (d.h. 2000h bei den Sohn-Obel). Auf diese Weise besteht die Gewißheit, daß, wenn ein Wert "E" bestimmt wird, keiner der Nachfahren des Obel 15 einen anderen Wert als "E" haben kann, wobei man dieselbe Regel verwendet. Es ist also erforderlich, daß diese relativen Abmessungen der Bbox stets überprüft werden. Nun wird die Regel der Einschließung des Ziels definiert: das Ziel muß im Overlay eingeschlossen sein, alle Abmessungen der Bbox des Ziels müssen in jeder der Koordinatenachsen des Ziels kleiner als 4000h sein.
  • Um eine geometrische Beziehung zwischen den Overlays des Objekts und dem Zieloctree herzustellen, sieht das erfindungsgemäße Verfahren vor, daß die Bahnen der Overlays im Objekt und die Bahn im Zieloctree zusammen kontrolliert werden, so daß die Ebenen bei ihnen zu jedem Zeitpunkt gleich sind, daß in jeder Ebene das Ziel-Obel vollständig in das Objekt-Overlay eingeschlossen ist und daß in jeder Ebene die Bbox-Größe der Sohn-Obel des Obel des Ziels kleiner als 2000h ist.
  • Wenn man diese Regeln des erfindungsgemäßen Verfahrens einhält, kann die Wahl des Overlays eines Sohn-Obel ausschließlich ausgehend von der Stellung seines Mittelpunkts im Overlay vor sich gehen. Gemäß einer anderen Regel des erfindungsgemäßen Verfahrens wählt man den Overlay, dessen Mittelpunkt dem Mittelpunkt des Sohn-Obel am nächsten ist (der letztgenannte wird mit "child Center" bezeichnet) . Wenn die Koordinate des Child Center in einer Koordinatenachse des Overlays (und diese Regel wird für jede der drei Koordinatenachsen angewendet) kleiner als 3000h ist, legt man den Fall Null fest, wenn diese Koordinate größer oder gleich 3000h ist und kleiner als 5000h, legt man den Fall 1 fest, und wenn diese Koordinate größer oder gleich 5000h ist, legt man den Fall 2 fest. Diese Festlegung ergibt sich also aus der Kombinierung von drei Bit mit hohem Stellenwert des Child Center und erfordert keinen Vergleicher. Die Koordinaten des Child Center in dem neuen ausgewählten Overlay werden das neue "Target Center" (Mittelpunkt des Ziels) in der folgenden tieferen Ebene. Diese Regel ist mit dem Diagramm von Fig.9 dargestellt, in der die Bits mit Stellenwert 14, 13 und 12 des Child Center eingetragen sind. Wenn das von den Bits vom Stellenwert 14, 13, 12 des Child Center gleich "000", "001" oder "010" ist, hat man den Fall 0, wenn es gleich "011" oder "100" ist, den Fall 1, und wenn es gleich "101", "110" oder "111" ist, den Fall 2. Die entsprechende Stellung des neuen Overlay (in nur einer Dimension) ist in Fig.9 dargestellt.
  • Das erfindungsgemäße Verfahren gestattet ferner die Darstellung der Objektschnitte in 3D. Anhand von Fig.10 wird die Geometrie bezüglich der Schnittebenen erläutert. Die Aufgabe der Schnittebenen ist es, festzustellen, ob ein Sohn des laufenden Ziel-Obels sich ganz auf einer Seite oder auf der anderen Seite von einer beliebigen festgelegten Ebene befindet oder ob er von dieser Ebene geschnitten wird. In Fig.10 ist diese Schnittebene mit 20 bezeichnet und schneidet das Ziel-Obel 21. Man sieht den "inneren" Bereich 22 (bezüglich der Ebene 20), der zur Visualisierung herangezogen wird, und den "äußeren" Bereich, der wegfallen soll. Diese Feststellung wird in einer gegebenen Ebene in Abhängigkeit vom Abstand des betreffenden Sohn-Obels von der Ebene 20 vorgenommen. Eine auf 16 Bit verzeichnete Zahl stellt den Abstand D zwischen dem bezüglich der Schnittebene am weitesten "innen" liegenden Eck und der Schnittebene dar (d.h. das von der Ebene 20 im Bereich 22 am weitesten entfernte Eck des Obel). Diese Zahl wird so genormt, daß der Abstand L zwischen dem am weitesten innen liegenden Eck 24 des Ziel-Obel und dem am weitesten außen liegenden Eck (am weitesten entfernt von der Ebene 20 im Bereich 23) gleich 7FFFh ist, d.h. die nach den aufgestellten Konventionen größtmögliche positive Zahl. In einer bestimmten Ebene erhält man den Abstand D' zwischen jedem der Sohn-Obel und der Ebene 20, indem man einen mit Vorzeichen versehenen Offset hinzufügt, dessen Wert aufgrund der Normung von der Ebene unabhängig ist. Man kann also nun leicht eine Feststellung über den gewählten Sohn-Obel machen, indem man diesen Abstand D' kennt:
  • - wenn D' kleiner oder gleich 0 (in mit Vorzeichen versehenen Wert), befindet sich das Sohn-Obel ganz außerhalb,
  • - wenn D' positiv oder kleiner als 4000h ist, schneidet die Ebene das Sohn-Obel (Fall des Sohn-Obel 26), und
  • - wenn D' größer als oder gleich 4000h ist, befindet sich das Sohn-Obel vollständig innerhalb (Fall des Sohn-Obel 27 beispielsweise).
  • Der neue genormte Abstand für den gewählten Sohn ist einfach das Doppelte des alten. Dieser neue Abstand ist nur zu berechnen, wenn das betreffende Obel von der Schnittebene geschnitten wird. Wenn nämlich ein Obel sich ganz auf einer Seite einer Schnittebene befindet, liegen seine gegebenenfalls vorhandenen Söhne ebenfalls auf dieser Seite der Ebene.
  • Zur Visualisierung des Bilds des untersuchten Objekts werden die einzelnen Pixel gemalt, die dem zu diesem Objekt gehörenden Material entsprechen. Wenn während des Durchlaufens des Ziel-Octrees ein Blatt-obel mit einem Wert "F" behaftet ist, entscheidet man, das entsprechende Pixel zu malen. Die Koordinaten x und y des zu malenden Pixel entsprechen den Koordinaten x', y', z' des betreffenden Obel, die während des Durchlaufens des Octrees generiert werden.
  • Zum Durchlaufen des Ziel-Octrees wird im erfindungsgemäßen Verfahren eine Sequenz von Kontrolloperationen ausgeführt, indem in jeder Ebene bestimmt wird, ob man im Octree weiter hinuntergehen muß ("push" genannte Operation) und wenn ja, zu welchem Sohn, oder ob man im Octree aufsteigen muß ("pop" genannte Operation) und ob das Bild zu malen ist.
  • In einem bestimmten Zustand der Verarbeitung kennt man die Ebene der Objekt- und Ziel-Octrees, den laufenden Overlay, die geometrische Stellung des Ziels im laufenden Overlay und den Status der acht Söhne des laufenden Ziels, d.h. ob sie bereits aufgesucht wurden oder nicht. Das erfindungsgemäße Verfahren gestattet in einem Zustand die Durchführung einer Abtastung dses Overlays an jedem Punkt, insbesondere entweder die Durchführung eines Bbox-Tests bei einem der Söhne oder die Entscheidung, ein Sohn-Obel zu malen oder nicht. Wenn die verdeckten Teile wegfallen sollen, bewirkt ein bereits gemaltes Pixel die Inaktivierung der von diesem Pixel verdeckten Obel.
  • Die erwähnte Operation "push" besteht darin, daß der laufende Zustand der Verarbeitung gewahrt wird, daß die Ebene inkrementiert wird und daß für einen bestimmten Sohn des Ziel-Obel der neue Verarbeitungszustand in Abhängigkeit vom alten errechnet wird.
  • Die genannte Operation "pop" besteht darin, daß die Ebene dekrementiert wird und daß der bewahrte Zustand der Verarbeitung in dieser Ebene wieder aufgenommen wird. Die Verarbeitungsregel ist jetzt, solange die Verarbeitung nicht beendet ist, wenn die laufende Ebene nicht der Boden ist: den ersten noch nicht aufgesuchten Knoten des laufenden Knotenpakets, der den Bbox-Test passiert, suchen, wenn ein solcher Knoten existiert, einen push ausführen, wenn nicht, wenn man an der Spitze der Hirarchie ist, ist die Verarbeitung beendet, und wenn man nicht an der Spitze ist, ist ein pop auszuführen. Wenn die laufende Ebene der Boden der Hirarchie ist, sind die Knoten des laufenden Knotenpakets in der Prioritätsreihenfolge zu projizieren und ist im fortschreitenden Maße das Bild zu malen, und dann ist ein pop auszuführen.
  • Der Ziel-Octree wird zunächst durchlaufen, indem den dem Schirm zunächst liegenden Obel vorangegeben wird (was die Prioritätsreihenfolge definiert: dies ist das sogenannte "front to back"-Verfahren). Eine Funktion, die "next" genannt wird, besteht darin, daß nun die zu malenden Obel ausgewählt werden (im nicht-transparenten Modus), die nicht von einem bereits gemalten Obel maskiert sind. Ein Obel wird also nur dann besucht, wenn es tatsächlich auf den Bildschirm projiziert wird. Im transparenten Modus werden alle nicht leeren Obel des Objekts aufgesucht.
  • Nun wird eine Ausführungsform der Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens beschriebne. Der Diagrammblock einer solchen vorrichtung ist in Fig. 11 gezeigt.
  • Diese Vorrichtung besitzt im wesentlichen: einen Octree- Speicher 28, eine Octree-Maske 29, einen geometrischen Prozessor 30 und einen Bilderzeuger 31 mit seinem zugeordneten Speicher 32. Die Elemente 29,30 und 31 sind mit dem Octree- Bus verbunden, der aus einem Adressenbus, einem Datenbus und zwei im nachstehenden beschriebenen Steuerungen "get node" und "get property" besteht.
  • Auf diesen Speicher hat man für die gesamte nachfolgende dasselbe Objekt betreffende Verarbeitung nur zum Lesen Zugang. Der Octree ist in dem Speicher 28 in einer Form gespeichert, die es gestattet, ihn schnell auf allen Wegen zu durchlaufen. Alle Daten, die von dem geometrischen Prozessor verarbeitet werden, sind immer in derselben Datenstruktur gespeichert, um schnell und leicht verarbeitet werden zu können. Der Umfang der zu speichernden Daten kann je nach dem zu visualisierenden Objekt zwischen etwa 1M 32-Bit-Wörter (2²&sup0; Wörter) bis etwa 32 M 32-Bit-Wörter variieren. Die Ausführung dieses Speichers und die Mittel, die die Bildung des Octrees gestatten, gehören nicht zur Erfindung, sie sind bereits in den genannten Veröffentlichungen beschrieben. Es sei lediglich gesagt, daß dieser Speicher ein 32-Bit-Wörter- Ram-Speicher ist.
  • Die Octree-Maske 26 hat die Funktion, sehr schnell die Daten im geometrischen Prozessor 30 zu liefern. Während auf den Octree-Speicher 28 in Wortblöcken zugegriffen wird, wird auf die Maske 29 für ein Knotenpaket (16 Bit) oder für eine Eigenschaft (32 Bit) zugegriffen. Dank der Struktur der Daten im Octree-Speicher ist der Grad der Anwesenheit der Informationen in der Maske 29 sehr hoch, d.h. die Mehrzahl der zu jedem Zeitpunkt für den Prozessor erforderlichen Informationen befindet sich in der Maske.
  • Der geometrische Prozessor 30, der im nachstehenden ausführlich beschrieben wird, gewährleistet die Durchführung des erfindungsgemäßen Verfahrens und es ist insbesondere er, der das Durchlaufen des Octrees bestimmt.
  • Der Bilderzeuger 31 errechnet den Wert der zu malenden Pixel unter der Steuerung durch den Prozessor 30. Ein Pixel an einer bestimmten Stellung des Bildes wird nur ein einziges Mal errechnet. Das Bild wird in einem Puffer erzeugt ("frame buffer", der im nachstehenden unter Bezugnahme auf Fig.25 beschrieben wird), der ein komplettes Bild speichern kann und bei einem Ausführungsbeispiel ein RAM von 512 x 512 32-Bit-Wörtern (bei Bildern von 512 x 512 Pixel) ist.
  • Die Octree-Maske ist detailliert in Fig. 12 dargestellt.
  • Der im Speicher 28 gespeicherte Octree wird durch einen Blockleser 33 unter der Steuerung eines Sequenzers 34 (der die Funktion "fetch" auslöst) gelesen, der im nachstehenden unter Bezugnahme auf Fig. 14 beschrieben wird. Die Funktion des Sequenzers 34 ist es, auf Anforderung des geometrischen Prozessors 30 die im Octree-Speicher gelesenen Werte in Knotenpaketblöcken in die beiden eigentlichen (mit dem Leser 33 verbundenen) Maskenspeicher 35, 36 zu laden. Diese Informationen werden anschließend in den Speichern 35, 36 gelesen und neu adressiert, so daß direkt Werte geliefert werden, die in Form von "Baum, Ebene, Paket, Knoten" ausgedrückt sind, entsprechend den Bedürfnissen des geometrischen Prozessors, der diese Informationen somit direkt verarbeiten kann.
  • Der Speicher 35, Knotenpaketspeicher genannt, ist in dem vorliegenden Fall ein Speicher, der 1025 Knotenpakete (auf 16 Bit) speichern kann, die in 8 Bäumen, 16 Ebenen und 8 Paketen organisiert sind und deren Adressen am Octree-Adressenbus 37 unter den Bezeichnungen "tree" auf 3 Bit, "level" auf 4 Bit und "packet" auf 3 Bit vorliegen. Auf diese Weise kann jede Ebene 64 Knotenpakete speichern. Der geometrische Prozessor 30 wählt in der laufenden Ebene 8 Knotenpakete von diesen 64 Paketen aus, um den laufenden Overlay zu bilden. Ein Knotenpaketblock wird an einer Adresse (gegeben durch die Informationen "tree" und "level") gespeichert, wobei die "packet"-Adresseninformation 0 bis 7 beträgt. Die Adressiereingänge des Speichers 35 sind mit den Ausgängen von drei Multiplexern 38 bis 40 mit jeweils zwei Eingängen verbunden. Ein erster Eingang des Multiplexers 38 ist mit den Adressierdrähten "tree" des Bus 37 und sein anderer Eingang ist mit dem Ausgang eines Stapelspeichers 41 verbunden, der die Adresse "Vaterbaum" auf 3 Bit liefert. Ein erster Eingang des Multiplexers 39 ist mit den Adressierdrähten "level" des Bus 37 verbunden und sein anderer Eingang ist mit dem Ausgang eines Transkoders 42 verbunden, dessen Eingang mit denselben Adressierdrähten "Ebene" des Bus 37 verbunden ist. Der Transkoder 42, der beispielsweise mit einem Festspeicher ausgeführt ist, liefert ausgehend von der Adresse "level" eine Adresse "level-1". Die Programmierung eines solchen Speichers ist für den Fachmann offenkundig. Ein Eingang des Multiplexers 40 ist mit den Adressierdrähten "packet" des Bus 37 und sein anderer Eingang ist mit den Adressierdrähten "tree" des Bus 37 verbunden. Die Steuereingänge der Multiplexer sind mit den Ausgängen "select address" des Sequenzers 34 und des Sequenzers 43 (der die Funktion "get node" steuert) verbunden.
  • Der Ausgang des Speichers 35 ist über ein Register 44 mit dem Datenbus 45 (der einen Teil des Octree-Bus bildet) verbunden. Der Zeitgebersignaleingang des Registers 44 ist mit einem Ausgang des Sequenzers 43 verbunden.
  • Der Speicher 36, Eigenschaftenspeicher genannt, ist im vorliegenden Fall ein Speicher, der eine so große Kapazität hat, 8192 Eigenschaften, die in 8 Bäumen, 16 Ebenen, 8 Paketen und 8 Knoten organisiert sind, zu speichern, wobei diese Informationen am Adressenbus 37 unter den Bezeichnungen "tree", "level", "packet" und "node" (letzterer auf 3 Bit) vorliegen. Die Eigenschaften eines Knotenpakets, das an einer (durch die genannten Informationen "tree", "level" und "packet" definierten) Adresse gespeichert ist, sind an Adressen gespeichert, die durch die Informationen "tree", "level", "packet" gegeben sind, wobei die Adressinformation "node" 0 bis7 beträgt. Der Speicher 36 wird durch die Drähte "tree", "level", "packet" und "node" des Bus 37 adressiert und sein Ausgang ist über ein Register 46 mit dem Datenbus 45 verbunden. Der Zeitgebersignaleingang des Registers 46 ist mit dem Draht 47 "get property", der zum Octree-Bus gehört, verbunden.
  • Die auf diese Weise adressierten Informationen werden in der Maske 29 durch einen Validitätsbit verwaltet und den "parent-tree"-Stapelspeicher 41, der beispielsweise mit einem RAM ausgeführt ist. Der von einem RAM 48 erzeugte und durch die Informationen "tree" und "level" adressierte Validitätsbit gibt an, daß der Knotenpaketblock derselben Adresse freigegeben ist, d.h. daß die in diesem Block enthaltenen Daten auf den geometrischen Prozessor 30 übertragen werden können. Die Adressiereingänge der Speicher 48 und 41 sind mit den Ausgängen von zwei Multiplexern 49, 50 mit jeweils drei Eingängen verbunden. Die beiden ersten Eingänge des Multiplexers 49 sind mit den "tree"-Drähten und den "packet"-Drähten des Bus 37 verbunden und sein dritter Eingang ist mit einem Ausgang (im vorliegenden Beispiel auf 3 Bit) des Sequenzers 34 verbunden, der eine Information "tree" liefert, die von 0 bis 7 variiert. Ein erster Eingang des Multiplexers 50 ist mit den "level"-Drähten des Bus 37 verbunden, sein zweiter Eingang ist über einen Transkoder 51 mit denselben "level"-Drähten verbunden. Der Transkoder 51, der beispielsweise mit einem Festspeicher ausgeführt ist, liefert die Information "level + 1" ausgehend von der Information "level". Der dritte Eingang des Multiplexers 50 ist auf dieselbe Weise wie der dritte Eingang des Multiplexers 49 verbunden. Die Steuereingänge der Multiplexer 49,50 sind mit den Ausgängen "select address" des Sequenzers 34,43 verbunden. Der Pointer des "parent-tree"-RAM 41 liefert für jeden Block, dessen Adresse von "tree" und "level" auf dem Bus 37 geliefert wird, die jedem Vater-Knotenpaket der vorhergehenden Ebene entsprechende "tree"-Nummer-Information. Die Adresse eines Knotenpakets ist, wie oben erläutert wurde, das Informationen-Triplett ("tree", "level", "packet"). Die Adressen der Eigenschaften der Knoten dieses Pakets sind durch ("tree", "level", "packet" "node") gegeben, wobei "node" je nach der Nummer des betrachteten Knotens die Werte von 0 bis 7 annimmt. Dieses Knotenpaket, Sohn des Knoten mit der Adresse "node" eines bei der Adresse ("tree", "level", "packet") befindlichen Knotenpakets hat die Adresse ("packet", "level + 1", "node"). Diese Adressierart gestattet in einer bestimmten Ebene der Maske die Verwaltung von Knotenpaketblöcken, die nicht denselben Vater haben, was erforderlich ist, damit diese Blöcke ein und demselben Overlay entsprechen. Die Maske wird durch die Signale "get node" und "get property" jeweils auf 1 Bit gesteuert, die von den Drähten 52 und 47 des Octree-Datenbus geliefert werden und zum Sequenzer 43 bzw. zum Register 46 gelangen.
  • Wenn das Signal "get node" aktiviert ist, liest die Maske 29 die Adressen der auf dem Bus 37 auftretenden Knotenpakete ("tree", "level", "packet"). Die Maske 29 führt nun folgende Etappen aus: der Speicher 48 prüft nach, ob der Adreßblock ("tree", "level") freigegeben ist; wenn er nicht freigegeben ist, benachrichtigt er den Sequenzer 43, der die Funktion "fetch" aktiviert, um den richtigen Block zu suchen, indem er über den Draht 43 dem Sequenzer 34 ein Signal liefert und auf ein Bestätigungssignal des Sequenzers über den Draht 34 wartet. Diese Aktivierung der Funktion "fetch" ist schematisch im oberen Teil von Fig. 13 gezeigt und noch einmal detailliert in Fig. 14 dargestellt. Der Pointer 55 des Speichers 41 unter der Steuerung des Sequenzers 34 zeigt auf das Vater-Knotenpaket positioniert, was gemäß der oben erläuterten Adressierregel die Adresse des freigegebenen Sohn- Knotenpakets 57 ergibt.
  • Sobald das Bestätigungssignal auf der Verbindung 54 erhalten wird, bewirkt der Sequenzer 43 über die Verbindung "select address" und einen der Multiplexer 38 bis 40 die Adressierung (in "Baum"-, "Level"-, "Packet"-Ausdrücken) des Speichers 35 und aktiviert dann das Register 44, das das entsprechende Knotenpaket auf dem Bus 45 liefert (Fig. 13, Diagramm in der Mitte, für das Knotenpaket 57).
  • Anschließend bewirkt der Sequenzer 43 über die Verbindung "select address" und die Multiplexer 49 und 50 die neue Adressierung der Speicher 48 und 41 (Adresse "packet", "level + 1") , um den "parent-tree"-Pointer mit dem Block der höheren Ebene nach der Adressierregel der Adresse ("packet", "level + 1") zu aktualisieren, d.h., daß, wenn, wie in Fig. 13 gezeigt ist, das gesendete Paket die Nummer 2 der Ebene "level" ist, der Sohn-Block im Baum 2 der Ebene "level + 1" angeordnet wird. Wenn an dieser Adresse ein freigegebener Block für einen anderen Vater-Pointer existiert, wird er über die Steuerung 59 und das "ODER" 60 invalidiert und der Sequenzer 43 positioniert den Pointer 58 auf der korrekten "tree"-Adresse.
  • Was die Funktion "get property" anlangt, wird eine Validitätsnachprüfung in Antwort auf ein Signal "get property" (Signal auf 1 Bit auf dem Draht 47) durchgeführt, da in dem Block der Eigenschaften die einzelnen Eigenschaften in der Reihenfolge der entsprechenden Knoten angeordnet sind und ihre Adressen verbunden sind. Der Speicher 36 liefert nun die Eigenschaft, die der Adresse ("tree", "level", "packet", "node") entspricht, die zu diesem Zeitpunkt auf dem Bus 37 verfügbar ist, und zwar über das Register 46, das durch dieses Signal "get property" aktiviert wird.
  • Auf einen Befehl "fetch" (von 43 gesendet) eines Blocks, der sich an der Adresse ("tree", "level") befindet, bewirkt der Sequenzer 34 (über "select address") die Adressierung der Speicher 41 und 48 in "tree", "level" durch die Multiplexer 49,50, um die Vater-Baumnummer zu erhalten, und dann löst er (über "select address") die Adressierung in "parent-tree", "level - 1", "tree" über die Multiplexer 38 bis 40 des Speichers 34 aus, um das Vater-Knotenpaket nach der genannten Adressierregel zu lesen: in Fig. 14 ist der Pointer 62 auf dieses Vater-Paket 63 gerichtet. Dann liest der Sequenzer 34 die absolute im Octree-Speicher gespeicherte Adresse des Blocks ("tree", "level") im Speicher 61. Der Speicher 61 ist mit den Ausgängen der drei Multiplexer 38 bis 40 verbunden und erhält vom Leseblock 33 die Adressen der Blöcke, durchlaufen. Der Speicher 61 erstellt ausgehend von der laufenden Adresse (relativen Adresse) der Knoten und der entsprechenden Offsets die absolute Adresse dieser Knoten.
  • Anschließend aktiviert der Sequenzer 34 über die 1-Bit-Verbindung 64 den Leser 33, der den Speichern 35, 61 und 32 die Informationen "Knotenpakete", "Blockadresse" und "Eigenschaft" zu den absoluten Adressen ("tree", "level", "packet" von 0 bis 7 und "node" von 0 bis 7) liefert. Fig. 14 zeigt den Sohn-Block 65 des Pakets 63. Dieser Sohn-Block ist an der Adresse ("tree", "level") gespeichert, wo der Sequenzer 34 invalidiert. Dann wählt der Sequenzer 34 (über die Verbindung "select address" der Multiplexer 50 und 49) die Adressen ("t" = 0 bis 7, "level + 1") der Speicher 41,48 aus. Anschließend invalidiert er die Blöcke der Ebene "level + 1", wenn "parent-tree" von "tree" abweicht, was der Vergleicher 41A ausführt (dessen Eingänge mit "tree" des Bus 37 und mit dem Ausgang des Stapelspeichers 41 verbunden sind und dessen Ausgang mit den Sequenzern 34 und 43 verbunden ist), d.h. er invalidiert die Blöcke, die bei einem zum Block ("tree", "level", Block 65 in Fig. 14) gehörenden Vater-Knotenpaket gültig waren. In Fig. 14 ist diese Invalidierung durch Kreuze auf den auf dem Block 65 gerichteten Pointern 66,67 schematisch dargestellt. Da dieser Block nämlich geändert wurde, sind die Blöcke der höheren Ebene ("level + 1"), die mit ihm verbunden sind, nicht mehr gültig. Schließlich sendet der Sequenzer 34 dem Sequenzer 43 auf der Leitung 54 ein Bestätigungssignal und wartet auf ein anderes Signal "fetch" über die Leitung 53. Der Sequenzer 43 nimmt nun den Ablauf seines Prozesses wieder auf, d.h. den oben beschriebenen Prozeß nach dem Empfang des Bestätigungssignals.
  • Die Steuerung der Validität der Blöcke ist automatisch. Die folgenden Steuerungen werden von der Ebene Null aus zugelassen:
  • - Sendung einer Steuerung "get node" für durch ("tree", "level", "packet") definierte Adressen für jede Ebene ("level") zwischen Null und der laufenden Ebene (letzte angeforderte Ebene).
  • - Sendung einer Steuerung "get prop" für die durch ("tree", "level", "packet", "node") definierten Adressen einer unter der laufenden Ebene liegenden Ebene, deren Steuerung "get node" für die Adresse ("tree", "level", "packet") zuvor durchgeführt wurde.
  • Fig. 15 zeigt den Funktionsdiagrammblock des geometrischen Prozessors 30 nur mit dem Octree-Datenbus 45 und den Steuerungen "get property" 47 und "get node" 52.
  • Der geometrische Prozessor besitzt zunächst einen Sequenzer 68, der die Steuerung der einzelnen Stufen des erfindungsgemäßen Verfahrens gewährleistet. Der Sequenzer 68 nimmt fünf Grundzustände an, die mit Zustand 0 bis Zustand 4 bezeichnet sind.
  • Zustand 0: das ist der "Bbox"-Test. In diesem Zustand steuert der Sequenzer die Durchführung des "Bbox"-Tests für einen bestimmten Sohn des Ziel-Obel zum Zweck seiner Bewertung. Der Test ist positiv, wenn der Wert dieses Sohns nicht "E" ist.
  • Zustand 1: Funktion "push". Der Sequenzer steuert die Durchführung eines "push" für einen bestimmten Sohn des Ziel- Obel, wenn der Bbox-Test positiv ist. Der Prozessor wählt nun den Sohn-Overlay und errechnet die neuen Koordinaten des neuen Ziels.
  • Zustand 2: Funktion "Pop". Der Sequenzer steuert die Durchführung dieser Funktion, wenn alle Söhne des laufenden Ziel- Obel aufgesucht worden sind.
  • Zustand 3: Funktion "test paint" und Erzeugung des Bilds. Wenn Pixel des Bilds zu malen sind, aktiviert der Sequenzer die Funktion "Erzeugung des Bilds", die den Wert errechnet, der dem laufenden Pixel zuzuweisen ist. Die beiden, durch das gemalte Pixel verdeckten Obel werden gesperrt und werden also nicht mehr aufgesucht.
  • Zustand 4: "Next". In diesem Zustand bestimmt der Sequenzer den folgenden aufzusuchenden Sohn des laufenden Obel.
  • Der Sequenz er sowie die anderen Elemente des geometrischen Prozessors werden durch die folgenden Variablen gesteuert (Fig. 15):
  • "c-num": Nummer des aufzusuchenden Sohns des laufenden Obel (0 bis 7).
  • "n-rem": Validitätsbit der Variablen "c-num". Wenn dieses Bit auf Null ist, so bedeutet dies, daß es keine aufzusuchenden Söhne des laufenden Obel mehr gibt.
  • "level": Laufende Ebene des Ziel-Octrees.
  • "bottom": Boolesche Zahl, wahr, wenn "level" der Basis des Octrees entspricht.
  • "top": Boolesche Zahl, wahr, wenn "level" der Spitze des Octrees entspricht (Ebene 0).
  • "bpass" und "cpass": Bool'sche Zahlen, wahr, wenn der Sohn mit der Nummer "c-num" des laufenden Obel aufzusuchen ist.
  • "paint": Boolesche Zahl, wahr, wenn der Sohn mit der Nummer "c-num" des laufenden Obel auf das Bild zu projizieren ist.
  • Der Ausgangszustand der Initialisierung des Sequenzers ist der Zustand 0, in dem "level" = 0 (Variable "top" wahr), und "c-num" ist die Nummer des ersten aufzusuchenden Sohns (Variable "n-rem" = 1). Bei der Ausführungsform mit Auflösung von 512 x 512 hat man also typisch "c-num" = 7.
  • Die beiden möglichen Übergänge zwischen den einzelnen Zuständen (bezeichnet mit E0 bis E4) des Sequenzers sind die folgenden:
  • E0 T E1: "bpass" und "cpass" sind wahr
  • E0 T E4: "bpass" oder "cpass" ist falsch
  • E1 T E0: "bottom" ist falsch
  • E1 T E3: "bottom" ist wahr
  • E3 T E4: ist immer wahr (von E3 geht man zwangsläufig auf E4 über)
  • E4 T E3: "bottom" ist wahr und "nrem" ist wahr
  • E4 T E2: "top" ist falsch und "nrem" ist falsch
  • E4 T E0: "bottom" ist falsch und "nrem" ist wahr
  • E4 T Ende: "top" ist wahr und "nrem" ist falsch.
  • Der Prozessor 30 besitzt einen RAM-Speicher 69, der die Funktion "test paint" durchführt.
  • Die Funktion "test paint" (Zustand E3) steuert die Abtastung des Overlay durch den laufenden Sohn-Obel (mit der durch "c-num" angegebenen Nummer) . Der Wert von "paint" leitet sich vom Zustand des entsprechenden Knotens ab ("node state"). Bei der vorliegenden Ausführungsform werden die Knoten, deren Zustand "F" ist, gemalt. Die Funktion Bilderzeugung wird aktiviert, wenn "paint" wahr ist, dann wird das Bit "c-num" oder "c-num-4" (wenn "c-num" größer als 3 ist) des Registers "quad status" validiert.
  • Die Funktion Bilderzeugung (Block 70 in Fig. 15) wird im nachstehenden unter Bezugnahme auf Fig. 25 beschrieben.
  • Die Funktion "test Bbox" gewährleistet die Abtastung des Overlay für die acht Ecken des Sohns des laufenden Obel. Wenn eines der Signale "node state" nicht Null ist, ist die Boolesche Zahl "bpass" wahr. Diese Funktion ist Teil der in Fig. 15 mit 71 bezeichneten Funktionengruppe und wird im nachstehenden unter Bezugnahme auf Fig. 24 detaillierter beschrieben.
  • Die Funktion "push", die insbesondere unter Bezugnahme auf die allgemeine Fig. 16 im vorstehenden erläutert wurde, besteht darin, daß die Register mit dem Zustand "target status" und "target center" (vgl. Fig. 17) in ihren der laufenden Ebene entsprechenden Stapelspeichern zu sichern, das Register "quad status" (vgl. Fig. 20) im "quad tree"- Speicher in der laufenden Ebene an der Adresse "target x", "target y" zu sichern, den neuen Overlay zusammenzusetzen, die neuen Werte von "target center" und von "target x", "target y", "target z" zu errechnen, die laufende Ebene zu inkrementieren, den neuen Wert von "quad status" in der neuen laufenden Ebene und an der neuen Adresse "target x", "target y" zu lesen und den neuen "target status" in Funktion vom neuen "quad status" zu initialisieren, wobei der neue "c-num" nun verfügbar ist (vgl. Fig. 18).
  • Die Funktion "pop" (vgl. Fig. 16) besteht darin, daß das "quad status "-Register im "quad-tree"-Speicher in der laufenden Ebene an der Adresse "target x", "target y" gesichert wird, wenn sein Wert FF in Hexadezimal-Darstellung ist, man zieht den Wert "c-num" (dessen beide Bit mit niedrigem Stellenwert genügen) des zu kondensierenden Sohn-Imel heran, dann dekrementiert man die laufende Ebene, man lädt die Register "target status", "target center" von ihren jeweiligen Stapelspeichern aus auf die neue laufende Ebene, man errechnet die neuen Werte "target x", "target y", "target z", man liest den neuen Wert von "quad status" in der neuen laufenden Ebene an der neuen Adresse "target x", "target y" und man führt gegebenenfalls die Kondensierung durch.
  • Der geometrische Prozessor 30 besitzt ferner eine Funktion "Geometrie" 72, die im nachstehenden unter Bezugnahme auf Fig. 17 beschrieben wird, eine Funktion "Schnittebene" 73, die im nachstehenden unter Bezugnahme auf Fig. 19 beschrieben wird, eine Einheit 74 von drei Registern, die die Adressen "target x", "target y" bzw. "target z" des Ziel- Obel liefern, eine Funktion "next" 75, die im nachstehenden unter Bezugnahme auf Fig. 18 beschrieben wird, und eine Funktion 76 quad-tree-Lesen/Schreiben, die im nachstehenden unter Bezugnahme auf Fig. 20 erläutert wird.
  • Der Zustand des geometrischen Prozessors 30 in einer bestimmten Ebene wird durch die folgenden Register und Stapelspeicher beschrieben:
  • - "quad status"-Register (vgl. Fig. 20) mit vier Bits, gibt den Zustand des laufenden Imel des quad tree an,
  • - "c-num"-Register (vgl. Fig. 18) mit drei Bit, gibt die Nummer des zu besuchenden Sohns des laufenden Obel an,
  • - "target center"-Register mit drei mal 16 Bit (für die drei Achsen) gibt die Koordinaten des Mittelpunkts des laufenden Ziel-Obel im Koordinatensystem des laufenden Overlay an,
  • - "last c-num"-Stapelspeicher, speichert alle bereits besuchten "c-num" für alle niedrigeren Ebenen,
  • - "target center"-Stapelspeicher, speichert alle Werte von "target center" für alle niedrigeren Ebenen,
  • - "quad tree"-Speicher, speichert alle "quad status" des "quad tree"-Bilds.
  • Fig. 16 ist ein Prinzipschaltbild der Schaltung zur Durchführung der Funktion "push" oder der Funktion "pop" je nach der an einen Multiplexer 77 angelegten Steuerung "push/pop". Der Ausgang des Multiplexers 77 ist mit dem Eingang eines Registers 78 verbunden, dessen Zeitgebersignaleingang ein Signal "Validierung" empfängt. Der Ausgang des Registers 78 ist einerseits mit einer Funktion "Entscheidung" 79 und andererseits mit einem ersten Eingang des Multiplexers 77 durch eine "pop"-Schleife 80 verbunden, die einen Datenstapelspeicher 81 enthält, der durch einen Ebenenwert adressiert ist. Ein Ausgang der Entscheidungsfunktion ist durch eine "push"- Schleife 82 mit dem zweiten Eingang des Multiplexers 77 verbunden. Ein anderer Ausgang 83 der Funktion 79 liefert verschiedene Variablen (vgl. Fig. 17 bis 19).
  • Je nach dem Kreis, in den diese Funktion "push/pop" eingesetzt ist, enthält das Register 78 die laufenden Informationen "last c-num", "target center" oder "Schnittebene", die in der laufenden Ebene zutreffen. Auf eine Steuerung "push" wird das Register in einem Speicher (Stapelspeicher 81) gesichert, der durch den Wert der Ebene adressiert ist, die gerade bestätigt wurde, und dann wird der neue Wert des Registers ausgehend vom alten errechnet. Auf eine Steuerung "pop" wird das Register 78 mit dem Wert geladen, der im Speicher 81 an der Adresse der Ebene gelesen wurde, die gerade erreicht wurde.
  • Die Geometriefunktion, die in Fig. 17 dargestellt ist, führt eine Abtastung des Overlay durch. Sie besteht aus drei Teilen, die für alle drei Koordinaten x,y und z gleich sind.
  • Der durch das Signal "push/pop" gesteuerte Ausgang eines Multiplexers 84 ist mit dem Register 85 "target center" (Mittelpunkt des Ziels) verbunden. Der Ausgang des Registers 85 ist einerseits mit einem Eingang des Multiplexers 84 über einen RAM-Speicher 86, der einen Stapelspeicher für die "target center"-Werte bildet, und andererseits mit den Eingängen von zwei Addierern 87,88 verbunden, deren andere Eingänge jeweilig mit den Ausgängen von Lebendspeichern 89,90 verbunden sind. Der Speicher 89 speichert die Offset-Höchstwerte der Ecken des Bbox bezüglich des Mittelpunkts des Ziels und ist durch die sich auf das Ziel beziehende Variable c-num adressiert. Der Speicher 90 speichert die Offset- Minimumwerte bezüglich des Mittelpunkts des Ziels der Bbox und bezüglich des Mittelpunkts des Sohn-Obels und ist durch das "c-num" des Ziels und durch das Signal "test Bbox" adressiert.
  • Das Register 85 enthält die Koordinaten des Mittelpunkts des laufenden Ziel-Obels im Koordinatensystem des laufenden Overlay. Am Ausgang der Addierer erhält man die Koordinaten des Mittelpunkts des Sohn-Obels, dessen Offset durch die Variable "c-num" ausgewählt wird, oder die Koordinaten der acht Ecken seiner "Bbox". Die die Koordinaten des Sohn-Obel darstellenden Bits mit den größten Stellenwerten (Stellenwerte 14,13) liefern die Obel- und Knotennummern des zu verarbeitenden Overlay. Die acht Adressen Obel, Knoten der acht Ecken eines Bbox werden in einer einzigen Operation unter Anwendung der Gleichung Nr. 1 errechnet, die oben bei der Abtastung des Overlay genannt wurde.
  • Die Ausgänge der Addierer k87,88 sind mit einer Kombinierschaltung 91 mit drei Ausgängen 92,93,94 und einem Steuereingang 95 verbunden. Der Ausgang des Addierers 88 ist über eine Schaltung 96, die eine Multiplikation mit 2 durchführt (die im Grund eine Eliminierung des am wenigsten gültigen Bits durch Verdrahtung ist), mit dem zweiten Eingang des Multiplexers 84 verbunden, mit dem auch der Ausgang 94 der Schaltung 91 verbunden ist.
  • Der neue Mittelpunkt des Ziels wird gemäß der Gleichung Nr.2 errechnet, die oben im Zusammenhang mit den Koordinaten eines Sohn-Overlay genannt wurde. Das Bit mit dem Stellenwert 0 des neuen Mittelpunkts des Ziels ist weiterhin Null. Die Bits mit dem Stellenwert 1 bis 13 sind die alten Bits mit dem Stellenwert 0 bis 12, wobei diese Operation durch einfache Verschiebung nach links ausgeführt wird (d.h. durch die obengenannte Multiplizierung mit 2). Das Bit mit dem Stellenwert 14 wird in Abhängigkeit vom Fall des neuen Overlay, also in Abhängigkeit von den alten Bits mit dem Stellenwert 12,13,14 nach folgender Tabelle bestimmt: alte Bits b 14 : b 13 : b 12 neues Bit b 14
  • Während eines "push" validiert die Steuerung "assemble" die für die Berechnung eines neuen Overlay erforderlichen Werte ("obel", "node"). In Abhängigkeit von der Stellung des Mittelpunkts des Ziels im alten Overlay errechnet man die acht Adressen ("obel", "node") , und zwar zwei pro Koordinatenachse der acht Knoten des alten Overlay, um das neue Overlay zu formen, und zwar gemäß der folgenden Tabelle: Mittelpunkt des Sohns b 14 : b 13 : b 12 OBEL 0 OBEL 1 Obel Node
  • Die Variable "case" (Fall), die auf 2 Bits am Ausgang 92 verfügbar ist und für die Wahl des neuen Overlay erforderlich ist (vgl. oben Beschreibung von Fig. 9), ist die Verkettung der Variablen "obel:node" des Obel 0.
  • Das Steuersignal "assemble" (auf 1 Bit) steuert entweder die Abtastung des Overlay über den Ausgang 93 (im "Bbox"-Test und in der Funktion "male") oder den Assembliermodus über den Ausgang 92, an dem die Fallnummer verfügbar ist, und am Ausgang 94, an dem das neue Bit mit dem Stellenwert 14 des Mittelpunkts des Ziels abgenommen wird.
  • Fig. 18 zeigt die Funktion "next" 75. Sie besitzt einen Multiplexer 97 mit drei Eingängen, dessen Ausgang mit einem Register 98 verbunden ist (das "c-num" speichert, d.h. einen der acht Söhne des Ziels). Der Ausgang 99 des Registers 98 ist mit einem ersten Eingang des Multiplexers 97 über eine "pop"-Schleife 100 verbunden, die einen durch die "level"- Werte adressierten Stapelspeicher 101 besitzt. Der Ausgang des Registers 98 ist ferner mit einem Eingang einer programmierbaren Schaltung "next" 102 verbunden, deren anderer Eingang das von einer Schaltung 76 kommende Signal "quad status" (quad tree-Zustand) empfängt. Der Ausgang der Schaltung 102 ist mit einem anderen Eingang des Multiplexers 97 verbunden. Außerdem wird das Signal "quad status" zu einer Initialisierungsschaltung 103 gesendet, deren Ausgang mit dem dritten Eingang des Multiplexers 97 verbunden ist. An einem anderen Ausgang 104 der Schaltung 102 verfügt man über die Variable "n rem", die dem Sequenzer 68 zugeführt wird.
  • Das Register 98 enthält die Nummer ("c-num") des aufzusuchenden Sohn-Obels. Die Schaltung 75 errechnet, wenn sie aktiviert ist (am Zeitgebersignaleingang des Registers 98 erscheinendes Signal "validation"), die neue "c-num" in Abhängigkeit von der letzten aufgesuchten c-num und vom Zustand des "quad status"-Signals, das die bereits aufgesuchten Sohn-Obel invalidiert. Wenn kein Sohn mehr aufzusuchen ist, geht die Boolesche Variable "n rem" auf "falsch" über. Die Steuerung "push" initialisiert den Wert von "c num" in Abhängigkeit vom "quad status "-Wert. Die Steuerung "pop" gestattet die Wiederaufnahme in den Stapelspeicher 101 der letzten "c num", die im neuen Niveau aufgesucht wurde. Eine Aktivierung der Funktion "next" validiert nun die nächste aufzusuchende "c num".
  • Die Schaltung 73 zur Schnittebene-Bestimmung von Fig. 19 besitzt einen Multiplexer 105, der durch das Signal "push"/"pop" gesteuert ist und dessen Ausgang mit einem Register 106 verbunden ist. Der Ausgang des Registers 106 ist einerseits mit einer "pop"-Schleife 107, die einen durch "level" adressierten Stapelspeicher 108 besitzt, mit einem Eingang des Multiplexers 105, andererseits mit einem Eingang eines Addierers 109 und schließlich mit einem Eingang einer logischen Schaltung 110 zur Festlegung der Schnittebene verbunden ist. Der Ausgang des Addierers 109 ist mit einem anderen Eingang der Schaltung 110 sowie mit dem anderen Eingang des Multiplexers 105 über eine "push"-Schleife 111 verbunden, die eine mit zwei Multiplizierern der Schaltung 112 (Verschiebung nach links) besitzt, wobei ein Ausgang 113 der Schaltung 110 auch mit diesem anderen Eingang des Multiplexers 105 verbunden ist. Ein Schnittebenen-Offset-Speicher 114, der durch "c num" adressiert ist, ist mit dem anderen Eingang des Addierers 109 verbunden. Die Schaltung 110 besitzt zwei weitere Ausgänge (auf 1 Bit) 115,116, auf denen die Variablen "c-pass" und "c-int" verfügbar sind.
  • Das Register 106 enthält den Wert des oben erläuterten Abstands D'. Man erhält am Ausgang des Addierers 109 den Wert des Abstands D' für das durch die Variable "c-num" ausgewählte Sohn-Obel. Die Stellung der Obel bezüglich der Schnittebene wird durch zwei Bit determiniert, die die Variablen "cpass" und "cint" bilden: "cpass ist wahr, wenn das Sohn- Obel nicht vollständig außerhalb der Ebene ist, und "cint" ist wahr, wenn das Sohn-Obel die Ebene schneidet.
  • Der neue in das Register 106 eingeführte Wert für die folgende Ebene ist der Wert des Abstands des ausgewählten Sohn- Obels multipliziert mit 2, und von der Schaltung 110 wird eine spezifische Entscheidung für die neuen Bit 14 und 15 getroffen, um die Entscheidung zu stabilisieren, wenn die Ebene das Obel nicht mehr schneidet. Die Schaltung 110 ist gemäß der nachstehenden Tabelle programmiert. Vater b15:b14 Sohn b15:b14 cpass cpass cint cint neues b15:b14 die Ebene schneidet den Vater der Vater ist innerhalb der Vater ist außerhalb die Ebene schneidet den Sohn der Sohn geht nach innen der Sohn geht nach außen der Sohn bleibt innen der Sohn bleibt außen
  • Fig. 20 zeigt das Schema der "quad-tree"-Speicherschaltung 76. Dieser Speicher 117 wird durch die Koordinaten "target x", "target y", "target z" der Ziel-Obel und durch "level" adressiert. Der Speicher 117 erhält seine Informationen von einem 4-Bit-Register 118 über eine Schreibschaltung 119 und wird durch eine Leseschaltung 120 gelesen, die mit einer Kondensationsschaltung 121 verbunden ist, die andererseits mit einer Kondensationstestschaltung 122 verbunden ist, die ihrerseits mit dem Bit des Registers 118 verbunden ist. Die vier Bits des Registers 118 können durch eine Schaltung 123 auf "1" positioniert werden, die einerseits die Variable "c-num" und andererseits ein von der im nachstehenden beschriebenen Schaltung 157 erzeugtes Steuersignal "upd quad" zur quad-tree-Aktualisierung empfängt.
  • Das quad-tree-Zustandsregister 118 ("quad status") enthält den Zustand des laufenden Imel (gemalt oder nicht gemalt). Dieses Register wird auf zwei verschiedene Arten geändert:
  • - wenn die Ebene der Boden ist, wird jedesmal, wenn ein Pixel gemalt wird, das ihn darstellende Bit auf "1" gebracht. Während einer Operation "pop" wird ein Kondensationsschritt ausgeführt. Dieser Schritt besteht darin, daß dem Imel, von dem alle Söhne gemalt wurden, der Wert "1" (gemalt) zugewiesen wird.
  • Während eines "push" oder eines "pop" werden die alten Werte von "quad status" im Speicher 117 in der alten Ebene und an der alten Adresse "target x", "target y" gesichert und "quad status" wird durch den in der neuen Ebene und an den neuen Adressen "target x", "target y" gelesenen Wert initialisiert. Während eines "pop" ist zusätzlich eine Kondensation durchzuführen, wenn der alte Wert von "quad status" F ist (F Hexadezimal = 1:1:1 : 1 binär), d.h. vollständig gemalt.
  • Fig. 21 zeigt einen der Teile der Schaltung 71, und zwar die Schaltung 124 zur Assemblierung eines Overlay. Die Schaltung 124 besitzt acht Kreise mit gleichen Gattern 125.0 bis 125.7 (die im nachstehenden unter Bezugnahme auf Fig. 22 ausführlich beschrieben werden Die Ausgänge (Signale "adout") dieser acht Gatter sind einerseits mit einem Multiplexer 126 und andererseits mit einem Multiplexer 127 verbunden. Die acht Ausgänge des Multiplexers 126 (Signale "adin") sind mit den Eingängen der Gatterschaltungen 125.0 bis 125.7 verbunden. Andererseits sind die die Information "parent tree" der acht Signale "adin" darstellenden Bits mit dem Eingang des Multiplexers 128 verkettet. Der Ausgang des Multiplexers 127 ist mit dem Datenbus 45 verbunden, und er wird durch den Wert des Signals "obus" der Gatter 125.0 bis 125.7 gesteuert (vgl. Fig. 22). Eine andere Serie von Eingängen des Multiplexers 128 ist mit den "data"-Drähten des Bus 45 verbunden. Der Multiplexer 128 wird durch das Signal "auto" gesteuert.
  • Die Ausgänge "reguest" der Gatter 125.0 bis 125.7 sind mit mit einer Prioritätszuteilungsschaltung 129 verbunden, deren Ausgänge "ack" 0 bis 7 mit den entsprechenden Eingängen dieser Gatter verbunden sind. Diese Gatter erhalten ferner die Adressen "obel" und "node" von 0 bis 7 und senden Signale "node state" (Zustand der Knoten). Die Ausgänge bpass 0 bis bpass 7 dieser Gatter sind mit den Eingängen einer ODER- Schaltung 130 verbunden, an deren Ausgang man das Signal bpass von Fig. 15 erhält.
  • Der Multiplexer 126 wird durch das Signal "case" (Fall-Nummer von 1 bis 27) gesteuert.
  • Die Funktion der Schaltung von Fig. 21 besteht darin, daß im Baum der Overlays nach unten gegangen wird. Diese Funktion ist eng verbunden mit dem Adressiermodus des Objekt-Octree im Maskenspeicher. Man assembliert nämlich in den Speichern des Overlay nur die Adressen, an denen im Maskenspeicher die Werte oder die Eigenschaften der Knoten abzufragen sind. Zum Zeitpunkt der Assemblierung eines neuen Overlay errechnet man gemäß den Adressierregeln des Octree die Adressen des Maskenspeichers, an denen man die Informationen über den Overlay in dem Fall findet, in dem sie angefordert wurden. Die acht Rechenschaltungen 125.0 bis 125.7, die alle gleich ausgebildet sind, haben jeweils die Aufgabe, die Adresse eines Obel des neuen Overlay in Abhängigkeit von der alten Adresse zu errechnen.
  • Fig. 22 ist ein Funktionsschema eines der acht Rechenschaltungen, die hier einfach mit 125 bezeichnet ist. Die Schaltung 125 besitzt ein Netz 131 zum Berechnen der neuen Adresse, das ausführlich unter Bezugnahme auf Fig. 23 beschrieben wird und das die Daten "adin" erhält. Der Ausgang des Netzes 131 ist mit einem Stapelspeicher 132 verbunden, der im vorliegenden Beispiel 16 von dem Netz 131 errechnete Adressen enthalten kann. Am Ausgang des Stapelspeichers 132 erhält man die Signale "adout". Der Schreibvalidierungseingang des Stapelspeichers 132 ist mit dem Ausgang einer Dekodierschaltung 133 "4 zu 16" verbunden, die die Informationen "level" und "assemble" erhält und das Schreiben des Stapelspeichers 132 in der Ebene "level + 1" aktiviert.
  • Die Schaltung 125 besitzt ferner eine Schaltung 134, die ausführlich im nachstehenden unter Bezugnahme auf Fig. 24 beschrieben wird. Die Schaltung 134 erhält die Signale "get n", "node", "packet", "write", "auto", "Obel-Nummer" und "obus" und erzeugt an einem Ausgang das Signal "request". Ein anderer Ausgang der Schaltung 134 ist mit einem ersten Multiplexer 135 verbunden, auf welchen ein zweiter Multiplexer 136 folgt. Der Ausgang des zweiten Multiplexers 136 ist mit einem Eingang der Schaltung 131 verbunden und erzeugt andererseits die Signale "node state" und die "bpass" von 0 bis 7.
  • Die "obel"-Adressen werden außerdem einer Gruppe 137 von Gattern mit drei Zuständen zugeleitet, die durch "ack" gesteuert werden und deren Ausgänge mit der Leitung "obus" verbunden sind.
  • In einer bestimmten Ebene liefert jede Schaltung 125 die Adresse "adout" der acht Obel des alten Overlay. In Abhängigkeit von der Variablen "case" treten diese acht Adressen am Multiplexer 126 am Eingang jedes der Schaltungen 125 auf, so daß die Schaltung 125i (i ist 0 bis 7), die die Adresse des Obel Nummer i errechnen soll, am Eingang die Adresse des Obel in dem alten Overlay erhält, zu dem es gehört ("adin").
  • Die acht Adressen der acht neuen Obel werden parallel durch die acht Rechenschaltungen wie die Schaltung 131 errechnet, von denen eine in Fig. 23 dargestellt ist.
  • Die Schaltung 131 besitzt vier Multiplexer 138 bis 141 mit zwei Eingängen. Die drei ersten werden durch "node state" gesteuert, der der Wert "parent value" für das Signal "adout" wird, und der vierte (141) wird durch "parent value" des Signals "adin" gesteuert.
  • Der Multiplexer 138 erhält an seinen Eingängen die Werte "tree" und "packet" von "adin" und erzeugt am Ausgang "tree" von "adout".
  • Der Multiplexer 139 erhält an seinen Eingängen "level" und "level + 1" ("level + 1" wird mit Hilfe eines Transkoders 142 erhalten) von "adin" und erzeugt an seinem Ausgang den "level" von "adout".
  • Der Multiplexer 140 erhält an seinen Eingängen "packet" von "adin" und "node" von der Maske aus und erzeugt an seinem Ausgang den "packet" von "adout".
  • Der Multiplexer 141 erhält an seinen Eingängen den "node" von "adin" und den "node" der Maske und erzeugt an seinem Ausgang den "node" von "adout".
  • Die Schaltung 131 errechnet die Adressen der acht neuen Obel auf folgende Weise: die Schaltung 134 errechnet den Wert "node state" des Knotens im alten Overlay. In allen Fällen wird dieser "node state" der neue "parent value" von "adout" (direkte Verbindung, ohne Multiplexer zu passieren, zwischen "node state" und "parent value" von "adout") . Wenn "node state" partiell ist (Wert "P"), werden die Multiplexer 138 bis 140 so gesteuert, daß ihre zweiten (mit "P" markierten) Eingänge aktiviert sind, was folgendes ergibt (wobei die neuen Werte die von "adout" und die alten Werte die von "adin" sind):
  • neuer "tree" = alter "packet".
  • neuer "level = alter "level + 1".
  • neuer "packet" = abgefragter node.
  • Wenn "node state" nicht partiell ist, ergibt sich:
  • neuer "tree" = alter "tree".
  • neuer "level" = alter "level".
  • neuer "packet" = alter "packet".
  • Wenn der alte "parent value" partiell ist, wird der Multiplexer 141 so gesteuert, daß sich ergibt:
  • neuer "node" = abgefragter "node".
  • und im entgegengesetzten Fall wird der Multiplexer 141 so gesteuert, daß man erhält:
  • neuer "node" = alter "node".
  • Bei Ankunft eines vom Sequenzer 68 gesendeten Steuersignals "assemble" registriert jede Schaltung 125 die neue auf diese Weise errechnete Adresse im Adressenstapelspeicher 132 in der Ebene "level + 1". Nach jeder Assemblierung validiert eine automatische Phase im Overlay die Obel, deren Vater nicht partiell ist. Die acht Werte der "parent value" sind vernetzt, um über einen durch die Variable "auto" gesteuerten Multiplexer 128 an den Eingang der acht Schaltungen 125.0 bis 125.7 angelegt zu werden.
  • Die in Fig. 24 detailliert dargestellte Schaltung 134 besitzt acht Register 143.0 bis 143.7, die jeweils die acht Knoten eines Obel speichern, so daß sie zusammen einen Overlay von acht Obel speichern. Jede (einen Knoten speichernde) "Zelle" jedes der Register 143.0 bis 143.7 ist mit dem Ausgang eines Multiplexers verbunden. Die Gruppen von acht solchen Multiplexern, die einem Register entsprechen, sind jeweils mit 144.0 bis 144.7 bezeichnet. Bei jedem der Register 143.0 bis 143.7 ist der erste Eingang jedes der entsprechenden acht Multipiexer mit zwei der sechzehn Drähte des Ausgang des Multiplexers 128 (Signal "node-packet") verbunden, und der zweite Eingang jedes dieser Multiplexer ist mit den beiden selben Drähten (bei ein und demselben Register) des Ausgang des Multiplexers 128 verbunden, an denen der Wert "parent value" erscheint. Alle Multiplexer werden durch das (vom Sequenzer 68 erzeugte) Signal "auto" gesteuert, das ihre beiden Eingänge validiert, wenn es wahr ist. Die acht Ausgänge der Register 143.0 bis 143.7 sind mit dem Multiplexer 135 verbunden (vgl. Fig. 22).
  • Jedem der Register 143.0 bis 143.7 ist eine Validierungskombinierschaltung 145.0 bis 145.7 zugeordnet. Die Eingänge jeder dieser kombinierschaltungen sind mit der vom Multiplexer 128 kommenden Leitung "parent value", mit der Steuerung "auto" und mit einem entsprechenden Ausgang einer Dekodierschaltung 146 "3 zu 8" verbunden, die durch ein vom Sequenzer 68 erzeugtes Signal "Schreiben" validiert wird. Der Eingang der Schaltung 146 ist mit dem 3-Zustände-Bus "obus" verbunden. Die (im Fall der Invalidierung aktivierten) Ausgänge der Schaltungen 145.0 bis 145.7 sind mit einem Multiplexer 147 verbunden, der durch den Wert "Obel" gesteuert wird. Der Ausgang des Multiplexers 147 ist mit einem ersten Eingang eines UND-Gatters 148 verbunden, dessen zweiter Eingang mit dem Sequenzer 68 verbunden ist, der ihm je nach dem Zustand, in dem er sich befindet, eines der Signale "getn", "Bbox" oder "assemble" liefert. Am Ausgang des Gatters 148 erhält man das Signal "request", was der Prioritätszuteilungsschaltung 129 (vgl. Fig. 21) zugeleitet wird.
  • Jede Schaltung 125 kann (von der "Geometrie"-Schaltung 72, die Teil des geometrischen Prozessors 30 bildet) eine Adresse ("obel", "node") im laufenden Overlay empfangen. Wenn eine der Schaltungen 134 auf den Maskenspeicher zugreifen muß, um einen Wert zu erfahren, erzeugt sie am UND-Ausgang 148 ein Signal "request". Je nach der Rangstufe der Schaltung 125, die das Signal "getn" empfängt, können nun zwei verschiedene Prozesse ablaufen:
  • - wenn die Schaltung 125.0 die Steuerung "getn" empfängt, sendet sie den Wert "node state" der Schaltung 69 ("test peint"), sobald das von der Prioiritätszuteilungsschaltung 129 erzeugte Signal "norequest" gültig ist, d.h., sobald keine Prioritätsanforderung zu dieser Schaltung 129 gelangt.
  • - wenn die Schaltung 125.7 die Steuerung "getn" empfängt, sendet sie den Wert "node state" der Bilderzeugungsschaltung 70, sobald das Signal "norequest" gültig ist.
  • Wenn jede der Schaltungen 125.0 bis 125.7 ein Signal "Bbox" (am zweiten Eingang des "UND" 148) empfängt, sendet, sobald einer von ihnen einen von "E" abweichenden "node state" erkennt (d.h. gleich "P" oder "F"), seine Schaltung 134 über das "OU" 130 dem Sequenzer 68 eine wahre Variable "bpass", was bedeutet, daß der "Bbox"-Test gut ist. Wenn jedoch alle Variablen "bpass" der acht Schaltungen 125 falsch sind, wenn das Signal "norequest" gültig ist, so bedeutet dies, daß der "Bbox"-Test nicht gut ist.
  • Sobald eine der Schaltungen 125 der Schaltung 129 ein Signal "request" sendet, d.h. sobald in einer der Schaltungen 134 eine der Schaltungen 145 ihren Ausgang validiert, wählt die Schaltung 129 (vgl. Fig. 21) die Schaltung 125 aus, die zu bedienen ist, indem das entsprechende Signal "ack" validiert wird (die Schaltung 129 kann auf jede an sich bekannte Weise so ausgeführt sein, daß sie die priorität zuteilt, wenn mehrere gleichzeitige Anforderungen vorliegen, daß unmittelbar die Priorität einem einzigen Anforderer zugeteilt wird und daß die Variable "norequest" wahr gemacht wird, solange keine Anforderung gesendet wird). Die betreffende Schaltung 125 positioniert nun ihre Variable "obel" über ihr Gatter 137 mit drei Zuständen auf dem Bus "obus" mit drei Zuständen, der die auf dem Octree-Bus über den Multiplexer 127 zu sendende Adresse auswählt. Wenn der Maskenspeicher die entsprechenden Daten als Antwort auf diese Adresse sendet, wird die Variable "node packet" in einem der Register 143.0 bis 143.7 validiert, das der auf "obus" vorhandenen Information entspricht, und zwar in allen Schaltungen 125.0 bis 125.7. Schließlich unterdrückt die betreffende Schaltung 125 ihr Signal "request".
  • Fig. 25 zeigt ein Funktionsschema der Schaltung 70 zur Bilderzeugung. Die Schaltung 70 besitzt eine Schaltung 149 "Sichtbarkeit-Aktion" (vgl. Fig. 26), eine Schaltung 150 zur Berechnung der Schattierung (vgl. Fig. 27A und 27B), eine Schaltung 151 zur Resultatberechnung (vgl. Fig. 28), eine Schaltung 152 zum Schreiben des Bildpuffers 153 (vgl. Fig.29) und eine Wahlschaltung 154, die über einen Bildspeicher und ein geeignetes Interface mit der Bildröhre (nicht dargestellt) verbunden ist.
  • Wenn die Schaltung 69 "test peint" entschieden hat, daß die Imel zu malen sind, sendet sie dem Sequenzer 68 ein Signal "paint". Der Sequenzer 68 läßt nun der Schaltung 149 über die Schaltung 71 den entsprechenden Wert des "node state" zusenden. Um den der Schaltung 153 zu sendenden, zu malenden Wert zu bestimmen, führen die Schaltungen 149 bis 152 die folgenden Funktionen aus: Lesen der Eigenschaft des zu malenden Knoten im Octree-Speicher (wenn die Eigenschaft eine Dichte ist, entscheiden die Schaltungen, ob sie festgehalten werden muß), Bestimmung der Natur der zu malenden Information (Schattierung oder Dichte) in Abhängigkeit von dem Wert des Knotens, den Eigenschaften des Objekts, der Stellung des Objekts auf den verschiedenen Schnittebenen und der Dichteschwellenbildung, dann berechnen diese Schaltungen gegebenenfalls die Schattierung und kumulieren die Resultate im Pufferspeicher 153 an der Adresse des zu malenden Pixel.
  • Die Schaltung 149 besitzt, wie in Fig. 26 gezeigt ist, einen Dichtetranskodierungsspeicher 155, der die Eigenschaft "Dichte" empfängt ("dn" im vorliegenden Fall auf 12 Bit). Auf den Speicher 155 folgt ein Speicher 156 zur Sichtbarkeitsbestimmung, auf den seinerseits eine logische Schaltung 157 zur Erzeugung von Steuervorgängen folgt.
  • Der Speicher 155 gestattet die Wahl der festzuhaltenden Dichten in Abhängigkeit von den vier möglichen Werten der Knoten (im vorliegenden Beispiel "E", "P", "F" und "F1").
  • Der Akttionsentscheidungsspeicher 157 entscheidet auf folgende Weise das Malen jedes Pixel: wenn "dv" und "sv" Null sind, findet ein Abbruch der Aktion des Malens des Pixels statt und die Schaltung 70 sendet dem Sequenzer 68 die Bestätigung seiner "Aktion", ohne tatsächlich gemalt zu haben. Wenn "dv" wahr ist, wird die Dichte gemalt. Wenn "sv" wahr ist, wird die Schattierung gemalt. Wenn gleichzeitig "dv" und "sv" wahr sind, wird die Kombination der Dichte und der Schattierung gemalt. Diese Entscheidungen gestatten es, das zu malende Objekt mit Hilfe der Identifikationsbits "id" (die Teil der Eigenschaften bilden und im vorliegenden Beispiel in einer Anzahl von vier vorgesehen sind) auszuwählen, auf einer Schnittebene in Dichte und an anderer Stelle in Schattierung zu malen, nur die Knoten mit einem gewissen Wert zu malen, usw....
  • Die Schaltung 156 erzeugt ferner Informationen "cl", die die Wahl einer zu malenden Farbe gestatten (im vorliegenden Beispiel Information auf 2 Bit).
  • Fig. 27A zeigt das Schema der Schaltung 150 zur Berechnung der Schattierung. Die Schaltung 150 besitzt eine Schaltung 158, "get tn" genannt, zur Berechnung der Senkrechten auf eine Fläche und wird im nachstehenden ausführlich unter Bezugnahme auf Fig. 27B beschrieben. Die Schaltung 158 empfängt eine Dichteinformation "dn" (die einen Teil der Eigenschaften bildet) und erzeugt am Ausgang eine Information "tn" der Senkrechten zu einer Fläche, die zu einem Multiplexer 159 gesendet wird, der an seinem anderen Eingang eine Information "sn" (die ebenfalls Teil der Eigenschaften bildet) empfängt.
  • Der Multiplexer 159 wird durch das von der Schaltung 157 erzeugte Signal "in tn" / "in sn" gesteuert, um den Berechnungsmodus der senkrechten auszuwählen: "in sn" bewirkt die Wahl des Werts der senkrechten, der im Objekt-Octree vorberechnet ist und durch den Wert von "sn" gegeben ist; "in tn" bewirkt die Wahl des Werts "tn", der in der Schaltung 158 ausgehend vom Wert der Dichte errechnet wird.
  • Der Ausgang des Multiplexers 159 ist mit einem Transkodierungsspeicher 160 verbunden, der die Normalisierung der von ihm empfangenen Werte gestattet. Seine drei Ausgänge, die den drei Koordinatenachsen entsprechen, sind mit Multiplizierschaltungen 161 bis 163 verbunden, die andererseits mit drei Speichern 164 verbunden sind, die ihnen den Wert (Lx, Ly, Lz) der Richtung des Lichts, das das beobachtete Objekt beleuchtet, liefert, der imk Koordinatensystem des Objekts ausgedrückt ist. Die Ausgänge der drei Multiplizierschaltungen 161 bis 163 sind mit einem Addierer 165 verbunden, auf den ein Transkodierungsspeicher 166 folgt. Die Multiplizierschaltungen 161 bis 163 errechnen das Skalarprodukt des Werts der Senkrechten und der Richtung des Lichts, und der Speicher 166 führt eine Korrektur durch, die die Anpassung des vom Addierer 165 gelieferten Resultats gestattet, beispielsweise um den absoluten Wert des Skalarprodukts zu erhalten, um auf an sich bekannte Weise die Qualität der Lichtwiedergabe zu verbessern.
  • Der Ausgang des Speichers 166 ist mit einem ersten Eingang eines Multiplexers 167 verbunden, dessen anderer Eingang mit dem Ausgang eines speichers 168 verbunden ist, der einen vorberechneten Schattierungswert liefert, der von dem Multiplexer 167 ausgewählt wird, wenn das zu malende Pixel auf einer Schnittebene liegt (Variable "cint" nicht Null).
  • Die Schaltung 158, die detailliert in Fig. 27B dargestellt ist, besitzt einen Multiplexer 169, von dem ein Eingang das Dichtesignal "dn" empfängt und dessen anderer Eingang mit einem Speicher 170 verbunden ist, der abgerundet einen vorberechneten Dichtewert für jeden Wert E, P, F, F1 der Knoten liefert, die nicht die Eigenschaft "Dichte" im Octree haben. Der Multiplexer 179 wird durch die vom Steuerorgan 176 gelieferte Variable "m-prop" gesteuert.
  • Der Ausgang des Multiplexers 169 ist mit einem Eingang eines Substrahierers 170A verbunden, dessen anderer Eingang mit dem Ausgang eines Multiplexers 171 verbunden ist. Der Ausgang des Substrahierers 170A ist mit den Eingängen von drei Registern 172 bis 174 verbunden, denen jeweilig die drei Komponenten x, y und z der Knoten der Overlays zugewiesen sind. Die Ausgänge der Register 172 bis 174 sind mit einem Schieberegister 175 verbunden. Bei dem vorliegenden Ausführungsbeispiel sind die Ausgänge der Register 172 bis 174 auf 12 Bit und die Schaltung 175 führt deren gesamte Normalisierung auf 8 Bit durch. Die Validierungssignaleingänge der Register 172 bis 174 sind mit einer Steuerschaltung 176 verbunden, die ferner den Multiplexer 171 steuert. Die Steuerschaltung 176 erzeugt das Signal "get prop" und tauscht mit der Schaltung 71 die Werte ("obel", "node") aus.
  • Die Schaltung 158 errechnet eine senkrechte im Koordinatensystem des laufenden Overlays, indem sechs Punkte um den laufenden Knoten (xo, yo, zo) herum abgetastet werden und von diesen drei Differenzen durchgeführt werden. Wenn man den Standort eines Knoten des Overlays durch drei Komponenten x, y, z von 0 bis 3 bestimmt, werden die drei Differenzen für diese Komponenten folgendermaßen berechnet: bei der Achse Ox, indem man diff(x) die Komponente der Differenz der Dichten in der Achse Ox nennt:
  • - bei xo=1 oder 2: diff(x) = (Dichte (xo+1)-Dichte (xo-1))/2
  • - bei xo=0: diff(x) = Dichte (1)-Dicht (0)
  • - bei xo=3: diff(x) = Dichte (3) - Dichte (2).
  • Auf dieselbe Weise geht man bei diff(y) und diff(z) vor. Jeder abzutastende Punkt (x,y,z) im Overlay wird direkt in ("obel", "node") kodiert.
  • Die Ergebnisberechnungsschaltung 151 besitzt einen Dämpfungstranskodierungsspeicher 177, der den Wert der zu projizierenden Dichte "dn" korrigiert (der beispielsweise im Fall der Radiographiesynthese erforderlich ist) und dessen Ausgang mit einem Eingang eines Multiplexers 178 verbunden ist, dessen anderer Eingang den Wert von "om" (Schattierung) erhält und der durch den von der Schaltung 157 kommenden Wert "dn sha" gesteuert ist. Die Schaltung 151 besitzt ferner einen anderen Transkodierungsspeicher 179, der den Wert "target z", das signifikanteste Bit der Variablen "c num", empfängt und durch die (von 157 erzeugte) Variable "dep c" gesteuert ist. Dieser Traanskodierungsspeicher 179 ist mit einem Eingang eines Multiplexers 180 verbunden, der an seinem anderen Eingang den Wert "om" empfängt und durch das von der Schaltung 157 kommende Signal "sha dep" gesteuert ist. Die Ausgänge der Multiplexer 178, 180 sind mit einem Multiplizierer 181 verbunden, dessen Ausgangssignal "rz" genannt wird und zur Schaltung 152 gesendet wird. Der Speicher 179 gestattet die Berechnung eines tiefen Koeffizienten entweder für die Dichte (von 177 kommend) oder für die Schattierung.
  • In Abhängigkeit von den Werten von "dv" und "sv", die der Schaltung 157 zugeführt werden und die Steuersignale "sha dep" und "dn sha" erzeugen, ist der Wert "rz" am Ausgang des Muitiplizierers 181:
  • - entweder das Produkt aus korrigierter Dichte und Tiefenkoeffizient,
  • - oder das Produkt aus Schattierung und Tiefenkoeffizient
  • - oder das produkt aus Dichte und Schattierung.
  • Dem Bildpuffer 153 ist eine Schreibschaltung 152 mit einem Addierer 182 zugeordnet, der mit dem Ausgang der Schaltung 151 (Signal "rz") und mit einem Ausgang (auf 24 Bit) des Puffers 53 verbunden ist. Der Ausgang des Addierers 182 ist mit einem Eingang eines Multiplexers 184 verbunden, dessen beide anderen Eingänge die Eigenschaft "ad" und die Adressen "target x", "target y", "target z" sowie "c num" empfangen. Der Multiplexer 184 wird durch einen der Steuerparameter "msg", "mad" oder "mpo" gesteuert. Wenn "msg" wahr ist (Summierungsmodus), enthalten die im Puffer 153 gespeicherten 24 Bit mit niedrigen Stellenwerten jedes Pixel das Ergebnis der Summe der Signale "rz" und die acht Bit mit hohen stellenwerten enthalten das Ergebnis der Verkettung der Signale "cl".
  • Wenn "mad" wahr ist (Adreßmodus), enthalten die 32 Bit jedes pixel die Adresse des projizierten Obel im Octree-Speicher, ausgedrückt durch ("Knotennummer im Paket", "Paketnummer im Block", "Adresse des Blocks").
  • Wenn "mpo" wahr ist (Positionsmodus), enthalten die 32 Bit jedes Pixel die Koordinaten ("target z", "target y", "target x") des projizierten obels (drei Felder von 10 Bit).
  • Der Puffer 153 ist durch "target x", "target y" und die beiden Bit mit niedrigen Stellenwerten von "c num" (mit "c-num(o)" und "c-num(1)" bezeichnet) adressiert.
  • Im laufenden Betriebsmodus ist "msg" wahr und der geometrische Prozessor kumuliert das errechnete Ergebnis im Puffer 153 an der Adresse "target x", "target y". Unter den laufenden Bedingungen kumuliert der Prozessor also vier Ergebnisse an derselben Adresse, was einem "antialiasing"-Effekt (Glättung) auf dem Bild bewirkt. Es ist möglich, diesen Antialiasing-Effekt zu unterdrücken, indem das Ergebnis an der Adresse ("target x": "c-num(o)") , ("target y" :-"c-num(1)") geschrieben wird, die der Adresse des gemalten Pixel in der folgenden Ebene ("level + 1") entspricht.
  • Wenn man die Maskierung der durch den quad-tree projizierten Obel inaktiviert, erhält man im Puffer 153 das kumulierte Bild aller Projektionen des Objekts in der betreffenden Richtung.
  • Die 12 signifikantesten Bits (auf dem gesamten Bild) werden am Ende der Erzeugung des Bilds dem (mit dem Ausgang von 154 verbundenen) Bildvisualisierungssystem zugeleitet.
  • Die ausgewählten Farben werden beispielsweise auf 8 Bit im Puffer 153 zusammengestellt. Zwei resultierende Bit werden am Ende der Bilderzeugung dem Bildvisualisierungssystem gesendet.
  • Im Fall der Betriebsmoden "mad" und "mpo" werden die 32 Bit des Puffers 153 einem Verarbeitungssystem gesendet, um beispielsweise 3D-Meß- oder Ortungsfunktionen zu erzeugen.
  • Die oben beschriebenen Schaltungen gestatten die Durchführung einer großen Anzahl von Anwendungen dank der Kombinationen der verschiedenen Arten der Erzeugung eines Bildes und der positionierung des Objekts, die mit den einzelnen Betriebsmoden des geometrischen Prozessors und insbesondere mit dem Speicher 156 (Fig. 26) erreicht werden.
  • Die drei hauptsächlichen Betriebsmoden des geometrischen Prozessors sind: Adreßmodus, Positionsmodus und Summiermodus. Außerdem kann man im Summiermodus den transparenten Modus und den nicht-transparenten Modus unterscheiden.
  • - Adreßmodus (Variable "mad" wahr). In diesem Modus ist das erzeugte Bild eine Matrix von absoluten Adressen im Octree- Speicher der Obel des Octrees des gelesenen Objekts. Diese Adressen sind in folgender Form beschrieben: ("absolute Adresse des Vaterknotenpakets in dem Block, zu dem der betrachtete Knoten gehört", "Paketnummer in diesem Block", "Knotennummer in diesem Paket"). Durch Anpeilen eines Pixels des Schirms ist es möglich, den Standort eines Obel im Octree-Speicher zu bestimmen, um beispielsweise seine Merkmale zu ändern.
  • - Positionsmodus (Variable "mpo" wahr). In diesem Modus ist das erzeugte Bild eine Matrix von Stellungen (x,y,z) in der Objektmarkierung der gesehenen Obel. Durch Anpeilung des Schirms ist es möglich, Messungen eines Objekts im Raum vorzunehmen.
  • - Summiermodus (Variable "msg" wahr). Dies ist der Standardbetriebsmodus des Prozessors. Man kann bei ihm zwei Untermoden unterscheiden:
  • - nicht-transparenter Modus: jedes gemalte Pixel markiert den quad-tree-Speicher, was die Wirkung hat, daß die nicht gesehenen Teile des Objekts maskiert werden (die Obel werden von vorne nach hinten erfaßt).
  • - transparenter Modus: die gemalten Pixel ändern den quad-tree-Speicher nicht. Hierbei ist es also der Anfangszustand des quad-tree-Speichers, der die Möglichkeit, die Pixel zu malen oder nicht, steuert. Insbesondere erhält man, wenn der quad-tree vollständig Null ist, die laufende Summe der in der Richtung der Projektion (auf dem Bildschirm) gesehenen Bilder.
  • Zusätzlich zu diesen Moden, ist, wenn Visualisierungen in Schattierungen programmiert sind, dem Prozessor anzugeben, ob die Schattierung "im Flug" ausgehend von der Dichte berechnet werden soll oder ob die vorberechnete Schattierung zu verwenden ist.
  • Nun sei die Initialisierung des Prozessors und unter Bezugnahme auf Fig. 30 die Initialisierung des Maskenspeichers beschrieben.
  • Die Initialisierung des Prozessors muß bestimmen: die ersten Ebenen der Maske bis zum Vaterknoten des Octree im Octree- Speicher, die Zustandsregister des geometrischen Prozessors in der Ebene 0 ("target center" und Adresse des Overlay in der Ebene 0 im Maskenspeicher) und die geometrischen Betriebsparameter: "child offset", "Bbox offset" und "cut offset" (Offset von D' in Fig. 10).
  • Der Betriebsmodus des geometrischen Prozessors erfordert die Lösung von zwei Problemen zur Durchführung der Initialisierung: die Koordinaten eines Punkts des Ziels im Objekt- Koordinatensystem ausdrücken und den Anfangs-Overlay zu definieren, so daß das Ziel die Regeln der Einschließung in den Overlay respektiert.
  • Betrachten wir nun das Objekt, wie es im Octree-Speicher definiert und bezüglich des Ziels positioniert ist. x,y,z seien die Koordinaten eines Punkts des Ziels im Ziel-Bezugssystem. X, Y, Z seien die Koordinaten desselben Punkts im Objekt-Bezugssystem. Solange die Regel der Einschließung nicht eingehalten ist, können die Werte X,Y,Z das Intervall (0,7FFFh) verlassen. Ox, Oy und Oz seien die Koordinaten des Nullpunkts des Objektbezugssystems im Ziel. R sei die Drehung und h die Homothetie, die das Objekt aus der Anfangsstellung heraus erfährt, die es einnimmt, wenn es mit dem Ziel zusammenfällt. Hierbei erhält man:
  • Die folgenden Schritte dienen dazu, die Einschließungsregeln einzuhalten.
  • - Erster Schritt: Hinzufügung von zwei Ebenen. Man definiert in diesem ersten Schritt einen solchen Overlay, daß der Anfangs-Overlay, der unteilbar ist, und durch das Vater-Knotenpaket des gespeicherten Octrees dargestellt ist, eines der 64 Obel des neuen Overlays wird, wobei alle anderen Obel leer sind.
  • Die Ebene 0 wird geformt von 7 leeren Obel, und ein Obel Nummer "obel", dessen Sohn mit der Nummer "node" das Vater- Knotenpaket des Octrees im Octree-Speicher ist.
  • Die Adresse ("obel", "node") ist so bestimmt, daß der Mittelpunkt des Ziels ("target center") so nahe wie möglich am Mittelpunkt des neuen Overlay ist.
  • Man nimmt also an jeder der Koordinaten X, Y und Z alle definierten Punkte im Overlay folgende Transformationen vor:
  • - wenn "target center" kleiner oder gleich -4000h ist,
  • "obel" = 1
  • "node" = 1
  • X = X/4 + 6000h
  • - wenn "target center" größer oder gleich -3FFFh und kleiner oder gleich 3FFFh ist, erhält man
  • "obel" = 1
  • "node" = 1
  • X = X/4 + 4000h
  • - wenn "target center" größer oder gleich 4000h und kleiner oder gleich BFFFh ist, erhält man
  • "obel" = 0
  • "node" = 1
  • X = X/4 + 2000h
  • - und wenn "target center" größer oder gleich C000h ist, erhält man
  • "obel" = 0
  • "node" = 0
  • X = X/4.
  • Zweiter Schritt: Hinzufügung einer Ebene, solange das Ziel nicht im Overlay eingeschlossen ist. Wenn die Einschließungsregeln in dieser Ebene nicht bestätigt sind, entweder weil ein Teil des Ziels außerhalb des Overlays liegt oder weil das Ziel zu groß ist, fügt man dem Overlay konzentrisch eine Ebene hinzu. Solange die Einschließungsregel nicht bestätigt ist, führt man die Transformation aus:
  • X = X/2 + 2000h
  • Von mehreren möglichen Lösungen zur Initialisierung des Maskenspeichers wird im nachstehenden unter Bezugnahme auf Fig. 30 eine beschrieben. Diese Lösung gestattet die Auffindung einer sich wiederholenden Initialisierungsstruktur unabhängig von der Anzahl hinzugefügter Ebenen. Im Beispiel der Fig. 30 ist vorausgesetzt, daß das Vater-Knotenpaket in dem ersten Schritt im Obel Nummer "obel" und im Knoten Nummer "node" positioniert wurde.
  • Der erste Schritt initialisiert zwei Ebenen, und jeder folgende Schritt initialisiert nun eine zusätzliche Ebene.
  • Die Ebene 1 des Vater-Knotenpakets des Octrees im Octree- Speicher ist also gleich 1, wenn nur der erste Schritt ausgeführt wird, und wird bei jedem anschließend durchgeführten zweiten Schritt mit 1 inkrementiert.
  • Die bis zur Ebene 1 eingeschriebenen Informationen müssen validiert werden und die absolute Adresse des Sohns des Vater-Knotenpakets im Maskierspeicher der Adressen muß geändert werden. Nach diesem Schritt ist der Overlay des geometrischen Prozessors zu initialisieren, so daß der Obel Nummer "obel" einen partiellen Vater hat und die Maskenadresse ("tree" = "7-obel", "packet" = "7-obel" im Beispiel von Fig. 30) des es beschreibenden Blocks kennt.

Claims (7)

1. Verfahren zur dreidimensionalen Darstellung von in Octreeform (C0, C6, C00 und C11) digital codierten Objekten (2 und 3), wobei der Octree in einem Octreespeicher gemäß einer Baumstruktur (4, 5, 7', 7" und 8) gespeichert ist, die bei jedem Niveau durch Teilung durch zwei bei jeder Achse der Koordinate Ox, Oy und Oz der Dimension des Objektuniversums oder dessen Unterobjektuniversen erhalten wird, wobei das Objektuniversum ein Würfel (1) ist, das alle darzustellende Information enthält, dadurch gekennzeichnet, daß ausgehend vorn Objektuniversum man nur den Nutzteil eines anderen Ziel-Octree in einem Zieluniversum erzeugt, wobei das Zieluniversum ein Hexaeder ist, dessen Koordinatenachse Ox' und Oy' eine Ebene bilden, die zu einem Darstellungsbildschirm (14) parallel liegt.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ausgehend von dem anderen "Octree" man ein "Zieluniversum" (12) bildet, das zur Gänze im "Overlay" (11) des Objekts eingeschlossen ist, wobei das "Overlay" eine Zusammenstellung von acht das "Obel" des Objekts umfassenden, einen Quader bildenden "Obel" ist, wobei diese "Obel" nicht unbedingt am "Vater" im "Octree" des Ursprungs teilnehmen, und wobei das Zieluniversum so geartet ist, daß die durch seine Achsen ("Ox und Oy") gebildete Ebene zur Ebene des Schirmes parallel liegt.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß, um festzustellen ob ein Obel des Ziel-Octree ein Bogen-Octree (wenn es im letzten Niveau des Ziel-Octree ist) oder nicht, man einen Test durchführt, bei dem man die Werte von acht Ecken eines Quaders mißt, dessen Seiten zu den Achse des Overlay des Objekts parallel sind und dessen Kanten sich durch die Spitzen des Ziel-Octree erstrecken, wobei der Wert des Ziel-Octree "leer" ist, wenn die Maßstabwerte des Overlay an den acht Ecken des Quaders "leer" oder im anderen Fall "unvollständig" sind, vorausgesetzt, daß der Quaderschnitt in allen Dimensionen dem Schnitt der Obel des Overlay nicht übersteigt.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß, um eine geometrische Relation zwischen den Overlay des Objekts und dem Ziel- Octree aufzustellen, man gleichzeitig die Bahnen der Overlay im Objekt und die Bahn im Ziel-Octree kontrolliert, so daß die dort vorhandenen Niveaus in jedem Zeitpunkt identisch sind und bei jedem Niveau das Ziel- Obel zur Gänze im Objekt-Overlay enthalten ist.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß die Auswahl des Overlay eines Sohn-Obel ausgehend von der Lage seines Mittelpunktes im Overlay durchgeführt wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß für die Auswahl des Overlay das Overlay gewählt wird, dessen Mittelpunkt dem Sohn-Obel am nächsten liegt.
7. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 6 zur Darstellung von Schnitten von Objekten gemäß einer Schnittebene, dadurch gekennzeichnet, daß für die Entscheidung, ob ein Sohn des laufenden Ziel-Obel ganz an der einen oder der anderen Seite der Ebene des Schnittes, man die Entfernung der Ecken der des Sohn-Ziel-Obel in der Schnittebene bei der Entfernung der Ecke ihres Vater-Obel, das am weitesten entfernt von dieser Schnittebene liegt, erfaßt, und zwar in einem Halbraum, der durch diese darzustellende Eben begrenzt ist (Figur 10).
8, Verfahren nach einem der vorhergehenden Ansprüche 1 bis 7, dadurch gekennzeichnet, daß das Ziel-Octree abgefahren wird, wobei denjenigen Obel das Vorrecht gewährt wird, die dem Darstellungsbildschirm am nächsten liegen.
DE8888403179T 1987-12-24 1988-12-14 Verfahren zur dreidimensionalen anzeige von digitalen achtaestigen kodierten objekten. Expired - Lifetime DE3872203T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR8718151A FR2625345A1 (fr) 1987-12-24 1987-12-24 Procede de visualisation en trois dimensions d'objets codes numeriquement sous forme arborescente et dispositif de mise en oeuvre

Publications (2)

Publication Number Publication Date
DE3872203D1 DE3872203D1 (de) 1992-07-23
DE3872203T2 true DE3872203T2 (de) 1992-12-10

Family

ID=9358303

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8888403179T Expired - Lifetime DE3872203T2 (de) 1987-12-24 1988-12-14 Verfahren zur dreidimensionalen anzeige von digitalen achtaestigen kodierten objekten.

Country Status (6)

Country Link
US (1) US5123084A (de)
EP (1) EP0323302B1 (de)
JP (1) JP3252904B2 (de)
DE (1) DE3872203T2 (de)
ES (1) ES2033457T3 (de)
FR (1) FR2625345A1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2639449A1 (fr) * 1988-11-22 1990-05-25 Gen Electric Cgr Procede de projection et de representation d'un objet octree
US5295243A (en) * 1989-12-29 1994-03-15 Xerox Corporation Display of hierarchical three-dimensional structures with rotating substructures
US5185856A (en) * 1990-03-16 1993-02-09 Hewlett-Packard Company Arithmetic and logic processing unit for computer graphics system
US5414801A (en) * 1991-06-11 1995-05-09 Virtus Corporation Computerized method and apparatus using containment relationships to represent objects in a three-dimensional space, and for moving therethrough
US5345490A (en) * 1991-06-28 1994-09-06 General Electric Company Method and apparatus for converting computed tomography (CT) data into finite element models
JPH0554087A (ja) * 1991-08-23 1993-03-05 Fujitsu Ltd 図形処理方式
US6054991A (en) * 1991-12-02 2000-04-25 Texas Instruments Incorporated Method of modeling player position and movement in a virtual reality system
US5574835A (en) * 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5546529A (en) * 1994-07-28 1996-08-13 Xerox Corporation Method and apparatus for visualization of database search results
US5777622A (en) * 1996-01-05 1998-07-07 International Business Machines Corporation Method for identifying invisible objects ordered in a tree-like data structure by finding adjoining hidden objects
JP3138423B2 (ja) * 1996-02-20 2001-02-26 株式会社ナムコ シミュレーション装置
US6268862B1 (en) * 1996-03-08 2001-07-31 Canon Kabushiki Kaisha Three dimensional virtual space generation by fusing images
AUPO002196A0 (en) * 1996-05-22 1996-06-13 Canon Information Systems Research Australia Pty Ltd A method of optimising an expression tree for the production of images
US5999187A (en) * 1996-06-28 1999-12-07 Resolution Technologies, Inc. Fly-through computer aided design method and apparatus
JPH10247252A (ja) * 1997-03-04 1998-09-14 Sharp Corp 衝突判定処理装置
JP3654616B2 (ja) * 1997-12-19 2005-06-02 富士通株式会社 階層化ポリゴンデータ生成装置及び方法及び当該階層化ポリゴンデータを用いる三次元リアルタイム映像生成装置及び方法
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7375727B1 (en) 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
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
US6483518B1 (en) * 1999-08-06 2002-11-19 Mitsubishi Electric Research Laboratories, Inc. Representing a color gamut with a hierarchical distance field
US6603484B1 (en) * 1999-08-06 2003-08-05 Mitsubishi Electric Research Laboratories, Inc. Sculpting objects using detail-directed hierarchical distance fields
US6396492B1 (en) * 1999-08-06 2002-05-28 Mitsubishi Electric Research Laboratories, Inc Detail-directed hierarchical distance fields
US6444072B1 (en) * 1999-08-11 2002-09-03 Southpac Trust International Process for producing holographic material
CA2388710A1 (en) * 1999-10-18 2001-04-26 Bernd Froehlich Method for the real-time rendering of large volume data amounts
AU2001243443A1 (en) * 2000-03-09 2001-09-17 The Web Access, Inc. Method and apparatus for performing a research task by interchangeably utilizinga multitude of search methodologies
US20020060685A1 (en) * 2000-04-28 2002-05-23 Malcolm Handley Method, system, and computer program product for managing terrain rendering information
US6903737B2 (en) * 2001-01-23 2005-06-07 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing spread memory layout
KR100561837B1 (ko) * 2001-07-09 2006-03-16 삼성전자주식회사 삼차원 환경에서 이미지 기반의 랜더링의 정보를 표현하기위한 방법
US20030161505A1 (en) * 2002-02-12 2003-08-28 Lawrence Schrank System and method for biometric data capture and comparison
US8335779B2 (en) * 2002-08-16 2012-12-18 Gamroe Applications, Llc Method and apparatus for gathering, categorizing and parameterizing data
KR100513732B1 (ko) * 2002-12-05 2005-09-08 삼성전자주식회사 3차원 객체 데이터 부호화 및 복호화 방법 및 장치
US7301538B2 (en) * 2003-08-18 2007-11-27 Fovia, Inc. Method and system for adaptive direct volume rendering
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
JP4653538B2 (ja) * 2005-03-30 2011-03-16 富士通株式会社 3次元データ管理装置、3次元データ管理プログラム及び3次元データ管理方法
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
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
JP4650750B2 (ja) * 2005-12-16 2011-03-16 株式会社Ihi 三次元形状データの記憶・表示方法と装置および三次元形状の計測方法と装置
JP4650751B2 (ja) 2005-12-16 2011-03-16 株式会社Ihi 三次元形状データの位置合わせ方法と装置
US8121399B2 (en) 2005-12-16 2012-02-21 Ihi Corporation Self-position identifying method and device, and three-dimensional shape measuring method and device
JP6069923B2 (ja) * 2012-07-20 2017-02-01 セイコーエプソン株式会社 ロボットシステム、ロボット、ロボット制御装置
CN104781852B (zh) * 2012-09-21 2020-09-15 欧克里德私人有限公司 用于渲染三维场景的计算机绘图方法
US10663609B2 (en) * 2013-09-30 2020-05-26 Saudi Arabian Oil Company Combining multiple geophysical attributes using extended quantization
WO2018128424A1 (ko) 2017-01-04 2018-07-12 가이아쓰리디 주식회사 3차원 지리 정보 시스템 웹 서비스를 제공하는 방법
US11158124B2 (en) 2018-01-30 2021-10-26 Gaia3D, Inc. Method of providing 3D GIS web service
JP7399879B2 (ja) 2018-05-02 2023-12-18 クイッディエント・エルエルシー ほとんど無制限のディテールを有するシーンを処理するためのコーデック
US11507084B2 (en) * 2019-03-27 2022-11-22 Intel Corporation Collaborative 3-D environment map for computer-assisted or autonomous driving vehicles
WO2023172573A1 (en) 2022-03-07 2023-09-14 Quidient, Llc Systems and methods for generalized scene reconstruction

Family Cites Families (10)

* 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
SE430930B (sv) * 1979-04-09 1983-12-19 Scantronic Ab Informationstavla for bildande av tecken sasom siffror, bokstever, monster etc
US4345309A (en) * 1980-01-28 1982-08-17 Digital Equipment Corporation Relating to cached multiprocessor system with pipeline timing
NL8300872A (nl) * 1983-03-10 1984-10-01 Philips Nv Multiprocessor-rekenmachinesysteem voor het tot een gekleurde afbeelding verwerken van in een hierarchische datastruktuur gedefinieerde objekt-elementen.
US4694404A (en) * 1984-01-12 1987-09-15 Key Bank N.A. High-speed image generation of complex solid objects using octree encoding
JPH07104855B2 (ja) * 1985-03-28 1995-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 数値シミュレーション装置
US4737921A (en) * 1985-06-03 1988-04-12 Dynamic Digital Displays, Inc. Three dimensional medical image display system
US4729098A (en) * 1985-06-05 1988-03-01 General Electric Company System and method employing nonlinear interpolation for the display of surface structures contained within the interior region of a solid body
US4719585A (en) * 1985-08-28 1988-01-12 General Electric Company Dividing cubes system and method for the display of surface structures contained within the interior region of a solid body
US4791583A (en) * 1987-05-04 1988-12-13 Caterpillar Inc. Method for global blending of computer modeled solid objects using a convolution integral

Also Published As

Publication number Publication date
DE3872203D1 (de) 1992-07-23
FR2625345B1 (de) 1994-12-16
FR2625345A1 (fr) 1989-06-30
JPH01216490A (ja) 1989-08-30
ES2033457T3 (es) 1993-03-16
US5123084A (en) 1992-06-16
EP0323302B1 (de) 1992-06-17
EP0323302A1 (de) 1989-07-05
JP3252904B2 (ja) 2002-02-04

Similar Documents

Publication Publication Date Title
DE3872203T2 (de) Verfahren zur dreidimensionalen anzeige von digitalen achtaestigen kodierten objekten.
DE3889882T2 (de) Modellierungssystem für Festkörper.
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE69020780T2 (de) Vielfache Tiefenpuffer für Graphik und Festkörpermodellierung.
DE3688918T2 (de) System für geometrische Verarbeitung.
DE3889819T2 (de) 3D-Dimensionierung in rechnerunterstützter Zeichnung.
DE69312505T2 (de) Polygonaufrasterung
DE69534558T2 (de) Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache
DE69127650T2 (de) Verfahren und Gerät zur Erzeugung von dreidimensionalen graphischen Symbolen
DE69914355T2 (de) Bildverarbeitungsgerät
DE10239672B4 (de) Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE4303071A1 (de) Verfahren und Vorrichtung zur Randbewertung in einer Nicht-Mannigfaltigkeits-Umgebung
DE3608438A1 (de) Verfahren zum berechnen von freien gekruemmten flaechen mittels computergestuetztem design cad und computergestuetzter herstellung cam und numerischer steuerung nc
DE602004011749T2 (de) Umschlagsdeformation mittels unterteilten Oberflächen
DE112012002623T5 (de) Verfahren zum Simulieren der Bearbeitung von Objekten durch Bewegung eines Werkzeugs, und System und Computerprogrammprodukt für dieses
DE112012003243T5 (de) Systeme und Verfahren für die Erzeugung und Aktualisierung für 3D-Szenenbeschleunigungsstrukturen
DE112005000804T5 (de) Multi-Label-Bildsegmentierung mit GPU
DE102008050449A1 (de) Clipping Geometrien beim Raycasting
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102021114847A1 (de) Verbesserte techniken zum traversieren von strahlverfolgungs-beschleunigungsstrukturen
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
DE102007050615A1 (de) Brick-basierter Fusionsrenderer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee