DE19549870B4 - Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene - Google Patents

Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene Download PDF

Info

Publication number
DE19549870B4
DE19549870B4 DE19549870A DE19549870A DE19549870B4 DE 19549870 B4 DE19549870 B4 DE 19549870B4 DE 19549870 A DE19549870 A DE 19549870A DE 19549870 A DE19549870 A DE 19549870A DE 19549870 B4 DE19549870 B4 DE 19549870B4
Authority
DE
Germany
Prior art keywords
quality
procedure
group
class
scene
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE19549870A
Other languages
German (de)
Inventor
David Boulder Creek Jevans
Philip J. Boulder Creek Schneider
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/362,118 external-priority patent/US5986667A/en
Priority claimed from US08/383,198 external-priority patent/US5561752A/en
Priority claimed from US08/482,016 external-priority patent/US5777621A/en
Application filed by Apple Inc filed Critical Apple Inc
Priority to DE19549849A priority Critical patent/DE19549849B4/en
Priority claimed from DE19549849A external-priority patent/DE19549849B4/en
Application granted granted Critical
Publication of DE19549870B4 publication Critical patent/DE19549870B4/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

The method for creating a representation of a scene for display on a graphical output device involves storing in memory a representation of an object, and invoking an object drawing sub-system with an identification of the object and an identification of a renderer to use for drawing the object. The object drawing sub-system uses the identified renderer to render the identified object into the scene. The object includes at least one sub-object, and the object drawing sub-system uses the identified renderer to draw each of the sub-objects into the scene for output to the graphical output device.

Description

Begrenzter UrherberschutzverzichtLimited anther protection waiver

Ein Teil der Offenbarung dieser Patentschrift enthält Material, auf das Anspruch auf Urheberrechtschutz erhoben wird. Der Inhaber des Urheberrechts hat keine Einwendungen gegen die Facsimilereproduktion der Patentschrift oder der Patentoffenbarung, wie sie in den Akten oder Aufzeichnungen des US-Patent- und Markenamtes erscheint, durch irgendeine Person, behält sich aber im übrigen alle anderen Rechte vor.One Part of the disclosure of this patent contains material to which claim is raised to copyright protection. The copyright owner has no objections to the facsimile reproduction of the patent specification or the patent disclosure, as in the files or records the US Patent and Trademark Office appears, by any person, reserves but otherwise all other rights.

HINTERGRUNDBACKGROUND

1. Gebiet der Erfindung1. Field of the invention

Die Erfindung bezieht auf Graphikaufbereitungssysteme und insbesondere auf Softwarewerkzeuge zur Unterstützung von Graphikanwendungsentwicklern.The This invention relates to graphics processing systems and more particularly on software tools to assist graphics application developers.

2. Beschreibung der einschlägigen Technik2. Description of the Related Art

Graphikaufbereitung ist der Prozeß der Berechnung eines zweidimensionalen Bildes (oder Teil eines Bildes) aus dreidimensionalen geometrischen Formen. Ein Objekt wird hier als dreidimensional betrachtet, wenn seine Punkte durch wenigstens jeweils drei Koordinaten spezifiziert werden (gleichgültig, ob das Objekt in allen drei Dimensionen eine Dicke aufweist oder nicht). Ein Aufbereiter ist ein Werkzeug, das Graphikaufbereitungsvorgänge in Abhängigkeit von zugeführten Anforderungen ausführt. Manche Aufbereiter sind ausschließlich Software, andere sind ausschließlich Hardware und manche sind unter Verwendung von beidem ausgeführt (z. B. Software mit Hardwareunterstützung-Beschleunigung). Aufbereiter übergeben typischerweise Szenen in einen Puffer, der anschließend an die Graphikausgabevorrichtung ausgelesen wird, aber es ist bei manchen Aufbereitern möglich, ihre zweidimensionale Ausgabe direkt an die Ausgabevorrichtung zu überschreiben. Ein Graphikaufbereitungssystem (oder Subsystem), wie es hier verwendet wird, bezieht sich auf alle Verarbeitungsniveaus zwischen einem Anwendungsprogramm und einer Graphikausgabevorrichtung. In vielen bekannten Systemen ist das Graphikaufbereitungssystem inhaltsgleich mit dem Aufbereiter; das heißt, der Aufbereiter wird direkt durch das Anwendungsprogramm ohne zwischenliegende Verarbeitungslagen aufgerufen.graphics rendering is the process of Calculation of a two-dimensional image (or part of an image) from three-dimensional geometric shapes. An object is here considered as three-dimensional, if its points by at least each three coordinates are specified (regardless of whether the object has a thickness in all three dimensions or not). A dresser is a tool that deploys graphics rendering operations supplied Performs requests. Some preparers are only software, others are exclusively Hardware and some are done using both (e.g. Software with hardware support acceleration). Hand over conditioner typically scenes in a buffer that follow the graphics output device is read, but it is in some Preparers possible, overwrite its two-dimensional output directly to the output device. A graphics rendering system (or subsystem) as used herein is, refers to all levels of processing between one Application program and a graphics output device. In many known systems, the graphics editing system is the same content with the dresser; that is, the Conditioner is directly through the application program without intermediate Processing layers called.

Graphikaufbereitungssysteme haben typischerweise eine Direktbefehlsschnittstelle oder eine Erhaltungsschnittstelle für das Anwendungsprogramm. Eine Echtzeitschnittstelle ist eine echte Verfahrensschnittstelle, in der das Anwendungsprogramm jedes geometrischen Elements für das Graphikaufbereitungssystem jedesmal spezifiziert, wenn das Bild aufzubereiten ist. Das Aufbereitungssystem unterhält keine Modelldatenbank von Szene zu Szene, auch wenn das Anwendungsprogramm dies tun könnte. Echtzeitschnittstellen sind hoch attraktiv für die Aufbereitung von Szenen, bei denen sich das Modell mit jedem Rahmen ändert, wie beispielsweise zur Darstellung von Simulationen, zur Vorausschau von Animationssequenzen oder zum Lesen einer Serie von Modellen aus einem Dokument. Andererseits erfordert eine Direktbefehlsschnittstelle, daß die gesamte Szene über Prozeßanforderungen bei jedem Rahmen an den Aufbereiter übertragen wird, was zu einer hohen Datenbandbreite zwischen dem Anwendungsprogramm und dem Aufbereiter führt. Auch ist das Dokumentenformat für ein Modell häufig ein Strom von Zeichenbefehlen anstelle das Modell selbst, was seine Nützlichkeit als Datenaustauschformat beschränkt. Echtzeitschnittstellen sind auch weniger förderlich bei der Schaffung einer einen Werkzeugsatz nachbildenden Funktionalität des Anwendungsprogramms, und sie schließen gewöhnlich einen Benutzerschnittstellenwerkzeugsatz aus, der Objekte in der Szene bearbeitet.Graphics rendering systems typically have a direct command interface or a maintenance interface for the Application program. A real-time interface is a true process interface, in which the application program of each geometric element for the graphics rendering system every time specified when the image is to be processed. The processing system entertains no model database from scene to scene, even if the application program could do this. Real-time interfaces are highly attractive for editing scenes where the model changes with each frame, such as the Presentation of simulations, for previewing animation sequences or to read a series of models from a document. on the other hand requires a direct-command interface that handles the entire scene via process requirements at each frame is transmitted to the conditioner, resulting in a high data bandwidth between the application program and the conditioner leads. Also, the document format is for a model often a stream of drawing commands instead of the model itself, indicating its usefulness limited as a data exchange format. Real-time interfaces are also less conducive to creation a toolset replicating functionality of the application program, and they close usually a user interface toolset that objects in the Scene edited.

In einem Aufrechterhaltungsbetriebssystem, das manchmal Anzeigelistensystem genannt wird, hält das Graphikaufbereitungssystem eine Datenbankdarstellung des dreidimensionalen Modells aufrecht. Bei jedem Rahmen überquert das Aufbereitungssystem die Datenbank des aufrecht erhaltenen Modells und zeichnet es. Dieses kann durch einen einzigen Befehl an das Graphikaufbereitungssystem durch das Anwendungsprogramm ausgelöst werden anstelle durch einen Strom von Zeichenbefehlen, die die gesamte Szene beschreiben. Wenn sich das Modell ändert, editiert oder aktualisiert das Anwendungsprogramm die Modelldatenbank und fordert das Aufberei tungssystem erneut auf, die Szene aufzubereiten. Der Vorteil eines Aufrechterhaltungsbetriebssystems umfassen die verminderte Bandbreite zwischen dem Anwendungsprogramm und jedem Hardwarebeschleuniger. Das Dokumentenformat der Modelldatenbank kann auch einfach als Datenaustauschformat verwendet werden, da es nicht lediglich eine Liste von Verarbeitungsbefehlen ist. Die Existenz einer Objektdatenbank bietet auch einen zusätzlichen Weg zur Ausführung eines Benutzerschnittstellenwerkzeugsatzes und einer Funktionalitätsnachbildung. Aufrechterhaltungsaufbereiter können auch Aufbereitungsinformationen Puffern und können Information zur Optimierung einer Szenedurchquerung Puffern. Andererseits haben Aufrechterhaltungsaufbereitungssysteme einen höheren Aufwand zur Editierung der Szenendatenbank, und sie beschränken Anwendungsprogrammgestaltungen dadurch, daß sie die Szene in eine systembestimmte Datenstruktur, üblicherweise eine Hierarchie, zwingen, so daß viele Anwendungsprogramme erforderlich werden, um eine Duplikatkopie des Modells in ihrem eigenen Format zu erhalten.In a maintenance operating system, sometimes called a display list system, the graphics rendering system maintains a database representation of the three-dimensional model. At each frame, the rendering system crosses and records the database of the maintained model. This can be triggered by the application program by a single command to the graphics rendering system instead of a stream of paint commands describing the entire scene. As the model changes, the application program edits or updates the model database and again prompts the reconditioning system to render the scene. The advantage of a maintenance operating system include the reduced bandwidth between the application program and each hardware accelerator. The document format of the model database can also be easily used as a data exchange format since it is not just a list of processing instructions. The existence of an object database also provides an additional way to execute a user interface toolset and a functionality replica. Maintenance dressers can also recycle Information Buffers and can buffer information for optimizing a scene traversal. On the other hand, maintenance rendering systems have a greater overhead for editing the scene database, and they limit application programming by forcing the scene into a system-defined data structure, usually a hierarchy, so that many application programs are required to obtain a duplicate copy of the model in its own format ,

In dem Aufsatz von Mark A. Tarlton und P. Nong Tarlton ”A Framework for Dynamic Visual Applications,” Proceedings of the 1992 Symposium an Interactive 3D Graphics, Cambridge, MA, 1992, Seiten 161–164, was hier durch Bezugnahme in die Beschreibung eingebaut wird, ist ein Aufrechterhaltungsaufbereitungssystem beschrieben, das ein Alzweckdatenbanksystem ausführt, um das Modell zu organisieren, anstelle das Modell zu zwingen, in einer einzigen Systemhierarchie zu bleiben. Eine solche Technik versucht, die Vorteile des Aufrechterhaltungssystems ohne die Nachteile anzubieten.In the essay by Mark A. Tarlton and P. Nong Tarlton "A Framework for Dynamic Visual Applications, "Proceedings of the 1992 Symposium to Interactive 3D Graphics, Cambridge, MA, 1992, pp. 161-164, what incorporated herein by reference in the specification is a Maintenance processing system described, the an Alzweckdatenbanksystem executing, to organize the model instead of forcing the model into a single system hierarchy. Such a technique Trying to take advantage of the maintenance system without the disadvantages offer.

Ein Schema so hohen Niveaus kann jedoch nicht das Modellorganisationsproblem für alle Anwendungen lösen und ist nicht optimal für Visualisierungsanwendungen, bei denen sich die Szene mit jedem Rahmen ändert.One However, such a high level scheme can not solve the model organization problem for all Solve applications and is not optimal for Visualization applications where the scene changes with each frame.

Konventionelle Graphikaufbereitungssysteme weisen mehrere zusätzliche Probleme auf, die ihre Nützlichkeit in der einen oder anderen Art begrenzen. Die nachfolgende Liste beschreibt einige der Graphikaufbereitungssysteme, die gegenwärtig verfügbar sind.conventional Graphics rendering systems have several additional issues that affect their usefulness limit in one way or another. The following list describes some of the graphics rendering systems that are currently available.

GLTM: GL von Silicon Graphics ist ein Echtzeitaufbereiter, der hauptsächlich für interaktive Graphik verwendet wird. GL ist in ”Graphics Library Programming Guide”, Silicon Graphics Computer Systems, 1991, beschrieben, was hier durch Bezugnahme eingebaut wird. Es war als Schnittstelle für die IRIS-Aufbereitungshardware von Silicon Graphics entworfen und bietet kein Dokumentenformat, keine Druckerausgabe, keine Modellierfähigkeit oder Benutzerschnittstellenwerkzeuge. GL unterhält einfache Anzeigelisten, die im wesentlichen Makros für eine Folge von GL-Befehlen sind. Die GL-Routinen führen Aufbereitungsvorgänge durch Abgabe von Befehlen an die IRIS-Hardware durch.GL TM : GL from Silicon Graphics is a real-time renderer used primarily for interactive graphics. GL is described in "Graphics Library Programming Guide", Silicon Graphics Computer Systems, 1991, incorporated herein by reference. Designed to interface with Silicon Graphics' IRIS rendering hardware, it offers no document format, no printer output, no modeling capability, or user interface tools. GL maintains simple display lists, which are essentially macros for a sequence of GL commands. The GL routines perform rendering operations by issuing commands to the IRIS hardware.

StarBaseTM: StarBase von Hwelett-Packard's ist ein Echtzeitsystem, das GL sehr ähnlich ist, die meisten seiner Merkmale und Nachteile teilt. StarBase ist in ”Starbase Graphics Techniques”, von Hewlett-Packard Company, 1991, beschrieben, was hier durch Bezugnahme eingebaut wird. Für StarBase sind zahlreiche Vorrichtungsdriver verfügbar zum Ausgeben der aufbereiteten (das heißt, zweidimensionalen) Szenen an unterschiedliche Graphikausgabevorrichtungen, die von Plottern bis zu hoch komplizierten 3-D-Graphikarbeitsstationen reichen.StarBase TM : StarBase from Hwelett-Packard's is a real-time system that is very similar to GL, sharing most of its features and disadvantages. StarBase is described in "Starbase Graphics Techniques", by Hewlett-Packard Company, 1991, incorporated herein by reference. For StarBase, numerous device drivers are available for outputting the rendered (that is, two-dimensional) scenes to different graphics output devices, ranging from plotters to highly complex 3-D graphics workstations.

RenderManTM: RenderMan von Pixar ist ein Echtzeitsystem, das hauptsächlich zur Unterstützung von Hochqualitätsaufbereitung entworfen ist. RenderMan ist beschrieben in Steve Upstill, ”The RenderMan Companion”, Addison-Wesley, Reading, MA, 1990, was hier durch Bezugnahme eingebaut wird. Wie in Tony Apodaca, ”RenderMan Interface Specification Version 4.0 Beta”, Januar 1992, hier durch Bezugnahme eingebaut, beschrieben ist, bieten neuere Versionen der RenderMan-Beschreibung neue Routinen, die die existierenden RenderMan-Befehle überbrücken und die Verwendung verschiedener Aufbereiter ermöglichen. Der Aufbereiter wird mit einem einzigen Befehl vor der Aufbereiten der Szene spezifiziert, und er beeinflußt die gesamte Szene. Siehe auch Pixar: ”Uick RenderMan Interface und Implementation Specification”, 1992, was hier durch Bezugnahme eingebaut wird.RenderMan TM : RenderMan by Pixar is a real-time system designed primarily to support high-quality rendering. RenderMan is described in Steve Upstill, "The RenderMan Companion", Addison-Wesley, Reading, MA, 1990, incorporated herein by reference. As described in Tony Apodaca, "RenderMan Interface Specification Version 4.0 Beta," January 1992, incorporated herein by reference, newer versions of the RenderMan description provide new routines that bridge the existing RenderMan commands and allow the use of various renderers. The conditioner is specified with a single command prior to rendering the scene, and it affects the entire scene. See also Pixar: "Uick RenderMan Interface and Implementation Specification", 1992, incorporated herein by reference.

PHIGS: PHIGS ist beschrieben in PHICS Committee, A. van Dam, chair, ”PHIGS Functional Description, Revision 3,0”, Computer Graphics, 22(3), 1988, Seiten 125–218, was hier durch Bezugnahme eingebaut wird, und ist ein Abkömmling von GKS-3D, beschrieben in international Standards Organization, ”International Standard Infor mation Processing Systems Computer Graphics – Graphical Kernel System for Three Dimensions (GKS-3D) Functional Description”, ISO Dokument Nr. 8805:1988(E), American National Standards Institute, New York, 1988, was hier durch Bezugnahme eingebaut wird. PHIGS war ein Kommittee-entworfenes System für eine interaktive 3D-Graphikanzeige. In PHIGS besteht die gesamte Modelldatenbank in einer einzigen Hierarchie. Anwendungsprogrammierer müssen eine große Zahl Editier- und Hierarchiemanipulationsbefehle lernen, um das System wirksam zu benutzen. PHIGS verwendet einen einzigen Aufbereiter, der alle Aufbereitungsarten unterstützt, die in PHIGS verfügbar angegeben sind, und unterstützt keine alternativen Aufbereiter für Photorealismus oder andere Effekte.PHIGS: PHIGS is described in PHICS Committee, A. van Dam, chair, "PHIGS Functional Description, Revision 3.0 ", Computer Graphics, 22 (3), 1988, pages 125-218, which is hereby incorporated by reference is built in, and is a descendant from GKS-3D, described in International Standards Organization, "International Standard Information Processing Systems Computer Graphics - Graphical Kernel System for Three Dimensions (GKS-3D) Functional Description ", ISO Document No. 8805: 1988 (E), American National Standards Institute, New York, 1988, incorporated herein by reference. PHIGS was a committee-designed System for an interactive 3D graphics display. In PHIGS consists the entire Model database in a single hierarchy. application programmer have to a big Learn number editing and hierarchy manipulation commands to do this System to use effectively. PHIGS uses a single conditioner, which supports all edit types available in PHIGS are, and supported no alternative conditioner for Photorealism or other effects.

PEX: PEX ist ein Anhang zum X-Windows-Systems, definiert durch ein Serienprotokoll (zum Übertragen von Daten zwischen einem Anwendungsprogramm und dem X-Windows-System) und einen Satz Semantic, die ursprünglich von PHIGS abgeleitet war. PEX hat verschiedene verfügbare APIs, die alle den Aufrechterhaltungsbetrieb, den Echtzeitbetrieb und Gemischtbetriebs-Funktionsbefehle zum Zeichnen, Zustandsändern usw. unterhalten. PEX ist in ”PEX Protocol Specification, Version 5.0P-X Public Review Draft”, 14. September 1990, Massachusetts Institute of Technology beschrieben, was hier durch Bezugnahme eingebaut wird.PEX: PEX is an attachment to the X-Windows system defined by a serial protocol (for transferring data between an application program and the X-Windows system) and a set of seman tic, which was originally derived from PHIGS. PEX has several available APIs, all of which maintain maintenance mode, real-time operation, and mixed mode function commands for drawing, changing states, and so on. PEX is described in "PEX Protocol Specification, Version 5.0PX Public Review Draft", September 14, 1990, Massachusetts Institute of Technology, incorporated herein by reference.

HOOPSTM: HOOPS von Ithaca Software ist beschrieben von Garry Wiegand und Bob Covey, in ”HOOPS Reference Manual, Version 3.0” Ithaca Software, 1991, was hier durch Bezugnahme eingebaut wird. Es ist ein 3D-Graphiksystem im Aufrechterhaltungsbetrieb, das das Modell in einer Hierarchie organisiert, deren Knoten durch Textstränge zugänglich sind, hauptsächlich in der gleichen Weise, wie die Dokumente im UNIX-Dokumentensystem bezeichnet sind. Wie PHIGS unterstützt HOOPS einen einzigen Aufbereiter. HOOPS bietet jedoch eine extensivere Szenen-Editierfunktionalität als PHIGS.HOOPS : HOOPS by Ithaca Software is described by Garry Wiegand and Bob Covey, in "HOOPS Reference Manual, Version 3.0" Ithaca Software, 1991, incorporated herein by reference. It is a maintainer 3D graphics system that organizes the model into a hierarchy whose nodes are accessible through text strings, much in the same way as the documents in the UNIX document system are labeled. Like PHIGS, HOOPS supports a single conditioner. HOOPS, however, offers more extensive scene editing functionality than PHIGS.

DORÉTM: DORÉ von Kubota ist ein Beispiel eines 3D-Graphiksystems mit einem objektbezognene Design. Es ist beschrieben in Dorè Programmer's Guide”, Ausgabe 5.0, Kubota Pacific Computer Inc., 1991, was hier durch Bezugnahme eingebaut wird. DORÈ wurde so gestaltet, daß Szenendaten durch viele Arten von Aufbereitern aufbereitbar sind und nicht nur durch einen einzigen monolithischen Aufbereiter, wie bei PHIGS vorgesehen. Aufbereiter können jedoch zu DORÈ nicht dynamisch hinzugefügt werden, weil die Aufbereitungsverfahren in das System eingebaut sind. Bei DORÈ wird die Wahl der Aufbereiter durch Eingeben des gegenwärtigen Aufbereitungsstiels in das DORÈ-”Ansichtsobjekt” spezifiziert. DORÈ veranlaßt dann auch das Anwendungsprogramm, das Modell dem Ansichtsobjekt vor dem Aufbereiten anzuhängen. Dieses beschränkt DORÈ darauf, gleichzeitig nur einen Aufbereiter zu verwenden. Es gibt andere Design-Überlegungen bei DORÈ, die es ebenfalls darauf beschränken, gleichzeitig nur einen Aufbereiter zu verwenden; beispielsweise ist zur Aufrechterhaltung des Aufbereitungszustandes nur ein Satz globaler Variablen vorhanden.DORÉ TM : DORÉ by Kubota is an example of a 3D graphics system with an object-related design. It is described in Dorè Programmer's Guide, Issue 5.0, Kubota Pacific Computer Inc., 1991, incorporated herein by reference. DORÈ has been designed so that scene data can be processed by many types of conditioners and not just by a single monolithic conditioner, as provided by PHIGS. However, conditioners can not be dynamically added to DORÈ because the rendering processes are built into the system. In DORÈ, the choice of conditioner is specified by entering the current preparation handle in the DORÈ "view object". DORÈ then causes the application program to attach the model to the view object before rendering. This restricts DORÈ to use only one conditioner at a time. There are other design considerations at DORÈ that also limit it to using only one conditioner at the same time; for example, there is only one set of global variables to maintain the rendering state.

DORÈ ist ein Aufrechterhaltungsbetriebssystem. Um viel von der Mühe zu erleichtern, die mit dem Editieren der Modellhierarchie einhergeht und um die dynamischen Datenbanken und die Benutzerinteraktion mit dynamischen Datenbanken zu erleichtern, unterstützt DORÈ Anwendungsrückrufobjekte, wodurch ein Anwendungsprogramm eine aufzurufende Funktion definiert, wenn das Rückrufobjekt während der Szenenüberquerung angetroffen wird.DORÈ is one Maintenance operating system. To relieve a lot of the trouble which is associated with the editing of the model hierarchy and the dynamic databases and user interaction with dynamic To facilitate databases, DORÈ supports application callback objects, whereby an application program defines a function to call, if the callback object while the scene crossing is encountered.

InventorTM: Inventor ist ein objektgerichteter 3D-Graphikbenutzerinteraktionswerkzeugsatz, der auf dem GL-Graphiksystem sitzt. Wie DORÈ unterstützt Inventor mehrere Aufbereiter, indem es ein Aufbereiter-spezifisches ”Aufbereitungs”-Verfahren für jeden Objekttyp aufweist. Inventor ist ein Aufrechterhaltungsbetriebssystem, bei dem die gesamte Szene in einem ”Szenengraph” liegt. Inventor hat Aufbereitungsobjekte, die ein Modell als einen Parameter nehmen. Der Aufbereiter wird durch den Aufbereitungsvorgang ausgesucht, der beim Zeichnen des Modells verwendet wird. Der Aufbereitungsvorgang zeichnet das gesamte Modell durch Durchquerung des Modells und Aufrufen des geeigneten Aufbereitungsverfahrens für jedes Objekt. Der übliche Aufbereitungsvorgang ist der GL-Aufbereitungsbetrieb. Inventor ist beschrieben in Wernecke, ”The Inventor Mentor”, Addison-Wesley (1994), hier durch Bezugnahme eingebaut.Inventor TM : Inventor is an object-oriented 3D graphics user interaction tool set that sits on the GL graphics system. Like DORÈ, Inventor supports multiple renderers by having a conditioner-specific "rendering" method for each object type. Inventor is a maintenance operating system where the entire scene is in a "scene graph". Inventor has rendering objects that take a model as a parameter. The conditioner is selected by the rendering process used when drawing the model. The rendering process draws the entire model by traversing the model and invoking the appropriate rendering process for each object. The usual treatment process is the GL treatment plant. Inventor is described in Wernecke, "The Inventor Mentor", Addison-Wesley (1994), incorporated herein by reference.

Andere für die vorliegende Beschreibung wesentliche Veröffentlichungen, die sämtlich durch Bezugnahme hier eingebaut werden, sind: Bergman, Fuchs und Grant, ”Image Rendering by Adaptive Refinement”, Computer Graphics, 20(4), 1986, Seiten 29–37; Catmull, ”Asubdivision Algorithm for Computer Display of Curved Surfaces”, Ph. D. Thesis, Report UTEC-CSc-74-133, Computer Science Department, University of Utah, Salt Lake City, UT, Dezember 1974; Chen, Rushmeier, Miller und Turner, ”A Progressive Multi-Pass Method for Global Illumination”, Computer Graphics, 25(4), 1991, Seiten 165–174; Clark ”The Geometry Engin: A VLSI Geometry System for Graphics”, Computer Graphics, 16(3), 1982, Seiten 127–133; Foley, van Dam, Feiner, und Hughes, ”Computer Graphics: Principles und Practice,” Addison-Wesley, Reading, MA, 1990; Haeberli und Akeley, ”The Accumulation Buffer: Hardware Support for High-Quality Rendering”, Computer Graphics, 24(4), ”A Scalable Hardware Render Accelerator using a Modified Scenline Algorithm”, Computer Graphics, 26(2), 1992, Seiten 241–248; Maillot, ”Three-Dimensional Homogeneous Clipping of Triangle Strips”, Graphics Gems II, Academic Press, Inc., San Diego, CA, 1991, Seiten 219–231; Newell, Newellund Sancha, ”A Solutation to the Hidden Surface Problem”, Preoceedings of the ACM National Conference, 1972, Seiten 443–450; Potmesil und Hoffert, ”FRAMES: Software Tools for Modeling, Rendering, und Animation of 3D Scences”, Computer Graphics, 21(4), 1987, Seiten 85–93; Saito und Takahashi, ”Comprehensible Rendering of 3-D Shapes”, Computer Graphics, 24(4), 1990, Seiten 197–206; Segal, Korobkin, van Widenfeld, Foran, und Haeberli, ”Fast Shadows und Lighting Effects Using Texture Mapping”, Computer Graphics, 26(2), 1992, Seiten 249–252; Sillion und Puech, ”A General Two-Pass Method Integrating Specular und Diffuse Reflection”, Computer Graphics, 23(3), 1989, Seiten 335–344; Snibbe, Herndon, Robbins, Conner und van Dam, ”Using Deformations to Explore 3D Widget Design”, Computer Graphics, 26(2), 1992, Seiten 351–352; Strauss und Carey, ”An Object-Oriented 3D Graphics Toolkit, ”Computer Graphics, 26(2), 1992, Seiten 341–349; Turkowski, ”Design Considerations for an Object-Oriented [3D Graphics] Metafile”, Proceedings of the Third Eurographics Workshop on Object-Oriented Graphics, Charnpery, Schweiz, Oktober, 1992, Seiten 163–169; Venolia, ”Facile 3D Direct Manipulation”, zur Veröffentlichung in Proceedings of CHI '93, ACM/SIGCHI, Amsterdam, May, 1993; Venolia, ”Automatic Alignment in Two and Three Dimensions”, übermittelt an SIGGRAPH '93; und Wanger, ”The Effect of Shadow Quality an the Preception of Spatial Relationships in Computer Generste Imagery”, Proceedings of the 1992 Symposium an Interactive 3D Graphics, Cambridge, MA, 1992, Seite 3942.Other publications essential to the present specification, all of which are incorporated herein by reference, are: Bergman, Fuchs and Grant, "Image Rendering by Adaptive Refinement", Computer Graphics, 20 (4), 1986, pages 29-37; Catmull, "Asubdivision Algorithm for Computer Display of Curved Surfaces", Ph.D. Thesis, Report UTEC-CSc-74-133, Computer Science Department, University of Utah, Salt Lake City, UT, December 1974; Chen, Rushmeier, Miller, and Turner, "A Progressive Multi-Pass Method for Global Illumination," Computer Graphics, 25 (4), 1991, pp. 165-174; Clark "The Geometry Engin: A VLSI Geometry System for Graphics", Computer Graphics, 16 (3), 1982, pages 127-133; Foley, van Dam, Feiner, and Hughes, "Computer Graphics: Principles and Practice," Addison-Wesley, Reading, MA, 1990; Haeberli and Akeley, "The Accumulation Buffer: Hardware Support for High-Quality Rendering", Computer Graphics, 24 (4), "A Scalable Hardware Render Accelerator using a Modified Scenline Algorithm", Computer Graphics, 26 (2), 1992, pages 241-248; Maillot, "Three Dimensional Homogeneous Clipping of Triangle Strips", Graphics Gems II, Academic Press, Inc., San Diego, CA, 1991, pp. 219-231; Newell, Newell, and Sancha, "A Solutation to the Hidden Surface Problem," Preceedings of the ACM National Conference, 1972, pp. 443-450; Potmesil and Hoffert, "FRAMES: Software Tools for Modeling, Rendering, and Animation of 3D Scences," Computer Graphics, 21 (4), 1987, pp. 85-93; Saito and Takahashi, "Comprehensible Rendering of 3-D Shapes", Computer Graphics, 24 (4), 1990, pages 197-206; Segal, Korobkin, van Widenfeld, Foran, and Haeberli, "Fast Shadows and Lighting Effects Using Texture Mapping," Computer Graphics, 26 (2), 1992, pp. 249-252; Sillion and Puech, "A General Two-Pass Method Integrating Specular and Diffuse Reflection", Computer Graphics, 23 (3), 1989, pp. 335-344; Snibbe, Herndon, Robbins, Conner and van Dam, "Using Deformations to Explore 3D Widget Design ", Computer Graphics, 26 (2), 1992, pp. 351-352; Strauss and Carey, "An Object-Oriented 3D Graphics Toolkit," Computer Graphics, 26 (2), 1992, pp. 341-349; Turkowski, "Design Considerations for an Object-Oriented [3D Graphics] Metafile," Proceedings of the Third Eurographics Workshop on Object-Oriented Graphics, Charnpery, Switzerland, October, 1992, pp. 163-169; Venolia, "Facile 3D Direct Manipulation", for publication in Proceedings of CHI '93, ACM / SIGCHI, Amsterdam, May, 1993; Venolia, "Automatic Alignment in Two and Three Dimensions", submitted to SIGGRAPH '93; and Wanger, "The Effect of Shadow Quality on the Preception of Spatial Relationships in Computer Generals Imagery," Proceedings of the 1992 Symposium on Interactive 3D Graphics, Cambridge, MA, 1992, page 3942.

In der Patentschrift US 5,181,162 A2 , wird ein System zum Verwalten und Erstellen von Dokumenten offenbart, bei dem die Dokumente als Sammlung logischer Komponenten dargestellt werden, die kombiniert und in Form eines seitenweise organisierten Layouts aufbereitet werden können. Die auch als Objekte bezeichneten Komponenten enthalten Texte, Bilder, Sprach- oder graphische Daten. Darüber hinaus können die Komponenten auch Daten umfassen, die das Erscheinungsbild, die Beziehung zu anderen Objekten oder Zugangsbeschränkungen betreffen. Das System ermöglicht es einem Betrachter, Inhalte und logische Unterteilungen einer Veröffentlichung einzusehen, sowie thematisch oder auf andere Weise, wie beispielsweise über den Verfasser oder bestimmte Attribute, damit in Beziehung stehendes Material zu sammeln. Die Patentschrift offenbart ferner eine Verwaltung der Organisation der Dokumente über logische und Layout-Datenstrukturen mittels einer Datenbank. Eine graphische Aufbereitung eines Dokuments zur Anzeige auf einer Graphikausgabevorrichtung ist nicht Gegenstand dieser Patentschrift.In the patent US 5,181,162 A2 discloses a system for managing and creating documents, in which the documents are presented as a collection of logical components that can be combined and edited in the form of a page-organized layout. The components, also referred to as objects, contain texts, images, speech or graphic data. In addition, the components may also include data relating to appearance, relationship to other objects, or access restrictions. The system allows a viewer to view the contents and logical partitions of a publication, as well as thematically or otherwise, such as through the author or certain attributes, to collect related material. The patent further discloses management of the organization of the documents via logical and layout data structures by means of a database. A graphic rendering of a document for display on a graphics output device is not the subject of this patent.

Die Offenlegungsschrift EP 0 534 446 A2 offenbart ein System zum Erkennen von Zeichnungsobjekten, das ein Verfahren zur Annäherung graphischer Objekte und Zeichnungsobjekte umfaßt, sowie zur Annäherung von Positionen auf dem angenäherten graphischen Objekt. Das System ermöglicht das Erfassen von Art, Form und genauer Position einer Graphik in einer Zeichnung. Dies ist auch möglich, wenn die Zeichnung sich überlagernde Graphiken enthält oder sich die Qualität der Graphiken aufgrund häufigen Kopierens verschlechtert hat, wobei die Graphik eine Linie oder eine zusammengesetzte Graphik darstellen kann. Das offenbarte System ermöglicht die Trennung der erfassten Graphik vom Hintergrund, sobald ein Anwender ein annähernd gleiches Objekt oder deren ungefähre Position angibt. Anders als die oben angegebenen Systeme ist EP 0 534 446 nicht mit der Aufbereitung von Objekten zur Anzeige auf einer Graphikausgabevorrichtung befaßt.The publication EP 0 534 446 A2 discloses a system for recognizing drawing objects that includes a method for approximating graphical objects and drawing objects, and for approximating positions on the approximated graphical object. The system enables you to capture the type, shape and exact position of a graphic in a drawing. This is also possible if the drawing contains superimposed graphics or the quality of the graphics has deteriorated due to frequent copying, which graphic may represent a line or a composite graphic. The disclosed system allows the separation of the captured graphics from the background as soon as a user indicates an approximately equal object or its approximate position. Other than the above systems is EP 0 534 446 not concerned with rendering objects for display on a graphics output device.

Es ist wünschenswert, in der Lage zu sein, ein Modell unter Verwendung einer Vielzahl unterschiedlicher Arten von Aufbereitern zu zeichnen. Beispielsweise kann ein Anwendungsprogramm, das ein interaktives Editieren eines dreidimensionalen Modells erlaubt, vorteilhaft sein durch Verwendung eines Hochgeschwindigkeits-Drahtmodellaufbereiters geringer Qualität zur Zeichnung von Zwischenversionen auf einer Anzeige und durch Verwendung eines hochwertigen, langsamen Z-Pufferaufbereiters zum Zeichnen der Endversion auf einem Drucker. Die Austauschbarkeit von Aufbereitern ist jedoch bestenfalls schwierig unter Verwendung der oben beschriebenen Aufbereitungssysteme. Insbesondere unterstützen einige der obigen Aufbereitungssysteme nicht mehr als einen Aufbereiter, während jene, die das tun, wie beispielsweise DORÉ und Inventor, den gewählten Aufbereiter in die Systemkonfiguration einbinden. Dementsprechend besteht ein Wunsch nach einem Graphikaufbereitungssystem, das gesteigerte Flexibilität zur Verwendung verschiedener Aufbereiter für verschiedene Zwecke am selben dreidimensionalen Modell schafft.It is desirable to be able to model using a variety drawing different types of dresser. For example can be an application program that is an interactive editing of a allowed three-dimensional model, be beneficial by use a high speed wireframe conditioner low quality for drawing intermediate versions on a display and through Using a high-quality, slow Z buffer conditioner to draw the Final version on a printer. The interchangeability of conditioners however, is difficult at best using the above-described Treatment systems. In particular, some of the above processing systems support no more than a dresser, while those who do that, like for example DORÉ and Inventor, the chosen one Integrate conditioner into the system configuration. Accordingly There is a desire for a graphics editing system that is enhanced flexibility to use different conditioners for different purposes at the same time creates three-dimensional model.

