Dreidimensional mit Qt 3D Studio

Seite 2: Mehr Interaktivität

Inhaltsverzeichnis

Das Verhalten von Master-Folien ist weitgehend wie von PowerPoint gewohnt. Allerdings wirkt sich das Verschieben des QT-Logos in der Tachometerszene in Qt 3D Studio auch auf den Master aus. Das sollte bei etwaigen Drag&Drop-Aktionen unbedingt berücksichtigt werden. Ein in diesem Zusammenhang interessanter Aspekt ist, dass sowohl in der Timeline als auch im Eigenschaftenfenster manche Attribute grau dargestellt werden, während andere in grüner Schrift erscheinen. Grüne Attribute kommen dabei vom Master, sind also für die Szene als Ganzes geteilt. Graue Attribute sind hingegen nur für einzelne Slides relevant.

Ein Rechtsklick auf das Rotation-Attribut an beliebiger Stelle –sowohl im Master, als auch in einer davon abgeleiteten Slide – veranlasst Qt 3D Studio dazu, ein Kontextmenü mit der Option Unlink Property from Master Slide einzublenden. Wird diese Aktion ausgeführt, erscheint der Rotation-Wert im Properties-Fenster grau. Das bedeutet, dass der Wert der Rotation ab sofort für eine bestimmte Seite festgelegt werden kann, und dass der Master nicht mehr die alleinige Herrschaft darüber hat.

Animationen entstehen in Qt 3D Studio durch das Prinzip der Keyframes: Ein Animationsprozess wird durch einen Startzustand, einen oder mehrere Zwischenzustände und eine Easing Function beschrieben. Die Runtime interpoliert zur Laufzeit selbsttätig zwischen den einzelnen Punkten, um eine "fließende" Darstellung zu erreichen.

Sobald das Symbol in der Tachometerszene selektiert wird, erscheint das Rotation-Attribut grau. Mit einem Klick auf das kleine Uhrensymbol neben Rotation lässt dessen Farbe von Weiß auf Blau wechseln. Eine blau dargestellte Uhr steht hierbei für ein Attribut, dessen Animationsmöglichkeiten genutzt werden. Ist das Symbol grau, so ist das Element zwar ebenfalls animierbar, der Entwickler macht von dieser Möglichkeit im Moment allerdings keinen Gebrauch.

Das eigentliche Einpflegen der Keyframes ist eine herausfordernde Angelegenheit. Im ersten Schritt ist sicherzustellen, dass die Option Autoset Keyframes im Timeline-Menü selektiert ist. Die Funktion eingeschaltet zu lassen, ist jedoch mit Vorsicht zu genießen – denn dadurch kann es leichter passieren, dass zusätzliche Keyframes versehentlich platziert werden.

Nach dem Einschalten der erwähnten blauen Uhr erscheint In der Timeline der in Abbildung 7 gezeigte zusätzliche Arbeitsbereich, der den Zeitverlauf der Rotation beschreibt.

Abb. 7: Jedem animierten Attribut wird ein derartiges Feld zugeschrieben.

Sobald der Zeitschieber in der Timeline an den Anfang der Timeline geschoben und die Rotation auf den gewünschten Wert eingestellt ist, blendet Qt 3D Studio an dieser Stelle ein Diamantenpiktogramm ein. Es signalisiert, dass an diesem Platz im Zeitverlauf eine Stützstelle zu finden ist. In gleicher Weise lässt sich am Ende der Zeitleiste ein anderer Wert setzen. Das Aufscheinen des zweiten Piktogramms informiert anschließend über die erfolgreiche Einrichtung der Keyframe-Animation.

Ein nettes Detail der Benutzerschnittstelle ist, dass Anwender durch die Zeitleiste scrollen können. Die im Eigenschaftenfeld des jeweiligen Attributs angezeigten Werte spiegeln dabei den Zustand wieder, den die Engine zur Laufzeit errechnen würde. Lässt man Rotation.Y von -10 bis +10 laufen, springt das Logo fortan jedenfalls hin- und her.

