Tobias Schmidt

Dokumentation Diplomprojekt

Information im Virtuellen Raum
A Virtual Reality Pattern Language

Hochschule der Künste Berlin
Fakultät Gestaltung
Studiengang Visuelle Kommunikation
April 2000







Inhalt

1 Was ist eine Pattern Language?

2 Warum eine Virtual Reality Pattern Language?

3 Die Virtual Reality Pattern Language

3.1 Sublanguages
3.1.1 Navigation ()
3.1.2 Information ()
3.1.3 Manipulation ()

3.2 Der Pattern Katalog

#01 1st Person
#02 3D Information Cursor
#03 3rd Person
#04 Assistent near to camera
#05 Beeing in
#06 Billboard
#07 Compass
#08 Constrained Navigation
#09 Dimension Hops
#10 Environment
#11 Focus
#12 Horizont
#13 Information fogging
#14 Interaction Reference Plane
#15 Level of Information Detail
#16 Level of Visual Detail
#17 Looking at
#18 Manipulators
#19 Perception Reference Plane
#20 Real World Physics
#21 Shadows on the Floor
#22 Structured Floor
#03 Transparent Walls
#24 Viewpoint
#25 Virtual Input Device
#26 Volume Cuts
#27 X-Ray Window

3.3 Version 0.1

4 Präsentation

5 Verwendete Hilfsmittel
5.1 Bibliographie







1 Was ist eine Pattern Language?

Eine ausführlichere Abhandlung über andere Pattern Languages ist im Skript zu meinem Vortrag über Pattern Languages nachzulesen.

Vor zwanzig Jahren schockierte Christopher Alexander die Welt der Architektur mit seinem Buch “The Timeless Way of Building” [Ale79]. Seine These war, man könne exzellente Architektur schaffen, indem man eine Sammlung sorgsam formulierter Regeln (Design Patterns) lernt und anwendet. Obwohl die Qualitäten guter Architektur sehr komplex und schwer mit Worten zu beschreiben sind, sind die Design Patterns erstaunlich einfach und auch für Laien leicht verständlich.

Die Patterns, welche er und seine Kollegen formulierten (veröffentlicht in einem zweiten Band, “A Pattern Language” [AIS+77]) sind ein Versuch, Generationen architektonischen Wissens zusammenzufassen. Dabei sind die Patterns keine abstrakten Grundsätze, die den Anwender zwingen, ihre erfolgreiche Anwendung stets neu zu erforschen, noch sind sie allzu spezifisch für eine bestimmte Situation oder Kultur. Ein Pattern beschreibt mögliche Lösungen für übliche Gestaltungsprobleme in einem bestimmten Kontext und schildert die Vor- und Nachteile der unterschiedlichen Lösungen.

In den letzten Jahren haben viele Software-Entwickler (Im Zusammenhang mit Software-Entwicklung ist auch oft die Rede von Softwarearchitektur) begeistert das Konzept der Design Patterns für ihren Bereich entdeckt. Einen großen Beitrag hierzu leistete 1995 die Veröffentlichung des Buches “Design Patterns” [GHJV95]. Wie die Patterns von Alexander, bieten diese Patterns Lösungen für Fragen des objektorientierten Software-Designs, die konkret genug sind, um sie schnell mit guten Ergebnissen in die Praxis umzusetzen, und trotzdem abstrakt genug, um sie in unzähligen Situationen einsetzen zu können, eingeschränkt nur durch die Vorstellungskraft und die Fähigkeiten ihres Anwenders.

1999 veröffentlichte Jane Tidwell im Internet ihren Vorschlag für eine “Human-Computer Interface Pattern Language” [Tid98]. Die “HCI Pattern Language” ist ein umfangreicher Katalog, der Patterns zu vielen Fragen der Gestaltung von Software-Benutzeroberflächen bietet.

Inhalt





2 Warum eine Virtual Reality Pattern Language?

Es gibt sehr viel Literatur zu den mathematischen und technischen Fragen der Darstellung von virtuellen Räumen. In der jüngsten Vergangenheit wurde vieles gesagt und geschrieben über die Möglichkeiten von virtueller Realität und vieles über die Auswirkungen dieser relativ neuen Technologie auf den Mensch und die Gesellschaft.

Der ganze Bereich der virtuellen Realität ist heute noch stark beherrscht von technischen Themen. Die Euphorie ob der Verfügbarkeit schnellerer Computer, hoher Bandbreiten und neuer Technologien lässt oft die Notwendigkeit vergessen, mit diesen Technologien sinnvolle Anwendungen zu schaffen, die zudem für viele Menschen einfach und effektiv nutzbar sind.

