Open Source im professionellen Einsatz
Linux-Magazin 02/2003

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.

538

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.

3D-Grafik inklusive GUI

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.

Virtuelle Welten entdecken und untersuchen

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

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bewegte Objekte

    Auch hochfliegende Ideen lassen sich mit Coin und wenigen Zeilen C++ schnell umsetzen: Aus einfachen Objekten mit Texturen und komplexen VRML-Modellen entsteht eine animierte 3D-Welt.

  • Räumliche Malerei

    In einem realitätsnahen 3D-Raum wird der Betrachter zum Akteur: Seine Aktionen führen zu Reaktionen, er hinterlässt seine Spuren in der virtuellen Realität. Mit Qt und Coin lassen sich solche animierten und interaktiven 3D-Welten schnell und einfach programmieren.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.