Aujourd'hui, gros sujet, comment fonctionne le système de géométrie. J'ai pas tout compris, je vais essayer de résumer ça comme je peux. Déjà il existe plusieurs types de built in méthodes qui permettent de générer différents types de géométrie. Je pense que celles qu'on va le plus utiliser : BoxGeometry, Sphere et Text. On a déjà vu les 3 premiers arguments lorsqu'on créé une nouvelle géométrie width height et depth mais il en existe 3 autres, qui correspondent aux subdivisions sur les mêmes paramètres. Combien de vertices sur ta width (défaut 1), ta height et ta depth. sur un cube on s'en fou, il nous faut juste deux 4 vertices par côté( étant donné que ce sont des triangles qui sont à l'origine de la création de formes), plus c'est useless parce que y'a pas de relief complexe sur un cube. Sur une sphere c'est déjà plus pertinent d'augmenter le nombre si on veut faire une balle lisse. Toutes ces méthodes BoxGeometry et autre qui sont built-in héritent de BufferGeomtry et c'est là que ça se complexifie. Si tu veux créer toi même tes formes,des éléments procéduraux, des effets dynamiques et évolutifs, tu dois passer par cette classe de bas niveau. Tu peux évidémment utiliser blender pour mon premier exemple si c'est juste un asset que tu dois importer mais si ça doit intéragir avec des éléments faut se casser la tête. Donc plusieurs étapes. Il faut d'abord utilise un Float32Array qui nous sert de matrice en l'occurrence mais qui permet de stocker des float de 32 bits et de tous les envoyer au gpu d'un coup sans que ces derniers soient stockés indépendamment et référencés comme un array classique car ça consomme beaucoup moins. Ensuite, on utilise un BufferAttribute ou on référence notre Float32Array en lui précisant, 'traite ces éléments 3 par 3' correspond chacun à un vertex et ses coordonnées x y et z. Ensuite on utilise le fameux BufferGeometry en l'initialisant et on lui setAttribute('position', avec ici notre BufferAttribute) le position est obligé ici parce que la classes est construite comme ça. Si on on avait voulu bougé les uv ou les normals on aurait changé ça. On peut ensuite s'amuser à créer des formes un peux aléatoire avec du Math.random en faisant un for sur notre i en initialisant ce dernier avec un gros nombre.