ContexteConversion Angles d'Euler à XYZ coords pour VR
Je suis en VTK KiwiViewer source sur mon appareil mobile et je l'utilise pour faire des scènes VR en utilisant des nuages de points où les actes de téléphone de l'utilisateur que les lunettes VR.
Je reçois attitude
de CMDeviceMotion qui me fournit Euler Angles pour les axes x, y et z (respectivement pitch, roll et yaw).
Je suis en train d'obtenir une expérience Google Cardboard sans tirer parti du SDK carton. Raison d'être parce que Kiwi importera déjà tous les modèles dont j'ai besoin pour les tests.
Scénario
Kiwi utilise un système de coordonnées XYZ pour Position de la caméra et Point focal. Voici les trois objets que vous avez à travailler pour positionner la vue VR:
- Point focal: xyz du point de l'appareil photo est à la recherche à
- Position de la caméra: xyz où l'appareil est en 3d espace
- caméra Up: relative xyz pour contrôler la rotation de la caméra
pour l'instant, je suis en train de toujours Position de caméra au 0,0,0
. J'utilise sin
/cos
avec angles d'Euler * 10 pour placer les point focal 10 unités de la caméra. Réglage du Position de la caméra et La position du point focal est réglée automatiquement Camera Up pour une valeur correcte utilisable.
Réglage du point focal
x = -(sin(roll) * cos(pitch)) * 10;
y = cos(roll) * sin(pitch) * 10;
z = sin(yaw);
setCameraFocalPoint(x, y, z);
Question
Ma configuration actuelle fonctionne bien, mais il a quelques bizarreries désagréables. Comment puis-je modifier ma conversion pour obtenir une expérience VR plus solide?
J'ai exploité [cette réponse] (http://stackoverflow.com/a/1569893/332578) pour accomplir ce que vous avez mentionné ici.J'ai essayé tous les 6 styles de matrices mentionnés et je suis toujours confronté à des problèmes similaires où ils fonctionnent mais il y a des problèmes. Des idées? – Jacksonkr
Etes-vous sûr que ceux-ci ne sont pas causés par le capteur? Mettez-vous aussi à jour le haut-vecteur? –
Les valeurs des capteurs sont vérifiées. Je ne mets pas à jour le vecteur * camera up * car cela a plus à voir avec l'orientation de la vue. Ce que j'ai remarqué, c'est que certaines valeurs vont de -PI à PI traversant 0 deux fois dans une rotation de 360 °. À 180, la caméra VR revient de la même façon, ce qui me fait penser que je reçois une sorte de valeur absolue (pas exactement, mais j'espère que vous ressentez mes pensées). – Jacksonkr