What's inside the 3MF files we love so much?

3MF is a standard, sort of…
It has many possibilities but not every program uses it the same way or with all features possible.
Thanks to recent communication and memory issues with Studio and my printer I looked into a lot of Bambu files on my hard drive.
Found some interesting ones and after that and for no reason at all decided to unpack a small 3MF file of mine.

Why do we use 3MF? Because it best for everyone to get the best possible result - or so they say…
We also do it because it allows to print things on many different machines…
And of course it offers a flexibility normal 3D files just won’t offer as they can’t include print related details.
So I should have known that I won’t find a g-code file for this model in there…
Had to check anyway…
Then I found something odd:
Why on Earth would anyone need to know the name and location of the original model file used???
Full path and name in the file and in other files even the full network path.
Whiskey Tango Foxtrot ??!! Ever heard about privacy Bambu?

I wasn’t really surprise to not find any real model file in the 3MF either.
Instead there is vertices and triangles - a representation of the original but it can be full of missing details…
Nicely optimised though to make fast slicing possible.
Do I need all those 50 million triangles of the original STL in the 3MF?
Probably not but then again, the part might need to be upscaled or printed at a far higher resolution that what the creator did.
Bit of a problem then if the 3MF won’t provide enough of those details you are after.

What about better and practical file formats than STL?
Some offer real arcs and other vector related features making them quite suitable for our needs.
Adding some SVG to have a great logo on some print is fine but can also be problem as all the benefits of having it in there get lost once it is a 3MF file.

Hmm… All we really have is a more or less accurate representation of the original model and a long list of settings and defaults for the printer.
Which bring me to the final conundrum here - priorities…

Ever had the problem that a 3MF file that never failed suddenly is unacceptable or unwilling to let go off the supports just because you updated Studio ?
The 3MF is based on DEFAULTS.
Meaning it only contains the most vital things any anything the creator might have changed from the default settings and parameters.
Now you can have a big problem>
A 3MF file that is older than the Studio version you use to print it and with that the real possibility that default settings and values have changed!
Quite a bummer if you compensated for things the slicer or Studio struggled with to find out Bambu now handles the stuff differently, making a mess out of your ‘corrections’.
It is even possible to take over the flow ratio if you accept the filament in the 3MF because it matches somewhat what you have in the AMS.
After all PLA is PLA…
Then the print comes out as total mess because the 3MF provided calibration values that won’t work with your filament…
There is no way of actually telling which setting and defaults might make a mess and even fewer options to ensure only what’s in the 3MF is used to slice the model.
Simply because of this missing backwards compatibility and the mess that some defaults change while others don’t.

No offence but from where I am standing it makes more sense to have the original file in the 3MF and the OPTION to load/import just that.
Same for settings.
Like JUST importing the custom supports and support settings.
Sure like this the 3MF format makes sure our originals stay in our hands.
But is this really always the best option?
The creator might have printed this nice statue as a 5cm miniature but you would like to print it as big as possible.
Do you now really think you would get the same level of detail for this 3MF enlargement that you would get from the original ?
Maybe close IF the creator did not bother to reduce the triangle count that matches the print size and resolution for the intended nozzle…
Otherwise though…

Of course I couldn’t leave it like that and had to see if any of this really has a meaningful effect on detail…
Let’s just say that creating a 3MF for a 4cm tall figurine while also reducing the triangle count to match give a really decent looking print.
But enlarging the same 3MF to print it as tall as the build chamber allows already gives a rather techno look - low poly comes to mind…
I know, shouldn’t have started looking around in those files…

This is likely to support the Reload from Disk option within Bambu Studio when you right click on a part.

Those vertices and triangles ARE the model as a 3D mesh. I’m not sure what details you think are missing. But yes, they are needed. If there is geometry that isn’t needed that should be edited before converting/adding to the 3MF file.

Technically not an STL, but a triangulated mesh. It is well defined in the 3MF core specs

If there are specific settings required for printing those should be getting explicitly set and then saved as part of the 3MF. The default profiles for machines and materials provide most users with a good starting point, but if you want to get into more technical requirements for specific hardware, model, or materials the flexibility is there to be intentional and unambiguous.

Thank you for the detailed explanations - much appreciated!

So, most of the madness actually makes some sense…
I mean the stuff with the print settings is the file is logical and makes sense to have.
Still leaves two questions though:

  1. Why can’t I find a good enough modelling program using this mesh as the default while offering editing option for beginners and above?
  2. Is this mech creation the reason the import of complex STL files usually ends with mesh and manifold errors despite the original program not showing any error?