Ein weiteres Problem bei den obigen Aufbereitungssystemen besteht darin, daß sie nicht mehr als einen Aufbereiter unterstützen, der gleichzeitig aktiv ist. Gleichzeitiges Aufbereiten eines Modells ist wünschenswert in mehreren Situationen, einschließlich der simultanen Ausgabe eines Bildes sowohl zu einer Anzeigeeinrichtung als auch zu einem Drucker. Als weiteres Beispiel ist manchmal wünschenswert, zwei unterschiedliche Ansichten eines Modells gleichzeitig an zwei verschiedenen Teilen der selben Anzeigezeinrichtung aufzubereiten. Gleichzeitiges Aufbereiten wäre wünschenswert hauptsächlich bei Echtzeitsystemen, bei denen ein Anwendungsprogramm ein Bild durch Ausführung einer Folge von Befehlen an das Aufbereitungssystem zeichnet. In solchen Systemen wären viele Anwendungsprogramme in der Lage, wirksamer zu arbeiten, in dem Befehle für einen Aufbereiter in die Befehlsfolge für einen anderen Aufbereiter eingestreut werden. Frühere Systeme schlossen solche eingestreuten Befehlsfolgen aus.One Another problem with the above treatment systems is that that she do not support more than one dresser who is active at the same time is. Simultaneous processing of a model is desirable in several situations, including simultaneous output an image to both a display device and a Printer. As another example, it is sometimes desirable to have two different views a model simultaneously on two different parts of the same To prepare display device. Simultaneous processing would be desirable mainly in real-time systems where an application program is an image by execution a sequence of commands to the rendering system. In such systems would be Many application programs are able to work more effectively in the commands for a preparer in the sequence for another conditioner be interspersed. earlier Systems excluded such interspersed command sequences.

Ein weiteres Problem bei den obigen Aufbereitungssystemen besteht darin, daß jene Systeme, die mehr als einen Aufbereiter unterstützten, verlangten, daß alle Aufbereiter wenigstens die selben Geometrien unterstützten. Beispielsweise konnte das Inventor-Aufbereitungssystem nur Aufbereiter unterstützen, die in der Lage waren, Punkte, Linien und gewisse andere vorbestimmte Formen zu bearbeiten. Einfachere Aufbereiter konnten mit Inventor nicht verwendet werden. Fähigere Aufbereiter konnten verwendet werden, so lange sie wenigstens den vollen Satz der geometrischen Grundelemente von Inventor unterstützen, sie konnten aber nicht dynamisch hinzugefügt werden. Das Anwendungsprogramm mußte über diese Aufbereiter a priori informiert sein. Die obigen Aufbereitungssysteme erlaubten keine ”Einsteck”-Aufbereitung von mehr oder weniger fähigen Aufbereitern mit automatischer Ermittlung und Verwendung der Merkmale des Aufbereiters.Another problem with the above rendering systems is that those systems that supported more than one renderer required that all renderers support at least the same geometries. For example, the Inventor rendering system could only support preparers who were able to handle points, lines, and certain other predetermined shapes. Easier preparers could not be used with Inventor. More capable dressers could be used as long At least they support the full set of Inventor geometric primitives, but they could not be dynamically added. The application program had to be a priori informed about these conditioners. The above treatment systems did not allow "plug-in" processing of more or less capable processors with automatic detection and use of the conditioner features.

Ein weiteres Problem bei den obigen Aufbereitungssystemen besteht darin, daß sie Mehrfachaufbereitung nicht gut unterstützen, insbesondere nicht jene, die Echtzeit- und Mischbetriebsaufbereitung untrstützen. Ein Mehrfachaufbereiter ist ein solcher, der so geschaffen ist, daß er mehrere Überquerungen einer Szenendatenbank erfordert. Es gibt mehrere Gründe, warum ein Aufbereiter für mehrere Durchläufe einer Szenendatenbank entworfen ist. Beispielsweise kann nicht genügend Speicherplatz vorhanden sein, um den gesamten Rahmenpuffer aufzubereiten, der mit sehr hohen Auflösungen aufbereitet wird. Ein Aufbereiter kann dann den Rahmenpuffer in Streifenteilen und jeden Streifen über einen gesonderten Durchlauf durch die Szenendatenbank aufbereiten. Als anderes Beispiel, wenn das Bild an mehrere Vorrichtungen übergeben wird, jedes mit einer anderen Auflösung (wie wenn beispielsweise ein Fenster zwei Monitoren überlappt oder wenn ein Bild sowohl an den Schirm als auch an einem hoch auflösenden Drucker gegeben wird), dann kann der Aufbereiter jede Vorrichtung in einem gesonderten Durchlauf übergeben. Als weiteres Beispiel, ein Aufbereiter, der eine progressive Verfeinerung ausführt, kann mehrere Durchläufe der Szenendatenbank ausführen, wobei kontinuierlich das endgültige Bild verfeinert wird, bis der Vorgang durch einen Benutzereingriff abgebrochen wird oder das Bild die höchste Qualität hat. Noch andere Beispiele umfassen Hochqualitäts-Aufbereitungsalgorithmen mit Verwendung von Sammelpuffern, Verwendung einer Texturkardierung zur Erzeugung von Schattierungs- und Beleuchtungseffekten und mit Globalbeleuchtungstechniken in zwei Durchläufen.One Another problem with the above treatment systems is that that she Multithreading does not support well, especially not those the real-time and Unsupported mixed operating preparation. A multi-conditioner is one that is created that he several crossings a scene database requires. There are several reasons why a conditioner for several passes a scene database is designed. For example, not enough disk space be present to prepare the entire frame buffer, the with very high resolutions is processed. A conditioner can then insert the frame buffer into Strip parts and each strip over a separate pass through the scene database. As another example, if the image is passed to multiple devices, each with one other resolution (such as when a window overlaps two monitors or if an image is attached to both the screen and a high resolution printer is given), then the conditioner can each device in one hand over a separate pass. As another example, a conditioner, a progressive refinement executing, can several runs run the scene database, being continuously the final one Image is refined until the process by a user intervention is canceled or the image has the highest quality. Yet other examples include high quality rendering algorithms with use of bulk mail buffers, using a texture card to create of shading and lighting effects and with global lighting techniques in two passes.

In einem Aufrechterhaltungsbetriebssystem muß das Anwendungsprogramm gewöhnlich nicht wissen, ob der Aufbereiter mehr als einen Durchlauf erfordert, um die Aufbereitung abzuschließen. Dies rührt daher, daß das Anwendungsprogramm nur einen Aufruf ausführt, um den Aufbereiter zu veranlassen, das Modell aufzubereiten, und der Aufbereiter kann so viele Durchläufe ausführen, wie er benötigt, bevor er zum Anwendungsprogramm zurückkehrt. In einem Echtzeitbetriebssystem oder Mischbetriebssystem spielt andererseits das Anwendungsprogramm eine Rolle bei der Durchquerung des Modells und richtet dabei mehrere Aufrufe an den Aufbereiter, um die einzige Durchquerung auszuführen. Für einen Mehrfachaufbereiter würde das Anwendungsprogramm daher wissen müssen, wie oft das Modell durchquert werden muß, um die Szene zu vervollständigen. Dies würde erfordern, daß das Anwendungsprogramm eine innige Kenntnis vom Aufbereiter hat, und es würde im wesentlichen sehr schwierig, austauschbare Aufbereiter zu unterstützen.In a maintenance operating system usually does not need the application program Know if the dresser requires more than one pass to complete the preparation. This is touching therefore, that the Application program just makes a call to the dresser cause the model to be processed and the conditioner can so many passes To run, as he needs before returning to the application program. In a real-time operating system or mixed operating system, on the other hand, plays the application program a role in traversing the model, directing several Calls to the dresser to do the only traversal. For one Multiple conditioner would the application program must therefore know how often the model traverses must become, to complete the scene. This would require that Application program has an intimate knowledge of the conditioner, and it would essentially very difficult to support interchangeable conditioners.

Noch ein weiteres Problem bei den obigen Systemen besteht darin, das wenn ein dreidimensionales Modell in eine Szene zur Anzeige aufzubereiten ist, ein klassischer Kompromiß vorhanden ist zwischen der Geschwindigkeit des Aufbereitungsvorgangs einerseits und der Qualität des Ergebnisses andererseits. Beispielsweise arbeitet Drahtmodellaufbereitung mit hoher Geschwindigkeit, erzeugt aber ein Ergebnis geringer Qualität, während ein Strahlverfolger sehr viel längere Zeit benötigt, um dasselbe Modell zu liefern, jedoch Ergebnisse extrem hoher Qualität liefern kann. Ein Anwendungsprogramm, das ein interaktives Editieren eines dreidimensionalen Modells erlaubt, kann somit durch Verwendung eines Drahtmodellaufbereiters zur Zeichnung von Zwischenversionen auf einer Anzeigeeinrichtung und durch Verwendung eines Strahlverfolgungsaufbereiters zur Zeichnung der Endversion für die Ausgabe nutznießen.Yet Another problem with the above systems is that when preparing a three-dimensional model in a scene for display is available, a classic compromise is between the speed of the reprocessing process on the one hand and the quality on the other hand. For example, wireframe reprocessing works at a high speed, but produces a low-quality result, while a Ray tracker much longer Time needed to deliver the same model but deliver extremely high quality results can. An application program that is an interactive editing of a three-dimensional Model allows, thus, by using a Drahtmodellaufbereiters for drawing intermediate versions on a display device and by using a ray tracer for drawing the final version for use the edition.

Die Austauschbarkeit von Aufbereitern ist jedoch bestenfalls mühselig unter Verwendung der oben beschriebenen Aufbereitungssysteme. Darüber hinaus bietet der Ersatz eines Aufbereiters gegen einen anderen nur einen groben Einfluß auf den Kompromiß zwischen Geschwindigkeit und Qualität. Es wäre wünschenswert, ein Anwendungsprogramm zu erlauben, das ein wenig Qualität opfert, um ein wenig an Geschwindigkeit zu gewinnen und umgekehrt. Es wäre wünschenswert, mehrere Stufen in dem Kompromißkontinuum zwischen Geschwindigkeit und Qualität zu haben, damit ein Benutzer oder Anwendungsprogramm exakt die gewünschte Position im Kompromiß wählen kann.The Interchangeability of preparers, however, is at best troublesome Use of the treatment systems described above. Furthermore Replacing one preparer with another offers only one coarse influence on the compromise between Speed and quality. It would be desirable, to allow an application program that sacrifices a bit of quality, to gain some speed and vice versa. It would be desirable, several stages in the compromise continuum between speed and quality to have a user or application program can choose exactly the desired position in compromise.

In der Vergangenheit haben Anwendungsprogramme die Benutzer mit einer Steuerung verschiedener beiläufiger Parameter des Aufbereitungsverfahrens ausgestattet, und die Benutzer haben die Vorteile dieser Steuerung durch die Auswahl von Optionen ausgenutzt, die als Nebeneffekt den Kompromiß zwischen Geschwindigkeit und Qualität beeinflussen. Beispielsweise kann durch vorübergehendes Ausschalten mancher Lampen der Benutzer den Aufbereitungsvorgang auf Kosten der Qualität beschleunigen. Die gleiche Wirkung kann erreicht werden, indem Objekte aus der Szene vor dem Aufbereiten entfernt werden, indem man das Ausgabefenster kleiner macht durch Umschalten vom Vollbetrieb zum Randbetrieb bei einem Aufbereiter, der eine solche Auswahl zuläßt, und durch Einstellen eines gröberen Bildglättungspegels. In manchen Systemen stehen dem Benutzer die Parameter, die den Kompromiß zwischen Geschwindigkeit und Qualität beeinflussen, in einer einzigen Dialogbox zur Verfügung, in der der Benutzer eine Wahl für jeden der beeinflussbaren Parameter treffen kann. Dieses ist eine höchst stückweise Lösung für das Problem. Andere Anwendungsprogramme erlauben es einem Benutzer, eine Grobqualität für die Aufbereitung auszuwählen, gewöhnlich wirkt aber des Benutzers Wahl, daß das Programm einen vollständig anderen Aufbereiter aufruft, oder veranlaßt wenigstens den Aufbereiter, stark abweichende Aufbereitungsverfahren zu benutzen. Es wird ein Qualitätssteuermechanismus benötigt, der es einem Anwendungsprogramm oder Benutzer ermöglicht, einen gewünschten Punkt in dem Gesamtkompromiß zwischen Geschwindigkeit und Aufbereitungsqualität auszuwählen mit relativ feiner Auflösung im Kompromißspektrum und ohne sich um einzelne Aufbereitungsparameter kümmern zu müssen.In the past, application programs have provided users with control of various casual parameters of the rendering process, and users have taken advantage of this control by selecting options that, as a side effect, affect the trade-off between speed and quality. For example, by temporarily turning off some lamps, the user can speed up the rendering process at the expense of quality. The same effect can be achieved by removing objects from the scene prior to rendering by making the output window smaller by switching from full to edge operation in a renderer that allows such selection and by setting a coarser image smoothing level. In some systems, the user has the parameters that affect the compromise between speed and quality, in a single dialog box where the user can make a choice for each of the influenceable parameters. This is a highly piecewise solution to the problem. Other application programs allow a user to select a rough quality for rendering, but usually the user chooses to have the program call a completely different renderer, or at least induce the renderer to use highly variant rendering techniques. A quality control mechanism is needed that allows an application program or user to select a desired point in the overall compromise between speed and rendering quality with relatively fine resolution in the compromise spectrum and without having to worry about individual rendering parameters.

Es ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren zum Erschaffen einer Darstellung einer Szene für die Anzeige an einer Graphikausgabevorrichtung anzugeben, das einen bestimmten Kompromiß zwischen Aufbereitungsqualität und Aufbereitungsgeschwindigkeit ermöglicht.It It is therefore an object of the present invention to provide a method for Creating a representation of a scene for display on a graphics output device indicate that there is a certain trade-off between reprocessing quality and reprocessing speed allows.

ÜBERSICHT ÜBER DIE ERFINDUNGOVERVIEW OF THE INVENTION

Alle Beispiele, die nachstehend angegeben sind und nicht vom Umfang der in den beiliegenden Ansprüchen definierten Erfindung erfaßt werden, sind nicht als Ausführungsformen oder Ausführungsbeispiele der Erfindung anzusehen.All Examples given below and not by the scope of in the accompanying claims detected invention are not as embodiments or embodiments of the To regard invention.

Gemäß der Erfindung wird grob gesagt, ein Graphikaufbereitungssystem angegeben, das im Aufrechterhaltungsbetrieb den Aufbau und die Editierung eines Modells unabhängig von der Wahl des Aufbereiters ermöglicht. Anwendungsprogrammaufrufe an das Aufbereitungssystem zum Zeichnen eines Objekts spezifizieren nicht nur das zu zeichnende Objekt, sondern auch den Aufbereiter, der für die Ausführung verwendet wird. In einer Ausführungsform wird der Aufbereiter als Teil eines mehr inklusiven ”Ansichtsobjekts” spezifiziert, das dem Aufbereitungssystem durch den API angegeben wird. Auf diese Weise wird das Umschalten auf einen anderen Aufbereiter zu ei ner beliebigen Zeit während des Aufbaus oder Editierens eines Modells eine triviale Aufgabe für das Anwendungsprogramm.According to the invention Roughly speaking, a graphics editing system is given that in maintenance mode, the construction and editing of a Model independent of the choice of the dresser. Application program calls to the rendering system for drawing an object not only the object to be drawn, but also the conditioner, the for execution is used. In one embodiment the conditioner is specified as part of a more inclusive "view object", specified by the API to the rendering system. To this Way, switching to another conditioner to egg ner during any time building or editing a model is a trivial task for the Application program.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, in dem mehr als ein Aufbereiter gleichzeitig aktiv sein kann. In einer Ausführungsform wird dieses dadurch erreicht, daß der augenblickliche Zustand der Aufbereitung für jeden Aufbereiter in einem betreffenden ”Ansichtsobjekt” (oder Objekten), das das Anwendungsprogramm spezifiziert, wenn das Aufbereitungssystem zum Zeichnen eines dreidimensionalen Objekts aufgerufen wird.According to one Another aspect of the invention is a graphics rendering system in which more than one conditioner is active at the same time can. In one embodiment this is achieved by the fact that the current state the preparation for each conditioner in a respective "view object" (or Objects) that specifies the application program when the rendering system is called to draw a three-dimensional object.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, das auf die Unterstützung dynamisch registrierter Aufbereiter ausdehnbar ist.According to one Another aspect of the invention is a graphics rendering system indicated that on the support dynamically registered conditioner is expandable.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, das automatisch ermittelt, wenn Geometrien nicht durch einen gewählten Aufbereiter gestützt werden, und automatisch solche Geometrien in mehrere Objekte einfacherer Geometrie überlegt. Eine solche automatische Zerlegung kann rekursiv ausgeführt werden, bis Objekte erreicht sind, deren Geometrien durch den gewählten Aufbereiter unterstützt werden.According to one Another aspect of the invention is a graphics rendering system which automatically detects if geometries do not pass through a chosen one Dresser supported and automatically make such geometries into multiple objects easier Geometry considered. Such an automatic decomposition can be performed recursively, until objects are reached, their geometries by the selected conditioner supports become.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, das es einem Anwendungsprogramm ermöglicht, Echtzeit- und Aufrechterhaltungsaufrufe zur Aufbereitung eines Modells auszuführen, ohne wissen zu müssen, wie viele Durchläufe der Aufbereiter benötigt, um die Szene zu vervollständigen. In einer Ausführungsform veranlaßt das Anwendungsprogramm das Aufbereitungs-Subsystem, das Modell zu zeichnen, und das Aufbereitungssubsystem stellt ein Kennzeichen zurück (hier als ein Neudurchquerungskennzeichen bezeichnet), das angibt, ob die Aufbereitung des Modells vollständig ist. Wenn das Kennzeichen angibt, daß die Aufbereitung noch nicht vollständig ist, kann das Anwendungsprogramm das Aufbereitungssubsystem erneut veranlassen, das Modell zu zeichnen. Vorzugsweise befinden sich die Aufrufe an das Aufbereitungssubsystem innerhalb einer Schleife im Anwendungsprogramm, die so oft wiederholt wird, bis das Neudurchquerungskennzeichen die Vollständigkeit anzeigt. Die Technik unterstützt Echt zeit- und Gemischtbetriebsaufbereitung, weil die Schleife viele Aufrufe an das Aufbereitungssubsystem enthalten kann, die sämtlich durch das Anwendungsprogramm beim Durchqueren des Modells selbst ausgeführt werden. Wenn das Neudurchquerungskennzeichen angibt, daß die Aufbereitung noch nicht vollständig ist, wiederholt das Anwendungsprogramm dieselbe Sequenz von Aufrufen, um dadurch das Modell wirksam erneut zu durchqueren.According to one Another aspect of the invention is a graphics rendering system which allows an application program to provide real-time and maintenance calls to prepare a model without having to know how many passes the conditioner needs to complete the scene. In one embodiment causes the application program the rendering subsystem, the model too and the processing subsystem is a hallmark back (referred to herein as a new crossing indicator) indicating whether the preparation of the model is complete. If the indicator indicates that the Preparation not yet complete is, the application program can reprocess the rendering subsystem cause the model to be drawn. Preferably are the calls to the rendering subsystem within a loop in the application program, which is repeated until the new cross-reference indicator the completeness displays. The technology supports Real time and mixed operations because the loop has many May contain calls to the rendering subsystem, all through the application program will be executed while traversing the model itself. If the cross-reference indicator indicates that the processing is not yet Completely If the application program repeats the same sequence of calls, to effectively traverse the model again.

Gemäß einem weiteren Aspekt der Erfindung spezifizieren Aufrufe des Anwendungsprogramms an das Aufbereitungssystem zum Zeichnen eines Objekts nicht nur das zu zeichnende Objekt, sondern auch den Aufbereiter der dieses ausführen soll. Auf diese Weise wird das Umschalten auf einen anderen Aufbereiter zu irgendeinem Zeitpunkt während des Ausbaus oder des Editierens eines Modells eine triviale Aufgabe für das Anwendungsprogramm. Wegen des Neudurchquerungskennzeichens muß das Anwendungsprogramm keinerlei zusätzliche Zugeständnisse in Abhängigkeit davon machen, ob der neue Aufbereiter mehrere Durchläufe zur Vervollständigung einer Aufbereitung ausführen muß.According to another aspect of the invention, calls to the application program specify the rendering system for drawing an object should perform not only the object to be drawn, but also the renderer of this. In this way, switching to another renderer at any time during the expansion or editing of a model becomes a trivial task for the application program. Because of the new crossing indicator, the application program does not have to make any additional concessions depending on whether the new conditioner has to execute multiple passes to complete a rendering.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, in dem mehr als ein Aufbereiter gleichzeitig aktiv sein kann. In einer Ausführungsform wird dieses durch Speichern des Augenblickzustands der Aufbereitung für jeden Aufbereiter in einem entsprechenden ”Ansichtsobjekt” (oder Objekten) erreicht, das das Anwendungsprogramm spezifiziert, wenn das Aufbereitungssystem dazu aufgerufen wird, ein dreidimensionales Objekt zu zeichnen. Wieder vermeidet das Neudurchquerungskennzeichen jegliche Notwendigkeit, das das Anwendungsprogramm spezielle Zugeständnisse macht, wenn einer oder mehrerer der gleichzeitig aktiven Aufbereiter mehrere Durchläufe benötigt, um eine Aufbereitung zu vervollständigen.According to one Another aspect of the invention is a graphics rendering system in which more than one conditioner is active at the same time can. In one embodiment This is done by saving the momentary state of the processing for each Conditioner in a corresponding "view object" (or Objects) that specifies the application program when the rendering system is called to a three-dimensional To draw object. Again the new crossing indicator avoids any need that the application program special concessions makes when one or more of the simultaneously active conditioner several passes needed to complete a preparation.

Gemäß einem weiteren Aspekt der Erfindung wird ein Graphikaufbereitungssystem angegeben, das auf die Unterstützung dynamisch registrierter Aufbereiter ausdehnbar ist. Wieder besteht wegen des Neudurchquerungskennzeichens keine Einschränkung, das die neu registrierten Aufbereiter Einzel- oder Mehrfachdurchlauf-Aufbereiter sind.According to one Another aspect of the invention is a graphics rendering system indicated that on the support dynamically registered conditioner is expandable. Again exists because of the new crossing indicator no restriction that the newly registered conditioners are single or multi-pass conditioners.

Gemäß einem noch weiteren Aspekt der Erfindung wird ein Mechanismus angegeben, der es einem Anwendungsprogramm oder Benutzer erlaubt, einen gewünschten Punkt in einem Gesamtkompromiß zwischen Geschwindigkeit und Aufbereitungsqualität mit relativ feiner Auflösung im Spektrum auszuwählen und ohne sich um einzelne Aufbereitungsparameter kümmern zu müssen. Ein Graphikaufbereitungssystem zur Erreichung dieses Ziels enthält ein Spektrum oder eine Sammlung von Qualitätssteuerdatengruppen, von denen jede mehrere Qualitätssteuertypvariablen enthält.According to one yet another aspect of the invention, a mechanism is provided which allows an application program or user to choose a desired one Point in a total compromise between Speed and quality of preparation with relatively fine resolution in the Select spectrum and without having to worry about individual preparation parameters have to. A graphics rendering system to accomplish this goal includes a spectrum or a collection of quality control data groups, each of which has several quality control type variables contains.

Jede der Typvariablen enthält einen Wert, der aus mehreren Optionen in einem entsprechenden Kompromiß zwischen der Aufbereitungsqualität und der Aufbereitungsgeschwindigkeit auswählt. Beispielsweise kann jede der Qualitätssteuerdatengruppen eine Qualitätssteuertypvariable für ”Detailniveau” enthalten; jene Gruppen am unteren Ende des Qualitätsspektrums können jene Variablen ”niedrig” gesetzt haben, während bei Datengruppen am höheren Ende des Spektrums diese Variable ”hoch” gesetzt ist.each contains the type variable a value consisting of several options in a corresponding tradeoff between the processing quality and select the editing speed. For example, anyone can the quality control data groups a quality control type variable included for "detail level"; those groups at the lower end of the quality spectrum can do those Variables set low have while at Data groups at the higher End of the spectrum this variable is set "high".

Gemäß einem weiteren Aspekt der Erfindung ist jeder Qualitätssteuerdatengruppen ein entsprechender Qualitätsindex zugeordnet. Ein Anwendungsprogramm kann somit einen Punkt im Aufbereitungsgesamtkompromiß zwischen der Aufbereitungsgeschwindigkeit und der Qualität lediglich durch Auswahl eines Qualitätssteuerindexwertes auswählen. Darüber hinaus kann das Anwendungsprogramm den Qualitätssteuerindex für einen Benutzer zugänglich machen, beispielsweise in solch einer intuitiven Form wie durch einen pictogrammartigen ”Qualitätsknopf”. Der Qualitätsknopf kann mehrere Stellungen haben, die beispielsweise von 0,0 bis 1,0 reichen, von denen jede einer entsprechenden Qualitätssteuerdatengruppe entspricht. Der Mechanismus erlaubt somit dem Benutzer eine feine Steuerung des Aufbereitungskompromisses zwischen Aufbereitungsgeschwindigkeit und Qualität, ohne sich um Einstellungen der einzelnen Aufbereitungsparameter kümmern zu müssen.According to one Another aspect of the invention is a corresponding one of each quality control data groups quality Index assigned. An application program may thus have a point in the overall processing total between the processing speed and the quality only by selecting a Quality control index value choose. About that In addition, the application program may use the quality control index for a User accessible in such an intuitive way as through a pictogrammartigen "quality button". The quality button can have multiple positions, for example, from 0.0 to 1.0 range, each of which is a corresponding quality control data group equivalent. The mechanism thus allows the user a fine Control of processing compromise between processing speed and quality, without worrying about settings of the individual preparation parameters To take care of to have to.

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die Erfindung wird bezüglich ihrer speziellen Ausführungsformen beschrieben, und bezug wird auf die Zeichnungen genommen. In diesenThe Invention is related their special embodiments and reference is made to the drawings. In these

1 ist ein vereinfachtes Blockschaltbild eines Rechnersystems, das die vorliegende Erfindung ausbildet; 1 Fig. 10 is a simplified block diagram of a computer system embodying the present invention;

2 zeigt eine Softwarearchitektur, die die Erfindung verwendet; 2 shows a software architecture using the invention;

3 ist ein Flußdiagramm, das den Gesamtablauf eines Programms zeigt, das die Erfindung verwendet; 3 Fig. 10 is a flow chart showing the overall flow of a program using the invention;

4 ist ein Detail von Schritt 308 in 3; 4 is a detail of step 308 in 3 ;

5, 7, 9 11 und 12 zeigen Objektdatenstrukturen im Speicher; 5 . 7 . 9 11 and 12 show object data structures in memory;

6 zeigt eine Klassenhierarchie, die in einer Ausführungsform der Erfindung verwendet wird; 6 shows a class hierarchy used in an embodiment of the invention;

8 zeigt eine Modellhierarchie, die durch ein Beispielprogramm geschaffen wird, das die Erfindung verwendet; 8th shows a model hierarchy provided by a sample program using the invention;

10 ist ein Flußdiagramm, das die Schaffung eines neuen Objekts im Speicher zeigt; 10 Fig. 10 is a flowchart showing the creation of a new object in memory;

13 ist ein Flußdiagramm einer Anwendungsprogrammprozedur zum Aufbau einer Qualitätssammlung; 13 Fig. 10 is a flowchart of an application program procedure for building a quality collection;

14 ist ein Flußdiagramm einer Anwendungsprogrammprozedur zum Erzielen eines gewünschten Qualitätsindex; 14 Fig. 10 is a flowchart of an application program procedure for obtaining a desired quality index;

15 ist eine Darstellung eines Anzeigepictogramms; und 15 is an illustration of a display picogram; and

16 ist ein Flußdiagramm eines Betriebsablaufs in einem Aufbereiter. 16 Fig. 10 is a flowchart of an operation in a conditioner.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

1 ist ein vereinfachtes Blockschaltbild eines Rechnersystems, das die vorliegende Erfindung ausbildet. Obgleich gewisse Arten von Rechnerarchitekturen von der Erfindung größeren Nutzen ziehen als andere, kann die Erfindung auf praktisch jede Art Architektur ausgeführt werden. In der Architektur von 1 sind eine CPU 102, ein Speicher 104, ein I/O-Subsystem 106 sämtlich mit einem Bus 108 verbunden. Die CPU 102 gibt Signale über den Bus 101 zum Lesen und Schreiben aus und in den Speicher 104 oder zum I/O-Subsystem 106, um Daten in der hier beschriebenen Weise zu manipulieren. Die CUP gibt solche Signale in Abhängigkeit von Softwarebefehlen ab, die sie vom Speicher 104 erhält. Das I/O-Subsystem 106 kann auch in der Lage sein, Signale über den Bus 108 abzugeben, um zum Speicher 104 in einer speziellen Ausführungsform zurückzugreifen. Das System kann auch einen Graphik-Koprozessor 110 enthalten, der der CPU 102 viele der speicherintensiven Aufgaben abnehmen kann, die erforderlich sind, um ein Bild aufzubereiten. In solchen Situationen wird die Anzeige, die in 1 mit 114 bezeichnet ist, häufig vom I/O-Subsystem 106 gesteuert. In anderen Systemen ist ein Graphikbeschleuniger 112 mit dem Bus 108 und der Anzeige 114 verbunden. In diesem Systemen befindet sich der Anzeigepuffer typischerweise innerhalb des Graphikbeschleunigers 112, der nicht nur spezielle Attribute (z. B. Farben) an speziellen Bildpunkten der Anzeige 114 schreiben kann, wie durch die CPU 102 gefordert, sondern auch kompliziertere Grundelemente auf der Anzeige 114 unter dem Befehl der CPU 102 zeichnen kann. 1 Figure 4 is a simplified block diagram of a computer system embodying the present invention. While certain types of computer architectures benefit more from the invention than others, the invention can be practiced in virtually any type of architecture. In the architecture of 1 are a CPU 102 , a store 104 , an I / O subsystem 106 all with a bus 108 connected. The CPU 102 gives signals over the bus 101 for reading and writing from and to the store 104 or to the I / O subsystem 106 to manipulate data in the manner described herein. The CUP outputs such signals in response to software instructions that they receive from the memory 104 receives. The I / O subsystem 106 may also be able to send signals over the bus 108 to leave to the store 104 in a specific embodiment. The system can also use a graphics coprocessor 110 included, that of the cpu 102 can take many of the memory-intensive tasks required to render an image. In such situations, the ad that appears in 1 With 114 is often controlled by the I / O subsystem 106. In other systems is a graphics accelerator 112 by bus 108 and the ad 114 connected. In this system, the display buffer is typically within the graphics accelerator 112 that does not just have special attributes (such as colors) on specific pixels of the display 114 can write, as by the CPU 102 demanded, but also more complicated primitives on the display 114 under the command of the CPU 102 can draw.

Die Erfindung ist in der vorliegenden Ausführungsform in Form eines Satzes von Softwarewerkzeugen aufgeführt, der nachfolgend als Escher bezeichnet wird. Diese Softwarewerkzeuge enthalten einen Satz von Softwareprozeduren und einen Satz von Kopfdokumenten, die die variablen Namen und Datenstrukturen definieren, die von den Prozeduren verwendet werden. Escher wird einem Anwendungsprogrammentwickler auf einem Speichermedium, wie beispielsweise einer magnetischen oder optischen Platte oder Platten zugeführt. In einer Ausführungsform enthält das Speichermedium einen Quellencode für Escher, während in einer anderen Ausführungsform das Speichermedium einen kompilierten Objektcode für Escher enthält. In noch einer anderen Ausführungsform enthält das Speichermedium etwas Quellencode und etwa Objektcode für Escher. Der Anwendungsentwickler kompiliert ein Anwendungsprogramm mit Escher und mit einem oder mehreren Aufbereitern und speichert den resultierenden Objektcode auf ein Speichermedium. Der kombinierte Objektcode wird später in den Speicher 104 eingelesen, entweder vollständig oder in überlagerter Art, und von der CPU 102 ausgeführt.The invention is in the present embodiment in the form of a set of software tools, hereinafter referred to as Escher. These software tools include a set of software procedures and a set of header documents that define the variable names and data structures used by the procedures. Escher is supplied to an application program developer on a storage medium such as a magnetic or optical disk or disks. In one embodiment, the storage medium includes a source code for Escher, while in another embodiment, the storage medium includes a compiled object code for Escher. In yet another embodiment, the storage medium includes some source code and object code for Escher. The application developer compiles an application program with Escher and one or more renderers and stores the resulting object code on a storage medium. The combined object code will later be stored in memory 104 read in, either completely or in a superimposed manner, and from the CPU 102 executed.

Es sei angemerkt, daß Software und Daten, die hier als dem ”Speicher” bezeichnet werden, zu jedem beliebigen Zeitpunkt in Wirklichkeit vollständig oder zum Teil in einem Sekundärspeichermedium, wie beispielsweise einer Platte, liegen können. Diese Situation könnte beispielsweise aufgrund solcher Architekturen als überlagerte Ausführung oder virtueller Speicher auftreten. Zur Vereinfachung wird hier angenommen, daß all solche Software und Daten sich ”im Speicher” zu allen in Frage kommenden Zeiten befinden, selbst wenn sie zu solchen Zeiten tatsächlich vorübergehend irgendwo anders sind.It It should be noted that software and data, referred to herein as the "memory" in reality, completely or at any time partly in a secondary storage medium, such as a plate can lie. This situation could be, for example due to such architectures as superimposed execution or virtual memory occur. For simplicity, it is assumed here that all such software and data are "im Memory "too all possible times, even if they are to such Times actually temporarily are somewhere else.

2 zeigt die logische Position von Escher in einer Softwarearchitektur. Wie man sehen kann, sind die Escher-Prozeduren 202 logisch zwischen einem Anwendungsprogramm 204 und mehreren Aufbereitern 206, 208 und 210 angeordnet. Das heißt, das Anwendungsprogramm 204 macht Prozeduraufrufe an Escher-Prozeduren über eine Anwendungsprogrammschnittstelle (API), und gewissen Prozeduren innerhalb Escher (speziell gewisse Aufbereiter der Aufrufprozeduren 212) machen Prozeduraufrufe an die Aufbereiter 206, 208 und 210. Das Anwendungsprogramm 204 spezifiziert beim Richten von Aufrufen an die Aufbereiterprozeduren 212, welcher Aufbereiter die Aufbereiteraufrufprozeduren nutzen sollte. Die Aufbereiter wiederum kommunizieren mit anderen Hardware-Komponenten 214 der Plattform, wie beispielsweise einem Anzeigepufferspeicher, einem Graphikkoprozessor 110, falls vorhanden und/oder einen graphikbeschleuniger 112, falls vorhanden. Die Escher-Prozeduren enthalten zusätzlich zu den Aufbereiteraufrufprozeduren 212 auch Auf bereiterinstallationsprozeduren 216, Qualitätssteuermanagementprozeduren 217, Modellerrichtungs- und Editierprozeduren 218, Bildaufbau- und -Editierprozeduren 220 und einige andere Arten von Prozeduren (nicht dargestellt), die zum Verständnis der Erfindung nicht bedeutsam sind. 2 shows the logical position of Escher in a software architecture. As you can see, the Escher procedures are 202 logical between an application program 204 and several preparers 206 . 208 and 210 arranged. That is, the application program 204 makes procedure calls to Escher procedures via an application program interface (API), and certain procedures within Escher (especially some primers of the call procedures 212 ) make procedure calls to the dresser 206 . 208 and 210 , The application program 204 specified when directing calls to the conditioner procedures 212 which dresser should use the conditioner call procedures. The conditioners in turn communicate with other hardware components 214 the platform, such as a display buffer, a graphics co-processor 110 if available and / or a graphic accelerator 112 , if available. The Escher procedures are in addition to the conditioner call procedures 212 also on installer procedures 216 , Quality control management procedures 217 , Modeling and Editing Procedures 218 , Image building and editing procedures 220 and some other types of procedures (not shown) that are not significant to the understanding of the invention.

3 ist ein Flußdiagramm, das den Gesamtfluß eines beispielhaften Programms zeigt, das die Erfindung benutzt. In einem Schritt 302 ruft das Anwendungsprogramm 204 eine Escher-Initialisierungsprozedur (nicht gezeigt), die, unter anderen Dingen, einen oder mehrere Aufbereiter unter Verwendung der Aufbereiterinstallationsprozeduren 216 installiert. Eine der Vorteile von Escher ist, das eine Vielzahl unterschiedlicher Arten von Aufbereitern installiert werden können, einschließlich Aufbereitern, die zur Zeit, als das Anwendungsprogramm kompiliert wurden, nicht verfügbar waren. 3 FIG. 11 is a flowchart showing the overall flow of an exemplary program utilizing the invention. FIG. In one step 302 calls the application program 204 an Escher initialization procedure (not shown) which, among other things, includes one or more renderers using the dresser installation procedures 216 Installed. One of the benefits of Escher is that a variety of different types of conditioners can be installed, including conditioners that were not available at the time the application program was compiled.

