Cos'è React Three Fiber?
Prima di iniziare a programmare, diamo un'occhiata al motivo per cui stiamo utilizzando React Three Fiber e cos'è.
WebGL
WebGL è un'API JavaScript per il rendering di grafica interattiva 2D e 3D all'interno di qualsiasi browser web compatibile senza l'uso di plug-in.
Si basa su OpenGL ES, un'API per grafica 3D di basso livello per dispositivi embedded. WebGL consente il rendering accelerato dall'hardware di grafica 2D e 3D, il che rende possibile creare visualizzazioni complesse e giochi che funzionano in modo fluido nel browser.
Ma scrivere codice WebGL direttamente è molto difficile e richiede tempo. Ed è qui che entra in gioco Three.js...
Three.js
Three.js è una libreria JavaScript che fornisce un'API semplice per creare e animare grafica 3D nel browser utilizzando WebGL.
Astrae molti dei dettagli di basso livello di WebGL, rendendo più facile creare scene 3D complesse e animazioni.
React Three Fiber
React Three Fiber è un renderer per Three.js che ti permette di usare Three.js in modo dichiarativo, simile a come usi React per costruire interfacce utente.
Potresti anche vederlo indicato come R3F.
R3F fornisce un insieme di componenti React che corrispondono agli oggetti di Three.js, come mesh, luci e telecamere, e ti consente di usare il modello di componenti di React per costruire scene 3D complesse e animazioni.
Per ottenere lo stesso risultato, il codice di React Three Fiber è molto più breve e facile da leggere rispetto al codice di Three.js.
Ecco un semplice esempio per visualizzare un cubo con entrambe le librerie:
// Three.js const geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); const cube = new THREE.Mesh(geometry, material); scene.add(cube);
// React Three Fiber <mesh> <boxGeometry /> <meshBasicMaterial color={0x00ff00} /> </mesh>
Poimandres
Poimandres, conosciuto come pmndrs, è un collettivo di sviluppatori molto attivo, responsabile di React Three Fiber e di altre librerie molto utili come:
- drei: una collezione di utili helper e componenti completamente funzionali per r3f
- gltfjsx: uno strumento da riga di comando che genera componenti pronti all'uso a partire da file
gltf
(il formato file dei modelli 3D) - react-spring: una libreria di animazione basata su spring-physics
- zustand: una soluzione di gestione di stato minimale, veloce e scalabile
- react-xr: un set di componenti React che rendono facile la creazione di esperienze VR e AR utilizzando R3F ... e molte altre!
Nel corso useremo alcune di queste librerie.
Ti consiglio di darci un'occhiata e farlo spesso, poiché vengono costantemente aggiornate con nuove funzionalità e miglioramenti.
Alternative
Esistono altre librerie che offrono funzionalità simili per altri framework front-end, come Threlte per Svelte, TresJS per Vue e Angular Three per Angular.
Recentemente pmndrs ha anche rilasciato drei-vanilla, una versione vanilla di drei per chi desidera utilizzare i suoi componenti senza React.