Viste

Starter pack

Finora abbiamo creato molte scene 3D, ma abbiamo visualizzato solo una alla volta occupando l'intera pagina.

In questa lezione impareremo come integrare più scene 3D all'interno di una singola pagina HTML come potresti aggiungere immagini, video o qualsiasi altro elemento HTML al tuo sito web.

Progetto iniziale

Per questa lezione creeremo una pagina di destinazione per un'agenzia di sviluppo web 3D fittizia.

Il pacchetto iniziale contiene una pagina semplice e pronta all'uso, reattiva, che contiene le seguenti sezioni: Home, Servizi, Team, Portfolio e Contatti.

Questa è una pagina HTML standard contenente contenuti indicizzabili per i motori di ricerca e l'accessibilità che miglioreremo e illustreremo con contenuti 3D.

La pagina di destinazione senza contenuti 3D

Vista

Per creare e rendere più scene 3D nella nostra pagina utilizzeremo il View component della libreria Drei.

Utilizzandolo, possiamo usare un solo componente Canvas e rendere più scene indipendenti (viste) al suo interno. Questo è molto utile poiché ci consente di utilizzare un solo contesto WebGL ed evitare problemi di prestazioni.

Queste viste sono collegate a un elemento HTML di destinazione e possono essere posizionate e dimensionate in modo indipendente, reagendo correttamente agli eventi di tocco, mouse, scorrimento e ridimensionamento.

Canvas

Per preparare la nostra pagina per il contenuto 3D, creiamo il nostro solito componente Canvas in cima all'elemento 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 è usata per stilizzare il canvas e far sì che occupi l'intera pagina. È già definita nel file index.css.

Tracking

Il progetto iniziale contiene componenti di scena 3D che useremo per illustrare le diverse sezioni della pagina.

Aggiungiamo quello per la sezione iniziale:

import { Hero3D } from "./Hero3D";

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

React Three Fiber: The Ultimate Guide to 3D Web Development

✨ You have reached the end of the preview ✨

Go to the next level with Three.js and React Three Fiber!

Get full access to this lesson and the complete course when you enroll:

  • 🔓 Full lesson videos with no limits
  • 💻 Access to the final source code
  • 🎓 Course progress tracking & completion
  • 💬 Invite to our private Discord community
Unlock the Full Course – Just $85

One-time payment. Lifetime updates included.