DE3889882T2 - Modellierungssystem für Festkörper. - Google Patents
Modellierungssystem für Festkörper.Info
- Publication number
- DE3889882T2 DE3889882T2 DE3889882T DE3889882T DE3889882T2 DE 3889882 T2 DE3889882 T2 DE 3889882T2 DE 3889882 T DE3889882 T DE 3889882T DE 3889882 T DE3889882 T DE 3889882T DE 3889882 T2 DE3889882 T2 DE 3889882T2
- Authority
- DE
- Germany
- Prior art keywords
- logic
- primitives
- bitmap
- primitive
- solid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000007787 solid Substances 0.000 title claims description 77
- 230000014509 gene expression Effects 0.000 claims description 46
- 238000000034 method Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 19
- 239000000470 constituent Substances 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 16
- 238000000638 solvent extraction Methods 0.000 claims 3
- 230000000295 complement effect Effects 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 8
- 230000003252 repetitive effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 239000002131 composite material Substances 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
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 vorliegende Erfindung bezieht sich auf ein Modellierungssystem für Festkörper zur Erzeugung einer räumlichen Darstellung eines dreidimensionalen Festkörpers, in der redundante Teile einer Körperdefinition automatisch erkannt und eliminiert werden können.
- Körper können unter Verwendung verschiedener Verfahren in Modellierungssystemen für Festkörper dargestellt werden. Ein solches Verfahren, das zur Darstellung von Festkörpern geeignet ist, wird manchmal als "konstruktive Festkörpergeometrie" (CSG) bezeichnet. Gemäß diesem Verfahren wird ein dreidimensionaler (3-D) Festkörper durch eine funktionale Definition dargestellt, die die Punkte identifiziert, die innerhalb des Körpers liegen. Normalerweise wird der Körper durch eine Bool'sche Funktion definiert, die ein "wahr" angibt, wenn die Funktion auf einen Punkt innerhalb des Körpers angewandt wird, und ein "falsch" angibt, wenn dies nicht der Fall ist. Dieses Verfahren steht beispielsweise im Gegensatz zu Linienzeichnungsverfahren, bei denen die Kanten und Flächen eines Körpers und nicht sein Volumen definiert werden.
- Ein Beispiel für dieses Verfahren ist bekannt aus Proceedings of the IEEE, vol. 73, No. 1, Januar 1985, Seiten 30-44, New York, USA, A. Requicha et al, "Boolean operation in solid modelling: boundary evaluation and merging algorithms".
- Die funktionale Definition eines Körpers definiert auf wirksame Weise die Punkte, die den Körper bilden. Die funktionale Definition einer Kugel beispielsweise definiert die Punkte, die innerhalb eines gegebenen Radius um einen Mittelpunkt liegen. Zusammengesetzte Körper werden durch Kombination der funktionalen Definitionen der Grundfestkörper oder "Primitiven", das heißt, Kugeln, Halbebenen (die Fläche auf einer Seite einer unbegrenzten Ebene) und Halbzylindern definiert. Die funktionale Definition einer Hantel beispielsweise würde die funktionale Definition jeder der beiden Kugeln an unterschiedlichen Positionen, die funktionale Definition eines unbegrenzten Zylinders, dessen Achse die Kugelmittelpunkte durchläuft, und die funktionalen Definitionen zweier planarer Halbebenen, die den Zylinder an den Kugeln schneiden, umfassen, wobei die funktionalen Definitionen der Kugeln, des Zylinders und der planaren Halbebenen unter Verwendung eines logischen Ausdrucks, bestehend aus Einstelloperatoren wie beispielsweise die Einstelleinheit und die Schnittoperatoren (das heißt, unter Verwendung von Einstelltheorieprinzipien kombiniert würden. Die Ausdrücke können ebenfalls andere Kombinationsoperatoren wie beispielsweise Einstellsubtraktionsoperatoren enthalten, um beispielsweise einen zusammengesetzten Körper mit einem Ausschnitt oder einem Loch zu definieren. Auf diese Weise können hohle zusammengesetzte Körper durch Subtraktion eines kleineren Körpers von einem größeren definiert werden. Diese zusammengesetzten Körper sind nach der Definition in diesem Dokument noch immer "fest", da Punkte im Raum mit dem den Körper definierenden Ausdruck verglichen werden können, um festzustellen, ob diese innerhalb oder außerhalb des Körpers liegen.
- Ein aus Primitiven zusammengesetzter Körper ist normalerweise in Form einer Struktur definiert, die den logischen Ausdruck darstellt, der den Körper definiert und miteinander verbundene Knoten (beispielsweise eine Baumstruktur) umfaßt, wobei die Primitiven an den ersten Knoten (das heißt, Blätterknoten des Baums), definiert werden, Operatoren an den zweiten Knoten oder Zwischenknoten definiert werden, um die auszuführenden Kombinationsoperationen zu identifizieren, um den Körper aus den Primitiven und/oder Unterobjekten zu bilden, die in der Struktur an Knoten niedrigerer Ordnung definiert sind, und wobei der zusammengesetzte Körper an einem geeigneten Operatorknoten (beispielsweise der Wurzel des Baums) definiert wird.
- Nachdem ein Körper auf diese Weise definiert wurde, kann er ausgewertet werden, um das Innere und das Äußere und somit die Begrenzung des Festkörpers zu bestimmen. Dabei wird eine Darstellung des Körpers bezüglich des Raums (das heißt, eine räumliche Darstellung) erzeugt. Die räumliche Darstellung kann je nach Anwendung mehrere unterschiedliche Formen annehmen. Die räumliche Darstellung kann beispielsweise in Form eines Abbilds der Fläche oder der Kanten des Körpers vorliegen. Dies wird oft gewünscht, wenn das Modellierungssystem für Festkörper ein Grafiksystem bildet oder ein Bestandteil davon ist. Das Modellierungssystem für Festkörper kann aber auch ein Robotersteuersystem zur Modellierung eines Roboters und seiner Umgebung bilden und die Bewegung des Roboters steuern oder zur Steuerung einer Werkzeugbewegung bei der Herstellung eines Produkts verwendet werden. Die räumliche Darstellung kann jedoch auch zur Berechnung von Daten wie beispielsweise der Masseneigenschaften des Körpers verwendet werden.
- Ungeachtet der Einzelheiten der Form der räumlichen Darstellung und der beabsichtigten Verwendung wird der Fachmann auf diesem Gebiet auf die Tatsache hingewiesen, daß aufgrund der großen Anzahl einzelner Komponenten-Primitiven umfangreiche Berechnungen erforderlich sind, um eine CSG-Definition eines komplexen Körpers zu verarbeiten.
- In einigen Fällen werden redundante Primitive in einer CSG- Definition integriert. Eine Primitive gilt dann als redundant, wenn die CSG-Definition ohne diese Primitive neu geschrieben werden kann. Dies ist dann der Fall, wenn Erstellungsblöcke, die eine Gruppe von Primitiven umfassen (ein Würfel, der aus 6 planaren Halbebenen besteht) und nicht die Primitiven selbst, dazu verwendet werden, die Erzeugung einer CSG-Definition zu vereinfachen. Alternativ hierzu-oder zusätzlich können Primitive während der Auswertung eines Körpers redundant werden, wenn die Begrenzungen der Primitiven in einem Raumbereich (genannt Voxel), der in dem räumlichen Unterteilungsprozeß herangezogen wird, koextensiv sind. Beispielsweise wird ein stufenartiger Körper betrachtet, der aus zwei rechtwinkligen Blöcken unterschiedlicher Größe modelliert wird, die nebeneinander liegen, wobei eine Seite eines Blocks teilweise koextensiv mit einer anderen Seite des anderen Blocks ist; jeder Block wird durch sechs planare Halbebenen definiert. Obwohl die Halbebenen, die die Seiten der Blöcke definieren, anfänglich nicht redundant sind, schließen diese einander auf wirksame Weise dort aus, wo die Seiten der Würfel koextensiv sind; daher sind sie redundant, wenn der Körper lediglich in diesem Bereich betrachtet wird.
- Umfangreiche unnötige Verarbeitungen werden herkömmlicherweise während der Auswertung eines CSG-Körpers durchgeführt, weil Primitiven, die entweder anfänglich redundant sind oder während der Verarbeitung der Definition redundant werden, nicht als solche erkannt werden.
- Das Ziel der vorliegenden Erfindung ist ein Modellierungssystem für Festkörper, das Mittel zur Erzeugung einer räumlichen Darstellung eines Körpers erzeugt, der durch Primitive der Festkörpergeometrie definiert ist, die durch einen logischen Ausdruck kombiniert werden, der eine oder mehrere logische Kombinationsoperatoren umfaßt, wodurch redundante Primitive automatisch erkannt werden können.
- Gemäß der vorliegenden Erfindung wird ein Modellierungssystem für Festkörper bereitgestellt, das Mittel zur Erzeugung einer räumlichen Darstellung eines Körpers umfaßt, der unter Verwendung der Festkörpergeometrie für Primitive definiert wird, die durch einen logischen Ausdruck kombiniert sind, der einen oder mehrere logische Kombinationsoperatoren umfaßt, wobei das Modellierungssystem für Festkörper Festkörper-Definitionsmittel umfaßt, die eine Struktur enthalten, die aus einer Mehrzahl an miteinander verknüpften Knoten besteht, die Primitivenknoten für die Primitiven und Operatorenknoten für die Operatoren enthalten, wobei die erste Logik zum Durchlaufen mindestens eines Teils der Knoten und zur Erzeugung eines Bitmap zur Darstellung des logischen Ausdrucks oder eines Teils davon dient, der an den Operatorknoten definiert wird, die während des Durchlaufens angetroffen werden, und eine zweite Logik zum Durchsuchen des Bitmap nach logischen Redundanzen dient, wodurch redundante geometrische Primitive angezeigt werden.
- In einem speziellen Ausführungsbeispiel eines Modellierungssystems für Festkörper gemäß der vorliegenden Erfindung, die nachfolgend beschrieben wird, ist jedes Bit im Bitmap für einen Bestandteil der Primitiven repräsentativ, wobei ein Bestandteil definiert ist als das Volumen, das durch die Überschneidung der Primitiven oder ihrer Komplemente gebildet wird, und, um die Redundanz einer Primitiven u zu prüfen, sucht die zweite Logik nach einer Äquivalenz der entsprechenden u-wahr und u-falsch-Bestandteile im Bitmap.
- Die erste Logik erzeugt zusätzlich eine Tabelle mit Zeigern zu den Primitiven, die während des Durchlaufens angetroffen werden, und die zweite Logik löscht aus der Tabelle einen Zeiger auf die Primitive, die als redundant betrachtet wird. Die dritte Logik wird vorzugsweise zum Ersetzen der Knoten, die durch die erste Logik durchlaufen werden, durch einen Knoten aus der Tabelle mit einzelnen wahr-Knoten bereitgestellt, die das geänderte Bitmap umfaßt, das durch die zweite Logik erzeugt wird, und Zeiger auf Knoten, die die übrigen Primitiven definieren.
- Das spezielle Ausführungsbeispiel eines Modellierungssystems für Festkörper gemäß der vorliegenden Erfindung, die an späterer Stelle beschrieben wird, umfaßt zusätzlich Definitionsmittel des großen Raums zur Definition des Raums, in dem der Körper existiert, außerdem eine Logik zur räumlichen Unterteilung, die den großen Raum in immer kleiner werdende Raumbereiche (oder Voxels) aufteilt, bis Voxels vorhanden sind, für die die räumliche Darstellung gegeben werden kann, des weiteren eine Festkörper-Vereinfachungslogik zur Vereinfachung der Struktur, die den Körper innerhalb eines Voxels definiert, das durch das räumliche Unterteilungsmittel erzeugt wurde, außerdem eine Zähllogik zur Zählung der Anzahl der in der Struktur verbleibenden Primitiven, oder einen Teil einer vereinfachten Struktur, wie sie durch das Festkörper-Vereinfachungsmittel erzeugt wurde, und, wenn weniger als eine vorbestimmte Anzahl an Primitiven vorhanden sind, für das Veranlassen der ersten und zweiten Logik zur Verarbeitung der genannten Verarbeitungsstruktur.
- In diesem Beispiel umfaßt die Festkörper-Vereinfachungslogik eine Logik zur Vereinfachung eines Bitmap, das von der ersten Logik innerhalb eines Voxels erzeugt wird, das durch das räumliche Unterteilungsmittel erzeugt wurde.
- Außerdem kann ein Modellierungssystem für Festkörper gemäß der obigen Beschreibung zusätzlich eine Logik zur Verarbeitung eines Relevanzbilds umfassen, das die geometrische Information zur Anzeige, wenn Bits aus dem Bitmap als irrelevant für die Definition des Körpers innerhalb dieses Voxels (beispielsweise, wenn die betreffenden Bestandteile als leer innerhalb des Voxels) erkannt werden, umfaßt.
- Es folgt ein spezielles Beispiel eines Modellierungssystems für Festkörper, wobei auf die folgenden begleitenden Zeichnungen Bezug genommen wird:
- Fig. 1A und 1B sind eine Schrägansicht bzw. eine Querschnittansicht eines Festkörpers zur Darstellung der CSG- Prinzipien; beide sind in der bisherigen Technologie bekannt und werden in der vorliegenden Erfindung angewandt;
- Fig. 2 ist ein schematisches Diagramm einer Struktur zur Darstellung des in den Fig. 1A und 1B gemäß den CSG-Prinzipien dargestellten Festkörpers;
- Fig. 3 ist ein Flußdiagramm, das eine Übersicht über die Arbeitsweise der Logik zur Vereinfachung der in Fig. 2 abgebildeten Struktur gibt;
- Fig. 4 ist ein schematisches Diagramm der Struktur in Fig. 2, wenn diese durch die Logik, die wie in Fig. 3 dargestellt arbeitet, vereinfacht wird;
- Fig. 5 ist ein Flußdiagramm, das eine Übersicht über die Arbeitsweise der Steuerlogik in einem Modellierungssystem für Festkörper gemäß der vorliegenden Erfindung gibt.
- Fig. 6 ist ein Flußdiagramm, das eine Übersicht über die Arbeitsweise der Logik zur Erzeugung eines Bitmap gibt, das das Verhältnis zwischen den Primitiven in der Struktur gemäß der Abbildung in Fig. 4 angibt;
- Fig. 7 ist ein Venn-Diagramm, das zur Erläuterung der Arbeitsweise der vorliegenden Erfindung dient; und
- Fig. 8 ist ein schematisches Diagramm eines speziellen Ausführungsbeispiels eines Teils der in Fig. 5 dargestellten Logik.
- Vor einer ausführlichen Beschreibung der vorliegenden Erfindung ist es möglicherweise nützlich, die Prinzipien der v konstruktiven Festkörpergeometrie (CSG) zur Auswertung einer funktionalen Definition eines Festkörpers unter Bezugnahme auf die Fig. 1A, 1B, 2, 3 und 4 zu beschreiben.
- Allgemein gesehen ist die Auswertung eines Festkörpermodells ein Prozeß zur Bestimmung des Inneren und des Äußeren und somit der Begrenzungen des Festkörpers.
- Fig. 1A ist eine Darstellung eines stufenweisen Festkörpers 10, der innerhalb eines Raumbereichs dargestellt ist, der durch einen Würfel 20 definiert ist. Fig. 1B stellt eine Darstellung dieses Festkörpers in Form zweier sich berührender Blöcke 12 und 14 dar, die im Querschnitt rechtwinklig zur Z- Achse gezeigt werden. Beide Blöcke haben dieselbe Tiefe von einer Ebene an Z1 zu einer Ebene an Z2, wobei der Querschnitt durch eine Ebene parallel zu den Ebenen an Z1 und Z2 ist. Der erste Block 12 wird mittels einer logischen Kombination aus sechs planaren Halbebenen X1, X2, Y1, Y3, Z1 und Z2 definiert, und der zweite Block 14 wird mittels einer logischen Kombination aus sechs planaren Halbebenen -X2, X3, Y1, Y2, Z1 und Z2 definiert. Die Pfeile in Fig. 1B zeigen an, welche Seiten der in der Figur (die Linien stellen in Wirklichkeit seitlich gesehene Ebenen dar) dargestellten Linien fest sind. Die Ebenen, auf die oben Bezug genommen wurde, und die auch im folgenden beschrieben werden, bilden die Begrenzungen planarer Halbebenen.
- Auf herkömmliche Weise ist der logische Ausdruck, der diese Halbebenen (d. h. die Primitiven) kombiniert, gemäß den CSG- Prinzipien durch eine Struktur wie der in Fig. 2 dargestellten definiert. Die baumförmige Struktur 30, die in Fig. 2 abgebildet ist, wird aus miteinander verknüpften Knoten verschiedener Arten gebildet.
- Die Zwischenknoten oder Operatorknoten 32-43 umfassen herkömmlicherweise ein erstes Feld (32A), das einen logischen Operator definiert, und ein oder mehrere weitere Felder, die Zeiger enthalten. Wie aus der Darstellung in Fig. 2 hervorgeht, definiert ein zweites Feld (32B) einen ersten Zeiger P1 zu einem weiteren Knoten, und ein drittes Feld (32C), falls vorhanden, definiert einen zweiten Zeiger P2 zu einem weiteren Knoten. Die Operatoren umfassen herkömmlicherweise die Bool'schen Operatoren "UNION", "DIFFERENCE", "INTERSECT", "SYMMETRIC DIFFERENCE" und "COMPLEMENT"; es können jedoch auch andere Operatoren verwendet werden. Ein Operatorknoten umfaßt ein einzelnes Zeigerfeld, wenn es sich beim Operator um einen "COMPLEMENT"-Operator (Knoten 43) handelt, ansonsten umfaßt er zwei Zeigerfelder. In Fig. 2 stehen die Buchstaben "U", "I" und "C" für "UNION"-, "INTERSECT"- und "COMPLEMENT"-Operatoren.
- Die Blattknoten oder Primitivenknoten 44-51 definieren die Primitiven, die den Körper bilden. Jeder der Blattknoten umfaßt mindestens ein erstes Feld (44A), das den Ausdruck enthält, der die Primitive definiert, ein zweites Feld (44B) zur Kennzeichnung, und ein drittes Feld (44C), das Ergebnisfeld. Im Fall einer komplexen Primitive kann das erste Feld groß sein, um die Definition dieser Primitiven aufnehmen zu können. Das zweite und das dritte Feld werden von der Vereinfachungslogik verwendet, die an späterer Stelle beschrieben wird. In einem speziellen Ausführungsbeispiel der vorliegenden Erfindung, das an späterer Stelle beschrieben wird, umfassen die Blätterknoten außerdem mindestens ein weiteres Feld, wie dies an späterer Stelle in der Beschreibung dieses Ausführungsbeispiels erläutert wird. Der Knoten 31 ist ein Zeiger, der vom Benutzerprogramm an die Steuerlogik geliefert wird und zum ersten Zwischenknoten 32, oder Wurzelknoten, zeigt.
- Um eine unnötige Duplikation zu vermeiden und um die Verarbeitung eines CSG-Ausdrucks zu vereinfachen, kann auf einen Blattknoten durch mehr als einen der Zwischenknoten gezeigt werden, wenn die Primitive in mehreren Unterobjekten auftaucht, die an diesen Zwischenknoten definiert sind. Wird zu Beginn ein Baum erzeugt, in dem möglicherweise doppelte Primitivknoten vorhanden sind, kann die Duplikation automatisch ausgeschaltet werden, indem ein Baum durchlaufen wird und dabei nach identischen oder komplementären Primitiven gesucht wird. Werden identische Primitive entdeckt, dann kann einer der Primitivknoten ignoriert und ein Zeiger in jeden der entsprechenden Zwischenknoten gesetzt werden, der auf den zurückbehaltenen Primitivknoten zeigt. Dies ist beispielsweise für die am Blattknoten 45 definierte Primitive der Fall, auf den durch die Zwischenknoten 37 und 43 gezeigt wird. Werden zusätzliche Primitive entdeckt, so kann dasselbe getan werden, außer daß ein COMPLEMENT-Knoten in die Struktur an einer geeigneten Position eingefügt werden muß, wie dies der Fall am COMPLEMENT-Knoten 43 ist.
- Sobald ein Körper in einem CSG-System definiert wurde, ist es erforderlich, diesen Körper auszuwerten, um eine Darstellung des Körpers bezüglich des Raums (d. h. eine räumliche Darstellung dieses Körpers) zu erzeugen. Die räumliche Darstellung kann je nach CSG-Anwendung unterschiedliche Formen annehmen. Beispielsweise könnte die räumliche Darstellung in Form eines Abbilds der Fläche oder der Kanten des Körpers vorhanden sein, wenn das CSG-System einen Bestandteil eines Grafiksystems bildet. Dieses Abbild könnte in jeder herkömmlichen Weise auf einem Anzeigebildschirm, einem Drucker etc. dargestellt werden. Die räumliche Darstellung könnte aber auch Bestandteil eines Robotermodells von sich selbst und seiner Umgebung bilden, wenn das CSG-System im Robotik-Steuersystem integriert ist. Nachfolgend wird die Erzeugung einer räumlichen Darstellung in Form eines Gitterrahmenbilds für die Anzeige mit einem Anzeigebildschirm, einem Drucker etc., beschrieben; es wird jedoch darauf hingewiesen, daß die vorliegende Erfindung nicht auf die Erzeugung und/oder Wiedergabe von Gitterrahmenbildern beschränkt ist.
- Allgemein ausgedrückt umfaßt der Prozeß der Auswertung einer CSG-Darstellung eines Körpers die Unterteilung eines Raumbereichs, in dem der Körper existiert (der Bereich 20), in immer kleiner werdende Unterbereiche (die acht Unterbereiche 21-28, die in Fig. 1A dargestellt sind) und die Bestimmung des Verhältnisses zwischen der Festkörperdefinition und nachfolgenden Unterbereichen, bis das Verhältnis zwischen der CSG- Darstellung und dem Raumbereich bis auf eine elementare Ebene ausgewertet wurde, wodurch die räumliche Verteilung des Festkörpers bestimmt werden kann. Das Modellierungssystem für Festkörper umfaßt einen Speicher für eine Definition des großen Raums, in dem der Festkörper existiert, und die Unterteilungslogik, die für den Unterteilungsprozeß verantwortlich ist. Das Modellierungssystem für Festkörper enthält außerdem eine Steuerlogik zur Steuerung des Ablaufs der Unterteilung sowie andere Logik im System.
- Wie dies in Fig. 1A dargestellt ist, besteht der erste Schritt der Unterteilung des kastenartigen Raumbereichs 20 darin, diesen in acht Unterbereiche 21, 22, 23, 24, 25, 26, 27 und 28 aufzuteilen. Danach wird jeder dieser Unterbereiche in acht weitere Unterbereiche unterteilt, usw. Es wird darauf hingewiesen, daß die Unterteilung in einer sich wiederholenden Art erfolgt. Ein Unterbereich wird dann nicht mehr weiter unterteilt, wenn festgestellt wird, daß der Unterbereich entweder voll oder leer ist, oder daß der Teil des Festkörpers innerhalb dieses Unterbereichs direkt wiedergegeben (reproduziert) werden kann, wie dies nachfolgend beschrieben wird. Der Fachmann auf diesem Gebiet sei darauf hingewiesen, daß auch andere Unterteilungsalgorithmen möglich sind.
- Während jedes Schritts des Unterteilungsprozesses wird die Struktur, die den Festkörper darstellt, innerhalb des Raumunterbereichs (nachfolgend als Voxel bezeichnet), der betrachtet wird, überprüft und vereinfacht. Der Vereinfachungsprozeß wird durch eine Vereinfachungslogik während jedes Schritts in dem sich wiederholenden Unterteilungsprozeß ausgeführt und ist selbst ein sich wiederholender Prozeß. In anderen Worten, die Vereinfachungslogik verarbeitet die Struktur, die den Festkörper definiert, für ein gegebenes Voxel, in dem das Verhältnis zwischen diesem Voxel und den in der Struktur identifizierten
- Primitiven getestet und die Struktur, wo möglich, vereinfacht wird.
- Die Vereinfachungslogik wird anhand eines Flußdiagramms, das in Fig. 3 dargestellt ist, veranschaulicht. Die Vereinfachungslogik wird durch die Steuerlogik des Modellierungssystems für Festkörper aufgerufen, um den CSG-Ausdruck für ein neues Voxel zu vereinfachen. Die Steuerlogik gibt die Inhalte des Zeigers 31 (des Zeigers zum Wurzelknoten 32) als einen Eingabeparameter an die Vereinfachungslogik weiter. Nach Beendigung der Vereinfachungsaufgabe für dieses Voxel leitet die Vereinfachungslogik einen Zeiger zum ersten gültigen Knoten des vereinfachten Baums zur Steuerlogik zurück. Normalerweise ist der erste gültige Knoten der Wurzelknoten 32.
- Nach Empfang der Steuerung (an 54) überprüft die Vereinfachungslogik (an 55), ob der Knoten, auf den gezeigt wird, ein Blattknoten ist oder nicht. Wie nachfolgend beschrieben gilt, daß, wenn der Knoten ein Blattknoten ist, geometrische Tests ausgeführt werden, während im anderen Fall logische Tests ausgeführt werden.
- Wenn an 55 eingerichtet ist, daß der Knoten, auf den gezeigt wird, ein Blattknoten ist, dann überprüft die Vereinfachungslogik (an 56), ob der Primitivenknoten bereits zuvor während des aktuellen Durchlaufens angelaufen wurde, indem überprüft wird, ob eine Vereinfachungskennzeichnung im Vereinfachungsfeld des Primitivknotens eingestellt wurde. Wurde die Kennzeichnung nicht eingestellt, dann stellt die Vereinfachungslogik (an 57) die Kennzeichnung unter Verwendung einer Nummer, der sogenannten "Besucherkarte", ein, wodurch das Verhältnis zwischen dem Ausdruck für die Primitive an diesem Knoten und der Ausdruck für das aktuelle Voxel, das von der Unterteilungslogik geliefert wird, gekennzeichnet wird, und speichert das Ergebnis dieser Bestimmung im Ergebnisfeld des Primitivknotens. Das Ergebnis ist dabei eines der folgenden: EMPTY, FULL oder OTHER. Die oben genannte Vereinfachungskennzeichnung ist eine einzelne Zahl zu jedem Durchlaufen der Struktur durch die Vereinfachungslogik, wodurch die Erfordernis zur Neueinstellung aller Kennzeichnungsfelder zu Beginn jedes Durchlaufens vermieden wird.
- Dann wird an 58 das im Ergebnisfeld durch dieses oder ein vorheriges Anlaufen des Primitivknotens durch SL innerhalb dieses Voxels gespeicherte Ergebnis dazu verwendet, um die durch diesen Aufruf der Vereinfachungslogik bereitzustellende Information zu bestimmen. Wenn sich die Primitive und das Voxel nicht überschneiden, dann wird das Ergebnis EMPTY als das Ergebnis gespeichert, da die Definition für das Voxel durch den Wert EMPTY ohne weiteres ersetzt werden kann. Folglich wird in diesem Fall ein Zeiger zu einem Knoten (Knoten 52 in Fig. 2), der diese Definition enthält, durch die Vereinfachungslogik bereitgestellt. Wenn die Primitive vollständig das Voxel enthält, dann wurde das Ergebnis FULL als Ausdruck gespeichert, da das Voxel ohne weiteres durch den Wert FULL ausgetauscht werden kann. In diesem Fall wird daher ein Zeiger zu einem Knoten (Knoten 53 in Fig. 3), der diese Definition enthält, bereitgestellt. In allen anderen Fällen kann die Primitive nicht vereinfacht werden und das Ergebnis OTHER wird gespeichert. In solchen Fällen wird der Zeiger zum Primitivknoten selbst bereitgestellt.
- Wenn an 55 eingerichtet wurde, daß der Knoten, auf den gezeigt wurde, ein Operatorknoten ist, dann überprüft die Vereinfachungslogik (an 59), ob es sich beim Operator um einen "COMPLEMENT"-Operator handelt. Ist dies der Fall, greift die Vereinfachungslogik auf den Zeiger in diesem Knoten zum Knoten, der davon abhängig ist, und verwendet diesen Zeiger für einen sich wiederholenden Aufruf (an 60) der Vereinfachungslogik. Bei der Wiedergabe nach diesem sich wiederholenden Aufruf wird der Zeiger, der wiedergegeben wurde, an 61 von der Vereinfachungslogik überprüft. Steht der Zeiger auf der Definition FULL, dann wird ein Zeiger zur Definition EMPTY von der Vereinfachungslogik wiedergegeben. Wenn der Zeiger, der von dem sich wiederholenden Aufruf wiedergegeben wird, zur Definition EMPTY zeigt, dann wird ein Zeiger zur Definition
- FULL von der Vereinfachungslogik wiedergegeben, andernfalls wird der Zeiger zum aktuellen Knoten (dem für den aktellen Aufruf der Vereinfachungslogik) wiedergegeben.
- Enthält der Knoten keinen "COMPLEMENT"-Operator, führt die Vereinfachungslogik einen ersten sich wiederholenden Aufruf (an 62) der Vereinfachungslogik aus, indem der erste oder linke Zeiger zum ersten Knoten, der vom aktuellen Knoten abhängt, verwendet wird. Bei der Wiedergabe dieses ersten sich wiederholenden Aufrufs speichert die Vereinfachungslogik den bei diesem Aufruf wiedergegebenen Zeiger und führt danach einen zweiten sich wiederholenden Aufruf (an 63) der Vereinfachungslogik aus, indem der zweite oder rechte Zeiger zum zweiten Knoten, der vom aktuellen Knoten abhängig ist, verwendet wird. Bei der Wiedergabe des zweiten sich wiederholenden Aufrufs werden die durch diese Aufruf e wiedergegebenen Zeiger von der Vereinfachungslogik an 64 ausgewertet. Steht keiner der von den sich wiederholenden Aufrufen wiedergegebenen Zeiger auf der Definition FULL oder EMPTY, dann ist es nicht möglich, den Knoten zu vereinfachen, und folglich wird der Zeiger zum aktuellen Knoten von der Vereinfachungslogik wiedergegeben. Wenn einer der Zeiger auf der Definition FULL oder EMPTY steht, dann ist seine Vereinfachung möglich und ein anderer Zeiger als der für den aktuellen Knoten wird wiedergegeben. Die Vereinfachungen für die Operatoren UNION und INTERSECT werden beispielhaft in der nachfolgenden Tabelle 1 aufgeführt: Tabelle 1 1. ZEIGER 2. ZEIGER VEREINFACHG. WIEDERGEG. ZEIGER EMPTY UNION Ausdr. 2 →Ausdr. 2 erster Zeiger Ausdr.1 UNION EMPTY →Ausdr. 1 zweiter Zeiger FULL UNION Ausdr. 2 →FULL Zeiger auf FULL Ausdr.1 UNION FULL -→FULL Zeiger auf FULL - EMPTY INTERSECT Ausdr. 2 →EMPTY Zeiger auf EMPTY Ausdr. 1 INTERSECT leer →EMPTY Zeiger auf EMPTY FULL INTERSECT Ausdr. 2 →Ausdr. 2 zweiter Zeiger Ausdr. 1 INTERSECT FULL →Ausdr. 1 erster Zeiger
- In den obigen Beispielen ist Ausdruck 1 derjenige Ausdruck, der durch einen abhängigen Knoten dargestellt ist, auf den durch den ersten Zeiger gezeigt wird, und Ausdruck 2 ist derjenige Ausdruck, der durch einen abhängigen Knoten dargestellt wird, auf den durch den zweiten Zeiger des aktuellen Zeigers gezeigt wird.
- Es wird darauf hingewiesen, daß ein sich wiederholender Aufruf der Vereinfachungslogik zu noch tiefer liegenden, sich wiederholenden Aufrufen der Vereinfachungslogik führt, wenn der Zeiger, der als Eingabeparameter für den sich wiederholenden Aufruf gegeben wird, zu einem Operatorknoten zeigt. Wenn eine Vereinfachung an einem Operatorknoten möglich ist, bedeutet das, daß einige der weiteren Knoten im Baum umgangen werden können. Fig. 4 stellt den Baum dar, der daraus resultiert, wenn der stufenartige Körper zum Voxel 29, dargestellt in den Fig. 1A und 1B, ausgeästet wird. Es wird von der Annahme ausgegangen, daß die Ebene Z1 durch das Voxel läuft, daß sich jedoch das Voxel vollständig innerhalb der Halbebene Z2 befindet. Es wird des weiteren von der Annahme ausgegangen, daß die Primitiven X1, X3, Y2, Y3 und Z2, die nicht länger zum Bild beitragen, weil sie jeweils äquivalent zu "FULL" innerhalb des Voxels sind, und die Zwischenknoten 37 bis 42, die innerhalb des Voxels redundant sind, wurden aus dem Baum ausgeästet.
- Die Vereinfachung ist jedoch nicht überall gültig, ist aber zum ursprünglichen Körper innerhalb des in Betracht befindlichen Voxels äquivalent. Ist das Ergebnis des oben dargestellten Vereinfachungsprozesses gleich EMPTY, dann existiert der Körper oder Unterkörper, der durch den Knoten dargestellt wird, der durch den aktuellen Aufruf der Vereinfachungslogik ausgewertet wird, nicht innerhalb des in Betracht befindlichen Voxels, und folglich leistet dieses Voxel keinen Beitrag zum erzeugten Gitterrahmenbild. In ähnlicher Weise gilt, daß, wenn das Ergebnis der Auswertung gleich "FULL" ist, dieses Voxel nicht zum Bild beiträgt, da es vollständig vom Körper besetzt ist.
- Mit der Zeit wird eine geringere Begrenzung der Voxel-Größen erreicht. Vereinfacht heißt das, ein Stoppunkt ist, wenn der CSG-Ausdruck einfach genug innerhalb eines beliebigen Voxels ist, um die räumliche Darstellung (eine Gitterrahmen-Wiedergabe auf einer Anzeigeeinrichtung) durch herkömmliche Mittel zu erzeugen, wie beispielsweise beschrieben im Artikel von J. R. Woodwark mit dem Titel "Generating Wire Frames from Set- Theoretic Solid Models by Spacial Division", der 1986 in der Juli/August-Ausgabe von Computer Aided Design (Vol. 18, Nummer 6) veröffentlicht wurde. Es wird darauf hingewiesen, daß die benötigte Unterteilungsstufe zur Ermöglichung der räumlichen Darstellung (d. h. einer Gitterrahmenzeichnung), die erzeugt werden soll, je nach der örtlichen Komplexität des Körpers an verschiedenen Stellen im Raum variiert.
- Wie oben jedoch bereits angeführt wurde, ist es selbst bei dem oben beschriebenen Vereinfachungsprozeß möglich, daß die Definition des Körpers Primitive enthält, die von Anfang an redundant sind, oder die zu einem bestimmten Zeitpunkt im Unterteilungsprozeß innerhalb des Voxels redundant, was zur Folge hat, daß unnötige Verarbeitungen durchgeführt werden.
- Betrachten wir den Effekt einer Ausästung des stufenartigen Körpers zum Voxel 29, dargestellt in den Fig. 1A und 1B, wo das Voxel 29 in der Halbebene Z2 enthalten ist, jedoch die Ebene von Z1 schneidet.
- Die vereinfachte Struktur zur Darstellung des Teils des stufenartigen Körpers innerhalb des Voxels 29 wird in Fig. 4 dargestellt. Dem Fachmann auf diesem Gebiet ist es möglich, durch Überprüfung dieser Struktur zu erkennen, daß der hierdurch dargestellte Ausdruck äquivalent ist zu Y1 INTERSECT Z1, und daß X2 redundant ist. Obwohl dies im Fall der in Fig. 4 dargestellten Struktur relativ einfach erscheint, ist die durch die Vereinfachungslogik erzeugte Struktur im allgemeinen komplizierter. Außerdem ist diese Art der Operation normalerweise nur sehr schwer auf einem Computer zu automatisieren. Frühere Modellierungssysteme für Festkörper haben solche redundanten Primitiven verarbeitet und haben folglich viel Zeit für unnötige Verarbeitungen verschwendet. Außerdem war es erforderlich, viele Vor- und Nachverarbeitungen auszuführen, um falsche Ergebnisse zu vermeiden, und beispielsweise um zu vermeiden, daß Gitterrahmenbilder eines Körpers mit unnötigen Linien bedeckt sind.
- Das Ziel der vorliegenden Erfindung besteht darin, ein Modellierungssystem für Festkörper bereitzustellen, das automatisch und auf einfache Weise solche Redundanzen erkennen kann. Dies wird durch die Bereitstellung einer Logik zusätzlich zur Vereinfachungslogik von Fig. 3 zur Verarbeitung der Struktur, die den Körper innerhalb eines Voxels definiert, erzielt. Eine Übersicht über die Logik zur Verarbeitung der Struktur in einem besonderen Ausführungsbeispiel eines Modellierungssystems für Festkörper gemäß der vorliegenden Erfindung wird in Fig. 5 gezeigt.
- Gemäß der Operation der Vereinfachungslogik (SL) durchläuft die Primitivzähllogik (PCL) die vereinfachte Struktur 305, die aus der Operation der Vereinfachungslogik hervorging, und zählt die angetroffenen Primitiven. Zur Vermeidung einer doppelten Zählung einer Primitiven, wo diese mehr als einmal in der Struktur auftaucht, überprüft die Primitivzähllogik, ob jeder Primitivknoten während des aktuellen Durchlaufs bereits angelaufen wurde, indem geprüft wird, ob eine "gezählte" Kennzeichnung im Kennzeichenfeld des Primitivknotens gesetzt wurde. Wurde diese Kennzeichnung nicht gesetzt, dann speichert die Primitivzähllogik ihre eigene einmalige Besucherkarte im Kennzeichnungsfeld als eine "gezählte" Kennzeichnung und inkrementiert die Zählung der Primitiven. Die "gezählte" Kennzeichnung wird so ausgewählt, daß sie eine Zahl ist, die im PCL einmalig ist, so daß sie von den SL Besucherkarten unterschieden werden kann, wobei das Kennzeichnungsfeld vom PCL und vom SL verwendet wird.
- Wenn die Primitivzähllogik ihren Durchlauf abgeschlossen hat, und wenn die Anzahl der Primitiven an 65 weniger als eine vorbestimmte Zahl ist, dann ruft die Steuerlogik die Bitmap- Erzeugungslogik (BGL), die in Form eines Flußdiagramms in Fig. 6 dargestellt ist, auf, um die Struktur zu durchlaufen, und um das logische Verhältnis zwischen den übrigen Primitiven in der vereinfachten Struktur herzustellen. Die Bitmap-Erzeugungslogik hat Zugriff auf eine Tabelle von Konstanten 66, die Binärwörter enthält, die anfängliche Werte zur Verarbeitung der Struktur darstellen, auf einen Stapel 67 für die vorübergehende Speicherung von Zwischenwerten während der Verarbeitung und auf eine Ergebnistabelle 68 zur Speicherung von Zeigern auf Primitive, die während dieser Verarbeitung angetroffen werden. Die anfänglichen Werte, die in der Konstantentabelle gespeichert sind, sind abhängig von mehreren Faktoren, unter anderem von der Anzahl der Primitiven, die von der BGL verarbeitet wird. Sollen beispielsweise drei Primitive verarbeitet werden, so kann es sich bei den anfänglichen Werten um die Binärwörter 00001111, 00110011 und 01010101 handeln, wie dies nachfolgend beschrieben wird.
- Die Bitmap-Erzeugungslogik empfängt als Eingabeparameter an 70 einen Knotenzeiger auf einen Knoten der vereinfachten Struktur, einen Stapelzeiger für den Zugriff auf den Stapel und eine Zählung der Anzahl an Primitiven, die während des Durchlaufens der Struktur gefunden werden. Diese gibt den Stapelzeiger und die Primitivenzählung als Parameter wieder. Wenn die Steuerlogik die Bitmap-Erzeugungslogik aufruft, dann initialisiert sie den Stapelzeiger, setzt den Knotenzeiger auf den obersten Knoten der Struktur oder des zu durchlaufenden Teils, und setzt die Primitivenzählung auf Null.
- Wenn die Steuerung von der Bitmap-Erzeugungslogik an 70 empfangen wird, dann wird die Form des Knotens, auf den durch den Knotenzeiger gezeigt wird, an 71f, 71e, 71p und 71c eingerichtet, und die Verarbeitung unterschiedlicher Knotentypen wird fortgeführt, wie dies in Fig. 6 angezeigt wird, um das logische Verhältnis zwischen den Primitiven in der Struktur einzurichten.
- Im besonderen Ausführungsbeispiel eines Modellierungssystems für Festkörper gemäß der vorliegenden Erfindung, die hier beschrieben wird, umfassen die Primitivknoten in der Struktur, die den Körper darstellen, ein Feld zusätzlich zur Primitivendefinition und Zeigerfelder, die in bezug auf Fig. 2 beschrieben werden, nämlich ein Primitivanzahlfeld. Der Zweck dieses Feldes wird an späterer Stelle erläutert.
- Wenn der Knoten, auf den gezeigt wird, FULL darstellt (wenn die Antwort an 71f ja ist), wird der Stapelzeiger inkrementiert, und ein Binärwort, das alle Einsen umfaßt, wird an 72 auf den Stapel geladen, und die Steuerung wird an 82 wiedergegeben. Wenn der Knoten, auf den gezeigt wird, EMPTY darstellt (wenn die Antwort an 71e ja ist), dann wird der Stapelzeiger inkrementiert, und ein Binärwort, das alle Nullen umfaßt, wird an 73 auf den Stapel geladen, und die Steuerung wird an 82 wiedergegeben. In der Praxis müssen am Ende der SL-Verarbeitung innerhalb eines Voxels alle FULL- und EMPTY-Knoten aus dieser Struktur entfernt worden sein. Folglich sollten diese logischen Pfade nicht verwendet werden.
- Wenn der Knoten, auf den gezeigt wird, eine Primitive darstellt (wenn die Antwort an 71p ja ist), dann testet die Bitmap-Erzeugungslogik an 74, ob der Primitivenknoten zuvor während des aktuellen Durchlaufens angelaufen wurde, indem überprüft wird, ob eine Bitmap-Erzeugungslogik-Kennzeichnung im Kennzeichnungsfeld im Primitivenknoten eingestellt wurde. Wurde diese Kennzeichnung nicht eingestellt, dann stellt die Logik an 75 die Kennzeichnung unter Verwendung einer BGL-Besucherkarte ein, inkrementiert die Zählung der angetroffenen Primitiven, speichert die Zählung im Primitivanzahlfeld des Primitivknotens und speichert einen Zeiger zu diesem Knoten in der Ergebnistabelle. Dann wird an 76, unabhängig davon, ob dies der erste "Besuch" ist, der Stapelzeiger inkrementiert und die Anzahl dadurch im Primitivanzahlfeld in diesem Knoten gespeichert, oder aber es wird ein vorheriges Antreffen verwendet, um ein Binärwort aus der Konstantentabelle auszuwählen; dieses Binärwort wird an der Stelle, auf die durch den Stapelzeiger gezeigt wird, zum Stapel hinzuaddiert. Die Steuerung wird dann an 82 mit dem aktuellen Stapelzeiger und der Primitivenzählung wiedergegeben.
- Wenn der Knoten einen Komplementoperator definiert (wenn die Antwort an 71c ja ist), dann wird der Zeiger in diesem Knoten zum Knoten, der davon abhängig ist, ausgewählt, und diese Auswahl wird mit dem aktuellen Stapelzeiger und der aktuellen Zählung der Primitiven, die angetroffen wurden, als Eingabeparameter für einen sich wiederholenden Aufruf an 77 der Bitmap- Erzeugungslogik verwendet. Bei der Wiedergabe des sich wiederholenden Aufrufs wird das Wort am oberen Ende des Stapels herausgeholt, und jedes Bit im ausgelesenen Wort wird an 78 invertiert. Das resultierende Komplement wird dann an der Stelle, auf die durch den Stapelzeiger, ebenfalls an 78, gezeigt wird, zurück in den Stapel geladen, und die Steuerung wird an 82 mit dem aktuellen Stapelzeiger und der Primitivenzählung wiedergegeben.
- Wenn der Knoten einen logischen Operator definiert, der nicht ein Komplementoperator ist (wenn die Antwort an 71c nein ist), dann vollzieht die Bitmap-Erzeugungslogik einen ersten sich wiederholenden Aufruf der Vereinfachungslogik an 79, wobei der erste oder linke Zeiger zum ersten Knoten verwendet wird, abhängig vom aktuellen Knoten, und der aktuelle Stapelzeiger und die aktuelle Zählung der Primitiven, die angetroffen wurden, werden als Eingabeparameter verwendet, und bei der Wiedergabe wird an 80 ein zweiter sich wiederholender Aufruf der Bitmap-Erzeugungslogik unter Verwendung des zweiten oder rechten Zeigers zum zweiten Knoten verwendet, der davon abhängig ist, und der aktuelle Stapelzeiger und die Zählung der Primitiven, die angetroffen wurden, werden als Eingabeparameter verwendet. Es wird darauf hingewiesen, daß die Werte des Stapelzeigers sich ändern, und die Zählung der Primitiven kann zwischen dem ersten und zweiten Aufruf, die bereits angeführt wurden, unterschiedlich sein.
- Nach der Wiedergabe vom zweiten sich wiederholenden Aufruf wird das Wort am oberen Ende des Stapels herausgeholt, der Stapelzeiger wird dekrementiert, das Wort am jetzigen oberen Ende des Stapels wird ebenfalls herausgeholt, und eine logische Operation wird an diesen beiden Wörtern an 81 durchgeführt. Die ausgeführte logische Operation wird durch den logischen Operator festgelegt, der am aktuellen Knoten definiert ist. Ist der Operator beispielsweise ein INTERSECT- Operator, dann werden die beiden Wörter einer logischen UND- Operation unterzogen. Das Ergebnis der logischen Operation wird zurück auf das obere Ende des Stapels geladen. Die Steuerung wird dann mit dem aktuellen Stapelzeiger und der Primitivenzählung an 82 wiedergegeben.
- Nachdem die Struktur durchlaufen wurde, enthält der Stapel ein einzelnes binäres Wort, das den logischen Ausdruck oder den darin definierten Teil an den Operatorknoten, der während des Durchlaufens der Struktur angetroffen wurde, definiert. Um die beim Durchlaufen einer CSG-Struktur ausgeführten Operationen darzustellen, werden die Änderungen des Inhalts des Stapels während des Durchlaufens der Struktur, die in Fig. 4 dargestellt wird, nachfolgend in Tabelle 2 aufgeführt. Tabelle 2 AKTUELLER AUFRUF KNOTEN STAPEL-INHALTE EMPTY
- In Tabelle 2 geben die Zahlen in den Spalten AKTUELLER AUFRUF die Sequenznummer des Aufrufs oder der Wiedergabe (Antwort) auf einen Aufruf an, der in einem gegebenen Teil der Tabelle w dargestellt ist. Die Zahlen und Pfeile in der Spalte KNOTEN geben den Knoten in Fig. 4 an, von der die Operation, die in einem gegebenen Teil der Tabelle dargestellt ist, herrührt; die Angaben 1, 2 oder R in Klammern geben an, ob es sich um eine Operation handelt, die ein Aufruf unter Verwendung des ersten oder zweiten Zeigers ist, bzw. ob es sich um eine Wiedergabe (Antwort) auf einen vorherigen Aufruf handelt. Die Spalte STAPELINHALTE gibt den Inhalt des Stapels zu unterschiedlichen Phasen des Verfahrens an. Das Symbol '' in der Stapelspalte im Teil für eine gegebene Phase im Verfahren gibt an, daß keine Änderung der Stapelinhalte im Vergleich zur unmittelbar vorhergehenden Phase vorliegt.
- Es wird darauf hingewiesen, daß ein Stapel oder ein äquivalentes sich wiederholendes Speichermedium angesichts des sich wiederholenden Charakters des Verfahrens erforderlich ist. Im vorliegenden Fall ist die maximale Anzahl an Elementen auf dem Stapel zu jedem beliebigen Zeitpunkt gleich drei; diese Anzahl könnte jedoch wesentlich höher liegen, wenn die Struktur mehr und längere Zweige hätte. Wie an späterer Stelle beschrieben werden wird, kann die vorliegende Erfindung implementiert werden, indem ein Mehrzweck-Computer in geeigneter Weise programmiert wird. In diesem Fall könnte, wenn die zur Programmierung des Computers verwendete Sprache die Verwendung von sich wiederholenden Prozedur-Aufrufen ermöglicht, die Funktion des Stapels und der Stapelzeiger unter Verwendung lokal definierter Variablen bereitgestellt werden, wie für einen Fachmann auf diesem Gebiet ersichtlich ist. Ist die Verwendung sich wiederholender Prozeduraufrufe mit lokalen Variablen nicht möglich, oder wird die Erfindung zumindest teilweise unter Verwendung diskreter Logik implementiert, dann kann der Stapel auf herkömmliche Weise unter Verwendung von Stapelzeigern implementiert werden.
- Um die Auswahl der Binärwörter für die einzelnen Primitiven und die Erzeugung von Bitmaps zu beschreiben, ist es hilfreich, Fig. 7 heranzuziehen, wo ein Venn-Diagramm dargestellt ist, in dem drei getrennte Bereiche u, v und w enthalten sind, die je eine Primitive darstellen. Die drei Bereiche überlagern sich und erzeugen acht (2**3) Unterbereiche oder Bestandteile. Jeder Bestandteil ist definiert als der Schnittpunkt von Primitiven und Primitivenkomplementen, wie dies nachfolgend in Tabelle 3 dargestellt ist. Tabelle 3 Fig. 7 Ref.-Nummern Bestandteile für u, v und w Entsprech. Werte für Wahrheitstabelle für Fig. 4
- wobei - das Komplement des Bestandteils bezeichnet (d. h. -u = das Komplement von u oder NOT u und INT stellt den INTERSECT- Operator dar). Dies läßt sich für jede beliebige Anzahl an Primitiven verallgemeinern, so es daß für eine gegebene Zahl, beispielsweise n, 2 hoch n (2**n) Bestandteile gibt. Um alle möglichen Stati darzustellen, ist eine Wahrheitstabelle von 2**n Werten erforderlich.
- In der obigen Tabelle 3 identifiziert jedes Bit in der Wahrheitstabelle für den logischen Ausdruck, der durch die Struktur in Fig. 4 dargestellt ist, den Wert des logischen Ausdrucks für gegebene Werte von u, v, w (d. h. für einen gegebenen Bestandteil), wobei u, v, w und die Bestandteile die Werte wahr (1, innen) und falsch (0, außen) haben, und u ist die erste Primitive X2, v ist die zweite Primitive Y1 und w ist die dritte Primitive Z1. Auf diese Weise ist ersichtlich, daß der vierte Bestandteil (d. h. -u INT v INT w) im Innern des Körpers ist, da das vierte Bit den Wert "1" hat, während der dritte Bestandteil (d. h. -u INT v INT -w) außerhalb des Körpers ist, da das dritte Bit eine "0" hat. In Fig. 7 entsprechen die sich überlagernden Bestandteile denjenigen innerhalb des Körpers. Die entsprechenden Werte für u, v und w geben die Wahrheitstabellen für die Primitivenkörper u, v bzw. w an. Das Bitmap für die erste Primitive u besteht aus den Werten 00001111, wobei jedes Bit den Wert des Primitivenausdrucks für entsprechende Bestandteile in der in der obigen Tabelle aufgeführten Reihenfolge darstellt. Für die zweite Primitive v besteht das Bitmap aus den Werten 00110011, in derselben Reihenfolge. Für die dritte Primitive w besteht es aus den Werten 01010101.
- Die Werte für dieselben Bestandteile für die Vereinigung zweier Ausdrücke mit den Wahrheitstabellen tt1 und tt2 (beispielsweise u bzw. v) besitzen Werte, die durch tt(u,v,w) =tt1(u,v,w) OR tt2(u,v,w) dargestellt sind - d. h. 0 für die Bestandteile außerhalb von beiden und 1 für alle anderen (00111111 für u UNION v). Die Werte für die Bestandteile für den Schnittpunkt zweier Ausdrücke mit den Wahrheitstabellen tt1 und tt2 (beispielsweise u bzw. v) besitzen die Werte, die durch tt(u,v,w) : = tt1(u,v,w) AND tt2 (u,v,w) dargestellt sind - d. h. 1 für den Bestandteil, der beiden gemeinsam ist, und 0 für alle anderen (00000011 für u INTERSECT v). Ähnliche Ausdrücke können für die anderen Operatoren erzeugt werden.
- Unter Verwendung dieser logischen Darstellung kann u als redundant in einem ausgewerteten Ausdruck bestimmt werden, wenn tt(0,v,w) = tt(1,v,w) für alle v, w. In anderen Worten, spielt der Wert von u keine Rolle, dann ist er im Ausdruck redundant. Die Wahrheitstabelle tt(u,v,w) für einen Ausdruck, in dem u redundant ist, kann als Wahrheitstabelle tt1 für einen Ausdruck in v und w, umgeschrieben werden, wobei tt1(v,w) : = tt(1,v,w).
- In anderen Worten, die Auswertung des Ausdrucks für einen CSG- Körper in einem gegebenen Voxel gibt an, ob sich das Voxel innerhalb oder außerhalb des CSG-Körpers befindet. Weist bei der Überprüfung dieser Auswertung für jede Primitive u und für jeden u-wahr-Bestandteil der Ausdruck denselben Wert im entsprechenden u-falsch-Bestandteil auf, dann ist die Primitive u im Ausdruck innerhalb dieses Voxels redundant. Ist jedoch ein u-wahr-Bestandteil vorhanden, für den der Ausdruck einen anderen Wert im u-falsch-Bestandteil aufweist, dann ist u im Ausdruck innerhalb dieses Voxels nicht redundant.
- Das heißt, daß es möglich ist, eine Primitive zu finden, die in einem Ausdruck redundant ist, indem wahre Werte mit falschen Werten verglichen werden. Dies könnte unter Verwendung speziell ausgelegter Hardware wie beispielsweise der in Fig. 8 dargestellten, die an späterer Stelle beschrieben wird, erfolgen. Dieser Vergleich kann aber auch unter Verwendung allgemeiner Hardware und einem Software-Algorithmus, wie er nachfolgend beschrieben wird, erfolgen.
- In diesem Algorithmus erfolgt der Vergleich zwischen wahren und falschen Werten durch Verschiebung der Wahrheitstabelle für den Ausdruck nach rechts, um Werte, die falsche Primitive darstellen, auf Positionen zu verschieben, die normalerweise durch wahre Primitivenwerte eingenommen werden, wobei entsprechende Werte durch eine Exklusiv-oder-Funktion (EXOR) verglichen werden können, wodurch Einsen in allen Positionen bereitgestellt werden, in denen keine Übereinstimmung vorhanden ist. Die Verschiebung ist 4,2,1 Stellen für die erste, zweite und dritte Primitive u,v,w und setzt irrelevante Werte in Positionen, die normalerweise die falschen Werte enthalten. Bei der Überprüfung, ob eine Primitive redundant ist, ob irrelevante falsche Positionen ausmaskiert sind, ist das Ergebnis des exklusiven oder gleich Null, wenn die Primitive redundant ist. Beispiele einer solchen Operation werden in der nachfolgenden Tabelle 4 dargestellt, wobei auf die Wahrheitstabelle Bezug genommen wird, die für die vereinfachte Struktur erzeugt wird, die in Fig. 4 dargestellt ist, wobei X2, Y1 und Z1 die erste, zweite und dritte Primitive (vergleiche u,v und w) ist.
- 00010001 ursprüngliches Bitmap
- 00000001 nach rechts verschobenes Bitmap, um X2 falsch unter X2 wahr auszurichten
- 00010000 EXOR zur Durchführung des Vergleichs
- 00001111 Maske zur Auswahl von nur X2 falschen Werten des Vergleichs
- 00000000 maskiertes Ergebnis zeigt alle Nullen, daher ist X2 redundant
- 00010001 ursprüngliches Bitmap
- 00000100 nach rechts verschobenes Bitmap, um Y1 falsch unter Y1 wahr auszurichten
- 00010101 EXOR zur Durchführung des Vergleichs
- 00110011 Maske zur Auswahl von nur Y1 wahren Werten für den Vergleich
- 00010001 maskiertes Ergebnis enthält Einsen, daher ist Y1 nicht redundant
- Dieses Verfahren kann dazu verwendet werden, um das Bitmap zu vereinfachen, welches durch die Bitmap-Erzeugungslogik erzeugt wird. Um dies auszuführen, leitet die Steuerlogik die Steuerung an die redundante Primitivsteuerung (RPL) weiter, die Verschiebungs- und Testoperationen an den Bitmaps, wie oben beschrieben, durchführt. Wird eine Primitive in einem Ausdruck als redundant erkannt, so wird der Zeiger auf die Primitive aus der Tabelle an Primitiven, die angetroffen wurden, entfernt, und die Zählung der verbleibenden Primitiven wird um 1 reduziert.
- Sobald die Logik der redundanten Primitiven beendet ist, wird die Verarbeitung des Bitmap, der Steuerung, an die Knotenerzeugungslogik (NGL) weitergeleitet, die einen neuen Knoten für die Körperdefinitionsstruktur erzeugt, die die Zählung der verbleibenden Primitiven, das Bitmap und die Tabelle der Zeiger auf die verbleibenden Primitiven umfaßt. Die Knotenerzeugungslogik ersetzt dann die Struktur oder denjenigen Teil davon, der von der Bitmap-Erzeugungslogik durchlaufen wurde, durch diesen neuen Knoten, indem die Zeiger auf die Knoten, die mit einem einzelnen Zeiger auf den neuen Knoten durchlaufen wurden, ersetzt werden.
- Aus Gründen einer einfacheren Erklärung und Darstellung wurde ein Beispiel mit drei Primitiven beschrieben; es wird jedoch V darauf hingewiesen, daß diese Zahl beliebig erweitert werden kann. Die Größe des Bitmap erhöht sich jedoch schnell mit der Anzahl an Primitiven, da die Anzahl der Bits, die erforderlich sind, um die entsprechenden Werte der Bestandteile darzustellen, gleich 2**n ist, wobei n die Anzahl der Primitiven darstellt. Daher ist es in der Praxis ratsam, die Auswertung und Erzeugung der Wahrheitstabelle auf eine maximale Zahl von 5 zu begrenzen, da die Wahrheitstabelle unter Verwendung von 32 Bitwörtern (32 = 2**5) erzeugt werden kann.
- Um einen Ausdruck auszuästen, der bereits einen neuen Knoten umfaßt, wie er durch die Knotenerzeugungslogik erzeugt wurde, benötigt die Vereinfachungslogik zusätzlich zu der in Fig. 3 dargestellten weitere Logik. Diese zusätzliche Logik ist in der Lage, einen solchen neuen Knoten zu erkennen und daraufhin diesen Knoten zu vereinfachen. Die Vereinfachung eines solchen Knotens umfaßt die Schritte der Ausführung eines sich wiederholenden Aufrufs der Vereinfachungslogik für jede der Primitiven, auf die durch den Knoten gezeigt wird, und der Analyse der Ergebnisse der sich wiederholenden Aufrufe. Für Primitive, die durch FULL oder EMPTY ersetzt werden können, wird der entsprechende Teil des Bitmap dupliziert; das ursprüngliche Bitmap im Knoten wird maskiert, um lediglich die wahren (oder falschen) Positionen auszuwählen; eine linke (oder rechte) Verschiebung wird ausgeführt, um eine Kopie mit den wahren (oder falschen) Positionen anzufertigen, die unter den falschen (oder wahren) Positionen dupliziert wurden; und die beiden Kopien werden unter einer OR-Operation zusammengefaßt, um das Bitmap zu vereinfachen. Diese Operation ist in der nachfolgenden Tabelle 5 dargestellt.
- 00101010 Bitmap, das nach v wahr ausgeästet werden soll
- 00110011 v wahr Maske
- 00100010 v wahr Teil des Bitmap (AND der obigen beiden)
- 10001000 Kopie des v wahr Bitmap, um zwei nach links in den v falsch Bereich verschoben
- 10101010 Bitmap für ausgeästeten Ausdruck (OR der obigen beiden)
- In einem Modellierungssystem für Festkörper gemäß der obigen Beschreibung ist es möglich, automatisch Primitive zu löschen, die während der Verarbeitung einer Körperdefinitionsstruktur innerhalb eines Voxels redundant werden.
- Nachfolgend wird eine spezifische Weiterentwicklung des oben beschriebenen für die Vereinfachung von Ausdrücken erläutert, in denen zusätzliche geometrische Informationen zu den Verhältnissen zwischen den Primitiven verfügbar sind. Ein Beispiel einer solchen zusätzlichen geometrischen Information ist, daß eine erste Primitive vollständig innerhalb einer weiteren Primitiven in einem bestimmten Voxel enthalten ist. Somit ist der Ausdruck u union v, der normalerweise von u und v abhängig ist, äquivalent zu u in einem gegebenen Voxel, wenn die Primitive in diesem Voxel vollständig in v enthalten ist (d. h. u enthält v).
- In dieser spezifischen Weiterentwicklung des oben beschriebenen Modellierungssystems für Festkörper wird das Bitmap, das durch die Bitmap-Erzeugungslogik erzeugt wird, mit einer Maske assoziiert, die als Relevanzmap oder relmap bezeichnet wird und für jeden Bestandteil im Bitmap eine Bitposition einnimmt. Die Bitmap-Erzeugungslogik wird so geändert, daß es zusätzlich zur Erzeugung eines Bitmap außerdem ein relmap aller Einsen erzeugt. Das relmap wird später geändert, indem Primitiven geometrisch und unabhängig von der logischen Struktur, die sie verbindet, verglichen, um Abhängigkeiten festzustellen. Diese geometrische Information wird häufig als Nebeneffekt der konventionellen Erzeugung erzeugt, die im Artikel von J. R. Woodwarks, der oben angeführt wurde, beschrieben wird. Sie wird ebenfalls durch die obige Vereinfachungslogik (d. h. v = FULL ist eine geometrische Information) erzeugt.
- Ein Wert 1 in einer Position im relmap gibt an, daß der dazugehörige Bestandteil nicht als leer bekannt ist und daß der Wert im Bitmap relevant sein könnte. Wenn weitere geometrische Informationen an den Primitivknoten durch irgendwelche Mittel bestimmt werden, werden die Bits im relmap ausgeschaltet, indem sie zusammen mit den vorhandenen relmap-Informationen einer AND-Operation unterzogen werden. Die Bits im relmap werden einer AND-Operation unterzogen, da eine gegebene Position nur relevant ist, wenn beide Bestandteilpositionen auch relevant sind.
- Das RPL wird ebenfalls geändert, um das relmap zu verarbeiten.
- Betrachten wir die Verarbeitung des relmap für den Ausdruck u union v, der oben angeführt wurde, wobei u vollständig in v (d. h. u enthält v) enthalten ist:
- 1011 = relmap für u enthält v, wobei die Bits der relmap den Bestandteilen -uINT-v, -uINTv, uINT-v und uINTv entsprechen. Die Null an der zweiten Position gibt an, daß der zweite Bestandteil in der Ordnung, d. h. -uINTv, als EMPTY bekannt ist.
- Die Überprüfung auf Redundanz der Primitiven kann, wie früher, durch Verschiebung durchgeführt werden. Jedoch muß die Logik zur Entfernung der redundanten Primitiven geändert werden, so daß das Bitmap und das relmap, das dann als eine Maske verwendet wird, verschoben werden kann. Die entsprechenden wahren und falschen Bits im Bitmap sind für die Gleichheitsprüfung nur dann relevant, wenn beide mit Bits im relmap in Verbindung gebracht werden, die anzeigen, daß sie relevant sein können.
- Die in der nachfolgenden Tabelle 6 dargestellte Sequenz zeigt die Überprüfung auf Relevanz der Primitiven u im oben angeführten Beispiel.
- 0111 1: Bitmap für u union v
- 0001 2: nach rechts 2 verschobenes Bitmap 1, um u falsch über u wahr zu schieben
- 0110 3 : 1 EXOR 2, um nach Gleichheit zu suchen
- 1011 4: relmap für u enthält v
- 0010 5: verschobenes relmap 4, um u falsch über u wahr zu schieben
- 0010 6 : 4 AND 5, verhindert Vergleich, sofern nicht beide Bits relevant sind
- 0011 7: u wahr Maske zur Ausmaskierung schlechter Werte, die nach u falsch verschoben wurden
- 0010 8 : 6 AND 7, um nur geeignete Vergleichsbits zu maskieren
- 0010 9 : 3 AND 8, Ergebnis enthält Einsen, daher ist u nicht redundant
- Die in der nachfolgenden Tabelle 7 dargestellte Sequenz zeigt die Überprüfung auf Relevanz der Primitiven v im oben angeführten Beispiel.
- 0111 1: Bitmap für u union v
- 0011 2: nach rechts 1 verschobenes Bitmap 1, um v falsch über v wahr zu schieben
- 0100 3 : 1 EXOR 2, um nach Gleichheit zu suchen 1011 4: relmap für u enthält v
- 0101 5: verschobenes relmap 4, um v falsch über v wahr zu schieben
- 0001 6 : 4 AND 5, verhindert Vergleich, sofern nicht beide Bits relevant sind 0101 7: v wahr Maske zur Ausmaskierung schlechter Werte, die nach v falsch verschoben wurden
- 0001 8 : 6 AND 7, um nur geeignete Vergleichsbits zu maskieren
- 0000 9 : 3 AND 8, Ergebnis enthält nur Nullen, daher ist v redundant
- Das Löschen einer Primitiven, die als redundant erkannt wurde, wie oben beschrieben wurde, umfaßt die Erzeugung eines Ergebnis-Bitmaps und eines Ergebnis-relmaps. Die Erzeugung des Ergebnis-Bitmaps ist in den Schritten (1) bis (5) der nachfolgenden Tabelle 8 dargestellt und umfaßt die Schritte einer gemeinsamen Unterziehung des Bitmaps (1) und des relmaps (2) einer AND-Operation, um ein Wort (3) zu erzeugen, das die relevanten Bits aus dem Bitmap enthält, sowie das Unterziehen einer OR-Operation der entsprechenden primitiven falschen Bits (4) und den primitiven wahren Bits aus diesem Wort, woraus das Ergebnis-Bitmap (5) entsteht. Die Erzeugung des Ergebnisrelmaps ist in den Schritten (6) bis (10) von Tabelle (8) dargestellt und umfaßt die Schritte eines gemeinsamen Unterziehens einer OR-Operation der entsprechenden primitiven wahren Maskenbits (6) und der primitiven falschen Maskenbits (7) in der relmap in das Wort (8) und das Unterziehen einer AND-Operation des Wortes (8) mit einer Maske (9), um Restwerte zu beseitigen, die durch den Verschiebungsprozeß erzeugt wurden, und um das Ergebnis-relmap (10) zu bilden.
- 0111 1: Bitmap für u union v
- 1011 2: relmap für u enthält v
- 0011 3 : 1 AND 2, relevante Einsen aus dem Bitmap
- 0001 4 : 3 verschoben, um v falsche Positionen über v wahre Positionen zu schieben
- 0011 5 : 3 OR 4, um alle Einsen, die zur Bildung des Ergebnis-Bitmaps relevant sind, einzustellen
- 1011 6: relmap für u enthält v
- 0101 7: relmap 6 verschoben, um v falsch über v wahr zu schieben 1111 8 : 6 OR 7, um alle relevanten Bits anzuzeigen
- 0101 9: v wahr Bitmap zur Ausmaskierung von v v falsch in relmap
- 0101 10 : 8 AND 9, um Ergebnis-relmap anzugeben
- Daher läßt sich im wesentlichen sagen, daß, während das Bitmap vorwiegend zur Darstellung logischer Informationen verwendet wird, das relmap zur Darstellung geometrischer Informationen Anwendung findet.
- Die Sequenz der in der obigen Tabelle 8 dargestellten Schritte sind so ausgewählt, daß sie die Tatsache berücksichtigen, daß durch das Entfernen einer Primitiven bewirkt werden kann, daß eine zweite Primitive nicht länger redundant ist. Beispielsweise kann im Ausdruck A UNION B mit der geometrischen Information A=B entweder A oder B redundant sein, nicht aber beide. Die obige Sequenz gewährleistet, daß nur eine und nicht beide Primitiven gelöscht werden.
- Ein Modellierungssystem für Festkörper gemäß der vorliegenden Erfindung kann durch geeignete Programmierung eines Mehrzweck- Computers implementiert werden. In diesem Fall können die oben beschriebene Logik durch geeigneten Programmier-Code und die Speicherelemente, beispielsweise die Tabelle für Stapel und Konstanten und die Tabelle der Zeiger zu den Primitiven, die angetroffen werden, was durch geeignete Konfiguration des Systemspeichers zur Verfügung gestellt werden kann, bereitgestellt werden. Eine besonders vorteilhafte Implementierung ist möglich, wo die Logik durch Programmierung des Computers in einer Sprache erfolgt, die sich wiederholende Prozeduraufrufe mit der Definition lokaler Variablen innerhalb von Prozeduren sowie globalen Variablen bereitstellt. In einem solchen Fall könnte jeder der in Fig. 5 dargestellten Logikblöcke als separate Prozedur implementiert werden. Die vorliegende Erfindung ist jedoch nicht auf eine solche Implementierung beschränkt und kann als Spezialzweckprozessor oder als Spezialzweckadapter zur Verwendung mit einem Mehrzweckcomputer implementiert werden.
- In einem solchen Fall könnte ein oder mehrere Speicherelemente, die erwähnt wurden, durch Einheiten diskreten Speichers bereitgestellt werden. In ähnlicher Weise kann die Logik vollständig oder teilweise durch eine Spezialzwecklogik bereitgestellt werden. Beispielsweise könnte die oben beschriebene redundante Primitivlogik durch festverdrahtete Logik, die die in Fig. 8 dargestellte Struktur aufweist, implementiert werden. Zum Zweck einer einfacheren Darstellung gibt diese Figur eine schematische Übersicht der Logik für den Vergleich entsprechender wahr- und falsch-Positionen in einem Bitmap, die aus lediglich 8 Bits (d. h. für 3 Primitive) besteht. Die Bits des Bitmap werden in entsprechende Eingänge 92-99 eingegeben. Die in Fig. 8 dargestellte festverdrahtete Logik umfaßt drei Dekoderblöcke 100, 101 und 102 zur Bestimmung, ob eine oder mehrere der Primitiven u,v und w redundant sind. Jeder Dekoderblock vergleicht die entsprechenden primitiven wahren und primitiven falschen Bits im Bitmap und sucht nach einer entsprechenden Primitiven. Die Auswahl der geeigneten Bits wird durch festverdrahtete Verbindungen 103 ausgeführt, und die Vergleiche werden durch die EXOR-Gatter 104 in jedem der Dekoderblöcke ausgeführt. In jedem Dekoderblock werden die Ausgänge der EXOR-Gatter durch ein Netzwerk aus OR-Gattern 105 zusammen einer OR-Operation unterzogen, um die Ausgabe für den Dekoderblock zu bilden bzw. die Ausgaben 106, 107 und 108 für die Dekoderblöcke 100, 101 und 102. Ein Signalpegel "Null" am Ausgang 106 des Dekoderblocks 100 gibt an, daß die entsprechende Primitive u redundant ist. In ähnlicher Weise gibt der Signalpegel "Null" an den Ausgängen 107 und 108 der Dekoderblöcke 101 und 102 an, daß die entsprechenden Primitiven v und w redundant sind. Der Fachmann auf diesem Gebiet weiß, wie diese Logik für ein Bitmap für eine beliebige Anzahl an Primitiven zu implementieren ist, wenn er die Beschreibung dieser Figur und die vorherige Beschreibung gelesen hat. Der Fachmann auf diesem Gebiet weiß außerdem, daß die in der Figur dargestellte Logik verbessert werden kann, um die Verarbeitung eines relmaps ebenfalls bereitzustellen.
- Der Fachmann auf diesem Gebiet wird darauf hingewiesen, daß viele Modifikationen innerhalb des Anwendungsbereichs der beiliegenden Ansprüche möglich sind.
- Während beispielsweise im bestimmten Ausführungsbeispiel eines Modellierungssystems für Festkörper, wie es oben beschrieben wurde, das Löschen von Primitiven aus der Struktur während eines Vereinfachungsprozesses innerhalb eines Voxels durch das Ersetzen von Zeigern auf die Primitivknoten durch Zeiger auf FULL/EMPTY-Knoten erreicht wird, könnte dies auch durch Verwendung einer relmap erreicht werden, um Primitive zu kennzeichnen, die gelöscht werden.
- Außerdem wird darauf hingewiesen, daß die Aufteilung der Logik in die separaten Blöcke von Fig. 3 nur dazu dient, die Beschreibung zu vereinfachen, und daß einige oder alle Blöcke in anderen Beispielen eines Modellierungssystems für Festkörper gemäß der vorliegenden Erfindung kombiniert werden könnten. Zusätzlich können die in einigen Logikblöcken ausgeführten Operationen anstelle dessen oder zusätzlich in anderen Logikblöcken ausgeführt werden. Beispielsweise kann die Vereinfachungslogik so eingerichtet werden, daß sie die verbleibenden Primitiven zählt, während sie die Struktur vereinfacht, was anstelle oder zusätzlich zu der Zählung der Primitiven erfolgen kann, die in der Primitivzähllogik ausgeführt wird.
Claims (8)
1. Ein Modellierungssystem für Festkörper, das Mittel zur
räumlichen Darstellung eines Körpers umfaßt, das in Form
von festen geometrischen Primitiven definiert ist, die
durch einen oder mehrere logische Kombinationsoperatoren
kombiniert sind, wobei das Modellierungssystem für
Festkörper folgendes umfaßt:
- ein Körperdefinitionsmittel, das eine Struktur (30)
enthält, das eine Mehrzahl miteinander verbundener Knoten
für die Primitiven und für die Operatoren umfaßt;
charakterisiert durch
- eine erste Logik (BGL) für das Durchlaufen zumindest
einiger Knoten und zur Erzeugung einer Tabelle (68), die
ein Bitmap umfaßt, das den logischen Ausdruck mit den
geometrischen Primitiven enthält, die während des
Durchlaufens angetroffen wurden; und
- eine zweite Logik (RPL), um das Bitmap nach logischen
Redundanzen zu durchsuchen, die auf redundante
geometrische Primitive hinweisen.
2. Ein Modellierungssystem für Festkörper gemäß Anspruch 1,
in dem jedes Bit im Bitmap repräsentativ für einen der
Bestandteile der Primitiven ist, und in dem die zweite
Logik (RPL), um die Redundanz einer Primitiven u zu
überprüfen, die Gleichheit entsprechender u-wahr- und
ufalsch-Bestandteile im Bitmap überprüft.
3. Ein Modellierungssystem für Festkörper gemäß Anspruch 1
oder Anspruch 2, in dem die-erste Logik (BGL) zusätzlich
Zeiger zu den Primitiven erzeugt, die während des
Durchlaufs angetroffen wurden, und in dem die zweite Logik
(RPL) von den Zeigern einen Zeiger auf eine Primitive
löscht, die als redundant erkannt wurde.
4. Ein Modellierungssystem für Festkörper gemäß Anspruch 3,
das zusätzlich die dritte Logik (NGL) für das Ersetzen der
Knoten umfaßt, die von der ersten Logik durch einen
einzelnen Wahrheitstabellenknoten durchlaufen werden, der
das geänderte Bitmap enthält, welcher durch die zweite
Logik (RPL) erzeugt wurde, und die Zeiger auf die Knoten,
die die verbleibenden Primitiven definieren.
5. Ein Modellierungssystem für Festkörper gemäß allen
vorhergehenden Ansprüchen, das zusätzlich folgendes umfaßt:
- ein Mittel zur Definition des großen Raums, das ein
Voxel definiert, in dem der Körper existiert;
- eine räumliche Aufteilungslogik zur Aufteilung des
großen Raums in immer kleiner werdende Voxels, bis Voxels
erzeugt werden, für die die räumliche Darstellung
geliefert werden kann;
- eine Körpervereinfachungslogik (SL) zur Vereinfachung
der Struktur, die den Körper innerhalb eines Voxels
definiert, das durch das räumliche Aufteilungsmittel erzeugt
wurde;
- eine Zähllogik (PCL) zur Zählung der Anzahl an
Primitiven, die ganz oder teilweise in der vereinfachten Struktur
verbleibt, wie sie durch die Körpervereinfachungslogik
(SL) erzeugt wurde, und die, wenn eine geringere als die
vorbestimmte Anzahl an Primitiven vorhanden ist, bewirkt,
daß die erste (BGL) und die zweite (RPL) Logik die
genannte vereinfachte Struktur verarbeiten.
6. Ein Modellierungssystem für Festkörper gemäß Anspruch 5,
in dem die Körpervereinfachungslogik (SL) eine Logik zur
Vereinfachung eines Bitmap umfaßt, das durch die erste
Logik innerhalb eines Voxels erzeugt wurde, das durch das
räumliche Aufteilungsmittel erzeugt wurde.
7. Ein Modellierungssystem für Festkörper gemäß Anspruch 5
oder Anspruch 6, das zusätzlich eine Logik zur
Verarbeitung eines Relevanzmaps umfaßt, das die geometrische
Information, wann Bits aus dem Bitmap als irrelevant für
die Definition des Körpers innerhalb dieses Voxels
bestimmt werden, anzeigt.
8. Ein Modellierungssystem für Festkörper gemäß Anspruch 7,
wenn eine Abhängigkeit von Anspruch 3 oder wenn ein
beliebiger Anspruch von Anspruch 3 abhängig ist, wobei die
zweite Logik unter den Zeigern einen Zeiger auf eine
Primitive durch Änderung des Relevanzmaps löscht.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB8729630A GB2214037A (en) | 1987-12-18 | 1987-12-18 | Solid modelling system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3889882D1 DE3889882D1 (de) | 1994-07-07 |
DE3889882T2 true DE3889882T2 (de) | 1994-12-08 |
Family
ID=10628738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3889882T Expired - Fee Related DE3889882T2 (de) | 1987-12-18 | 1988-10-28 | Modellierungssystem für Festkörper. |
Country Status (5)
Country | Link |
---|---|
US (1) | US5086495A (de) |
EP (1) | EP0321080B1 (de) |
JP (1) | JPH06101019B2 (de) |
DE (1) | DE3889882T2 (de) |
GB (1) | GB2214037A (de) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278983A (en) * | 1988-09-30 | 1994-01-11 | International Business Machines Corporation | Boundary representation solid modeling system |
GB2231759B (en) * | 1989-05-18 | 1993-12-08 | Sun Microsystems Inc | Method and apparatus for the rendering of geometric volumes |
US5113357A (en) * | 1989-05-18 | 1992-05-12 | Sun Microsystems, Inc. | Method and apparatus for rendering of geometric volumes |
US5644689A (en) * | 1992-01-13 | 1997-07-01 | Hitachi, Ltd. | Arbitrary viewpoint three-dimensional imaging method using compressed voxel data constructed by a directed search of voxel data representing an image of an object and an arbitrary viewpoint |
US5821940A (en) * | 1992-08-03 | 1998-10-13 | Ball Corporation | Computer graphics vertex index cache system for polygons |
US5347459A (en) * | 1993-03-17 | 1994-09-13 | National Research Council Of Canada | Real time collision detection |
US5563991A (en) * | 1993-11-24 | 1996-10-08 | Xerox Corporation | Using an image showing a perimeter relationship representation to obtain data indicating a relationship among distinctions |
DE19528735A1 (de) * | 1994-08-06 | 1996-02-15 | Toyoda Automatic Loom Works | Motor zur Umwandlung der Drehung einer Welle in eine lineare Bewegung |
US5692184A (en) * | 1995-05-09 | 1997-11-25 | Intergraph Corporation | Object relationship management system |
US5760778A (en) * | 1995-08-15 | 1998-06-02 | Friedman; Glenn M. | Algorithm for representation of objects to enable robotic recongnition |
US5883629A (en) * | 1996-06-28 | 1999-03-16 | International Business Machines Corporation | Recursive and anisotropic method and article of manufacture for generating a balanced computer representation of an object |
NO306526B1 (no) * | 1997-12-30 | 1999-11-15 | Animagic Systems As | Fremgangsmaate for aa representere geometriske figurer og geometriske strukturer i datamaskinsystemer |
US6618048B1 (en) | 1999-10-28 | 2003-09-09 | Nintendo Co., Ltd. | 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components |
US20010047251A1 (en) * | 2000-03-03 | 2001-11-29 | Kemp William H. | CAD system which designs 3-D models |
CN100468546C (zh) * | 2000-04-07 | 2009-03-11 | 索尼达德克奥地利股份公司 | 光盘拷贝防止系统 |
US7119813B1 (en) | 2000-06-02 | 2006-10-10 | Nintendo Co., Ltd. | Variable bit field encoding |
US7002591B1 (en) | 2000-08-23 | 2006-02-21 | Nintendo Co., Ltd. | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system |
US7184059B1 (en) | 2000-08-23 | 2007-02-27 | Nintendo Co., Ltd. | Graphics system with copy out conversions between embedded frame buffer and main memory |
US6937245B1 (en) * | 2000-08-23 | 2005-08-30 | Nintendo Co., Ltd. | Graphics system with embedded frame buffer having reconfigurable pixel formats |
US6825851B1 (en) | 2000-08-23 | 2004-11-30 | Nintendo Co., Ltd. | Method and apparatus for environment-mapped bump-mapping in a graphics system |
US6636214B1 (en) | 2000-08-23 | 2003-10-21 | Nintendo Co., Ltd. | Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode |
US7034828B1 (en) | 2000-08-23 | 2006-04-25 | Nintendo Co., Ltd. | Recirculating shade tree blender for a graphics system |
US7576748B2 (en) * | 2000-11-28 | 2009-08-18 | Nintendo Co. Ltd. | Graphics system with embedded frame butter having reconfigurable pixel formats |
US6980218B1 (en) * | 2000-08-23 | 2005-12-27 | Nintendo Co., Ltd. | Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system |
US7538772B1 (en) | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
US6811489B1 (en) | 2000-08-23 | 2004-11-02 | Nintendo Co., Ltd. | Controller interface for a graphics system |
US7061502B1 (en) | 2000-08-23 | 2006-06-13 | Nintendo Co., Ltd. | Method and apparatus for providing logical combination of N alpha operations within a graphics system |
US6700586B1 (en) | 2000-08-23 | 2004-03-02 | Nintendo Co., Ltd. | Low cost graphics with stitching processing hardware support for skeletal animation |
US6867781B1 (en) | 2000-08-23 | 2005-03-15 | Nintendo Co., Ltd. | Graphics pipeline token synchronization |
US6707458B1 (en) | 2000-08-23 | 2004-03-16 | Nintendo Co., Ltd. | Method and apparatus for texture tiling in a graphics system |
US7844842B2 (en) * | 2008-11-21 | 2010-11-30 | Apple Inc. | Variable refresh rate for power management |
US8947444B1 (en) * | 2008-12-09 | 2015-02-03 | Nvidia Corporation | Distributed vertex attribute fetch |
GB2497762B (en) * | 2011-12-20 | 2018-05-23 | Advanced Risc Mach Ltd | Intermediate value storage within a graphics processing apparatus |
US10148499B2 (en) * | 2016-11-09 | 2018-12-04 | Seagate Technology Llc | Verifying distributed computing results via nodes configured according to a tree structure |
JP2019128641A (ja) * | 2018-01-22 | 2019-08-01 | キヤノン株式会社 | 画像処理装置、画像処理方法及びプログラム |
CN109522239A (zh) * | 2018-09-30 | 2019-03-26 | 上海恺英网络科技有限公司 | 一种共同特征数据确定的方法及设备 |
US11321904B2 (en) | 2019-08-30 | 2022-05-03 | Maxon Computer Gmbh | Methods and systems for context passing between nodes in three-dimensional modeling |
US11714928B2 (en) | 2020-02-27 | 2023-08-01 | Maxon Computer Gmbh | Systems and methods for a self-adjusting node workspace |
US11373369B2 (en) * | 2020-09-02 | 2022-06-28 | Maxon Computer Gmbh | Systems and methods for extraction of mesh geometry from straight skeleton for beveled shapes |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4694404A (en) * | 1984-01-12 | 1987-09-15 | Key Bank N.A. | High-speed image generation of complex solid objects using octree encoding |
US4649498A (en) * | 1984-05-08 | 1987-03-10 | The University Of Rochester | Computer systems for curve-solid classification and solid modeling |
JPH0756678B2 (ja) * | 1985-11-01 | 1995-06-14 | 株式会社日立製作所 | 対話形形状モデリングシステム |
US4809201A (en) * | 1985-12-02 | 1989-02-28 | Schlumberger Systems, Inc. | Graphic display region defining technique |
US4862392A (en) * | 1986-03-07 | 1989-08-29 | Star Technologies, Inc. | Geometry processor for graphics display system |
GB2194656B (en) * | 1986-09-03 | 1991-10-09 | Ibm | Method and system for solid modelling |
US4816999A (en) * | 1987-05-20 | 1989-03-28 | International Business Machines Corporation | Method of detecting constants and removing redundant connections in a logic network |
-
1987
- 1987-12-18 GB GB8729630A patent/GB2214037A/en not_active Withdrawn
-
1988
- 1988-10-20 JP JP63263014A patent/JPH06101019B2/ja not_active Expired - Fee Related
- 1988-10-28 EP EP88310188A patent/EP0321080B1/de not_active Expired - Lifetime
- 1988-10-28 DE DE3889882T patent/DE3889882T2/de not_active Expired - Fee Related
- 1988-12-16 US US07/285,850 patent/US5086495A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB8729630D0 (en) | 1988-02-03 |
DE3889882D1 (de) | 1994-07-07 |
EP0321080A3 (de) | 1991-10-09 |
EP0321080B1 (de) | 1994-06-01 |
JPH06101019B2 (ja) | 1994-12-12 |
EP0321080A2 (de) | 1989-06-21 |
GB2214037A (en) | 1989-08-23 |
JPH01169677A (ja) | 1989-07-04 |
US5086495A (en) | 1992-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3889882T2 (de) | Modellierungssystem für Festkörper. | |
DE3789650T2 (de) | Verfahren und System zur Festkörpermodellierung. | |
DE69100140T2 (de) | Verfahren zur Anzeige eines Bildteiles einer physikalischen Struktur. | |
DE69020780T2 (de) | Vielfache Tiefenpuffer für Graphik und Festkörpermodellierung. | |
DE60008397T2 (de) | Benutzer emulation für datenaustausch beim rechnergestützten entwurf | |
DE19860061B4 (de) | System zur Prüfung der kombinatorischen Äquivalenz | |
DE3854223T2 (de) | Erzeugung und Anzeige von Rechnergraphiken. | |
DE69521507T2 (de) | System und verfahren zur auf einem modell basierender prüfung von lokalen entwurfsregeln | |
DE69430153T2 (de) | Verfahren und Vorrichtung zur dreidimensionalen Bilderzeugung von Objekten | |
DE69424944T2 (de) | Datenreduktion in einem system zur analysierung von geometrischen datenbanken | |
DE3872031T2 (de) | Verfahren zum berechnen und zur wiedergabe von sichtbildern eines objektes. | |
DE4303071A1 (de) | Verfahren und Vorrichtung zur Randbewertung in einer Nicht-Mannigfaltigkeits-Umgebung | |
DE10035043A1 (de) | Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen | |
DE19612016A1 (de) | Verfahren zur rechnergestützten Geometriemodellierung | |
DE2801536A1 (de) | Zeichenerkennungsvorrichtung | |
DE69232452T2 (de) | Expertensystem mit einem Wissenserfassungsunterstützungssystem | |
DE3854835T2 (de) | Verfahren und Apparat zur Klassifizierung graphischer Segmente, um Auswahl- und Anzeigeoperation zu erleichtern | |
DE69521435T2 (de) | Verfahren und einrichtung zum extrahieren von information aus einer datenbank | |
DE69230901T2 (de) | Graphisches Datenverarbeitungssystem und -verfahren | |
DE3855494T2 (de) | Abfragevorrichtung und -methode | |
DE69625484T2 (de) | Verbesserte Objektmodellerzeugung | |
DE69129513T2 (de) | Polygonsortierungsgerät | |
DE69030295T2 (de) | Speicherverwaltung für hierarchische graphische Strukturen | |
DE69327129T2 (de) | Vorrichtung zum Bearbeiten von dreidimensionalen Bildinformationen mit Hervorhebung von herausstechenden Linien | |
EP0580663A1 (de) | Verfahren zur verifikation datenverarbeitender systeme. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |