If you are working with convex polygons exclusively, one approach is to create a triangle strip from these shapes.
const vertices = [
0, 0, 0,
1, 0, 0,
1, 1, 0,
0, 1, 0,
0, 0, 1
];
const faces = [
[0, 1, 2, 3],
[0, 3, 4]
];
const geometry = new THREE.Geometry ();
let i, j, face;
for (i = 0; i < vertices.length; i += 3) {
geometry.vertices.push (new THREE.Vector3 (
vertices[i],
vertices[i + 1],
vertices[i + 2]
));
}
let i, j, face;
for (i = 0; i < faces.length; i++) {
face = faces[i];
for (j = 1; j < face.length - 1; j++) {
geometry.faces.push (new THREE.Face3 (face[0], face[j], face[j + 1]));
}
}
You can see the complete code in action on this fiddle: http://jsfiddle.net/g25v5t0k/