Eben diese neuen Technologien und Werkzeuge versetzen immer mehr Menschen in die Lage, VR-Anwendungen selbst herstellen zu können. Allerdings gibt es wenig “öffentlichtes Wissen”, mit dessen Hilfe Virtual Reality-Laien sich die Eigenheiten der Interaktion in virtuellen Räumen erarbeiten können.

Dabei ist, wie bei jeder anderen interaktiven Applikation, nach dem zu vermittelnden Inhalt eine schlüssige Interaktion die wichtigste Qualität einer guten Virtual Reality-Anwendung. Kommt der der Nutzer nicht schnell zu seiner Information, oder erreicht er seine Ziele nicht, folgt bald Frustration oder Aufgabe.

Viele Interaktionsparadigmen lassen sich aus den Erfahrungen mit “klassischen” Benutzerschnittstellen ableiten. Manche Lösungen sind allerdings nicht eins zu eins in den virtuellen Raum übertragbar. Mit die dritte Dimension treten neue Probleme und Fragen auf.

Die VR Pattern Language beschreibt Lösungen für diese Probleme. Dabei richtet sie sich nicht nur an den Laien, sondern soll auch dem Experten helfen, die “Patterns“, die er im Kopf trägt, zu strukturieren, sie effektiver einzusetzten, ihnen einen Namen zu geben und durch weitere zu ergänzen.

Inhalt





3 Die Virtual Reality Pattern Language


3.1 Sublanguages

Die Patterns der VR Pattern Language lassen sich jeweils einer oder mehreren der folgenden Kategorien zuordnen.


3.1.1 Navigation ()
Die Design Patterns dieser Gruppe bieten Lösungen für Probleme bei der Navigation durch den virtuellen Raum und der Orientierung im virtuellen Raum.
Im realen Raum helfen uns alle Sinne, besonders die Wahrnehmung der Schwerkraft, in Kombination mit unserer Erfahrung und eventuell der Kenntnis des Ortes bei der Orientierung. Virtuelle Räume sind für den User meist unbekannte, eventuell dynamische Räume in denen, solange sie nicht simuliert werden, keine physikalischen Gesetzte gelten oder diese gar auf den Kopf gestellt werden.
Die Fortbewegung im realen Raum, sei es per Pedes, mit dem Fahrrad oder dem Auto, mussten wir alle mit viel Ausdauer erlernen. Bei VR-Anwendungen muss die Navigation intuitiv funktionieren und schnell erlernbar sein um Frustration oder gar Aufgabe des Users zu vermeiden. Zudem steht für die Festlegung von Position und Blickrichtung im Raum meist nur ein 2D Pointing Device (Mouse, Touchscreen, Joystick) zur Verfügung.


3.1.2 Information ()
Der Raum bietet gegenüber der Fläche viele neue Möglichkeiten zur Darstellung komplexer Information. Vor allem die Verfügbarkeit einer dritten Raumachse ermöglicht die Schaffung von Datenräumen, in welchen zuvor schwer visualisierbare Zusammenhänge sichtbar werden.
Information meint selbstverständlich nicht nur Zahlen und Text, sondern auch vor allem auch die Darstellung dreidimensionaler Objekte (Produkte, Architektur etc.).


3.1.3 Manipulation ()

Inhalt





3.2 Der Pattern Katalog


#02 3D Information Cursor

Kontext
Im Gegensatz zu zweidimensionalen Darstellungen kann bei der Darstellung von Diagrammen im virtuellen Raum die dritte Raumachse verwendet werden. Bei zweidimensionale Diagrammen ist müssen zum Auslesen der Daten nur mental die Achsen verschoben werden, was aufgrund der Orthogonalität der Achsen einfach ist. Bei mit drei Achsen kodierten Diagrammen im virtuellen Raum wird dies durch die perspektivische Verzerrung erschwert.

Lösung
Bewegt der Benutzer den Cursor über die visualisierten Daten, wird dem Benutzer eine Hilfestellung zum Auslesen der Daten an der Cursorposition gegeben. Dazu verändert sich der Cursor in ein dreidimensionales Fadenkreuz, dessen Linien parallel zu den Achsen des Datenraums sind. Um eine Auslesen der Werte zu ermöglichen, reichen diese Linien entweder bis zu den Skalen des Diagramms oder die exakten Werte werden in Textform angezeigt.

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#06 Billboard, #18 Manipulators