In einem Schritt 303 ruft das Anwendungsprogramm die Qualitätssteuermanagementprozeduren 217 von Escher auf, um einen odere mehrere ”Qualitätssammelobjekte” aufzubauen, die jeweils einen oder mehrere ”Qualitätsgruppenobjekte” enthalten können. Ein Qualitätsgruppenobjekt ist ein Objekt, das durch das Escher-System in Übereinstimmung mit einer vorbestimmten Datenstruktur erzeugt wird, die an einem Platz eine Anzahl Qualitätssteuerkriterien, die Linienstiel, Typ von Schattierungen, von Beleuchtung, Detailniveau, Bildglättungsniveau usw. sammelt.In one step 303 the application program calls the quality control management procedures 217 from Escher to build one or more "quality collection objects", each of which may contain one or more "quality group objects". A quality group object is an object generated by the Escher system in accordance with a predetermined data structure that collects in a place a number of quality control criteria, the line style, the type of shading, the lighting, the detail level, the image smoothing level and so on.

In einem Schritt 304 ruft das Anwendungsprogramm die Bildaufbau/Editierprozeduren 220 von Escher auf, um eine oder mehrere ”Sichtobjekte” aufzubauen. Ein Sichtobjekt ist ein Objekt, das durch das Escher-System in Übereinstimmung mit einer vorbestimmten Datenstruktur geschaffen wird, die an einer Stelle eine Anzahl von Sichtkriterien sammelt, wie beispielsweise eine Kameraposition, Beleuchtung, eine Hartware-Bestimmung (”Zeichenkontext”), in das ein zweidimensionales Bild aufzubereiten ist, sowie eine Auswahl an Aufbereitern, unter anderen Dingen. Schritt 304 kann auch einen Aufruf an eine Escherprozedur sein, eine Qualitätsgruppe zur Verwendung im Aufbereitungsprozell auszuwählen.In one step 304 the application program calls the screen layout / editing procedures 220 from Escher to build one or more "visual objects". A viewing object is an object created by the Escher system in accordance with a predetermined data structure that collects a number of visual criteria at one location, such as a camera position, illumination, hardware determination ("character context") into which preparing a two-dimensional image, as well as a selection of conditioners, among other things. step 304 may also be a call to an Escher procedure to select a quality group for use in the rendering process.

In einem Schritt 306 richtet das Anwendungsprogramm Aufrufe an die Modellaufbau/Editierprozeduren 218 von Escher, um ein oder mehrere Modelle aufzubauen. Ein Modell wird in Escher als eine Hierarchie von einem oder mehreren Objekten dar gestellt, von denen jedes eine Geometrie (Gestalt), ein Materialattribut (das Aussehen oder Oberfläche beschreibend), einen Stil (beispielsweise gefüllte Oberflächen, nur Ränder oder nur Punkte), eine Transformation (die relative Position, Orientierung und Größe der dreidimensionalen Objekte) in bezug auf einen Umgebungsraum oder eine Gruppe, (die lediglich weitere Objekte im nächstniedrigen Niveau der Hierarchie enthält) beschreibt. Wie der Ausdruck hier benutzt wird, kann ein ”Modell” nur ein einziges Objekt bilden, wie beispielsweise ein Geometrieobjekt, ohne jegliches hierarchisch definiertes Unterobjekt.In one step 306 the application program makes calls to the model construction / editing procedures 218 by Escher to build one or more models. A model is represented in Escher as a hierarchy of one or more objects, each of which has a geometry (shape), a material attribute (describing the appearance or surface), a style (eg, filled surfaces, margins, or points only) Transformation (the relative position, orientation and size of the three-dimensional objects) with respect to an environment space or a group, (which contains only further objects in the next lower level of the hierarchy) describes. As used herein, a "model" can only form a single object, such as a geometry object, without any hierarchically defined sub-object.

In einem Schritt 308 ruft das Anwendungsprogramm die Aufbereiteraufrufprozeduren 212 auf, damit Escher ein oder mehrere Modelle, die vom Anwendungsprogramm erzeugt werden, in ein oder mehrere Ansichten aufbereitet, die durch das Anwendungsprogramm definiert sind. Die API für die Aufbereiteraufrufprozeduren 212 enthalten sowohl Echtzeitaufrufe als auch Aufrechterhaltungsbetriebsaufrufe. Für die Echtzeitaufrufe für das Anwendungsprogramm nur nicht-hierarchische Datenstrukturen zur Aufbereitung zu. Das Escher-System leitet die Strukturen sofort zum angegebenen Aufbereiter ohne Zwischenspeicherung irgendwelcher Zwischenergebnisse. Für Material, Stiel und Transformationsobjekte stellt das Escher-System lediglich den laufenden ”Zustand” der Ansicht ein, wodurch die Aufbereitung nachfolgend empfangener Geometrien beeinflußt wird. Für Aufrechterhaltungsbetriebsaufrufe an die Aufbereitungsaufrufprozeduren 212 kann das vom Anwendungsprogramm 204 durchgelassene Objekt ein vollständiges, hierarchisch definiertes Modell sein; die Aufbereiteraufrufprozeduren 212 durchqueren automatisch dieses Modell, machen geeignete Aufrufe an den bezeichneten Aufbereiter an geeigneten Punkten bei der Durchquerung.In one step 308 the application program calls the conditioner call procedures 212 to allow Escher to render one or more models generated by the application program into one or more views defined by the application program. The driller calling procedure API 212 contain both real-time calls and maintenance calls. For the real-time calls for the application program only non-hierarchical data structures for processing too. The Escher system immediately routes the structures to the specified conditioner without caching any intermediate results. For material, stem, and transformation objects, the Escher system merely sets the current "state" of the view, thereby affecting the rendering of subsequently received geometries. For maintenance operation calls to the conditioning call procedures 212 This can be done by the application program 204 transmitted object can be a complete, hierarchically defined model; the conditioner call procedures 212 automatically traverse this model, make appropriate calls to the designated conditioner at appropriate points in the traversal.

Sowohl bei Echtzeitaufrufen als auch bei Aufrechterhaltungsbetriebsaufrufen spezifiziert das Anwendungsprogramm 204 für die Aufbereiteraufrufprozeduren 212 sowohl das aufzurufende Objekt als auch ein Sichtobjekt. Der laufende ”Zustand” der Aufbereitung wird stets innerhalb der Datenstruktur des Sichtobjekts aufrechterhalten, so daß das Anwendungsprogramm dasselbe Modell mehr als eine Sicht gleichzeitig aufbereiten kann, indem lediglich Aufrufe, die ein Sichtobjekt spezifizieren, und Aufrufe, die ein anderes Sichtobjekt spezifizieren, eingestreut werden. Diese Aufrufe stören einander nicht (sofern selbstverständlich nicht beide Sichtobjekte denselben Zeichnungskontext bezeichnen). Die zwei Sichtobjekte könnten den selben oder unter schiedliche Aufbereiter spezifizieren, und der Zeichnungskontext, der in den Sichtobjekten spezifiziert ist, kann zur Ausgabe zur gleichen oder zu unterschiedlicen Arten von Ausgabeeinrichtungen spezifiziert sein (wie beispielsweise zwei verschiedene Fenster auf einer einzigen Anzeige oder eine für die Anzeige und für einen Drucker). Darüber hinaus kann das Anwendungspgrogramm 204 Echtzeitaufrufe und Aufrechterhaltungsbetriebsaufrufe für dieselbe Ansicht miteinander mischen, wodurch der Anwendungsentwickler in die Lage versetzt wird, die Speicherung und/oder Durchquerung unterschiedlicher Teile einer Szene unterschiedlich zu optimieren.Both real-time and maintenance calls specify the application program 204 for the conditioner call procedures 212 both the object to be called and a view object. The current "state" of the rendering always becomes within the data structure of the visual object so that the application program can concurrently render the same model more than one view by interspersing only calls specifying one view object and calls specifying another view object. These calls do not bother each other (unless, of course, both visual objects refer to the same drawing context). The two view objects could specify the same or different renderer, and the drawing context specified in the view objects may be specified for output to the same or different types of output devices (such as two different windows on a single display or one for the Display and for a printer). In addition, the application program can 204 Real-time and maintenance calls for the same view mix together, enabling the application developer to optimize the storage and / or traversal of different parts of a scene differently.

Einige dieser Möglichkeiten sind in einem beispielhaften Flußdiagramm dargestellt, das in 4 gezeigt ist. In einem Schritt 402 ruft das Anwendungsprogramm die Aufbereiteraufrufprozeduren 212, die ein erstes Modell und ein erstes Sichtobjekt spezifizieren, auf. In einem Schritt 404 ruft das Anwendungsprogramm die Aufbereiteraufrufprozeduren, die das erste Modell und ein zweites Sichtobjekt spezifizieren, auf. In einem Schritt 406 ruft das Anwendungsprogramm die Aufbereiteraufrufprozeduren, die ein zweites Modell und das erste Sichtobjekt spezifizieren, auf. In einem Schritt 408 ruft das Anwendungsprogramm die Aufbereiteraufbereiterprozeduren, die das zweite Modell und das zweite Sichtobjekt spezifizieren, auf. In einem Schritt 410 ruft das Anwendungsprogramm die Aufbereiteraufrufprozeduren, die ein drittes Modell und das erste Sichtobjekt spezifizieren, auf usw.Some of these possibilities are illustrated in an exemplary flowchart that is incorporated in 4 is shown. In one step 402 the application program calls the conditioner call procedures 212 which specify a first model and a first visual object. In one step 404 the application program calls the conditioner call procedures specifying the first model and a second view object. In one step 406 the application program calls the conditioner call procedures specifying a second model and the first view object. In one step 408 the application program calls the conditioner renderer procedures specifying the second model and the second view object. In one step 410 the application program calls the conditioner call procedures specifying a third model and the first view object, and so on.

Die Unabhängigkeit eines Escher-Sichtobjekts (einschließlich der Identifizierung des Aufbereiters) vom aufzubereitenden Modell schafft auch enorme Flexibilität im Ablauf der Vorgänge, die vom Anwendungsprogramm 204 ausgeführt werden. Beispielsweise müssen die Aufbereiter nicht installiert sein (Schritt 302) bis kurz vor den Aufrufen an die Aufbereiteraufrufprozeduren 212 (Schritt 308). Sichtobjekte müssen auch nicht definiert oder abgeschlossen sein (Schritt 304), bis ein Modell erstellt ist (Schritt 306). Ein Anwendungsprogramm kann daher ein Modell oder ein Teil eines Modells aufbauen und erlaubt es einem Benutzer, den Aufbereiter erst nachträglich auszuwählen. Die Auswahl des Aufbereiters kann getroffen werden, indem beispielsweise ein Popup-Schnellsuchfenster verwendet wird, das eine Anzahl bereits installierter Aufbereiter anbietet und das auch den Benutzer eine Möglichkeit bietet, einen weiteren Aufbereiter zu diesem Zeitpunkt zu installieren. Das Anwendungsprogramm kann dann das Modell (oder Modelle) unter Verwendung des gewählten Aufbereiters aufbereiten, an schließend das Modell oder aufgebaute neue Modelle editieren und/oder die Wahl der Aufbereiter ändern und das Modell (die Modelle) neu aufbereiten usw. Eine solche Flexibilität ist möglich gemacht, weil die Wahl des Aufbereiters nicht an das Modell gebunden ist, wenn es sich im Aufbau befindet, vielmehr spezifiziert das Anwendungsprogramm den Aufbereiter in seinen Aufrufen an die Aufbereiteraufrufprozeduren 212 von Escher.The independence of an Escher visual object (including the identification of the preparer) from the reprocessing model also creates tremendous flexibility in the flow of operations performed by the application program 204 be executed. For example, the conditioners do not need to be installed (step 302 ) until just before calls to the conditioner call procedures 212 (Step 308 ). Visual objects also need not be defined or completed (step 304 ) until a model is created (step 306 ). An application program can therefore build a model or a part of a model and allows a user to select the conditioner later. The selection of the conditioner may be made using, for example, a pop-up quick search window offering a number of pre-installed conditioners and also providing the user with an opportunity to install another conditioner at that time. The application program can then process the model (or models) using the selected conditioner, then edit the model or built new models, and / or change the choice of conditioners and reprocess the model (s), etc. Such flexibility is possible because the choice of the conditioner is not tied to the model when it is under construction, rather the application program specifies the conditioner in its calls to the conditioner call procedures 212 from Escher.

Ein einfaches Anwendungsprogramm 204 in C-Sprache ist in Anhang A angegeben. In diesem Beispiel ruft das Programm zunächst die Escher-Initialisierungsroutine auf, die sowohl einen Drahtmodellaufbereiter als auch einen Z-Puffer-Aufbereiter installiert. Als nächstes wird eine Anwendungsroutine ExSetupQualityCollection() aufgerufen, um ein Qualitätssammelobjekt einzustellen und zu initialisieren. Diese Prozedur wird nachfolgend in größerem Detail beschrieben.A simple application program 204 in C language is given in Annex A. In this example, the program first calls the Escher initialization routine, which installs both a wireframe builder and a Z-buffer renderer. Next, an application routine ExSetupQualityCollection () is called to set and initialize a quality collection object. This procedure will be described in more detail below.

Als nächstes wird ein Sichtobjekt (”Ansicht”) erzeugt, und ein spezieller Aufbereiter (der Drahtmodellaufbereiter) wird der Ansicht zugeordnet. Ein Kameraobjekt und ein Zeichnungskontextobjekt werden ebenfalls dem Sichtobjekt zugeordnet. (”Zeichenprobe”) und fügt ein Polygonobjekt (”Polygon”), ein Linienobjekt (”Linie”), ein Transformationsobjekt (”Transformation”) und ein Probenobjekt (”Subgruppe”) hinzu. Das Anwendungsprogramm fügt dann Torosobjekt (”Toros”, eine Form eines Geoemtrieobjektes) zum Gruppenobjekt hinzu. Als nächstes wird ein vom Benutzer spezifizierter Qualitätsindex für das Sichtobjekt eingerichtet, und das Modell wird durchquert und aufbereitet unter Verwendung des im Sichtobjekt spezifizierten Aufbereiters. Der in Sichtobjekt spezifizierte Aufbereiter wird dann in den Z-Puffer-Aufbereiter geändert, und dasselbe Modell wird erneut unter Verwendung des in Sichtobjekt spezifizierten Aufbereiters aufbereitet.When next If a visual object ("view") is generated, and become a special conditioner (the wireframe maker) assigned to the view. A camera object and a drawing context object are also assigned to the view object. ("Drawing sample") and adds a polygon object ("Polygon"), a Line object ("line"), a Transformation object ("transformation") and a Add sample object ("subgroup"). The application program adds then Toros object ("Toros", a Form of a geo-object) to the group object. Next will be set up a user-specified quality index for the visual object, and the model is traversed and recycled using of the conditioner specified in the view object. The in sight object specified conditioner is then placed in the Z-buffer conditioner changed, and the same model is redone using the in-sight object prepared conditioner.

Vor der Fortsetzung ist es angebracht, einige Benamungsregeln zu erläutern, die im C-Sprachen-Quellencode verwendet werden, der in der vorliegenden Erfindung enthalten ist. In dieser Beschreibung sind Namen, die mit dem Prefex Et (Escher-Typ) beginnen, Datentypen, im Escher-Quellencode definiert sind. Namen, die mit dem Prefix Ec (Escher-Konstante) beginnen, sind Konstanten, die im Escher-Quellencode definiert sind. Namen, die mit dem Prefix Er (Escher-Routine) beginnen, sind Preozedurnamen, die durch das Anwendungsprogramm aufrufbar sind. Namen, die mit dem Prefix Ei (Escher-Intern) beginnen, sind Namen von internen Escher-Prozeduren, die nur durch andere Escher-Prozeduren aufgerufen werden. Viele derselben haben Gegen-Er-Prozeduren, die durch das Anwendungsprogramm aufgerufen werden und die im wesentlichen nicht mehr tun, als die entsprechende Ei-Prozedur aufzurufen. Aus diesem Grunde die Er- und Ei-Prozedurnamen hier austauschbar verwendet. Schließlich sind Namen, die mit dem Prefix Eg (Escher-Global) beginnen, globale Variable.Before proceeding, it is appropriate to explain some naming rules used in the C-language source code included in the present invention. In this description, names beginning with the Prefex Et (Escher type) data types are defined in the Escher source code. Names starting with the prefix Ec (Escher constant) are constants defined in the Escher source code. Names that begin with the prefix Er (Escher routine) are prefeed names that can be called by the application program. Names that start with the prefix egg (Escher-Intern) are names internal Escher procedures, which are called only by other Escher procedures. Many of them have counter-er procedures that are called by the application program and that essentially do nothing more than invoke the corresponding egg procedure. For this reason the Er and Ei procedure names used here interchangeably. Finally, names starting with the prefix Eg (Escher-Global) are global variables.

Die Namen von Escher-Routinen beginnen mit Ei oder Er, und ihnen folgen Unterwörter, die mit Großbuchstaben beginnen. Die Form der meisten Escher-Prozedurnamen, wie sie hier verwendet wird, ist ErFoo.DoSomething, wobei Foo der Typ der Daten ist, mit denen die Funktion arbeiten muß, und DoSomething der Vorgang ist, den die Routine mit dieser Datenart ausführen soll. Beispielsweise ist der Name einer Prozedur zur Erzeugung eines neuen Polygonobjekts die ErPolygon.New. Andere Benamungsregeln werden erwähnt, wenn sie auftreten.The Names of Escher routines begin with Egg or He, and follow them Sub-words, the with capital letters kick off. The shape of most Escher procedure names, like here is ErFoo.DoSomething, where Foo is the type of data The task that the function must work with is DoSomething and the operation the routine is to execute with this data type. For example the name of a procedure to create a new polygon object the ErPolygon.New. Other naming rules are mentioned when they occur.

Die verschiedenen Primärschritte eines Anwendungsprogramms, wie in 3 dargestellt, werden nun dedaillierter erläutert.The various primary steps of an application program, as in 3 will now be explained in more detail.

I. AUFBEREITERINSTALLATIONI. CONDITIONER INSTALLATION

Die Installation von Aufbereitern für Escher verwendet einen generalisierten Erweiterungsmechanismus, der auch für die Installation anderer Erweiterungen, beispielsweise von Schattierern, verwendet wird. Erweiterungen für Macintosh-Ausführungen sind Dokumente, die in Massenspeicher in der Hardware von 1 gespeichert sind, mit einem Dateizweig und einem Betriebsmittelzweig. Der Dateizweig enthält den Code, der durch das Escher-System zu laden ist, und der Betriebsmittelzweig identifiziert die Code-Fragmente im Dateizweig.The installation of Escher conditioners uses a generalized extension mechanism that is also used to install other extensions, such as shaders. Extensions for Macintosh executions are documents stored in mass storage in the hardware of 1 are stored, with a file branch and a resource branch. The file branch contains the code to be loaded by the Escher system, and the resource branch identifies the code fragments in the file branch.

Wenn ein Anwendungsprogramm 204, das mit einem Macintosh arbeitet, einen Aufruf an die Escherprozedur ErInitialize() richtet, dann fragt das Eschersystem alle Erweiterungsdokumente in einem Erweiterungsordner des Rechnersystems ab. Alle Dokumente, die gefunden werden und die geeignete Betriebsmittelinformation enthalten, werden dann als zur Verwendung durch das Anwendungsprogramm verfügbar behandelt. Das Erweiterungsdokument spezifiziert eine Initialisierungsroutine, die alle notwendigen Schritte zum ”Registrieren” der Dienste umfaßt, die sich mit dem Escher-System anbietet, sowie eine Beendigungsroutine.If an application program 204 Using a Macintosh, call Escher's ErInitialize () call, then the Escher system queries all extension documents in an extension folder of the computer system. All documents that are found and that contain appropriate resource information are then treated as available for use by the application program. The extension document specifies an initialization routine that includes all necessary steps to "register" the services offered by the Escher system and a termination routine.

Escher-Erweiterungen werden in eine verallgemeinerte Objekthierarchie in der Escher-Laufzeitumgebung geladen. Eschers Objekthierarchie hat eine ”offene” Architektur, die jeder Anwendung erlaubt, eine Unterklasse an jeder von mehreren Niveaus in der Hierarchie ”einzustecken”. Aufbereiter sind eine der Objektklassen, die unterklassiert werden können.Escher extensions become a generalized object hierarchy in the Escher runtime environment loaded. Escher's object hierarchy has an "open" architecture that applies to every application allows to "plug in" a subclass at any of several levels in the hierarchy. Dresser are one of the object classes that can be subclassed.

A. EscherobjektsystemA. Escher object system

Ein Objekt im Escher-System wird durch zwei Handhaben identifiziert, nämlich eine Objektklasse und ein Objekt. Die Objektklasse ist ein Zeiger vom Typ EtObjectClassPrivate, und der Objekttyp ist ein Langwort. Weil die Oberklasse jeder Unterklasse in der Escher-Klassenhierarchie ein gewisses Verhalten hat, speichert Escher Objektprivatdaten und Objektklassen in einer geschichteten Weise. Beispielsweise eine Unterklasse der Aufbereiterklasse wird abstrakt in der in 5 dargestellten Weise ausgelegt. 5 zeigt eine Objekt-”Klasse” 502, die ein durchgehender Bereich von speicherhaltigen Zeigern aller dem Aufbereiter zugehöriger Verfahren ist, in diesem Falle ein Drahtmodell (WF)-Aufbereiter. Da der Drahtmodellaufbereiter aus der Aufbereiterklasse unterklassiert ist, ist die Aufbereiterklasse in Unterklassen von einer ”Geteilt-Objekt”-Klasse unterklassiert, und die ”Geteilt-Objekt”-Klasse ist aus der generalisierten ”Objekt”-Klasse unterklassiert. Die Verfahrenstabellen 502 listen daher zunächst die der Objektklasse (Bereich 504) zugehörigen Verfahren. Diese Verfahren enthalten unter anderem Anordnen des Objekts, Duplizieren des Objekts und Ausspeichern des Objekts. Alle Objektklassenverfahrenstabellen zeigen auf denselben Escher-Prozeduren in diesen Eintragungen, sofern diese Eintragungen nicht bei der Initialisierung durch eine der absteigenden Klassen überschrieben worden sind, die in einer speziellen Verfahrenstabelle 502 dargestellt sind. Die Klasse 502 enthält als nächstes einen Bereich 506, der Zeiger auf einen Satz Verfahren enthält, die für alle Objekte in der ”Geteilt-Objekt”-Klasse geeignet sind. Wenn es geschieht, gibt es keine ”Geteilt-Objekt”-Verfahren, so daß in dieser Schicht kein Raum zugeteilt wird. Im Bereich 506 folgt ein Bereich 508, der Zeiger auf einen Satz Verfahren enthält, die für alle Aufbe reiter geeignet sind. Es gibt keine Schicht speziell für die Drahtmodell-Aufbereiterklasse, weil durch Verabredung im Escher-Design Blattklassen eine eigene Verfahrenstabelle haben.An object in the Escher system is identified by two handles, namely an object class and an object. The object class is a pointer of type EtObjectClassPrivate, and the object type is a longword. Because the superclass of each subclass in the Escher class hierarchy has some behavior, Escher stores object privilege and object classes in a layered fashion. For example, a subclass of the conditioner class becomes abstract in the in 5 designed way. 5 shows an object "class" 502 which is a continuous range of memory-containing pointers of all processes associated with the conditioner, in this case a wireframe (WF) preparer. Since the wireframe conditioner is subclassed from the conditioner class, the conditioner class is subclassed by a "shared object" class, and the "shared object" class is underclassed from the generalized "object" class. The procedure tables 502 therefore first list those of the object class (area 504 ) associated procedures. These methods include, but are not limited to, placing the object, duplicating the object, and saving the object. All object class methods tables point to the same Escher procedures in these entries, unless those entries have been overwritten during initialization by one of the descending classes that in a particular procedure table 502 are shown. The class 502 next contains an area 506 containing pointers to a set of procedures that are appropriate for all objects in the "shared object" class. When it does, there is no "shared-object" procedure, so no space is allocated in this layer. In the area 506 follows an area 508 , which contains pointers to a set of procedures that are suitable for all Aufbe rider. There is no coating specifically for the wireframe reprocessor class because by convention in Escher design, leaf classes have their own process table.

Der Bereich 512 speichert alle Daten für einen Spezialfall von Klasse 12. Dieser Bereich ist in der gleichen Weise organisiert wie der Bereich 502. Insbesondere enthält er zunächst alle Daten, die für jeden Spezialfall eine Objektklasse im Bereich 514 geeignet sind, gefolgt von allen Daten, die für jeden Spezialfall einer Geteilt-Objektklasse im Bereich 516 geeignet sind, gefolgt von allen Daten, die für jeden Spezialfall eines Aufbereiterobjekts im Bereich 518 geeignet sind. Anders als die Klassendaten 502 enthalten die Spezialfalldaten 512 auch einen Bereich 520, der all die Daten enthält, die für einen Spezialfall eines Drahtmodellaufbereiterobjekts geeignet sind. Die Objektdaten im Bereich 514 enthalten lediglich einen Zeiger auf die Verfahrenstabellen 502, die gemeinsam für alle Spezialfälle von Drahtmodellaufbereiterobjekten sind. Die Geteilt-Objektdaten im Bereich 516 enthalten eine Bezugszählung, und die Aufbereiterobjektdaten im Bereich 518 und die Drahtmodellaufbereiterdaten im Bereich 520 werden später erläutert.The area 512 stores all data for a special case of class 12 , This area is in the same place organized as the area 502 , In particular, it first contains all the data that contains an object class in the area for each special case 514 are appropriate, followed by all the data for each special case of a shared object class in the range 516 are appropriate, followed by all the data for each special case of a conditioner object in the area 518 are suitable. Unlike the class data 502 contain the special case data 512 also an area 520 containing all the data suitable for a special case of a wireframe builder object. The object data in the area 514 contain only a pointer to the procedure tables 502 that are common to all special cases of wireframe dresser objects. The shared object data in the area 516 include a reference count, and the renderer object data in the range 518 and the wireframe maker data in the area 520 will be explained later.

In 5 ist auch für Illustrationszwecke ein zweiter Spezialfall eines Objekts in der Drahtmodellaufbereiterklasse gezeigt. Der zweite Spezialfall hat all seine Daten im Bereich 522 versammelt, im selben Format wie die Daten des ersten Spezialfalls im Bereich 512. Die Objektdaten im Bereich 524 dieser Daten zeigen auf dieselbe Objektklassenverfahrenstabelle 502 wie es die Objektdaten für den ersten Spezialfall tun. Es sei angemerkt, daß der zweite Spezialfall in 5 nur angegeben ist, das Verhältnis zwischen Klassen und Spezialfalldaten im Escher-Objektmechanismus darzustellen. Es ist unwahrscheinlich, daß mehr als ein Spezialfall eines Drahtmodellaufbereiters insbesondere jemals in einer einzigen Spezialisierung eines Anwendungsprogramms koexistieren würde, jedoch ist dieses nicht ausgeschlossen.In 5 For illustration purposes, a second special case of an object is also shown in the wireframe conditioner class. The second special case has all its data in the range 522 in the same format as the data of the first special case in the area 512 , The object data in the area 524 This data points to the same object class procedure table 502 as do the object data for the first special case. It should be noted that the second special case in 5 only specified to represent the relationship between classes and special case data in the Escher object mechanism. In particular, it is unlikely that more than one special case of a wireframe maker would ever co-exist in a single specialization of an application program, but this is not excluded.

Es ist nun nützlich, die im Escher-System verwendete Klasssenhierarchie zu beschreiben. Diese Hierarchie ist ausgedehnt, und nur jene Klassen, die für das Verständnis der Erfindung wesentlich sind, werden in 6 gezeigt. Bezugnehmend auf 6 kann man sehen, daß die EtObject-Klasse die Grundklasse für alle Klassen in der Hierarchie ist. Die EtSharedObject-Klasse ist unterklassiert, unter EtObject, wie es andere Klassen sind, die hier nicht wichtig sind. Unterklassiert unter die EtSharedObject-Klasse ist eine EtShapeObject-Klasse, eine EtRendererObject-Klasse, eine EtSetObject-Klasse, eine EtDrawContext-Klasse, eine EtViewObject-Klasse, eine EtQualityCollection-Klasse und eine EtQualityGroupObject-Klasse. Unterklassiert unter die EtShapeObject-Klasse sind eine EtStyleObject-Klasse eine EtTransformObject-Klasse, eine EtCamera-Object-Klasse, eine EtLightObject-Klasse, eine EtGeometryObject-Klasse, eine EtGroup-Klasse und eine EtShaderObject-Klasse, und unterklassiert unter die EdRendererObject-Klasse sind eine Z-Puffer-Klasse und eine Drahtmodellklasse. Unterklassiert unter die EtStyleObject-Klasse ist eine BackfacingStyle-Klasse, unter anderem. Unterklassiert unter die EtTrantormObject-Klasse sind eine Dreh-Klasse, eine Maßstab-Klasse und eine Übersetzung-Klasse, unter anderem und hier nicht dargestellt. Unterklassiert unter die EtGeometryObject-Klasse sind Klassen für Linie, Punkt, Polygon, Poly-Line, Toros, und Dreieck als Objekte, unter anderem. Unterklassiert unter die EtGroup-Klasse sind eine EtLightGroup-Klasse, eine EtInfoGroup-Klasse und eine EtDisplayGroup-Klasse, von denen die letzte Unterklassen EtOrderedGroup und EtListGroup hat. Diese Klassenhierarchie beschreibt die Speicherung von Verfahrenstabellen und Spezialfalldaten für jede der in der Hierarchie enthaltenen Klassen. Die Klassen an der Enden der Hierarchie, das heißt die ”Blätter” der Baumstrukturen sind bekannt als ”Blatt”-Klassen.It is now useful to describe the class hierarchy used in the Escher system. This hierarchy is extensive, and only those classes that are essential to the understanding of the invention will be discussed in 6 shown. Referring to 6 you can see that the EtObject class is the base class for all classes in the hierarchy. The EtSharedObject class is under-class, under EtObject, as are other classes that are not important here. Subclassed under the EtSharedObject class is an EtShapeObject class, an EtRendererObject class, an EtSetObject class, an EtDrawContext class, an EtViewObject class, an EtQualityCollection class, and an EtQualityGroupObject class. Subclassed under the EtShapeObject class, an EtStyleObject class is an EtTransformObject class, an EtCamera object class, an EtLightObject class, an EtGeometryObject class, an EtGroup class, and an EtShaderObject class, and is subclassed under the EdRendererObject class are a Z-buffer class and a wireframe class. Subclassed under the EtStyleObject class is a BackfacingStyle class, among others. Subclassed under the EtTrantormObject class are a rotation class, a scale class, and a translation class, among others, and not shown here. Subclassed under the EtGeometryObject class are classes for Line, Point, Polygon, Poly-Line, Toros, and Triangle as objects, among others. Subclassed under the EtGroup class are an EtLightGroup class, an EtInfoGroup class, and an EtDisplayGroup class, the last subclasses of which are EtOrderedGroup and EtListGroup. This class hierarchy describes the storage of procedure tables and special case data for each of the classes contained in the hierarchy. The classes at the ends of the hierarchy, that is, the "leaves" of the tree structures are known as "leaf" classes.

B: Registrierung eines AufbereitersB: Registration of a conditioner

Die Basis für die Objektunterklassierung bei Escher besteht darin, daß Escher seine Verfahrenstabelle dynamisch zur Systemstartzeit unter Verwendung von Erweiterungsmechanismen aufbaut. Jede Objektklasse im System, einschließlich der Aufbereiterobjektklassen, wird unter der Steuerung durch die ErInitialize-Prozedur, die durch das Anwendungsprogramm aufgerufen wird, ”registriert”, so daß ihre Funktionalität erforderlichenfalls verfügbar ist. Da jede Erweiterung geladen ist, erhält Escher die Adresse der Initialisierungsfunktion der Erweiterung aus dem Betriebsmittelzweig des Erweiterungsdokuments. Es ruft dann jene Funktion auf.The base for the object subclassing at Escher is that Escher use its procedure table dynamically at system startup time of expansion mechanisms. Every object class in the system, including the conditioner object classes, is under the control of the ErInitialize procedure called by the application program is "registered" so that its functionality, if necessary available is. Since each extension is loaded, Escher receives the address of the initialization function of the Extension from the resource branch of the extension document. It then calls that function.

Das folgende ist eine C-Sprachen-Initialisierungsprozedur, genannt ErWF.Register, die durch die Drahtmodell-Aufbereitererweiterung verwendet wird.

Figure 00270001
Figure 00280001
The following is a C-language initialization procedure, called ErWF.Register, used by the wireframe dresser extension.
Figure 00270001
Figure 00280001

Wenn eine Klasse registriert ist, liefert sie Verfahren, die das Verhalten von Spezialfällen der Klasse bestimmen. Die Klasse liefert diese Verfahren an Escher über einen Metahändler. Ein Metahändler ist eine Funktion, die Escher-Verfahrenstypen auf Funktionszeiger kardiert. Escher bittet die Metahändlerfunktion, ihm ein Verfahren eines gewissen Typs anzugeben, und wenn der Metahändler den Verfahrenstyp kennt, liefert er sein entsprechendes Verfahren. Wenn der Metahändler den angeforderten Verfahrenstyp nicht kennt, kehrt er auf Null zurück. Wie man sehen kann, registriert der erste Schritt des ErWF.Register die neue Drahtmodellunterklasse durch Aufruf des Aufbereiterklassenregisteruerungsverfahrens ErRendererClass.Register mit einer Identifizierung des Metahändlers des Drahtmodellaufbereiters ErWF.MetaHandler als Argument.When a class is registered, it provides procedures that determine the behavior of special cases of the class. The class provides these procedures to Escher through a Metahandeler. A metahandeler is a function that cards Escher process types to function pointers. Escher asks the Metahandeler function to give him a procedure of a certain type, and if the Metahandel knows the type of procedure, he provides his appropriate procedure. If the meta trader does not know the requested procedure type, he returns to zero. As can be seen, the first step of the ErWF register registers the new wireframe subclass by calling the remover class registering method ErRendererClass.Register with a Identification of the metaphor of wireframe builder ErWF.MetaHandler as argument.

Der Metahändler des Drahtmodellaufbereiters ist wie folgt:

Figure 00290001
The metal distributor of the wireframe conditioner is as follows:
Figure 00290001

Escher ruft den Metahändler einmal jeden Eintrag in seine Verfahrenstabelle auf und verlangt jedesmal die Identifizierung eines anderen Drahtmodellverfahrens.Escher calls the Metahandel once each entry in his procedure table and requires each time the identification of another wireframe method.

Die EtRendererObject-Klasse enthält eine Verfahrenstabelle für die Aufbereitung geometrischer Formen. Jeder Aufbereiter muß ein Verfahren zum Aufbereiten von wenigstens drei Geometriegrundtypen liefern: Punkt, Linie und Dreieck. Der Aufbereiter kann auch Verfahren zum Aufbereiten komplexerer Geometrietypen liefern. Nach dem Registrieren eines Metahändlers hofft die obige Drahtmodellprozedur die ErWF.Register daher die Aufbereiterklassenprozedur ErRendererClass. OverrideGeometrylTypeDrawMethod auf, um die Geometriezeichnungsverfahren, die er untersützt, einzurichten. Wie man sehen kann, registriert der Drahtmodellaufbereiter Prozeduren zum Aufbereiten von Geometrien vom Typ Polygon, Dreieck, Linie, Polylinie (Folge von verbundenen Linien) und Punkten, unter anderem.The Contains the EtRendererObject class a procedure table for the preparation of geometric shapes. Every dresser must have a procedure to render at least three basic geometry types: point, Line and triangle. The conditioner can also process for processing provide more complex geometry types. After registering a Metahändlers hopes the above wireframe procedure, the ErWF.Register therefore the Preparer class procedure ErRendererClass. OverrideGeometrylTypeDrawMethod to set up the geometry drawing methods he supports. As you can see, the wireframe builder registers procedures for preparing geometries of the type Polygon, Triangle, Line, Polyline (sequence of connected lines) and points, among others.

Die ErWF.Register-Prozedur überschreibt auch gewisse Transformationsverfahren und Attributeinstellverfahren in einer Verfahrenstabelle der Aufbereiterklasse.The ErWF.Register procedure overrides also some transformation methods and attribute setting methods in a procedure table of the preparation class.

