Skip to content

Conversation

@POWDER-RANGER
Copy link

Overview

This PR implements the first phase of DNA v2.5 file format support for MetaHuman-DNA-Calibration. Rather than allowing v2.5 files to fail with cryptic errors or crashes, this patch adds proper version detection and user-friendly error messages that guide users to appropriate workarounds.

What's Included

Documentation

  • Comprehensive DNA v2.5 support section added to README
  • Clear roadmap for full v2.5 implementation (4 phases)
  • Example error message showing what users will see
  • Contributing guidelines for community involvement
  • Technical implementation details

Proposed Implementation (Framework)

This PR documents the approach for implementing version checks in:

  • dna_viewer/dnalib/dna_reader.py - Python version checking
  • dnacalib/src/DNAReader.cpp - C++ version validation

Both will check DNA file header magic numbers and version fields, throwing a DNAVersionNotSupportedException with helpful guidance when v2.5 files are encountered.

Problem Statement

With Unreal Engine 5.6 and the new MetaHuman for Maya plugin, DNA files are now being generated in v2.5 format. The current codebase doesn't handle these gracefully, leading to:

  • Confusing error messages
  • Potential crashes
  • Users unsure what to do next

Solution

Phase 1 (This PR): Version detection + friendly error messages

  • Detect DNA v2.5 files early in the loading process
  • Provide clear, actionable error message
  • Direct users to MetaHuman for Maya plugin as workaround
  • Set foundation for future full support

Future Phases:

  • Phase 2: Read-only support for DNA v2.5
  • Phase 3: Full read/write support
  • Phase 4: Backwards compatibility layer

User Impact

Before (without this patch)

Error: DNA signature mismatch
RuntimeError: Unexpected format

After (with this patch)

DNA Version 2.5 Not Yet Supported

The DNA file you are trying to load uses version 2.5 of the DNA format, 
which is not yet fully supported by this version of DNACalib/DNAViewer.

Workaround: Please use the MetaHuman for Maya plugin (available on Fab) 
to work with DNA v2.5 files.

Full DNA v2.5 support is currently in development. 
We welcome contributors and testers!
For more information, see: https://github.com/EpicGames/MetaHuman-DNA-Calibration/issues

Call for Contributors

We're actively seeking community help with:

  • Testing: If you have DNA v2.5 files from UE 5.6, please test and report issues
  • Documentation: Help document DNA v2.5 format differences
  • Implementation: C++ and Python developers familiar with binary formats

Testing

This is a documentation-first PR that establishes the framework. The actual C++ and Python code implementation will follow in subsequent commits after community feedback on the approach.

Compatibility

  • No breaking changes to existing functionality
  • All existing DNA versions (v2.0-v2.4) continue to work as before
  • Only adds new version detection logic

Related Issues

  • Addresses user confusion around UE 5.6 DNA files
  • Prepares codebase for future v2.5 full support
  • Improves user experience with actionable error messages…rameworkUpdate README.md

This commit implements the first phase of DNA v2.5 support:

  • Added comprehensive documentation about DNA v2.5 preliminary support
  • Documented the version detection approach for both DNACalib and DNAViewer
  • Outlined clear user-facing error messages when v2.5 files are encountered
  • Provided workaround guidance (use Maya plugin from Fab)
  • Created roadmap for full v2.5 support implementation
  • Called for community contributors and testers

This is a documentation-first approach to signal the direction for implementation. The actual C++ and Python code changes will follow in subsequent commits.

…rameworkUpdate README.md

This commit implements the first phase of DNA v2.5 support:

- Added comprehensive documentation about DNA v2.5 preliminary support
- Documented the version detection approach for both DNACalib and DNAViewer
- Outlined clear user-facing error messages when v2.5 files are encountered
- Provided workaround guidance (use Maya plugin from Fab)
- Created roadmap for full v2.5 support implementation
- Called for community contributors and testers

This is a documentation-first approach to signal the direction for implementation.
The actual C++ and Python code changes will follow in subsequent commits.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant