Types communs
Toutes les charges utiles JSON utilisent ces types de manière cohérente, tant via l'interface WebSocket que via l'interface HTTP.
vec3
Un vecteur 3D. Utilisé pour les positions (en mètres), les vitesses (en m/s), les forces (en N) et les facteurs d'échelle.
{ "x": 0.0, "y": 0.0, "z": 0.0 }
quaternion
Un quaternion unitaire représentant une rotation. w occupe la première place dans la présentation interne du service, mais en JSON, les quatre composants sont tous spécifiés sous forme de clés nommées ; l'ordre n'a donc aucune importance.
{ "w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0 }
Un quaternion d'identité (w=1, x=y=z=0) signifie « pas de rotation ».
angles3
Angles d'articulation en degrés (et non en radians). Ils sont utilisés pour la position angulaire et la vitesse angulaire des trois articulations d'Inverse3 .
{ "a0": 0.0, "a1": 0.0, "a2": 0.0 }
transformer
Combinaison de position, de rotation et de mise à l'échelle. Utilisée pour les transformations de montage, les transformations de l'espace de travail et le placement d'effets SDF.
{
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
La transformation d'identité (illustrée ci-dessus) ne modifie rien : position zéro, aucune rotation, échelle 1.
mountChez Envoyer un des monts au-dessus de configure.mount la transformation en une clé "transform" Inclus : { "mount": { "transform": { … } } }.
Chez Lire Lorsqu'on le monte à partir d'un instantané de périphérique, il apparaît comme plat : { "mount": { "position": …, "rotation": …, "scale": … } }.
Cette asymétrie est voulue – voir Support et espace de travail.