Man kann sehen, daß durch den Objektmechanismus von Escher neue Aufbereiter im Betrieb in das Escher-System installiert werden können, indem sie lediglich zu Unterklassen unter die EtRendererObject-Klasse gemacht werden.you can see that through the object mechanism of Escher new conditioner in the enterprise in The Escher system can be installed by merely accessing Subclasses are made under the EtRendererObject class.

II. AUFBAU EINES SICHTOBJEKTSII. CONSTRUCTION OF A SIGHT OBJECT

A. DatenstrukturenA. Data Structures

Wie erwähnt, ist ein Sichtobjekt eine Datenstruktur, die unter anderen Dingen Kamerainformation, Beleuchtungsinformation, Durchquerungs- oder Zustandsinformation sowie eine Angabe über eine Auswahl von Aufbereitern enthält. Jedes Sichtobjekt ist ein Spezialfall der Klasse EtViewObject, der, wie in 6 angegeben, eine Unterklasse der Klasse EtSharedObject ist, die ihrerseits eine Unterklasse unter der Klasse EtObject ist. Dementsprechend hat, folgend dem Format von 5, ein Sichtobjekt das Format von 7 im Speicher. Speziell ein Bereich des Speichers 702 ist so bestimmt, daß er Zeiger auf Verfahren der EtViewObject-Klasse enthält, und dieser Bereich 702 enthält Zeiger 704 auf Objektverfahren und Zeiger 706 auf Geteiltobjektverfahren. Die EtViewObject-Klasse ist eine Blattklasse, so daß in Übereinstimmung mit der Escher-Regel die Klasse eine Verfahrenstabelle speziell für Sichtobjektverfahren ausläßt. Es sei auch angemerkt, daß in der vorliegenden Ausführungsform auch keine Geteiltobjektverfahren vorhanden sind.As noted, a view object is a data structure that includes, among other things, camera information, lighting information, traversal or state information, as well as an indication of a selection of conditioners. Each view object is a special case of the class EtViewObject, which, as in 6 is a subclass of the EtSharedObject class, which in turn is a subclass under the EtObject class. Accordingly, following the format of 5 , a visual object the format of 7 In the storage room. Especially an area of memory 702 is determined to contain pointers to methods of the EtViewObject class, and this range 702 contains pointer 704 on object method and pointer 706 on shared object method. The EtViewObject class is a leaf class, so in accordance with the Escher Rule, the class omits a procedure table specific to view object methods. It should also be noted that there are no shared object methods in the present embodiment as well.

Die Struktur enthält auch Spezialfalldaten für das Sichtobjekt im Bereich 710 des Speichers. Dieser Bereich enthält Spezialfalldaten, die für die Objektklasse in einem Teil 712 spezifisch sind (der auf die Objektklasse 702 zeigt), Spezialfalldaten, die für die Geteiltobjektklasse in einem Teil 714 spezifisch sind (eine Bezugszählung enthaltend), und Spezialfalldaten, die für die Sichtobjektklasse in einem Teil 716 spezifisch sind. Die Sichtobjektdaten sind eine Datenstruktur vom Typ EtViewPrivate, der wie folgt beschrieben ist:

Figure 00310001
The structure also contains special case data for the view object in the area 710 of the memory. This area contains special case data relevant to the object class in a part 712 are specific (to the object class 702 shows), special case data relevant to the shared object class in a part 714 are specific (containing a reference count) and special case data for the view object class in a part 716 are specific. The view object data is a data structure of the type EtViewPrivate, which is described as follows:
Figure 00310001

Wie man sehen kann, enthält ein Sichtobjekt unter anderem einen Zeiger (*rendererClass) auf die Verfahren eines gerade gewählten Aufbereiters, einen Zeiger (*renderer) auf die Spezialfalldaten des augenblicklichen Aufbereiters, ein Zeichnungskontextobjekt, ein Kameraobjekt, Beleuchtungsobjekte (Leuchten), mehrere Schattiererobjekte und ein Qualitätsgruppenobjekt.As you can see contains a visual object includes a pointer (* rendererClass) the procedures of a just chosen Preparer, a pointer (* renderer) to the special case data the current dresser, a drawing context object, a camera object, lighting objects (lights), multiple shader objects and a quality group object.

Die EtRendererPrivate-Struktur ist wie folgt definiert:The EtRendererPrivate structure is defined as follows:

Figure 00320001
Figure 00320001

Diese Struktur enthält Zeiger auf eine Serie von Stapeln, die den augenblicklichen Zustand einer Durchquerung angeben. Wie unten detaillierter beschrieben werden diese Zustandsstapel jedesmal gestoßen, wenn Escher's Durchquerer ein ”Gruppen”-Objekt in einem Modell öffnet und die Durchquerung des nächsten Niveaus der Hierarchie beginnt. Diese Stapel werden auf den früheren Zustand angehoben, wenn der Durchquerer seine Arbeit bei allen unteren Niveaus der Modellhierarchie vervollständigt und ein ”Gruppen”-Objekt schließt.These Contains structure Pointer to a series of piles showing the current state specify a traversal. As described in more detail below These state stacks are encountered each time Escher's traverser becomes a "group" object in a model opens and traversing the next level the hierarchy begins. These stacks will be restored to their previous state raised when the crosser does his job at all lower levels completed the model hierarchy and a "group" object closes.

Die EtRendererClass Datenstruktur ist wie folgt definiert:

Figure 00320002
Figure 00330001
The EtRendererClass data structure is defined as follows:
Figure 00320002
Figure 00330001

Es sei daran erinnert, daß die Initialisierungsprozedur des Drahtmodellaufbereiters, die oben beschrieben wurde, eine Metahändler einrichtet, den Escher aufrufen kann, um gewisse Verfahren der Aufbereiterklasse zu überschreiben. Escher setzt die durch den Metahändler rückgeführten Zeiger in die EtRendererClass-Strukturfelder, die oben für die entsprechenden Verfahren definiert sind. Es sei auch daran erinnert, daß die Initialisierungsprozedur des Drahtmodellaufbereiters einige Verfahren überschreibt, insbesondere gewisse Geometriezeichenverfahren unter Verwendung einer EtRendererClass OverrideGeometryTypeDrawMethode. Diese Prozedur schreibt den Zeiger auf die spezifizierte Aufbereiterprozedur in die Verfahrenstabelle auf die durch *geometryDrawMethods gezeigt wird, um dadurch Fehlerverfahren zu überschreiben, die vom Eschersystem ursprünglich bei der Initialisierung eingestellt wurden. Die EtMethodTable Datenstruktur ist lediglich eine Liste von Zeigern; für *geometryDrawMethods zeigt jeder Eintrag in der Tabelle auf die Prozedur zur Aufbereitung einer entsprechend dem Geometrietype beispielswei se Punkt, Linie, Dreieck usw.. Die Korrespondenz zwischen Stellen in dieser Tabelle und Geometrietypen wird bei der Kompelierung festgelegt.It be reminded that the Initialization procedure of the wireframe renderer described above became a metal trader Escher can call for certain procedures of the treatment class to overwrite. Escher puts those through the Metahandel returned pointer in the EtRendererClass structure fields above for the corresponding ones Procedures are defined. It should also be remembered that the initialization procedure of the wireframe renderer overwrites some methods, in particular certain geometry character methods using an EtRendererClass OverrideGeometryTypeDraw method. These Procedure writes the pointer to the specified conditioner procedure in the procedure table pointed to by * geometryDrawMethods In order to thereby override error procedures, the Eschersystem originally were set during initialization. The EtMethodTable data structure is just a list of pointers; for * geometryDrawMethods shows each entry in the table refers to the procedure for processing a according to the geometry type beispielswei se point, line, triangle etc. The correspondence between places in this table and geometry types is set during compilation.

Ein anderes Feld in der EtRendererClass-DatenStruktur, das erwähnt werden sollte, ist das geometryDrawMethods-Feld. Dieses Feld enthält einen Zeiger auf einer Prozedur, die Escher aufrufen wird, wenn von ihm verlangt worden ist, eine Geometrietype. zu zeichnen, die der laufende Aufbereiter nicht unterstützt (d. h., der Verfahrenstabelleneintrag *geometryDrawMethods für die Geometrie ist NULL). Diese Prozedur zerlegt die spezifizierte Geometrie in ähnliche Geometrien, wie weiter unten im Detail erläutert. In der vorliegenden Ausführungsform kann die Zerlegungsprozedur nicht ausgeschaltet werden. In einer anderen Ausführungsform der Erfindung kann jedoch ein Aufbereiter dieses Zerlegungsverfahren unwirksam machen, um den Prozeß zu optimieren.Another field in the EtRendererClass data structure that should be mentioned is the geometry DrawMethods field. This field contains a pointer to a procedure that Escher will call, if he has been requested, a geometry type. Drawing that the current dresser does not support (that is, the geometryDrawMethods procedure table entry for the geometry is NULL). This procedure breaks the specified geometry into similar geometries, as explained in more detail below. In the present embodiment, the decomposition procedure can not be turned off. However, in another embodiment of the invention, a conditioner may disable this decomposition process to optimize the process.

Die EtQualityGroupObject-Struktur wird nachfolgend beschrieben.The EtQualityGroupObject structure is described below.

B. ProzedurenB. Procedures

Das Verfahren zum Aufbauen eines Sichtobjekts in Schritt 304 (3) ist im wesentlichen das Verfahren zum Einschreiben gewünschter Informationen in die Sichtobjektdatenstruktur. Das beispielhafte Anwendungsprogramm in Anhang A wird dazu verwendet, das Verfahren zu erläutern.The method for building a visual object in step 304 ( 3 ) is essentially the method of writing desired information into the view object data structure. The exemplary application program in Appendix A is used to explain the method.

1. Erzeugen eines Sichtobjekts1. Create a visual object

Nach Initialisierung und Einrichtung einer Qualitätssammlung erzeugt das Anwendungsprogramm ein neues Sichtobjekt durch Aufruf von view = ErView_New(). Diese Prozedur erzeugt lediglich einen neuen Spezialfall eines Objekt in der EtRendererClass und füllt es mit Fehlerdaten.To Initialization and setup of a quality collection generates the application program a new view object by calling view = ErView_New (). These Procedure only creates a new special case of an object in the EtRendererClass and fills it with error data.

2. Einstellen des Aufbereiters2. Adjust the conditioner

Ein Aufbereiter kann an ein Sichtobjekt angehängt werden, indem eine Escherprozedur ErView_SetRenderer aufgerufen wird und das Sichtobjekt und das Aufbereiterobjekt einge geben werden. Dieser Aufruf erhöht die Referenzzählung des eingegebenen Aufbereiters. Wenn ein Aufbereiterobjekt bereits eingestellt ist, dann wird seine Bezugszählung vermindert.One Conditioner can be attached to a view object by using an Escher procedure ErView_SetRenderer is called and enter the view object and the conditioner object become. This call increases the reference count of the entered conditioner. If a dresser object already is set, then its reference count is decreased.

Ein Aufbereiter kann auch durch Aufbereiterart eingestellt werden, ohne daß man zunächst ein Spezialfall eines Aufbereiterobjekts erhalten haben muß. In diesem Fall ruft das Anwendungsprogramm die Escherroutine ErView_SetRendererByType auf, und dieses ist die Prozedur, die durch das Beispielprogramm in Anhang A aufgerufen wird. Die durch diese Prozedur angegebenen Parameter sind das Sichtobjekt und die Typbestimmung, was ein Vier-Zeichen-Code ist, der einen Aufbereitertyp bezeichnet (beispielsweise Drahtmodell oder Z-Puffer). Die Escherprozedur ErView_SetRendererByType bestimmt, welcher Aufbereiter der spezifizierten Art registriert worden ist, und wenn ein solcher Aufbereiter registriert worden ist, wird ein Zeiger auf die Aufbereiterspezialdaten in den entsprechenden Eintrag des spezifizierten Sichtobjekts eingeschrieben.One Dresser can also be set by conditioner type, without that he first a special case of a conditioner object must have received. In this In case the application program calls the Escher routine ErView_SetRendererByType on, and this is the procedure used by the sample program in Appendix A. The ones specified by this procedure Parameters are the visual object and the type determination, which is a four-character code that designates a conditioner type (for example, wireframe or Z-buffer). The Escher procedure ErView_SetRendererByType determines which conditioner of the specified type has been registered, and when such a preparer has been registered, becomes one Pointer to the conditioner special data in the corresponding entry of the specified visual object.

3. Einstellen der Kamera3. Adjust the camera

Vor dem Einstellen der Kamera muß ein Kameraobjekt geschaffen und initialisiert werden. Das Programmbeispiel in Anhang A führt dies durch Einschreiben der Kameraperspektivarten in eine geeignete perspectiveData-Datenstruktur aus und weist sie einem Kameraobjekt zu unter Verwendung der Escherprozedur ErViewAngleAspectCamera_NewData. Sobald ein Kameraobjekt erhalten ist, kann es dem Sichtobjekt zugeordnet werden, durch Aufruf von ErView_SetCamera, Eingeben des Sichtobjekts und des Kameraobjekts. Dieser Aufruf erhöht die Bezugszählung des eingegebenen Kameraobjekts. Wenn das Kameraobjekt bereits eingegeben war, wird seine Bezugszählung vermindert. Das Programmbeispiel in Anhang A benutzt dann das Kameraobjekt unter Verwendung der Escherfunktion ErObject_Dispose, da das Kameraobjekt nicht mehr getrennt benötigt wird.In front to adjust the camera must be Camera object created and initialized. The program example in Annex A. this by writing the camera perspective types in a suitable perspectiveData data structure and assigns it to a camera object using the Escher procedure ErViewAngleAspectCamera_NewData. Once a camera object is received, it can be assigned to the view object enter the view object by calling ErView_SetCamera and the camera object. This call increases the reference count of the entered camera object. When the camera object is already entered was his reference count reduced. The program example in Appendix A then uses the camera object using the Escher function ErObject_Dispose as the camera object no longer needed separately becomes.

4. Einstellen des Zeichnungskontextes4. Setting the drawing context

Vor dem Einstellen des Zeichnungskontextes muß ein Zeichnungskontextobjekt erzeugt und initialisiert werden. Im Programmbeispiel in Anhang A wird dieses durch Einrichten einer geeigneten Datenstruktur PixmapData bewerkstelligt und durch Eingeben in die Escherprozedur ErPixmapDrawContext_NewData. Das Zeichnungskontexobjekt wird dann dem Sichtobjekt unter Verwendung des Aufrufs ErView_SetDrawContext zugeordnet unter Verwendung des Aufrufs ErView_SetDrawContext und Eingeben des Sichtobjekts und des Zeichnungskontextobjekts. Das Anwendungsprogrammbeispiel in Anhang A stellt dann das Zeichnungskontextobjekt durch Übergabe an die Escherfunktion ErObject_Dispose ein.In front The setting of the drawing context requires a drawing context object be generated and initialized. In the program example in Appendix A will do this by setting up a suitable data structure PixmapData accomplished and by entering into the Escher procedure ErPixmapDrawContext_NewData. The drawing context object is then used to the view object of the call ErView_SetDrawContext mapped using the Call ErView_SetDrawContext and enter the view object and the drawing context object. The application program example in Appendix A then sets the drawing context object by passing to the Escher function ErObject_Dispose.

Anderer Eigenschaften der Ansicht können auch in ähnlicher Weise spezifiziert werden, wie beispielsweise Beleuchtung und SchattierungAnother Properties of the view can also in similar Be specified such as lighting and shading

5. Auswahl des Aufbereitungsqualitätsniveaus5. Selection of the processing quality level

Dieses wird nachfolgend detaillierter beschrieben.This will be described in more detail below.

Man kann erkennen, daß der Aufbau und die Editierung eines Sichtobjekts vollständig getrennt vom Aufbau und Editieren eines anderen Sichtobjekts sind, so daß mehr als ein Sichtobjekt (einschließlich jener, die den selben oder unterschiedliche Aufbereiter spezifizieren) ohne gegenseitige Störung koexistieren können.you can recognize that the Construction and editing of a visual object completely separated of building and editing another visual object, so that more than a visual object (including those who specify the same or different conditioner) without mutual interference can coexist.

III. AUFBAU EINES MODELLSIII. CONSTRUCTION OF A MODEL

Das Modellbildungsverfahren, das bei Escher verwendet wird, versteht man am besten aus einem Vergleich der Modellbildungsmuster, die bei zwei existierenden Produkten verwendet werden, die von Apple Computer angeboten werden: QuickDraw und QuckDraw GX. QuickDraw GX ist in Apple Computer ”QuickDraw GX Programmer's Overview” (1994) beschrieben, das hier durch Bezugnahme in die Beschreibung eingebaut wird. Sowohl QuickDraw als auch QuickDraw GX führen zweidimensionale Graphikverarbeitung anstelle dreidimensionaler Verarbeitung aus. Das zweidimensionale Graphiksystem QuickDraw besitzt eine Prozeßschnittstelle und einen Globalgraphikzustand, der die Farbe, die Transferart und das Transfermuster der von ihr gezeichneten Formen definiert. Wenn die Gestaltezeichnungsroutinen von QuickDraw aufgerufen werden, zeichnet QuickDraw die Gestalt gemäß der Variablen in ihrem Graphikzustand. Ein Anwendungsprogramm kann den Graphikzustand durch Verwendung anderer Aufrufe an QuickDraw manipulieren.The Modeling method used by Escher understands One best from a comparison of modeling patterns, the be used on two existing products by Apple Computers are offered: QuickDraw and QuckDraw GX. QuickDraw GX is in Apple Computer's "QuickDraw GX Programmer's Overview "(1994) which is incorporated herein by reference. Both QuickDraw and QuickDraw GX perform two-dimensional graphics processing instead of three-dimensional processing. The two-dimensional Graphics system QuickDraw has a process interface and a global graphics state, the color, the transfer method and the transfer pattern of her defined shapes defined. When the design drawing routines QuickDraw draws the shape from QuickDraw according to the variable in her graphic state. An application program can change the graphics state by manipulating other calls to QuickDraw.

QuickDraw GX unterscheidet sich von QuickDraw dadurch, daß anstelle einer Prozeßschnittstelle mit einem systemunterstützenden Graphikzustand Gestalten als Objekte dargestellt werden, die alle Information enthalten, die notwendig sind, um sie zu zeichnen. Es gibt keinen systemgestützten Graphikzustand. Weil Gestalten Objekte sind, kann QuickDraw GX Nutzen liefern, mit solchen Gestalten zu arbeiten, was QuickDraw nicht kann, weil die Routinen von QuickDraw nur Bilder in eine Bildpunktkarte zeichnen. QuickDraw GX liefert Funktionalität zum Arbeiten an Gestalten, sowie ”hit”-Prüfung und geometrische Überschneidung.QuickDraw GX differs from QuickDraw in that instead of a process interface with a system supportive Graphics state shapes are represented as objects, all Contain information necessary to draw them. It There is no system-based Graphics state. Because shapes are objects, QuickDraw GX can benefit deliver, work with such figures, what QuickDraw does not can because the routines of QuickDraw only images into a pixel map to draw. QuickDraw GX provides functionality to work on shapes, as well as "hit" exam and geometric overlap.

Der Hauptdatentyp bei QuickDraw GX ist eine ”Gestalt”, die die Geometrie und andere Zeichnungsinformation in sich einschließt. Gestalten werden über ein ”Sichttor” gezeichnet, das die Gestalten in ”Sichtvorrichtungs”-Koordinaten transformiert. Wenn eine Gestalt bei QuickDraw GX zum Zeichnen eingegeben wird, dann wird die Gestalt durch jedes Sichttor gezeichnet, das an die Gestalt angehängt ist. Ein Sichttor kann mehrere Sichtvorrichtungen überlappen, in welchem Fall die Gestalt auf jede Sichtvorrichtung mit ihrer richtigen Auflösung gezeichnet wird. QuickDraw GX-Gestalten können in Hierarchien durch Verwendung der ”Bildgestalt” organisiert werden. Jede Gestalt hat einen ”Typ”, der ihr zugeordnet ist, der angibt, ob sie eine Linie, ein Polygon, eine Kurve usw. ist. Der Zugang zu gestalten erfolgt über eine Prozeßschnittstelle und Handhabe.Of the The main data type in QuickDraw GX is a "shape" that contains the geometry and others Includes drawing information. Figures are drawn over a "sight gate", that the figures in "visual device" coordinates transformed. When a figure is typed in to draw with QuickDraw GX then the figure is drawn through every sight gate that attached to the figure is. A vision gate may overlap multiple vision devices, in which case the shape on each viewing device with their correct resolution is drawn. QuickDraw GX shapes can be used in hierarchies by using organized the "image shape" become. Every figure has a "type" who is hers which indicates whether it is a line, a polygon, a Curve, etc. is. Access to design takes place via a process interface and handle.

Die Gestaltzeichnungsprozedur von QuickDraw GX kann zu jeder beliebigen Zeit aufgerufen werden, um eine Gestalt zu zeichnen. Die Anordnung von Gestalten, die gezeichnet werden, übereinander ist abhängig von der Reihenfolge, in der sie gezeichnet werden. Zwischen den Zeichenbefehlen wird keine Zustandsinformation rückgehalten, mit Ausnahme für interne Zwischenspeicherinformation, weil jede Gestalt alle Information in sich einschließt, die notwendig ist, um diese Gestalt zu zeichnen, einschließlich Sichttor, Sichtvorrichtung, Farbe, Übertragungsart und Zeichnungsstil.The Designing procedure of QuickDraw GX can be to any Time to be called to draw a figure. The order of figures that are drawn on top of each other depends on the order in which they are drawn. Between the drawing commands if no status information is retained, except for internal caching information, because every shape has all the information in it includes, necessary to draw this figure, including vision gate, Visual device, color, transfer mode and drawing style.

Das Eschersystem unterscheidet sich bemerkenswert von QuickDraw und QuickDraw GX aufgrund der Natur der dreidimensionalen Aufbereitungsalgorithmen und der typischerweise größeren Datenvolumina, die erforderlich sind, um ein dreidimensionales Modell zu beschreiben.The Escher's system is remarkably different from QuickDraw and QuickDraw GX due to the nature of the three-dimensional rendering algorithms and the typically larger data volumes that necessary to describe a three-dimensional model.

Eschergestalten enthalten in sich nicht alle Informationen, die erforderlich ist, sie selbst zu zeichnen. Vielmehr unterhält Escher einen ”Zustand”, der zusätzliche Informationen darüber liefert, wie ein Gestalt aufzubereiten ist, sowie das ursprüngliche QuickDraw einen Zeichnungszustand für die Vordergrundfarbe am Graphikport aufrechterhält. Escher's Zustandsmechanismus erlaubt den Aufbau hierarchischer Modelle, die Information angeben, wie Farbe oder Zeichnungsstiel, die durch Gestalten an unteren Niveaus der Hierarchie mitgeschleppt werden. Der Mechanismus liefert gesteigerte Flexibilität bei der Anführung eines Modells, das in einer Szene mehreremale zu verwenden ist, jedoch mit variierenden Attributen, ohne die Geometrie neu zu spezifizieren. Escher unterscheidet sich von QuickDraw GX auch darin, daß die Zeichnungsfläche für die Aufbereitung bei Escher vor der Aufbereitung des Bildes spezifiziert wird durch Anhang an ein Sichtobjekt und nicht durch Anhang an jede Gestalt, wie es bei QuickDraw GX der Fall ist.Escher shapes do not contain all the information needed to draw them. Rather, Escher maintains a "state" that provides additional information about how a shape is to be rendered, as well as the original QuickDraw maintains a drawing state for the foreground color at the graphics port. Escher's state mechanism allows the construction of hierarchical models that specify information, such as color or drawing style, that are dragged by shapes at lower levels of the hierarchy. The mechanism provides increased flexibility in leading a model to be used multiple times in a scene, but with varying attributes, without re-specifying the geometry. Escher also differs from QuickDraw GX in that the drawing area for the up It is specified by Escher before preparation of the image by attachment to a visual object and not by attachment to any shape, as is the case with QuickDraw GX.

Escher liefert mehrere Datentypen für den Einschluß von Geometrie und Aussehen in einer Modellhierarchie. Die allgemeinen Datentypenklassen sind Geometrie ”Attributsatz”, Stil, Transformation und Gruppe. Es ist vorteilhaft, das Aussehen in mehrere Datentypen in dieser Art zu separieren wegen der typischen Komplexität von dreidimensionalen Modellen. Selbst einfache dreidimensionale Gestalten können hunderte oder tausende geometrischer Figuren erfordern, um ein dem Realismus gleichkommendes Bild zu erzeugen. Um eine realistisch aussehende Gestalt beliebiger Komplexität zu erzeugen, wie beispielsweise einen Raum in einem Haus, können hunderte und tausende oder Millionen geometrischer Gestalten erforderlich sein. Beim Umgang mit Modellen dieser Größenordnung ist es häufig vorteilhaft, eine einfache Erscheinungscharakteristik an einer großen Gruppe geometrischer Formen anzuwenden, um dadurch Speicherplatz zu sparen und den Aufbau und die Editierung eine solchen Modells zu vereinfachen. Die obigen Datentypen erleichtern diese Aufgabe.Escher returns several data types for the inclusion of Geometry and appearance in a model hierarchy. The general Data type classes are geometry "attribute set", style, Transformation and group. It is beneficial to look in several To separate data types in this way because of the typical complexity of three-dimensional Models. Even simple three-dimensional shapes can be hundreds or require thousands of geometric figures to a realism to create a matching image. To be a realistic looking Shape of any complexity to produce, such as a room in a house, can be hundreds and thousands or millions of geometrical shapes required be. When dealing with models of this size it is often beneficial a simple appearance characteristic of a large group geometric shapes to save space and to simplify the design and editing of such a model. The above data types facilitate this task.

Bei den QuickDraw GX Modellhierarchien werden Transformationsumsetzungen einer ”Bildgestalt” als mit jenen der Gestalten verkettet angesehen, die sie umfassen. Dieses bildet einen Bezug zur selben Gestalt mehr als einmal und verwendet Transformationsumsetzungen zur Bewegung oder Transformation der Gestalt, ohne ein zweite Kopie davon im Speicher zu haben. Eine solche Verkettung wird bei QuickDraw GX über einen Zustandsmechanismus erzielt, der eine Aufzeichnung der ”augenblicklichen Transfor mationsumsetzung” bewahrt, wenn ein Modellhierarchie durchquert wird. QuickDraw GX Bildhierarchien werden von oben nach unten, von links nach rechts durchquert. Wenn in der Hierarchie weiter unten befindliche Gestalten überquert werden, werden Transformationsumsetzungen mit der laufenden Transformationsumsetzung verkettet. Nachdem alle Gestalten innerhalb einer Bildgestalt gezeichnet worden sind, kehrt die Durchquerung zum vorangehenden Bild zurück, falls vorhanden, und nimmt die Durchquerung ihrer Gestalten wieder auf. Dieses wird ”Abwärtsdurchquerung” genannt. Bei der Rückkehr von einer Durchquerung wird die laufende Transformationsumsetzung auf das rückgestellt, was es war, bevor die Bildgestalt eingegeben wurde. Diesen Mechanismus kann man als einen Stapel von Umsetzungen auffassen, der während der Durchquerung gedrückt und gestoßen wird, Wenn die Grundbildgestalt fertiggezeichnet wird, ist die laufende Umsetzung NULL:
Escher liefert einen ähnlichen Durchquerungsmechanismus, obgleich wegen der gesteigerten Komplexität dreidimensionaler Modelle mehr als lediglich eine Transformationsumsetzung mitgeführt werden. Aussehen und Stile werden ebenfalls mitgeführt.
In the QuickDraw GX model hierarchies, transformations of a "figurative" are considered concatenated with those of the shapes that comprise them. This makes a reference to the same shape more than once and uses transformation transformations to move or transform the shape without having a second copy of it in memory. Such concatenation is achieved with QuickDraw GX via a state mechanism that preserves a record of "instant transformation transformation" as it traverses a model hierarchy. QuickDraw GX image hierarchies are traversed from top to bottom, left to right. When traversing shapes further down the hierarchy, transformation transformations are concatenated with the current transformation transformation. After all shapes have been drawn within a picture frame, the traverse returns to the previous frame, if any, and resumes traversing its shapes. This is called "downward traversal". On returning from a traversal, the current transformation transformation is reset to what it was before the imagery was entered. This mechanism can be thought of as a stack of conversions that is pressed and poked during traversal. When the primitive is completed, the current cast is NULL:
Escher provides a similar traversal mechanism, although because of the increased complexity of three-dimensional models, more than just a transformational transformation is carried. Appearances and styles are also included.

Während bei QuickDraw GX keine ”laufende Transformationsumsetzung” vorhanden ist, wenn das QuickDraw GX-System nicht ein Bild durchquert, ist bei Escher für ein Anwendungsprogramm möglich, den laufenden Zustand selbst draufzulegen und abzuheben. Tatsächlich können Anwendungsprogramme Eschergestalten in einer anwendungsspezifischen hierarchischen Datenstruktur aufrechterhalten, falls gewünscht, und über eine sorgfältige Folgesteuerung der Aufrufe von Escherprozeduren 202 eine Systemhierarchie simulieren. Dieses Merkmal ist extrem vorteilhaft für Anwendungsprogramme, die komplexe anwendungsspezifische hierarchische Datenstrukturen verwenden, wie beispielsweise Animationssysteme, oder beim Portieren eines existierenden Anwendungsprogramms, das bereits seine eigenen Datenstrukturen hat. Das bekannte PHIGS-System und andere Aufrechterhaltungsbetriebssysteme verlangen, daß das gesamte Modell in einer einzigen Hierarchie liegt, und GL behandelt jedes Objekt unabhängig. Ein Anwendungsprogramm kann den Zustand einstellen, eine Anzahl unabhängiger geometrischer Objekte zeichnen und dann das Eschersystem veranlassen, ein in der Eschersystem-Datenstruktur aufgebautes und gespeichertes Modell aufzubereiten, dann mehrere unabhängige geometrische Objekte zu zeichnen, usw..While QuickDraw GX does not have a "running transformation transformation" when the QuickDraw GX system is not traversing a picture, Escher allows an application program to put the current state on its own and take it off. In fact, application programs can maintain Escher shapes in an application-specific hierarchical data structure, if desired, and through careful sequencing of Escher procedure calls 202 simulate a system hierarchy. This feature is extremely advantageous for application programs that use complex application-specific hierarchical data structures, such as animation systems, or when porting an existing application program that already has its own data structures. The known PHIGS system and other maintenance operating systems require that the entire model be in a single hierarchy, and GL handles each object independently. An application program can set the state, draw a number of independent geometric objects, and then have the Escher system reprocess a model built and stored in the Escher system data structure, then draw several independent geometric objects, and so on.

8 ist eine graphische Darstellung einer einfachen Modellhierarchie, die durch das beispielhafte Anwendungsprogramm in Anhang A aufgebaut wird. Es enthält zwei Niveaus, das erste (Grund-)Niveau, daß durch die EtDisplayGroupObject genannte ”Gruppe” umschlossen wird, und das zweite, das durch die EtDisplayGroupObject genannte ”Untergruppe” umschlossen wird. Jedes EtDisplayGroupObject kann man sich als einen Knoten in der Hierarchie vorstellen. Jedem Knoten Stilobjekte, Geometrieobjekte, Transformationsobjekte und andere Gruppenobjekte (wie in 8) zugeordnet sein, sowie Schattiererobjekte und Attributsatzobjekte. 8th FIG. 12 is a graphical representation of a simple model hierarchy constructed by the exemplary application program in Appendix A. FIG. It contains two levels, the first (basic) level that is enclosed by the "group" called the EtDisplayGroupObject, and the second, which is enclosed by the "subgroup" called the EtDisplayGroupObject. Each EtDisplayGroupObject can be thought of as a node in the hierarchy. For each node, style objects, geometry objects, transformation objects, and other group objects (as in 8th ), as well as shader objects and attribute set objects.

Escher unterstützt zwei Arten von EtDisplayGroupObject, nämlich solche in der Unterklasse EtOrderedGroup und EtListGroup. Objekte, die an ein Beispiel in der EtListGroup-Klasse angehängt sind, haben keine Reihenfolge mit Ausnahme der Reihenfolge, in der sie zu der Gruppe hinzuaddiert wurden. Wenn während der Durchquerung Escher ein Listengruppenobjekt trifft, wird jedes Objekt in der Liste verarbeitet (”ausgeführt”) in der Folge, in der es ursprünglich zu der Gruppe hinzugefügt wurde. Bezugnehmend auf 8, sobald die Gruppe group während einer Durchquerung geöffnet wird, führt Escher backfacingStyle, dann polygon, line, dann transform, dann subGroup in dieser Folge aus, weil dieses die Folge war, mit der sie zu group hinzugefügt wurden. Die Änderungen im Aufbereitungszustand, die durch backfacingStyle verursacht sind, gelten somit auch bei polygon und line, während die Änderungen am Aufbereitungszustand, die durch transform verursacht sind, gelten nur für die Objekte in subGroup. Die Escher-API enthält Aufrufe, die es dem Anwendungsprogramm erlauben, Objekte zum Beginn der Liste, zum Ende der Liste oder zwischen bereits in der Liste befindliche Objekte hinzuzufügen.Escher supports two types of EtDisplayGroupObject, namely those in the subclasses EtOrderedGroup and EtListGroup. Objects attached to an example in the EtListGroup class have no order except for the order in which they were added to the group. If, during the traversal, Escher encounters a list group object, any object in the list is processed ("executed") in the sequence in which it was originally added to the group. Referring to 8th , as soon as the In this sequence, Escher runs backfacingStyle, then polygon, line, then transform, then subGroup in this episode, because this was the result with which they were added to group. The editing state changes caused by backfacingStyle are thus also applied to polygon and line, while the changes to the edit state caused by transform apply only to the objects in subGroup. The Escher API contains calls that allow the application program to add objects to the top of the list, to the bottom of the list, or to items already in the list.

Ein Gruppenobjekt der Unterklasse EtOrderedGroup ist ähnlich einem Listengruppenobjekt mit der Ausnahme, daß der Durchquerer das Objekt sortiert, das der Gruppe zugefügt ist, in Abhängigkeit vom Typ, bevor sie ausgeführt werden. Insbesondere werden Objekte in der folgenden Sequenz ausgeführt: Transformationsobjekte, Stilobjekte, Attributsatzobjekte, Schattierer, Geometrien und zusätzliche Gruppen.One Group object of subclass EtOrderedGroup is similar to one List group object except that the traverser is the object sorted that added to the group is, in dependence of the type before running become. In particular, objects are executed in the following sequence: transformation objects, Style objects, attribute set objects, shaders, geometries, and additional Groups.

Für beide Arten Gruppenobjekte wird, wenn eine Untergruppe geöffnet wird, der dann laufende Zustand des Aufbereiters mitgeschleppt. Objekte in der Untergruppe können jede Charakteristik des Zustands für nachfolgend ausgeführte Objekte in der Untergruppe (oder in Untergruppen der Untergruppe) ändern, bei der Rückkehr zur Stammgruppe wird der Zustand jedoch in jenen Zustand wieder hergestellt, der vor dem Eintreten des Durchquerers in die Untergruppe herrschte.For both Types group objects becomes when a subgroup is opened the then running condition of the conditioner entrained. objects in the subgroup can any characteristic of the state for subsequently executed objects in the subgroup (or in subgroups of the subgroup) the return however, the state becomes the parent group in that state made before entering the Durchquerers in the subgroup prevailed.

Gruppenobjekte haben auch einen ”Zustand”, der ihnen zugeordnet ist, obgleich dies nicht mit dem ”Zustand” des Durchquerers verwechselt werden darf. Der Zustand einer Gruppe ist lediglich eine Sammlung von Kennzeichen, die Aspekte definieren, wie die Gruppe zu behandeln ist. Die meisten der Kennzeichen sind für das Verständnis der vorliegenden Erfindung nicht wichtig, es kann jedoch hilfreich sein, eines dieser Kennzeichnen zu verstehen, nämlich ”in-line”. Bei Modellieranwendungen kann es manchmal nützlich sein, einen Satz von Materialien oder Stilen zusammen in ein Bündel zu gruppieren, auf das man in einem Modell mehrmals zurückgreifen kann. Wenn ein solches Bündel unter Verwendung normalen Auflegens und Abhebens eines Durchquererzustands oben beschrieben geschaffen wird, haben diese Objekte jedoch nicht den gewünschten Einfluß auf das Modell, weil die Gruppe den Zustand abhebt, nachdem er durch den Traverser ausgeführt ist. Dementsprechend kann das Anwendungsprogramm das ”in-line”-Kennzeichen des Gruppenobjekts setzen, um dadurch zu spezifizieren, daß Eintritt in die Gruppe und Austritt aus der Gruppe nicht dazu da sind, den Zustand des Durchquerers draufzulegen oder abzuheben. Die Escher-API liefert Prozeduraufrufe zum Einstellen, Löschen und Erhalten des laufenden Wertes dieses Kennzeichens.group objects also have a "state" that gives them although this is not confused with the "state" of the pass-through may be. The state of a group is just a collection of Indicators that define aspects of how to handle the group is. Most of the characteristics are for the understanding of the present invention not important, but it may be helpful to mark one of these to understand, namely "in-line". For modeling applications It can sometimes be useful Be a set of materials or styles together in a bundle Group, which is used in a model several times can. If such a bundle using normal hang-up and take-off of a traversal state however, these objects do not have the wished Influence on the model because the group picks up the condition after going through executed the truss is. Accordingly, the application program may have the "in-line" flag of the group object to thereby specify that entry in the group and leaving the group are not there, the Condition of the Durchquerers put on or take off. The Escher API provides procedure calls for setting, clearing and getting the current one Value of this mark.

