J'utilise des commandes d'orientation de l'appareil, mais ont besoin des fonctionnalités supplémentaires que je vais avoir des difficultés.Three.js: Utilisation DeviceOrientationControls avec une direction différente de base
Je veux qu'un utilisateur soit capable de « verrouiller » la caméra, ce qui empêche l'orientation de la caméra de changer. Lorsque le déverrouiller, je veux que la vue tourne maintenant la caméra de l'endroit où ils l'ont verrouillé, c'est à dire. Je ne veux pas que l'appareil photo "passe" à une autre orientation, même si l'orientation de son téléphone a changé pendant que la vue était verrouillée.
Voici le code pour la version modifiée de DeviceOrientaionControls.js: https://gist.github.com/BruOp/a3fb2f0854357eb1182671cafd3fae89
Les éléments essentiels sont en update
, disconnect
et reconnect
.
Je bascule l'orientation (appelez-le lockedRot
) que l'utilisateur voit quand il se "verrouille", puis prend l'orientation de l'appareil lorsqu'il est "déverrouillé" (unlockedRot
). Je trouve donc le quaternion deviceToPercieved
tel que:
deviceToPercieved * unlockedRot = lockedRot
Mais ce n'est pas vraiment travailler. Parfois, la caméra ne saute qu'un petit peu lorsqu'elle est déverrouillée, mais d'autres fois, elle ne parvient pas à maintenir l'orientation «verrouillée» entièrement lors du déverrouillage.
Suis-je fait fausse route ici ou suis-je manque quelque chose de plus fondamental?