Skip to main content
Version : 3.5.x

Transformations du montage et de l'espace de travail

Deux transformations permettent de positionner l'appareil dans l'espace d'application. Comprendre le processus vous aide à choisir la bonne.

Coordonner le pipeline

ScèneFonctionnalitésComment le configurerPersévérant ?
BasePermet de remapper les axes (par exemple, Z vers le haut → Y vers le haut)session.configure.basis — voir Tutoriel n° 8 (Configuration à distance via HTTP)Oui
Transformation de montageDécalage physique de montage de l'appareil (position du bras, rotation, échelle)configure.mount ou configure.preset — voir Tutoriel n° 8 (Configuration à distance via HTTP)Oui
Transformation de l'espace de travailDécalage de la caméra / de la navigation dans la scènecommands.set_transform — voir Tutoriel 09 (Diffusion en continu WebSocket à chaque tick)Oui (en haut de la page)

Transformation de montage

La configuration de montage décrit l'emplacement physique de l'appareil: le déport du bras, son orientation et son échelle. Elle est définie une seule fois (ou lorsque l'utilisateur modifie la configuration physique) et est rarement mise à jour pendant l'exécution.

Préréglages (configurations d'usine)

Au lieu de calculer vous-même le montage, choisissez un préréglage :

PréréglageEmplacement d'origineFace au bras
defaultsSocle pour appareilVers l'avant (bras vers l'avant)
arm_frontSocle pour appareilSuivant
arm_front_centeredCentre d'espaces de travailSuivant
led_frontSocle pour appareilLED latérale avant
led_front_centeredCentre d'espaces de travailLED latérale avant
customManuel — à monter soi-même

Un préréglage permet de définir d'un seul coup la monture, la base et l'origine de l'espace de travail.

Configurer directement le montage

{
"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 }
}
}
}
}]
}
mount et preset s'excluent mutuellement

Les envoyer tous les deux dans le même message prête à confusion — le service le rejette. Choisissez-en un : un preset (qui configure le montage pour vous) ou un mount transformer.

Asymétrie entre les commandes et les instantanés

Quand envoi une monture, enveloppez la transformation : { "mount": { "transform": { … } } }. Quand lecture un montage à partir du cliché, c'est plat : { "mount": { "position": …, "rotation": …, "scale": … } }. C'est voulu : les commandes utilisent le système unifié command_data wrapper ; instantanés sérialiser le core::transform directement.

Transformation de l'espace de travail

La transformation de l'espace de travail est une déviation appliquée à l'exécution par-dessus le montage. Elle est généralement utilisée pour la navigation dans une scène : pour effectuer un panoramique, une rotation ou un zoom sur la vue de l'application tandis que l'appareil reste physiquement immobile.

Les transformations de montage et d'espace de travail sont toutes deux persistantes: le service mémorise la dernière valeur que vous avez envoyée. La différence réside dans leur objectif et leurs performances :

  • Mount est conçu pour être configuré une seule fois et rester inchangé : il décrit la configuration physique et est optimisé pour les mises à jour peu fréquentes.
  • La transformation de l'espace de travail est conçue pour être transmise en continu à une fréquence élevée (par exemple, à chaque image lors de la navigation de la caméra) — le pipeline interne est optimisé pour cette fréquence de mise à jour.
{
"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 }
}
}
}
}]
}
Le réglage de l'échelle influe sur la force produite — souvent exactement comme vous le souhaitez

Le redimensionnement du montage ou de l'espace de travail modifie la force appliquée par l'appareil, car le redimensionnement affecte la profondeur de pénétration utilisé pour calculer la force de contact. Par exemple, un 2x l'échelle réduit de moitié environ la profondeur de pénétration (la scène virtuelle est deux fois plus grande par rapport à la course de l'appareil), de sorte que la force qui en résulte est d'environ la moitié de ce que tu ressentirais à 1x. À l'inverse, un 0.5x l'échelle multiplie la force par deux environ.

C'est généralement le comportement souhaité : le fait de s'éloigner d' une scène haptique entraîne naturellement une diminution de l'intensité des contacts (vous êtes « plus loin »), tandis que le fait de se rapprocher les renforce. Si ce n'est pas ce que vous souhaitez — par exemple, si vous avez besoin que la rigidité reste constante lorsque l'utilisateur change d'échelle —, compensez en ajustant vos gains de force de manière inverse.

Utilisez le module de navigation pour la dérive automatisée

Si vous avez besoin d'un déplacement continu (navigation par bulles, dérive à vitesse contrôlée), utilisez le Module de navigation au lieu de diffuser manuellement set_transform à chaque instant — il gère pour vous la physique, le retour haptique et les limites de l'espace de travail.