Human head, quadrangles only

I made this human head in Blender using only quadrangles (no triangles). I plan to write a Python script to modify facial features to create a variety of heads using this model.

Only half the head is modeled. The other half is created with a mirror modifier. I had previously used a Laplacian smooth modifier (but I applied it).

There are 445 vertices, but 180 are poles. I ran a Python script to determine the number of vertices each vertex is connected to. There were 9 with 2 connections, 145 with 3 connections, 265 with 4 connections, 19 with 5 connections, 2 with 6 connections, 4 with 7 connections, and 1 with 8 connections. Some of the vertices with 2 or 3 connections are probably due to being at the bottom of the neck or along the middle of the head where it is mirrored. There are 46 vertices along the middle of the head. I’ve heard it is not a good idea to have a large number of poles and not any with more than 5 connections. The one with 8 connections is at the corner of the mouth.

I had to have a large grid of vertices on the back of the head to make it all quadrangles (this is visible on one of the links to Google Photos below). I did model eyeballs but they are not visible since the eyelids are closed. The mesh is 371 vertices without the eyeballs.

Some things I’m not sure about are the vertices at the top of the nose right below the brow. I’m not sure if they make it harded to make that part of the mesh look smooth. I’m not sure the chin looks good and I’m not sure I connected the ear to the head very well.

I attached three screenshots of my mesh to this post and an additional two are on Google Photos:
Google Photos
Google Photos

Here is the Python script I used to count the number of poles if anyone is interested:


def count_connect(mesh):
    p = {}
    for e in mesh.edges:
        for c in [0,1]:
            if not(e.vertices[c] in p):
                p[e.vertices[c]] = 0
            p[e.vertices[c]] += 1
    return p

def pole(mesh):
    p = count_connect(mesh)
    n = {}
    for i in p:
        if p[i] not in n:
            n[p[i]] = []
        n[p[i]].append(i)
    return n


Attachments