Contrôles

Starter pack

Drei propose un ensemble de contrôles utiles pour naviguer dans votre scène et interagir avec les objets. Découvrons-les.

Orbit Controls

Nous avons déjà utilisé le composant OrbitControls dans les leçons précédentes pour naviguer dans notre scène.

Bien que nous l'ayons utilisé sans aucune props, il offre des options utiles pour personnaliser son comportement.

Tout d'abord, vous pouvez décider d'activer ou de désactiver des fonctionnalités avec les props booléennes suivantes :

  • enableZoom
  • enableRotate
  • enablePan

Par exemple, si votre expérience est basée sur le défilement, vous pouvez désactiver le zoom pour éviter les conflits lorsque l'utilisateur utilise la molette de la souris.

Ensuite, vous pouvez changer la vitesse des contrôles avec les props :

  • zoomSpeed
  • rotateSpeed
  • panSpeed

Enfin, vous pouvez modifier les valeurs minimales et maximales pour le zoom :

  • minZoom
  • maxZoom

...les rotations haut et bas :

  • minPolarAngle
  • maxPolarAngle

...les rotations gauche et droite :

  • minAzimuthAngle
  • maxAzimuthAngle

...et le pan avec :

  • minDistance
  • maxDistance

Si vous lancez le projet de démarrage, vous pouvez voir que nous pouvons atteindre des positions qui semblent buggées. (sous le sol, à travers le mesh, pan pour ne pas montrer le phare, etc.)

Combinons certaines de ces props pour créer une expérience plus restreinte :

<OrbitControls
  enablePan={false}
  maxPolarAngle={Math.PI / 2}
  minAzimuthAngle={-Math.PI / 2}
  maxAzimuthAngle={Math.PI / 2}
  minDistance={3}
  maxDistance={10}
/>

Voyez comment la caméra est maintenant limitée pour toujours montrer le phare d'une manière attrayante. Cela empêche l'utilisateur de voir à travers les objets et sous le sol.

Ces petits détails peuvent faire une grande différence dans la qualité de vos expériences.

Étant donné que le composant drei n'est qu'un wrapper autour de la classe OrbitControls de three.js, consultez la documentation de three.js pour voir toutes les props disponibles.

Presentation Controls

PresentationControls contrairement à OrbitControls interagissent avec le contenu des objets du wrapper, pas avec la caméra. En dehors de cela, ils sont très similaires.

Voici le code d'exemple tiré de la documentation de drei

End of lesson preview

To get access to the entire lesson, you need to purchase the course.