Inhalt





#04 Assistent near to camera

Auch bekannt als
Decal

Kontext
In vielen Anwendungen gibt es wichtige Informations- oder Bedienelemente, die während der Navigation durch den virtuellen Raum für den Benutzer ständig verfügbar sein sollen. Bei einer Positionierung im Raum sind diese Elemente allerdings oft nicht oder nur schlecht sichtbar bzw. bedienbar, da die virtuelle Kamera ungünstig zu ihnen im Raum steht oder die Elemente von anderen Objekten verdeckt werden.

Lösung
Informations- und Bedienelemente, die in einer VR-Anwendung unabhängig von der Positition der Kamera im virtuellen Raum verfügbar sein sollen, werden so angeordnet, dass sie stets sichtbar an einer festen Position auf dem Bildschirm vor den anderen Objekten der Szene erscheinen. Dies wird erreicht indem die Elemente entweder in kleiner Distanz vor der Kamera im virtuellen Raum positioniert werden oder, ähnlich einer bedruckten Glasscheibe, als zweidimensionale Grafik (“Decal”) über die dreidimensionale Szene gelegt werden.

Konsequenzen
Die zweidimensionale Variante des “assistent near to camera”, auch als “decal” bekannt, wird als statisches Element wahrgenommen, welches sich nicht im Raum, sondern davor befindet, quasi “auf den Bildschirm geklebt”. Hierdurch wird dem User stets bewusst, dass er durch eine Scheibe (den Bildschirm) in eine virtuelle Welt blickt. Immersion in den virtuellen Raum wird dadurch erschwert oder verhindert. Diesem Effekt kann entgegengewirkt werden, indem man die Elemente im virtuellen Raum vor der Kamera positioniert, und durch eine geringe Rotation Sorge trägt, dass ihre Orientierung nicht parallel zur Bildschirmebene ist. Beleuchtung und Animation (eventuell eine Trägheit beim Bewegen der Kamera) helfen auch, die Räumlichkeit dieser Objekte zu betonen.
Um eine Verdeckung wichtiger Teile der dreidimensionalen Szene durch einen “Assistent near to camera” zu verhindern, helfen die Anordnung am Bildschirmrand, der Einsatz von Transparenz oder eine Verkleinerung, während der Anwender den “Assistent” nicht benutzt.

Implementation
Das klassische “Decal” wird nach dem Zeichnen der dreidimensionalen Szene als zweidimensionale Grafik über das Bild gezeichnet. Dazu kann ein texturiertes Polygon, welches parallel zur Projektionsebene vor der Kamera liegt, verwendet werden. Manche Systeme erlauben auch das Ausschalten der perspektivischen Projektion oder eine Umschaltung auf Parallelprojektion während des Renderns eines Bildes.
Die Realisierung vor der Kamera im Raum schwebender Objekte lässt sich am einfachsten mit VR-Systemen realisieren, die einen hierarchischen Aufbau der Szene erlauben. Die Objekte werden einfach als Unterobjekte der Kamera definiert und mit einer Transformation versehen, die sie vor der Kamera positioniert.

Beispiele
Viele Flugsimulatoren verwenden Decals zur Darstellung des Cockpits. Bei den meisten Computerspielen werden Punktestand, Geschwindigkeit oder Zeitangabe als Decals realisiert.

Verwandte Patterns
#06 Billboard, #18 Manipulators, #25 Virtual Input Device

Inhalt





#06 Billboard

Kontext
Information auf Flächen im Raum ist oft nur eingeschränkt wahrzunehmen, wenn der Betrachter aus einem ungünstigen Betrachtungswinkel auf die Fläche blickt. Dies ist besonders problematisch bei Text, der durch perspektivische Verzerrung schwer lesbar wird.

Lösung
Damit Information auf einer Fläche im virtuellen Raum von jedem Standpunkt lesbar bleibt, dreht sich die Fläche so im Raum, dass sie stets dem Betrachter zugewandt ist. Verändert der User seinen Standpunkt im Virtuellen Raum (die Position und/oder Orientierung der virtuellen Kamera), wird die Orientierung des Billboards angepasst.

Konsequenzen
Ein Verhalten wie das des Billboards ist aus der realen Welt nicht bekannt und kann daher das Erlebnis der Immersion in einen virtuellen Raums brechen.
Durch sein Verhalten wird ein Billboard nur bedingt als räumliches Objekt wahrgenommen. Dem kann jedoch durch andere Eigenschaften wie perspektivische Verkürzung, Beleuchtung, Überschneidung oder Nebel entgegengewirkt werden.

