# 3MF export need?

**URL:** <https://forum.babylonjs.com/t/3mf-export-need/62343>\
**Category:** Demos and projects\
**Tags:** export, printing\
**Created:** [February 4, 2026, 10:52am UTC](https://forum.babylonjs.com/t/3mf-export-need/62343 "2026-02-04T10:52:48Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 4, 2026, 10:52am UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/1 "2026-02-04T10:52:48Z")

</div>

Hey guys, I’m finalizing a basic [3MF](https://3mf.io/)exporter from `IVerticeData` to 3MF files for internal use. I may share it or add it to Babylon if there’s interest from the community.

Please share your use cases or thoughts. I’ll be happy to share the Git repo or make a PR if it’s relevant.

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [February 4, 2026, 12:44pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/2 "2026-02-04T12:44:05Z")

</div>

That would be great!

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/2/f/2f5bb622330d5c404657175170697b385e5b4b14.jpeg)

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [February 4, 2026, 4:24pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/3 "2026-02-04T16:24:30Z")

</div>

That could directly go to our exporters:  
[Babylon.js/packages/dev/serializers/src at master · BabylonJS/Babylon.js](https://github.com/BabylonJS/Babylon.js/tree/master/packages/dev/serializers/src)

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 5, 2026, 6:30pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/4 "2026-02-05T18:30:36Z")

</div>

I started adding 3MF support under the serializer. So far it is straightforward, but I have one open question that I do not have an easy answer for.

A 3MF file is a ZIP container, so to serialize it we likely need to handle ZIP compression. In my current implementation, which works well, I chose [fflate](https://github.com/101arrowz/fflate) because it is the most lightweight library I found that supports compression and is MIT licensed.

However, I understand that we cannot add third-party libraries like this to the project. What is the best practice in this case? And if adding a dependency is acceptable, what is the recommended way to keep it attached to the serializer only, without affecting the rest of the project?

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 5, 2026, 6:31pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/5 "2026-02-05T18:31:54Z")

</div>

if you may send me the pirat for my tests… 😁

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [February 5, 2026, 6:43pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/6 "2026-02-05T18:43:28Z")

</div>

You can look at what I did for exr image format  
You can dynamically load the fflate

(Sorry for brevity, I’m on my iPhone)

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 6, 2026, 5:33pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/7 "2026-02-06T17:33:31Z")

</div>

That’s fine for me. I can take it through producing the babylon.threemfSerializer.min.js bundle. Now I need to understand what tools you put in place to test this serializer.

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 7, 2026, 6:36pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/8 "2026-02-07T18:36:55Z")

</div>

Everything is ready and seems to work well. I still have a few tests to run with submeshes and instances. For v1, I decided to focus on geometry only, and everything looks good so far.

The serializer is integrated into Babylon.js in my fork, and I will open a PR soon.

For anyone curious,[here is a sample](https://www.avegalaxar.com/models/engine.3mf) of what is generated.

Happy testing and coding. Tomorrow I am going for a long run with the squirrels (i do not have bears here…) 🙂

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 9, 2026, 1:22pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/9 "2026-02-09T13:22:11Z")

</div>

To All, [PR #17858](https://github.com/BabylonJS/Babylon.js/pull/17858) has been issued…

G.

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 13, 2026, 4:04pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/10 "2026-02-13T16:04:14Z")

</div>

Now that 3MF export is integrated in Babylon.js, the next logical step could be an Inspector v2 plugin focused on last mile printing workflows. The main use case is web configurators and visualization apps that need to package the final scene state into a production oriented 3MF (units, orientation, instances, basic color and metadata) without turning Babylon into a slicer. UI wise it could stay minimal with a single 3D Printing side panel split into Profile, Preflight, and Export sections, plus an optional per mesh override in the Properties panel and a toolbar button to open the panel.

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 16, 2026, 3:43pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/11 "2026-02-16T15:43:01Z")

</div>

@Deltakosh @sebavan If we want to build a loader for 3MF, where do you plan/guess to put the common code (3MF interfaces and definitions)? I mean, using the same approach as GLTF with _`babylonjs-gltf2interface`_ seems overkill for a format that isn’t central to the framework.

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [February 17, 2026, 5:40pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/12 "2026-02-17T17:40:47Z")

</div>

cc @ryantrem🙂

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [February 17, 2026, 5:41pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/13 "2026-02-17T17:41:52Z")

</div>

What about something like the objloader?  
Pretty simple and not a lot of externals  
[Babylon.js/packages/dev/loaders/src/OBJ at master · BabylonJS/Babylon.js](https://github.com/BabylonJS/Babylon.js/tree/master/packages/dev/loaders/src/OBJ)

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [February 18, 2026, 7:19am UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/14 "2026-02-18T07:19:50Z")

</div>

3MF is more complex than Obj, like gltf, with extensions and other features. I’ve already begun working on an OBJ approach for a first version.

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [February 19, 2026, 5:22pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/15 "2026-02-19T17:22:31Z")

</div>

Happy birthday my friend!!!

---

<div class="post-metadata">

**Author:** ![loco](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/loco/32/47220_2.png) [@loco](https://forum.babylonjs.com/u/loco)\
**Post date:** [April 3, 2026, 3:46pm UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/16 "2026-04-03T15:46:59Z")

</div>

Greetings to all,

is there a PG where I can see how it works? I tried but I couldn’t get it to work. I receive problems with ExportAsync.

my attempt

[scene export to 3MF](https://playground.babylonjs.com/#2RX02X#1)

thanks

---

<div class="post-metadata">

**Author:** ![Guillaume\_Pelletier](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/guillaume_pelletier/32/3695_2.png) [@Guillaume\_Pelletier](https://forum.babylonjs.com/u/Guillaume_Pelletier)\
**Post date:** [April 4, 2026, 3:10am UTC](https://forum.babylonjs.com/t/3mf-export-need/62343/17 "2026-04-04T03:10:31Z")

</div>

Mean that the ThreeMFSerializer is not imported into the playground… we may have to update this