Question 2 would be interesting as mainly use STL files and more often than not it is also the only (non 3MF) for downloads.
It can be frustrating at times when some downloaded STL works just fine and with no errors in my CAD program but once loaded for printing Studio (and some other slicers for my other printers) make a (repairable) mess out of it.
Quite often this resulted in threads and such being useless as entire sections got replaced or flattened.

Well, perhaps a step file. Does a 3mf store the original step file with it, or does it just include the converted version?

I don’t think the 3mf file is suitable for authoring programs. Most CAD based programs will use nurbs based geo, which as far as I know, 3mf doesn’t do. For applications like blender/3dsmax/maya, it just doesn’t have the support for the right kind of data. 3mf is your delivery, not your source, typically.

The original program just may not see it as an error/issue. Or you have to run an error check on the mesh before it’ll make a deal of the issue. Things like non-manifold geo isn’t good for 3d printing, but for media arts and animation type applications, it’s not as damaging.

Also, I believe Bambu Studio is using a tool built into windows to fix the geo. You’re just feeding it into a program without any real ability to adjust settings, so who knows what it’s doing… Depending on what it even finds. I’m sure in general it’d be better to take the mesh into a 3d authoring program and fixing it properly. Any automated tool could run into issues fixing things correctly, depending on what the issue is. These tools can’t think about things logically, so they don’t consider how something should be constructed properly, only really basic things like cap hole, weld verts, delete bunk geo, with thresholds.

1 Like

Hmm. This thread inspired me to go digging around in some 3mf files from maker world.

Did you know they are secretly just zip files?

There’s some interesting stuff. I can see what username @Josh-3D has on his computer, and that he is very well organized within oneDrive based on the text in model_settings.config :slight_smile:

“C:\Users[redacted]\OneDrive\3DPrinting\3DPrinting projects\Tools\030_MotorHousingg\Parts\Casing_Lid.3mf”

That’s more information that I would expect to be able to see. I suppose all of makerworld can learn my first name pretty easily this way.

There doesn’t seem to be anything else too exciting, but if you try to keep your username or real name secret this can be a small concern.

Thanks for noticing :blush: I do try and keep it well organized. Haha

It is an interesting thing. It might be better if the paths were relative, but then that could still expose information, depending on where the files are located in relation to each other.

I use that right click reload model function in Bambu studio a lot though.

It is a curious thing. I mean like with my username and path, I don’t think it really reveals anything. Luckily for me, my username isn’t anything fancy. With like my work computer though, it’s my full name. so.

On the other hand too though, I have my files stored on a one drive in my documents. If one is organizing their files elsewhere, the file paths could be completely mundane.

That is a privacy concern worth considering though. I think most people would feel uncomfortable with that.

@MakerWorld Here’s an idea. Maybe once a 3mf file is uploaded to makerworld, some of the data could be stripped from the file, like the original location of the 3d files.

In addition to that, a setting could be given in Bambu studio to not save data like that with the 3mf file, for those that might be concerned.

I would personally still want the functionality it enables. Having that data stripped from the 3mf file once it goes up to Makerworld would ease any concerns I have though. I think there are plenty that’d want the option to turn that off all together though, from Bambu Studio.

3 Likes

Well…
I already learned that some of my concerns are not really required.
Does not mean though I now think 3MF IS the way to go for me…
This user privacy thing and having my file paths included in the 3MF is NOT required as it can be solved for the creator without a need to include the path.
Even without that - this info is NOT required for an uploaded 3MF and should be removed by Bambu for privacy reasons.

In regards to the triangles and vertices I did some more digging.
Yes, it is indeed a standard the industry for once agree upon.
But it is standard like a rubber band - very flexible.
Obviously the complexity of the mesh depends on the input file.
So if you have an original with a million details the mesh will also be full of it and you are asked to reduces it so the slicing works better.
And this slicing is the main reason for existence of the 3MF format.
The mesh provides a DIRECT way to slice a model while other formats always require to either convert the file or to create a matching, layer based model from it.
All great then ?
Yes, if the goal is to provide a universal file format that works on god knows how many printers while making it hard to export a good enough 3D file from it.
NO, because it totally nullifies a lot of things modern CAD programs only included to make life easier.
Like TRUE circles and arcs, TRUE vectors and lots of other meaningful things.
Marlin supports all this by default but not Studio, not the 3MF file format.
Why does this matter?
Imagine you designed something with lots of curves surfaces, holes and such.
You also made sure you did this properly rather than merging parts and loosing geometry data.
THIS file is good as gold in terms of being able to make modifications, exporting it in other formats and such.
What you can export from a 3MF is rubbish…

