geometries
What is a geometry?
| Term | Definition | 
|---|---|
| geometry | composition of vertices | 
| face | surface formed by joining of vertices | 
| mesh | geometry plus material idk | 
- All built-in geometries inherit from the BufferGeometry class
 
Box example
Parameters
width: The size on thexaxisheight: The size on theyaxisdepth: The size on thezaxiswidthSegments: How many subdivisions in thexaxisheightSegments: How many subdivisions in theyaxisdepthSegments: How many subdivisions in thezaxis
Subdivisions correspond to how much triangles should compose the face
const geometry = new THREE.BoxGeometry(1, 1, 1, 2, 2, 2);
const material = new THREE.MeshBasicMaterial({
  color: 0xff0000,
  wireframe: true,
});
set wireframe to see the subdivisions and vertices

Higher subdivisions might lead to performance issues
Creating your own buffer geometry
- Use BufferGeometry (might need 3D software)
 
export default function CustomObject() {
  const verticesCount = 10 * 3;
  const geometryRef = useRef();
  const positions = useMemo(() => {
    const result = new Float32Array(verticesCount * 3);
    for (let i = 0; i < verticesCount * 3; i++) {
      result[i] = (Math.random() - 0.5) * 3;
    }
    return result;
  }, []);
  useEffect(() => {
    geometryRef.current.computeVertexNormals();
  }, [positions]);
  return (
    <mesh>
      <bufferGeometry ref={geometryRef}>
        <bufferAttribute
          side={THREE.DoubleSide}
          attach={"attributes-position"}
          count={verticesCount}
          itemSize={3}
          array={positions}
        />
      </bufferGeometry>
      <meshStandardMaterial color="red" />
    </mesh>
  );
}
Random triangles
NOTE
3JS's internal shaders look for position to position the vertices
