Inhaltsverzeichnis

3D-Sets

3D-Sets sind Code-Elemente, die anstelle von 3D-Objekten in die Szene eingefügt werden können. Sie werden verwendet, wenn komplexe zusammengesetzte Elemente, die eine Einheit bilden und wie ein einzelnes Modell reagieren sollen, gewünscht sind. 3D-Sets können Interaktionselemente, Animationen und Audio-Clips enthalten. Zudem können 3D-Sets auch mit anderen Elementen in einer Szene interagieren.

Beispiel:

3D-Sets werden in AFRAME (https://aframe.io) definiert. Zusätzlich zu allen Möglichkeiten die AFRAME bietet, können viele weitere Komponenten verwendet werden, die durch vrdoro bereitgestellt werden.

Das UI, mit dem die Elemente angepasst werden können, kann durch ein EditorConfig- bzw. EditorConfigGlobal-Attribut an jedem a-entity-Tag konfiguriert werden.

Die Syntax für die EditorConfig ist sehr umfangreich und wird an Beispielen erläutert.

Überblick

Syntax

Es gilt diese Syntax:

  1. Die allgemeine Syntax ist: editorConfig[Global]=`AttributeControl|[AttributeControl]*`
  2. Ein AttributeControl hat die Form: Attribute=Wertebereich oder ComponentName=Property:Wertebereich
  3. Wertebereich: von~bis oder bool oder color oder select

editorConfigGlobal vs. editorConfig

Die durch editorConfigGlobal definierten Controls werden im oberen Abschnitt 'Szeneneinstellungen' des Room-Viewer-UIs angezeigt. Die editorConfig-Werte werden zu dem einzelnem Raumelement unterhalb von Raumelemente angezeigt.

Labels

Attribute vs. Property

Werte für Eigenschaften wie Position oder Color sind Werte an den entsprechenden Entity-Attributen. Dabei können die Attribute auch Komponenten sein, die wiederum Attribute haben. Diese werden (vergl. die AFRAME-Docs) dann Properties genannt. So hat z. B. die Komponente material (gesetzt als Attribute an einer a-entity) die Properties src und color.

Über die editorConfig-Angaben werden für die Attribute und die Properties die konfigurierbaren Werte und Wertebereiche in der Regel gleichbehandelt. So kann z. B. eine Farbauswahl an einer a-plane mit color=color oder an der material-Komponente mit material=color:color wählbar gemacht werden.

Im weiteren wird in der Regel von Attributen gesprochen, in der Regel gelten die Aussagen dann aber auch für Komponenten-Properties.

Attributwert-Änderungen

Es gibt verschiedene Arten von Attributwerten:

  1. Nummerische Werte
  2. Boolesche Werte
  3. Farbwerte
  4. Feste Werte in einer Auswahlliste

Nummerische Werte

Nummerische Werte werden über einen Slider konfiguriert. Die Syntax ist:

minWert und maxWert können auch durch - ersetzt werden, was unbeschränkt bedeutet.

Sind minWert und maxWert gleich (bei Vektoren das jeweilige Paar), dann wird keine Auswahl ermöglicht und der Wert ist fest.

Steht hinter dem maxWert (nicht bei Vektoren möglich) in Klammern ein nummerischer Wert, so wird damit die Schrittweite angegeben. So bedeutet z. B. count=1~10(1), dass nur ganze Zahlen zwischen 1 und 10 möglich sind.

Boolesche Werte

Wahrheitswerte (True oder False) können durch die Angabe von bool als Wert eingestellt werden.

Beispiel:

Im UI wird dann eine Checkbox angezeigt.

Farbwerte

Farbwerte können durch die Angabe von color als Wert eingestellt werden.

Beispiel:

Im UI wird dann ein Farbwahlelement angezeigt.

Feste Werte in einer Auswahlliste

Eine Auswahlliste kann erzeugt werden, indem die Werte innerhalb eckiger Klammern durch Komma getrennt angegeben werden.

Beispiel:

Im UI wird dann ein Farbwahlelement angezeigt.

Übersetzungen

Die Label-Namen ergeben sich, sofern sie nicht explizit angegeben sind, aus den Attribute-Namen, die in der editorConfig angegeben sind.

Bildung von Translation-Keys

Die Bildung der Keys folgt diesen Regeln (in den Beispielen hinter dem ':' ist der Key fett markiert):

Ist der Wertebereich ein Vektor (wie z. B. bei Position oder material.repeat) dann wird dem Key ein '-' gefolgt von x (y,…) angehängt, um die Werte einzeln adressieren und steuern zu können.

Der Room-Viewer prüft für jeden Label (getTranslationForKey(key)), ob er dafür eine Übersetzung findet. Es gibt dabei zwei Kategorien von Übersetzungen:

  1. controller: Übersetzungen für Standard-Control-Labels
  2. environment: Übersetzungen für Raumelement-Labels

Die Prüfung erfolgt in der angegebenen Reihenfolge. D. h. die Übersetzung der Standard-Control-Labels kann nicht von Element-Übersetzungen überschrieben werden.

Hinweis: Translation-Keys sind (wie bei dem benutzten ember-intl) case sensitive zu benutzen

Durch einen Unterstrich '_' angehängte Zeichen werden bei der Suche nach einer Übersetzung entfernt. Der Unterstrich wird durch ein Leerzeichen ersetzt. Dadurch ist es möglich, nur den ersten Teilstring zu übersetzen.

Beispiele (String):

Übersetzung von Keys

Der Key wird zunächst ganz geprüft (ohne den Teil nach '_') und dann von hinten bis zum '-' gekürzt um einen neuen zu prüfenden Key zu bilden.

Beispiel:

Hinweis: Übersetzungen können aktuell im Visualizer nicht hinzugefügt werden. Es können jedoch vorhandene Schlüssel benutzt werden.

Konfigurationsbeispiele

Beispiel zur Steuerung mehrere Werte gleichzeitig (im Code mit 'alias list' kommentiert):

Beipiele für die Änderung von Materials mit der Komponente modeleffects: