Documentation / Node reference / geo nodes

geo/PrintOrient

Turns a model the way it prints best: the least support, the steadiest footing, and never support where you forbid it.

Helpers

A 3D print can stand on any side, and the side changes everything: how much support it needs, how tall it is, and whether it stays standing. This node tries a set of turns, scores each one, and applies the best.

A turn is named by which side of the model goes down on the bed. By default it tries 26 of them, the faces, edges and corners of a cube around the model, then looks more finely near the best. AXES tries only the 6 faces. INPUT reads the turns from the second input instead, one per object: connect a geo/PrintDownDirection, whose arrows each point at a side of the model that may face down, and delete the arrows you do not allow. Use that to offer your own few, like a bust standing on its base or lying on the back of its head. The turn the model comes in with is always tried too.

Each turn is scored on four things, measured the same way as geo/PrintOverhangMeasure and geo/PrintStabilityCheck do: the overhang area that needs support (weighted by SUPPORT_COST), how much support that would take, how tall the print is, and how close it comes to tipping over. Each is compared with the worst turn, so the four weights say how much each matters to you. Lower scores are better.

Faces in the supportForbidden group are a rule, not a weight: a turn that puts support on them loses to every turn that does not. If every turn does, the one with the least is kept, and the node warns you.

The turn is applied to the objects themselves, not the points, turning the whole input about its middle and keeping its lowest point where it was. Set choice to 1 for the second best turn, 2 for the third, to offer alternatives. Read what was chosen from the stage attributes: PRINT_ORIENT_DOWN_DIRECTION, PRINT_ORIENT_ROTATION (degrees), PRINT_ORIENT_SCORE, PRINT_ORIENT_CANDIDATES_COUNT, SUPPORT_VOLUME (cubic millimetres), PRINT_HEIGHT (millimetres), and the overhang and stability totals of that turn.

Put it before geo/PrintPrepare, on the model the way you see it in the scene.

Parameters

Name Type What it does
upDirection Vector3 The direction the printer builds in, in the scene. +Y for a scene that is Y-up, which is what you want before geo/PrintPrepare turns the model for the slicer.
candidates UInt8 SAMPLED · AXES · INPUT Which turns to try. SAMPLED tries 26 directions around the model and then looks more finely near the best. AXES tries the 6 faces only. INPUT takes them from the second input, one per object: the arrows of a geo/PrintDownDirection you kept.
refine Bool After the 26 sampled turns, also try turns close to the best one, for a model whose best side is not square to the sampled directions.
choice UInt32 Which turn to apply: 0 is the best, 1 the second best, and so on. Use it to let someone pick among the best few.
apply Bool Turn the model. Off, the node only tells you which turn it would choose.
overhangWeight Float How much the overhang area needing support counts.
supportVolumeWeight Float How much the amount of support counts: an overhang high above the bed needs a tall column under it.
heightWeight Float How much the height of the print counts. A taller print takes longer but rarely fails for it.
stabilityWeight Float How much it counts that the part might tip over while it prints.
maxOverhangAngle Float How far a face may lean past vertical and still print without support, in degrees. Use the same value as geo/PrintOverhangMeasure.
softBand Float How many degrees short of the limit a face still joins a region. Use the same value as geo/PrintOverhangMeasure.
minRegionArea Float Regions smaller than this, in square millimetres, are left out when they are only a little past the limit. Use the same value as geo/PrintOverhangMeasure.
softBandMinArea Float A region made only of faces just short of the limit counts when it is at least this large, in square millimetres. Use the same value as geo/PrintOverhangMeasure.
costAttributeName AttributeName The attribute that says what support costs on each face: 0 where anything goes, 1 as usual, more where you would rather not have it. Faces without it cost 1.
forbiddenGroupName String The primitive group where support must never touch. A turn that puts support there loses to every turn that does not.
sceneUnit UInt8 MILLIMETER · CENTIMETER · METER · INCH What one unit in the scene means, so areas, volumes and heights come out in millimetres. Use the same value as geo/PrintPrepare.
bedTolerance Float How close to the bed a point has to be to count as touching it, in millimetres.
allocator UInt8 TEMP · POOL · FLAT_POOL Which allocator backs the scratch buffers: a pool clears at the end of the cook, temp at the end of the frame.

Examples

Scenes you can open in the editor that teach this node.

See also

This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.