Implementation
Beim klassischen Billboard wird die Fläche so ausgerichtet, dass sie orthogonal zum Vektor Billboard - Kamera im Raum steht.
Eine einfachere und weniger rechenintensive Möglichkeit ist, die Entfernung der Kamera vom Billboard als unendlich anzunehmen und unabhängig von der Kameraposition dem Billboard die inverse Orientierung der Kamera zuzuweisen (screen-aligned billboard).
Abhängig von der Situation kann die Rotation des Billboards auf eine oder zwei Achsen beschränkt werden (axial billboard, world-aligned billboard, object-aligned billboard). [MH99], Seite 152ff

Beispiele
Der Begriff Billboard stammt aus dem Bereich der Computergrafik. Mit dem oben beschriebenen Verfahren können komplexe Objekte wie Bäume oder Feuer rechenzeitsparend mit nur einem texturierten Polygon dargestellt werden. Beispiele hierfür sind in vielen Computerspielen zu sehen.

Verwandte Patterns
#04 Assistent near to camera

Inhalt





#10 Environment

Kontext
Ein virtueller Raum mit wenigen Objekten bietet kaum Anhaltspunkte zur eigenen Positionsbestimmung oder zur Bestimmung der eigenen Geschwindigkeit oder Rotation. Bei der Orientierung in virtuellen Räumen kann der Benutzer im Gegensatz zur Orientierung in realen Räumen nicht auf Erfahrung und Ortskenntnis zurückgreifen.

