-
Die
vorliegende Erfidung betrifft im allgemeinen ein Verfahren und einen
Apparat zum Ausbilden eines Bildes mit einem computergestützten bilddarstellenden
System und, genauer gesagt, ein Verfahren und eine Vorrichtung zum
Zusammensetzen geschichteter synthetischer grafischer Filter, welche
andere Objekte in einer Szene überlagern.
-
Im
allgemeinen stellen computergestützte
zweidimensionale bilddarstellende Systeme den Graphikern Werkzeuge
zum Konstruieren eines Designs durch Schichten von grafischen Objekten,
während
ihre Eigenschaften spezifiziert werden, zur Verfügung. Beispiele von kommerziellen
computergestützten
zweidimensionalen bilddarstellenden Systemen sind CorelDrawTM von der Coral Corporation FreeHandTM von der MacroMedia Corporation und Adobe
Illustrator® von
der Adobe Corporation. In solchen bilddarstellenden Systemen können die
Eigenschaften eines grafischen Objektes variieren abhängend vom
speziellen grafischen Objekt, das gerade entwickelt wird. Beispielsweise
stellen begrenzte geometrische Formen grafische Objekte dar mit Eigenschaften,
welche die Linienbreite, die Füllfarbe
und die Transparenz einschließen,
wohingegen Liniensegmente grafische Objekte darstellen, mit Eigenschaften,
welche die Linienbreite und die Linienfarbe darstellen.
-
Ein
Charakteristikum von bilddarstellenden Systemen ist, dass sie die
Eigenschaft eines jeden grafischen Objekts eng mit der Art und Weise,
in der ein jedes Objekt konstruiert wird, in Verbindung bringen.
Diese enge Verbindung macht die Erzeugung von komplexen visuellen
Effekten unter Verwendung dieser bilddarstellenden Systeme schwierig.
Die folgenden Beispiele illustrieren die enge Verbindung zwischen
der Konstruktion eines grafischen Objekts und dessen Eigenschaften.
Zuerst müssen
die gefüllten
Regionen explizit konstruiert und abgeschlossen werden. Zum Zweiten
müssen
die Linien- und
Fülleigenschaften
angewandt werden, um die Umrandungen zu vervollständigen bzw.
die Liniensegmente zu vervollständigen.
Schließlich
können
Transformationen nur angewandt werden auf vollständige Objekte oder Gruppen
von Objekten. Diese Eigenschaft von bilddarstellenden Systemen ist
für den
Grafiker mühsam
hinsichtlich der Erzeugung von visuellen Effekten, welche über Objektbegrenzungen
hinweg auftreten. Um einen visuellen Effekt zu erzeugen, welcher über die Grenzen
eines Objekts hinweg er scheint, muss ein Grafiker typischerweise
Extraformen und Begrenzungen in ein Design einfügen. Als ein Ergebnis sind
den Grafikern, welche diese Systeme bedienen, Grenzen auferlegt,
da sie Objekt-Grenzlinien erzeugen müssen, welche das Ausmaß eines
jeden visuellen Effekts definieren.
-
Räumlich gebundene
synthetische grafische (im Folgenden abgekürzt "SG")
Filter oder Linsen ermöglichen
es einem Designer, ein grafisches Objekt mit linien- oder vektorgrafischen
Eigenschaften zu definieren, welche sich in Abhängigkeit von den speziellen
Objekten in der Szene, in welcher sie definiert werden, verändern. SG-Filter
(oder Linsen) wurden entwickelt, um den Effekt der engen Verknüpfung zwischen
den Eigenschaften eines grafischen Objekts und der Art und Weise,
in welcher das Objekt konstruiert wird, zu minimieren. Anders als
grafische Nicht-Linsen-Objekte, die ein Erscheinungsbild aufweisen,
das sich nicht verändert, sobald
es einmal definiert worden ist (d.h. statisch ist), verändern begrenzte
Linsen das Erscheinungsbild von Objekten, welche durch ihr Inneres
zu sehen sind. Diese begrenzten Linsen zeigen folglich ein Erscheinungsbild
in einer Szene, das dynamisch" ist.
Anders als statische Objekte weisen dynamische grafische Objekte Eigenschaften
auf, welche sich verändern,
wenn Objekte zu einer begrenzten Region der Linse hinzugefügt werden
oder von dieser entfernt werden. Als Resultat davon ermöglichen
es die räumlich
begrenzten Linsen, dass Effekte sich über Grenzen von Objekten hinaus
ausdehnen, die zugleich unabhängig
von den Grenzen aller der darunter liegenden Objekte sind.
-
Beispiele
von räumlich
begrenzten Linsen (oder SG-Filtern) sind in den US-Patenten 5,596,690, 5,467,441
und 5,479,603 offenbart, welche auf den gleichen Rechtsnachfolger übertragen
wurden wie die vorliegende Anmeldung und hier per Verweis eingeschlossen
sind. Speziell sei hier verwiesen auf US-Patent Nr. 5,479,603, welche
ein Verfahren beschreibt zum Zusammenstellen von sich überlappenden
Linsen und einem Originalbild. Das Verfahren beschrieben in US-Patent
Nr. 5,479,603 stellt die Funktion oder die vielerlei Ansichtsoperationen
zusammen bzw. kombiniert sie, welche auf einer Modell-Daten-Struktur
arbeiten, um ein einzelnes zusammengesetztes Bild dargestellt im
Zusammenhang eines Originalbildes zu erzeugen. Auch kommerzielle
bilddarstellende Systeme, wie z.B. Adobe Illustrator, MacroMiedia
FreeHand und CorelDraw unterstützen
einen reichen Satz an Werkzeugen zum Konstruieren und Füllen von
Umrandungen. Im speziellen enthält
die CorelDraw-Software eine Vielzahl von Linsen (oder SG-Filtern), die in
einem Abschnitt mit dem Titel "Linsen" im CorelDrawTM-Benutzerhandbuch
(User's Manual-Vol.
1-Version 5.0, Corel Corporation, 1994, pp. 274-297) beschrieben
werden.
-
Verwandt
zu räumlich
begrenzten Filtern sind planare Kartierungen und Werkzeuge, die
streng auf Raster-Bildern arbeiten. Planare Kartierungen, die von "SIGGRAPH,89 (Boston,
MA, August), Computer Graphics, Vol. 23, No. 3, Seiten 345-354 offenbart
werden, wurden verwendet, um einen Weg zur Verfügung zu stellen, um eine existierende
Szenen-Geometrie in Regionen zu unterteilen, die gefüllt werden
können.
Einige der Effekte offenbart von Gangnet et al. können ähnlich zu
Linsen erscheinen. Der Unterschied zwischen Linsen und planaren
Kartierungen ist, dass planare Kartierungen das Partitionieren von
Objekten einfach machen. Linsen jedoch machen die Unterteilung (Partitionierung)
unnötig.
Desweiteren können
Linsen auch Effekte erzeugen, die über diejenigen hinausgehen,
die von planaren Kartierungen zur Verfügung gestellt werden und zwar
durch Hinzufügen
oder Entfernen von Objekten und Durchführen von affinen Transformationen.
Auch Werkzeuge, die streng an Rastern orientiert arbeiten, können linsenartige
Effekte auf Rasterobjekte ausüben, jedoch
sind diese Rasterwerkzeuge nicht in der Lage, an geometrischen Objekten
zu arbeiten.
-
Die
oben genannten Systeme erzeugen jedoch keine Objekte in einer Szene,
die als Linsen (oder SG-Filter) in verschiedenen Reihenfolgen definiert
sind, die von einem Linsentyp identifiziert für jede Linse abhängen. Geht
man davon aus, dass jede Linse einen eigenen Linsentyp aufweist,
so kann eine sortierte Liste von Objekten in einer Szene entweder
in einer von vorne nach hinten oder in einer von hinten nach vorne
Reihenfolge zusammengesetzt werden. Solch eine Möglichkeit würde die Erzeugung einer größeren Vielzahl
an Szenen im Hinblick auf jede Linse ermöglichen. Dementsprechend wäre es wünschenswert,
ein generisches System für
die effiziente Zusammenstellung von Linsen (oder SG-Filtern) zur
Verfügung
zu stellen, welches entweder in Form Von-Vornenach-Hinten oder Von-Hinten-nach-Vorne-Linsen
definiert ist, die mit anderen Objekten in einer Szene überlagern.
-
In Übereinstimmung
mit der Erfindung und wie durch die beigefügten Ansprüche definiert, wird ein Verfahren
zur Verfügung
gestellt sowie ein computergestütztes
bilddarstellendes System dafür
zur Vereinfachung der Zusammenstellung von Objekten in einem Bild,
welche als räumlich
gebundene synthetische grafische Filter oder Linsen definiert werden.
Die Objekte in dem Bild definieren eine Szene, in welcher die Objekte
in einer Liste sortiert sind.
-
In Übereinstimmung
mit einem anderen Aspekt der Erfindung wird eine Linse und zumindest
eine andere Form in der Liste ausgewählt, um einen Cluster von Formen
auszu bilden. Der Cluster von Formen kann eine Vielzahl von Gruppierungstypen
darstellen. In einem ersten Gruppierungstyp ist der Operations-Umfang der
Linse limitiert durch Ausschließen
derjenigen Formen, die unterhalb der Linse geschichtet sind und
außerhalb
des Clusters von Formen liegen, von der Modifizierung durch die
Filterfunktion der Linse. In einem zweiten Gruppierungstyp ist der
Operations-Umfang der Linse limitiert durch Ausschließen derjenigen
Formen, die unterhalb der Linse geschichtet sind und innerhalb des
Clusters von Formen liegen, von der Modifizierung durch die Filterfunktion
der Linse.
-
Diese
und andere Aspekte der Erfindung werden offensichtlich aus der folgenden
Beschreibung, wenn sie im Zusammenhang mit den beigefügten Zeichnungen
gelesen wird, wobei die gleichen Referenznummern für ähnliche
Teile verwendet wurden und in welcher:
-
1 ein
computergestütztes
zweidimensionales bilddarstellendes System zum Durchführen der
vorliegenden Erfindung darstellt;
-
2 ein
Flussdiagramm darstellt, welches die Schritte zum Durchführen eines
Werkzeugs einer Benutzeroberfläche
zum Erzeugen einer Szene und zum Spezifizieren, dass das Objekt
in der Szene die Eigenschaften einer Linse aufweist, darstellt;
-
3 ein
Beispiel einer nicht-zusammengesetzten Szene ist, die erzeugt wird
gemäß den Schritten, wie
in 2 dargelegt;
-
4 eine
Szenen-Liste illustriert, welche die Reihenfolge spezifiziert, in
welcher die Formen sich in der Szene überlagern;
-
5 eine
zusammengesetzte Szene illustriert, der nicht-zusammengesetzten
Szene, wie in 3 dargestellt;
-
6A ein
Flussdiagramm ist, welches die Schritte zum Durchführen der
Operationen darstellt, welche eine Szene von Formen mit überlappenden
Linsen zusammenstellen;
-
6B ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 624,
wie in 6A gezeigt, darstellt;
-
6C ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 620,
wie in 6B gezeigt, darstellt;
-
6D ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 621,
wie in 6C gezeigt, darstellt;
-
6E ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 642,
wie in 6D gezeigt, darstellt;
-
6F ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 664,
wie in 6E gezeigt, darstellt;
-
6G ein
Flussdiagramm ist, das die Schritte zum Durchführen von Schritt 643,
wie in 6D gezeigt, darstellt;
-
7 eine
generische Datenstruktur eines Schneide-Clusters illustriert;
-
8 den
Beginn einer Sequenz von Bildern illustriert, um die zusammengesetzte
Szene, wie in 5 dargestellt, zu erzeugen;
-
9 die
Unter-Liste für
die Zyanblaue-Linse 304 illustriert;
-
10 die
Liste von Formen illustriert, nachdem die Eigenschaft der zyanblauen
Linse auf die zyanblaue Unter-Liste angewandt wurde;
-
11 die
Sequenz in Bildern von 8 fortführt, um die zyanblaue Linse
zusammenzusetzen;
-
12 die
Unter-Liste illustriert für
die gelbe Linse 306 berechnet;
-
13 die
Liste von Formen illustriert, nachdem die Linsen in der gelben Unter-Liste eingefroren
wurden und die Eigenschaft der gelben Linse auf die gelbe Unter-Liste angewandt wurde;
-
14 die
Szene des Bildes in 8 und 11 fortführt, um
die gelbe Linse zusammenzusetzen;
-
15 die
Unter-Liste berechnet für
die mangentarote Linse 308 illustriert;
-
16 die
Liste der Formen illustriert, nachdem die Linsen in der mangentaroten
Unter-Liste eingefroren wurden und die Eigenschaft der Mangentalinse
auf die mangentarote Unter-Liste angewandt worden ist;
-
17 die
Sequenz der Bilder in 8, 11 und 14 fortführt, um
die mangentarote Linse zusammenzusetzen;
-
18 eine
nicht-zusammengesetzte Szene illustriert, welche eine Hintergrundform
von vier geometrische Formen enthält;
-
19 eine
Szenen-Liste von Formen illustriert in der nicht-zusammengesetzten
Szene, dargestellt in 18;
-
20 eine
zusammengesetzt Szene der nicht-zusammengesetzten Szene dargestellt
in 18 illustriert, wenn die rechteckige vergrößernde Linse
in der Von-Vornenach-Hinten-Reihenfolge zusammengesetzt ist;
-
21 die
Unter-Liste der Hexagon-förmigen
Linse illustriert;
-
22 die
linsifizierte Formen-Liste der Hexagon-förmigen Linse illustriert;
-
23 die
Unter-Liste der rechtwinkligen vergrößernden Linse illustriert;
-
24 die
linsifizierte Formen-Liste der rechtwinkligen Linse illustriert;
-
25 eine
zusammengesetzte Szene der nicht zusammengesetzten Szene, in 18 illustriert, wenn
die rechtwinklige vergrößernde Linse
in die von-Hinten-nach-Vorne-Reihenfolge
zusammengesetzt ist;
-
26 ein
Beispiel des Werkzeuges 128 der Benutzeroberfläche, dargestellt
in 1 illustriert;
-
27 eine
Linse mit multiplen Regionen und einem begrenzten Umfang an Operationen
illustriert;
-
28 ein
Beispiel illustriert, das die Linse, dargestellt in 26 verwendet,
um ein Damebrett-Muster auszubilden;
-
29 eine
Szenen-Liste illustriert zum Ausbilden des Bildes, dargestellt in 31 und 32;
-
30 die
Szenen-Liste dargestellt in 29 illustriert,
wie sie entlang der Sichtlinie 30-30 in den Bildern, dargestellt
in 31 und 32 zu
sehen ist;
-
31 die
Art und Weise illustriert, in welcher die Szenen-Liste, dargestellt
in den 29 und 30 sich
mit einem Linsen in & out-Cluster
zusammensetzt;
-
32 die
Art und Weise illustriert, in welcher die Szenen-Liste, dargestellt
in 29 und 30 sich mit
einem Linsen-in-Cluster zusammensetzt;
-
33 eine
Szenen-Liste illustriert, in welcher ein Linsen-in-Cluster und Linsen-out-Cluster spezifiziert
ist; und
-
34 ein
zusammengesetztes Bild der Szenen-Liste, dargestellt in 33,
illustriert wie sie entlang der Sichtlinie 33-33 zu sehen ist.
-
A. System-Übersicht
-
Im
Folgenden wird nun auf die Zeichnungen Bezug genommen, wobei die
Darstellung zum Zwecke der Beschreibung der Erfindung erfolgt und
nicht zu deren Begrenzung; dabei illustriert 1 ein computergestütztes zweidimensionales
bilddarstellendes System 108 zur Durchführung der vorliegenden Erfindung.
Das bilddarstellende System 108 ist eine Computer Arbeitsstation
od. dgl., die adaptiert ist, um elektronische Bilder zu speichern
und zu verarbeiten, um sie für
einen Anwender (oder einen grafischen Designer) abzubilden. Das bilddarstellende
System 108 schließt
einen Prozessor 110 ein, einen Speicher 112, einen
Bildschirm 114, einen Datenspeicher 116 und ein
Eingabegerät
für den
Anwender 119, wie z.B. eine Maus 118 und eine
Tastatur 120. Alternative Eingabegeräte 119 schließen einen
Touch-Screen, eine Rollkugel (track ball), ein integriertes Berührungsfeld
(touch pad) oder eine Griffelmaus (pen mouse) (nicht gezeigt) ein.
Der Speicher 112 wird zum Speichern verschiedener Anwendungs-Programme
sowie von elektronischen Bildern zur Verfügung gestellt. Eines der Anwender-Programme
des bilddarstellenden Systems ist ein bilddarstellendes Programm 122.
Bilder erzeugt unter Verwendung des bilddarstellenden Programms 122 werden
im Datenspeicher 116 gespeichert, welcher eine Langzeitspeicherung
für elektronische
Darstellungen zur Verfügung
stellt. Der Bildschirm 114 wird verwendet, um die elektronischen
Darstellungen, die von einem Anwender mit dem bilddarstellenden Programm 122 entwickelt
werden, darzustellen. Der Prozessor 110 empfängt die
Befehle vom Eingabegerät 119,
um dadurch die Anwendungs-Software im Speicher 112 aufzurufen
und dadurch Bilder mit dem bilddarstellenden Programm 122 zu
erzeugen und auf dem Bildschirm 114 darzustellen.
-
Das
bilddarstellende Programm 122, das vom Prozessor 110 ausgeführt wird,
wird verwendet, um grafische Darstellungen zu entwickeln, welche
auf dem Bildschirm 114 zu sehen sind. Darüber hinaus
können Ausdrucke
von Bildern erzeugt unter Verwendung des bilddarstellenden Programms 122 erzeugt
werden unter Verwendung des Scan/Druck-Systems 124, das
mit dem darstellenden System 108 durch das Netzwerk 126 verbunden
ist. Das bilddarstellende Programm 122 erleichtert das
Design der grafischen Darstellungen mit einem Benutzeroberflächen-Werkzeug 128,
welches einem Anwender auf dem Bildschirm 114 präsentiert
wird. Einmal erzeugt werden diese grafischen Darstellungen elektronisch
auf dem Datenspeicher 116 gespeichert, um später wieder
aufgerufen werden zu können.
Grafische Darstellungen können
aus Bilder bestehen, die eingescannt wurden unter Verwendung des
Scan/Druck-Systems 124 oder aus Beschreibungen von Bildern
erzeugt unter Verwendung von Anwendungs-Software des Anwenders gespeichert
im Speicher 112. Im allgemeinen stellt das bilddarstellende
Programm 122 Beschreibungen von Bildern zur Verfügung, welche
ein elektronisches Dokument unter Verwendung von Primitiven auf
höchster
Ebene definiert durch eine Seiten-Beschreibungs-Sprache (Page Description
Language, PDL) definieren.
-
Die
Eingabegeräte 119 werden
verwendet, um Bildelemente zu definieren, welche verwendet werden, um
eine elektronische Darstellung zu erzeugen. Bildelemente schließen geometrische
Formen, Raster und Zeichen ein. Geometrische Formen werden unter
Verwendung von beispielsweise Linien- oder Vektor-Grafiken definiert.
Bildelemente, die von einem Anwender definiert werden, werden durch
das bilddarstellende Programm 122 manipuliert. Das bilddarstellende
Programm 122 erzeugt Darstellungen unter Verwendung einer PDL,
wie z.B. Postscript®, wie sie beschrieben
wird in "PostScript
Lan guage Reference Manual",
Second Edition, Addison-Wesley Publishing Co., 1990. Ein weiteres
Beispiel einer PDL ist InterpressTM, die
beschrieben wird in "Interpress:
The Source Book",
by Harrington et al., Simon & Schuster,
Inc., New York, New York, 1988. Eine jede dieser PDLs stellt einen
Satz von Befehlen zur Verfügung,
die verwendet wer den, um verschiedene Grafik- und Text-enthaltende
Bildelemente, die ein Bild ausbilden, zu beschreiben. Beispielsweise
kann eine PDL ein Rechteck in einem Bild durch die Angabe von Koordinaten
seiner Ecken beschreiben, die Dicke der Kanten, sein Füll-Muster, seine Farbe,
wie auch von anderen Attributen. Die PDL kann auch verwendet werden,
um in dem Eingabebild ein Raster-Bild oder eine Referenz zu einem
oder mehreren Raster-Bildern zu enthalten.
-
B. Apparat zum Erzeugen
einer Szene mit sich überlagernden
Linsen
-
Die
vorliegende Erfindung betrifft eine Zusammensetzung von Linsen (oder
SG-Filtern), die einen Teil der grafischen Komponente einer elektronischen
Darstellung ausbilden. Der Effekt einer Liste ist nur sichtbar innerhalb
der Grenzen des Objektes, welches die Linse spezifiziert. Der Effekt
einer Linse kann unabhängig von
den Grenzen des Objektes, das durch die Linse gesehen wird, manipuliert
werden. Das bilddarstellende Programm 122, das im Speicher 112 des
darstellenden Systems 108 arbeitet, erzeugt und manipuliert
Bildobjekte.
-
Genauer
gesagt, ist das bilddarstellende Programm 122 so adaptiert,
dass es eine Eigenschaft eines Bildobjekts so spezifiziert, dass
es eine Linse darstellt. Eine Linse (oder ein SG-Filter) ist hier
im Folgenden als eine Farbeigenschaft eines Bildobjektes mit einem
Satz von gebundenen Regionen definiert, dessen Bildeigenschaften
eher einen Operator als eine Konstante darstellen. Ein Operator
einer Linse (im Folgenden hier Linsen-Operator") führt
eine Filteroperation auf diejenigen Objekte durch, die darunter
in einer Szene geschichtet sind. Es wird von den Fachleuten auf
dem Gebiet wohl verstanden werden, dass ein Linsenoperator jegliche
Art von Prozedur darstellen kann, welche einen Satz von Objekten
in einer Szene in eine andere Szene transformieren kann. Beispiele
von Linsen-Operatoren sind ein Färbe-Operator,
ein Vergrößerungs-Operator, ein Operator,
welcher die Reihenfolge verändert,
in welcher Objekte in einer Szene übereinanderliegen und ein Operator,
welcher eine Transformation (beispielsweise eine affine Transformation)
auf die Objekte, die unterhalb der Linse liegen, anwendet.
-
Viele
der verschiedenen Linsen (oder SG-Filter) verlangen, dass bestimmte
Parameter, wie z.B. Farbe (für
färbende
Linsen) oder Größenordnungen
(für skalierende
Linsen) durch einen Anwender spezifiziert werden. Einige Linsen
verlangen, dass Sätze
von Parametern durch einen Anweder spezifiziert werden. Beispielsweise
haben Eigenschafteneinstellende Linsen viele Parameter, die eingestellt
werden können
einschließend Füll-Farbe, Linien-Farbe,
Strich-Muster oder Hintergrundfarbe. Diese stellen die gleichen
Arten von Parametern dar, die auf Objekte definiert in einer Szene
angewandt werden können,
welche nicht so spezifiziert worden sind, als dass sie die Eigenschaften
einer Linse aufweisen.
-
Um
eine Möglichkeit
zur Verfügung
zu stellen, um interaktiv diese Parameter von verschiedenen Linsen
zu manipulieren, weist das darstellende System 108 einen
Systemweiten Modus mit Namen „bearbeite Linse" (Edit Lens) auf.
In diesem systemweiten Modus werden alle der Eigenschaften einstellenden
Befehle in dem Oberflächenwerkzeug 128 auf
die Parameter einer ausgewählten
Linse anstelle einer ausgewählten
Form angewandt. Zur Vervollständigung
gibt es ein Password-basiertes Textformat zum Spezifizieren der
Linsen (oder SG-Filter)-Parameter. Ein Menü-Punkt, welcher die aktuelle
Linsenbeschreibung in ein Manuskript überschreibt, erleichtert die
Verwendung des Password-basierten Textformats. Folglich vereinfacht
die Verwendung eines Menüpunktes
den Schritt der Modifizierung der Beschreibung sowie des umgekehrten
erneuten Einlesens.
-
Das
bilddarstellende Programm 122 erzeugt manipulierte Linsen
in einer ähnlichen
Art und Weise, wie andere grafische Objekte. Die Grenzen der Objekte
spezfiziert als Linsen weisen Breite und Farbe auf. Desweiteren
können
Objekte spezfiziert als Linsen irgendwo in einer 2,5-dimensionalen Überlagerungs-Reihenfolge
einer Szene liegen und können
in hierarchische Gruppierungen, genannt Cluster, eingeschlossen
werden. Anwender können
auswählen,
ob eine Linse enthalten in einem Cluster nur auf Objekte in dem
Cluster zugreift, nur auf Objekte außerhalb des Clusters, oder
auf beide. Das Definieren von Abgrenzungsregeln ist sinnvoll sowohl
aus Gründen
der Leistungsfähigkeit
als auch, um eine gewisse Flexibilität des Designs zur Verfügung zu
stellen.
-
C. Erzeugung einer Szene
mit überlagernden
Linsen
-
Das
bilddarstellende Programm 122 die Art und Weise zur Verfügung, in
welcher ein Objekt spezifiziert werden kann, so dass es eine Linseneigenschaft
aufweist. 2 ist ein Flussdiagramm, welches
die Schritte zum Bedienen des Werkzeugs der Anwender-Benutzeroberfläche 128 (dargestellt
in 1 und 26) zum Erzeugen einer Szene
darstellt, wie auch das Spezifizieren, dass die Objekte in der Szene
die Eigenschaften einer Linse (oder eines SG-Filters) aufweisen.
Anfangs empfängt
im Schritt 200 der Prozessor 110 des bilddarstellenden
Systems 108 Befehle des Anwenders von den Eingabegeräten 119,
welche Umrissgrenzen von Objekten spezifizieren. Diese Objekte werden
verwendet, um eine Szene in einer Darstellung zu erzeugen. Die Befehle
sind die Eingaben für
das bilddarstellende System 108 über das Werkzeug der Benutzeroberfläche des
Anwenders 128, das auf den Bildschirm 114 dargestellt
ist.
-
Genauer
gesagt, schließen
die Befehle empfangen durch das bilddarstellende System 108 im
Schritt 200 Anwenderbefehle ein, welche überlagernde
Objekte erzeugen. Diese überlagernden
Objekte, welche eine Szene definieren, werden in Datenstrukturen
im Speicher 112 gespeichert. Wenn ein Bild auf den Bildschirm 114 dargestellt
wird, oder auf einem Aufzeichnungsmedium durch den Drucker 124 gedruckt
wird, verwendet das bilddarstellende Programm 122 die Interpress-
oder Postscript darstellenden Formate, wie oben beschrieben, um
die Datenstrukturen gespeichert im Speicher 112 in eine
ausdruckbare Form überzuführen. Diese
Formate definieren Befehle zum Spezifizieren von Objekten als Formen,
welche durch Linien- und keilförmige
Kurven in einer Geräteunabhängigen Art
und Weise begrenzt werden. Darüber
hinaus definieren diese Formate, wie Formen mit einer Farbe oder
Musterung in einer Geräte-unabhängigen Weise
gefüllt
werden können.
-
Im
Schritt 202 werden zusätzliche
Befehle des Anwenders durch das bilddarstellende System empfangen,
welche die Eigenschaften von zumindest einigen der überlagernden
Objekte in einer Szene spezifizieren, so dass sie Linsen (oder SG-Filter)
sind. Der Schritt des Spezifizierens eines Objektes, so dass dies
eine Linse darstellt, schließt
die Aktion des Auswählens
eines Linsen-Typus aus einem Menü von
Linsen-Typen spezfiziert in dem Werkzeug der Anwender-Benutzeroberfläche 128 ein.
Das Menü von
Linsentypen schließt
färbende
(einschließlich
diejenigen, welche Formen hinzufügen),
vergrößernde,
transformierende und die Reihenfolge sortierende Linsentypen ein.
Objekte spezifiziert mittels Anwender-Befehlen im Schritt 202 können in
einer ähnlichen
Art und Weise ausgewählt
werden und manipuliert werden, wie diejenigen Objekte dargestellt
auf dem Bildschirm 114. Im Schritt 204 wird die
Szene von Objekten spezifiziert durch die Befehle des Anwenders in
den Schritten 200 und 202 zusammengesetzt und
in Übereinstimmung
mit den Eigenschaften der Objekte spezifiziert als Linsen in der
Szene erstellt. Eine Szene wird in Schritt 204 zusammengestellt,
sobald das bilddarstellende Programm 122 Objekte erkennt,
welche als Linsen in den Schritten 200 und 202 spezifiziert
wurden, welche überlagernd
sind. Eine Szene wird zusammengestellt im Postscriptformat und zur
Darstellung auf dem Bildschirm 114 oder einem Aufzeichnungsmedium
unter Verwendung eines Druckers 124 erstellt. Alternativ
können
Szenen, die zusammengestellt werden, in einem Datenspeicher 116 gespeichert
werden für
späteren
Zugriff durch einen Anwender.
-
3 ist
ein Beispiel einer nicht-zusammengestellten Szene 300,
die erzeugt wird gemäß den Schritten,
wie in 2 dargelegt. Im Schritt 200 wird die
nichtzusammengestellte Szene 300 definiert unter Verwendung
des Hintergrundrechtecks 302 und von drei Rechtecksformen 304, 306 und 308.
Im Schritt 202 wird die Füllfarbe einer jeden rechteckigen
Form 304, 306 und 308 als eine färbende Linse
mit den färbenden
Farben Zyanblau, Gelb bzw. Magentarot (wobei jede Farbe in 3 unter
Verwendung verschiedener Füllmuster
repräsentiert
wird) spezifiziert. Die Reihenfolge, in welcher die Formen überlagern,
wird durch eine Szenen-Liste 400, welche in 4 illustriert
ist, spezifiziert. Der Pfeil 402 deutet die Reihenfolge
an, in welcher die Objekte in der Szene in einer von-Hinten-nach-Vorne-Reihenfolge
geschichtet sind. 4 illustriert jede Form, die
so definiert ist, dass sie Eigenschaft einer Linse aufweist, mit
einer kleinen Lupe.
-
Bei
Auswahl einer Linseneigenschaft in Schritt 202 in 2 weist
die Linse abhängig
vom Typus der Linse (beispielsweise färbende, vergrößernde etc.)
eine oder zwei vordefinierte Zusammenstellungs-Reihenfolgen auf.
Jede Linse stellt sich entweder in einer Von-Vorne-nach-Hinten oder
einer Von-Hinten-nach-Vorne-Reihenfolge zusammen. In einer alternativen
Ausführungsform
kann die Reihenfolge, in welcher sich eine Linse zusammensetzt (d.h.
Von-Vorne-nach-Hinten oder Von-Hinten-nach-Vorne) unabhängig für jede Linse mit
Hilfe des Werkzeugs des Anwender-Benutzeroberfläche 128 eingestellt
werden. Die Reihenfolge, in welche sich eine Linse zusammensetzt
(d.h. die Zusammenseznungsreihenfolge einer jeder Linse) ist unabhängig und
zu unterscheiden von der Reihenfolge, in welcher die Objekte in
der Szenen-Liste 400 geschichtet sind. Die Zusammensetzungsreihenfolge
einer Linse ist eine Eigenschaft einer Linse, welche signfikant
das letztendliche Erscheinungsbild einer Szene, nachdem diese im
Schritt 204 zusammengestellt ist, verändern kann.
-
Im
Schritt 204 wird eine Szene, welche in den Schritten 200 und 202 definiert
worden ist, zusammengesetzt und fertiggestellt. Eine Szene, welche
durch eine Liste von Formen definiert ist, wird zusammengesetzt wenn
die Liste von Formen auf ein Bild beschrieben in einem Geräte-unabhängigen Format,
wie z.B. Postscript, reduziert worden ist. Eine Szene wird fertiggestellt,
wenn das Bild der Szene, beschrieben durch irgendein PDL in ein
Geräte-abhängiges Format
zur Anzeige oder zur Reproduktion auf einem Aufzeichnungsmedium
reduziert worden ist. Beispielsweise illustriert 5 die
zusammengesetzte Szene 500 der nicht-zusammengesetzten
Szene 300, dargestellt in 3. Im allgemeinen
setzen Objekte, definiert als Linsen durch ihre Überlagerung mit anderen Objekten
zusammen. Die Lösung
der Zusammensetzung einer Szene wird komplex, sobald als zwei oder
mehrere Linsen in einer Szene sich überlagern. Beispielsweise weist
die zusammengesetzte Szene 500 der nicht-zusammengesetzten
Szene 300, definiert in 3 nun insgesamt
acht verschiedene Regionen (einschließlich des Hintergrundes) auf,
wobei jede Region eine unterschiedliche Farbe aufweist, wie durch
die unterschiedlichen Füllmuster
in 5 illustriert wird. Die überlagernden Regionen, angezeigt
durch die Referenz- Nrn. 502, 504 und 506 werden
durch zwei Linsen gefärbt,
wobei die überlagernde Region
angezeigt durch die Referenz- Nr. 508 durch drei Linsen
gefärbt
wird.
-
D. Zusammensetzen einer
Szene mit sich überlagernden
Linsen
-
Die
vorliegende Erfindung betrifft das Zusammensetzen einer Szene mit überlagernden
Objekten, wobei mehr als eines der Objekte als eine Linse spezfiziert
wird (oder als ein SG-Filter). Jede Linse weist einen Linsen-Operator
mit einer vordefinierten Zusammensetzungsreihenfolge auf (d.h. Von-Hinten-nach-Vorne oder
Von-Vorne-nach-Hinten). Wenn eine Szene fertiggestellt wird zur
Anzeige auf einem Bildschirm, wird jedes Objekt angeordnet in einer
Szenen-Liste zusammengesetzt (falls notwendig) und in einer Von-Hinten-nach-Vorne-Reihenfolge
geschichtet. Wenn ein Objekt spezfiziert als eine Linse zusammengesetzt
wird, wird der Linsen-Operator der Linse auf alle der Objekte in
einer Szene, geschichtet dahinter, oder darunter angewandt. Das
Ergebnis der Zusammensetzung wird durch Linsen-Begrenzungen abgeschnitten
und in das Bild auf dem Bildschirm 114 gezogen. Abhängig vom
Typus der Linse setzen sich zwei Linsen, welche sich überlagern,
entweder in einer Reihenfolge Von-Hinten-nach-Vorne oder Von-Vorne-nach-Hinten
zusammen. Jedes Objekt in der Szenen-Liste, das als eine Linse spezifiziert
ist, wird eingefroren, wenn es von einem anderen Objekt überlagert
wird, das als eine Linse spezifiziert ist. Die Überprüfung, wann eine Linse eingefroren ist,
bestimmt die Reihenfolge, in welcher jedes Objekt in einer Szene
zusammengesetzt wird.
-
6A-6G sind
Flussdiagramme, welche die Schritte zur Durchführung der Operationen darstellen,
welche eine Szene von Formen mit sich überlagernden Linsen im Schritt 204 in 2 zusammensetzen. Jedes
Flussdiagramm, dargestellt in 6A, 6B, 6C, 6D, 6E, 6F und 6G wird
hier im Folgenden dargestellt unter Verwendung des Pseudo-Codes
in den Tabellen 1, 3, 4, 5, 6, 7 bzw. 8. Darüber hinaus stellt die Tabelle
2 den Schritt 610 in 6A in
einem Pseudo-Code dar. Linsen werden zusammengesetzt unter Verwendung
eines Form-in-Form-aus-Verfahren zur Durchführung (model-in-model-out-method). Wenn
eine Szene zusammengesetzt wird mit einem Form-in-Form-aus-Verfahren
zur Durchführung
wird eine Form einer Szene einer Linse unterzogen und eine neue
Form einer Szene wird erzeugt, wie sie durch die Linse wahrgenommen
wird.
-
Das
Flussdiagramm in 6A, welches im Pseudo-Code in
Tabelle 1 dargestellt ist, beginnt am Schritt 600. Vor
der Durchführung
des Schrittes 600, werden alle Formen in einer elektronischen
Darstellung (d.h. eine Szene) im Speicher 112 in einer
sortierten Liste gespeichert, welche hier als Szenen-Liste definiert
wird. Ein Beispiel einer Szenen-Liste
ist die Szenen-Liste 400, dargestellt in 4.
Eine Szenen-Liste wird beschrieben in dem bilddarstellende Programm 122 als
ein Cluster (ein nicht-schneidender Cluster) mit Tochter-Formen. Die
Tochter-Formen eines Clusters schließen ein Hintergrundrechteck
ein, welches eine Hintergrundfarbe aufweist. Darüber hinaus schließen die
Tochter-Formen die anderen Formen ein, welche eine Szene definieren. Sobald
jedes der Objekte (oder Formen) verwendet, um eine Szene zu definieren,
in eine Reihenfolge gebracht worden ist, um einen Cluster auszubilden,
wird jedes der Objekte in diesem Cluster in einer Von-Hinten-nach-Vorne-Reihenfolge
im Schritt 602 im Postscript-Format zur Anzeige auf dem Bildschirm 114 oder
fertig zum Drucken auf einem Aufzeichnungsmedium an Drucker 124 erstellt.
-
-
-
7 illustriert
eine generische Datenstruktur eines schneidender Clusters 700.
Der schneidende Cluster 700 ist eine Gruppierung von individuellen
Objekten ähnlich
zu einem Cluster (d.h. einem nicht-schneidenden Cluster). Anders
als ein nicht-schneidender
Cluster enthält
ein Objekt, das als schneidender Cluster definiert wird, eine schneidende
Region 702. Darüber
hinaus enthält
ein schneidender Cluster eine sortierte Liste von Tochter-Formen 704 ähnlich zu
einem Cluster (d.h. einem nicht-schneidenden
Cluster).
-
Jede
der Tochter-Formen eines schneidenden Clusters 700 oder
eines nicht-schneidenden
Clusters können
entweder eine einfache Form, einen Cluster oder einen schneidenden
Cluster darstellen. Die schneidende Region 702 eines schneidenden
Clusters wird erzeugt unter Verwendung der Erstellungsprozedur,
dargestellt in einer Klasse von Prozeduren 706. Die Tochter-Formen
des schneidenden Clusters werden in einer Von-Hinten-nach-Vorne-Reihenfolge
gezeichnet, gefolgt von einem Grenzmuster der letzten Form, falls
dies notwendig ist.
-
Bezug
nehmend erneut auf 6A, wird der "Zeichne den Cluster"-Schritt 602 durchgeführt für entweder
Cluster oder schneidende Cluster durch Durchschreiten einer Szenen-Liste (oder einer
Formen-Liste), um jedes Objekt in einem Cluster in einer Von-Hintennach-Vorne-Reihenfolge
zu zeichnen. Der Schritt 602 des Zeichnens eines Clusters
wird entweder durch den "Zeichne
Szene"-Schritt 600 oder
die Schritte 609 oder 628 aufgerufen, welche unten
diskutiert werden. Im Schritt 600 wird ein Befehl empfangen,
eine Szene zu zeichnen. In diesem Schritt durchläuft die Szenen-Liste, welche
eine Szene definiert, den „Zeichne
Cluster"-Schritt 602 als
eine Liste von Formen (d.h. eine Formen-Liste). Es sollte festgehalten
werden, dass die Szenen-Liste, die als ein Cluster repräsentiert
wird, Objekte enthalten kann, welche Cluster oder schneidende Cluster darstellen.
Schritt 602 beginnt durch Bestimmung, ob die Liste von
Formen, welche ihm unterzogen wird, einen schneidenden Cluster darstellt.
Falls die Liste von Formen einen schneidenden Cluster darstellt,
dann werden die Schritte 616 und 604 durchgeführt; andernfalls
wird Schritt 605 durchgeführt. Im Schritt 616 werden
Postscript-Befehle erzeugt, um den derzeitigen Grafikzustand der
Szene, die zu erstellen ist, zu speichern. Ein grafischer Zustand
speichert die laufenden grafischen Steuerparameter, welche das globale
System definieren, in welchem Operatoren eines PDL-darstellenden
Formats ausgeführt
werden. Durch Speichern der laufenden grafischen Zustände wird
die laufende schneidende Region gespeichert. Im Schritt 604 wird
die schneidende Region des Clusters, der zu zeichnen ist, so eingestellt,
um den Pfad des schneidenden Clusters zu schneiden. Zusammen mit
der Operation von PDLs, wie z.B. Postscript, verstärkt dieser
schneidende Pfad jeden schneiden Pfad, der bereits als Teil des
grafischen Zustandes in Kraft ist, was in einer kombinierten schneidenden Region
resultiert, die so klein oder kleiner ist, wie/als die frühere schneidende
Region. Im Schritt 605 wird eine "Tochter"-Variable
gesetzt, um die erste Form in der Liste von Formen abzugleichen,
welche den Zeichne den Cluster"-Schritt 602 passiert
hat. Im Schritt 606, wird, falls die Tochter-Variable als eine
Linse bestimmt wird, Schritt 607 durchgeführt; andernfalls
wird Schritt 608 durchgeführt. Im Schritt 607 wird
die Linse, identifiziert im Schritt 606, im Schritt 624 (dargestellt
in 6B) eingefroren und die Tochter-Variable wird
gleich dem neuen Cluster gesetzt, welchen der Schritt 624 zurückführt. Im
Schritt 608 wird dann, falls die Tochter-Variable als ein
Cluster bestimmt wird, Schritt 609 durchgeführt; andernfalls
wird Schritt 610 durchgeführt. Im Schritt 609 wird
Schritt 602 rekursiv durchgeführt, um einen Cluster für den Cluster,
identifiziert im Schritt 608, zu zeichnen.
-
Im
Schritt 610 wird eine einfache Form einer Szene gezeichnet,
deren Details in Tabelle 2 dargestellt sind. Eine einfache Form
wird gezeichnet unter Verwendung der Operatoren eines darstellenden
PDL-Formats, wie z.B. Postscript. Diese Operatoren werden verwendet,
um die Form des Objektes in einem Geräte-unabhängigen Format zu definieren.
Beispielsweise wird die Umrisslinie in einfacher Form in Bits oder
anderen Geräte-un
abhängigen
Formate erstellt durch Emittieren und anschließendes Ausführen von Postscript-Befehlen,
wie z.B. moveto, lineto, arcto, oder curveto. Darüber hinaus
kann eine einfache Form eine Füll-Farbe
aufweisen, welche die Farbe der Region, definiert durch die Umrisslinie
der einfachen Form, darstellt. Schließlich wird nach Erstellen der
Umrisslinie und der Befüllung
einer einfachen Form die Grenze der Form unter Verwendung des Postscript-Befehls "stroke" erzeugt, falls dies
notwendig ist.
-
-
Beim
Schritt 611 wird, falls die Tochtervariable die letzte
Form in der Liste von Formen ist, der Schritt 613 durchgeführt; andernfalls
wird der Schritt 612 durchgeführt. Beim Schritt 612 wird
die Tochtervariable gleich der nächsten
Form in der Liste von Formen gesetzt und Schritt 606 wird
wiederholt. Beim Schritt 613 werden, falls der Cluster
ein schneidender Cluster ist, dann die Schritte 617 und 614 durchgeführt; andernfalls wird
Schritt 615 durchgeführt.
Beim Schritt 617 wird Postscript emittiert, um den grafischen
Zustand der zu erstellenden Szene wieder herzustellen. Beim Schritt 614 wird
der Pfad des schneidenden Clusters gestrichelt. Ein Pfad wird gestrichelt,
wenn eine Linie einer gewissen Dicke entlang eines Pfades, gebildet
unter Verwendung von Konstruktionsoperatoren (beispielsweise moveto,
lineto, closepath), gezogen wird. Beim Schritt 615 endet
der Schritt 602 und kehrt zu irgendeinem der Schritte 609, 600 oder 628 zurück.
-
Beim
Schritt 624, dargestellt in 6B wird
ein Objekt, (beispielsweise eine Form), das als ein Linsenfilter
definiert ist, eingefroren. Die Schritte in 6B werden
im Pseudocode in Tabelle 3 dargestellt. Wie oben dargestellt, wird,
wenn ein Linsenfilter eingefroren wird, er in einem schneidenden
Cluster umgewandelt. Im allgemeinen wird eine Linse eingefroren,
wenn sie ersetzt wird mit einem Cluster an Formen, die unabhängig von
anderen Formen ausgebildet werden. Schritt 624, welcher
drei Schritte enthält,
wird entweder von Schritt 654 (6E), Schritt 607 (6A)
oder Schritt 669 (6F) aufgerufen.
Anfangs wird im Schritt 620 eine Unter-Liste von Formen
berechnet, deren Details in 6C dargestellt
sind. Die Unter-Liste von Formen definiert den Teil der Szene, der
unterhalb der Linse liegt. Anschließend wird im Schritt 621 die
Unter-Liste, berechnet am Schritt 620, durch die Linse
gefiltert, die eingefroren werden soll, um eine neue Szene zu erzeugen.
Details des Schrittes 622 sind in 6D dargestellt.
Die neue Szene (d.h. die linsifizierte Formen-Liste) muss keinerlei Formen
aufweisen, die von anderen Formen hinsichtlich ihrer Definition
(d.h. Linsen) abhängig
sind. Letztendlich wird am Schritt 622 ein schneidender
Cluster erzeugt für
die Linse, mit den Elementen in der neuen Szene (berechnet am Schritt 621)
als Töchtern
und die Linsenform als ein schneidender Rahmen (Clipper). Nach Erzeugen
eines schneidenden Clusters im Schritt 622 wird der Schritt 623 durchgeführt, welcher
den neu erzeugten schneidenden Cluster zu einem der Aufrufer an
den Schritten 654, 607 oder 669 zurückführt.
-
-
6C stellt
im Detail die Schritte zum Berechnen einer Unter-Liste am Schritt 620 in 6B dar.
Darüber
hinaus stellt die Tabelle 4 die Schritte, dargestellt in 6C in
Pseudocode dar. Schritt 620 wird entweder von Schritt 628 oder
Schritt 606 aufgerufen, wobei diese Schritte eine laufende
Form und eine laufende Liste von Formen (d.h. eine Formen-Liste)
passieren, die verwendet werden soll zum Berechnen einer Unter-Liste für die laufende
Form. Im Schritt 625 wird eine Bestimmung durchgeführt, ob
die laufende Form, für
die eine Unter-Liste für
die laufende Formen-Liste berechnet werden soll, einen Teil der
laufenden Formen-Liste ausbildet oder nicht. Falls die laufende
Form ein Element der laufenden Formen-Liste ist, dann wird Schritt 619 durchgeführt; andernfalls
wird einer der Schritte 626 bis 638 durchgeführt. Im
Schritt 619 wird eine Unter-Liste berechnet für die laufende
Form durch Identifizieren von allen der Elemente in der laufenden
Formen-Liste, bis hin zu, jedoch nicht einschließend der laufenden Form (beispielsweise
Linse), sortiert in einer Reihenfolge von Hinten nach Vorne.
-
Die
Schritte 626 bis 638 in 6C betreffen
die Berechnung eines eine Unter-Liste ausbildenden Teiles von einer
von drei Cluster-Gruppierungen, welche im Detail in 26,
unten beschrieben werden. Kurz gesagt, schließen die verschiedenen Cluster-Gruppierungen einen
Linsen-in&aus-Cluster,
einen Linsen-in-Cluster und einen Linsen-aus-Cluster ein. Im Schritt 626 wird
eine "Eltern-Cluster"-Variable gleich
dem Cluster gesetzt, in welchem die Form eine Tochter in der laufenden
Formen-Liste darstellt. Beim Schritt 627 werden diejenigen
Formen von hinten nach vorne in der laufenden Formen-Liste bis hin
zu, jedoch nicht einschließend der
laufenden Form in dem Eltern-Cluster gleich einem Linse-in-Cluster
gesetzt (d.h. einer In-Liste). Die laufende Form ist dann gleich
zu dem Eltern-Cluster am Schritt 628. Beim Schritt 629 wird
Schritt 620 rekursiv aufgerufen. Im Schritt 630 wird
die berechnete Unter-Liste, zurückerhalten
vom Schritt 629, gleich einem Linsen-aus-Cluster gesetzt
(d.h. Aus-Liste).
-
Falls
der Cluster-Gruppierungs-Typ der laufenden Linse ein Linsen-aus-Cluster
am Schritt 631 ist, dann wird der Schritt 632 durchgeführt; andernfalls
wird der Schritt 633 durchgeführt. Am Schritt 632 wird
die berechnete Unter-Liste gleich dem Linsen-aus-Cluster, berechnet am Schritt 629,
gesetzt. Falls der Cluster-Gruppierungs-Typ der laufenden Linse
ein Linsen-in-Cluster am Schritt 633 ist, dann wird der
Schritt 634 durchgeführt;
andernfalls wird der Schritt 635 durchgeführt. Am
Schritt 634 wird die berechnete Unter-Liste dem Linsen-in-Cluster,
berechnet am Schritt 630, gleichgesetzt. Am Schritt 635 wird
die berechnete Unter-Liste gleich dem Linsen-aus-Cluster gesetzt,
gefolgt von dem Linsen-in-Cluster, um einen Linsen-in&aus-Cluster zu
definieren. Falls die erste Form der Unter-Liste eine Hintergrundform
am Schritt 636 ist, dann wird der Schritt 637 durchgeführt; andernfalls
wird der Schritt 639 durchgeführt. Falls die erste Form der
Liste von Formen (d.h. der Formen-Liste) eine Hintergrundform am
Schritt 637 aufweist, dann wird Schritt 639 durchgeführt; andernfalls
wird der Schritt 638 durchgeführt. Am Schritt 638 wird
die Hintergrundform der Liste von Formen als die erste Form der
Unter-Liste eingefügt.
Am Schritt 639 wird die berechnete Unter-Liste am Schritt 630 zu einem
der Aufrufer an den Schritten 628 oder 606 zurückgeführt.
-
-
-
6D stellt
die Schritte zum Filtern einer Unter-Liste durch eine laufende Linse
dar, um eine neue Szene im Schritt 621 in 6B zu
erzeugen. Darüber
hinaus stellt die Tabelle 5 die Schritte, gezeigt in 6 in Pseudocode dar. Anfangs werden am
Schritt 640 die Formen in der Unter-Liste (d.h. Formen-Liste),
berechnet am Schritt 620, kopiert. Am Schritt 641 wird
eine Bestimmung durchgeführt,
ob die laufende Linse, die eingefroren werden soll, am Schritt 624,
eine Linse vom Typ Von-Hinten-nach-Vorne oder eine vom Typ von-Vorne-nach-Hinten
darstellt. Abhängig
vom Typ der Linse, der am Schritt 624 eingefroren werden
soll, werden die Schritte 642 und 643 durchgeführt in verschiedenen
Reihenfolgen. Falls der Linsentyp eine Linse von der Art einer Linse
Von-Hintennach-Vorne ist, dann wird der Schritt des Einfrierens 642 durchgeführt, gefolgt
von einem modfizierenden Schritt 643, wie durch die Schritte 644 bzw. 645 angezeigt.
Andernfalls, folgt die Linse einer Linse von der Art einer Von-Vorne-nach-Hinten
Linse, dann wird der modifizierende Schritt 643 durchgeführt, gefolgt
von einem Schritt des Einfrierens 642, wie er durch die
Schritte 646 bzw. 647 angezeigt wird. Kurz gesagt,
friert der Schritt 643 irgendwelche Linsen, geschichtet
unterhalb der laufenden Linse, die eingefroren werden soll, ein,
wohingegen der Schritt 643 jede Form unterhalb der laufenden
Linse in Übereinstimmung
mit dem Operator der laufenden Linse (d.h. der Filterfunktion) modfiziert.
Die Ausgabe von Schritt 621 ist eine linsfizierte Formen-Liste,
die eine Repräsentation
einer Szene, definiert durch eine Unter-Liste durch eine Linse, darstellt.
Die linsfizierte Formen-Liste zeigt keinerlei Formen, die von anderen
auszubildenden Formen abhängig
sind.
-
-
6E stellt
die Schritte zum Durchführen
der Schritte 642, wie in 6D dargestellt,
dar. Darüber hinaus
stellt die Tabelle 6 den Schritt 642 im Pseudocode dar.
Im allgemeinen friert der Schritt 642 Formen in der Unter-Liste
einer laufenden Linse (d.h. Tochter) ein, durch Ersetzen einer jeden
Linse in der Unter-Liste mit einem Cluster von Formen, die unabhängig voneinander
ausgebildet werden. Wie in 6D gezeigt,
wird der Schritt 642 aufgerufen entweder von den Schritten 644 oder 647.
Schritt 642 durchläuft
eine laufende Linse und eine Unter-Liste, wenn er aufgenufen wird.
Am Schritt 649 wird eine neue Liste definiert, und gleich
einer leeren Liste gesetzt. Am Schritt 650 wird eine "Tochter"-Variable gesetzt,
um die erste Form in der Unter-Liste zu identifizieren. Falls die
Form, welche die Tochter-Variable identifiziert, ein Cluster vom
Schritt 651 ist, dann wird der Schritt 652 durchgeführt; andernfalls
wird der Schritt 653 durchgeführt. Am Schritt 652 wird
der Cluster am Schritt 664, wie in 6F gezeigt,
eingefroren. Das heißt,
jegliche Formen, die Linsen darstellen, werden entfernt und ersetzt
mit einem Cluster von Formen, welche unabhängig voneinander ausgebildet
werden. Anschließend
wird im Schritt 655 eine neue Form definiert, um den eingefrorenen
Cluster bestimmt am Schritt 652 darzustellen. Falls die
Form, welche die Tochter-Variable identifiziert, eine Linse am Schritt 653 ist,
dann wird der Schritt 654 durchgeführt, andernfalls wird der Schritt 657 durchgeführt. Am
Schritt 654 wird der Schritt 624 durchgeführt, um
die Linse einzufrieren, welche durch die Tochter-Variable identifiziert
wird. Anschließend wird
am Schritt 656 eine neue Form definiert, die dann die eingefrorene
Linse zurückführt. Am
Schritt 657 wird eine neue Form definiert durch die Form,
welche die Tochter Variable identfziert. Am Schritt 658 wird
die neue Form hinzugeführt,
um einen Teil einer neuen Liste auszubilden. Falls die Tochter-Variable
eine neue Form identifiziert, welche gleich zur letzten Form in
der Unter-Liste am Schritt 649 ist, dann wird der Schritt 661 durchgeführt. Andernfalls
wird der Schritt 660 durchgeführt. Am Schritt 660 wird
die Tochter- Variable
gesetzt, um die nächste
Form in der Unter-Liste zu identifizieren. Schließlich wird
am Schritt 661 die neue Liste definiert am Schritt 658 zum
Aufrufer an den Schritten 644 oder 647 zurückgeführt.
-
-
6F stellt
die Schritte zum Durchführen
des Schritts 652, dargestellt in 6E dar.
Darüber
hinaus stellt die Tabelle 7 den Schritt 652 im Pseudocode
dar. Im allgemeinen friert der Schritt 643, welcher entweder durch
die Schritt 667 oder 652 aufgerufen wird, einen
dort hingeführten
Cluster ein. Das Einfrieren eines Clusters friert diejenigen Linsen
ein, welche die Teile des Clusters ausbilden. Genauer gesagt, beginnt
der Schritt 664 durch Definieren einer neuen Liste und
deren Gleichsetzen mit einer leeren Liste am Schritt 663.
Am Schritt 665 wird eine Tochter-Variable gesetzt, um die
erste Form in der sortierten Liste des Clusters zu identifizieren.
Falls die Tochter-Variable dann einen Cluster am Schritt 666 identfizier,
dann wird Schritt 667 durchgeführt; andernfalls wird der Schritt 668 durchgeführt. Am
Schritt 667, wird der Schritt 652 rekursiv aufgerufen. Anschließend wird
der eingefrorene Cluster zurückgeführt zum
Schritt 667 gleich einer neuen Form gesetzt. Falls die
Tochter-Variable eine Linse am Schritt 668 identifiziert,
dann wird der Schritt 669 durchgeführt; andernfalls wird der Schritt 672 durchgeführt. Am
Schritt 669 wird der Schritt 624 aufgerufen, welcher
die Linse identifiziert am Schritt 668 einfriert. Das Ergebnis
der eingefrorenen Linse wird gleich einer neuem Form am Schritt 671 gesetzt.
Am Schritt 672 wird die Form identifiziert durch die Tochter-Variable
gleich einer neuen Form gesetzt. Anschließend wird die neue Form definiert
entweder durch die Schritte 670, 671 oder 672 zu einer
neuen Liste hinzugefügt.
Falls die Tochter-Variable
die letzte Form in der sortierten Liste des Clusters darstellt,
wird am Schritt 674 dann der Schritte 676 durchgeführt; andernfalls
wird der Schritt 675 durchgeführt. Am Schritt 675 wird
die Tochter-Variable gesetzt, um die nächste Form in der sortierten
Liste des Clusters zu identifizieren. Falls der Cluster ein schneidender
Cluster am Schritt 676 ist, dann wird der Schritt 678 durchgeführt; andernfalls
wird der Schritt 677 durchgeführt. Am Schritt 678 wird
die schneidende Region des Clusters gleich zu derjenigen eines neuen
Clippers gesetzt. Am Schritt 678 wird kein Clipper dem
neuen Clipper zugeordnet. Am Schritt 679 wird ein neuer
Cluster mit einer neuen Liste, gebildet vom Schritt 673,
und einem neuen Schneidwerkzeug, definiert entweder an den Schritt 677 oder 678,
erzeugt. Ebenfalls am Schritt 679 wird der neue Cluster
dem gleichen schneidenden Cluster und den Cluster-Gruppierungs-Attributen
des Clusters zugeordnet. Der neue Cluster wird dann zurückgeführt zu seinem
Aufrufer am Schritt 680.
-
-
6G stellt
die Schritte zum Durchführen
des Schritts 643, gezeigt in 6D dar.
Darüber
hinaus stellt die Tabelle 8 den Schritt 643 im Pseudo-Code
dar. Im allgemeinen modfiziert der Schritt 643 diejenigen Formen
unter einer Linse durch Anwenden der Filter-Funktion (d.h. des Linsen-Operators)
der Linsen aufs selbige. Schritt 643 wird entweder vom
Schritt 645 oder vom Schritt 646 aufgerufen mit
einer Linse und einer Liste von Formen, welche unter der Linse sich
befinden (d.h. Formen-Liste). Die Liste von Formen unter der Linse kann
Linsen einschließen,
weil der modifizierende Schritt 643 aufgerufen worden sein
kann vor dem einfrierenden Schritt 642. Die Linse passiert
den Schritt 643 und wird verwendet, um die Filterfunktion
zu identifizieren, die auf jede Form in der Liste von Formen angewandt
wird. Falls die Filterfunktion der Linse die Hintergrundfarbe einer
Szene am Schritt 690 modifiziert, dann wird die Füllfarbe
des ersten Elementes in der Liste von Formen unter der Linse modifiziert
durch die Hintergrund-Filterfunktion
der Linse am Schritt 691. Wie oben dargestellt, kann eine
Filterfunktion einer Linse das Färben,
Skalieren etc. einschließen.
Im Anschluss wird am Schritt 692 eine Tochter-Variable
gesetzt, um die zweite Form in der Liste von Formen (d.h. Formen-Liste)
zu identifizieren. Am Schritt 693 wird die Form, identifiziert
in der Liste von Formen unter der Linse durch die Tochter-Variable,
modifiziert durch die Filterfunktion der Linse. Es wird sich für den Fachmann
auf dem Gebiet verstehen, dass der modifizierende Schritt 693 für Formen
identifiziert durch die Tochter-Variable gilt, welche Cluster darstellen,
und zwar durch rekursives Modifizieren einer jeden der Tochterformen
eines Clusters mit einer geeigneten Filterfunktion der Linse. Falls
die Form identifiziert durch die Tochter-Variable nicht die letzte
Form in der Liste von Formen unter der Linse am Schritt 694 darstellt,
dann wird der Schritt 695 durchgeführt, andernfalls wird der Schritt 696 durchgeführt.
-
Am
Schritt 695 wird die Tochter-Variable gesetzt, um die nächste Form
in der Unter-Liste
zu identifizieren. Am Schritt 696 endet der Schritt 643 durch
Rückkehr
entweder zum Schritt 645 oder zum Schritt 646.
-
-
Es
wird sich für
den Fachmann auf dem Gebiet verstehen, dass die 6A bis 6G einen Überblick
der Schritte zum Durchführen
der vorliegenden Erfindung darstellen und dass mehrere verschiedene
Permutationen möglich
sein könnten.
Die unterschiedliche Art und Weise, in welcher die Schritte, dargestellt
in den 6A bis 6G, durchgeführt werden
könnten,
hängt von
der besonderen Form in der Szene (beispielsweise dem Cluster, der
einfachen Form oder der Linse) ab und von der speziellen Art und
Weise, in welcher die Formen in der Szenen-Liste angeordnet sind.
-
E. Illustration des Zusammensetzens
einer Szene mit sich überlagernden
Linsen
-
Die
Szene der rechtwinkligen Objekte 304, 306 und 308 geschichtet,
oben auf dem Hintergrundrechteck 302, dargestellt in 3 ist
in Form von Linsen definiert, welche die darunter liegenden Objekte
Zyanblau, Gelb bzw. Magentarot färben.
Beispielsweise wird ein Objekt, das mit einer zyanblauen Farbe gefüllt ist,
das unterhalb einer gelben Linse geschichtet ist, grün eingefärbt. Die
folgende Beschreibung schreitet durch das Flussdiagramm, dargestellt
in den 6A bis 6G, um
die Art und Weise zu illustrieren, in welcher die Szene 300 definiert
in 3 als die Szene 500, dargestellt in 5 zusammengesetzt
wird.
-
Am
Schritt 600 wird jedes Objekt in der Szenen-Liste 400,
dargestellt in 4 zusammengesetzt in einer Reihenfolge
von hinten nach vorne (in der Richtung des Pfeils 402)
und fertiggestellt entweder auf einem Bildschirm oder auf einem
Aufzeichnungsmedium. Die erste Form in der Szenen-Liste 400 ist
das Hintergrundrechteck 302. Da das weiße Hintergrundrechteck 302 eine
einfache Form darstellt, wird es gezeichnet durch Durchführen des
Schrittes 610, dessen Ergebnis in Szene 800, dargestellt
in 8 gezeigt ist.
-
Nach
dem Hintergrund-Rechteck 302 ist das zyanblaue Rechteck 304 das
nächste
Element in der Szenen-Liste 400. Um das zyanblaue Rechteck 304 zu
zeichnen, wird der Schritt 607 durchgeführt für Formen, welche Linsen darstellen.
Vor dem Zeichnen der Linse als eine einfache Form im Schritt 610 wird
eine Unter-Liste 900, die in 9 dargestellt
ist, das Rechteck 304 am Schritt 620 berechnet.
Wie in 9 dargestellt, besteht die Unter-Liste 900 nur
aus dem weißen
Hintergurndrecheck 302. Nach Durchführen des Schrittes 620 wird
die Szene definiert durch die Unter-Liste 900 durch die
Linse gefiltert spezifiziert durch das Rechteck 304 am
Schritt 621. Da die Linse eine Linse von der Art von hinten
nach vorne ist, wird der einfrierende Schritt 644 durchgeführt, gefolgt
vom modfizierenden Schritt 645, um eine linsifizierte Formen-Liste
zu berechnen. Da nur eine einfache Form unter der Linse 304 vorliegt
(nämlich
das Hintergrundrechteck 302), werden keine Linsen eingefroren
und das Hintergrundrechteck 302 wird zyanblau gefüllt, um
eine linsifizierte Formen-Liste 1000, welche in 10 gezeigt
ist, zu erzeugen. Die linsfizierte Formen-Liste 1000 ist
dann die Ausgabe von Schritt 621.
-
Unter
Verwendung der linsifizierten Formen-Liste 1000, dargestellt
in 10, wird ein schneidender Cluster am Schritt 622 erzeugt.
Ein Teil des Zeichnens eines schneiden den Clusters ist es, den Pfad
des Rechtecks 304 zu setzen, so dass es eine schneidende
Region der Szene im Schritt 604 darstellt. Die Formen in
der linsifizierten Formen-Liste 1000,
welche erzeugt werden, um einen Cluster zu erzeugen, werden im Schritt 610 gezeichnet,
nämlich
als Hintergrund-Rechteck mit einer zyanblauen Farbfüllung 1002.
Schließlich wird
der Schritt 614 durchgeführt, um die Grenzen des Rechteckes 304 zu
stricheln. Diese Schritte sind auf dem Bildschirm 314,
wie in 11 gezeigt, repräsentiert
durch anfängliches
Zeichnen der Zyanlinse 304, illustriert durch Szene 1100 und
dann durch Zeichnen der Grenze der Zyanlinse 304, illustriert
durch Szene 1102.
-
Nach
Zeichnen der zyanblauen Linse 304 wird die gelbe Linse 306 gezeichnet,
zunächst
durch Einfrieren der Linse am Schritt 607. Ähnlich wie
bei der zyanblauen Linse wird eine Unter-Liste 1200, welche
in 12 gezeigt ist, am Schritt 620 für die gelbe
Linse 306 berechnet. Die Unter-Liste 1200 schließt das Hintergrundrechteck 302 und
die zyanblaue Linse 304 ein. Anschließend werden jegliche Linsen
in der Unter-Liste 1200 am Schritt 644 eingefroren. 13 illustriert
eine linsifizierte Formen-Liste 1300, welche das Ergebnis des
Einfrierens der gelben Linse am Schritt 644 darstellt.
Die linsifizierte Formen-Liste 1300 wird ausgebildet durch
Filtern der Unter-Liste 1200 durch die Linse, um eine neue
Szene 645 zu erzeugen.
-
Die
Details zum Erzeugen der linsifizierten Formen-Liste in 13 sind
dargestellt in 6D. Anfangs am Schritt 640 werden
die Formen unter der gelben Linse 306 (d.h. die Unter-Liste)
kopiert. Anschließend
wird jede kopierte Form, welche eine Linse darstellt, am Schritt 642 eingefroren.
In diesem Fall wird die zyanblaue Linse 304 eingefroren.
Die eingefrorene zyanblaue Linse 304 wird repräsentiert
durch den schneidenden Cluster 1302. Sobald die Formen
in der Unter-Liste 1200 kopiert und eingefroren sind, werden
die eingefrorenen Formen modfiziert unter Verwendung der Filterfunktion
der Linse am Schritt 643.
-
14 iliustriert
die Sequenz, in welcher die gelbe Linse 306 gezeichnet
ist. Zunächst
wird die Hintergrundfarbe der gelben Linse 306 wie illustriert
durch die Szene 1400 gezeichnet. Anschließend wird
ein Teil der zyanblauen Linse 502, welche durch die gelbe
Linse 306 grün
gefärbt
wird, gezeichnet, wie durch Szene 1402 illustriert wird.
Um die Zeichnung der gelben Linse 306 zu vervollständigen,
werden die Grenzen um die zyanblaue Linse 304 und die gelbe
Linse 306 gezeichnet, wie durch die Szenen 1404 bzw. 1406 illustriert.
-
Nach
Zeichnen der gelben Linse 306 (oder des Rechtecks 306)
wird die magentarote Linse 308 gezeichnet. Um die magentarote
Linse 308 zu zeichnen (oder das Rechteck 308)
müssen
die Formen unter der Linse am Schritt 607 eingefroren werden.
Nach Durchführen
des Schrittes 620 wird eine Unter-Liste 1500,
dargestellt in 15 für die magentarote Linse 308 berechnet.
Am Schritt 621 wird die Unter-Liste 1500 durch
die magentarote Linse 308 gefiltert, um eine linsifizierte
Formen-Liste 1600, dargestellt in 16 zu
erzeugen. Die linsifizierte Formen-Liste 1600 enthält einen
zyanblauen schneidenden Cluster 1600 und einen gelben schneidenden
Cluster 1604. Darüber
hinaus enthält
ein Teil des gelben schneidenden Clusters 1604 einen zyanblauen
schneidenden Cluster 1606.
-
Genauer
gesagt, um die linsifizierte Formen-Liste 1600 zu berechnen,
wird jede Linse in der Formen-Liste 1500 eingefroren. Nach
Einfrieren jeder Linse am Schritt 642 wird die Funktion
der laufenden Linse, die es zu zeichnen gilt (d.h. die magentarote
Linse 308) auf die eingefrorenen Formen der Unter-Liste 1500 am
Schritt 643 angewandt. Die erste modifizierte Form ist
das Hintergrund-Rechteck, welches magentarot eingefärbt wird,
um ein magentarotes Hintergrund-Rechteck 1608 zu definieren.
Als zweites wird der zyanblaue schneidende Cluster 1602 magentarot
eingefärbt,
um ein blaues Hintergrundrechteck 1610 (d.h. zyanblau gefärbtes magentarot)
zu definieren. Als drittes wird das Hintergrund-Rechteck des gelben
schneidenden Clusters 1604 magentarot eingefärbt, um
ein rotes Hintergrund-Rechteck 1612 zu erhalten. Schließlich wird
das Hintergrund-Rechteck
des zyanblauen schneidenden Clusters 1606, welche einen
Teil des gelben schneidenden Clusters 1604 ausbildet, magentarot
und gelb eingefärbt,
um ein schwarzes Hintergrund-Rechteck 1614 zu erzielen.
-
17 illustriert
eine Sequenz von Szenen, angegeben durch Referenznummern 1700 bis 1707,
in welcher die magentarote Linse 308 gezeichnet wird. In
Szene 1700 wird die Hintergrundfarbe der magentaroten Linse 308 gezeichnet.
Rekursiv werden Teile der zyanblauen Linse 304, welche
geschnitten werden durch und gefärbt
werden durch die magentarote Linse 306 gezeichnet. Als
erstes wird die überlagernde
Fläche 504 (d.h.
die überlagernde
Fläche
zwischen der zyanblauen Linse 304 und der magentaroten
Linse 304 und der magentaroten Linse 308) in Szene 1701 gezeichnet,
nach welcher die Grenze um die zyanblaue Linse 304 in Szene 1702 gezeichnet
wird. In Szene 1703 wird die überlagernde Fläche 506 zwischen
der gelben Linse 304 und der magentaroten Linse 306 gezeichnet.
Anschließend
wird die überlagernde
Fläche 508 (d.h.
die überlagernde
Fläche
zwischen den zyanblauen, gelben und magentaroten Linsen 304, 306 bzw. 308)
in Szene 1704 gezeichnet. Anschließend wird die Grenze um die
zyanblaue Linse 304 gezeichnet, um die gelbe Linse 306 und
um die magentarote Linse 308 und zwar in den Szenen 1705, 1706 bzw. 1707.
-
F. Von-Vorne-nach-Hinten-versus
von Hinten-nach-Vorne-Linsen
-
Überlagernde
Linsen setzen ihre Operatoren entweder in einer Reihenfolge von
vorne nach hinten oder von hinten nach vorne zusammen. Ob die Zusammensetzungs-Reihenfolge einer
Linse eine vom vorne nach hinten oder eine von hinten nach vorne
ist, bestimmt, wann die Unter-Liste einer Linse eingefroren wird. Das
Steuern, wann Linsen eingefroren werden, bestimmt die Zusammensetzungs-Reihenfolge
einer Szene. Während
die meisten Operatoren von Linsen sich von hinten nach vorne zusammensetzen
(d.h. der Operator im Hintergrund der Überlagerungs-Reihenfolge wird
zuerst angewandt), setzen sich andere Operatoren von Linsen natürlicherweise
eher von vorne nach hinten zusammen. Als eine allgemeine Regel setzen
sich Linsen, welche Szenenobjekte hinzufügen, löschen oder umgruppieren, natürlicherweise
eher von vorne nach hinten zusammen, während alle anderen Linsen sich
natürlicherweise
eher von hinten nach vorne zusammensetzen. Ein Beispiel, welches
diese beiden unterschiedlichen Verfahren zum Zusammensetzen einer
Szene illustriert, wird unten beschrieben.
-
18 illustriert
eine nicht zusammengesetzte Szene 1800, welche eine Hintergrundform 1801 enthält und drei
andere Formen, angegeben durch die Referenz-Nummern 1802, 1804, 1806 und 1808.
Die Formen, gezeigt in 18, überlagern sich in der Reihenfolge,
welche durch ihre Referenz-Nummern gegeben wird (d.h. die am niedrigsten
sortierte Referenz-Nummer ist die erste gezeichnete Form). Die Formen 1806 und 1808 sind
die einzigen Formen in 18, die als Linsen definiert
sind. Genauer gesagt weist die Form 1806, die eine rote
(angedeutet durch das vertikale Füllmuster) wabenartige Form
darstellt, die Eigenschaften einer Linse auf, welche Objekte anfärbt, die
durch sie gesehen, rot erscheinen. Die Form 1808, welche
eine klare rechtwinklige Form darstellt, weist den Effekt des Skalierens
von Objekten um ihre eigenen Zentren auf, welche unterhalb positioniert
sind. In 18 ist die rechtwinklige Linse 1808 eine
Linse, welche die drei Objekte 1802, 1804 und 1806 um
ihre Zentren herum skaliert und dabei bewirkt, dass die drei Objekte
innerhalb der begrenzten Fläche
der Linse 1808 sich überlagern,
wenn sie, wie in 20 gezeigt, zusammengesetzt
werden.
-
19 illustriert
eine Szenen-Liste 1900 der Formen in der nicht zusammengesetzten
Szene 1800. Die Formen in der Szenen-Liste 1900 sind
in einer Reihenfolge von hinten nach vorne geschichtet, wie durch einen
Pfeil angegeben, der durch die Referenz-Nummer 1902 illustriert ist.
Wie in der Szenen-Liste 1900 gezeigt, sind die Formen 1802 und 1804 einfache
Formen, wohingegen die Formen 1806 und 1808 Formen
sind, welche als Linsen definiert sind. Jedoch anders als die beispielhafte
Szenen-Liste 400, illustriert in 4, enthält die Szenen-Liste 1900 eine
vergrößernde Linse 1808,
welche sich in einer Reihenfolge von vorne nach hinten zusammensetzt.
Um in korrekter Art und Weise die Szene 2000 mit der von
vorne nach hinten gelagerten Linse 1800 zusammenzusetzen,
wird benötigt,
dass die Skalierungs-Operation der Linse 1808 durchgeführt wird,
bevor die Färbeoperation
der Linse 1806 durchgeführt
wird, wenn die Form 1808 gezeichnet wird.
-
20 illustriert
eine zusammengesetzte Szene 2000 der Szenen-Liste 1900.
Die Szene 2000 enthält zwei
sich überlagernde
Flächen 2002 und 2004,
welche durch die anfärbende
Linse 1806 angefärbt
werden. Die zusammengesetzte Szene 2000 wird ausgebildet
zunächst
durch Zeichen des Hintergrundrechteckes 1801. Anschließend werden
die Formen angezeigt durch die Referenz-Nummern 1802 und 1804 gezeichnet. Um
die Linse 1806 zu zeichnen, wird die Erzeugung einer Unter-Liste 2010 dargestellt
in 21 benötigt.
Da keine Linsen in der Unter-Liste 2100 vorliegen, ist
keine der Formen in der Unter-Liste 2100 eingefroren. Darüber hinaus,
da die Linse 1804 eine Linse im Stil von hinten nach vorne
ist, wird der Schritt des Einfrierens 644 durchgeführt, gefolgt
vom modfizierenden Schritt 645, dargestellt in 6D.
Das Durchführen
des einfrierenden Schrittes 644 verlangt, dass die Linsenformen
in der Unter-Liste 2100 eingefroren werden an Schritt 642. Anschließend wird,
um den modfizierenden Schritt 645 durchzuführen, die
Linsen-Funktion der Linsen 1806 auf all die Elemente angewandt,
die darunter geschichtet sind, wie in 22 gezeigt,
um eine linsfizierte Formen-Liste 2200 auszubilden am Schritt 643.
Da die schneidende Region gleich der Größe der Form 1806 gesetzt
wird, ist die Färbung,
welche auf jegliche andere Form in der Szene 2000 (beispielsweise
Formen 1802 und 1804) angewandt wird, nicht sichtbar.
-
Nach
Zeichnen der färbenden
Linse 1806 wird die vergrößernde Linse 1808 gezeichnet. 23 illustriert
eine Unter-Liste 2300, berechnet für die vergrößernde Linse 1808.
Da die Zusammensetzungsreihenfolge der Linse 1806 von vorne
nach hinten verläuft,
wird der modifizierende Schritt 646 durchgeführt, gefolgt
vom einfrierenden Schritt 647 in 6D. Der
modifizierende Schritt 646 verlangt, dass die Linsenfunktion
der laufenden Linse 1808 auf diejenigen kopierten Formen
angewandt wird, die unter der laufenden Linse 1808 geschichtet
sind. Anschließend
wird der einfrierende Schritt 647 durchgeführt, welcher
alle die Linsen unterhalb der laufenden Linse 1808 einfriert.
Beim Durchführen
des modfizierenden Schritts 646 werden alle der Formen in
der Szenen-Liste 1900 in Übereinstimmung mit den Spezifikationen
der Funktion der Linse 1808 vergrößert. Nach Vervollständigung
des modifizierenden Schrittes 646 wird eine jede der Formen
unter der Linse 1808 vergrößert, einschließend die
Form der Linse 1806. Nach dem modfizierenden Schritt 646 wird
der einfrierende Schritt 647 durchgeführt, welcher alle die Formen
unter der laufenden Linse 1808 einfriert. Dieser einfrierende Schritt überführt die
Linse 1806 in einen schneidenden Cluster 2402 in
der resultierenden linsifizierten Formen-Liste 2400, dargestellt in 24.
Da die Linse 1806 oberhalb den Formen 1804 und 1802 in
der Szenen-Liste 1900 geschichtet ist, wird die färbende Funktion
auf jede der vergrößerten Formen 1802 und 1804 angewandt,
um die gefärbten
Regionen 2002 und 2004, dargestellt in 20 zu
definieren.
-
25 illustriert
die Szene 2000, dargestellt in 20, wenn
die vergrößerte Linse 1808,
gezeigt in 18, eine Szene 2500 in
einer Reihenfolge zusammensetzt, die von hinten nach vorne verläuft. Wie
in 6 dargestellt, werden, wenn die
Zusammensetzungsreihenfolge einer Linse von hinten nach vorne verläuft, die
Formen in einer UnterListe von Linsen eingefroren am Schritt 642,
bevor die Funktion der Linse auf die Formen in der Unter-Liste am
Schritt 643 angewandt wird. Wenn eine Linse eingefroren
wird, bevor die Formen unter der Linse modifiziert werden, wird
die färbende
Operation durchgeführt,
bevor der skalierenden Operation in der Szene 1800, gezeigt
in 18 durchgeführt
wird. Als ein Ergebnis werden die gefärbten Regionen 2002 und 2004,
gezeigt in 20, nicht ausgebildet, wenn
die vergrößernde Linse 1808 in
einer von hinten nach vorne verlaufenden Reihenfolge zusammengesetzt
wird, wie dies in Szene 2500 gezeigt ist.
-
G. Limitierung des Umfangs
der Operation einer Linse
-
Der
folgende Abschnitt betrifft das Minimieren des Umfangs der Operation
einer Linse, um die Berechnungs-Komplexität beim Zusammensetzen einer
Szene mit Linsen zu reduzieren und zusätzlich visuelle Effekte zu
erreichen. Der Umfang der Operation einer Linse schließt diejenigen
Teile einer Szene ein, auf welche eine Linse wirkt. Wann immer ein
Anwender eine Linse zu einer Darstellung hinzufügt, verdoppelt sich die Anzahl
von Formen in einem letztendlichen Bild potentiell, da jede Form
unter einer Linse kopiert wird, wenn ein Bild zusammengesetzt wird.
Jede Form, die zuvor in einer Szene erschien, kann nun sowohl in
ihrer ursprünglichen
Form außerhalb
der Linse und in ihrer modfizierten Form innerhalb der Linse (siehe
Schritte 620-637 in 6C) erscheinen. Als ein Ergebnis
kann die Komplexität
eines Bildes, welches eine Szene repräsentiert, bis zu 2nfach
(oder exponentiell) anwachsen, wobei "n" die
Anzahl an Linsen in einer Szene darstellt. Diese Komplexität kann durch
Identifizieren derjenigen Formen in einer Szene reduziert werden,
die unterhalb einer speziellen Linse geschichtet sind, jedoch nicht
von dieser Linse angesteuert werden. Das heißt, die Anzahl der Operationen
benötigt
zum Zusammensetzen einer Szene kann reduziert werden durch Minimieren
des Umfangs der Operation einer Linse in der Szene. Das Minimieren
des Umfangs der Operation einer Linse begrenzt die Anzahl von Formen
in einer Szene, die von der Linse angesprochen werden kann. Ein
erstes und ein zweites Verfahren zum Begrenzen des Umfangs der Operation
einer Linse werden in Abschnitten G.1 bzw. G.2 diskutiert.
-
G.1 Anwenderdefinierte
Umfangsbegrenzung
-
26 illustriert
ein Beispiel des Benutzer-Oberflächen-Werkzeugs 128,
dargestellt in 4. Das Benutzer-Oberflächen-Werkzeug 128,
dargestellt in 26, enthält eine Befehlsfläche 2600 und
eine Szene-Entwicklungs-Fläche 2602.
Im allgemeinen wählt
ein Anwender, der eines der Eingabe-Geräte 119 (dargestellt
in 1) einsetzt, Befehle in der Befehlsfläche 2600 aus,
um Formen in der Entwicklungsfläche 2602 zu
entwickeln. Die Formen werden verwendet, um eine Szene in einer
Szenen-Entwicklungs-Fläche 2602 zu
entwickeln und können
Umrisslinien, Linien und Texte enthalten. Sobald eine Form definiert
wurde, werden ihre Eigenschaften unter Verwendung des Eigenschaften-Menüs 2604 gesetzt.
Einige der Eigenschaften, welche gesetzt werden können und
welche in dem Eigenschaften-Menü 2604 gezeigt
sind, schließen
die Füllfarbe 2006, die
Linienfarbe 2608, die Linienbreite 2610, das Objektmuster 2612 und
die Hintergrundfarbe 2614 ein.
-
Um
eine der Formen entwickelt in einer Szenen-Entwicklungsfläche 2602 als
eine Linse zu spezfizieren, wählt
ein Anwender zuerst eine Form oder Formen aus und anschließend wählt er einen
Linsen-Typ aus einem Menü von
Linsen-Typen 2618. Das Menü von Linsen erhält eine
färbende
Linse 2620, eine skalierende Linse 2622, eine
transfor mierende Linse 2624, eine die Reihenfolge verändernde
Linse 2626 und eine die Eigenschaft einstellende Linse 2628.
Nach Auswählen
des Typs einer Linse aus dem Menü von
Linsentypen 2618, kann der Anwender einen systemweiten
Modus bearbeite Linse" ("edit lense") eingeben durch
Auswählen
eines "bearbeite
Linse" – Menüpunktes 2630.
Sobald er in dem "bearbeite
Linse"-Modus sich
befindet, kann der Anwender Eigenschaften aus dem Eigenschaftsmenü 2604 auswählen. Irgendeine
Eigenschaft ausgewählt
an diesem Punkt wird eine Eigenschaft, welche die Objekte, die unterhalb
der Linse liegen, betreffen. Beispielsweise kann, falls ein Anwender
eine färbende
Linse aus dem Menü von
Linsentypen 2618 auswählt und
den systemweiten "bearbeite
Linse"-Modus eingibt, der
Anwender anschließend
eine Füllfarbe 2606 aus dem
Eigenschaftsmenü auswählen, um
die färbende
Farbe der Linse zu definieren.
-
Ein
weiteres Menü verfügbar für einen
Anwender auf dem Benutzer-Oberflächen-Werkzeug 128,
dargestellt in 26, ist ein Gruppierungsmenü 2632.
Das Gruppierungsmenü enthält einen
Cluster-Befehl 2634, einen Linsen-in&aus-Cluster-Befehl 2636,
einen Linsen-in-Cluster-Befehl 2638, einen Linsen-aus-Cluster-Befehl 2640 und
einen schneidenden Cluster-Befehl 2642, deren Details unten
erläutert
werden. Der Fachmann auf dem Gebiet wird verstehen, dass die Anzahl
von Elementen dargestellt in jedem Menü 2604, 2618 und 2632 in 26 nicht
alle möglichen
Elemente enthält,
sondern stattdessen diese nur aus Gründen der Illustration dargestellt
wird.
-
Ein
erstes Verfahren zum Begrenzen des Umfangs der Operation einer Linse
ermöglicht
es einem Anwender verschiedene sich nicht-überlagernde Linsen in einer
einzelnen Linse mit vielerlei nicht verknüpften Regionen zu kombinieren.
Die Zusammensetzung der Szene wird vereinfacht, da eine einzelne
Linse mit vielerlei Regionen in der gleichen Art und Weise verarbeitet
wird, wie eine Linse mit einer einzelnen Region. Durch Erzeugen
einer einzelnen Linse mit vielerlei Regionen wird der Bedarf, jede
Region der Linse zusammenzusetzen, individuell eliminiert. Dieses
erste Verfahren zum Verbessern der System-Leistungsfähigkeit
reduziert die Komplexität
des Zusammensetzens einer Szene von O(2n)
(exponential) zu O(1) (eine Konstante), wobei n die Anzahl der Linsenregionen
darstellt.
-
27 und 28 illustrieren
das erste Verfahren zum Begrenzen des Umfangs einer Linse. Das erste
Verfahren ermöglicht
einem Anwender eine färbende
Linse 2700 zu erzeugen, welche aus drei Rechtecken besteht.
Die drei vertikalen Rechtecke 2700, dargestellt in 27,
sind spezifiziert, so dass sie einzelne Linsen innerhalb vielerlei
Regio nen darstellen und so den Umfang der Operation dessen minimieren,
was drei separate Linsen hätten
darstellen können. 28 illustriert,
wie die Linse 2700 sich zusammensetzt, wenn sie oben auf
einem Satz von drei horizontalen Rechtecken 2802 geschichtet
ist. Genauer gesagt, sind die sich überlagernden Regionen 2804, 2806 und 2808 zwischen
den horizontalen Rechtecken so wie die Linse 2700 gefärbt, gemäß einer
spezifizierten Färbung,
die in 27 dargestellt ist, unter Verwendung
verschiedener Füllmuster. Falls
der Umfang der Operation der Linse 2700 nicht begrenzt
wurde durch Spezifizieren einer einzelnen Linse, würde die
Zusammensetzung der Szene, dargestellt in 28 es
erfordert haben, dass die drei horizontalen Rechtecke sooft kopiert
worden wären,
wie das Hintergrundrechteck 302 in dem Beispiel, wie oben
in den 4, 5 und 9 bis 17 illustriert,
kopiert wurde anstelle von einmal (nämlich 8 bzw. 23).
-
Ein
zweites Verfahren zum Begrenzen des Umfangs der Operation einer
Linse ermöglicht
es einem Anwender, Linsenklassen zu definieren, welche eine von
drei verschiedenen umfangsbegrenzenden Operationen aufweisen. Unter
Verwendung des Gruppierungsmenüs 2632 kann
ein Anwender eine aus einer Vielzahl von Clusteroptionen auswählen. Die
Clusteroption 2634 ermöglicht
es einem Anwender, verschiedene Formen als eine einzelne Einheit
zu gruppieren. Die Operationen können
dann spezifiziert werden auf der einzelnen Einheit als ein Ganzes.
Die schneidende Clusteroption 2642 erzeugt eine einzelne
Einheit, schneidet aber auch die Formen, welche die einzelne Einheit
bis zum Auswurf der letzten Form erstellen, gefolgt vom Zeichnen
der begrenzenden Muster der letzten Form.
-
Diese
Clusteroptionen wirken auch auf Formen, egal ob sie als Linsen oder
nicht spezifiziert sind. Die Gruppen 2632 Menü-Punkte 2636, 2638 und 2634 wirken
nur auf eine Gruppierung von Formen, welche zumindest eine Linse
enthält.
-
Die
Gruppen 2632 Menü-Punkte
Linse-in-Cluster 2638 und Linse-aus-Cluster 2640 begrenzen
den Umfang einer Gruppierung von Formen auf zwei unterschiedliche
Art und Weisen. Der Linse-in&aus-Cluster 2636 erzeugt
eine Gruppierung von Formen, wo die Umfang-Regeln sowohl für den Linse-in-Cluster-2638 als auch
den Linse-aus-Cluster 2640 gelten. Der Linse-in-Cluster
Menü-Punkt 2638 reduziert
den Umfang der Operation irgendeiner Linse in einem Cluster von
Formen nur durch Wirken der Filterfunktion einer jeden Linse in
dem Cluster auf diejenigen Formen, die unterhalb von ihr sortiert
sind, welche innerhalb des Clusters sind. Im Gegensatz dazu reduziert
der Linse-aus-Cluster
Menü-Punkt 2640 den
Umfang der Operation einer jeden Linse in einem Cluster von Formen
nur durch Anwenden der Filterfunktion einer jeden Linse in dem Cluster
auf diejenigen Formen, welche unterhalb von ihr sortiert sind, welche
außerhalb
dem Cluster liegen.
-
Die 29 bis 32 illustrieren
die Art und Weise, in welcher eine Linse 2908 in einer
Szene einen limitierten Operations-Umfang auf die unterhalb von
ihr geschichteten Formen durch Clusterbildung (clustering) der Linse
mit anderen Formen in der Szene haben kann. 29 illustriert
eine Szenen-Liste 2900 für die Szene von Formen. Die
Formen in der Szenen-Liste 2900 sind geschichtet von hinten
nach vorne, wie durch den Pfeil 2901 angezeigt wird. Genauer
gesagt, enthält
die Szenen-Liste 2900 ein Hintergrundrechteck 2902, eine
rechteckige Form 2904, ein Textobjekt 2906, welche
das Wort "clustering" darstellt und eine
von hinten-nach-vorne-Linse 2908. Die Linse 2908 ist
spezfiziert als eine Eigenschaft setzende Linse 2628 unter
Verwendung des Anwender-Benutzeroberflächen-Werkzeuges 128 (dargestellt
in 26). Eine Eigenschaft setzende Linse kann die
Füllfarbe
von Formen, geschichtet unterhalb der Linse verändern, wie auch die Hintergrundfarbe
des Hintergrundrechtecks geschichtet unterhalb der Linse neben anderen
Eigenschaften. Die Füllfarbe
der Hintergrundfarben-Eigenschaften wird gesetzt durch die Füllfarbe 2606 und
die Hintergrundfarbe 2614, jeweils aus dem Eigenschaften-Menü 2604.
-
30 illustriert
die Szenen-Liste 2900 geschichtet in der Von-Hinten-Nach-Vorne-Richtung 2901.
Anders als in 29, welches die Formen der Szene
angeordnet in einem Baum illustriert, illustriert 30 jede der
Formen in der Szenen-Liste 2900, wie sie übereinander
geschichtet erscheinen. Darüber
hinaus illustriert 30 einen Linsencluster 3002.
Formen, die als in dem Linsencluster 3002 identifiziert
werden, schließen das
Textobjekt 2906 und die Linse 2908 ein. Wie oben
dargestellt, sind drei unterschiedliche Typen von Linsenclustern
aus dem Gruppenmenü 2632 auswählbar. Die 31 und 32 illustrieren
die Szenen-Liste 2900, dargestellt in 30 zusammengesetzt
als ein Linse-in&aus-Cluster 2636 bzw.
als ein Linsen-in-Cluster 2638, wie entlang der Sichtlinie
30-30 zu sehen ist. In 31 und 32 setzt
sich die Linse 2908 aus zwei verschiedenen Musterungen
zusammen: einer klaren Musterung, welche durch die Referenz-Nummer 3104 identifiziert
wird; und einem horizontales Streifenmuster, welches durch die Referenz-Nummer 3102 identifiziert
wird. Die klare Musterung 3104 identifiziert diejenigen
Flächen,
wo die Linse 2908 die Füllfarbe
der Objekte geschichtet unter der Linse in der Szene modfiziert.
Das horizontal gestreifte Muster 3102 identifiziert diejenigen
Flächen,
wo die Linse 2908 die Hintergrundfarbe der Szene modifiziert.
-
Genauer
gesagt, Illustriert die 31, wie
die Szenen-Liste 2900 sich als ein Linse-in&aus-Cluster 2636,
welcher auswählbar
ist unter dem Gruppen-Punkt-Menü 2632,
zusammensetzt. Wie oben dargestellt, ist der Arbeitsumfang einer
Linse nicht limitiert, wenn eine Linse als Linse-in&aus-Cluster 2636 zusammengesetzt ist.
Wenn die Szenen-Liste 2900 sich zusammensetzt, arbeitet
die Linse 2908 mit Wirkung sowohl auf das Textobjekt 2906 als
auch die rechtwinklige Form 2904, da ein Linse-in&aus-Cluster auf
Formen sowohl innerhalb als auch außerhalb des Clusters 3002 wirkt.
Folglich werden die Füllfarbe
der Teile des Textobjekts 2906 und die rechtwinklige Form 2904 positioniert
unter der Linse in Übereinstimmung
mit der Füllfarbe
spezifiziert durch die Linse 2908 modifiziert. Diejenigen
Teile der Linse, die nur dem Hintergrundrechteck 2902 ausgesetzt
sind, werden in Übereinstimmung
mit der Hintergrundfarbe spezifiziert durch die Linse 2908 modifiziert.
-
Anders
als 31 illustriert 32 den
Fall, wo der Cluster 2908 sich als ein Linse-in-Cluster 2638 zusammensetzt.
Wie oben dargestellt, modifiziert ein Linsen-in-Cluster 2638 nur
diejenigen Formen innerhalb des Clusters 3002. In der Szene,
dargestellt in 29 bewirkt dies, dass die Linse 2908 nur
auf das Textobjekt 2906 wirkt, und dabei den Effekt, wie
in 32 anstelle wie in 31, erzeugt.
Wenn die Szenen-Liste 2900 zusammengesetzt wird, wird die
Hintergrundfarbe (horizontal gestreiftes Muster 3102) auf
diejenigen Flächen unter
der Linse angewandt, die keinerlei Formen aufweisen. Wiederum wird,
wenn die Füllfarbe,
spezifizier durch die Linse 2908, auf diejenigen Formen,
welche direkt unterhalb der Linse liegen, angewandt wird, die rechtwinklige
Form 2904 ignoriert, da der Cluster 3002 ein Linse-in-Cluster 2638 ist.
Folglich wird die klare Füllfarbe 3104 nur
auf das Textobjekt 2906 angewandt und wirkt nur auf den „ster"-Teil des Wortes „clustering".
-
Die 33 und 34 illustrieren
ein weiteres Beispiel eines Linsen-Clusterings zur Minimierung des Umfangs
der Operation einer Linse. 34 illustriert
eine Szenen-Liste 3300 zusammengesetzt, wie sie entlang
der Sichtlinie 33-33 in 33 zu
sehen ist. 33 illustriert die Szenen-Liste 3300 sortiert
in einer Von-Hinten-Nach-Vorne-Reihenfolge
in der Richtung des Pfeils 3302. Die Formen, welche die
Szene 3300 zusammensetzen, enthalten ein Hintergrundrechteck 3304 mit
einer weißen
Füllung,
ein Rechteck 3306 mit einer gescheckten Musterung-Füllung, ein
erstes horizontales Rechteck 3308 mit nach links geneigten
Füll-Linien, ein
zweites horizontales Rechteck 3308 mit nach rechts geneigten
Füll-Linien,
eine erste Linse 3312 und eine zweite Linse 3314.
Die erste Linse 3312 weist eine nach links geneigte Füll-Farbe
und die zweite Linse 3314 weist eine nach rechts geneigte
Füllfarbe
auf.
-
Wie
in 33 gezeigt, sind die erste Eigenschaft einstellende
Linse 3312 und die zweite Eigenschaft einstellende Linse 3314 in
einem Linse-aus-Cluster 3316 gruppiert. Wie oben definiert,
berücksichtigt
eine Linse, welche einen Teil eines Linse-aus-Clusters ausbildet,
nicht diejenigen Formen in einer Szenen-Liste, die unter ihr in
dem Cluster geschichtet sind, wenn eine Szene zusammengesetzt wird.
Der Zweck des Linse-aus-Clusters
ist es, den Umfang der Operation einer jeden Linse zu minimieren.
Genauer gesagt, fügt, wenn
sich die Szene 3300 zusammensetzt, aufgrund des Linse-aus-Clusters 3316 die
zweite Eigenschaft-einstellende Linse 3314 nicht die erste
Eigenschaft-einstellende Linse 3312 zu ihrer Unter-Liste
hinzu. Als ein Ergebnis, muss, wenn die Unter-Liste der Eigenschaft-einstellenden
Linse 3314 eingefroren wird, die Unter-Liste der ersten Filterlinse 3312 nicht
eingefroren werden. Dies macht die letztendliche Zusammensetzung
und das Erzeugen der Szenen-Liste 3300 computertechnisch
effizienter.
-
Darüber hinaus
sind die erste Eigenschaft-setzende Linse 3312, die zweite
Eigenschaftsetzende Linse 3314, das erste horizontale Rechteck 3308 und
das zweite horizontale Rechteck 3310 in einem Linse-in-Cluster 3318 gruppiert.
Wie oben dargestellt, berücksichtigt
eine Linse, welche einen Teil eines Linse-in-Clusters ausbildet,
nur diejenigen Formen, welche innerhalb des Clusters und unterhalb
von ihr geschichtet sind, wenn die Szene zusammengesetzt wird. Folglich
ist, wenn die Linse 3312 und 3314 sich zusammensetzen,
das Rechteck 3306 nicht in einer Form enthalten, die in
der Unter-Liste von irgendeiner der Linsen liegt. Dies bewirkt,
dass die Szenen-Liste 3300 sich wie in 34 mit
den Linsen 3312 und 3314 zusammensetzt, welche diejenigen
Teile mit der Hintergrundfarbe einer jeden Linse einfärben, die
nur das Rechteck 3306 überlappen.
-
G.2 Abgrenzungs-Box-Ausschuss
-
Zusätzlich zum
anwenderdefinierten Umfang, wie oben dargestellt, kann das bilddarstellende
Programm 122 einen Abgrenzungs-Box-Ausschuss erzeugen,
um den Arbeitsumfang einer Linse zu minimieren. Allgemein gesprochen
muss, wenn eine Linse ihre innere Erscheinung an einem gegebenen
Zeitpunkt berechnet, sie nicht immer alle der Formen sortiert unter
ihr in der Szenen-Liste verarbeiten. Stattdessen kann das Innere
einer Linse mit nur denjenigen Formen berechnet werden in der Szenen-Liste,
welche zu ihrer Erscheinung beitragen. In vielen Fällen kann
das bilddarstellende zu ihrer Erscheinung beitragen. In vielen Fällen kann das
bilddarstellende Programm 122 versuchen, einige Formen
auszuschließen,
welche die Erscheinung des Inneren einer Linse nicht beeinflussen.
Dies kann stark die Erstellungs-Leistung verbessern, wenn eine Szene zusammengesetzt
wird, insbesondere falls einige der Formen, welche ausgeschlossen
werden, selbst wiederum Linsen sind.
-
Es
ist wichtig festzuhalten, dass der Satz von Formen, welcher durch
die Linsen sichtbar ist, nicht notwendigerweise limitiert ist auf
diejenigen Formen, welche direkt unterhalb der Linse liegen. Beispielsweise kann
eine Translationslinse einige Formen zeigen, welche seitlich zur
Linse versetzt liegen. Dergleichen kann eine Linse, welche Objekte
schrumpfen lässt
(Skalierungsfaktor weniger als 1,0) einen Teil oder die Gesamtheit
des ganzen Bildes einbringen. Als ein Ergebnis kann Abgrenzungs-Box-Ausschuss
in mindestens drei verschiedenen Fällen durch das bilddarstellende
Programm 122 durchgeführt
werden, um automatisch Formen vom Arbeitsumfang einer Linse zu entfernen,
wenn die Linse zusammengesetzt wird. In einem ersten Fall von Linsen,
die weder Formen transformieren noch verändern, entfernt das bilddarstellende
Programm 122 während
der Zusammensetzung der Linse alle Formen, die gänzlich außerhalb des Zeichen-Rechtecks (oder der Region)
der Linse liegen aus der Betrachtung. In einem zweiten Fall von
Linsen, welche eine Affine-Transformation (Translation, Rotation,
Skalierung oder Kippen) auf alle Formen als eine Gruppe durchführen, wendet das
bilddarstellende Programm 122 die Umkehrung der affinen
Transformation auf diejenigen Formen in der Szenen-Liste unter der
Linse an. Das Zeichenrechteck der resultierenden Form wird dann
verwendet, um den Arbeitsumfang der Linse, wie im ersten Fall oben
dargestellt, zu limitieren. In einem dritten Fall von Linsen, welche
Formen hinzufügen,
löschen
oder verändern,
weist das bilddarstellende Programm 122 eine einzigartige
Prozedur zum Berechnen einer Abgrenzungs-Box für jede Linse auf. Beispielsweise
sollte eine Linse, welche Tropfen-Schatten unter alle Formen hinzufügt, jeden
Tropfen-Schatten zeigen, welcher unter der Linse erscheint, selbst
falls die Form, welche den Tropfen-Schatten erzeugt, nicht selbst
unter der Linse liegt. Dies kann erzielt werden durch Beginnen mit
der Abgrenzungs-Box der Tropfen-Schatten-Linse und anschließender Anreicherung
um das Inverse der Tropfen-Schatten-Verteilung.
-
H. Aufnahme in den Cache-Speicher
-
Eine
Szenen-Liste wird wiedergezeichnet zu jeder Zeit, zu der ein Anwender
entweder eine Linse in der Szene repositioniert oder die Form unter
einer Linse in der Szene repo sitioniert. In bestimmten Situationen verändert sich
die zusammengesetzte Szene nicht an allen Stellen zu jeder Zeit,
zu der die Szene gezeichnet wird. In diesen Situationen ist es möglich, die
Ausgabe von einigen der Berechnungen wiederzuverwenden, welche zur
früheren
Zeit, zu der die Szene gezeichnet wurde, durchgeführt wurden.
Das bilddarstellende Programm 122 verwendet frühere Ausgaben
durch Speichern der zusammengesetzten Szene, erzeugt durch jede Linse,
zusammen mit einer Zusammenfassung der Eingabe der nicht zusammengesetzten
Szene im Speicher 112 (dargestellt in 1).
-
Die
Aufnahme in den Cache-Speicher kann oft verwendet werden, selbst
wenn eine Line sich innerhalb einer Szene bewegt hat. Beispielsweise,
falls eine farbfüllende
Linse sich, seit sie zuletzt gezeichnet worden war, bewegt hat,
aber jedoch noch immer oberhalb der gleichen Objekte liegt (und
diese Objekte unverändert
sind), dann bleibt ihre zusammengesetzte Szene (gefärbte Versionen
dieser Objekte) unverändert.
Nur die Schneide-Region, die auf die Formen in der Szene angewandt
werden muss, hat sich verändert.
Folglich kann das frühere
Resultat der Szenen-von-Szenen-Prozedur, dargestellt in Tabelle
5 verwendet werden, anstelle der Berechnung einer neuen.
-
Im
allgemeinen berücksichtigt
das bilddarstellende Programm 122 den Typ der Linse und
entscheidet auf einer Linsen-um-Linsen-Basis, wo das in den Cache-Speicher-Aufnehmen für eine gegebene
Linse verwendet werden sollte. In dem Fall einer Linse, welche affine
Transformationen durchführt,
wie z.B. einer Vergrößerungslinse,
kann die frühere
Szene verwendet werden, solange als sie, basierend auf einer neuen
Position des Ursprungs (Zentrum der Skalierung oder Rotation) translatiert
wird. Im Gegensatz dazu müssen
Linsen erneut zusammengesetzt werden, wann immer sie sich bewegen.
Beispielsweise erzeugt eine Linse, welche Formen in nicht linearer
Art und Weise verzerrt, eine unterschiedliche Ausgabe an jeder Position.
In einem Beispiel wird das in den Cache-Speicher aufnehmen aufrechterhalten
durch Bestimmen, wann die Eingaben für eine Linse (d.h. die Parameter,
welche eine Linse definieren) die gleichen, wie frühere Eingaben
sind (d.h. Parameter).
-
Um
die Akkuranz des in dem Cache-Speicher-Aufnehmens zu gewährleisten,
aktualisiert das bilddarstellende Programm 122 einen Zeitstempel
in einer Szene zu jeder Zeit, zu der eine Bearbeitung durch einen Anwender
durchgeführt
wurde.
-
In
einer Ausführungsform
wird angenommen, dass Aktionen des Anwenders, wie z.B. Ziehen (drag) und
Gummiband-Erzeugen (rubberbanding) nicht als Bearbeitungen ge zählt werden,
bis sie vollständig
sind. Unter dieser Annahme kann eine grobe Version des in dem Cache-Speicher-Aufnehmens
durchgeführt
werden, durch Assoziieren des szenenweiten Zeit die nicht zusammengesetzte
Szene mit der in den Cache-Speicher aufgenommenen Linsenausgabe.
Falls der Zeitstempel der Szene sich nicht verändert hat seit die Linse zuletzt
ihre Ausgabe berechnet hat, sich die Linsenparameter nicht verändert haben,
und der Typ der Linse kompatibel für das in den Cache-Speicher-Aufnehmen ist, dann
kann die in den Cache-Speicher aufgenommene Szene verwendet werden.
-
In
einer alternativen Ausführungsform
wird ein aggressiveres in den Cache-Speicher-Aufnahmeschema verwendet, welches jedes
Objekt in der Szene mit einem Zeitstempel versieht. In dieser alternativen
Ausführungsform
kann, solange keine Zeitstempel von Stempeln unter der Linse sich
verändern,
die gecachte Szene verwendet werden.
-
I. Schlussfolgerung
-
Um
zu rekapitulieren, die vorliegende Erfindung betrifft ein computergestütztes zweidimensionales bilddarstellendes
System zum Zusammensetzen von geschichteten synthetischen Grafikfiltern
oder Linsen als Komponenten einer Szene. In solchen bilddarstellenden
Systemen erzeugen Anwender-Szenen durch Schichten von abgegrenzten
geometrischen Formen und Spezifizieren von grafischen Eigenschaften,
wie z.B. Linienbreite, Füllfarbe
und Transparenz. Unter den meisten Umständen können die grafischen Eigenschaften
von begrenzten geometrischen Formen nur auf die Gesamtheit der Formen
angewandt werden. Um visuelle Effekte zu erzeugen, welche offensichtliche
Formengrenzen überschreiten,
muss der Anwender typischerweise Extraformen oder Grenzen in eine
Szene einbringen. Eine Linse jedoch verändert die Erscheinungsform
von Formen, betrachtet durch ihre innere begrenzte Region, so dass
das räumliche
Ausmaß des
Effekts unabhängig von
den Grenzen dieser Formen ist. In vorteilhafter Art und Weise können Linsen
geschichtet in einer Szene zusammengesetzt werden, um einen großen Bereich
von räumlich
begrenzten visuellen Effekten zu erzeugen, welche die Erscheinung
von gefärbtem
Glas, optischen Linsen, Wasser, Leuchten, Webungen, Schatten, Röntgenstrahlen,
Schottenmustern und dreidimensionalen Tiefen einschließen.
-
Das
System zum Zusammensetzen geschichteter synthetischer grafischer
Filter kann fertig in Software implementiert werden unter Verwendung
von Software-Entwicklungs-Umgebungen,
welche transportabler Quellcodes zur Verfügung stellen, die auf einer Vielzahl
von Hardware-Plattformen verwendet werden können. Alternativ kann das offenbarte
System teilweise oder vollständig
in Hardware implementiert werden unter Verwendung von logischen
Standard-Schaltkreisen. Ob Software oder Hardware verwendet wird,
um das System zu implementieren, variiert in Abhängigkeit von den Geschwindigkeits-und
Effizienz-Anforderungen des Systems und auch von der speziellen
Funktion und den speziellen Software-oder Hardware-Systemen und
dem speziellen Mikroprozessor-oder Mikrocomputer-System, das eingesetzt
wird. Das System jedoch kann leicht entwickelt werden von den Fachleuten
auf den anzuwendenden Gebieten, ohne übermäßige Experiment-Durchführung aus
der funktionalen Beschreibung, welche hier zur Verfügung gestellt
wird zusammen mit einem allgemeinen Wissen im Bereich der Computertechnologien.
-
Die
Erfindung wurde unter Verweis auf eine spezielle Ausführungsform
beschrieben. Die Ausführungsformen
sind jedoch Beispiele und der Umfang der Erfindung ist durch die
beigefügten
Ansprüche
definiert.