Eine – im Alltag des Qt-Entwicklers nur wenig bedachte – Besonderheit von QML ist, dass das Produkt komplett auf OpenGL basiert. Eine der Grundideen hinter dem GUI-Stack war seinerzeit das Unabhängigwerden von der nativen Steuerelementebibliothek des zugrundeliegenden Betriebssystems.

Anstatt sich wie bisher bei jeder neuen Portierung mit den diversen Eigenheiten herumschlagen zu müssen, zeichnet man per OpenGL ein "Bild" eines mehr oder weniger nativ aussehenden Steuerelements. Für Qt 3D Studio ist dies insofern ein Geschenk, als die Interoperabilität zwischen den per QML und per Qt 3D Studio erzeugten Inhalten exzellent ist.

Mit dem Qt Creator lassen sich diese Möglichkeiten veranschaulichen. Ein auf Basis der Vorlage Application Qt Quick Application Empty im ersten Schritt erstelltes Projekt erhält im Beispiel den mehr oder weniger zufälligen Namen "HeiseStudioV2T1". Bei der Auswahl der Runtime-Version ist auf die Version 5.11 zu setzen, die bisher als einzige eine volle Implementierung der 3D-API hat.

Beim Kit fällt die Wahl auf Desktop Qt 5.11. Der Autor nutzt MSVC 2017, andere Compiler sollten aber ebenfalls problemlos funktionieren. Da Qt unter Windows zu Problemen neigt, sollte das generierte Projektskelett zunächst auf seine Funktionstüchtigkeit geprüft werden. Etwaige Fehler müssen behoben werden.

Das eingangs bereits beschriebene "Umspeichern" der .uip-Datei ist allein nicht ausreichend: Die einzelnen Ressourcen werden über lokale Pfade referenziert, die beim Verschieben des Files "brechen". Daher sollte der Ordner SampleProject als Ganzes in das Verzeichnis verschoben werden, das die .pro-Datei enthält. Anschließend ist der Inhalt von main.qml in Qt Creator zu ergänzen um:

import QtQuick 2.11
import QtQuick.Window 2.11
import QtStudio3D 2.0

Als Erstes ist der Import der QtStudio3D-Bibliothek erforderlich. Sie stellt intelligente Ressourcen zur Verfügung, die die Interaktion mit den Inhalten ermöglicht. Sie dient zudem als Test für die Korrektheit der Konfiguration. Wie in Abbildung 8 zu sehen, kann es anfangs passieren, dass sich Qt Creator beschwert. Das Bereitstellen beziehungsweise komplette Analysieren der Bibliothek ist ein durchaus arbeitsintensiver Prozess.

Abb. 8: Qt Creator braucht hier etwas Zeit ...

Das eigentliche Anzeigen der Elemente erfolgt dann über ein Presentation-Element, das sich seinerseits in einem Studio3D-Tag domiziliert:

Studio3D{
id: myStudio
anchors.fill: parent

ViewerSettings {
scaleMode: ViewerSettings.ScaleModeFill
}
Presentation {
source: "qrc:/uip/SampleProject.uia"
}
}

Interessant ist hier vor allem die Nutzung eines lokalen Pfads: Die diversen Beispiele der Qt Company bauen allesamt darauf, dass die Beschaffung der Inhalte aus dem Ressourcensystem erfolgen sollte. Das eigentliche Platzieren der Inhalte erfolgt wie bei der Arbeit mit Ressourcen.Es ist daher empfehlenswert, das Projekt als Ganzes in ein Unterverzeichnis der .pro-Datei zu kopieren und von dort zu bearbeiten. In der neusten Version Qt 3D Studio 2.0 finden sich allerdings auch Beispiele, die lokale Pfade verwenden.

Mehr Infos

Kompakter!

Wer keine "Raw-Ressourcen" in das Ressourcensystem einbinden möchte und eine kommerzielle Qt-Lizenz hat, findet Best Practises zur Kompression.

Ein Klick auf Run lässt den Tachometer in der Applikation erscheinen. Die Bereitstellung von Shader und Co. verursacht auch auf leistungsfähiger Hardware die eine oder andere Wartesekunde – an dieser Stelle ist daher ein wenig Geduld gefragt.