The 3mf file is just a wrapper. That 3d file within it isn’t much different than what a STL is. Just a bare bones mesh. It should be a 1:1 if the imported mesh, unless someone reduced the polycount on it… at which point that’s not the issue of the 3mf file, but of the person that was setting things up.

Slicing software doesn’t support this. They support slicing a polygonal file. When you bring a step file into Bambu, all it does is convert it to mesh. Those extra meaningful things always get baked down into a polygon model. So, you can’t really take advance of those aspects of cad models.

I get what you’re after, but the whole of the system just isn’t built for it. This stuff was built around slicing polygon models. I mean, even the import of step files, which just converts it to a polygon model.

You can retain all the important information from your cad file. Just have to remember, the 3mf file, or obj, or stl, or fbx, or whatever 3d format you use out of your cad application, that’s just the delivery file. If you need to modify anything, you should be going back to your cad application and doing it there.

I mean, in the game industry, we don’t use .max or .ma files directly in the game engine. We export a .fbx or whatever, and the engine then converts it to it’s internal file formats.

A 3mf file isn’t rubbish. I could debate the merits a bit of the 3mf file, but I don’t think it’s rubbish. It does provide advantages over something like a .stl file, or obj. I’m not sure those advantages are fully realized. It’s useful with something like Bambu Studio, where the extra data can provide all sorts of project specific settings for the slicer. Although 3mf being more of a universal format, I think it kind of makes it’s use murky when each company can tailor the format to their specific need, yet put it out there as if it’s universal.

There’s no other format that provides any more advanced advantages over what the 3mf file provides. The software isn’t handling step files natively (it’s converting them to mesh), so there isn’t really any advanced advantage you gain beyond the initial import of the file into the slicing software. In the future, if they work out adding native support for step files without converting them, it’ll likely get wrapped in the 3mf file anyway, so.

For the record, I’m not trying to be a bucket of ice water. I would like it if we had native slicing of cad models so we can get those nice infinitely smooth surfaces. I’ve done work in other related areas, like CNC laser cutters, and it’s nice to be able to work with vectors and stuff, and get those smooth sweeping curves. In the realm of 3d printing, you’ve just gotta up the settings high enough that you reduce the faceting to non-noticeable levels. Not everyone is aware or thinks about that faceting, and of course it’ll make it worse if you scale the model up after the fact. So yeah. It would be nice.

1 Like

Just the converted version. 3MF only supports triangulated mesh geometry.

2 Likes

I think the main idea around 3MF is really meant to be a bridge between the designed model and the machine used to manufacture it. In our case it happens to be 3D printers. In a more professional environment you would have separate designers working on something and publishing the model in a specific format, then as part of the pipeline models would go through conversion from that automatically into a 3MF applying profiles specific to a company and handed off to machine operators that are only responsible for loading the next file to process and maintaining the machine in between.

We have to remember as hobbyists we are adapting tools funded by professionals to fit our own workflows involving a single person operation creating a single copy. Something being more complex and taking an extra hour to set up is much more beneficial to those with repeatable pipelines around teams of people and thousands of prints being made.

I do agree with Josh’s suggestion of Makerworld stripping certain information when uploading. It isn’t like I’m going to be reloading a model from disk if I’ve downloaded somebody else’s model. We already see them automatically adding information that populates the project tab.

For those that want to strip it out themselves they could try to edit it manually using a text editor and see if Makerworld still accepts it when uploading.

1 Like

Marlin, apart from other things supports the G2/G3 move - a TRUE arc move, clockwise, counter-clockwise.
Slic3r supports those moves, same from what I use to slice models for my Flashforge.
And the difference is the instead of a bunch of noisy straight lines a circles is actually printer round.
Of course it is more a miss than a hit game…
The modelling software has to supports real circles and the export file format too.
And while I have to agree with you that basically all slicers we have fail to deal with arcs and circles, some do but it does not mean it always works as advertised.