Lösung
Um dem Benutzer Orientierungshilfen bei der Navigation durch den virtuellen Raum zu geben, wird der virtuelle Raum mit einer Umgebung ausgestattet.
So verdeutlicht ein virtueller Himmel, wo oben ist. Hat der Himmel Wolken oder eine andere Struktur, so wird hierdurch eine Orientierungsänderung der virtuellen Kamera besser sichtbar und damit auch für den Benutzer besser kontrollierbar. Ein Boden zeigt dem Benutzer, wo unten ist. Wo Boden und Himmel aufeinandertreffen bildet sich der Horizont (#12) ab.
Markante architektonische Elemente (z.B. Türme) im virtuellen Raum helfen bei der eigenen Positionsbestimmung. Wer kennt nicht aus eigener Erfahrung die Nützlichkeit von Türmen oder grossen Gebäuden bei der Orientierung in fremden Städten?

Konsequenzen
--

Implementation
[MH99], Seite 127ff

Beispiele
Fast alle Fahr- und Flugsimulationen verwenden Himmel, Terrain und markante Architektur.

Verwandte Patterns
#07 Compass, #12 Horizont, #21 Shadows on the Floor, #22 Structured Floor

Inhalt





#12 Horizont

Kontext
Im virtuellen Raum hat der Benutzer keinen Gleichgewichtssinn.

Lösung
Ein sichtbarer Horizont ist eine gute Unterstützung für den "Gleichgewichtssinn" im virtuellen Raum. Blickt der Betrachter durch ein großes Display, das bis an den Rand des Sehfeldes ("peripheres Sehen") reicht, in den virtuellen Raum, kann ein kippender Horizont den Gleichgewichtssinn des Betrachters direkt beeinflussen.
Die Horizont kann entweder als Linie dargestellt werden oder er entsteht von selbst, wo Himmel und Boden aufeinandertreffen

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#07 Compass, #10 Environment

Inhalt





#14 Interaction Reference Plane

Kontext
Oft steht für die Interaktion mit dem virtuellen Raum nur ein 2d Pointing Device (Mouse, Trackball, Touchscreen) zu Verfügung, mit dessen Hilfe man einen Cursor auf der Bildschirmoberfläche positionieren kann. In manchen Situtionen ist es allerdings notwendig, den Cursor auch in die Tiefe des virtuellen Raums zu bewegen, um Objekte auszuwählen oder um Objekte zu manipulieren. Liegen sich die erwünschten Positionen des Cursors im Raum auf einer Fläche, so kann dieses Pattern zum Einsatz kommen.

Lösung
Die Position des Cursors im Raum kann durch eine Projektion der zweidimensionalen Cursorsposition auf eine Fläche im Raum, die "Interaction Reference Plane", bestimmt werden. Die "Interaction Reference Plane" sollte durch ein Linienraster oder eine halbtransparente Fläche visualisiert werden, falls sie nicht ohnehin identisch mit der Oberfläche eines dreidimensionalen Objektes ist. Auch durch die Darstellung eines dreidimensionalen Cursors kann visualisiert werden, auf welcher "Interaction Reference Plane" man agiert. In der Applikation können kontextbezogen verschiedene "Interaction Reference Planes" aktiv sein, bzw. kann dem User die Möglichkeit gegeben werden, die "Interaction Reference Plane" mit Hilfe von Manipulators (#18) zu verändern.

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#18 Manipulators

Inhalt





#20 Real World Physics

Kontext
Im virtuellen Raum gibt es keine physikalischen Kräfte wie Schwerkraft, Trägheit oder Reibungswiederstand. Daher ist das Verhalten der Objekte in der virtuellen Welt, einschließlich der virtuellen Kamera, durch den Benutzer schwer abzuschätzen.

Lösung
Im virtuellen Raum werden physikalische Kräfte, wie sie der Benutzer aus seiner Umgebung kennt, simuliert. Dadurch erscheint die virtuelle Welt glaubhafter, und der Benutzer kann die Auswirkungen seiner Aktionen besser abschätzen. Durch eine Veränderung der physikalischen Kräfte können Umgebungen wie fremde Planeten, das All oder eine Unterwasserwelt glaubhafter und immersiver dargestellt werden.

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#25 Virtual Input Device

Inhalt





#21 Shadows on the Floor

Kontext
Oft scheinen Objekte im virtuellen Raum über dem Boden zu schweben, obwohl die Geometrie korrekt ist und das Objekt den richtigen Abstand vom Boden hat.

Lösung
Ein Schatten auf dem Boden unter dem Objekt hilft, die Position des Objekts relativ zum Boden darzustellen. Der Schatten sollte einhergehen mit einer starken Lichtquelle von oben. Diese Kombination von Licht und Schatten ist dem Benutzer aus der realen Welt bekannt, eine Simulation dieser natürlichen Beleuchtungssituation hilft beim der Erfassung der virtuellen Welt.

Konsequenzen
--

Implementation
Trotz ständig wachsender Rechenleistung sind Schatten heute immer noch kaum in Echtzeit zu berechnen. Die beschriebenen Schatten auf dem Boden lassen sich allerdings meist vorberechnen und als Textur über den Boden legen. [MH99], Seite 167ff

Beispiele
--

Verwandte Patterns
#10 Environment

Inhalt





#22 Structured Floor

Kontext
In einem virtuellen Raum mit wenigen Objekten oder weit entfernten Objekten hat der Benutzer kaum Anhaltspunkte zur Erfassung von Positions- oder Richtungsänderungen.

Lösung
Im virtuellen Raum wird ein Boden dargestellt. Dieser Boden wird mit Hilfe einer Textur, eines sich wiederholenden Gestaltungselements oder eines Linienrasters strukturiert. Die Struktur des Bodens hilft bei der Erfassung von Positions- und Richtungsänderung der virtuellen Kamera. Zeichen und Markierungen auf dem Boden können weitere Orientierungshifen sein. Durch die bessere Erfassung von Positions- und Richtungsänderungen kann der Benutzer seine Bewegung im virtuellen Raum gezielter steuern.

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#10 Environment

Inhalt





#25 Virtual Input Device

Kontext
Oft steht für die Interaktion mit dem virtuellen Raum nur ein 2d Pointing Device (Mouse, Trackball, Touchscreen) zu Verfügung, mit dessen Hilfe man einen Cursor auf der Bildschirmoberfläche positionieren kann. Mit Hilfe des Cursors soll der Benutzer Objekte der Szene auswählen, sie manipulieren, Informationen abrufen. Gleichzeitig muss mit dem Cursor die Bewegung durch den virtuellen Raum mit bis zu sechs Freiheitsgraden gesteuert werden, dabei bietet die Position des Cursors nur genügend Information für die Steuerung von zwei Freiheitsgraden.

Lösung
Zur Navigation durch den virtuellen Raum wird ein Steuerungsobjekt als Assistent near to camera (#04) eingeblendet. Durch Interaktion mit diesem Objekt kann der Benutzer die Position und die Orientierung der virtuellen Kamera, bzw. deren Bewegung und Rotation, beeinflussen. Das "Virtual Input Device" kann dabei einem Steuerungsgerät aus der realen Welt nachempfunden werden (Lenkrad, Flugzeugsteuerknüppel), um dem User die Bedienung zu erleichtern. Dazu bieten sich besonders Steuerungsgeräte aus der Luftfahrt an.

Konsequenzen
--

Implementation
--

Beispiele
--

Verwandte Patterns
#04 Assistent near to camera, #18 Manipulators, #20 Real World Physics

Inhalt





3.3 Version 0.1

Die hier vorgestellte "Virtual Reality Pattern Language" kann und will nur ein Vorschlag sein. Es wäre vermessen, zu behaupten, im Rahmen dieser Diplomarbeit wäre die endgültige "Virtual Reality Pattern Language" entstanden. So ist die Liste der Patterns sicher nicht vollständig, und die Beschreibungen der einzelnen Patterns sind sicher streitbar. Zwar habe ich besten Wissens und Gewissens für jedes potentielle Pattern die Berechtigung zum Pattern abgewogen, und bei der Formulierung all meine Erfahrungen einfliessen lassen, eine "Version 1.0" kann jedoch nur in Zusammenarbeit mit anderen Fachleuten entstehen. Durch Verwendung und Diskussion werden die Patterns weiter reifen und die Sprache durch weiter Patterns ergänzt werden.

Inhalt





4 Präsentation

Bei der Projektpräsentation im Rahmen meiner Diplomprüfung werde ich die Pattern Language mit Hilfe einer VR-Applikation vorstellen. In dieser Applikation wird die Patternlanguage vorgestellt und das Netzwerk, das aus den Verknüpfungen der einzelnen Patterns entsteht, visualisiert.
Anhand beispielhafter virtueller Welten, wird die Verwendung der Patterns in der Praxis demonstriert.
Die VR-Applikation wurde mit Hilfe der Software Macromedia Director realisiert. Die Programmierung der Applikation ist objektorientiert. Bei der Programmierung habe ich eine andere Pattern Language zu Hilfe genommen, die "Design Patterns" ([GHJV95]) von Erich Gamma und seinen Kollegen. Eine Erweiterung für Macromedia Director ermöglicht die Verwendung von OpenGL, einem etablierter Standard, der die Darstellung dreidimensionaler Szenen in Echtzeit ermöglicht. OpenGL ermöglicht die Nutzung von Hardware, die für die beschleunigte Darstellung von dreidimensionalen Szenen optimiert ist.

Inhalt





5 Verwendete Hilfsmittel

5.1 Bibliographie

[AIS+77]
Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King und Shlomo Angel
A Pattern Language
Oxford University Press, New York, 1977

[Ale79]
Christopher Alexander
The Timeless Way of Building
Oxford University Press, New York, 1979

[Bli96]
Jim Blinn, Microsoft Research
Jim Blinn's Corner: A Trip down the Graphics Pipeline
Morgan Kaufmann Publishers, San Francisco CA, 1996

[FDFH89]
James D. Foley, Andries van Dam, Steven K. Feiner und John F. Hughes
Computer Graphics: Principles and Practice (2nd edition in C)
Addison-Wesley, Reading MA, 1989.

[GHJV95] Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides
Design Patterns: Elements of Reusable Object-Oriented Software
Addison Wesley, Reading MA, 1995

[Jon97]
Steven Johnson
Interface culture : how new technology transforms the way we create and communicate
Harper San Francisco, San Francisco CA, 1997

[MH99]
Thomas Möller und Eric Haines
Real-Time Rendering
A K Peters, Natick MA, 1999

[Nor88]
Donald A. Norman
The Design of Everyday Things
Basic Books, New York, 1988

[Pap00]
Lothar Papula
Mathematische Formelsammlung für Ingenieure und Naturwissenschaftler (6. Auflage)
Vieweg, Braunschweig/Wiesbaden, 2000

[Shn98]
Ben Shneiderman
Designing the User Interface:  Strategies for Effective Human-Computer Interaction (3rd edition)
Addison-Wesley, Reading MA, 1998

[Tid98]
Jenifer Tidwell
Common Ground. A Pattern Language for Human-Computer Interface Design http://www.mit.edu/~jtidwell/interaction_patterns.html
1998

[Tuf90]
Edward Tufte
Envisioning Information
Graphics Press, Creshire, Connecticut, 1990

[Tuf97]
Edward Tufte
Visual Explanations
Graphics Press, Creshire, Connecticut, 1997

[WNDS99]
Mason Woo, Jackie Neider, Tom Davis und Dave Shreiner
OpenGL Programming guide (3rd Edition)
Addison-Wesley, Reading MA, 1999

[WW92]
Alan Watt und Mark Watt
Advanced Animation and Rendering Techniques. Theory and practice
Addison-Wesley, Reading MA, 1992

Inhalt