I'm currently using FSL3d's RetinaCreate to prepare 3d-files for printing for research purposes. In this, I am relying on their Optimal Rotation feature which rotates the object by, as far as I can tell, judging models on their stability with regards to the printing direction. After rotating the model, supportstructures are generated to keep the model in place while printing without the bits and pieces floating about and to keep structural stability.
My question is, as I've neither found a manual nor any source-code (and admittedly I am terrrrrible at maths), how can I describe the kind of algorithm/logic used by the software here? This is essential for me, as I need to describe this in my research. Cheers, Jesse
Optimal rotation can be considered from different perspectives. For example
- as little support as possible. This way app tries to orient object so as much surface as possible doesn't overhang and doesn't need support
- bed only support. App tries to orient object so all overhanging parts can be supported directly from the heatbed (not from the object itself)
But have a look on Meshmixer as Ryan Carlyle suggested. In this app you can see 3 kinds of auto orientation procedures. Additionally Meshmixer can create angle support and tree-like support.
In terms of mathematics.
I cannot suggest any sources but you can imagine the way it calculates such optimal rotation. Let's say it will be dead simple explanation of the second approach:
Let's get all faces (facets) and let's project their center points on the "floor" (heatbed) or "ceiling". If imagined projection line slices any other faces then rotation is not optimal. App can calculate "a weight" of such orientation and then try to find the smallest weight of all possible orientations.
Of course it's not that simple. App has to manage concavity, which face requires support at all, and many other aspects but in general you can imagine the algorithm.
similarly "bed only support" could be simplified to "cast shaddows but not on itself"