Let’s go back (quite) a few years…
Slic3r was the only software in the top ranges.
But our problem was NOT slicing software, it was that we had and still don’t have a file format suited for 3D printing AND editing.
A Lego loving guy came up with a program for modelling noobs.
Use primitives by default to create your model based on the standard merge and subtract methods.
The more advanced user could do a few (really just a few) things more.
The guy also wanted to create a Lego modelling program for his personal use, so both were donors for the other program so to speak.
Big difference to other programs of this sort was how little computing power it required and that they guy came up with the idea of using a file formate that is row based - the Lego idea.
Did not really make it past the beta testing stage before MS snatch the program up as well as the programmer.
Then there was this guy who had an interest in printing, programming and more who wanted a universal file format for 3D models that works better than the rest.
He got snatched up by Autodesk LOL
Even those who did such great work with Slic3R disappeared and with that this formerly fantastic software started to fall behind more and more - today not too many 3D printing newbies would even find and consider Slic3r…

Anyway…
Yes, I agree the 3MF format has benefits, good benefits but also some flaws.
I am not trying to have a rant on the 3MF or Bambu here, far from it.
Just trying to understand why uploaded files contain the full path to our models and why all formats that offer real benefits are converted to triangular mesh.
True arcs and circles are important - no they are not…
This argument is going on since we got our first half decent slicers.
No because it is all sliced in layers, so only true vertical circles and arcs could be considered by the slicer - which is actually wrong but never mind.
Yes because if the file contains a true arc then even a circle with just 8 sides would be sliced perfectly round and that with the correct diameter.
A mesh conversion nullifies ALL benefits any 3D file format from a CAD or modelling program offers.
Do the on screen, visual comparison yourself after wasting 5 minutes to whack up like a drill bit holder - with true circles…
Does not matter whether you use something like Sketchup or Fusion - those holes will be true circular holes by definition.
Exported into, let’s say STL already ruins the geometry to a good degree and if the circles are only shown as a approximation based on how many sides it has (like in Sketchup) the result is accordingly.
But even when saved in a format that keeps those geometrics alive, like STEP a mesh conversion always turns it all into triangles.
If you compare the original against the created mesh you will realise quickly that in SOME, not all cases this can be a real issue.

So is the 3MF format useless or bad?
Not really, it serves the purpose well for the majority of users and cases.
The file path for uploaded models of course should be removed.
Replace it with a place holder that Studio can use to find the file but that won’t be uploaded with the 3MF.
The meshing though is something I just can’t fully agree on.
I would really prefer an option to at least add the original file to the 3MF zip file - optional of course and not by default.
And of course not the actual file :slight_smile: >
Try a simple test and maybe you get the same surprising result as I did.
Make or just load a really detailed model, you know one of these killers that makes Studio suggest you reduces the triangle count before slicing…
Then do just that and reduce the model to a low polygon count by using the lowest setting possible.
Save it as a 3MF.
Now upload the original file to some file hoster that offers a direct download, or use your own cloud storage if it can be accessed from your computer without a login need.
Replace the file path in the 3MF with a link to your uploaded file.
Now load the 3MF into Studio, confirm it still has the low polygon count and see what happens when you try to reload the original :wink:
OOPS! If done properly it means you can already cheat and make it possible that other users can get the original file…
So, options and and improvements are possible…
Back to G2/G3 and why Simply3D seems to be the only slicer left supporting these moves to get real circles and arcs…
One of the biggest improvements for our slicers was SPEED.
In the early days a complex model could take up to an hour on a lower end computer.
Even a half decent modern computer and supporting slicing software means computing true arcs and G2/G3 moves require an awful lot of computing power.
For some reason it seems no one so far figured out how to turn a true arc into a true arc movement without breaking CPU’s in the process.

YES, I AM WELL AWARE that I am quite picky here with the mesh stuff.
But I am also one of those less than 5% of 3D printer users who creates their own models AND NEEDS G2/G3 moves.
Quite a few of my models are only printed like prototypes.
Checking how it looks for real rather than the screen and if it all works out as planned.
Then things are often laser cut or CNC machined…
My P1S and Studio are a great combo to print most of my things.
But those where a PROPER implementation of true circles matter are still printed on a now almost vintage printer…
Hold on a second here, didn’t you mention Simplify3D does all this ??
Well…
Their early bird ‘lifetime’ subscription model I signed up for was eventually discontinued.
Kept using the version I had for a while until the never ones were getting too tempting and I paid for it again.
But this game has become rather costly for a hobby user over the years so I no longer kept paying for the updates and well, use outdated software on an old printer to get what I need and suck the rest up.
3MF is great for almost all cases but it could still be quite a bit better and it would be possible to make it better…

So what DOESN’T support G2/G3 moves?

I’m very aware. I’ve been doing 3d professionally for 20ish years now. while I work in the video game industry, I have a lot of experience too with applications like Rhino, Autocad, Alias Studio, along with the typical applications I use. I’ve worked on a number of projects that were slated to be manufactured, so I’ve had to deal with things like prepping models to be laser cut, for example. In particular, I worked with an artist for a little bit that made huge metal sculptures. The sculptures were prototyped in maya. I took that model into Rhino3d so I could flatten the model out so it could be laser cut. The model would then be bent/shaped back into place and welded together. There’s a lot of times we would go in and do additional patterning on-top of those pieces too. We had a guy that would do all the patterns in autocad because he would do the whole thing with arcs so we could get smooth and simple operations.

Faceting is something that’s a huge balance in the video game industry because you have low resources, but you want things to look smooth. I see people in the 3d printing space all the time comment on faceting in their prints, without fully understanding what is actually happening there; despite it being a simple concept.

If an artist properly authors their model, it shouldn’t be an issue. I make mechanical stuff all the time that needs to fit nicely together, and I export my models with quality settings so there isn’t obvious faceting that could cause visual issues. Even so though, I don’t think it’s endlessly important to have perfectly round circles when it comes to FDM printing. If you don’t export your model with junk settings, you should be fine. melted plastic isn’t precise enough to justify getting so picky about it; in my opinion. It’s close enough, and close enough isn’t a bad thing.

Simplify3d is junk. A complete and utter waste of money, and that company as a whole is an insult to the community. They use to be something grand, but now, they’re just a scam.

Pardon. I used Simplify3d up until a couple of years ago. What a junk company, and when they finally brought out an update, it was just… outdated. The price they charged, and I wouldn’t even be able to have it on two computers, like my original license got me.

(This isn’t related; I’m just a simple man at times, and when I see Simplify3d, I talk trash about it)

This is the reality of our tools, as a whole, and why there’s the limitations we have. Because this stuff isn’t developed for the consumer 3d printer space. It’s developed in other industries and brought over into this space.

Things like support for arcs, to me, is a leftover from the roots of where this stuff came from, the CNC crowd. People don’t have a lot of money to dump into development. People want to wax poetic about open source software and all of that, but people still gotta eat, and the most talented developers are going to get jobs that puts food on the table, and those jobs are going to take up a lot of their time.

I mean… just think about how long we’ve been hobbling along on 16bit boards, and then we have Klipper which piggy backs onto that 16bit board. This in particular has been something that has gotten me about this industry, the consumer 3d printing industry. The advancements in computers are decades ahead of the computers we use to run 3d printers. I can’t even remember when I got my first 64bit based intel computer, yet up until a few years ago, my 3d printer was still chugging along on 16 bits. It’s been obvious too that those 16 bits are limiting factor. (Or were they 8bit? I don’t remember exactly)

There’s a lot of great people putting time and work into this stuff, but the reality of life is that only goes so far before people have to get back to the business of supporting themselves, feeding themselves.

3mf as a format didn’t come from hobbyist 3d printers, it came from the industrial side of things. It came from places of money for people with money.

I think if we want proper support for things like what you’re talking about, it’s going to take someone coming in and shaking things up, and having the resources to make it happen.

It’s going to take a Bambu, of sorts, to come and say let’s stop clinging to everything from the past and start pushing forward.

That could also bring about bigger changes though that people may not be ready for, like ditching gcode all together.

You know what I want?! I want a model format that I can load directly into the printer, that contains the sort of data needed, that I could adjust quality settings at the printer. Things like layer heights. Like I don’t want a traditional slicing software. It should be more like a project management software, where the printer has the capability to “slice” the model on the fly, at the machine. That’d be so nice. Especially like if I could then take a model off one machine and put it on another, without having to worry about re-slicing it or gcode not working right from one machine to another.

Ah, that reminds me of on printables when they had support for providing a pre-sliced gcode file (not sure if they still do this, or how it’s changed, if it has). I just don’t get it. gcode is like a machine specific file, a user specific file. It could work on other like machines, but still.

Anyway, I’m just rambling. I have lots of opinions about file formats that goes back decades. :nerd_face:

1 Like

Anyone know what 3MF stands for?

3D Manufacturing Format, everyone knows that… Just kidding, I googled it

3 Likes

…apparently not everyone…so keep doing what you did… explaining