A Practical Guide to The Boy Of A Thousand Faces in Character Customization Pipelines

When you are working with facial re-targeting for procedural character generation, you eventually hit the wall where your blendshapes refuse to cooperate. That is where The Boy Of A Thousand Faces becomes relevant. It is a dataset and methodology for dense facial morph target coverage that has been circulating in the procedural character generation community since around 2023. The short version: it gives you a way to interpolate across a much larger number of discrete facial expressions than the standard 52 ARKit blendshapes allow, without blowing up your memory budget. The Boy Of A Thousand Faces is a collection of high-resolution scan-based morph targets organized around a parametric face model. The name came from an early GitHub repo, and it stuck even though the project has evolved beyond its original form. The core idea is that instead of using a handful of generic expression shapes, you work from a dense catalog of micro-expressions captured from real face scans. Each entry in the catalog maps to a specific point in a two-dimensional expression space defined by arousal and valence axes, which makes interpolation between any two faces mathematically sensible rather than just a weighted average of unrelated shapes. There are several versions floating around. The original release had roughly a thousand morph targets derived from the BU-360 database and the FAU Affect Norms. Later forks added FLAME topology support and some with FaceWarehouse data mixed in. The format is usually either OBJ with embedded blendshape weights or a binary .blend file depending on which pipeline you are targeting. Blender, Maya, and Unity all have importers that handle the standard releases without modification.

One thing people miss about this system is that the morph targets are not meant to be used raw. If you load all ~1000 shapes into a rig and drive them directly, you will get grotesque artifacts at the jaw and around the eyes. The proper workflow involves dimensionality reduction. You run the targets through a PCA pass first. The original paper and readme both suggest keeping around 40 to 60 principal components. That gives you the expressiveness you need while keeping the vertex displacement realistic. I spent about three weeks fighting jaw collapse on a character that was supposed to do subtle smirk expressions before I figured out that the PCA truncation was the bottleneck, not the rig itself.

Setting Up The Boy Of A Thousand Faces in Your Pipeline

Start by downloading the latest release from the original repository. The URL is usually cited as thegiordim/boy-of-a-thousand-faces on GitHub. The release includes the morph targets, a sample rig, and documentation for both Blender and Unity integration. Make sure you are pulling the version tagged with FLAME compatibility if your project uses that topology. The older versions assume Basel Face Model structure and will not rig correctly on FLAME characters without manual retargeting. Once you have the files, import them into Blender. Open your base mesh and go to Shape Keys. Import the PCA-reduced set, not the full catalog. I know the documentation sometimes shows the full set in screenshots, which is misleading. The full set will crash your viewport on anything under 32 gigabytes of RAM. The reduced set works fine on a 16-gigabyte machine. After importing, you need to assign the morph targets to a control system. The repo includes a driver setup for a small set of sliders. These map to the arousal-valence coordinate space. You can extend this with your own controls. I built a set of custom drivers that map to lip sync phonemes for one project. It took about forty minutes to wire up and runs in real time at sixty frames per second on an RTX 4070. The native drivers in the repo are fine for static posing but they are not designed for animation workflows where you need per-frame interpolation.

Get the Full Details

The Boy of a Thousand Faces by Brian Selznick | Goodreads
The Boy of a Thousand Faces by Brian Selznick | Goodreads

Common Pitfalls and What They Cost You

The most common failure mode is asymmetry corruption. When you blend between certain morph pairs, especially around the mouth and cheeks, the symmetry can break if your base mesh is not perfectly symmetrical. I ran into this on a scan-based character that had a slight nose deviation from the original capture. The expression drove the nose into a twisted shape that looked like a facial spasm. The fix was running a symmetry correction pass on the base mesh before applying any shape keys. You can do this in Blender with a simple mirror modifier bake or by using the Mesh > Symmetrize function. It adds about five minutes to your setup time but prevents hours of fixing bad animation later. Another issue is vertex count mismatch. If your character does not share topology with the model the morphs were authored on, the shape keys will misalign. The FLAME-based releases handle this better than the older BFM versions, but you still need to verify that your vertex count matches. A mismatch of even a single vertex can cause unexpected deformation in extreme expressions. I once spent two days debugging a jaw artifact only to discover my character had 53,247 vertices instead of the expected 53,246. One extra vertex on the ear canal from a separate import. It sounded ridiculous but it was the actual cause. The biggest limitation of this system is that it does not handle non-facial geometry. If your character has clothing that should react to facial expressions, like a scarf or a high collar that shifts with jaw movement, The Boy Of A Thousand Faces gives you nothing for that. You need to handle those separately with bone-driven deformation or simulation. There are community addons that attempt to bridge this gap, but they are not part of the official release and the results are inconsistent. If your project requires cloth interaction with facial animation, factor in additional time for that layer of work.

Performance Considerations

Even with PCA reduction, running The Boy Of A Thousand Faces in real time is heavier than standard ARKit tracking. On a mid-range GPU, expect about a fifteen to twenty percent performance hit compared to a baseline rig using only the standard fifty-two blendshapes. This matters most on mobile platforms where you might need to reduce the component count further to around thirty. Thirty components still looks decent for most close-up shots but you will lose some of the finer micro-expression detail. If your project is primarily distant shots, thirty is probably sufficient. For close-ups where the audience will scrutinize the face, stick with the full forty to sixty range. Memory usage on the GPU side is also higher. Each PCA component adds vertex displacement data that needs to be uploaded every frame. With sixty components on a 53k vertex mesh, you are looking at roughly 38 megabytes of shape key buffer. That is manageable on desktop GPUs but tight on consoles and mobile. I have seen projects fail to ship on PS5 because they did not account for the extra memory budget. Check your platform constraints before committing to a component count.

Where The Boy Of A Thousand Faces Falls Short

The dataset is based largely on Caucasian and East Asian facial structures from the source databases. If you are building characters with distinctly different anatomical features, the morphs will not generalize well without manual adjustment. This is not a flaw in the methodology. It is a reflection of the training data. The community has released some expanded datasets since the original, but none of them have achieved the same level of integration or documentation. If your character needs significant departure from the standard face template, plan for additional sculpting work or consider a hybrid approach where you use The Boy Of A Thousand Faces for the base expressions and layer custom morphs on top for the features that the dataset does not cover. There is also the matter of emotional range. The arousal-valence framework works well for basic expression mapping but it does not capture the full complexity of human facial animation. Certain emotions like contempt or genuine surprise require asymmetric muscle activation that the symmetric interpolation of these morph targets struggles to reproduce. Professional animators working on expressive characters often supplement the automated system with hand-keyed shape key animation for those specific cases. The automated system handles about eighty percent of routine expression needs. The remaining twenty percent still requires manual intervention. If you are starting a new project and facial realism is not a priority, you might be better off skipping this entirely and using a standard blendshape rig. The Boy Of A Thousand Faces is worth the setup time when you need high-fidelity expression interpolation that goes beyond what ARKit provides. It is not worth it if you are doing low-poly stylized characters or projects where the face is rarely on screen. Be honest about your actual needs before committing to the workflow.

The Boy of a Thousand Faces SIGNED by Brian Selznick 2000 Hardcover ...
The Boy of a Thousand Faces SIGNED by Brian Selznick 2000 Hardcover ...