These are some basic technical docs intended for developers. For more elaborate and user friendly documentation, see the docs hierarchy on the website.
- Code Structure Guide — how the codebase is organized, for new developers
These are format descriptions for various files used by MPFB.
These describe the formats of files used by both MakeHuman and MPFB:
These describe JSON formats used internally by MPFB and for user presets:
- Rig definition — bone hierarchy and position strategies
- Vertex weights — bone-to-vertex weight assignments
- Pose — static bone rotations (system and user poses)
- Node tree / shader — Blender shader node network definitions
- Material settings — enhanced skin and eye parameter presets
- Target metadata — target categories and macro morph definitions
- Mesh metadata — vertex groups, mesh config, UV layers
- Human preset — complete character definition
- Miscellaneous presets — importer presets, makeup, ink layers
API documentation for the service layer in src/mpfb/services/.
These are the top level services which abstract the functionality in MPFB. This is where you should start looking if you want to do something.
- HumanService — high-level character creation and serialization. This is the central service of MPFB.
- AssetService — asset discovery, caching, and pack management
- MaterialService — material creation and management
- TargetService — shape key and morph target management
- RigService — armature, bone, weight, and pose operations
- ClothesService — clothes fitting, rigging, and MHCLO management
These are services which are used throughout most of the code:
- LogService — logging and profiling infrastructure
- LocationService — file system path resolution
- SystemService — platform detection and system utilities
These are configuration-related helper classes:
- ConfigurationSet — abstract base for configuration management
- BlenderConfigSet — Blender entity property management (ie storing configuration on an object)
- SceneConfigSet — scene-level property configuration (ie storing configuration in the scene)
- DynamicConfigSet — object configuration with dynamic properties
These are helper services:
- ObjectService — Blender object creation and management
- ModifierService — Blender modifier operations
- NodeService — shader node tree and node manipulation
- NodeTreeService — node tree interface socket utilities
- MeshService — mesh, vertex group, and spatial operations
- UiService — UI state and preset list management
These services are either abstractions for a specific feature, or experimental. Unless you work with these specific topics, it is unlikely you will need them elsewhere in the code.
- AnimationService — BVH import and keyframe manipulation. Mostly experimental.
- ExportService — character copy creation, shape key interpolation, and modifier baking for export to external applications
- HairEditorService — Hair and fur asset management. Experimental and only useful for the hair editor.
These are services and classes which are only relevant when interacting with a running MakeHuman instance.
- SocketService — MakeHuman socket server communication
- JsonCall — JSON-serializable function call model.
The UI layer contains all Blender panels and operators. It lives in src/mpfb/ui/ and is documented in docs/ui/.
- UI Layer Overview — directory structure, registration pattern, and internal feature layout
- Meta Classes —
Abstract_Panel,MpfbOperator,MpfbContext, and thepollstrategydecorator
Entity classes are in src/mpfb/entities/. Entities are data-oriented classes that encapsulate state and domain logic, in contrast to the stateless singleton services.
In many cases, an entity class is a wrapper for a file format (see above).
- MeshCrossRef — multi-table mesh cross-reference for efficient spatial and topological queries
- PrimitiveProfiler — lightweight named timing profiler for development use
- Object properties —
GeneralObjectProperties,HumanObjectProperties, andSkeletonObjectProperties: module-levelBlenderConfigSetsingletons that attach namespaced custom properties to Blender objects
- Mhclo — parser and serializer for MHCLO clothing files
- VertexMatch — automatic clothes-to-basemesh vertex mapping with 4-strategy fallback
- MHMAT key system — type hierarchy and key catalog for MHMAT parsing (
mhmatkeytypes.py,mhmatkeys.py) - MhMaterial — parser and serializer for MHMAT material files
- MakeSkinMaterial — bridges MHMAT format with Blender node-based materials (MakeSkin workflow)
- EnhancedSkinMaterial — advanced skin shader with PBR and subsurface scattering support
- Rig — armature serialisation/deserialisation and JSON Blender round-trip, with positioning-strategy system
Yes it looks odd that each helper is a one-to-one class hierarchy. "Default" here is the "default" rig. The plan was originally to support other rigs too.
- AbstractRigHelper — base class providing Blender mode-switching utilities
- ArmHelpers / DefaultArmHelpers — IK helper bones and constraints for arms
- LegHelpers / DefaultLegHelpers — IK helper bones and constraints for legs
- EyeHelpers / DefaultEyeHelpers — eye-tracking IK bones and constraints
- FingerHelpers / DefaultFingerHelpers — grip and IK helpers for fingers
- RigifyHelpers / GameEngineRigifyHelpers — Rigify metarig conversion