Wawa Sensei logo

Camera

Starter pack

Dans une scène 3D, la caméra représente le point de vue de l'utilisateur. C'est la caméra qui définit ce que l'utilisateur voit à l'écran.

Dans threejs, il existe différents types de caméras. Pour l'instant, nous ne couvrirons que les 3 plus courants : la perspective camera, la orthographic camera et la cube camera.

Avant de plonger dans les différents types de caméras disponibles, ajoutons OrbitControls à notre projet.

Orbit controls

Les orbit controls sont un ensemble de contrôles qui permettent à l'utilisateur de déplacer la caméra autour de la scène.

Nous verrons comment les utiliser en profondeur plus tard, mais nous allons commencer à les utiliser dès maintenant pour pouvoir déplacer la caméra et mieux comprendre les différents types de caméras.

Importez et ajoutez le composant OrbitControls du package @react-three/drei au composant Canvas :

import { OrbitControls } from "@react-three/drei";

function App() {
  return (
    <>
      <Canvas>
        <OrbitControls />
      </Canvas>
    </>
  );
}

Vous pouvez maintenant déplacer la caméra autour de la scène :

  • Clic gauche + glisser : pour faire tourner la caméra
  • Molette de la souris : pour zoomer et dézoomer
  • Clic droit + glisser : pour déplacer la caméra

C'est aussi compatible avec les appareils tactiles :

  • Un doigt + glisser : pour faire tourner la caméra
  • Deux doigts + pincer : pour zoomer et dézoomer
  • Deux doigts + glisser : pour déplacer la caméra

Perspective camera

Dans r3f, la caméra par défaut est une perspective camera. C'est la caméra la plus courante dans les applications 3D car elle simule la façon dont l'œil humain voit le monde.

Parce qu'elle est la caméra par défaut, nous n'avons pas besoin de l'ajouter à la scène. Elle est déjà là et nous pouvons la contrôler en ajoutant la prop camera au composant Canvas :

<Canvas camera={{ position: [3, 3, 3] }}>

Mais vous pouvez également ajouter une nouvelle caméra à la scène manuellement.

Et ajouter un composant PerspectiveCamera n'importe où dans le composant Canvas avec la prop makeDefault. Cela fera de cette caméra la caméra par défaut de la scène :

<Canvas>
  <PerspectiveCamera position={[0, 8, 0]} makeDefault />
</Canvas>

Maintenant, la caméra est en haut de la scène :

Perspective camera

Par défaut, la caméra regarde le centre de la scène : [0, 0, 0]. Nous verrons dans les prochaines leçons comment changer la cible de la caméra pour les animations.

La perspective camera possède un champ de vision, un ratio d'aspect, et un plan de découpe near/far.

Field of view

Le champ de vision est l'angle de la caméra. C'est l'angle du bas au haut de la caméra.

Le champ de vision est défini en degrés. La valeur par défaut est de 75 degrés.

Voici ce que nous voyons actuellement dans notre scène :

Field of view

Maintenant, changeons le champ de vision à 30 degrés :

<Canvas camera={{ position: [3, 3, 3], fov: 30 }}>
{/* ... */}

Ou

<Canvas>
  <PerspectiveCamera makeDefault position={[3, 3, 3]} fov={30} />
  {/* ... */}

Voici ce que nous voyons maintenant :

Field of view

En réduisant le champ de vision, nous voyons maintenant moins de la scène et les objets apparaissent plus grands. C'est comme si nous faisions un zoom avant.

Rapport d'aspect

Le rapport d'aspect est le rapport entre la largeur et la hauteur de la caméra. Il est défini comme width / height.

La valeur par défaut est window.innerWidth / window.innerHeight.

Changeons le rapport d'aspect à 1. Nous utilisons la prop aspect et devons définir la prop manual à true pour empêcher r3f de calculer le rapport d'aspect automatiquement :

End of lesson preview

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