subdivide edges in vertex groups without disturbing other vertex groups


I have a mesh with approximately ~300 faces. Each face (4 vertices) is in it’s own vertex group, so there are ~300 vertex groups. Of course each vertex is in several vertex groups. Now, I want to subdivide each face a couple of times but preserve the structure of the vertex groups. The issue is that when I subdivide one face, the adjacent face’s vertex groups expand to include some of the new vertices.

I’m somewhat familiar with python, so I’m just looking for ideas on how to go about this, and if it’s even possible.

In the past on simpler meshes, I think I used to do this by first subdividing the entire mesh to the necessary resolution, and then doing a select similar by normal on each “face” (really a collection of parallel faces due to the subdivide). This takes a long time to get any reasonable number of vertex groups done though. I feel like blender used to subdivide faces without expanding adjacent vertex groups, but maybe I’m remembering wrong.

If it is just impossible to subdivide without affecting nearby vertex groups, the only way I can think of is to select a random vertex from a list of ungrouped vertices (very slow to compile that list), make sure it’s not on an edge between the big “faces” somehow, and then select similar and group. Then you iterate while there are ungrouped vertices remaining. Still, this would be prohibitively slow for a large mesh…