A. DatenstrukturenA. Data Structures

Wie bei der Prozedur zum Aufbau einer Ansicht ist es hilfreich, gewisse Datenstrukturen zu beschreiben, bevor die Escherprozeduren beschrieben werden, die ein Anwendungsprogramm zum Aufbau eines Modells aufrufen kann.As In the procedure for building a view it is helpful to have certain Describe data structures before describing the Escher procedures that call an application program to build a model can.

In dem beispielhaften Anwendungsprogramm in Anhang A sind die Gruppen group und subGroup geordnete Anzeigegruppenobjekte. Sie haben einen Typ EtDisplayGroup, der in der Klassenhierarchie von 6 einen Klassenvorgänger von EtGroupObject, EtShapeObject, EtSharedObject und schließlich EtObject hat. Dementsprechend sind sie im Speicher mit Datenstrukturen wie in 9 gezeigt, repräsentiert. Insbesondere ist die geordnete Anzeigegruppenklassenverfahrenstabelle in einem Block von Speicher 902 enthalten, und die Beispielsdaten für group und subGroup sind in Blöcken 904 bzw. 906 enthalten. Die geordnete Anzeigegruppenklasse 902 beginnt mit dem Bereich 908, der Zeiger auf Objektverfahren enthält, ähnlich dem Bereich 504 in 5. Dem Bereich 908 folgt Bereich 910, der Zeiger auf alle Verfahren enthält, die für geteilte Objekt spezifisch sind (in der vorliegenden Ausführungsform gibt es keine). Diesem folgt ein Bereich 912, der Zeiger auf alle Gestaltobjektverfahren enthält, und diesem folgt ein Bereich 914, der Zeiger auf die Verfahren enthält, die für Gruppenobjekte spezifisch sind. Die letztgenannte Datenstruktur, EtGroutClass, hat die folgende Typdefinition:In the example application program in Appendix A, the groups group and subGroup are ordered display group objects. You have a type EtDisplayGroup that is in the class hierarchy of 6 has a class predecessor of EtGroupObject, EtShapeObject, EtSharedObject, and finally EtObject. Accordingly, they are in memory with data structures like in 9 shown, represented. In particular, the ordered display group class method table is in a block of memory 902 and sample data for group and subGroup are in blocks 904 respectively. 906 contain. The ordered display group class 902 starts with the area 908 that contains pointers to object methods, similar to the scope 504 in 5 , The area 908 follows range 910 which contains pointers to all methods specific to shared objects (none exist in the present embodiment). This is followed by an area 912 , which contains pointers to all gestalt object methods, and this is followed by an area 914 containing pointers to the procedures that are specific to group objects. The latter data structure, EtGroutClass, has the following type definition:

Figure 00420001
Figure 00420001

Wie man sehen kann, sind Eintragungen für Zeiger auf verschiedene Verfahren enthalten, unter anderem ein Verfahren zum Hinzufügen eines Objekts zum Ende der Gruppe (add), und Verfahren zum Hinzufügen eines Objekts an einer speziellen Stelle innerhalb der Liste von Objekten, die bereits einer Gruppe zugewiesen sind (addBefore und addAfter) Nach Bereich 914 enthält die geordnete Anzeigengruppenklassenverfahrenstabelle 902 Zeiger auf die Verfahren, die für Anzeigengruppen in einem Bereich 916 spezifisch sind. Diese Datenstruktur EtDisplayGroupClass ist wie folgt definiert:

Figure 00420002
As can be seen, entries for pointers to various methods are included, including a method of adding an object to the end of the group (add), and methods of adding an object to a specific location within the list of objects already in a group are assigned (addBefore and addAfter) By area 914 Contains the ordered adgroup class procedure table 902 Pointer to the procedures for ad groups in one area 916 are specific. This data structure EtDisplayGroupClass is defined as follows:
Figure 00420002

Die Verfahren in der EtDisplayGroupClass sind für das Verständnis der Erfindung nicht wesentlich, es sei jedoch angemerkt, daß die Klasse keine Zeige auf irgendwelche Zeichnungsverfahren enthält. Die Ziffer erläutert werden diese Verfahren in einem Sichtobjekt statt in einem Gruppenobjekt identifiziert, so daß sie durch einen Aufbereiter unwirksam gemacht werden können. Jedes Zeichnungsverfahren, das in der Klasse für ein Objekt identifiziert wird, würde Teil des aufzubauenden Modells werden, würde mit dem Modell selbst verwebt werden und wäre schwierig zu ändern, wenn ein Anwendungsprogramm wünscht, das Modell unter Verwendung eines anderen Aufbereiters aufzubereiten. Eine solche Anordnung würde es auch schwierig machen, mehr als einen Aufbereiter gleichzeitig aktiv zu machen, wie zuvor beschrieben wurde.The Methods in the EtDisplayGroupClass are not essential to the understanding of the invention, it should be noted, however, that the Class no pointing to any drawing method contains. The Digit explained These methods are in a view object instead of a group object identified so that they through a conditioner can be made ineffective. Every drawing process, that in the class for an object would be identified Become part of the model to be built, would be interwoven with the model itself be and would be difficult to change if an application program wishes to process the model using another conditioner. Such an arrangement would It also makes it difficult to have more than one dresser at a time to activate, as previously described.

Nochmals Bezug nehmend auf die Verfahrenstabelle 902, wie es typisch für die Gestaltung des Eschersystems in bezug auf Blattklassen in der Klassenhierarchie (6) ist, enthält die Tabelle keine Verfahren, die spezifisch für geordnete Anzeigegruppen sind.Again referring to the process table 902 as typical of the design of the Escher system with respect to leaf classes in the class hierarchy ( 6 ), the table does not contain any procedures that are specific to ordered display groups.

Die Datenstruktur der Beispielsdaten für subGroup ist dieselbe wie jene für group, so daß nur die Datenstruktur für group beschrieben wird. Wie bei der Datenstruktur für den Beispielsdatenblock 512 in 5 beginnt Block 904 mit Objektdaten im Bereich 920, speziell ein Zeiger auf den geordneten Anzeigegruppenklassenblock 902. Diesem folgt ein Bereich 922, der die geteilten Objektdaten enthält, speziell eine Referenzzählung. Diesem folgt ein Bereich 924, der die Gestaltobjektdaten (die auch sehr kurz sind) enthält. Dem Gestaltobjektdatenbereich 924 folgt ein Bereich 926, der die Objektdaten für Gruppenobjekte enthält, von denen im vorliegenden Beispiel keine vorhanden sind.The data structure of the example data for subGroup is the same as that for group, so only the data structure for group is described. As with the data structure for the example data block 512 in 5 starts block 904 with object data in the area 920 , especially a pointer to the ordered display group class block 902 , This is followed by an area 922 containing the shared object data, especially a reference count. This is followed by an area 924 which contains the Gestalt object data (which are also very short). The gestalt object data area 924 follows an area 926 that contains the object data for group objects, none of which are present in this example.

Dem Bereich 926 folgt ein Bereich 928, der die Beispielsdaten für Anzeigegruppenobjekte enthält. Solche Daten enthalten nur die ”Zustands”-Kennzeichen, die oben beschrieben sind. Dem Bereich 928 folgt ein Bereich 930, der die Daten enthält, die spezifisch für ein Beispiel eines geordneten Anzeigegruppenobjektes sind. Diese Daten haben ein Format, das wie folgt definiert ist, wobei EtDLList eine Typdefinition für eine doppeltverbundene Liste ist:

Figure 00440001
The area 926 follows an area 928 containing the sample data for display group objects. Such data includes only the "state" flags described above. The area 928 follows an area 930 containing the data specific to an example of an ordered display group object. This data has a format defined as follows, where EtDLList is a type definition for a double-linked list:
Figure 00440001

Wie man sehen kann enthält der Bereich 930 Zeiger auf sechs doppeltverbundene Listen, einen für jede der Objekttypen, die zu einem Anzeigengruppenobjekt hinzugefügt werden können. Zur Vollständigkeit sei angemerkt, daß wenn group eine Listenanzeigegruppe anstelle einer geordneten Anzeigegruppe ist, der einzige Unterschied die Struktur des Bereichs 930 ist. Insbesondere würde der Bereich 930, der eine als EtListDisplayGroupPrivate definierte Struktur hätte, nur ein Zeiger auf eine einzige doppeltverbundene Liste für all die Objekte haben, die zur Anzeigegruppe hinzugefügt sind.As you can see contains the area 930 Pointer to six double-linked lists, one for each of the object types that can be added to an ad group object. For completeness, note that if group is a list display group instead of an ordered display group, the only difference is the structure of the area 930 is. In particular, the area would be 930 that had a structure defined as EtListDisplayGroupPrivate, have only one pointer to a single double-linked list for all the objects added to the display group.

Zusätzlich zur Struktur EtListDisplayGroupObjekt verwendet das beispielhafte Anwendungsprogramm in Anhang A auf eine Datenstruktur EtStyleObject, eine Datenstruktur EtGeometryOject und eine Datenstruktur EtTransformObject. Diese Strukturen beziehen sich sämtlich auf Klassen von Objekten, die wie EtGroupObject von der EtShapeObject-Klasse unterklassiert sind (siehe 6). Wie bei anderen hier beschriebenen Objekten beziehen sie sich jeweils auf eine Verfahrenstabelle 902 9 und enthalten private Beispielsdaten, wie Bereich 904 oder 906 in 9. Diese drei Klassen sind jeweils unterklassiert aus derselben Hauptklasse (EtShapeObject), wie EtGroupObject ist (siehe 6), und deshalb sind die ersten drei Schichten sowohl der Klassendaten als auch der Beispielsdaten von der gleichen Struktur, wie in 9 gezeigt. die Blattklasse (BackfacingStyle), die in dem Beispielprogramm in der EtStyleObject Klasse augenblicklich verwendet wird, ist eine Unterklasse der EtStyleObject, so daß die vierten und letzten Schichten der Klassenverfahren für dieses Objekt Zeiger auf die Verfahren enthalten, die spezifisch für Stilobjekte sind. Die vierte Schicht der Beispielsdaten enthalten private Daten, die für alle Stilobjekte, sofern vorhanden, geeignet sind, und die fünften und letzten Schichten enthalten Daten, die für rückwärtsgewandte Stilobjekte geeignet sind.In addition to the EtListDisplayGroupObject structure, the sample application program in Appendix A uses an EtStyleObject data structure, an EtGeometryOject data structure, and an EtTransformObject data structure. These structures all refer to classes of objects that, like EtGroupObject, are under-classed by the EtShapeObject class (see 6 ). As with other objects described here, they each refer to a procedure table 902 9 and contain private sample data, such as area 904 or 906 in 9 , These three classes are each subclassed from the same main class (EtShapeObject) as EtGroupObject (see 6 ), and therefore, the first three layers of both the class data and the example data are of the same structure as in FIG 9 shown. The leaf class (BackfacingStyle) currently used in the example program in the EtStyleObject class is a subclass of the EtStyleObject, so the fourth and last layers of class methods for that object contain pointers to the methods specific to style objects. The fourth layer of sample data contains private data suitable for all style objects, if any, and the fifth and last layers contain data suitable for backward facing style objects.

In gleicher Weise ist die Blattklasse (translate), die wirklich im Beispielprogramm in der Klasse EtTransformObject verwendet wird, eine Unterklasse der Klasse EtTransformObject (siehe 6), daß die vierten und letzten Schichten der Klassenverfahren für das Transformationsobjekt Zeigerverfahren enthalten, die für Transformationsobjekte spezifisch sind. Die vierte Schicht der Beispielsdaten für das Transformationsobjekt enthält Daten, die für Transformationsobjekte spezifisch sind, die fünften und letzten Schichten enthalten Daten, die für Übersetzungstransformationsobjekte spezifisch sind.Similarly, the translate class that is really used in the sample program in the EtTransformObject class is a subclass of the EtTransformObject class (see 6 ) that the fourth and last layers of the class methods for the transformation object include pointer methods that are specific to transformation objects. The fourth layer of the example data for the transformation object contains data specific to transformation objects, the fifth and last layers contain data specific to translation transformation objects.

Das Beispielprogramm erzeugt drei Objekte (polygon, line, torus), die Geornetrieobjekte sind, und alle von ihnen sind in Blattklassen, Unterklassen der EtGroupObject sind (6). Somit enthalten die vierten und fünften Schichten der Klassenverfahrenstabelle für jedes dieser Objekte Zeiger auf Verfahren, die spezifisch für Geometrieobjekte sind. Die vierte Schicht der Beispielsdaten für jedes dieser Objekte enthält Daten, die für jedes Geometrieobjekt spezifisch sind, und die fünften und letzten Schichten der Beispielsdaten für jede dieser Objekte enthalten Daten, die für Polygon-, Linien- bzw. Torusobjekte spezifisch sind.The sample program creates three objects (polygon, line, torus) that are geor- omy objects, and all of them are in leaf classes, subclasses of the EtGroupObject ( 6 ). Thus, the fourth and fifth layers of the class method table for each of these objects contain pointers to methods that are specific to geometry objects. The fourth layer of example data for each of these objects contains data specific to each geometry object, and the fifth and last layers of example data for each of these objects contain data specific to polygon, line, and torus objects, respectively.

Während bei Escher Attributsätze (die Attribute wie diffuse Farbe enthalten) Oberflächenerscheinungscharakeristika enthalten, weisen Stile einen Aufbereiter an, wie er eine geometrische Gestalt zeichnen soll. Beispielsweise kann ein Polygon als eine vollständig ausgefüllte Gestalt aufbereitet werden, oder nur mit seinen Rändern. Ein weiteres Beispiel ist, daß Oberflächen sanft oder mit einem facerttierten Aussehen aufbereitet werden können. Ein weiteres Beispiel, das durch ein rückwärtsgewandtes Stilobjekt (Unterklasse von EtStyleObject) angegeben ist, bestimmt, ob Gestalten, die von der Kamera wegweisen, anzuzeigen sind, oder nicht. EcBackfacingStyle_RemoveBackfacing, die Charakteristik, die im Beispielsprogramm in Anhang A verwendet wird, gibt an, daß Gestalten, die von der Kamera wegweisen, nicht gezeichnet werden. Die privaten Daten für ein rückwärtsweisendes Stilobjekt enthält ein Langwort, das eine Konstante enthält, die angibt, ob sowohl nach vorn als auch nach hinten weisende Oberflächen zu zeichnen sind, ob nach hinten weisende Oberflächen zu entfernen sind oder ob nach hinten weisende Oberflächen, die keine zweiseitigen Attribute haben, mit ihren normalen getippt werden sollen, so daß sie stets gegen die Kamera weisen. Ein Anwendungsprogramm spezifiziert Stilcharakteristika in einem Modell durch Erzeugen eines geeigneten Stilobjektes und durch Addieren desselben an einer gewünschten Position in einem Gruppenobjekt des Modells.While at Escher attribute sets (which contain attributes such as diffuse color) surface appearance characteristics Styles include a conditioner, such as a geometric one To draw shape. For example, a polygon can be used as a Completely completed Shape, or only with its edges. One Another example is that surfaces are gentle or with a faceted appearance. One another example, which is a backward-looking style object (subclass of EtStyleObject) determines whether shapes created by pointing the camera away, displaying it or not. EcBackfacingStyle_RemoveBackfacing, the characteristic used in the example program in Appendix A. becomes, indicates that shapes, which point away from the camera, are not drawn. The private data for a backward-looking Contains style object a longword that contains a constant that indicates whether both front as well as rear facing surfaces are to draw, whether after rear facing surfaces are to be removed or whether surfaces facing the back, the do not have two-sided attributes, be typed with their normal ones should, so that they always pointing against the camera. An application program specified Style characteristics in a model by creating a suitable one Style object and adding it to a desired one Position in a group object of the model.

Für Geometrieobjekte enthalten die privaten Daten in der letzten Schicht der Beispielsdaten Information, die notwendig ist, um eine spezielle Geometrie zu beschreiben. Beispielsweise spezifizieren private Daten in der letzten Schicht eines Polygonobjekts die Anzahl der Ecken, die Ecken und gewisse Attribute, die hier nicht relevant sind. Die privaten Daten in der letzten Schicht eines Linienobjekts enthalten die Stellen der zwei Endpunkte der Linie sowie einige Attributdaten, und die privaten Daten in der letzten Schicht eines Torusobjekts enthalten einen Ursprung, eine Orientierung, einen Hauptradius und einen Nebenradius sowie einige Attributdaten.For geometry objects contain the private data in the last layer of sample data Information necessary to describe a specific geometry. For example, private data specifies in the last layer of a polygon object, the number of corners, the corners, and certain Attributes that are not relevant here. The private data in the last layer of a line object contain the locations of the two endpoints the line as well as some attribute data, and the private data in the last layer of a torus object contain an origin, an orientation, a major radius and a minor radius as well some attribute data.

Ein Transformationsobjekt ermöglicht es dem Koordinatensystem, daß geometrische Gestalten enthält, geändert zu werden, so daß es möglich wird, Objekte im Raum anzuordnen und zu orientieren. Transformationen sind nützlich, die geometrische Darstellung von Objekten nicht ändern (die Ecken oder andere Daten, die die Gestalt beschreiben), vielmehr werden sie als Matrixen bei der Aufbereitung angewendet und ”Bewegen” ein Objekt vorübergehend im Raum. Dieses ermöglicht, das auf ein einzelnes Objekt mehrfach mit unterschiedlichen Transformationen in einem Modell rückgegriffen werden kann, was die Möglichkeit bietet, ein Objekt an vielen verschiedenen Stellen innerhalb einer Szene anzuordnen. Ein Anwendungsprogramm spezifiziert Transformation durch Erzeugen eines geeigneten Transformationsobjekts aus einer Unterklasse der Klasse EtTransformObject (6) und durch Hinzufügen derselben an einer geeigneten Stelle in einer geeigneten Gruppe in einem Modell. Eine durch ein Anwendungsprogramm spezifizierte Transformation bleibt in der angegebenen Form bis zum Zeitpunkt der Aufbereitung erhalten, in welchem Punkt Escher die Transformation in eine vorübergehende Matrix konvertiert, die auf nachfolgende Objekte der Gruppe angewendet wird. Matrixen werden vor-multipliziert zu Vektoren eines Objekts. Escher-Transformationen vor-multiplizieren die laufende Transformationsmatrix; deshalb spezifizieren Anwendungsprogramme Transformationen, die in umgekehrter Reihenfolge zu verketten sind. Dies befindet sich in Übereinstimmung mit der Anwendung von Matrixen in einer Hierarchie. Das heißt, Matrixe, die am Kopf der Hierarchie spezifiziert sind, werden zuletzt angewendet, und Matrixen, die gerade vor einem Objekt spezifiziert sind, werden zuerst angewendet.A transform object allows the coordinate system containing geometric shapes to be changed so that it becomes possible to arrange and orient objects in space. Transfor mations are useful, do not change the geometric representation of objects (the corners or other data describing the shape), rather they are applied as matrices during rendering and "move" an object temporarily in space. This allows for a single object to be accessed multiple times with different transformations in a model, providing the ability to place an object at many different locations within a scene. An application program specifies transformation by generating a suitable transformation object from a subclass of the class EtTransformObject ( 6 ) and by adding it at a suitable location in a suitable group in a model. A transformation specified by an application program is maintained in the specified form until the time of rendering, at which point Escher converts the transformation to a temporary matrix that is applied to subsequent objects of the group. Matrixes are pre-multiplied to vectors of an object. Escher transforms pre-multiply the current transformation matrix; therefore, application programs specify transforms to be concatenated in reverse order. This is consistent with the application of matrices in a hierarchy. That is, matrices specified at the top of the hierarchy are applied last, and matrices specified just before an object are applied first.

wendet, und Matrixen, die gerade vor einem Objekt spezifiziert sind, werden zuerst angewendet.applies, and matrices that are just specified in front of an object applied first.

Escher unterstützt mehrere unterschiedliche Arten von Transformationen, von denen jede viel Escher durch Verwendung eines Objekts einer entsprechenden Unterklasse von EtTransformObject spezifiziert ist. Drei solcher Unterklasse sind in 6 dargestellt (Rotate, Scale und Translate). Die Escher-API liefert Prozeduren zum Erzeugen und Anordnen von Transformationsobjekten, zum Zeichnen derselben in Echtzeit, Einstellen ihres Inhalts auf neue Daten, erlangen der privaten Daten eines Transformationsobjektes, Einschreiben eines Transformationsobjekts in ein Dokument, usw. Die privaten Daten in der untersten Schicht von Beispielsdaten für ein Übersetzungstransformationsobjekt, das die Blattklasse ist, die im Beispielprogramm in Anhang A verwendet wird, spezifiziert die x-, y- und z-Koordinaten der Übersetzung.Escher supports several different types of transformations, each of which is much Escher specified by using an object of a corresponding subclass of EtTransformObject. Three such subclass are in 6 represented (Rotate, Scale and Translate). The Escher API provides procedures for creating and arranging transformation objects, drawing them in real time, setting their contents to new data, obtaining the private data of a transformation object, writing a transformation object to a document, etc. The private data in the lowest layer of Example data for a translation transformation object, which is the blade class used in the example program in Appendix A, specifies the x, y, and z coordinates of the translation.

B. ProzedurenB. Procedures

1. ErOrderedDisplyGroup_New()1. ErOrderedDisplyGroup_New ()

Bezugnehmend auf Anhang A und 8 beginnt das beispielhafte Anwendungsprogramm den Aufbau des Modells der Gruppe 802, indem zuerst das neugeordnete Gruppenobjekt group unter Verwendung der Prozedur ErOrderedDisplayGroup_New() geschaffen wird. Escherobjekterschaffungsmechanismus ist ein rekursiver Mechanismus, der allgemein in dem Flußdiagramm von 10 dargestellt ist. Es sei angemerkt, daß die Klassenverfahrenstabelle für die geordnete Anzeigegruppenklasse während der Initialisierung nach Registrierung der geordneten Anzeigegruppenklasse geschaffen wurde, so daß nur ein Block von Beispielsdaten im neuen Objektmechanismus erschaffen und initialisiert werden muß.Referring to Annexes A and 8th The example application program starts building the model of the group 802 by first creating the reordered group group object using the ErOrderedDisplayGroup_New () procedure. Escherobject creation mechanism is a recursive mechanism generally used in the flowchart of FIG 10 is shown. It should be noted that the class method table for the ordered display group class was created during initialization after registration of the ordered display group class, so that only one block of example data must be created and initialized in the new object mechanism.

Bezugnehmend auf 10 ruft zunächst im Schritt 1002 die ”Neu”-Prozedur der Blattklasse seine Stammklasse ”Neu”-Prozedur mit: (a) die statische Variable, die, wenn die Blattklasse registriert war, weist auf das obere Ende der Verfahrenstabelle jener Blattklasse, und (b) die Größe der Privatdatenstruktur der Blattklasse. In einem Schritt 1004 ruft dann die ”Neu”-Prozedur jeder höheren Klasse die ”Neu”-Prozedur seiner entspre chenden Stammklasse auf mit: (a) der Objektklassenzeiger geht darauf über, und (b) die Größe, die für alle absteigenden Klassen soweit benötigt wird, plus die Größe, die für die private Datenstruktur der augenblicklichen Klasse benötigt wird. In einem Schritt 1006 führt die ”Neu”-Prozedur letzten Stammklasse (EiObject_New()) folgendes aus: (a) weist Speicherraum für die privaten Datenstrukturen zu, die für seine eigenen Privatdaten benötigt werden plus die Privatdaten für alle absteigenden Klassen. dieser Raum enthält dann den gesamten Block von Beispielsdaten für das neu geschaffene Objekt. Dann (b) initialisiert sie ihre eigene Privatdatenstruktur (durch Einschreiben des auf sie übergegangenen Objektklassenzeigers in das obere Ende des neu zugewiesenen Speicherblocks), und (c) kehrt zu seinem Aufrufer zurück (das die ”Neu”-Prozedur der nächstniedrigen Klasse ist), wobei ein Zeiger auf den neu zugewiesenen Speicherblock rückgeführt wird. In einem Schritt 1008 führt dann die ”Neu”-Prozedur der niedrigeren Klasse aus: (a) ruft ihre eigene Zugreifprozedur auf, um einen Zeiger auf die eigene private Datenstruktur der laufenden Klasse innerhalb des neu zugewiesenen Beispielsdatenblocks zu erhalten; (b) Initialisiert die eigene Privatdatenstruktur; und (c) kehrt zu ihrem Aufrufer zurück (der die ”Neu”-Prozedur der nächstniedrigeren Klasse ist), wobei ein Zeiger auf den neu zugewiesenen Speicherblock rückgeführt wird. Die ”Neu”-Prozedur der Blattklasse führt dasselbe aus, mit der Ausnahme, daß der Aufrufer typischerweise das Anwendungsprogramm anstelle einer ”Neu”-Prozedur einer Unterklasse ist.Referring to 10 Call first in the step 1002 the "new" procedure of the leaf class its parent class "new" procedure with: (a) the static variable which, if the leaf class was registered, points to the top of the process table of that leaf class, and (b) the size of the private data structure the leaf class. In one step 1004 then the "new" procedure of each higher class calls the "new" procedure of its corresponding parent class: (a) the object class pointer passes over it, and (b) the size needed for all descending classes, plus the size needed for the private data structure of the current class. In one step 1006 executes the "new" procedure of last parent class (EiObject_New ()): (a) allocates memory space for the private data structures needed for its own private data plus the private data for all descending classes. this space then contains the entire block of sample data for the newly created object. Then (b) it initializes its own private data structure (by writing the object class pointer passed to it into the top of the newly allocated memory block), and (c) returns to its caller (which is the next-class "new" procedure), wherein a pointer is returned to the newly allocated memory block. In one step 1008 then executes the "new" procedure of the lower class: (a) calls its own access procedure to get a pointer to its own private data structure of the current class within the newly allocated example data block; (b) Initializes your own private data structure; and (c) returns to its caller (which is the next lower class "new" procedure), returning a pointer to the newly allocated memory block. The "new" procedure of the leaf class does the same, with the exception that the caller is typically the application program instead of a "new" procedure of a subclass.

Einige wenige Beispiele von Escher's ”Neu”-Prozeduren zeigen besser, wie dieses erreicht wird. Die ”Neu”-Prozedur für ein geordnetes Anzeigegruppenobjekt, die die durch das Anwendungsprogramm aufgerufene Routine ist, hat folgendes Aussehen:

Figure 00490001
A few examples of Escher's "new" procedures show better how this is achieved. The "new" procedure for an ordered display group object, which is the routine called by the application program, looks like this:
Figure 00490001

Wie man sehen kann, ruft diese Routine zunächst die ”Neu”-Prozedur ihrer Stammklasse auf EiDisplayGroup_New() mit dem Zeiger auf die geordneten Anzeigegruppenklassenverfahrenstabellen EgOrderedDisplayGroupClass und die Größe der privaten Datenstruktur EtOrderDisplayGroupPrivate, die in der nächsten Schicht der Beispielsdaten für das gerade geschaffene Objekt benötigt werden. Wenn diese Prozedur rückkehrt, ist der Block von Beispielsdaten zugeordnet worden und sind höhere Niveaus initialisiert worden. Nach einer gewissen Fehlerprüfung erhält die Prozedur EiDisplayGroup_New() einen Zeiger (ordered) auf die geordnete Anzeigegruppenprivatdatenstruktur des zugewiesenen Blocks und initialisiert alle der doppeltverbundenen Listen auf NULL. Die Prozedur kehrt dann zum Anwendungsprogramm zurück, wobei der Zeiger auf den neugeschaffenen Beispielsdatenblock rückgeführt wird.As As you can see, this routine first calls the "new" procedure of its parent class on EiDisplayGroup_New () with the pointer to the ordered display group class procedure tables EgOrderedDisplayGroupClass and the size of the private data structure EtOrderDisplayGroupPrivate, which in the next layer of sample data for the just created object needed become. When this procedure returns, the block has been allocated by example data and are higher levels initialized. After a certain error check, the procedure receives EiDisplayGroup_New () a pointer (ordered) to the ordered display group private data structure of the assigned block and initializes all of the double-connected ones Lists to zero. The procedure then returns to the application program back, wherein the pointer is returned to the newly created sample data block.

Die ”Neu”-Prozedur der Anzeigegruppenklasse ist wie folgt:

Figure 00500001
The "new" procedure of the display group class is as follows:
Figure 00500001

Wie man sehen kann, ruft diese Prozedur zunächst die ”Neu”-Prozedur EiGroup_New ihrer eigenen Stammklasse auf, setzt den Zeiger auf die Objektklasse und eine Datengröße, die durch die Größe von Privatdatengröße gegeben ist, die von der Stammklasse benötigt wird, plus die Speicherraumgröße, die für die Privatdaten der Objekte in der Gruppenklasse (EtDisplayGroupPrivate) benötigt wird. Nach Fehlerprüfung setzt EiDisplayGroup_New() einen Zeiger groupPrivate auf die Privatdaten des Gruppenobjekts und initialisiert ihn. Die Prozedur kehrt dann zu ihrem Aufrufer EiDisplayGroup_New() zurück.As As you can see, this procedure first calls the "new" procedure EiGroup_New of it own root class, sets the pointer to the object class and a data size that given by the size of private data size is needed by the parent class will, plus the storage space size that for the Private data of the objects in the group class (EtDisplayGroupPrivate) needed becomes. After error checking EiDisplayGroup_New () places a pointer groupPrivate on the private data of the group object and initializes it. The procedure then returns back to its caller EiDisplayGroup_New ().

Die ”Neu”-Prozedur in der Klasse EtGroupObject ist wie folgt:

Figure 00510001
The "new" procedure in the EtGroupObject class is as follows:
Figure 00510001

Die obige Prozedur folgt dem selben Plan wie die ”Neu”-Prozeduren für die Anzeigegruppenklasse und die geordneten Anzeigegruppenklasse, mit dem Unterschied, daß keine privaten Daten speziell für die Klasse EiGroup_New() vorhanden sind. Somit initialisiert die Prozedur EiGroup_New() nicht irgendwelche privaten Daten, und die Datengröße, die sie zur ”Neu”-Prozedur der Stammklasse EiShapeObject übergibt, ist dieselbe wie die Datengröße, die von der ”Neu”-Prozedur der Anzeigegruppenklasse an EiGroup_New() übergeben wird.The The above procedure follows the same plan as the "new" procedures for the display group class and the ordered display group class, with the difference that none private data specifically for the class EiGroup_New () exists. Thus, the initializes Procedure EiGroup_New () does not have any private data, and the Data size, the to the "new" procedure passes the parent class EiShapeObject, is the same as the data size, the from the "new" procedure the display group class is passed to EiGroup_New ().

Die Prozeduren fahren fort bis zur ”Neu”-Prozedur der EtObject Klasse. Man erkennt, daß Escher denselben rekursiven Mechanismus zur Erschaffung von Objekten in jeder Klasse der Klassenhierarchie verwendet. Darüber hinaus erkennt man, daß Escher ähnliche rekursive Techniken verwendet, um die Funktionen einer großen Anzahl von Escher-API Aufrufen auszuführen.The procedures continue until the "new" procedure of the EtObject class. It can be seen that Escher the same recursive mechanism used to create objects in each class of the class hierarchy. In addition, it can be seen that Escher uses similar recursive techniques to perform the functions of a large number of Escher API calls.

2. ErGroup AddObject()2. ErGroup AddObject ()

Nochmals Bezug nehmend auf das beispielhafte Anwendungsprogramm in Anhang A, nach der Erschaffung eines neu geordneten Anzeigegruppenobjekts group erzeugt das Programm ein rückwärtsweisendes Stilobjekt und fügt es der Gruppe hinzu. Dieser Teil des Beispielsprogramms ist nicht wichtig für das Verständnis der Erfindung, ist vielmehr lediglich zur Verdeutlichung eingeschlossen, daß ein solches Objekt einer Gruppe hinzugefügt werden kann.again Referring to the exemplary application program in Appendix A, after the creation of a reordered display group object group, the program generates a backward pointing Style object and adds add it to the group. This part of the sample program is not important for the understanding of the invention, rather, is included for purposes of illustration only, the existence such object can be added to a group.

Als nächstes erzeugt das Beispielprogramm ein Polygonobjekt polygon unter Verwendung der Escherprozedur ErPolygon_New(). Diese Prozedur läuft ähnlich den ”Neu”-Prozeduren ab, die oben unter Bezugnahme auf die Erzeugung eines geordneten Anzeigenobjekts erläutert worden sind, und braucht nicht nochmals beschrieben zu werden. Das Beispielsprogramm fügt dann polygon zu group hinzu unter Verwendung des Escher-API-Aufrufs ErGroup_AddObject(). Letztere Prozedur ist wie folgt:

Figure 00520001
Next, the example program creates a polygon polygon object using the Escher procedure ErPolygon_New (). This procedure is similar to the "new" procedures discussed above with respect to the creation of an ordered display object and need not be described again. The sample program then adds polygon to group using the Escher API call ErGroup_AddObject (). The latter procedure is as follows:
Figure 00520001

Wie man sehen kann, empfängt diese Prozedur als Argumente das der Gruppe hinzufügende Objekt und die Gruppe, dem dieses hinzuzufügen ist. Nach einigen Buchhaltungsoperationen ruft die Prozedur EiGroup_AcceptObject() auf, eine Escher-Prozedur zur Ermittlung, ob das angegebene Objekt von einer Art ist, die zu der angegebenen Art Gruppenobjekt hinzugefügt werden kann. Wenn beispielsweise das angegebene Objekt ein Lichtobjekt ist, kann es nicht zu einer geordneten Anzeigegruppe hinzugefügt werden. Im vorliegenden Fall ist das Ergebnis gültig, da ein Polygon zu einem Objekt EtOrderDisplayGroup zugefügt werden kann.As you can see, receive this procedure takes as arguments the object to be added to the group and the group to add this is. After some accounting operations, the procedure calls EiGroup_AcceptObject () On, an Escher procedure to determine if the specified object is of a type that is added to the specified group object type can. For example, if the specified object is a light object is, it can not be added to an ordered display group. In the present case, the result is valid because a polygon becomes a Object added to EtOrderDisplayGroup can be.

Prozedur enthält dann einen Zeiger groupClass auf die EtGroupObject Klassenverfahrenstabelle für das spezielle geordnete Anzeigengruppenobjekt durch Aufruf der Prozedur ”erhalte Unterklassenverfahren” der Stammklasse EtShapeObject von EtGroupObject. Die Prozedur ruft dann die Prozedur ”Addiererobjekt” auf, auf die in dieser Verfahrenstabelle gezeigt wird, und kehrt dann zum Anwendungsprogramm zurück.procedure contains then a pointer groupClass to the EtGroupObject class procedure table for the special ordered ad group object by calling the procedure "get Subclass method "the Root class EtShapeObject from EtGroupObject. The procedure then calls the procedure "adder object", on which is shown in this process table, and then returns to Application program back.

Der Zeiger in der Verfahrenstabelle auf die Prozedur ”Addierobjekt” für die spezielle Gruppenobjekt wurde dort während der Initialisierung eingeschrieben, als die Klasse EtOrderedGroup sich selbst registrierte. Die angegebene Prozedur ”Addierobjekt” ist wie folgt:

Figure 00530001
The pointer in the procedure table to the "add object" procedure for the particular group object was written there during initialization when the class EtOrderedGroup registered itself. The specified procedure "Add object" is as follows:
Figure 00530001

