Could you explain more about boxGeometryWithMaterialGroups and where did the three numbers (2,4,6) come from: const box2geom = boxGeometryWithMaterialGroups(2, 4, 6); We went over mesh last class but I was still a little confused about boxMesh when I was going through the reading (I apologize that this confusion is about the GUI reading but I forgot to ask it in the other quiz). Could you explain the concept again please? What are the key differences between creating custom geometry in the old way (using THREE.Geometry) and the new way (using THREE.BufferGeometry) in Three.js, and how do they impact performance and ease of use? What does computeFlatVertexNormals() do? Why is it needed to mesh? What is the difference between using coordinates to locate/create vertices vs. normal vectors? Why do we need both? Is buffer geometry how three.js refers to the new way of representing custom geometry? I'm a bit confused with the quad function. Can you re-explain groups/the associated information in Faces,Indexes, Vertices section?