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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth 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
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
Die
Offenlegungsschrift
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
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
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
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.
In
einem Schritt
In
einem Schritt
In
einem Schritt
In
einem Schritt
Sowohl
bei Echtzeitaufrufen als auch bei Aufrechterhaltungsbetriebsaufrufen
spezifiziert das Anwendungsprogramm
Einige
dieser Möglichkeiten
sind in einem beispielhaften Flußdiagramm dargestellt, das
in
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
Ein
einfaches Anwendungsprogramm
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
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
Wenn
ein Anwendungsprogramm
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
Der
Bereich
In
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
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. The following is a C-language initialization procedure, called ErWF.Register, used by the wireframe dresser extension.
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: The metal distributor of the wireframe conditioner is as follows:
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
Die
Struktur enthält
auch Spezialfalldaten für
das Sichtobjekt im Bereich
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:
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: The EtRendererClass data structure is defined as follows:
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
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
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
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
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
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
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
Dem
Bereich
Wie
man sehen kann enthält
der Bereich
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
In
gleicher Weise ist die Blattklasse (translate), die wirklich im
Beispielprogramm in der Klasse EtTransformObject verwendet wird,
eine Unterklasse der Klasse EtTransformObject (siehe
Das
Beispielprogramm erzeugt drei Objekte (polygon, line, torus), die
Geornetrieobjekte sind, und alle von ihnen sind in Blattklassen,
Unterklassen der EtGroupObject sind (
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 (
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
B. ProzedurenB. Procedures
1. ErOrderedDisplyGroup_New()1. ErOrderedDisplyGroup_New ()
Bezugnehmend
auf Anhang A und
Bezugnehmend
auf
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: 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:
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: The "new" procedure of the display group class is as follows:
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: The "new" procedure in the EtGroupObject class is as follows:
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: 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:
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: 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:
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
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
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: Returning to EiDisplayGroup_Draw (), the procedure indicated by func is EiView_OrdererdDisplayGroup (), which is as follows:
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: The generalized list-drawing procedure is as follows:
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: The Escher procedure that identifies ErView-OrderedDisplayGroup () for the geometric object list-drawing routine is EiGeometry_Draw (), which is as follows:
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: 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:
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: 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:
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: 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:
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: The class registration procedure for the parent class of the polygon class, EtGeometryObject, is as follows:
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: 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:
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: 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:
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: 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:
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: 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:
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: The Escher procedure, which identifies EiView_OrderedDisplayGroup () for the transformation object list-drawing routine, is EiTransform_Draw () as follows:
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: 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:
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: 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:
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
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
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
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.
Bezug
nehmend auf
In
einem Schritt
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
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
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
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
In
den Schritten
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().
Zurückkehrend
auf
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
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.
Bezug
nehmend auf
Schritt
Wenn ”berechne
Reflexionen” ”aus” war, dann
macht im Schritt
Man
kann sehen, daß zur
Vereinfachung die Aufbereiterprozedur in
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 ANHANG B ErWF Geometry Polygon() 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 APPENDIX B ErWF Geometry Polygon ()
Claims (10)
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)
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 |
-
1995
- 1995-12-15 DE DE19549870A patent/DE19549870B4/en not_active Expired - Lifetime
Patent Citations (2)
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 |