Bezugnehmend auf diese Prozedur kann man sehen, daß sie zunächst die ”erhalte” Prozedur der geordneten Anzeigengruppenklasse verwendet, um einen Zeiger groupData auf die Privatdaten des spezifizierten geordneten Anzeigegruppenobjekts zu erhalten. Die Prozedur erhält dann die Art des zu addierenden spezifizierten Objekts (das ein Geometrieobjekt ist), und nach einer gewissen Fehlerprüfung ruft sie EiOrdererdDisplayGroup_GetObjectList() auf, um einen Zeiger theList auf die spezielle doppeltverbundene Liste des geordneten Anzeigegruppenobjekts für Geometrieobjekte zu erhalten. Die Prozedur ruft EiGroupPosition_New() auf, um eine neue Liste ”Position”-Objekt zu schaffen, und ruft EiDLList_InsertNodeLast() auf, um das neue ”Position”-Objekt am Ende der doppeltverbundenen List einzufügen. Die Prozedur kehrt dann zu ihrem Aufrufer EiGroup_AddObject() zurück.Referring On top of this procedure you can see that you first get the "get" procedure of the ordered ad group class used to specify a pointer groupData to the private data of the ordered display group object. The procedure then gets the type of specified object to be added (the one geometry object is), and after some error checking it calls EiOrdererdDisplayGroup_GetObjectList () to add a pointer to theList on the special double-linked list of the ordered display group object for geometry objects. The procedure calls EiGroupPosition_New () to get a new list "position" object and calls EiDLList_InsertNodeLast () to get the new "Position" object at the end of the double-linked list. The procedure then returns back to its caller EiGroup_AddObject ().

Zur Vervollständigung sei angemerkt, daß die Prozedur zum Hinzufügen eines Objekts zu einem Listenanzeigegruppenobjekt sehr ähnlich jener zum Hinzufügen eines Objekts zu einem geordneten Anzeigegruppenobjekt ist mit der Ausnahme, daß nur eine doppeltverbundene List in einem Listenanzeigegruppenobjekt vorhanden ist. Es ist daher unnötig, eine von sechs Listen zu bestimmen, zu der das Objekt zuzufügen ist. Es sei auch angemerkt, das zusätzlich zu einer Objekthinzufügungsprozedur Escher's API auch Prozeduren enthält zur Hinzufügung eines Objekts hinter einer angegebenen Position in der Liste der Gruppe, zur Hinzufügung eines Objekts vor einer angegebenen Position in einer Liste der Gruppe, zur Entfernung eines Objekts von einer angegebenen Position in einer Liste der Gruppe zum Vorwärts- und Rückwärtsschreiten durch eine Liste der Gruppe, sowie andere Prozeduren.to completion It should be noted that the Procedure for adding an object to a list display group object very similar to that to add of an object to an ordered display group object is with the Exception that only a double-threaded list in a list display group object is available. It is therefore unnecessary to determine one of six lists to which the object is to be added. It be also noted that in addition to an object addition procedure Escher's API too Contains procedures to add an object behind a specified position in the list of Group, to be added an object in front of a specified location in a list of Group, to remove an object from a specified position in a list of the group for forward and backward through a list the group, as well as other procedures.

3. ErObject_Dispose()3. ErObject_Dispose ()

Nach dem Hinzufügen eines Objekts zur Gruppe legt das Beispielprogramm in Anhang A das Polygonobjekt weg, weil es im Anwendungsprogramm nicht mehr benötigt wird (abgesehen von seiner Anwesenheit im gerade geschaffenen Modell). Soweit das Anwendungsprogramm betroffen ist, das Polygonobjekt entfernt worden. In Wirklichkeit löscht die Escherprozedur ErObject_Dispose() zu diesem Zeitpunkt das Polygonobjekt aber nicht und löscht nicht die Zuordnung zum Speicherplatz. Da polygon ein geteiltes Objekt ist, vermindert statt dessen Escher lediglich die Bezugszählung in den geteilt Objekt Pri vatdaten für das Polygonobjekt. Die Bezugszählung war auf 1 gesetzt, als polygon erschaffen wurde, und wurde um 1 erhöht, als zu group hinzugefügt wurde. Der Aufruf von ErObject_Dispose() durch das Anwendungsprogramm vermindert lediglich die Bezugszählung von 2 auf 1. Wenn die Abwärtszählung die Bezugszählung auf 0 vermindert, löscht Escher wirklich das Objekt und löscht auch die Zuordnung des Speicherplatzes.To Add of an object to the group sets the example program in Appendix A. Polygon object because it is no longer needed in the application program (apart from his presence in the model just created). As far as the application program is concerned, the polygon object has been removed. In fact, delete however, the Escher procedure ErObject_Dispose () at this time uses the polygon object not and clears not the allocation to the storage space. Since polygon is a shared Object is reduced, instead Escher only the reference count in the shared object private data for the polygon object. The reference count was set to 1 when polygon was created, and became 1 elevated, added as a group has been. The call of ErObject_Dispose () by the application program only reduces the reference count from 2 to 1. If the countdown is the reference count reduced to 0, clears Escher really the object and deletes also the allocation of the storage space.

4. Neues Linienobjekt4. New line object

Das Beispielprogramm in Anlage A erzeugt als nächstes ein neues Linienobjekt line, fügt es zu dem geordneten Anzeigegruppenobjekt group hinzu und ”verfügt” dann über das Leitungsobjekt line. Die Escherprozeduraufrufe zur Ausführung derselben sind ähnlich jenen, die oben unter Bezugnahme auf das Polygonobjekt polygon beschrieben wurden und brauchen nicht nochmals wiederholt zu werden.The Example program in Attachment A next creates a new line object line, adds add it to the ordered display group object group and then "have" that Line object line. The Escher procedure calls to execute the same are similar those described above with reference to the polygon polygon object were and do not need to be repeated again.

5. Hinzufügung eines Transformationsobjekts5. Addition of a transformation object

Nach Aufnahme eines Stilobjektes und zweier Geometrieobjekte in die geordnete Anzeigegruppe group erzeugt das Beispielprogramm in Anlage A ein Übersetzungstransformationsobjekt und fügt es der Gruppe hinzu. Das Transformationsobjekt transform wird durch Aufruf der Escherprozedur ErTranslateTransform_New() erzeugt, das in einer rekursiven Art ähnlich ErOrderedDisplayGroup_New() arbeitet, wie oben beschrieben. Die nachfolgenden Aufrufe des Beispielprogramms von ErGroupAddObject (group, transform) arbeiten wie oben beschrieben. Es sei angemerkt, daß obwohl das Beispielprogramm das Transformationsobjekt zu dem geordneten Anzeigegruppenobjekt hinzufügt, nachdem bereits zwei Geometrieobjekte hinzugefügt worden sind, die Natur einer geordneten Anzeigegruppe auszuführende Transformationsobjekte vor Geometrieobjekten aufruft. Escher stellt diese Charakteristik durch Anordnen des Transformationsobjekts in einer getrennten doppeltverbundenen Liste innerhalb des geordneten Anzeigegruppenobjekts group ausschließlich für Transformationen dar und durch Anordnen der Geometrieobjekte in einer doppeltverbundenen Liste exklusiv für Geometrieobjekte. Beim Aufbereiten durchquert, wie oben beschrieben Escher die Transformationsobjektliste, bevor es die Geometrieobjektliste durchquert.To Include a style object and two geometry objects in the ordered one Display group group creates the example program in Appendix A a translation transformation object and adds add it to the group. The transformation object transform is passed through Calling the Escher procedure ErTranslateTransform_New () generates the similar in a recursive way ErOrderedDisplayGroup_New () works as described above. The subsequent calls to the example program of ErGroupAddObject (group, Transform) work as described above. It should be noted that though the sample program transforms the transformation object to the ordered one Adds display group object, After two geometry objects have already been added, the nature of one ordered display group to be executed Calls transformation objects before geometry objects. Escher poses this characteristic by arranging the transformation object in a separate double-linked list within the parent Display group object group for transformations only and by placing the geometry objects in a double-connected one List exclusively for Geometry objects. When processing, crosses as described above Escher the transformation object list before adding the geometry object list crosses.

6. Erzeugung und Hinzufügung von subGroup6. Generation and addition of subgroup

Nach dem Hinzufügen des Transformationsobjekts zum geordneten Anzeigengruppenobjekt group erzeugt das Beispielprogramm in Anhang A eine neue geordnete Anzeigegruppe subGroup durch Aufruf von ErOrderedDisplayGroup_New(). Diese Prozedur ist oben beschrieben. Das Beispielprogramm fügt dann subGroup zu dem zuvor erzeugten Anzeigeobjekt group hinzu unter Verwendung der Escherprozedur ErGroup_AddObject(), was ebenfalls oben beschrieben ist. Das Beispielprogramm hat auf diese Weise nun die in 8 dargestellte Hierarchie erzeugt. Das Beispielprogramm erzeugt dann ein neues Geometrieobjekt, speziell ein Torusgeometrieobjekt Torus unter Verwendung einer Escherprozedur ErTorus_New(), die ähnlich wie das oben beschriebene ErPolygon_New() arbeitet. Es fügt dann Torus zu subGroup unter Verwendung von ErGroup_AddObject() hinzu und legt sowohl Torus als subGroup unter Verwendung von ErObject_Dispose() weg. An diesem Punkt ist das gesamte, in 8 dargestellte Modell aufgebaut worden und das Beispielprogramm bewegt sich zum Schritt 308 (3), um das Modell zur Ansicht aufzubereiten.After adding the transformation object to the ordered ad group object group, the sample program in Appendix A creates a new ordered subGroup display group by calling ErOrderedDisplayGroup_New (). This procedure is described above. The sample program then adds subGroup to the previously created display object group using the ErgoRup_AddObject () Escher procedure, also described above. The example program now has the in 8th generated hierarchy generated. The example program then generates a new geometry object, specifically a torus geometry object torus, using an Escher procedure ErTorus_New (), which operates similarly to the ErPolygon_New () described above. It then adds torus to subGroup using ErGroup_AddObject () and drops both torus and subGroup using ErObject_Dispose (). At this point, the entire, in 8th Model shown has been constructed and the sample program moves to the step 308 ( 3 ) to prepare the model for viewing.

IV Aufbereitung des Modells zu den AnsichtenIV Preparation of the model to the views

Escher findet die Aufbereitung von Objekten zu einer Ansicht zwischen Aufrufen an ErView-StartRendering() und ErView_EndRendering() statt. Diese Prozeduren initialisieren lediglich relevante Datenstrukturen vor dem Aufbereiten (einschließlich dem Ablegen eines Anfangszustandes auf einen Durchquerungsstapel) und Reinigen verschiedener Buchhaltungsinformationen nach dem Aufbereiten. Sie enthalten auch Aufrufe an des Aufbereiters eigene Start- und Endprozeduren, so daß der Aufbereiter dasselbe tun kann. Die Start- und Endprozeduren des Aufbereiters wurden für Escher bei der Registrierung des Aufbereiters spezifiziert und sind in geeigneten Verfahrenstabellen identifiziert. Insbesondere wurde die Endaufbereitungsprozedur des Aufbereiters durch den Metahändler des Aufbereiters in Abhängigkeit von einem Aufruf mit der konstanten EcMethodType_EndRenderer rückgeführt.Escher does the rendering of objects to a view between calls to ErView-StartRendering () and ErView_EndRendering (). These procedures merely initialize relevant data structures prior to rendering (including dropping an initial state to a traversal stack) and purifying various accounting information after rendering. They also include calls to the dresser's own start and end procedures so that the dresser can do the same. The preparer's start and end procedures have been specified for Escher at registration of the conditioner and are identified in appropriate process tables. In particular, the conditioner's finishing procedure by the conditioner's metal dealer was a function of a call with the constant EcMethodType_EndRenderer returned.

Escher unterstützt Mehrfachaufbereitung, bei dem Escher das Modell mehr als einmal durchquert, wobei jedesmal geeignete Aufbereiterprozeduren aufgerufen werden. Escher zeigt an, daß eine erneute Durchquerung erforderlich ist, indem ein Statuskennzeichen EcViewStatus_ReTraverse von der Prozedur ErView_EndRendering() zurückgesetzt wird. Wenn das Anwendungsprogramm ErView_EndRendering() aufruft, dann ruft diese Prozedur wiederum die Endaufbereitungsprozedur des Aufbereiters auf. Im Falle des Drahtmodellaufbereiters ist diese Prozedur ErWF-End() genannt. Der Aufbereiter ist das Wiederdurchquerungskennzeichen auf die Escherprozedur ErView_EndRendering(), die wiederum selbiges auf das Anwendungsprogramm als EcViewStatus_ReTraverse rückführt. Die bevorzugte Technik für das Ausführungsprogramm ist es daher, die Modellzeichnungsaufrufe in eine Ausführschleife zu setzen, die so oft wiederholt wird, wie ErView.EndRendering() das EcViewStatus-ReTranvers rückführt. Dieses ist das Format, das in dem Beispielprogramm in Anhang A verwendet wird.Escher supports Multiple reprocessing, where the Escher model more than once which calls appropriate conditioner procedures each time become. Escher indicates that one retracing is required by a status indicator EcViewStatus_ReTraverse reset by procedure ErView_EndRendering () becomes. When the application program calls ErView_EndRendering (), then this procedure again calls the final processing procedure of the Dresser on. In the case of the wireframe conditioner this is Procedure named ErWF-End (). The conditioner is the retransmission indicator to the Escher procedure ErView_EndRendering (), which in turn selbiges to the application program as EcViewStatus_ReTraverse. The preferred technique for the executive program Therefore, it is the model drawing calls into a dispatch loop which is repeated as many times as ErView.EndRendering () the EcViewStatus-ReTranvers returns. This is the format used in the sample program in Appendix A. becomes.

Es sei angemerkt, daß die Anrufe an ErView.StartRendering() und ErView_EndRendering() ein Sichtobjekt View als ein Argument verwenden. Ein Anwendungsprogramm kann diese Prozedur in jeder Folge aufrufen, wobei unterschiedliche Ansichtsobjekte spezifiziert werden, so lange der Aufruf an ErView_EndRendering() für ein bestimmtes Ansichtsobjekt dem Aufruf an ErView_StartRendering() für dasselbe Ansichtsobjekt folgt und alle Zeichnungsaufrufe an diese Ansicht dazwischenliegen. Es ist auch ein Fehler, ErView_StartRendering() zweimal für ein spezielles Ansichtsobjekt aufzurufen, ohne ErView_EndRendering() für dasselbe Ansichtsobjekt dazwischen aufzuurfen und es ist ein Fehler, ErView_EndReridering() für ein bestimmtes Ansichtsobjekt aufzurufen, ohne zunächst ErView_StartRendering() für dieses Ansichtsobjekt aufgerufen zu haben. Verschiedene Ansichtsobjekte können jedoch denselben Aufbereiter spezifizieren, wenn gewünscht, da die Beispielsdaten für die unterschiedlichsten Ansichtsobjekte getrennt sind. Das beispielhafte Anwendungsprogramm in Anhang macht nur einen sehr einfachen Schlag bei zweimaligen Aufbereiten des Modells, insbesondere durch vollständiges Aufbereiten des Models unter Verwendung des zuvor definierten Sichtobjekts, das den Drahtmodellaufbereiter spezifiziert, dann die Wahl des Aufbereiters im Sichtobjekt ändert, um auf einen Z-Puffer-Aufbereiter zu zeigen, und das Modell noch einmal zu dem selben, nun geänderten Sichtobjekt aufzubereiten.It It should be noted that the Calls to ErView.StartRendering () and ErView_EndRendering () Use View Object View as an argument. An application program can call this procedure in each sequence, with different ones View objects are specified as long as the call to ErView_EndRendering () for a specific view object to the call to ErView_StartRendering () for the same The view object follows and all drawing calls to that view between. It is also an error, ErView_StartRendering () twice for to invoke a special view object without ErView_EndRendering () for it To throw a view object in between and there is an error, ErView_EndReridering () for a call specific view object without first ErView_StartRendering () for this To have a view object called. Different view objects can however, specify the same conditioner if desired the example data for the most different view objects are separated. The exemplary one Application program in appendix makes only a very simple blow with two processing of the model, in particular by complete processing of the model using the previously defined visual object, which specifies the wireframe conditioner, then the choice of conditioner changes in the visual object, to point to a Z-buffer conditioner, and the model still once to the same, now changed To prepare a visual object.

Zwischen Aufrufen an ErView_StartRendering() und ErView_EndRendering() kann ein Anwendumgsprogramm Aufrufe an entweder Echtzeit-Escher-Zeichnungsprozeduren oder Escher-Zeichnungsprozeduren für Aufrechterhaltungsbetrieb, oder beide, richten. Die Echtzeitroutinen nehmen Datenstrukturen (wie beispielsweise eine Polygondatenstruktur) als Parameter, während Aufrechterhaltungsbetriebsroutinen Objekte (beispielsweise ein EtGeometryObject) als Parameter nehmen. Echtzeitroutinen schleppen keine Durchquerung irgendeines Modells mit, während manche Aufrechterhaltungsbetriebsroutinen, wie beispielsweise ErDisplayGroup_Draw() eine Durchquerung eines Modells aufweisen.Between Calling ErView_StartRendering () and ErView_EndRendering () can an application program calls to either real-time Escher drawing procedures or Escher drawing procedures for maintenance operation, or both, judge. The real-time routines take data structures (such as a polygon data structure) as a parameter during maintenance operation routines Take objects (for example, an EtGeometryObject) as a parameter. Real-time routines do not trawl any model with, while some maintenance routines, such as ErDisplayGroup_Draw () have a traversal of a model.

A. Durchquerung eines ModellsA. Traversing a model

Dementsprechend macht das beispielhafte Anwendungsprogramm in Anhang A einen einfachen Aufruf an die Aufbereiteraufrufprozeduren 212 von Escher (2), insbesonderen einen Aufruf an ErDisplayGroup_Draw(). Das Anwendungsprogramm nimmt das Modell zur Aufbereitung auf (dargestellt durch das geordnete Anzeigegruppenobjekt group, das den Wurzelknoten der Modellhierarchie bildet), und die Ansicht, in die das Modell aufzubereiten ist (durch Aufnehmen des Sichtobjekts). Das Anwendungsprogramm könnte zu diesem Zeitpunkt auch zusätzliche Aufrufe an Aufbereiteraufrufprozeduren 212 von Escher richten, um zusätzliche Objekte (einschließlich zusätzlicher Modelle) in der selben Ansicht aufzubereiten. Die Prozedur ErDisplayGroup_Draw() ist wie folgt:

Figure 00580001
Figure 00590001
Accordingly, the exemplary application program in Appendix A makes a simple call to the conditioner call procedures 212 from Escher ( 2 ), in particular a call to ErDisplayGroup_Draw (). The application program picks up the model for rendering (represented by the ordered display group object group, which forms the root node of the model hierarchy) and the view in which the model is to be rendered (by picking up the view object). The application program could at this point also make additional calls to conditioner call procedures 212 by Escher to prepare additional objects (including additional models) in the same view. The ErDisplayGroup_Draw () procedure is as follows:
Figure 00580001
Figure 00590001

Bezugnehmend auf die obige Prozedur, nach einer gewissen Fehlerprüfung ermittelt die Prozedur zunächst, daß group eine geordnete Anzeigegruppe ist, indem group an die Escherprozedur EiDisplayGroup_GetTypeIndex() überwiesen wird. Man erhält dann einen Zeiger func auf das Zeichnungsverfahren, was die geordnete Anzeigengruppenklasse ist, die während der Initialisierung mit dem Klassenverfahrenstabellenenddisplay group für geordnete Anzeigegruppenobjekte registriert wurde. Wenn das ”in-line”-Kennzeichen für das Objekt group gesetzt ist, dann ruft das Programm die Prozedur auf, die durch func bezeichnet ist, nimmt group auf und das Sichtobjekt, zu dem die Gruppe aufzubereiten ist.Referring to the above procedure, after a certain error checking determined the procedure first, that group an ordered display group is transferred by group to the Escher procedure EiDisplayGroup_GetTypeIndex () becomes. You get then a pointer func on the drawing process, what the ordered Adgroup class that is during initialization with the class method table end display group for ordered display group objects has been registered. If the "in-line" flag for the object group is set, then the program calls the procedure that by func, group picks up and the visual object, to which the group is to be prepared.

Wenn das ”in-line”-Kennzeichen für das Objekt group nicht gesetzt ist, dann ”legt” die Prozedur EiDisplayGroup_Draw() den Durchquerungszustand, bevor die Prozedur aufgerufen wird, die durch func identifiziert wird, und ”hebt” den Überquerungszustand danach ”ab”.If the "in-line" mark for the Object group is not set, then "puts" the procedure EiDisplayGroup_Draw () the traversal state before the procedure is called, the is identified by func, and then "overrides" the traversal state.

In einer Ausführungsform ist der Zustand der Durchquerung als die augenblickliche Position in einem Stapel dargestellt, auf den aufgelegt oder von dem abgenommen werden kann und der an jedem Niveau eine Verkettung aller Transformationsmatrizen vor diesem Niveau der laufenden Stilcharakteristika, der laufenden Abschaltercharakteristika und der laufenden Attributsätze enthält. Jedesmal, wenn der Durchquerungszustand ”abgelegt” wird, wird ein neues Niveau geschaffen, und alles dieser Information wird von dem früheren Niveau auf das laufende Niveau des Stapels kopiert. Darüber hinaus findet bei dieser Ausführungsform die Verkettung der Transformationsmatrizen durch wirkliche Ausführung jeder Matrix-Vormultiplikaltion statt, wenn das Transformationsobjekt bei der Durchquerung angetroffen wird.In one embodiment, the state of the traversal is represented as the current position in a stack that can be overlaid or detached, and which at each level contains a concatenation of all the transformation arrays before that level of current style characteristics, the current shutdown characteristics, and the current attribute sets , Every time the traversing state A new level is created and all of this information is copied from the previous level to the current level of the stack. Moreover, in this embodiment, the concatenation of the transformation matrices takes place by actually performing each matrix pre-multiplication when the transformation object is encountered in the traversal.

In einer bevorzugten Ausführungsform werden jedoch die laufende Transformation, die laufenden Stilcharakteristika, die laufenden Attributsätze und die laufenden Schattierungscharakteristika in mehreren Stapeln gespeichert, wobei auf jeden von ihnen ”abgelegt”, nur wenn es notwendig ist. Ein Haupt-”Zustands”-Stapel unterhält eine Aufzeichnung an jedem Niveau, von dem von den zusammengesetzten Stapeln abgehoben werden soll, wenn der Gesamtdurchquerungszustand von diesem Niveau abgehoben wird. Beispielsweise ist der laufende Transformationszustand unter Verwendung mehrerer Komponentenstapel repräsentiert, wie beispielsweise einem laufenden ”Ort-zu-Weit”-Matrixstapel, ein inverser Matrixstapel, usw.. Statt einer Berechnung dieser Matrizen bei jedem Ablegen des Gesamtdurchquerungszustands wird nur die Folge von Transformationsmatrizen der letztberechneten Matrix zur laufenden Position in der Durchquerung des Modells aufgezeichnet. Die aktuelle Berechnung wird nicht ausgeführt, wenn nicht und bis nicht solches wirklich benötigt wird. Auf diese Weise wird eine große Anzahl Matrixberechnungen vermieden.In a preferred embodiment however, the current transformation, the current style characteristics, the running attribute sets and the current shading characteristics in multiple stacks stored, with each of them "filed" only when necessary. A major "state" stack entertains a record at each level, from that of the compound Stacking is to be lifted when the overall traversing state lifted from this level. For example, the current one Transformation state using multiple component stacks represents such as a running "place-to-far" matrix stack, an inverse one Matrix stack, etc. Instead of calculating these matrices at each Stopping the overall traversal state only becomes the consequence of transformation matrices the last calculated matrix to the current position in the traversal of the model. The current calculation will not be executed if not and not until such a thing is really needed. In this way will be a big one Number of matrix calculations avoided.

Es sollte angemerkt werden, daß im Aufrechterhaltungsbetrieb Escher ablegt und abhebt, wie erforderlich, während der Durchquerung des Modells. Im Echtzeitbetrieb kann das Anwendungsprogramm auch Escherablege- und -abhebroutinen aufrufen, so daß durch sorgfältige Vollbesteuerung der Aufrufe das Anwendungsprogramm seine eigene Durchquerung seiner eigenen Modelldatenbank ausführen kann.It It should be noted that in Maintenance company Escher drops and takes off as required while crossing the model. In real-time operation, the application program Also call Escherablege- and -hebhebroutinen, so that by careful Full taxation of calls the application program its own Traversing his own model database.

Rückkehrend zu EiDisplayGroup_Draw(), die Prozedur, die durch func angezeigt wird, ist EiView_OrdererdDisplayGroup(), die wie folgt ist:

Figure 00610001
Returning to EiDisplayGroup_Draw (), the procedure indicated by func is EiView_OrdererdDisplayGroup (), which is as follows:
Figure 00610001

Wie man sehen kann, ruft die obige Prozedur eine generalisierte Anzeigegruppenlistenzeichnungsfunktion EiDisplayGroupList_Draw() sechsmal auf, wobei jedesmal ein Bezug zu einer anderen der sechs doppeltverbundenen Listen in den Privatdaten des geordneten Anzeigegruppenobjekts group eingeführt wird. Insbesondere ruft die Prozedur die Listenzeichnungsprozedur mit einem Bezug zunächst zur Liste der Transformationen dann mit Bezug zur Liste der Stile und dann mit Bezug zur Liste der Attributsätze, dann mit Bezug zur Liste der Schattierer, dann mit Bezug zur Liste von Geometrien in der Gruppe und dann mit einem Zeiger zur Liste von Untergruppen in der Gruppe auf. Jedesmal führt die Prozedur zur Listenzeichnungsprozedur auch einen Bezug zur speziellen Prozedur ein, die die Art der Objekte, die auf der Liste sind, zeichnet. Wenn beispielsweise die Liste. von Transformationen auf EiDisplayGroupList_Draw() übergeht, dann wird auch ein Bezug zur Escherprozedur EiTransform_Draw() übergeben. Als weiteres Beispiel, wenn die Liste von Geometrien an EiDisplayGroupList_Draw() übergeht, dann findet auch eine Übergabe an die Escherprozedur EiGeometry_Draw() statt.As can be seen, the above procedure calls a generalized display group list drawing function EiDisplayGroupList_Draw () six times, each time introducing a reference to another of the six double-linked lists in the private data of the ordered display group object group. In particular, the procedure calls the list-drawing procedure with reference first to the list of transformations, then to the list of styles, and then to the list of attribute sets, then to the list of shaders, then to the list of geometries in the group, and then with a pointer to the list of subgroups in the group. Each time, the list-drawing procedure procedure also introduces a reference to the special procedure that records the type of objects that are on the list. If for example, the list. from transforms to EiDisplayGroupList_Draw (), then a reference to the Escher procedure EiTransform_Draw () is also passed. As another example, if the list of geometries passes to EiDisplayGroupList_Draw (), then a handover to the Escher procedure EiGeometry_Draw () also takes place.

Man erkennt, daß wenn group ein Listenanzeigegruppenobjekt anstelle eines geordneten Anzeigegruppenobjekts wäre, nur ein Aufruf an EiDisplayGroupList_Draw() gemacht würde. Dieser Aufruf würde einen Bezug zu einzigen Liste von Objekten eingeben, die an group anhängen, und einen Bezug auf eine Prozedur, die sowohl den Typ jedes Objekts, wie auf der Liste angetroffen wird, bestimmt, und würde die geeignete Escherzeichnungsprozedur für diesen Typ aufrufen.you recognizes that when group a list display group object instead of an ordered display group object would be, only a call to EiDisplayGroupList_Draw () would be made. This Call would enter a reference to a single list of objects to group attach, and a reference to a procedure that is both the type of each object, as found on the list, determined, and would the Call up a suitable Escher drawing procedure for this type.

Die generalisierte Listenzeichnungsprozedur ist wie folgt:

Figure 00620001
The generalized list-drawing procedure is as follows:
Figure 00620001

Wie man sehen kann, kreist diese Prozedur lediglich durch alle Objekte auf der doppeltverbundenen Liste, die durch den Aufrufer spezifiziert oder, und überführt für jedes dieser Objekte das Objekt zur Zeichnungsprozedur, die durch den Aufrufer angegeben wird.As As you can see, this procedure only revolves around all objects on the double-linked list specified by the caller or, and convicted for each of these objects, the object for the drawing procedure, which is given by the Caller is specified.

Einige der Escher-Objektzeichnungsprozeduren, die durch die Listenzeichnungsprozedur aufgerufen werden, werden nun beschrieben. Zur Vereinfachung der Beschreibung werden sie jedoch in einer anderen Reihenfolge gegenüber jener erläutert, in der sie aufgerufen werden, wenn eine geordnete Anzeigegruppe aufbereitet wird.Some the Escher object drawing procedures specified by the list-drawing procedure will be called, are now described. To simplify the However, they are described in a different order than the description explains in which they are called when an ordered display group is processed.

B. Zeichnen von Untergruppenobjekten eines AnzeigengruppenobjektsB. Drawing Subgroup Objects Display group object

Escher durchquert das Modell in rekursiver Weise, und aus diesem Grunde ist die Escherprozedur, die ErView-OrderedDisplayGroup() an die Listenzeichnungsprozedur für Gruppenobjekte übergibt, die in dem Gruppenobjekt group angetroffen werden, ganz einfach EiDisplayGroup_Draw(). Diese Prozedur ist oben erläutert.Escher traverses the model in a recursive manner, and for that reason is the Escher procedure, the ErView-OrderedDisplayGroup () to the List drawing procedure for Passes group objects, that are found in the group group group, quite simply EiDisplayGroup_Draw (). This procedure is explained above.

C. Zeichnen von Geometrieobjekten in einem AnzeigengruppenobjektC. Drawing geometry objects in one Display group object

Die Escherprozedur die ErView-OrderedDisplayGroup() für die Listenzeichnungsroutine für Geometrieobjekte identifiziert, ist EiGeometry_Draw(), die wie folgt ist:

Figure 00630001
The Escher procedure that identifies ErView-OrderedDisplayGroup () for the geometric object list-drawing routine is EiGeometry_Draw (), which is as follows:
Figure 00630001

Wie man sehen kann, führt die obige Prozedur lediglich gewisse Fehlerprüfungen aus und ruft dann das Geometriezeichnungsverfahren auf, das durch die Geometrieklasse registriert war. Dieses Verfahren ist allgemein für alle Geometrieobjekte, und ist wie folgt:

Figure 00640001
As can be seen, the above procedure only performs certain error checks and then calls the geometry drawing method registered by the geometry class. This procedure is common to all geometry objects, and is as follows:
Figure 00640001

