# [OpenSCAD] Discuss manifoldness, co-incident faces edges etc

Doug Moen doug at moens.org
Mon Nov 18 14:50:28 EST 2019

```On Sat, Nov 16, 2019, at 1:44 PM, nop head wrote:
> How do voxel formats cope with different target machines, who's voxels might be different sizes?

I don't know what algorithms people use for this. Other people have created slicers for driving 3D printers from voxels, but I've only seen closed source commercial solutions so far, not academic papers or algorithms. But I can speculate.

You could use an interpolation method like trilinear interpolation to resample the voxel grid at the printer resolution. This gives you a density field: a function that maps each point in 3D space onto a density value between 0 and 1.

Then, you could use dual contouring to generate each slice, mapping the density field at a specific Z coordinate onto a set of 2D polygons.

The benefits are that the voxel files are significantly smaller than the mesh files (based on tests done by Shapeways), and the slicing algorithm scales better for large complex models, since you don't need to load the entire voxel grid into memory to generate a slice.

> How does a voxel format represent the two cubes problem if the junction doesn't lie on a voxel boundary?

The only general purpose voxel format for 3D printing I have documentation for is the Shapeways SVX format.
https://abfab3d.com/svx-format/

SVX uses a density grid representation. Instead of a minecraft style representation, where each voxel is either on or off, voxels contain a density value between 0% and 100%. Then, see above.

> >There is an algorithm for determining if a 3MF file is valid, and if it is valid, then there is a documented algorithm that slicers must use for interpreting the file.
>
> Yes but they seem to have chosen the wrong interpretation of self intersections. I.e. exclusive oring overlapping solids instead of unioning them. So at least slicers will be consistent, i.e. consistently wrong, so forcing people to fix their models if they slice it with a compliant slicer before publishing.

I agree with you. I'm glad that we have a standard interpretation of meshes, it's better than chaos. However, what I need in order to deal with the current situation is: a good mesh repair tool that will use the correct interpretation of self intersections to repair meshes, and, 3D modeling tools that will generate meshes that don't contain self intersections.
-------------- next part --------------
An HTML attachment was scrubbed...