Zum Haupttext springen

Einbindung und Arbeitsbereichskonvertierung

Zwei Transformationen legen die Position des Geräts im Anwendungsraum fest. Das Verständnis der Pipeline hilft dabei, die richtige Transformation auszuwählen.

Koordinaten-Pipeline​

SchrittRolleEinrichtungsanleitungDauerhafte Speicherung
ReferenzkoordinatensystemAchsen neu zuordnen (z. B. Z-up → Y-up)session.configure.basis — Tutorial 08 (HTTP-Fernkonfiguration)Ja
Mount-KonvertierungPhysikalischer Montageversatz des Geräts (Armposition, Drehung, Skalierung)configure.mount oder configure.preset — Tutorial 08 (HTTP-Fernkonfiguration)Ja
ArbeitsbereichswechselDrift aufgrund von Kamera- und Szenenwechselncommands.set_transform — Tutorial 09 (WebSocket-Streaming im Tick-by-Tick-Modus)Ja (Wert beibehalten)

Mount-Konvertierung​

„Mount“ bezeichnet die physische Position, an der sich das Gerät befindet. Das umfasst also den Armversatz, die Ausrichtung und den Maßstab. Diese Werte werden einmalig festgelegt (oder wenn der Benutzer die physische Installationskonfiguration ändert) und werden zur Laufzeit kaum aktualisiert.

Voreinstellungen (Werkseinstellungen)​

Anstatt die Mount-Werte selbst zu berechnen, wählen Sie bitte eine benannte Voreinstellung aus:

VoreinstellungenAnordnung am UrsprungKrebsrichtung
defaultsGerätehalterungVorderseite (Vorderseite des Arms)
arm_frontGerätehalterungvorne
arm_front_centeredArbeitsbereichsorientiertvorne
led_frontGerätehalterungLED-Seite vorne
led_front_centeredArbeitsbereichsorientiertLED-Seite vorne
customManuell – Halterung selbst einstellen—

Mit der Voreinstellung werden Halterung, Referenzkoordinatensystem und Arbeitsbereichsursprung gleichzeitig festgelegt.

Direkte Konfiguration des Mounts​

{
"inverse3": [{
"device_id": "049D",
"configure": {
"mount": {
"transform": {
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
mountWow presetsind sich gegenseitig ausschließend

Wenn Sie beide Angaben in derselben Nachricht senden, ist die Bedeutung nicht eindeutig, weshalb der Dienst dies ablehnt. Bitte wählen Sie eine der beiden Optionen aus: benannt preset(Mount wird automatisch eingerichtet) oder explizit mount Umrechnung.

Unterschiede in der Struktur von Befehlen und Snapshots

Mount Senden Die Zeitangabe muss in Anführungszeichen gesetzt werden: { "mount": { "transform": { … } } }. Einbinden aus dem Snapshot Lesen Es handelt sich um eine flache Struktur ohne Verkleidung: { "mount": { "position": …, "rotation": …, "scale": … } }. Dies ist beabsichtigt. Der Befehl ist integriert in command_data Verwende den Wrapper, und der Snapshot ist core::transformweil es direkt serialisiert wird.

Arbeitsbereichswechsel​

Die Arbeitsbereichstransformation ist eine Laufzeitverschiebung, die auf das Mount angewendet wird. Ein typischer Anwendungsfall ist die Szenennavigation. Das bedeutet, dass die Ansicht der Anwendung verschoben, gedreht oder vergrößert bzw. verkleinert wird, während das Gerät physisch an Ort und Stelle bleibt.

Sowohl die Mount- als auch die Workspace-Konvertierung sind dauerhaft. Der Dienst speichert den zuletzt übermittelten Wert. Der Unterschied liegt in der Verwendung und der Leistung:

  • Ein Mountist so konzipiert, dass er einmal eingerichtet bleibt und unverändert bleibt. Erstellt die physische Installationskonfiguration dar und ist darauf optimiert, nur selten aktualisiert zu werden.
  • Die Arbeitsbereichskonvertierungist für ein Streaming mit hoher Frequenz ausgelegt (z. B. bei jedem Einzelbild während der Kamerabewegung). Die interne Pipeline ist auf diesen Aktualisierungszyklus optimiert.
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_transform": {
"transform": {
"position": { "x": 1.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
Die Skalierung wirkt sich auf die Kraftabgabe aus – meist in die gewünschte Richtung.

Wenn Sie eine Halterung oder einen Arbeitsbereich skalieren, ändert sich die von der Vorrichtung erzeugte Renderkraft. Dies liegt daran, dass sich die Skalierung auf die **Eindringtiefe (penetration depth)** auswirkt, die für die Berechnung der Kontaktkraft herangezogen wird. Zum Beispiel 2x Durch die Skalierung wird die Eindringtiefe ungefähr um die Hälfte reduziert (da die virtuelle Szene im Vergleich zum Bewegungsbereich des Geräts doppelt so groß wird). Daher beträgt die resultierende Kraft 1xEin grober Eindruck der Kraft, die man dort spürt die Hälfteist. Umgekehrt 0.5x Der Maßstab verdoppelt die Kraft ungefähr.

Dies ist in der Regel das gewünschte Verhalten. Wenndie haptische Szene verkleinert wird, wird der Kontakt auf natürliche Weise schwächer (der Zustand „weiter entfernt“), und wenn sie vergrößert wird, wird der Kontakt stärker. Sofern dies nicht dem gewünschten Verhalten entspricht – beispielsweise wenn die Steifigkeit während des Vergrößerns oder Verkleinerns konstant bleiben soll –, sollten Sie dies durch eine umgekehrte Skalierung der Kraftverstärkung (Gain) ausgleichen.

Verwenden Sie für die automatische Driftfunktion das Navigationsmodul.

Wenn eine kontinuierliche Bewegung (Bubble-Navigation, geschwindigkeitsgesteuertes Driften) erforderlich ist, dann bei jedem Tick set_transformanstatt es manuell zu streamen NavigationsmodulVerwenden Sie dieses Modul. Es übernimmt die physikalische Simulation, das haptische Feedback und die Verarbeitung der Arbeitsbereichsgrenzen.