Diese Routine erhält nach Fehlerprüfung zunächst einen Zeiger func auf das Verfahren, das der Aufbereiter der laufenden Ansicht vier Geometrieobjekte der aufzubereitenden Art registriert hat (in diesem Falle Polygone). Wenn func gleich NULL ist, dann findet eine Zerlegung des Geometrieobjektes in einer hier beschriebenen Weise statt. Im vorliegenden Falle hat jedoch der Drahtmodellaufbereiter ErWF_Geometry_Polygon() als die Prozedur zur Aufbereitung von Polygonobjekten registriert. (Siehe die obige Diskussion unter Bezugnahme auf ErWF_Register(). Diese Prozedur ist in Anhang B angegeben.These Routine receives after error checking first a pointer func to the procedure that the preparer is running View registered four geometry objects of the kind to be processed has (in this case polygons). If func is zero, then finds a decomposition of the geometry object in one described here Way instead. In the present case, however, the wireframe builder ErWF_Geometry_Polygon () registered as the procedure for processing polygon objects. (See the discussion above with reference to ErWF_Register (). This procedure is given in Appendix B.

D. Zeichnen von Geometrieobjekten, die eine Zerlegung erfordern.D. Drawing geometry objects that require a decomposition.

Im vorangehenden Abschnitt wurde beschrieben, wie Escher ein Geometriebojekt in einer aufzubereitenden Anzeigegruppe zu verarbeiten ist, in der Situation, wo der Aufbereiter der Ansicht eine Routine speziell für den Typ des Geometrieobjekts (d. h. Polygon) hat. Mit Escher zu verwendende Aufbereiter müssen wenigstens Routine unterstützen, die Punkte, Linien und Dreiecke aufbereiten und auch Routinen unterstützen können, die Geometrien höherer Niveaus aufbereiten. In einem Aspekt der Erfindung muß der Aufbereiter nicht alle Geometrietypen unterstützen, die Escher beim Aufbau eines Modells unterstützt. Vielmehr ermittelt Escher automatisch die Abwesenheit eines Aufbereitungsverfahrens für eine spezielle Geometrietype und zerlegt die Geometrie in weniger komplexe Teile. Sie führt diese dann erneut dem Aufbereiter in dieser weniger komplexen Form zu.The previous section described how Escher made a geometry project in one in the situation where the renderer of the view has a routine specific to the type of geometry object (ie, polygon). The dresser to be used with Escher must at least support routine that can process points, lines, and triangles and also support routines that handle higher level geometries. In one aspect of the invention, the preparer does not need to support all geometry types that Escher supports in building a model. Rather, Escher automatically determines the absence of a rendering process for a particular geometry type and breaks the geometry down into less complex parts. She then leads them back to the conditioner in this less complex form.

Der Drahtmodellaufbereiter der vorliegenden Erfindung unterstützt Polygonobjekte, jedoch für Zwecke der Erläuterung sei nun angenommen, daß er es nicht tut. Diese Darstellung ist hypothetisch auch weil das Drahtmodellaufbereitungsverfahren zum Aufbereiten von Dreiecken, was wie man sehen wird, die Geometrie ist, in das Escherpolygone zerlegt, dieselbe Drahtmodelllaufbereiterprozedur ist, die Polygone aufbereitet. Das heißt, die Aufbereiterprozedur ErWF_Geometry_Polygon() nimmt entweder ein Dreieck oder ein Polygon als ein Argument, bestimmt, was es ist, und bereitet es unter Verwendung desselben Codes auf. Dennoch dient die Hypothese der Erläuterung der Zerlegungstechnik von Escher.Of the Wire Modeler of the present invention supports polygon objects, however for Purposes of explanation Now suppose that he it does not. This representation is hypothetical also because the wireframe rendering process for rendering triangles, which as you will see, is the geometry, decomposed into the Escher polygon, the same wire model run procedure is the recycled polygons. That is, the conditioner procedure ErWF_Geometry_Polygon () takes either a triangle or a polygon as an argument, determine what it is, and prepare it of the same code. Nevertheless, the hypothesis of explanation serves the cutting technology of Escher.

1. Bei der Escher Initialisierung aufgerufene Prozeduren1. At the Escher initialization called procedures

Die Prozedur bei der Initialisierung zur Registrierung eines Aufbereiters ist zuvor beschrieben worden. Klassen und Unterklassen registrieren sich selbst ebenfalls während der Initialisierung. Die Polygonklasse beispielsweise am Anfang durch Aufruf der folgenden Funktion registriert:

Figure 00660001
The procedure at initialization for registering a conditioner has been previously described. Classes and subclasses also register themselves during initialization. For example, the polygon class initially registers by calling the following function:
Figure 00660001

Diese Routine erzeugt die Klassenverfahrenstabelle für ein Objekt in der Blattklasse Polygon. Wie bei anderen Erzeugungsroutinen, die zuvor beschrieben wurden, wird der Block des Speichers zugeordnet und unter Verwendung Lagentechnik initialisiert, wobei die Klassenregistrierungsprozedur jeder Klasse zunächst die Größe, die für ihre eigenen Verfahrenstabellen erforderlich ist, der Klassenregistrierungsprozedur ihrer Stammklasse eingibt. Die Klasse polygon ist eine Blattklasse, so daß die Größe ihrer Verfahrenstabelle null ist. Oberhalb der Klasse polygon addiert jede Prozedur. Die Größe ihrer eigenen Verfahrenstabelle und ruft rekursiv die Klassenregistrierungsprozedur ihrer Stammklasse auf. Die letzte Registrierungsprozedur der Stammklasse weist Speicher für den gesamten Block von Verfahrenstabellen zu, initialisiert den eigenen Teil mit Zeigern auf ihre Fehlerverfahren und kehrt zum Aufruf der Klassenregistrierungsprozedur der Unterklasse zurück.These Routine creates the class method table for an object in the leaf class Polygon. As with other generation routines, previously described The block of memory is allocated and used Layer technique initialized, the class registration procedure each class first the Size that for your own procedure tables is required, the class registration procedure of their parent class. The class polygon is a class of leaves, So that the Size of her Procedure table is zero. Added polygon above the class every procedure. The size of her own procedure table and recursively call the class registration procedure of their parent class. The last registration procedure of the root class has memory for the entire block of procedure tables, initializes the own part with pointers to their error procedures and returns to Calling the class registration procedure of the subclass back.

Auf dem Weg zurück zum ursprünglichen Aufrufer initialisiert die Klassenregistrierungsprozedur jeder Klasse ihre eigenen Verfahrenstabelle mit ihren eigenen Fehlerverfahren. Außerdem kann die Klassenregistrierungsprozedur jeder Klasse Verfahren zum Unwirksammachen ihrer Stammklasse spezifizieren, jedoch nur bei Option der Stammklasse. Dieses wird bewerkstelligt, wenn die Klassenregistrierungsprozedur der Stammklasse aufgerufen wird, ein Metahändler und für einige Klassen ein virtueller Metahändler spezifiziert werden als Argumente für den Aufruf. Diese Metahändler können durch die Klassenregistrierungsprozedur der Stammklasse aufgerufen werden, wenn es gewünscht wird, wobei ein Verfahrenstyp spezifiziert wird, und, wenn aufgerufen, der Me tahändler einen Zeiger der Prozedur rückführt, die gewünscht wird, um das Fehlerverfahren des spezifizierten Typs der Stammklasse unwirksam zu machen. Wenn eine Klasse keine Prozedur zum Unwirksammachen des Fehlerverfahrens des speziellen Typs der Stammklasse aufweist, kehrt der Metahändler auf NULL zurück.On the way back to the original one Caller initializes the class registration procedure of each class their own procedure table with their own error procedures. Furthermore For example, the class registration procedure of each class may provide procedures for Specify inefficiencies of their parent, but only at Option of the parent class. This is accomplished when the class registration procedure the parent class is called, a meta trader and for some classes a virtual one Metahändler are specified as arguments to the call. These Metahandelers can through the class registration procedure of the parent class is called, if desired is specified, specifying a type of procedure and, if called, the trader returns a pointer to the procedure that required is the error method of the specified type of the parent class to render ineffective. If a class does not have a procedure for disabling the error method of the special type of the parent class, The Metahandel returns Zero back.

Im Falle der Polygonklassenregistrierungsprozedur wird nur ein Metahändler zur Klassenregistrierungsprozedur der Stammklasse identifiziert. Der Metahändler ist wie folgt:

Figure 00670001
In the case of the polygon class registration procedure, only one meta-dealer is identified for the class registration procedure of the parent class. The Metahandeler is as follows:
Figure 00670001

Von spezieller Relevanz für die vorliegende Diskussion sei angemerkt, daß wenn nach einer Geometriezerlegungsprozedur gefragt wird, der Metahändler eine zurückführt, nämlich EiPolygon_Decompose. Diese Prozedur wird nachfolgend beschrieben.From special relevance to the present discussion should be noted that if after a geometry decomposition procedure asked, the Metahandel one, namely EiPolygon_Decompose. This procedure is described below.

Die Klassenregistrierungsprozedur für die Stammklasse der Polygonklasse, EtGeometryObject, ist wie folgt:

Figure 00680001
Figure 00690001
Figure 00700001
Figure 00710001
The class registration procedure for the parent class of the polygon class, EtGeometryObject, is as follows:
Figure 00680001
Figure 00690001
Figure 00700001
Figure 00710001

Wie man sehen kann, ruft diese Prozedur die Klassenregistrierungsprozedur ihrer eigenen Stammklasse EiShapeClass_Register() auf, spezifiziert einen Metahändler und einen virtuellen Metahändler. Nachdem die Rekursion zur obigen Prozedur zurückkehrt, fährt das Verfahren fort durch Initialisierung seiner eigenen Verfahrenstabelle mit Zeigern auf Fehlerprozeduren. Es erhält diese Zeiger unter Verwendung einer Escherprozedur EiObjectClassData_GetMethod(), die unter anderem Metahändler der Unterklasse auffordert, den Zeiger für jedes gewünschte Verfahren anzugeben. Eines der Verfahren, das die Prozedur aufzufordern, vom Metahändler der Polygonklasse verlangt, ist ein Zerlegungsverfahren, und, wie zuvor hervorgehoben, das Verfahren, das es identifiziert, ist EiPolygon_Decompose().As As you can see, this procedure calls the class registration procedure their own parent class EiShapeClass_Register () on, specified a metal trader and a virtual metals dealer. After the recursion returns to the above procedure, the process continues Initialize its own procedure table with pointers to Error procedures. It receives these pointers using an Escher procedure EiObjectClassData_GetMethod (), the among other things Metahändler asks the subclass to specify the pointer for each desired method. One of the procedures that prompt the procedure from the Meta dealer of Polygon class is required, is a decomposition method, and, as before highlighted, the method that identifies it is EiPolygon_Decompose ().

Es verdient hervorgehoben zu werden, daß bei Escher das Zerlegungsverfahren in den Klassenverfahrenstabellen für jeden Geometrietyp identifiziert ist, nicht für jeden Aufbereiter. Die Zerlegungsverfahren sind daher als Teil des aufzubereitenden Modells eingeschlossen, nicht als Teil der Ansicht, zu der es aufbereitet wird oder als Teil des Aufbereiters. Man erkennt, daß bei einer anderen Ausführungsform es einem Aufbereiter erlaubt sein kann, die Zerlegungsverfahren für Geometrie, die er nicht direkt zeichnen kann, unwirksam zu machen. In noch einer weiteren Ausführungsform können die Zerlegungsverfahren der Aufbereiterunterklasse anstelle der Geometrieunterklasse hinzugefügt sein.It deserves to be emphasized that in Escher the decomposition process identified in the class procedure tables for each geometry type is not for every dresser. The decomposition methods are therefore part of the not included as part of the view, to which it is recycled or as part of the dresser. One recognises, that at another embodiment It may be allowed a preparer, the decomposition process for geometry, which he can not draw directly, to invalidate. In still a further embodiment can the decomposer methods of the conditioner subclass instead of the Added geometry subclass be.

Eine Beschreibung des Metahändlers der Geometrieklasse ist nicht bedeutsam für das Verständnis der Erfindung, jedoch wird der virtuelle Metahändler der Geometrieklasse nachfolgend beschrieben:

Figure 00720001
A description of the geometry class meta-merchant is not material to the understanding of the invention, however, the virtual meta-dealer of the geometry class is described below:
Figure 00720001

Von spezieller Relevanz ist, daß wenn durch die Klassenregistrierprozedur der Klasse EtShapeObject aufgerufen, er einen Zeiger auf EiGeometry_Draw() rückführt als eine Objektzeichnungsprozedur.From special relevance is that when called by the class registration procedure of the EtShapeObject class, it returns a pointer to EiGeometry_Draw () as an object drawing procedure.

2. Prozeduren, die während der Aufbereitung aufgerufen werden2. Procedures called during processing become

Es wird noch einmal auf EiGeometry_DrawMethod() Bezug genommen, das oben beschrieben wurde. Wenn der Aufbereiter keine Prozedur für die Zeichnung von Geometrien derart registriert hat, die jener Prozedur angeboten werden, für die zum Zwecke der Illustration angenommen wird, daß dieses in bezug auf Polygone der Fall ist, dann übergibt diese Routine, wie zuvor erwähnt, die Geometrie an EiGeometry_Decompose(). Diese Prozedur ist wie folgt:

Figure 00720002
Figure 00730001
Again reference is made to EiGeometry_DrawMethod () described above. If the conditioner has not registered a procedure for drawing geometries such as are offered to the procedure assumed to be illustrative with respect to polygons for purposes of illustration, then this routine passes the geometry, as previously mentioned at EiGeometry_Decompose (). This procedure is as follows:
Figure 00720002
Figure 00730001

Wie man sehen kann, übergibt nach gewisser Fehlerprüfung diese Prozedur das Geometrieobjekt lediglich an das Verfahren, das durch seine Verfahrenstabelle identifiziert ist, für eine Zerlegungsprozedur. Für Polygone wurde dieses Verfahren zuvor registriert, wie oben beschrieben, als EiPolygon_Decompose, was wie folgt aufgebaut ist:

Figure 00730002
Figure 00740001
As can be seen, after some error checking, this procedure merely passes the geometry object to the method identified by its method table for a decomposition procedure. For polygons, this method was previously registered, as described above, as EiPolygon_Decompose, which is constructed as follows:
Figure 00730002
Figure 00740001

Die obige Prozedur verwendet eine Escher Prozedur EiPolygon_Triangulate() zur Zerlegung des Polygons in ein Bündel von Dreiecken. In einer Ausführungsform könnte die Triangulationsprozedur ein neues EtGroupObject erzeugen, um für alle neuen Dreiecke zu gelten. Um jedoch ein Niveau der Fehlerprüfung und Rekursion kurzzuschließen, weil es bereits bekannt ist, daß alle Objekte innerhalb der Gruppe Geometrieobjekte sind, setzt die Triangulationsprozedur jedoch vorzugsweise alle neuen Dreiecke in ein Objekt der Klasse EtGeometryBundle. Ein Geometriebündel ist ein lediglich internes Geometrieobjekt, das nur eine Liste von Geometrien enthalten kann.The above procedure uses an Escher procedure EiPolygon_Triangulate () to break up the polygon into a bunch of triangles. In a embodiment could the triangulation procedure will generate a new EtGroupObject to for all to apply new triangles. However, a level of error checking and recursion short-circuit, because it is already known that all Objects within the group are geometric objects, sets the triangulation procedure however, preferably all new triangles in an object of class EtGeometryBundle. A geometry bunch is a purely internal geometry object that is just a list of May contain geometries.

Die obige Prozedur kann entweder im Echtzeitbetrieb oder im Aufrechterhaltungsbetrieb arbeiten. Im Echtzeitbetrieb ruft sie die Triangulationsprozedur mit einem Kennzeichen auf, das die Triangulationsprozedur anweist, das Ergebnis der Zerlegung nicht aufzubewahren, sondern vielmehr es einfach zu zeichnen. In der Aufrechterhaltungsbetriebsart ruft die obige Prozedur die Triangulationsprozedur mit einem Kennzeichen auf, das anzeigt, daß die Zerlegung aufbewahrt werden soll, sowie mit Bezug auf ein Feld, in welchem es aufzubewahren ist. In der obigen Prozedur ist das Feld, in der die Triangulationsprozedur einen Bezug auf das resultierende Geometriebündelobjekt einschreibt, polyPriv->decomposition, das die obige Prozedur dann an EiGeometry_Draw()übergibt.The The above procedure can be either in real time or in sustain mode work. In real-time operation it calls the triangulation procedure with a label that instructs the triangulation procedure, not to store the result of the decomposition, but rather it's easy to draw. In the maintenance mode calls the above procedure is the triangulation procedure with a flag which indicates that the Disassembly, as well as with reference to a field, in which it is to be kept. In the above procedure that is Field in which the triangulation procedure relates to the resulting Geometry bundle object enrolls, polyPriv-> decomposition, then pass the above procedure to EiGeometry_Draw ().

EiGeometry_Draw() ist oben erklärt worden, und in der zuvor beschriebenen Weise ruft sie nach Fehlerprüfung lediglich das Verfahren auf, das in der Verfahrenstabelle des Geometrieobjektes, das ihm zugeleitet ist, identifiziert ist, um jenen Geometrietyp zu zeichnen. Gewöhnlich sind diese Verfahren, die durch den Aufbereiter registriert sind, jedoch sind Geometriebündelobjekte nicht öffentlich. Aufbereiter registrieren keine Routinen zum Zeichnen dieser Objekte. Statt dessen enthält die Verfahrenstabelle einen Zeiger auf Eschers Fehlerzeichnungsverfahren für Geometriebündel wie folgt:

Figure 00750001
EiGeometry_Draw () has been explained above, and in the manner described above, after error checking, merely calls the method identified in the method table of the geometry object passed to it to draw that type of geometry. Usually these procedures are registered by the preparer, however, geometry objects are not public. Dressers do not register any routines to draw these objects. Instead, the process table includes a pointer to Escher's geometry kernel error-locating procedure as follows:
Figure 00750001

Wie man sehen kann, schreitet diese Prozedur lediglich durch die Liste der Geometrieobjekte im Geometriebündelobjekt, die ihm zugeführt ist und übergibt jedes von ihnen wiederum an EiGeometry_Draw(). Dieses sind sämtlich Dreiecke, so daß EiGeometry_Draw() die Dreieckzeichnungsprozedur des Aufbereiters für jedes Dreieck in der Zerlegung aufruft.As As you can see, this procedure only goes through the list the geometry objects in the geometry object that is fed to it and passes each of them turn to EiGeometry_Draw (). These are all triangles, so EiGeometry_Draw () the preparer's triangle drawing procedure for each triangle in the decomposition calls.

E. Zeichnen von Transformationsobjekten in einem AnzeigegruppenobjektE. Drawing transformation objects in a display group object

Die Escher Prozedur, die EiView_OrderedDisplayGroup() für die Listenzeichnungsroutine für Transformationsobjekte identifiziert, ist EiTransform_Draw() wie folgt:

Figure 00750002
The Escher procedure, which identifies EiView_OrderedDisplayGroup () for the transformation object list-drawing routine, is EiTransform_Draw () as follows:
Figure 00750002

Wie man sehen kann, ruft die obige Prozedur lediglich das Transformationszeichnungsverfahren für die Klasse EtTransformObject auf. Dieses Verfahren ist allen Transformationsobjekten gemeinsam und ist wie folgt:

Figure 00760001
As can be seen, the above procedure merely calls the transform drawing method for the EtTransformObject class. This procedure is common to all transformation objects and is as follows:
Figure 00760001

Diese Routine erhält nach Fehlerprüfung als erstes einen Zeige func auf das Verfahren, das die Verfahrenstabelle des Aufbereiters der laufenden Ansicht zur Ausführung von Transformationsobjekten der auszuführenden Type (in diesem Falle Übersetzungen) hat. Eschers Fehlerprozedur zur Ausführung von Übersetzungstransformationen ist wie folgt:

Figure 00760002
Figure 00770001
This routine, after error checking, first gets a pointer to the procedure that has the process table of the renderer of the current view for executing transformation objects of the type to be executed (in this case, translations). Escher's error procedure for executing translation transformations is as follows:
Figure 00760002
Figure 00770001

V. Verwaltung und Verwendung von QualitätssammlungenV. Administration and use of quality collections

A. DatenstrukturenA. Data Structures

Ein Qualitätssammlungsobjekt ist eine Datenstruktur, die eine verbundene Liste von Qualitätsgruppenobjekten enthält. Ein Qualitätssammlungsobjekt ist ein Beispiel der Klasse EtQualityCollectionObject das, wie in 6 angegeben, eine Unterklasse der Klasse EtSharedObject ist, die wiederum eine Unterklasse unter der Klasse EtObject ist. Dementsprechend hat folgend dem Format von 5 ein Qualitätssammlungsobjekt das Format im Speicher, das in 11 dargestellt ist. Insbesondere ein Bereich des Speichers 1102 ist vorgesehen, Zeiger auf die Verfahren der Klasse EtQualityCollectionObject zu enthalten, und dieser Bereich 1102 enthält Zeiger 1104 auf Objektverfahren und Zeiger 1106 auf Geteiltobjektverfahren (von denen keine vorhanden sind). Die EtQualityCollectionObject ist eine Blattklasse, so daß die Klasse eine Verfahrenstabelle speziell für die Qualitätssammlungsobjektverfahren ausläßt. Dies Struktur enthält auch Beispielsdaten für das Qualitätssammlungsobjekt im Speicherbereich 1110. Dieser Bereich enthält Beispielsdaten, die für die Objektklasse spezifisch sind, in einem Teil 1112 (auf die Objektklasse 1102 zeigend), Beispielsdaten, die für die Teilobjektklasse spezifisch sind, in einem Teil 1114 (enthaltend eine Referenzzählung) und Beispielsdaten die für die Qualitätssammlungsobjektklasse spezifisch sind, in einem Teil 1116. Die Qualitätssammlungsobjektdaten sind eine Datenstruktur vom Typ EtQualityCollectionPrivate, die eine verbundene Liste von Qualitätsgruppenobjekten beginnt.A quality collection object is a data structure that is a linked list of quality groups contains objects. A quality collection object is an example of the class EtQualityCollectionObject, as in 6 is a subclass of the EtSharedObject class, which in turn is a subclass under the EtObject class. Accordingly, following the format of 5 a quality collection object the format in memory stored in 11 is shown. In particular, an area of the memory 1102 It is intended to include pointers to the methods of the EtQualityCollectionObject class, and this range 1102 contains pointer 1104 on object method and pointer 1106 on shared object methods (none of which are present). The EtQualityCollectionObject is a leaf class, so the class omits a procedure table specific to the quality collection object methods. This structure also contains sample data for the quality collection object in the storage area 1110 , This area contains sample data specific to the object class in one part 1112 (on the object class 1102 showing), example data specific to the sub-object class, in one part 1114 (containing a reference count) and example data specific to the quality collection object class in a part 1116 , The quality collection object data is a data structure of type EtQualityCollectionPrivate that starts a linked list of quality group objects.

Ein Qualitätsgruppenobjekt ist eine Datenstruktur, die eine Gruppe von Qualitätssteuertypvariablen enthält, von denen jede einen Wert aufweist, der selbst unter zwei oder. mehr Optionen in einem betreffenden Kompromiß zwischen Aufbereitungsqualität und Aufbereitungsgeschwindigkeit wählt. Jedes Qualitätsgruppenobjekt ist ein Beispiel der Klasse EtQualityGroupObjekt, wie in 6 gezeigt, eine Unterklasse der Klasse EtSharedObject ist. Ein Qualitätsgruppenobjekt hat das in 12 gezeigte Format. Insbesondere ein Bereich des Speichers 1202 enthält Zeiger auf Verfahren der Klasse EtQualityGroupObject, und dieser Bereich 1202 enthält Zeiger 1204 auf Objektverfahren und Zeiger 1206 auf Geteiltobjektverfahren (von denen keine vorhanden sind). Die Struktur enthält auch Bei spielsdaten für Qualitätsgruppenobjekt im Bereich 1210 des Speichers. Dieser Bereich enthält Beispielsdaten, die für die Objektklasse spezifisch sind, in einem Teil 1212 (auf die Objektklasse 1202 zeigend), Beispielsdaten, die für die Geteiltobjektklasse spezifisch sind, in einem Teil 1214 (eine Referenzzählung enthaltend), und Beispielsdaten, die für die Qualitätsgruppenobjektklasse spezifisch sind, in einem Teil 1216. Die Qualitätsgruppenobjektdaten sind eine Datenstruktur vom Typ EtQualityGroupObjectPrivate, die die in Tabelle I aufgeführten Felder enthält. TABELLE I EtQualityGroupObjectPrivate Feld Datenart Qualitätsindex Intervall Zeiger auf in der Sammlung vorangehendes EtQualityGroupObjectPrivate Zeiger Zeiger auf in der Sammlung nachfolgendes EtQualityGroupObjectPrivate Zeiger Liste von Qualitätstypeintragungen Struktur A quality group object is a data structure that contains a set of quality control type variables, each of which has a value that is less than two or more. chooses more options in a compromise between rendering quality and rendering speed. Each quality group object is an example of the class EtQualityGroup object, as in 6 shown is a subclass of the EtSharedObject class. A quality group object has the in 12 shown format. In particular, an area of the memory 1202 contains pointers to methods of class EtQualityGroupObject, and this range 1202 contains pointer 1204 on object method and pointer 1206 on shared object methods (none of which are present). The structure also contains sample data for quality group object in the area 1210 of the memory. This area contains sample data specific to the object class in one part 1212 (on the object class 1202 showing), example data specific to the shared object class, in one part 1214 (Containing a reference count), and example data specific to the quality group feature class in a part 1216 , The quality group object data is a data structure of type EtQualityGroupObjectPrivate that contains the fields listed in Table I. TABLE I EtQualityGroupObjectPrivate field data type quality Index interval Pointer to EtQualityGroupObjectPrivate preceding in collection pointer Pointer to EtQualityGroupObjectPrivate following in collection pointer List of quality type entries structure

Wie man sehen kann, enthält abgesehen von den verbundenen Listenzeigern für andere Qualitätsgruppenobjekte in dem Qualitätssammelobjekt das Qualitätsgruppenobjekt ein Feld zum Speichern eines Qualitätsindexwertes, der der speziellen Gruppe zugeordnet ist. In einer Ausführungsform in der Qualitätsindex vom Typintervall und kann von 0,0 bis 1,0 reichen, aber bei anderen Ausführungsformen kann der Qualitätsindexwert beispielsweise eine ganze Zahl sein. Es sei angemerkt, daß in der vorliegend beschriebenen Ausführungsform der Qualitätsindexwert zwar in einem Feld in dem Qualitätsgruppenobjekt gespeichert ist, in einer anderen Ausführungsform der einer speziellen Qualitätsgruppe zugeordnete Qualitätsindex aber einfach ein berechneter Wert sein kann, wie beispielsweise n/N, wobei n die Position der speziellen Qualitätsgruppe in der verbundenen Liste der Sammlung und N die Gesamtzahl der Qualitäts gruppen in der Sammlung sind. In einer noch anderen Ausführungsform ist der Qualitätsindex, der einer speziellen Qualitätsgruppe zugeordnet ist, lediglich n, wobei die spezielle Qualitätsgruppe die n-Qualitätsgruppe in einer Sammlungsliste von Qualitätsgruppen ist. Viele andere Techniken können in verschiedenen Ausführungsformen verwendet werden, um einen Qualitätsindexwert einer entsprechender Qualitätsgruppe zuzuordnen.As you can see contains apart from the linked list pointers for other quality group objects in the quality collection object the quality group object a field for storing a quality index value corresponding to the specific Group is assigned. In one embodiment, in the quality index of Type interval and can range from 0.0 to 1.0, but in others embodiments can the quality index value for example, be an integer. It should be noted that in the presently described embodiment the quality index value although in a field in the quality group object is stored, in another embodiment of a special quality group associated quality index but can simply be a calculated value, such as n / N, where n is the position of the special quality group in the connected List of the collection and N the total number of quality groups in the collection are. In yet another embodiment, the quality index is the one of a special quality group is assigned, only n, with the special quality group the n quality group is in a collection list of quality groups. Many other Techniques can in different embodiments used to produce a quality index value of a corresponding quality group assigned.

Bezug nehmend noch einmal auf Tabelle 1 enthält jedes Qualitätsgruppenobjekt auch eine Liste von Qualitätstypeintragungen. Die Qualitätstypeintragungen sind ein Satz von Variablen, von denen jeder einen Wert enthält, der aus wenigstens zwei Optionen in einem jeweiligen Kompromiß zwischen Aufbereitungsqualität und Aufbereitungsgeschwindigkeit wählt. Für eine Ausführungsform gibt Tabelle II die verschiedenen Qualitätssteuervariablen und die verschiedenen Optionen an, die für diesen Parameter verfügbar sind. TABELLE II QUALITÄTSTYPPARAMETER Feld Optionen Linienstil ein, aus Schattierer aus, schnell, ein Beleuchtung aus, schnell, ein Detailniveau ein, aus berechne Schatten ein, aus berechne Transparenz aus, schnell, ein berechne Reflexionen ein, aus entferne Rückseite ein, aus Interpolation flach, gouroud, phong progressive Verfeinerung ein, aus Bildglättungsniveau flach (0,0 bis 1,0) Strahltiefe ganzzahlig Referring again to Table 1, each quality group object also contains a list of quality type entries. The quality type entries are a set of variables, each one of which Contains value that selects from at least two options in a respective compromise between rendering quality and rendering speed. For one embodiment, Table II gives the various quality control variables and the various options available for that parameter. TABLE II QUALITY TYPE PARAMETERS field options line style on off shaders out, fast, one lighting out, fast, one level of detail on off calculate shadows on off calculate transparency out, fast, one calculate reflections on off remove back on off interpolation flat, gouroud, phong progressive refinement on off Smoothing level flat (0.0 to 1.0) beam depth integer

Man erkennt, daß verschiedene Ausführungsformen einen anderen Satz Parameter in jeder Qualitätsgruppe enthalten kann und/oder unterschiedliche Optionen für jeden Parameter in der Tabelle aufweisen kann.you recognizes that different embodiments may contain a different set of parameters in each quality group and / or different options for can have any parameter in the table.

B. Prozeduren zur Einrichtung einer QualitätssammlungB. Procedures for setting up a quality collection

Bezug nehmend auf Anhang A., das beispielhafte Anwendungsprogramm richtet eine Qualitätssammlung ein, indem sie eine Prozedur ExSetupQualityCollection(&qualityCollection) aufruft. Diese Prozedur, die Teil des Anwendungsprogramm ist, verwendet von Escher angegebene Prozeduren zum Aufbau einer Sammlung von Qualitätsgruppen in einer gewünschten Weise. 13 ist ein Flußdiagramm einer Prozedur ExSetupQualityCollection(), die eine Qualitätssammlung einrichtet, die vier Qualitätsgruppen hat, mit Qualitätsindizes 0,2, 0,4, 0,6 bzw. 0,8.Referring to Appendix A, the example application program sets up a quality collection by calling an ExSetupQualityCollection (& qualityCollection) procedure. This procedure, which is part of the application program, uses procedures specified by Escher to build a collection of quality groups in a desired manner. 13 Figure 10 is a flow chart of an ExSetupQualityCollection () procedure that sets up a quality collection having four quality groups with quality indices 0.2, 0.4, 0.6, and 0.8, respectively.

Bezug nehmend auf 13 schafft in einem Schritt 1302 die Routine zunächst ein neues Qualitätssammlungsobjekt. Dieses wird mit einem Aufruf an eine Escher Prozedur ErQualityCollectionObject_New() erzielt, die Platz zuweist und die Datenstrukturen in der gleichen Weise initialisiert, wie oben unter Bezugnahme auf 10 beschrieben ist. ErQualityCollectionObject_New() führt einen Zeiger zum neuen Qualitätssammlungsobjekt zurück, was die Prozedur von 13 in einer variablen QualityCollection speichert.Referring to 13 creates in one step 1302 the routine initially a new quality collection object. This is achieved with a call to an Escher procedure ErQualityCollectionObject_New (), which allocates space and initializes the data structures in the same way as described above with reference to FIG 10 is described. ErQualityCollectionObject_New () returns a pointer to the new quality collection object, which is the procedure of 13 stores in a variable QualityCollection.

In einem Schritt 1304 erzeugt die Prozedur von 13 ein neues Qualitätsgruppenobjekt unter Verwendung einer Escher Routine ErQualityGroup_New (qualityIndex), wobei qualityIndex = 0,2. Diese Routine weist Speicherplatz für das neue Qualitätsgruppenobjekt unter Verwendung der Technik von 10 zu und initialisiert das Qualitätsindexfeld der Qualitätsgruppe auf 0,2.In one step 1304 generates the procedure from 13 a new quality group object using an Escher routine ErQualityGroup_New (qualityIndex), where qualityIndex = 0.2. This routine allocates space for the new quality group object using the technique of 10 and initializes the quality index field of the quality group to 0.2.

In der vorliegend beschriebenen Ausführungsform setzt der Aufruf der Prozedur ErQualityGroupObject_New() den Qualitätsindex für die neue Gruppe permanent. Wenn das Gruppenobjekt später zu einer Qualitätssammlung hinzugefügt wird, setzt die Escher Prozedur, die dieses tut (unten beschrieben) die neue Gruppe in die verbundene Liste der Sammlung in die geeignete Folge, die durch den Qualitätsindex der Qualitätsgruppe bestimmt ist. Wenn der Qualitätsindex der hinzuzufügenden Gruppe den Qualitätsindex einer bereits in der Sammlung befindlichen Gruppe verdoppelt, wird ein Fehler rückgeführt.In of the presently described embodiment sets the call the procedure ErQualityGroupObject_New () the quality index for the new group permanent. If the group object later becomes a quality collection added will put the Escher procedure doing this (described below) the new group in the linked list of the collection in the appropriate Episode, by the quality index the quality group is determined. If the quality index the to be added Group the quality index of a group already in the collection is doubled an error returned.

In einer weiteren Ausführungsform nimmt er ErQualityGroupObject_New() kein Argument, sondern initialisiert das Qualitätsindexfeld der neuen Gruppe auf einen Nullwert. Escher Routinen sind für das Anwendungsprogramm vorgesehen, um den Qualitätsindex der Gruppe nachfolgend zu setzen, wie gewünscht.In a further embodiment he does not take ErQualityGroupObject_New () argument, but initializes it the quality index field the new group to a zero value. Escher routines are for the application program provided the quality index following the group as desired.

Zurückkehrend zur 13 setzt das Anwendungsprogramm nach Erschaffung der ersten neuen Qualitätsgruppe die Parameter in die erste Gruppe, wie im Schritt 1306 gewünscht. In der vorliegend beschriebenen Ausführungsform wird jeder der Qualitätstypenparameter, die in obiger Tabelle II aufgeführt sind, einem einzigen 4-Zeichen-Code vom Typ EtQualityType zugeordnet. Um zukünftige Verbesserungen zu ermöglichen, lesen und schreiben Anwendungsprogramme die Parameterwerte nicht direkt, sondern tun dies nur über gewisse Escher Routinen. Darüber hinaus können Anwendungsprogramme die Escher Routinen für die Ermittlung verwenden, welche Qualitätsparameter durch die spezielle Version von Escher unterstützt werden. Qualitätstypcodes sind bei Apple Computer, Inc. registriert, sind für Anwendungsprogrammentwickler verfügbar und für nachfolgende Weiterentwicklungen von Escher brauchbar.Returning to 13 After creating the first new quality group, the application program sets the parameters in the first group as in the step 1306 desired. In the presently described embodiment, each of the quality type parameters listed in Table II above is mapped to a single 4-character type code of type EtQualityType. To enable future improvements, application programs do not read and write the parameter values directly, but do so only through certain Escher routines. In addition, application programs can use the Escher routines to determine which quality parameters are supported by the specific version of Escher. Quality type codes are registered with Apple Computer, Inc., are available to application program developers and are useful for subsequent development by Escher.

Die Escher Routinen, die in Tabelle III angegeben sind, werden durch das Anwendungsprogramm verwendet, um den Inhalt einer Qualitätsgruppe zu verwalten. TABELLE III QUALITÄTSGRUPPENAUFRECHTERHALTUNGSROUTINEN Escher Routine Kommentare EtStatus ErQualityGroup_GetFirstType( EtQualityGroupObject quality Group, EtQualityType *qualityType); Führt 4-Zeichen-Namen des ersten ”Typs” in der angegebenen Qualitätsgruppe zurück. Rückführung des Werts qualityType. EtSatus ErQualityGroup_GetNextType( EtQualityGroupObject qualityGroup, EtQualityType *quality Type); Führt 4-Zeichen-Namen des nächsten ”Typs” in der angegebenen Qualitätsgruppe zurück. EtStatus ErQualityGroup_GetTypeData( EtQlityGroupObject qualityGroup, EtQualityTypequalityType, void*data); Erhält den Gruppenwert für den Qualitätstyp qualityType (z. B. Bildglättungsniveau). Daten werden in Struktur ”Daten” rückgeführt. Führt Fehler rück, wenn Gruppe keinen Eintrag für den angegebenen Qualitätstyp hat. EtStatus EtQualityGroup_SetTypeData( ErQualityGroupObject qualityGroup, EtQualityType qualityType void *data); Setzt den Wert für den Qualitätstyp qualityType in die angegebene Qualitätsgruppe. Führt Fehler rück, wenn die Gruppe keinen Eintrag für den angegebenen Qualitätstyp hat. EtStatus ErQualityGroup_GetQualityIndex( EtQualityGroupObject qualityGroup, float *qualityIndex); Erhält den Qualitätsindexwert, der der Qualitätsgruppe zugeordnet ist, die in qualityGroup angegeben ist und führt den Wert in qualityIndex rück. The Escher routines given in Table III are used by the application program to manage the content of a quality group. TABLE III QUALITY GROUP MAINTENANCE ROUTINES Escher routine Comments EtStatus ErQualityGroup_GetFirstType (EtQualityGroupObject quality Group, EtQualityType * qualityType); Returns 4-character names of the first "type" in the specified quality group. Return the value qualityType. EtSatus ErQualityGroup_GetNextType (EtQualityGroupObject qualityGroup, EtQualityType * quality Type); Returns 4-character names of the next "type" in the specified quality group. EtStatus ErQualityGroup_GetTypeData (EtQlityGroupObject qualityGroup, EtQualityTypequalityType, void * data); Receives the group value for quality type qualityType (for example, Image Smoothing Level). Data is returned in structure "data". Returns errors if group has no entry for the specified quality type. EtStatus EtQualityGroup_SetTypeData (ErQualityGroupObject qualityGroup, EtQualityType qualityType void * data); Sets the value for quality type qualityType to the specified quality group. Returns errors if the group has no entry for the specified quality type. EtStatus ErQualityGroup_GetQualityIndex (EtQualityGroupObject qualityGroup, float * qualityIndex); Receives the quality index value associated with the quality group specified in qualityGroup and returns the value in qualityIndex.

Die Routine zur Erhaltung Qualitätsindex, der einer speziellen Qualitätsgruppe zugeordnet ist, wird als eine unabhängige Routine geliefert, weil der Qualitätsindexwert nicht einer der Qualitätstypen ist, die unter Verwendung von ErQualityGroup_GetTypeData() und Er QualityGroup_SetTypeData() verfügbar sind. In einer weiteren Ausführungsform kann der Indexwert, der einer speziellen Qualitätsgruppe zugeordnet ist, jedoch als einer der Qualitätstypen eingeschlossen sein, die unter Verwendung dieser Routinen zugänglich sind.The Routine for maintaining quality index, the one of a special quality group is assigned as an independent routine because the quality index value not one of the quality types using ErQualityGroup_GetTypeData () and Er QualityGroup_SetTypeData () available are. In a further embodiment however, the index value associated with a particular quality group may as one of the quality types which are accessible using these routines.

Im Schritt 1308 fügt die Prozedur von 13 das erste Qualitätssteuergruppenobjekt zum Qualitätssammelobjekt, das im Schritt 1302 erzeugt wurde, hinzu. Dieses wird unter Verwendung einer Escher Prozedur ErQualityCollection_AddGroup() erzielt, die eine von mehreren Qualitätssammelaufrechterhaltungsprozeduren ist, die in Tabelle IV beschrieben sind. TABELLE IV QUALITÄTSSAMMELAUFRECHTERHALTUNGSROUTINEN Escher Routine Kommentare EtStatus ErQualityCollection_GetFirstGroup( EtQualityCollectionObject qualityCollection, EtQualityGroupObject *qualityGroup); Führt einen Zeiger auf die erste Qualitätsgruppe in der angegebenen Qualitätssammlung in quality group zurück. EtStatus ErQualityCollection_GetNextGroup( EtQualityCollectionObject qualityCollection, EtQualityGroupObject *qualityGroup); Führt einen Zeiger auf die nächste Qualitätsgruppe in der angegebenen Qualitätssammlung in quality group zurück. EtStatus ErQualityCollection_AddGroup( EtQualityCollectionObject qualityCollection, EtQualityGroupObject *qualityGroup); Fügt die angegebene Qualitätsgruppe zur angegebenen Qualitätssammlung hinzu. Bringt die neue Qualitätsgruppe automatisch in sortierte rdnung in der mit der Qualitätssammlung verbundenen Liste gemäß dem Qualitätsindex. Führt einen Fehler rück, wenn der Qualitätsindex der neuen Qualitätsgruppe bereits einer anderen Gruppe in der Sammlung zugeordnet ist. EtStatus ErQualityCollection_DeleteGroup( EtQualityCollectionObject qualityCollection, EtQualityGroupObject *qualityGroup); Löscht die angegebene Qualitätsgruppe aus der angegebenen Qualitätssammlung. Da Qualitätsgruppen geteilte Objekte sind, vermindert diese Prozedur lediglch die Referenzzählung, wobei aktuell das Objekt gelöscht und die Speicherzuordnung aufgehoben wird, nur wenn die resultierende Bezugszählung Null ist. In step 1308 adds the procedure from 13 the first quality control group object to the quality collection object that was created in step 1302 was generated added. This is achieved using an Escher procedure ErQualityCollection_AddGroup (), which is one of several quality collection maintenance procedures described in Table IV. TABLE IV QUALITY SAMPLING MAINTENANCE ROUTINES Escher routine Comments EtStatus ErQualityCollection_GetFirstGroup (EtQualityCollectionObject qualityCollection, EtQualityGroupObject * qualityGroup); Returns a pointer to the first quality group in the specified quality collection in quality group. EtStatus ErQualityCollection_GetNextGroup (EtQualityCollectionObject qualityCollection, EtQualityGroupObject * qualityGroup); Returns a pointer to the next quality group in the specified quality collection in quality group. EtStatus ErQualityCollection_AddGroup (EtQualityCollectionObject qualityCollection, EtQualityGroupObject * qualityGroup); Adds the specified quality group to the specified quality collection. Automatically sorts the new quality group into the list associated with the quality collection according to the quality index. Returns an error if the quality index of the new quality group is already assigned to another group in the collection. EtStatus ErQualityCollection_DeleteGroup (EtQualityCollectionObject qualityCollection, EtQualityGroupObject * qualityGroup); Deletes the specified quality group from the specified quality collection. Since quality groups are shared objects, this procedure only reduces the reference count, currently deleting the object and clearing the memory allocation only if the resulting reference count is zero.

Wie man sehen kann, fügt die Routine ErQualityCollection_AddGroup() die neue Qualitätsgruppe automatisch zur Sammlung in sortierter Reihenfolge in Übereinstimmung mit dem Qualitätsindex hinzu. Wenn der Qualitätsindex der neuen Gruppe bereits einer anderen Gruppe in der Sammlung zugeordnet ist, wird ein Fehler rückgemeldet. In einer anderen Ausführungsform können die Escher Routinen jedoch schreiben, um der Möglichkeit Rechnung zu tragen, daß zwei oder mehr Qualitätsgruppen den gleichen Qualitätsindex in einer einzigen Qualitätssammlung haben. Auch sind, wie zuvor erwähnt, andere Ausführungsformen möglich, in denen das Anwendungsprogramm den Qualitätsindex, der einer Gruppe wie gewünscht zugeordnet ist, ändern kann. Wenn in einer solchen Ausführungsform der Qualitätsindex bereits einer Gruppe in einer oder mehreren Qualitätssammlungsobjekten zugeordnet ist, erkennt man, daß gewisse Buchhaltungsfunktionen möglicherweise ausgeführt werden müssen, um jede betroffene Qualitätssammlung in sortierter Reihenfolge aufrechtzuerhalten und/oder um doppelte Qualitätsindizes in der selben Qualitätssammlung zu handhaben.As you can see, adds the routine ErQualityCollection_AddGroup () the new quality group automatically to collection in sorted order in accordance with the quality index added. If the quality index the new group already assigned to another group in the collection is, an error is returned. In another embodiment can the Escher routines, however, write to take account of the possibility that two or more quality groups the same quality index in a single quality collection to have. Also, as previously mentioned, other embodiments possible, where the application program is the quality index that a group like required is assigned, can change. If in such an embodiment the quality index already a group in one or more quality collection objects is assigned, one recognizes that certain Accounting features may be accomplished Need to become, around every affected quality collection in sorted order and / or duplicate quality indices in the same quality collection to handle.

Bezug nehmend auf 3, nach dem Hinzufügen des ersten Qualitätsgruppenobjekts zum Qualitätssammlungsobjekt erzeugt die Prozedur ein zweites neues Qualitätsgruppenobjekt im Schritt 310, dieses Mal unter Verwendung eines Qualitätsindex von 0,4. Im Schritt 312 setzt die Prozedur die Parameter in das zweite Qualitätsgruppenobjekt wie gewünscht, und im Schritt 1314 fügt sie das zweite Qualitätsgruppenobjekt zum Qualitätsobjekt in der zuvor beschriebenen Weise hinzu.Referring to 3 After adding the first quality group object to the quality collection object, the procedure creates a second new quality group object in the step 310 , this time using a quality index of 0.4. In step 312 The procedure sets the parameters in the second quality group object as desired and in the step 1314 It adds the second quality group object to the quality object in the manner described above.

In den Schritten 1316, 1318 und 1320 wird ein drittes Qualitätsgruppenobjekt mit einem Qualitätsindex von 0,6 erzeugt, wie gewünscht modifiziert und zum Qualitätsgruppenobjekt hinzugefügt. In gleicher Weise wird in den Schritten 1322, 1324 und 1326 ein viertes neues Qualitätsgruppenobjekt erzeugt, unter Verwendung eines Qualitätsindex von 0,8, die Parameter werden in geeigneter Weise im vierten Qualitätsgruppenobjekt eingestellt, und es wird zum Qualitätssammlungsobjekt in der zuvor beschriebenen Weise hinzugefügt. Dieses vervollständigt die Anwendungsprogrammprozedur ExSetupQualityCollection() (Schritt 1328).In the steps 1316 . 1318 and 1320 a third quality group object with a quality index of 0.6 is generated, modified as desired, and added to the quality group object. In the same way, in the steps 1322 . 1324 and 1326 generates a fourth new quality group object using a quality index of 0.8, the parameters are set appropriately in the fourth quality group object, and it is added to the quality collection object in the manner described above. This completes the application program procedure ExSetupQualityCollection () (step 1328 ).

Man erkennt, daß in einer weiteren Ausführungsform anstatt des Erfordernisses, das jedes Anwendungsprogramm seine Qualitätssammlung aufbaut, die Escher Routinen eine Prozedur lediglich zum Schaffen einer Fehlerqualitätssammlung liefern kann. Eine solche Fehlerqualitätssammlung kann vordefiniert werden, um vier oder fünf Qualitätsgruppen zu enthalten, die jeweils mit Qualitätstypwerten gefüllt sind, so daß der Gesamtfortschritt von der Qualitätsgruppe mit dem niedrigsten Qualitätsindex zur Qualitätsgruppe mit dem höchsten Qualitätsindex von einer monoton zunehmenden Gesamtqualität und einer monoton abnehmenden Gesamtgeschwindigkeit im Gesamtkompromißspektrum Qualität/Geschwindigkeit gefolgt wird.It will be appreciated that in another embodiment, rather than requiring each application program to build its quality collection, the Escher routines may provide a procedure merely for providing error quality collection. Such an error quality collection can be predefined to contain four or five quality groups, each filled with quality type values, so that the overall progress from the quality group with the lowest quality index to the quality group with the highest The quality index is followed by a monotonously increasing overall quality and a monotonically decreasing overall speed in the overall quality / speed compromise spectrum.

Man erkennt weiterhin, daß für die Aufbereitung einiger Bilder eine erste Qualitätsgruppe, die einen ersten Satz Qualitätstypenwerten hat, mit einer höheren Qualität und einer niedrigeren Geschwindigkeit aufbereiten kann, als dieses mit einer zweiten Gruppe, die einen zweiten Satz Qualitätstypenwerten hat, der Fall wäre, während ein anderes Bild mit niedrigerer Qualität und höherer Geschwindigkeit mit der ersten Qualitätsgruppe aufbereitet werden könnte und mit höherer Qualität und niedriger Geschwindigkeit mit der zweiten Qualitätsgruppe. Aufbereitungen, die mit unterschiedlichen Aufbereitern ausgeführt werden, können auch in umgekehrter Reihenfolge ausgeführt werden. Wegen dieser Möglichkeiten führen Escher Routinen keine willkürliche Konzeption aus, von denen Permutationen von Qualitätstypwerten niedrigere oder höhere Qualitätsindizes zugeordnet sein sollten. Das Anwendungsprogramm ist frei, jeden gewünschten Satz Qualitätstypwerte in einer gegebenen Qualitätsgruppe zu errichten, ohne Rücksicht auf den Qualitätsindexwert, der einer solchen Qualitätsgruppe zugeordnet ist. Es versteht sich, daß in einer anderen Ausführungsform ein solches Verhältnis tatsächlich geschaffen werden kann.you recognizes further that for the treatment some pictures a first quality group, the first set of quality type values has, with a higher quality and a lower speed than this with a second group giving a second set of quality type values has, that would be the case while another picture with lower quality and higher speed with the first quality group could be processed and with higher quality and low speed with the second quality group. Preparations that are carried out with different conditioners can also be executed in reverse order. Because of these possibilities to lead Escher routines no arbitrary Conception of which permutations of quality type values lower or higher quality indices should be assigned. The application program is free, every desired Set of quality type values in a given quality group to build, without consideration on the quality index value, of such a quality group assigned. It is understood that in another embodiment such a relationship actually created can be.

C. Prozeduren zum Auswählen und Erhalten einer QualitätsgruppeC. Procedures for Selecting and Maintaining a Quality Group

Ein Vorteil, mehrere Qualitätsgruppen in einer Sammlung zur Verfügung zu haben, in denen jeweils ein entsprechender Qualitätsindexwert zugeordnet ist, besteht darin, daß ein Anwendungsprogramm einen Benutzer auffordern kann, einen gewünschten Punkt im Kompromiß zwischen Aufbereitungsqualität und Geschwindigkeit unter Verwendung eines intuitiv geeigneten Mechanismus auszuwählen. Bezug nehmend wieder auf das beispielhafte Programm in Anhang A. tut dies das Anwendungsprogramm unter Verwendung einer Anwendungsprogrammroutine ExGetDesiredQualityIndex(). 14 ist ein Flußdiagramm, das die Hauptschritte in einer solche Prozedur zeigt. Bezug nehmend auf 14 zeigt die Prozedur in einem Schritt 1402 ein Qualitätsknopfpiktogramm an. Solch ein Piktogramm ist in 15 dargestellt und wie man sehen kann, sieht es wie ein Knopf aus. Es hat einen Zeiger, der gerade auf einen Qualitätsindexwert 0,0 zeigt, und der Benutzer kann auf den Punkt der Nadel drücken und die Nadel um den Kreis drehen, um jeden gewünschten Qualitätsindex zwischen 0,0 und fast 1,0 auszuwählen. In einer Ausführungsform sind die verfügbaren Positionen des Knopfes stufenlos, was es dem Benutzer erlaubt, einen Qualitätsindex mit der vollen Feinheit des Binärregisters auszuwählen, in dem er gespeichert ist. Bei einer anderen Ausführungsform können nur diskrete Werte ausgewählt werden.An advantage of having multiple quality groups in a collection, each associated with a corresponding quality index value, is that an application program can prompt a user to select a desired point in the tradeoff between rendering quality and speed using an intuitively appropriate mechanism. Referring back to the example program in Appendix A, the application program does this using an application program routine ExGetDesiredQualityIndex (). 14 Fig. 10 is a flow chart showing the major steps in such a procedure. Referring to 14 shows the procedure in one step 1402 a quality button pictogram. Such a pictogram is in 15 As you can see, it looks like a button. It has a pointer pointing straight to a quality index value of 0.0, and the user can press on the point of the needle and rotate the needle around the circle to select any desired quality index between 0.0 and almost 1.0. In one embodiment, the available positions of the button are stepless, allowing the user to select a quality index with the full fineness of the binary register in which it is stored. In another embodiment, only discrete values can be selected.

Zurückkehrend auf 14 nimmt in Schritt 1404 die Prozedur die Wahl des vom Benutzer gewählten Qualitätsindex an. Im Schritt 1406 wird der gewünschte Qualitätsindex zur Aufrufroutine rückgemeldet.Returning to 14 takes in step 1404 the procedure selects the user selected quality index. In step 1406 the desired quality index is returned to the call routine.

Der Aufbereiter wird über die ausgewählte Qualitätsgruppe informiert, in dem entweder zum Aufbereiterobjekt in einer Ausführungsform oder zum Sichtobjekt in einer Ausführungsform die Qualitätsgruppe angehängt wird. In der vorliegend beschriebenen Ausführungsform wird sie dem Sichtobjekt angehängt. Escher liefert in Tabelle V die Routinen zum Auswählen und Erhalten eines Qualitätsgruppenobjektes. TABELLE V ROUTINEN ZUM AUSWAHLEN UND ERHALTEN VON QUALITÄTSGRUPPEN Escher Routine Kommentare EtStatus ErView_SelectQualityGroup( EtViewObject view, EtQualityCollectionObject qualityCollection, float desiredQualityIndex); Wählt eine Qualitätsgruppe aus einer angegebenen Qualitätssammlung in Abhängigkeit von dem Qualitätsindex aus, der in desiredQualityIndex ist. Wenn der angegebene Qualitätsindex nicht mit dem Index übereinstimmt, der irgendeiner Qualitätsgruppe in der Qualitätssammlung zugeordnet ist, wählt diese Routine die Qualitätsgruppe mit dem nächstkommenden Qualitätsindex aus. EtStatus ErView_GetQualityGroup( EtViewObject view, EtQualityGroupObject *qualityGroup); Führt in qualityGroup einen Zeiger auf das Qualitätsgruppenobjekt rück, das augenblicklich in dem angegebenen Sichtobjekt ausgewählt ist. Diese Prozedur kann durch das Anwendungsprogramm dazu verwendet werden, Einzelwerte in einer Qualitätsgruppe zu verwalten. Diese Prozedur oder eine ähnliche kann auch durch einen Aufbereiter als Vorspiel zur Erzielung der individuellen Qualitätstypenwerte verwendet werden in Abhängigkeit wovon er seine Aufbereitungsprozeduren einrichtet. The conditioner is informed of the selected quality group by appending the quality group to either the renderer object in one embodiment or the view object in one embodiment. In the presently described embodiment, it is appended to the viewing object. Escher supplies in Table V the routines for selecting and maintaining a quality group object. TABLE V ROUTINES FOR SELECTING AND OBTAINING QUALITY GROUPS Escher routine Comments EtStatus ErView_SelectQualityGroup (EtViewObject view, EtQualityCollectionObject qualityCollection, float desiredQualityIndex); Selects a quality group from a specified quality collection depending on the quality index, which is in desiredQualityIndex. If the specified quality index does not match the index associated with any quality group in the quality collection, this routine selects the quality group with the closest quality index. EtStatus ErView_GetQualityGroup (EtViewObject view, EtQualityGroupObject * qualityGroup); In qualityGroup, returns a pointer to the quality group object currently selected in the specified view object. This procedure can be used by the application program to manage single values in a quality group. This procedure or the like can also be used by a preparer as a prelude to obtaining the individual quality type values, depending on what he sets up his reprocessing procedures.

Das beispielhafte Anwendungsprogramm in Anhang A. verwendet die Escher Routine ErView_SelectQualityGroup(), um für das Sichtobjekt die Qualitätsgruppe auszuwählen, deren Qualitätsindex mit dem übereinstimmt oder ihm am nächsten kommt, der vom Be nutzer angegeben ist. Es sei angemerkt, daß andere Ausführungsformen andere Rundungsfunktionen für die Situation verwenden können, wo der gewünschte Qualitätsindex nicht mit jenem übereinstimmt, der irgendeiner der Qualitätsgruppen in der Qualitätssammlung zugeordnet ist. In der vorliegenden Ausführungsform wird die Qualitätssammlung mit dem nächstkommenden Qualitätsindexwert ausgewählt; wenn die Qualitätsindizes, die Zweitqualitätsgruppen zugeordnet sind, in gleicher Weise von dem gewünschten Qualitätsindex verschieden sind, dann wird die Gruppe mit dem höheren Qualitätsindex ausgewählt. In einer anderen Ausführungsform wird der gewünschte Qualitätsindex stets aufgerundet und in einer noch anderen Ausführungsform wird der gewünschte Qualitätsindex stets abgerundet.The Exemplary application program in Appendix A. uses the Escher Routine ErView_SelectQualityGroup () to set the quality group for the view object select their quality index with that matches or closest to him comes specified by the Be user. It should be noted that others embodiments other rounding functions for can use the situation where the desired quality Index does not agree with that the one of the quality groups in the quality collection assigned. In the present embodiment, the quality collection with the nearest one Quality index value selected; if the quality indices, the second quality groups in the same way from the desired quality index are different, then the group with the higher quality index selected. In another embodiment will be the desired Quality index always rounded up and in yet another embodiment becomes the desired quality index always rounded.

D. AufbereiterprozedurenD. conditioner procedures

Jeder Aufbereiter, der dazu aufgerufen ist, eine Gestalt einer bestimmten Ansicht aufzubereiten, tut dies in Abhängigkeit von den individuellen Werten der Qualitätstypen in der Qualitätsgruppe, die dem Sichtobjekt gegenwärtig zugeordnet sind. Unterschiedliche Aufbereiter können wählen, auf unterschiedliche der Qualitätstypparameter anzusprechen und andere zu ignorieren. 16 ist ein Flußdiagramm einschlägiger Aspekte einer Prozedur ErRT_Geometry_Triangle() eines Strahlzeichneraufbereiters zum Aufbereiten eines Dreiecks.Any preparer called to render a shape of a particular view will do so depending on the individual values of the quality types in the quality group currently associated with the view object. Different preparers may choose to address different quality type parameters and ignore others. 16 FIG. 10 is a flow chart of pertinent aspects of a procedure ErRT_Geometry_Triangle () of a ray painter builder for rendering a triangle.

Bezug nehmend auf 16 verwendet die Prozedur im Schritt 1602 die obengenannte Escher Prozedur ErView_GetQualityGroup() oder eine ähnliche, um einen Zeiger auf die Qualitätsgruppe zu erhalten, die augenblicklich der Ansicht zugeordnet ist. Im Schritt 1604 erhält die Prozedur die Daten für das Dreieck, das zu der Ansicht aufzubereiten ist. In den Schritten 1606, 1608 und 1610 schlägt die Prozedur Werte zweier unterschiedlicher Qualitätstypparameter in der laufenden Qualitätsgruppe nach, um zu bestimmen, welche Variation der Dreieckaufbereitungsprozedur verwendet werden sollte. Insbesondere im Schritt 1606 erhält die Prozedur unter Verwendung der Escher Prozedur ErQualityGroup_GetTypeData() den Wert für den Qualitätstypparameter ”berechne Reflexionen”. Wenn der Wert ”ein” ist, was eine Wahl höhere Qualität/niedrigere Geschwindigkeit darstellt, geht die Steuerung zum Schritt 1608 über. Wenn ”berechne Reflexionen” jedoch ”aus” ist, geht die Steuerung zum Schritt 1610 über.Referring to 16 uses the procedure in step 1602 the above Escher procedure ErView_GetQualityGroup () or a similar one to get a pointer to the quality group currently assigned to the view. In step 1604 the procedure gets the data for the triangle that is to be rendered to the view. In the steps 1606 . 1608 and 1610 The procedure looks for values of two different quality type parameters in the current quality group to determine which variation of the triangulation procedure should be used. Especially in the step 1606 the procedure obtains the value for the quality type parameter "compute reflections" using the Escher procedure ErQualityGroup_GetTypeData (). If the value is "on", which is a choice of higher quality / lower speed, then the controller goes to step 1608 above. However, if "calculate reflections" is "off", control goes to step 1610 above.

Schritt 1608 bestimmt als nächstes den Wert des Qualitätstypparameters ”berechne Schatten” in der augenblicklichen Qualitätsgruppe. Wenn ”berechne Schatten” ”ein” ist, dann bereitet in einem Schritt 1612 die Prozedur das Dreieck unter Verwendung des Wertes für den Qualitätstypparameter ”Strahltiefe” auf unter Verwendung von Reflexionen und unter Verwendung von Schatten. Wenn ”berechne Schatten” ”aus” ist, dann bereitet die Prozedur das Dreieck unter Verwendung der angegebenen Strahltiefe, unter Verwendung von Reflexionen jedoch ohne Schatten auf (Schritt 1614).step 1608 Next, determine the value of the quality type parameter "calculate shadows" in the current quality group. If "compute shadow" is "on", then prepare in one step 1612 the Perform the triangle using the "Jet depth" quality type parameter value using Reflections and Using Shadows. If "compute shadow" is "off" then the procedure will prepare the triangle using the specified beam depth, but using reflections but without shadow (step 1614 ).

Wenn ”berechne Reflexionen” ”aus” war, dann macht im Schritt 1610 eine Bestimmung ähnlich dem Schritt 1608. Wenn ”berechne Schatten” ”ein” ist, dann bereitet im Schritt 1616 die Prozedur das Dreieck unter Verwendung der angegebenen Strahltiefe, unter Berechnung von Schatten jedoch ohne Berechnung von Reflexionen auf. Wenn ”berechne Schatten” im Schritt 1610 ”ein” ist, dann bereitet die Prozedur im Schritt 1618'' das Dreieck unter Verwendung der angegebenen Strahltiefe, jedoch ohne Berechnung irgendwelcher Schatten oder Reflexionen auf.If "calculate reflections" was "off", then do in step 1610 a determination similar to the step 1608 , If "compute shadow" is "on", then prepare in step 1616 the procedure reveals the triangle using the specified beam depth, but calculating shadows without calculating reflections. If "calculate shadows" in step 1610 Is "on", then prepare the procedure in step 1618 '' the triangle using the specified beam depth, but without calculating any shadows or reflections.

Man kann sehen, daß zur Vereinfachung die Aufbereiterprozedur in 16 nur auf die ”Strahltiefe”, ”berechne Reflexionen” und ”berechne Schatten” – Qualitätstypparameter in dem augenblicklichen Qualitätsgruppenobjekt anspricht. Andere Aufbereiter können jedoch auf viel mehr der Qualitätstypparameter ansprechen, wie für die spezielle Art Aufbereiter geeignet sein kann.It can be seen that, for simplicity, the conditioner procedure in FIG 16 only to the "ray depth", "compute reflections" and "compute shadows" - quality type parameter in the current quality group object responds. However, other conditioners may respond to much more of the quality type parameters, as may be appropriate for the particular type of conditioner.

Die vorangehende Beschreibung bevorzugter Ausführungsformen der vorliegenden Erfindung ist zum Zwecke der Erläuterung und Beschreibung gegeben worden. Sie ist nicht als erschöpfend oder die Erfindung auf die dargestellten genauen Ausführungsformen beschränkt zu verstehen. Augenscheinlich können viele Modifikationen und Variationen von Praktikern dieses Gebiets vorgenommen werden. Die Ausführungsformen wurden gewählt und beschrieben, um die Prinzipien der Erfindung und ihre praktische Anwendung am besten zu erläutern, um dadurch andere Fachleute in die Lage zu versetzen, die Erfindung für zahlreiche Ausführungsformen und mit zahlreichen Modifikationen zu verstehen, wie sie für den speziell vorgesehenen Zweck geeignet sind. Der Umfang der Erfindung soll durch die folgenden Ansprüche und ihre Äquivalente bestimmt werden. ANLAGE A BEISPIELHAFTES ANWENDUNGSPROGRAMM

Figure 00920001
Figure 00930001
Figure 00940001
Figure 00950001
Figure 00960001
Figure 00970001
ANHANG B ErWF Geometry Polygon()
Figure 00980001
Figure 00990001
Figure 01000001
The foregoing description of preferred embodiments of the present invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise embodiments shown. Obviously, many modifications and variations can be made by practitioners of this field. The embodiments have been chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling other persons skilled in the art to understand the invention for numerous embodiments and numerous modifications as intended for the particular intended purpose are suitable. The scope of the invention should be determined by the following claims and their equivalents. ANNEX A EXEMPLARY APPLICATION PROGRAM
Figure 00920001
Figure 00930001
Figure 00940001
Figure 00950001
Figure 00960001
Figure 00970001
APPENDIX B ErWF Geometry Polygon ()
Figure 00980001
Figure 00990001
Figure 01000001

Claims (10)

Verfahren zum Erschaffen einer Darstellung einer Szene, die auf einer Graphikvorrichtung anzeigbar ist, umfassend die Schritte: Liefern einer Darstellung eines ersten Objekts; Liefern von mehreren Qualitätssteuerdatengruppen, die jeweils mehrere Qualitätssteuertypvariable haben, von denen jede Typvariable einen Wert enthält, der unter einer Mehrzahl Optionen in einem betreffenden Kompromiß zwischen der Aufbereitungsqualität und der Aufbereitungsgeschwindigkeit auswählt; Auswählen einer ausgewählten der Qualitätssteuerdatengruppen für ein Objektzeichnungsuntersystem; und Aufrufen des Objektzeichnungsuntersystems zur Aufbereitung des ersten Objekts in der Szene; wobei das Objektzeichnungsuntersystem das erste Objekt in die Szene in Übereinstimmung mit den Werten in jeder der Typvariablen in der ausgewählten Qualitätssteuerdatengruppe aufbereitet.Method for creating a representation of a Scene that is displayable on a graphics device comprising the steps: Providing a representation of a first object; Deliver of several quality control data groups, each of several quality control type variables have each value of a type variable, the among a plurality of options in a compromise between the processing quality and select the editing speed; Select one chosen the quality control data groups for a Object drawing subsystem; and Invoke the object drawing subsystem for processing the first object in the scene; the Object drawing subsystem matches the first object in the scene with the values in each of the type variables in the selected quality control data group edited. Verfahren nach Anspruch 1, bei dem das erste Objekt ein Modell ist, das mehrere Unterobjekte enthält.The method of claim 1, wherein the first object is a model that contains multiple subobjects. Verfahren nach Anspruch 1, bei dem der Schritt des Lieferns mehrere Qualitätssteuerdatengruppen die folgenden Schritte umfasst: Liefern mehrerer vorläufiger Qualitätsdatensteuergruppen, die jeweils mehrere Qualitätssteuertypvariablen haben; und Aufrufen einer Werteinstellprozedur mit einer Angabe einer gewünschten der Qualitätstypsteuervariablen, einer gewünschten der Qualitätssteuerdatengruppen und eines gewünschten Wertes zum Einschreiben in die gewünschte Variable in der gewünschten Gruppe, wobei die Werteinstellprozedur den gewünschten Wert in die gewünschte Variable in der gewünschten Gruppe einschreibt.The method of claim 1, wherein the step of providing a plurality of quality control data groups comprises the steps of: providing a plurality of preliminary quality data control groups each having a plurality of quality control type variables; and calling a value setting procedure with an indication of a desired one of the quality type control variables, a desired one of the quality control data groups and a desired value for writing into the desired variable in the desired group, the value setting procedure setting the desired value in encrypts the desired variable in the desired group. Verfahren nach Anspruch 1, bei dem der Schritt der Lieferung mehrerer Qualitätssteuergruppen die folgenden Schritte umfaßt: Liefern einer vorläufigen Vielzahl Qualitätsdatensteuergruppen; und Aufrufen einer Datengruppenzufügeprozedur zum Hinzufügen einer gewünschten neuen der Qualitätsdatensteuergruppen zu der vorläufigen Vielzahl von Qualitätsdatensteuergruppen.The method of claim 1, wherein the step of Delivery of several quality tax groups the following steps include: Deliver a preliminary one Variety of quality data control groups; and invoking a data group addition procedure to add one desired new quality data control groups to the provisional Variety of quality data control groups. Verfahren nach Anspruch 4, bei dem jede der Qualitätsdatensteuergruppen in der vorläufigen Vielzahl Qualitätsdatensteuergruppen einen anderen jeweiligen Indexwert zugeordnet hat, und wobei der Schritt der Lieferung mehrerer Qualitätsdatensteuergruppen weiterhin den Schritt des Zuordnens eines gewünschten neuen Indexwertes zu der gewünschten neuen Qualitätssteuerdatengruppe aufweist, wobei der gewünschte neue Indexwert verschieden von den Indexwerten ist, die jeder der Qualitätssteuerdatengruppen in der vorläufigen Vielzahl von Qualitätssteuerdatengruppen zugeordnet sind.The method of claim 4, wherein each of the quality data control groups in the provisional Variety of quality data control groups has assigned a different respective index value, and wherein the Step of delivering multiple quality data control groups continues the step of assigning a desired new index value the desired new quality control data group having the desired new one Index value is different from the index values that each of the quality control data groups in the provisional Variety of quality control data groups assigned. Verfahren nach Anspruch 1, bei dem jede der Qualitätssteuerdatengruppen der Vielzahl Qualitätssteuerdatengruppen jeweils einen Indexwert zugeordnet hat, wobei der Schritt der Auswahl einer ausgewählten der Qualitätssteuerdatengruppen den Schritt des Aufrufs einer Datengruppenauswahlprozedur mit einem gewünschten Indexwert umfaßt, und wobei die Datengruppenauswahlprozedur die ausgewählte der Qualitätssteuerdatengruppen in Abhängigkeit von dem gewünschten Indexwert auswählt.The method of claim 1, wherein each of the quality control data groups the variety of quality control data groups each assigned an index value, the step being the Selection of a selected one the quality control data groups the step of calling a data group selection procedure with a desired Includes index value, and wherein the data group selection procedure is the selected one of Quality control data groups in dependence of the desired one Selects index value. Verfahren nach Anspruch 6, bei dem die Datengruppenauswahlprozedur die ausgewählte der Qualitätssteuerdatengruppen als eine der Qualitätssteuerdatengruppen in der Vielzahl der Qualitätssteuerdatengruppen auswählt, deren zugehöriger Indexwert dem gewünschten Indexwert am nächsten ist.The method of claim 6, wherein the data group selection procedure the selected one the quality control data groups as one of the quality control data groups in the variety of quality control data groups selects their associated Index value the desired Index value closest is. Verfahren nach Anspruch 1, bei dem eine erste der Qualitätssteuertypvariablen einen Wert enthält, der auswählt, ob (a) Schattierer durch ein Hochqualitätsverfahren berechnet werden sollen; (b) Schattierer durch ein Hochgeschwindigkeitsverfahren berechnet werden sollen, oder (c) Schattierer nicht berechnet werden sollen.The method of claim 1, wherein a first of the Quality control type variables contains a value, who chooses whether (a) shaders are calculated by a high quality method should; (b) Shaders by a high-speed method or (c) shaders should not be calculated should. Verfahren nach Anspruch 1, bei dem eine erste der Quaiitätssteuertypvariablen einen Wert enthält, der ein Detailniveau auswählt, mit dem das Objektzeichnungsuntersystem das erste Objekt in die Szene aufbereiten soll.The method of claim 1, wherein a first of the Quaiitätssteuertypvariablen contains a value, who selects a level of detail, the object drawing subsystem uses the first object in the To process the scene. Verfahren nach Anspruch 1, bei dem die Vielzahl Qualitätstypvariablen wenigstens zwei aus der Gruppe enthält, die besteht aus: (a) eine Linienstilvariable, enthaltend einen Wert, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene mit Linienstilen ein- oder aus-aufbereiten soll; (b) eine Schattierervariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene mit Schattierern aus, schnell oder ein aufbereiten soll; (c) eine Beleuchtungsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene mit Beleuchtung aus, schnell oder ein aufbereiten soll; (d) eine Detailniveauvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene mit Detailniveau ein oder aus aufbereiten soll; (e) eine Schattenberechnungsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem Schatten berechnen soll, wenn das erste Objekt in die Szene aufbereitet wird; (f) eine Transparenzberechnungsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem eine Transparenz berechnen soll, wenn das erste Objekt in die Szene aufbereitet wird; (g) eine Reflexionsberechnungsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem Reflexionen berechnen soll, wenn es das erste Objekt in die Szene aufbereitet; (h) eine Rückwärtswendungsbeseitigungsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene aufbereiten soll, mit einer Beseitigung der Rückwendung ein oder aus; (i) eine Interpolationsvariable, die einen Wert enthält, der angibt, ob das Objektzeichnungsuntersystem das erste Objekt in die Szene mit flacher, Gouraud- oder Phong-Interpolation aufbereiten soll; (j) eine Progressive Verfeinerungsvariable, die einen Wert enthält, der angibt, ob, das Objektzeichnungsuntersystem das erste Objekt in die Szene mit progressiver Verfeinerung ein oder aus aufbereiten soll; (k) eine Bildglättungsniveauvariable, die einen Wert enthält, der ein Bildglättungsniveau angibt, mit dem das Objektzeichnungsuntersystem das erste Objekt in die Szene aufbereiten soll; und (l) eine Strahltiefenvariable, die einen. Wert enthält, der eine Strahltiefe angibt, mit der das Objektzeichnungssystem das erste Objekt in dieser Szene aufbereiten soll.The method of claim 1, wherein the plurality of quality type variables includes at least two of the group consisting of: (a) a line style variable containing a value indicating whether the object drawing subsystem inputs or removes the first object into the scene with line styles to process; (b) a shader variable containing a value indicating whether the object drawing subsystem is to render the first object into the scene with shaders off, fast or on; (c) a lighting variable containing a value indicating whether the object drawing subsystem is to render the first object into the scene with illumination off, fast or on; (d) a detail level variable containing a value indicating whether the object drawing subsystem is to render the first object into or out of the detail level scene; (e) a shadow calculation variable containing a value indicating whether the object drawing subsystem is to compute shadows when rendering the first object into the scene; (f) a transparency calculation variable containing a value indicating whether the object drawing subsystem should calculate transparency when the first object is rendered in the scene; (g) a reflection calculation variable containing a value indicating whether the object drawing subsystem should calculate reflections when rendering the first object into the scene; (h) a reverse use removal variable containing a value indicating whether the object drawing subsystem is to render the first object into the scene with elimination of the return action on or off; (i) an interpolation variable containing a value indicating whether the object drawing subsystem is to render the first object into the flat, Gouraud or Phong interpolation scene; (j) a progressive refinement variable containing a value indicating whether or not the object drawing subsystem is to render the first object into or out of the progressive refinement scene; (k) an image smoothing level variable containing a value indicating an image smoothing level with which the object drawing subsystem is to render the first object into the scene; and (l) a beam depth variable containing a. Contains value indicating a beam depth with which the object drawing system is to process the first object in this scene.
DE19549870A 1994-12-22 1995-12-15 Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene Expired - Lifetime DE19549870B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19549849A DE19549849B4 (en) 1994-12-22 1995-12-15 Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US08/362,118 US5986667A (en) 1994-12-22 1994-12-22 Mechanism for rendering scenes using an object drawing subsystem
US08/362,118 1994-12-22
US08/383,198 US5561752A (en) 1994-12-22 1995-02-03 Multipass graphics rendering method and apparatus with re-traverse flag
US08/383,198 1995-02-03
US08/482,016 US5777621A (en) 1994-12-22 1995-06-07 Quality control mechanism for three-dimensional graphics rendering
US08/482,016 1995-06-07
DE19549879 1995-12-15
DE19549849A DE19549849B4 (en) 1994-12-22 1995-12-15 Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene

Publications (1)

Publication Number Publication Date
DE19549870B4 true DE19549870B4 (en) 2010-06-17

Family

ID=42169028

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19549870A Expired - Lifetime DE19549870B4 (en) 1994-12-22 1995-12-15 Creating representation of scene for display on graphical output - invoking object drawing sub-system with identification of object stored in memory, and identification of renderer for use in drawing object into scene

Country Status (1)

Country Link
DE (1) DE19549870B4 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
EP0534446A2 (en) * 1991-09-26 1993-03-31 Mitsubishi Denki Kabushiki Kaisha System with approximation means for recognizing graphical elements in a drawing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
EP0534446A2 (en) * 1991-09-26 1993-03-31 Mitsubishi Denki Kabushiki Kaisha System with approximation means for recognizing graphical elements in a drawing

Similar Documents

Publication Publication Date Title
DE69224499T2 (en) Three-dimensional graphic processing
DE69406462T2 (en) OBJECT-ORIENTED GRAPHIC SYSTEM AND RELATED METHOD
DE69406296T2 (en) OBJECT-ORIENTED DISPLAY SYSTEM
DE69830767T2 (en) Method and apparatus for assembling layered synthetic graphic filters
DE10296401B4 (en) Composite rendering of 3-D graphics objects
DE69428647T2 (en) Method and device for generating a second mixed image signal in the spatial context of a first image signal
DE69632578T2 (en) COMPUTER GRAPHICS SYSTEM FOR CREATING AND IMPROVING TEXTURE-TRAINING SYSTEMS
DE60026197T2 (en) Detailed hierarchical distance fields in object modeling
DE69410483T2 (en) OBJECT-ORIENTED TASK-SAFE FRAMEWORK
DE69902262T2 (en) ANIMATION SYSTEM AND METHOD FOR DEFINING AND APPLYING RULE-BASED GROUPS OF OBJECTS
DE69400230T2 (en) OBJECT-ORIENTED CONSTRUCTIVE SURFACE SYSTEM
DE69534331T2 (en) Method and device for highlighting the detail of a tree structure
DE69524330T2 (en) Arrangement of node connection structure in a room with negative curvature
DE69525696T2 (en) Render node connection structure with a zone of larger distances and peripheral branches
DE69033865T2 (en) Display of hierarchical three-dimensional structures
DE69807479T2 (en) Creation of an image of a three-dimensional object
DE69404469T2 (en) OBJECT-ORIENTED DRAWING DEVICE
DE69403664T2 (en) GRAPHIC EDITOR TRADE SYSTEM
DE69127915T2 (en) Priority color mapping system and method
DE3855234T2 (en) HIGH-PERFORMANCE GRAPHIC TERMINAL AND OPERATING METHOD THEREFOR
DE69526289T2 (en) Optimization process for efficient image generation
EP0829822B1 (en) Method for displaying geometric surfaces
DE19807013B4 (en) Volumetric pre-truncation method that ensures a minimum number of sample points by one volume
DE19709227B4 (en) A method of quickly downloading textures to accelerated graphics hardware and eliminating additional software copies of texels
DE102017007967A1 (en) Process and render a three-dimensional model

Legal Events

Date Code Title Description
Q172 Divided out of (supplement):

Ref document number: 19549849

Country of ref document: DE

Kind code of ref document: P

8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06T 15/00 AFI20080424BHDE

8607 Notification of search results after publication
8128 New person/name/address of the agent

Representative=s name: PATENT- UND RECHTSANWAELTE BARDEHLE, PAGENBERG, DO

8172 Supplementary division/partition in:

Ref document number: 19549879

Country of ref document: DE

Kind code of ref document: P

Q171 Divided out to:

Ref document number: 19549879

Country of ref document: DE

Kind code of ref document: P

AC Divided out of

Ref document number: 19549849

Country of ref document: DE

Kind code of ref document: P

AH Division in

Ref document number: 19549879

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
R071 Expiry of right