ccc',
        cover: true,
      })

      // allocate the projection data as attributes on the geometry
      allocateProjectionData(geometry, NUM_ELEMENTS)

      // create the instanced mesh
      const instancedMesh = new THREE.InstancedMesh(geometry, material, NUM_ELEMENTS)

      const initialPositions = []
      const initialRotations = []
      for (let i = 0; i < NUM_ELEMENTS; i++) {
        // position the element
        dummy.position.x = random(-width / 2, width / 2)
        dummy.position.y = 