Summary
Native Bruce MetaHuman assembly on UE 5.8.3-58210709+++UE5+Release-5.8 reports success but build_meta_human then raises four Cannot break link errors in official Control Rigs. Full Rig (Joints and Blendshapes) and 2K source textures were completed successfully. OPTIMIZED / HIGH / AnimBP output produced 326 unsaved resources. Read-only inspection found missing model connections; runtime effects have not been established. Complete technical report and traceback are included in Additional Notes.
What Type of Bug are you experiencing?
Animation
Steps to Reproduce
- In a new UE 5.8.3 Third Person Blueprint project, enable official MetaHuman Character and Python.
- Create a native MetaHuman Character, apply official Bruce preset, generate Full Rig, download source textures at 2048x2048, save and reopen. No custom geometry, DNA or previous character imports. Verify CanBuild=True.
- Register source /Game/Yeikov08/Characters/MHC_Yeikov08_Base01 for editing with MetaHumanCharacterEditorSubsystem.
- With an empty destination and no dirty content/maps, call build_meta_human once. Explicit MetaHumanCharacterEditorBuildParameters: pipeline_type=OPTIMIZED; pipeline_quality=HIGH; animation_system_name=“AnimBP”; absolute_build_path=“/Game/MetaHumans/Yeikov08_Build02”; common_folder_path=“/Game/MetaHumans/Yeikov08_Build02/Common”; name_override=“MHC_Yeikov08_Base01”; enable_wardrobe_item_validation=True. Exact public Python code is in Additional Notes.
- Record the success message and subsequent traceback, then compare original/generated Control Rig nodes, links and pins without edits or forced recompilation. Do not bulk-save after an exception.
Observed invocation used third-party McpAutomationBridge 0.6.0-beta-e. A clean-machine reproduction and a run through the native Python console have NOT been performed.
Expected Result
Normal public API completion with equivalent generated Control Rig dataflow, or a coherent build failure without a contradictory assembly success message.
Observed Result
Native assembly success was logged on 19 October 2026 at 18:27:10 CEST, followed by nested Python RuntimeError messages: Cannot break link in CR_MetaHuman_HeadMovement_IK_Proc and Face_ControlBoard_CtrlRig. Both generated rigs lack the reported reroute nodes and equivalent direct connections found in the official sources. All 10 queried generated Blueprint/AnimBlueprint/ControlRig assets report BS_UP_TO_DATE, but this is not a functional validation. 326 generated packages remained dirty in memory at the last inspection; no manual Build02 saving was performed. Unreal created 326 autosaves, whose recovery is untested. Full dependency validation remains incomplete.
Affects Versions
5.8
Platform(s)
Windows
Additional Notes
MetaHuman assembly reports success but raises four “Cannot break link” errors in official Control Rigs — UE 5.8.3
Technical report for Epic Developer Community Issues and Bug Reporting (Unreal Engine). Incident date: 19 October 2026. Times below are CEST (UTC+02:00); native Unreal log timestamps are UTC.
Summary and scope
A native Bruce MetaHuman, with Full Rig and 2K source textures, was assembled using Epic’s public Python API with OPTIMIZED / HIGH / AnimBP. The engine logged assembly success, but build_meta_human raised a nested Python RuntimeError containing four “Cannot break link” messages in two generated Control Rigs. Build02 produced 326 registered assets in memory. Read-only comparison found missing reroute nodes and missing equivalent direct connections relative to the official source assets.
This is a static graph discrepancy, not a demonstrated runtime animation failure. The affected assets report BS_UP_TO_DATE. No dynamic evaluation, repair, forced recompilation, or manual graph changes were performed. No conclusion about cached VM equivalence is possible from graph inspection alone.
A separate earlier incident occurred when a third-party MCP bulk-save operation was attempted after the first assembly’s Python failure. That later operation crashed in UObjectArray.h. It must not be treated as the same failure or evidence that Epic’s build function itself crashed.
Bug type
Bug type selected in the form: Animation. Affects version: 5.8.3. Platform: Windows 10 22H2, build 19045.6466.
1. Environment
- Windows desktop; Intel i7-8700, 16 GB RAM, NVIDIA RTX 4060 8 GB.
- Installed engine: 5.8.3-58210709+++UE5+Release-5.8; compatible changelist 55116800, promoted non-licensee build. Exact Build.version and plugin descriptor hashes are in Evidence_Build02.json.
- Independent Blueprint Third Person project: Yeikov08_Lab. No former Yeikov/Tirmora meshes, rigs or materials imported; no Blender use for this character.
- Required project GPU skin settings enabled: r.GPUSkin.Support16BitBoneIndex=True and r.GPUSkin.UnlimitedBoneInfluences=True.
- Official plugins are bundled with this engine installation. The generic descriptor versions below are not independent engine compatibility claims.
| Plugin | Descriptor VersionName | Version |
|---|---|---|
| MetaHumanCharacter | 1.0.0 | 1 |
| ControlRig | 1.0 | 1 |
| RigVM | 1.0 | 1 |
| RigLogic | 13.2.5 | 13.2 |
| MetaHumanSDK | 1.0 | 1 |
| PythonScriptPlugin | 1.0 | 1 |
| TextureGraph | 1.0 Beta | 1 |
| McpAutomationBridge | 0.6.0-beta-e | 600 |
McpAutomationBridge is third-party, declares EngineVersion 5.8.0, and was used to invoke Python in the 5.8.3 editor. Its role is disclosed as a possible environmental variable. The public-API call has not been independently reproduced outside this bridge. Authentication succeeded; no account credentials are included.
2. Source character preparation
- Enable the official MetaHuman Character plugin and its dependencies in the independent project.
- Create native MetaHuman Character
/Game/Yeikov08/Characters/MHC_Yeikov08_Base01. - Apply the installed official adult male Bruce preset through Creator’s Apply Preset UI; save and reopen successfully.
- Use Create Full Rig, authenticate through the official Epic browser flow, and wait for completion. Creator reports Joints and Blendshapes. Native auto-rig completion was recorded at approximately 17:32:46 CEST.
- Download source textures through Creator with the request resolution verified as RES2K / 2048. Metadata subsequently showed 9 face and 11 body texture entries at 2048×2048. These are source texture sizes; not a claim that every assembly-generated texture is limited to 2K.
- Save master. Preflight reported CanBuild=True and available source textures. The master disk SHA-256 remained unchanged across Build02:
C4BA8FFFB420EBFF3C048684C081EF174EAB417FE8F8E513F95ED1AE8E616B67.
No custom topology, joints, weights, DNA, correctives, proportions, or external character content were used.
3. Exact Build02 parameters and invocation
character = unreal.load_asset('/Game/Yeikov08/Characters/MHC_Yeikov08_Base01')
subsystem = unreal.get_editor_subsystem(unreal.MetaHumanCharacterEditorSubsystem)
if not subsystem.is_object_added_for_editing(character):
if not subsystem.try_add_object_to_edit(character):
raise RuntimeError('Cannot register character')
assert subsystem.can_build_meta_human(character)
params = unreal.MetaHumanCharacterEditorBuildParameters()
params.pipeline_type = unreal.MetaHumanDefaultPipelineType.OPTIMIZED
params.pipeline_quality = unreal.MetaHumanQualityLevel.HIGH
params.animation_system_name = 'AnimBP'
params.absolute_build_path = '/Game/MetaHumans/Yeikov08_Build02'
params.common_folder_path = '/Game/MetaHumans/Yeikov08_Build02/Common'
params.name_override = 'MHC_Yeikov08_Base01'
params.enable_wardrobe_item_validation = True
result = subsystem.build_meta_human(character=character, params=params)
The destination was empty on disk and in the registry, with no dirty content or map packages before the call. One call only; no retry. The attached archived script includes the actual preflight, flushed persistent journal, full traceback capture and registry-only inventory. It contains no save operation. On failure it deliberately leaves editing registration intact for investigation rather than automatically tearing down state. This differs from the cleanup in the installed example and is disclosed; cleanup occurs after the call and cannot explain a failure already raised inside it without further evidence.
The installed official Engine/Plugins/MetaHuman/MetaHumanCharacter/Content/Python/examples/example_assembly.py uses the same public parameter structure and build method. Its sample quality is MEDIUM and wardrobe validation False; this report’s explicitly selected values were HIGH and True. The API’s normal return is void/None; Build02 did not return normally, so no successful Python result is claimed.
4. Observed timeline and complete traceback
- 18:21:58.933: persistent preflight begins.
- 18:23:22.434: public build call begins.
- 18:27:10.774 / .794: native log reports
Montaje del personaje MetaHuman realizado con éxito(MetaHuman character assembly completed successfully). - 18:27:10.925: Python exception recorded.
- 18:27:18.339: inventory records 326 assets.
- 18:27:19.215: master disk hash remains identical.
- 18:27:19.240: script ends without saving or retrying.
The bridge request timed out while native work continued; the build was not restarted. The persistent journal, rather than the bridge’s temporary response, establishes completion and the full exception:
Traceback (most recent call last):
File "<REPORT_ROOT>\Yeikov08_Build02_Preparado.py", line 92, in main
result = subsystem.build_meta_human(character=character, params=params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: MetaHumanCharacterEditorSubsystem: /Game/MetaHumans/Yeikov08_Build02/Common/Face/CR_MetaHuman_HeadMovement_IK_Proc : Cannot break link Multiply.Result.Z -> RerouteNode_1.Value in package /Game/MetaHumans/Yeikov08_Build02/Common/Face/CR_MetaHuman_HeadMovement_IK_Proc
RuntimeError: MetaHumanCharacterEditorSubsystem: /Game/MetaHumans/Yeikov08_Build02/Common/Face/CR_MetaHuman_HeadMovement_IK_Proc : Cannot break link RerouteNode_1.Value -> Add.C in package /Game/MetaHumans/Yeikov08_Build02/Common/Face/CR_MetaHuman_HeadMovement_IK_Proc
RuntimeError: MetaHumanCharacterEditorSubsystem: /Game/MetaHumans/Yeikov08_Build02/Common/Face/Face_ControlBoard_CtrlRig : Cannot break link MathFloatAdd_6_1.Result -> RerouteNode_19_1.Value in package /Game/MetaHumans/Yeikov08_Build02/Common/Face/Face_ControlBoard_CtrlRig
RuntimeError: MetaHumanCharacterEditorSubsystem: /Game/MetaHumans/Yeikov08_Build02/Common/Face/Face_ControlBoard_CtrlRig : Cannot break link RerouteNode_19_1.Value -> SetControlVector2D_1_1.Vector.X in package /Game/MetaHumans/Yeikov08_Build02/Common/Face/Face_ControlBoard_CtrlRig
No symbolized native call stack for this Python RuntimeError was captured. The traceback identifies the public API boundary and failing graph operations, not the exact internal C++ phase. Copying/reconstruction/reroute conversion is a hypothesis, not an isolated root cause.
5. Original versus generated graph comparison
Official sources:
/MetaHumanCharacter/Face/CR_MetaHuman_HeadMovement_IK_Proc/MetaHumanCharacter/Face/Face_ControlBoard_CtrlRig
Generated counterparts are under /Game/MetaHumans/Yeikov08_Build02/Common/Face/ with the same names. Both originals and copies were already loaded. Inspection used graph/node/link/pin getters only; no controllers, edits or compilation requests.
| Rig / sink | Official source | Build02 copy |
|---|---|---|
| HeadMovement: Add.C (double) | Multiply.Result.Z → RerouteNode_1.Value → Add.C; 1 incoming source link | Multiply and Add present; RerouteNode_1 absent; neither reported edge nor direct equivalent exists; 0 incoming source links; default string empty |
| ControlBoard: SetControlVector2D_1_1.Vector.X (double) | MathFloatAdd_6_1.Result → RerouteNode_19_1.Value → Vector.X; 1 incoming source link | Endpoint nodes present; RerouteNode_19_1 absent; neither reported edge nor direct equivalent exists; 0 incoming source links; default 0.000000 |
Additional inspected context: head graph Add.Result feeds RigUnit_SetTransform_5.Value.Translation.Z; Add.A and Add.B receive Absolute.Result and Absolute_1.Result, derived from Multiply.Result.X/Y. In the facial graph MathFloatAdd_6_1 receives MathFloatRemap_5_1.Result and GetCurveValue_7_3.Value; Vector.Y receives MathFloatAdd_7_1.Result. These relationships identify the affected calculation without assigning an untested visual symptom.
The exceptions attempt to disconnect the two edges on each reroute. Public RigVM documentation describes reroute compatibility/conversion mechanisms, but the protected/internal patch methods were not invoked and are not proposed as a supported fix. It is unknown whether missing model links also change the currently compiled VM output.
6. Generated resources, compilation and persistence
326 resources: Blueprint 1; Texture2D 147; DNA 3; SkeletalMesh 4; MaterialInstanceConstant 41; PhysicsAsset 2; GroomBindingAsset 5; GroomAsset 5; StaticMesh 32; ControlRigBlueprint 4; SkeletalMeshLODSettings 3; MaterialFunction 50; Material 14; AnimBlueprint 5; Skeleton 2; AnimSequence 1; PoseAsset 1; SubsurfaceProfile 3; Texture2DArray 1; TextureCube 1; ControlRigShapeLibrary 1. Full package inventory is in the redacted journal.
Principal outputs:
/Game/MetaHumans/Yeikov08_Build02/MHC_Yeikov08_Base01/BP_MHC_Yeikov08_Base01/Game/MetaHumans/Yeikov08_Build02/MHC_Yeikov08_Base01/Body/SKM_MHC_Yeikov08_Base01_BodyMesh/Game/MetaHumans/Yeikov08_Build02/MHC_Yeikov08_Base01/Face/SKM_MHC_Yeikov08_Base01_FaceMesh/Game/MetaHumans/Yeikov08_Build02/Common/Face/Face_Archetype_Skeleton/Game/MetaHumans/Yeikov08_Build02/Common/Female/Medium/NormalWeight/Body/metahuman_base_skel(official shared resource path; the folder name alone is not a sex mismatch diagnosis).
All 10 queried generated Blueprint/AnimBlueprint/ControlRig assets reported BS_UP_TO_DATE, including both affected rigs. No separate specific compile failure was identified in the inspected logs. This status is not a functional validation. Body/Face component references, main skeleton assignments and material slots were present; no null mesh material slots or null material-instance parents were found in the inspected set. Full transitive dependency verification was unavailable: AssetRegistry dependency queries returned None for the unsaved packages.
At the last inspection the 326 packages were dirty in memory, and no files existed in the Build02 Content destination. Unreal independently created 326 autosave .uasset files (1468.8 MiB) at 18:27:34–18:28:18 CEST. Their paths matched the inventory, with zero missing, extra or empty files. Autosave recovery has not been tested and may preserve the graph discrepancy. No Build02 asset was manually saved, restored, repaired or dynamically evaluated. This report preparation made no live resource changes.
7. Separate Build01 incident: later MCP bulk-save crash
Build01 used OPTIMIZED/HIGH/AnimBP, root /Game/MetaHumans, common /Game/MetaHumans/Common, same source/name, validation True. Native success was logged at 18:04:28.114/.123 CEST followed by a bridge Python execution failure at .467. The temporary bridge response was truncated; the exact original Python exception cannot be recovered and is not asserted to be identical to Build02.
After that failed call, the third-party control_editor.save_all operation was invoked. It saved only the partial Blueprint under /Game/MetaHumans/MHC_Yeikov08_Base01/ (211517 bytes), then logged failure saving T_PreBakedGroom_Color_LOD5to7 at 18:06:00.018 CEST. At 18:06:00.096 the editor asserted:
Assertion failed: Index >= 0
Engine/Source/Runtime/CoreUObject/Public/UObject/UObjectArray.h, line 1083
The crash module stack includes CoreUObject, UnrealEd and McpAutomationBridge; its complete available module+offset stack is in Evidence_Build02.json. Debug symbols were unavailable, so a full function-symbol stack is not claimed. An invalid object-index access during saving is indicated; the underlying lifetime/reference cause is unproven. The bridge iterates dirty packages and continues after a save failure. A raw-reference lifetime problem is only a hypothesis. No equivalence to Epic’s normal interactive save workflow is asserted.
The earlier partial Blueprint is not usable/validated and has not been reopened. Build02 used an independent destination and was not followed by this save mechanism. Build02 did not crash during the observed run.
8. Minimal reproduction for Epic (proposed; do not run against current unsaved state)
- Use UE 5.8.3 CL58210709 on Windows with MetaHuman Character and Python enabled; start an independent Third Person Blueprint project.
- Create the native Bruce Character, generate Full Rig (Joints and Blendshapes), download 2K source textures, save and reopen; verify build eligibility.
- Use an empty output root and execute the public call in section 3 once. Preserve the traceback and full native log. The archived actual wrapper is supplied separately.
- Observe whether native assembly reports success but Python raises the four graph-link errors.
- Without compiling or changing graphs, compare the two official source rigs with generated copies at the exact pins in section 5.
- Do not bulk-save after an exception. No save or MCP operation is required to reproduce the primary observed exception.
Expected: normal public API completion with generated rigs preserving equivalent dataflow, or a coherent reported build failure without a contradictory success message.
Observed: native success message, Python exception, 326 unsaved generated assets, and missing graph connections relative to official sources, despite BS_UP_TO_DATE status.
Reproduction confidence: exact persistent evidence exists for Build02; an earlier build also returned a Python error after success but its exact exception was not retained. A clean-machine run and a run using Unreal’s native Python console without MCP remain unperformed. They are suggested isolation steps for Epic, not claimed results.
9. Public issue search, supported alternatives and questions for Epic
Searches on 19 October 2026 of Epic’s public issue tracker, forums and indexed documentation for “Cannot break link”, both rig names and MetaHuman/5.8 did not locate an exact public issue ID or documented matching workaround. This does not establish that no internal/unindexed issue exists. The 5.8 known-issues and release-note pages did not identify a fix for this exact symptom.
Documented paths still available, subject to separate authorization:
- Creator Assembly UI, UE Optimized / High / AnimBP: standard official route, but the local Montage/Assembly panel has been intermittently empty. UI recovery is not an established fix for a graph conversion fault.
- Public Python API / installed example, also available through Editor Utility Blueprints: supported entry points. A later isolated run from the native Python console could distinguish the bridge environment; it may still use the same failing assembly implementation. No new run is requested by this report.
- Normal editor saving after a confirmed healthy assembly is documented, but is not a recovery recipe for these 326 exceptional-state assets. No safe save recommendation is made until Epic clarifies the graph discrepancy.
No documented way was found to recover this exact exceptional state without risk. Private reroute-patching methods, manual reconnection, forced compilation, deleting assets and regenerating rigs are not proposed as verified fixes.
Please clarify: (a) whether graph reroute migration during assembly can explain these errors; (b) whether the compiled VM may remain valid despite missing model links; (c) whether the current assets may safely be saved/recovered; (d) whether a known engine hotfix applies; and (e) whether validation=True or the bridge execution context is relevant. We can supply additional sanitized diagnostics after approval.
Supporting evidence
The full sanitized execution journal, 326-resource inventory, script archive, version metadata and SHA-256 checks are preserved locally and can be provided through a supported attachment channel on request. No full project, original Epic assets, DNA, meshes or unreviewed crash dump is included. The form exposes an image upload field; evidence JSON/JSONL/TXT files have not been uploaded.
Official API: MetaHuman Creator Python Scripting in Unreal Engine | MetaHuman Documentation | Epic Developer Community
Official assembly: Assembly | MetaHuman Documentation | Epic Developer Community