Interaktive 3D-Welten mit Coin und Qt
Virtuelle Welt
Mit Qt und Coin, einem Klon von Open Inventor, gelingt das Programmieren von interaktiven 3D-Welten wesentlich einfacher als mit OpenGL. Eine Einführung.
Mit Qt und Coin, einem Klon von Open Inventor, gelingt das Programmieren von interaktiven 3D-Welten wesentlich einfacher als mit OpenGL. Eine Einführung.
Wer 3D-Welten programmieren möchte, denkt meist zuerst an OpenGL[1],[2]. Oft sind aber der von SGI stammende Open Inventor oder das kompatible Coin (siehe Kasten "Open Inventor und Coin") die bessere Wahl: OpenGL zeichnet (rendert) die Grafiken zwar flott, ist aber kompliziert und zeitaufwändig zu programmieren. Der Aufbau und die Befehle von OpenGL orientieren sich stark an der Grafikhardware. Verglichen mit Open Inventor ist OpenGL auf dem Level einer Assembler-Sprache.
Das objektorientierte Open Inventor Toolkit wurde 1991 von denselben SGI-Mitarbeitern entwickelt, aus deren Feder bereits OpenGL stammt. Open Inventor fasst alle Funktionalitäten von OpenGL in Objekten zusammen. Dies Design vereinfacht besonders das Programmieren mit C++. Open Inventor selbst benutzt OpenGL zum Rendern der Grafik und erbt damit dessen hohe Qualität und Geschwindigkeit.
Das Toolkit ist viel mehr als nur eine Bibliothek, die Klassen zum Erzeugen von 3D-Grafiken bereitstellt. Open Inventor erlaubt es zum Beispiel, 3D-Szenen in so genannten Szenengraphen zu beschreiben und abzuspeichern. Das dafür entwickelte Dateiformat diente 1994 als Vorlage für VRML (Virtual Reality Modeling Language). Mit Open Inventor sind auch Interaktionen mit der Szene möglich. Über den Szenengraphen lassen sich die Objekte identifizieren, somit sind angepasste Reaktionen möglich.
Leider sind Coin und SoQt nicht in allen Linux-Distributionen enthalten (siehe Kasten "Installation"). Beide Pakete enthalten sehr ausführliche Dokumentationen in Englisch.
Größter Unterschied zwischen dem Programmieren mit Open Inventor und Coin ist die Bindung zum GUI-System. Die folgenden Beispiele benutzen über SoQt die Qt-Bibliothek, Motif-Varianten sind auf[9] zu finden. Mit Ausnahme der SoQt-Komponente laufen alle Beispiele auch unter SGIs Open-Source-Variante von Open Inventor, die Namen Coin und Open Inventor werden im Folgenden daher gleichberechtigt benutzt.
Wie in Programmiereinführungen üblich ist das erste Beispiel ein Hello-World-Programm. Es initialisiert einen Viewer (Betrachter) und stellt Text dar. Dieser Text wird dreidimensional angezeigt, der Benutzer kann ihn von beliebigen Positionen aus betrachten. Der Code ist in Listing 1 zu sehen, er steht auf[9] zum Download bereit. Folgender Befehl übersetzt das Programm:
g++ HelloSoQt.cpp -o HelloSoQt -lCoin -lSoQt -I$QTDIR/include
Das Kommando bindet die Coin- und SoQt-Bibliothek ein und gibt mit der Option »-I$QTDIR/include« an, wo die Qt-Headerfiles zu finden sind. Das Ergebnis ist in Abbildung 2 zu sehen.
Die Klasse »SoQtExaminerViewer« (Zeile 31) stellt mehrere Funktionen bereit, um verschiedene Ausschnitte der Szene zu betrachten. Mit gedrückter linker Maustaste folgt die Grafik jeder Mausbewegung. Der Betrachter bietet zusätzliche Funktionen über Räder und Knöpfe am Rand des Fensters.
Besonders auffällig sind die drei Räder: Zwei befinden sich in der linken unteren Ecke, ein weiteres Rad ist auf der unteren rechten Seite angebracht. Das rechte Rad, Dolly genannt, ändert die Entfernung des Betrachters von der Szene (Zoom-Effekt). Die beiden linken Räder rotieren die Szene um die x- beziehungsweise y-Achse.
| Coin |
|---|
| Hersteller: Systems in Motion Lizenz: LGPL (GPL für Version 2.0 geplant) Stabile Version: Coin 1.0.3, SoQt 1.0.1 Coin Professional: Kommerzielle Lizenz (pro Entwickler und Jahr 2000 US-Dollar), für proprietäre Projekte geeignet Multiplattform: Coin läuft auf Linux, anderen Unix-ähnlichen Systemen und Windows; Voraussetzung sind ein C++-Compiler und eine OpenGL-Bibliothek GUI-Bindings: Derzeit Qt, Gtk+, Motif und Windows; Coin lässt sich aber auch ohne diese Bindings nutzen |
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...