Wawa Sensei logo
Discord logo
Enroll $85Login

Views

Starter pack

Jusqu'à présent, nous avons créé de nombreuses scènes 3D, mais nous n'en avons affiché qu'une seule à la fois prenant toute la page.

Dans cette leçon, nous allons apprendre à intégrer plusieurs scènes 3D dans une seule page HTML, comme vous pourriez ajouter des images, des vidéos ou tout autre élément HTML à votre site web.

Projet de départ

Pour cette leçon, nous allons créer une page d'accueil pour une agence fictive de développement web en 3D.

Le pack de départ contient une page simple et prête à l'emploi, responsive, contenant les sections suivantes : Accueil, Services, Équipe, Portfolio, et Contact.

Il s'agit d'une page HTML standard contenant du contenu indexable pour les moteurs de recherche et l'accessibilité que nous allons améliorer et illustrer avec du contenu 3D.

La page d'accueil sans contenu 3D

View

Pour créer et rendre plusieurs scènes 3D dans notre page, nous allons utiliser le View component de la bibliothèque Drei.

En l'utilisant, nous pouvons utiliser un seul composant Canvas et rendre plusieurs scènes indépendantes (views) à l'intérieur. Ceci est très utile car cela nous permet d'utiliser un seul contexte WebGL et d'éviter des problèmes de performance.

Ces views sont liées à un élément HTML cible et peuvent être positionnées et dimensionnées indépendamment tout en réagissant correctement aux événements de toucher, de souris, de défilement et de redimensionnement.

Canvas

Pour préparer notre page pour le contenu 3D, créons notre composant Canvas habituel en haut de l'élément main.

HomePage.jsx :

// ...
import { Canvas } from "react-three-fiber";

export const HomePage = () => {
  // ...

  return (
    <main>
      <Canvas
        className="canvas"
        camera={{ position: [0, 0, 1.5], fov: 30 }}
      ></Canvas>
      {/* ... */}
    </main>
  );
};

La classe canvas est utilisée pour styliser le canvas et le faire occuper toute la page. Elle est déjà définie dans le fichier index.css.

Suivi

Le projet de démarrage contient des composants de scène 3D que nous utiliserons pour illustrer les différentes sections de la page.

Ajoutons celui de la section d'accueil :

import { Hero3D } from "./Hero3D";

export const HomePage = () => {
  // ...
  return (
    <main>
      <Canvas className="canvas" camera={{ position: [0, 0, 1.5], fov: 30 }}>
        <Hero3D />
      </Canvas>
      {/* ... */}
    </main>
  );
};

End of lesson preview

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