Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cura 5555 ufp specification #12

Open
wants to merge 6 commits into
base: master/s-line
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions docs/ufp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Ultimaker Format Package (UFP)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall the documentation is very marginal. I'm missing things like:

  • The fact that it is based on the Open Packaging Convention
  • More elaborate goal of the format (combine tool path + preview images + metadata)
  • Backwards compatibility policy
  • Versioning policy
  • Implementation details in the libCharon library
  • The plan to make this the default filetype for all UM printers
  • Why it is different than 3MF (which could also have been an option, but we decided to not add the original 3D file which is a 3MF requirement)
  • The plan to make it forward-compatible with 3MF if we ever decide to add the original 3D model anyways (for example for cloud based re-slicing)
  • What is this Ultimaker G-code flavour?
  • The allowed file type and size for the thumbnail
  • Future support for multiple thumbnails (this was in the original spec iirc)
  • A representative example?
  • Probably some more things...


The Ultimaker Format package is an OPC (Open Package Convention) based file format. It's designed to allow for various other payloads, apart from the "default" toolpath that is provided by a regular g-code file. The initial implementation / release of this standard allows for thumbnails and toolpath metadata to be added. Future versions might include more payloads such as material files. UFP files should always describe a single "print job".

## Forwards compatible with 3MF
One of the main features of UFP is that it's fully forwards compatible with 3MF.

The main reason to not directly extend 3MF with the functionality Ultimaker needs on their printer is due to storage constraints. UFP is intended to be lighter / smaller than 3MF, since 3MF forces the 3D model data of the print job to be a part of the file.

However, we do expect that this will no longer be an issue with future generations of printers. As such, we have made UFP forwards compatible with 3MF. This makes it possible for older machines to accept 3MF files that have an UFP extension, without needing to update them.

## Structure
### Required files
* `.rels` The root relations file, which describes the relations of the package as a whole.
* `Metadata/thumbnail.png` An png tumbnail (300x300px) of the 3D model that is to be printed
* `3D/model.gcode` The actual toolpath that needs to be printed.
* `[Content_Types].xml` Definitions of all the MIME types stored in the package.

### Optional files
* `Materials/*.xml.fdm_material` 0-n material files, which describe the material that the toolpath was sliced with. If this is a material that is unknown to the 3D printer that recieves this print-job it could add this material to it's database for future reference / automatic NFC detection.
* `Materials/*.xml.fdm_material.sig` 0-n signature files. Ultimaker 3D printers, from the UM3 and upwards, support the signing of material files. Since unknown materials could be added to the internal database of the machine, it might need to be signed if this is a protected material profile.