PoiBuilder 0.9.167
/ Objects / Objects & CSG

Objects & CSG

Merge, mirror, pivots, freeze. Poibuilderize turns any MeshInstance3D or CSG into an editable mesh. Booleans pick the target first and the cutter last.

Row 4 of the toolbar (Extended Tools).

Object ops

PoiBuilder Toolbar Row 4 · Object Tools
Merge ObjsMirrorCenter PivotFreeze XformPoibuilderize
Merge Objs
Merge Objs Unbound (rebindable)

Combines multiple selected PBMesh nodes into one, baking relative transforms.

✓ 2+ selected PBMeshes Row 4
ButtonEffect
Merge ObjsSelected PBMesh nodes become one
MirrorGeometry across X
Center PivotPivot to bounding-box center
Freeze XformBake the transform into vertex positions, reset the node transform
PoibuilderizeConvert selected MeshInstance3D or CSGShape3D (including CSGCombiner3D) into a PBMesh

Object state — Lit & Cast Shadows

Row 3 (Extended Tools) carries two toggles that apply to the whole scene selection — any PBMesh, MeshInstance3D or CSG node:

  • LitLitCast ShadowsRow 3 · Object StateLitUnbound (rebindable)Shading on/off for every selected object. Mixed selections render unchecked; checking synchronizes all of them.Needs: Selected objects — shading on/off. Unlit objects render at full brightness and ignore scene lights.
  • Cast ShadowsLitCast ShadowsRow 3 · Object StateCast ShadowsUnbound (rebindable)Shadow casting on/off for every selected object. Same mixed-checkbox semantics as Lit.Needs: Selected objects — shadow casting on/off.

Both follow mixed-checkbox semantics: all selected objects on = checked, all off (or mixed) = unchecked, and checking it synchronizes every selected object. They are rebindable in Editor Settings (Object: Toggle Lit / Cast Shadows).

Typical use: unshadow a scrolling water plane before a retro export, or unlight a glow strip so it reads emissive.

Poibuilderize

PoiBuilder Toolbar Row 4 · Object Tools
Merge ObjsMirrorCenter PivotFreeze XformPoibuilderize
Poibuilderize
Poibuilderize Unbound (rebindable)

Converts any standard MeshInstance3D or CSG node into an editable native PBMesh.

✓ A MeshInstance3D or CSG node Row 4

Imported GLBs and Godot primitives are not editable as faces until you convert them.

  1. Instance the GLB. Make the instance local / editable children.
  2. Select the MeshInstance3D (or a CSG node).
  3. PoibuilderizeMerge ObjsMirrorCenter PivotFreeze XformPoibuilderizeRow 4 · Object ToolsPoibuilderizeUnbound (rebindable)Converts any MeshInstance3D or CSG shape (including CSGCombiner3D) into an editable PBMesh.Needs: A MeshInstance3D or CSG node. A new PBMesh appears with per-triangle corners, welds rebuilt, materials copied.
  4. Pull a face. It is a PoiBuilder mesh now.
Import any GLB, convert with one click, and edit its faces natively.
Import any GLB, convert with one click, and edit its faces natively.

Heavy meshes stay heavy — every triangle is a face. Collapsing and merging after convert is the usual cleanup.

A MeshInstance3D you do not convert still exports to retro .pbm. Textures are sanitized (power-of-two, clamped to max size) on the way out. Convert only if you need to edit faces.

CSG booleans

PoiBuilder Toolbar Row 4 · CSG Booleans
CSG UnionCSG SubtractCSG Intersect
CSG Subtract
CSG Subtract Unbound (rebindable)

Subtracts the cutter mesh from the target mesh with full scene Undo/Redo.

✓ Target + cutter selected Row 4
ButtonTooltip rule
UnionSolid union. Select target first, cutter last
SubtractSubtract the last-selected from the first-selected
IntersectSolid intersection. Target first, cutter last

Works across PoiBuilder meshes, ordinary MeshInstance3D, and CSG nodes. Operands must be watertight; a failure names the open-boundary count in the Output log.

Undo puts the cutter back in the tree (the node was removed on do, referenced on undo).

CSG boolean subtraction with real undo — non-destructive and reversible.
CSG boolean subtraction with real undo — non-destructive and reversible.

Use case — a round window

  1. Wall cube (target). Cylinder through it (cutter).
  2. Select the wall, Shift-select the cylinder.
  3. CSG SubtractCSG UnionCSG SubtractCSG IntersectRow 4 · CSG BooleansCSG SubtractUnbound (rebindable)Subtracts the LAST-selected mesh from the FIRST-selected mesh.Needs: Target + cutter selected. Hole. Ctrl+Z — the cylinder returns.
CSG did nothing? Read the Output log. Open boundaries abort the op. Fill Hole / weld the mesh, or Poibuilderize a CSG primitive that is already closed.
"My GLB has no gizmo" — it is not a PBMesh yet. Poibuilderize it. Clicks on a MeshInstance3D go to Godot's object gizmo, not face picking.