I'm trying to separate a given hexagonal tile into 18 congruent kite/deltoid shaped polygons (split the hex into sixths along each radius to outer vertex, and then each sub-triangle again into congruent thirds)

So imagine 6 sets of this triangle, arranged in a hexagon (I've highlighted the vertices):

If I know the precise location of each vertex (they can be calculated based on any hexagon of a given radius via known ratios), how would I go about creating a mesh with unique materials for each of the polygonal triangle components?

My current debug script (pastebin) produces this (I apologize for the names of the points in advance):

when I expected an equilateral triangle composed of 3 congruent polygons with different materials (that differ only in their `albedo_color`

), essentially matching the prior example image.

I've checked some of the other questions on here about creating meshes at runtime and they haven't made it clearer for me. I think my issue is in misunderstanding either/both:

a) the way meshes are constructed out of primitives

b) the way SurfaceTool applies colors to meshes, specifically how `commit()`

overwrites surfaces that have already been committed (the green in my output screenshot is the final color I try to assign to a polygon, I tried 3 others before it in the program flow)

EDIT: as an addendum, I know the Vector3 values I've provided for the points are accurate since I constructed an example mesh in Blender and transferred the coordinate values (and determined the ratios, which will always be correct) from there.