Part 3 of 8 · 5 min read
Blender, imported avatars and the gap after generative 3D
Blender and imported-asset experiments, measured asset properties and the work between a generated mesh and an animated character.
Arunank Sharan · Kuzushi Labs ·
In this article
Avashi used several asset routes because generation and animation were not one problem. Parametric models offered consistency. Blender offered authoring control. Imported GLB and VRM assets made it possible to investigate rendering and expression behavior before an automated generator was complete.
The repository contains Ready Player Me collection and inspection tooling, Blender scripts, MPFB workflow material, VRM viewers and exported experimental assets. These are evidence of multiple routes through the pipeline, not a claim that every source asset was created by us or licensed for redistribution.
The common asset contract
Every route should converge on an asset manifest. At minimum, it records format, units, orientation, bounds, skeleton, morph names, material count, texture dimensions and provenance. The runtime should reject an incompatible asset before it fails halfway through a conversation.
{
"schema_version": "avatar-asset-1",
"asset_id": "guide-reference",
"representation": "glb",
"units": "metres",
"facial_controls": "reviewed-morph-map-v1",
"speech_controls": ["jawOpen", "mouthClose"],
"quality_profile": "mobile-candidate",
"validation": "pending-device-test"
}
This is an authored contract example. An actual manifest must include file hashes and measured asset properties; the example deliberately does not imply those checks were completed for an unseen asset.
The Blender and MPFB route
The workflow material compared MakeHuman with FACSHuman, an MPFB quick-prototype route, and MPFB with Rigify and an ARKit blendshape helper. The key distinction was between a body rig and facial controls. A skeleton suitable for body motion does not automatically provide the expressions needed for a speaking face.
An inspected MPFB export contained 21,833 position vertices, one primitive and 77 morph targets at its largest target-bearing primitive. Its file occupied 40,270,728 bytes, or 38.41 MiB. That is useful evidence of an actual asset experiment, while also showing why export success was not the final acceptance criterion.
The authoring loop should inspect a neutral pose, isolated controls and combinations before optimization. Bake or preserve the intended transforms, strip unused data deliberately, then validate the exported file in the target renderer. A Blender preview and a browser renderer can differ in material interpretation, transparency and skeleton handling.
Imported VRM accelerated experimentation
VRM adds humanoid conventions and avatar metadata around glTF. The local viewer work exposed practical variation between imported characters: some had many facial morphs, while another inspected VRM had none on its mesh primitives.
The stylized source and optimized variants measured 8.59 MiB and 5.39 MiB respectively. Both retained the same summed position-accessor count of 43,988. The maximum morph-target count changed from 60 to 52. These measurements show that optimization changed specific properties rather than magically removing all runtime cost.
Count semantics matter. Summing position accessor counts across primitives can count shared data more than once; it is a reproducible inventory measure, not necessarily the number of unique vertices processed in every draw. Record the measurement method alongside the number.
Why a generated mesh was only the beginning
The research examined reconstruction and generative approaches. TripoSR is an image-to-3D reconstruction project; TRELLIS uses structured 3D latent representations; Hunyuan3D separates shape and texture-generation concerns. They offer different ways to obtain an asset, but none should be assumed to produce the particular facial-control contract required by this runtime without inspection. TripoSR, TRELLIS, Hunyuan3D
The downstream work can include topology cleanup, retopology, UV preparation, material baking, rigging and control calibration. An attractive neutral render can conceal fused lips, missing mouth geometry or a surface that breaks under deformation.
For an interactive avatar, compare cost per accepted animated asset, including manual correction. Comparing only generation latency rewards pipelines that move difficult work to a person afterward.
Neural rendering changes the output contract
NeRF and Gaussian-splatting research offers another representation of appearance. The original Gaussian-splatting implementation targets radiance-field reconstruction and rendering. Its output should not be treated as interchangeable with a skinned GLB mesh or an ARKit-style facial rig. Original Gaussian-splatting implementation
A specialized neural character representation may be appropriate for another product, but it changes serving, animation, editing and client requirements. A renderer demo is not evidence that a browser avatar SDK can load the representation unchanged.
How to compare the routes fairly
Use the same brief and a small set of required expressions for each route. Record setup time, manual correction time, file size, runtime cost and failures. Include profiles that stress the eyes, mouth and silhouette, rather than selecting only flattering frontal views.
A useful acceptance sequence is: validate geometry; validate individual controls; validate speech and emotion together; inspect materials in the browser; run the target-device session. If a route fails early, retain the failure and estimate the repair cost rather than continuing to optimize an unsuitable asset.
That was the deeper lesson of the avatar layer. The product needed an accepted character, not just a generated file. The next article moves from that asset contract to the animation system that consumes it.