PLY to 3MF
Your model never leaves your browser, and nothing is downloaded to make this work. A mesh is a list of points and a list of triangles; reading one and writing the other is arithmetic your browser can already do.
Into the modern printing format — which, unlike every other format here, records what its numbers mean.
PLY is what most scanners and most research tools write. It stores each corner once and can carry almost anything alongside: colour, confidence, intensity, normals. Those extra properties sit between the coordinates and the next vertex, so they have to be stepped over exactly or every point after the first lands in the wrong place.
3MF records units, and your file does not
3MF is the only format on this site that stores what its numbers mean, which is most of the reason 3D printing moved to it. But PLY does not record units at all, so there is nothing to carry across and nothing that can be deduced from the numbers themselves. A cube ten units wide is ten millimetres or ten inches and the file does not say which.
Millimetres are written, because that is the format's own default and what almost everything means. That is an assumption, not a reading. Getting it wrong is what makes a model come out twenty-five times its intended size, or a twenty-fifth of it: if your object was drawn in inches and something reads it as millimetres, it prints far too small, and the other way round it prints far too large. The choice above sets what goes into the file, so set it to what your numbers actually mean.
A PLY vertex can carry more than three numbers
PLY lets a vertex hold almost anything — colour, confidence, intensity, normals — and those extra values sit between one point's coordinates and the next point's. A scanner writing red, green, blue and alpha adds four bytes to every vertex.
A reader assuming a vertex is twelve bytes therefore reads
every vertex after the first from four bytes too early. On a test file that
produced a bounding box of -2.9 × 1038 where
the answer was -2: not a near miss, but confident nonsense.
The header lists the properties in order, and they are stepped over exactly
as it says.
Both of these store a corner once
Both formats keep a list of points and refer to them by number, so a corner where six triangles meet is stored once and pointed at six times. That is what an STL cannot do, and it is why these conversions do not change the size of a file very much.
Duplicate corners are still welded on the way through, in case the model passed through an STL earlier in its life — but only bit-for-bit identical ones. Welding within a tolerance, which most tools do, quietly fuses surfaces somebody meant to keep apart. The number actually welded is reported above.
What does not come across
Colours, print settings and the arrangement of the plate. What is written is one object with its geometry and its unit. Supports, infill, per-object settings and the rest of what a slicer puts in a 3MF are not here, because they were not in the file you started with.
Whether it is watertight is reported above, because that is what a slicer is about to ask: a closed solid has every edge shared by exactly two triangles, and one that does not leaves the slicer guessing what is inside. This is measured after welding — straight off an STL no two triangles share a corner by index, so every model on earth would look full of holes. Nothing here repairs a mesh; it tells you, and repairing is a different job.
Nothing is rotated. glTF is Y-up by its specification, COLLADA records an up axis of its own, and STL, OBJ and PLY say nothing at all — in practice arriving Z-up from CAD tools. What a file declares is reported rather than acted on, because a silent rotation is far worse than a model you can turn yourself. If your object arrives lying on its side, that is why, and it is one rotation in whatever opens it next.
Where to go next
- 3MF to PLY — back the way it came
- PLY to STL — the same model, another way out
- PLY to OBJ — the same model, another way out
- PLY to GLB — the same model, another way out