ThreeJS

ThreeJS e un wrapper di webgl per l’implementazione di applicazioni grafiche 3D che sfruttano lo stack web, si basa sul concetto di grafo di rendering

---
title: threejs domain model
---
flowchart TD
A[renderer]
B[scene]
C[camera]
D[light]
E[mesh]
F[geometry]
G[vertex]
H[face3]
I[material]
J[texture]
K[image]
E & D & C --> B --> A
K --> J --> I --> E
G & H --> F --> E

L’oggetto fondamentale e la scene, che contiene tutti gli elementi renderizzati dalla pipeline, nonché le informazioni di illuminazione e posizione della camera negli oggetti light e camera

l’oggetto mesh rappresenta la singola mesh 3D poligonale, di cui viene definita la geometria e le informazioni di colore e texture, nella scena possono essere presenti mesh 3D

Animation loop

Per poter renderizzare la scena e necessario creare un animation loop si procede come segue

// create an animation loop to render the sceene
function animate() {
	// funzione che comanda la pipeline di renderizzare la scena
  renderer.render( scene, camera );
// logica di aggiornamento della scena
}
 
// setta la funzione di cui sopra per l'esecuzione in base al refresh rate dello schermo 
renderer.setAnimationLoop( animate );

Questo limita la capacita di ricezione degli input da parte dell’utente alla frequenza di refresh rate dello schermo (in caso di refresh rate a si potrà processare input 60 volte ogni secondo )

Manipolare la camera

Per consentire la renderizzazione della scena e necessario definire un’oggetto Camera che definisce i parametri di proiezione (sono disponibili diverse tipologie, prospettiva in primis per simulare la vista umana)

// si definisce una proiezione in prospettiva in questo caso
const camera = new THREE.PerspectiveCamera( 
	75, // fov
	window.innerWidth / window.innerHeight, // aspect ratio
	0.1, // near
	1000  // far
);

PREVIOUS