-
Notifications
You must be signed in to change notification settings - Fork 62
Description
As I understand it, MPFB currently uses a single character state for both authoring (character design) and delivery (export to formats such as glTF/GLB).
The practical issue with this approach is that exporting requires destructive and irreversible transformations (e.g. baking modifiers, collapsing targets, simplifying materials, removing Blender-only constructs). Once these steps are applied, the character is no longer in a clean design state.
In practice this makes iteration costly: First, the user designs a character in MPFB. To preview the character in a target environment (e.g. game engine, WebGL), the user must now destructively convert the model into an exportable form. The user then typically applies additional delivery-specific customization (naming conventions, rig changes, final material adjustments, etc.). Only after this can the character be exported.
If, after testing in the target environment, the user wants to adjust the design (e.g. proportions, facial features), they must return to the first step and repeat both the destructive conversion and the delivery customization steps. With multiple iterations, this becomes repetitive and error-prone.
A possible solution might be to separate the character into two linked representations: A design version (Full MPFB rig; All modifiers, drivers, and parametric controls; Maximum editability) and an export version (Baked geometry; Mesh-specific shape keys; Simplified glTF-compatible materials; No Blender-only constructs). This separation is, I think, common in production pipelines, where a non-destructive source asset generates one or more delivery assets.
In this setup the design version remains authoritative. It could always be the same regardless of the export requirements, which could potentially simplify things a lot. The export version, on the other hand, is generated only once based on user-selected specs (topology, rig type, material system, triangle count, etc.) and automatically updated whenever the design version changes and/or is refit. Most delivery-specific customization (naming, extra bones, custom materials, etc) could persist on the export version across iterations instead of having to be redone each time.
From a user perspective, the export version would simply be another object or collection that can be shown/hidden. Switching between them would be easy. And, when the export version looks correct, it can be exported directly.
I want to emphasize that this is meant as a conceptual idea, not a concrete implementation proposal. Most likely this has been proposed/discussed at some point already. Also note that I am new to MPFB and do not have a deep understanding of its internal architecture. There may be design constraints that make this undesirable or infeasible to implement. However, from a user and pipeline perspective, a non-destructive export and dual-state workflow could significantly reduce friction when targeting glTF/GLB and similar runtime formats.