Polygonjs 2.0.58
SDF modeling, exporters, environment lighting
·built with Jai 0.2.029
-
Breaking
The primitives take their sweep angles in DEGREES.
geo/Sphere(phiStart,phiLength,thetaStart,thetaLength),geo/Tubeandgeo/Capsule(thetaStart,thetaLength) andgeo/Torus(arc) all used radians. A saved scene keeps the number it stored, so a half sweep that read 3.14 now reads as 3.14 degrees. Retype the angle you want: a full turn is 360. -
Breaking
A partial sweep needs the new
opentoggle.geo/Sphere,geo/Tube,geo/Capsuleandgeo/Torusonly cut their sweep whenopenis on, so a scene that cut it with the angle alone comes back whole. Turnopenon. -
Breaking
geo/Tube’sopenEndedis nowcaps, which means the opposite and is on by default. A scene that hadopenEndedon loses that setting and gets its caps back, so turncapsoff. -
Breaking
The manifold primitives are always built about their own middle.
geo/M3DBoxandgeo/M3DTubelosecentered, andgeo/M2DPlane’scenterchanges from a toggle to an in-plane offset. Offset them withcenter, which a translate manipulator now drags in the viewer.geo/Circle’scenteris a 2D offset in the circle’s own plane rather than a 3D position. -
Breaking
A light’s
lightSizeis merged intosoftness. One number now sizes the PCF blur, the PCSS penumbra and the shadow an SDF object marches for itself, and it is a fraction of the light’s frustum rather than a count of shadow-map texels. Raising the shadow resolution no longer narrows the soft edge. Retunesoftnesson lights that had it set. -
Breaking
geo/ManifoldDebugis nowgeo/ManifoldDisplay, and it reports an error rather than only drawing. A scene saved with the old node drops it on load, so rebuild it. -
New
Model with signed distance fields. The
geo/SDF*nodes are out: primitives (SDFSphere,SDFBox,SDFBoxFrame,SDFCapsule,SDFTorus,SDFTube,SDFRoundCone,SDFEllipsoid,SDFOctahedron,SDFPyramid,SDFTriPrism,SDFHexPrism,SDFPlane,SDFSolidAngle), their 2D counterparts (SDFCircle,SDFBox2D,SDFEllipse2D,SDFHexagon2D,SDFEquilateralTriangle2D,SDFSegment2D),geo/SDFBooleanfor union, subtraction and intersection with a hard, rounded or chamfered seam, and the shaping nodesSDFRound,SDFOnion,SDFElongate,SDFMirror,SDFRepeat,SDFExtrude,SDFRevolveandSDFSlice. An SDF object is raymarched in the viewer, so you shape the field itself and only turn it into a mesh when you want one. Start from SDF Boolean Basic. -
New
geo/SDFImprintmarks one SDF object with another: a raised pad, a recess, a groove or an engraving.geo/SDFSeambuilds the joint between two of them as a solid rod, for a weld bead, a piping or a trim line. Each SDF primitive carries its own colour, roughness and metalness, so a boolean keeps every part looking like itself: SDF Boolean with different colors. -
New
geo/SDFTriangulateconverts an SDF back to a mesh, to a closed solid, or, from a 2D field, to its outline. It marches on a cell count or a cell size, takes anisoValueto grow or shrink the surface, and its solid output goes straight into the exporters: SDF for 3D printing. -
New
geo/SDFCreateturns real geometry into a field, so a mesh can be blended, hollowed or imprinted like a primitive.geo/SDFBuilderdefines a field from thecode/SDF*nodes inside it, for a shape none of the primitives cover. -
New
Four exporters.
geo/GLTFExporterwrites binary glTF (.glb) with per-object transforms and material colours, export-gltf.geo/ThreeMFExporterwrites 3MF with units, several objects and colour, export-3mf.geo/OBJExporterwrites Wavefront OBJ with one named block per object, export-obj.geo/DXFExporterwrites DXF R12 for laser cutters and CNC, with cut and engrave lines on separate layers, export-dxf. PLY and STL merge their input objects so nothing is silently left out: export-ply, export-stl. -
New
The
geo/PrinterPreparepolynode puts a model in the state a printer expects, in one node: it checks the model is a closed solid, turns the scene’s Y-up into the Z-up every slicer reads, scales the scene unit into millimetres, and measures the result against the build volume. It errors before an exporter writes a file that cannot be printed. -
New
geo/Environmentlights the whole scene from one environment map, with a background mode to show it or hide it. Thegeo/EnvironmentHelperpolynode puts a mirror ball and a matte grey ball in the scene so you can read what the map is doing.tex/FileHDRloads Radiance .hdr files, and the editor gets an HDRI and EXR picker with real image previews. -
New
geo/MaterialAttributessets colour, roughness, metallic and emission on geometry in one node, and those attributes survive a manifold boolean. -
New
The
geo/DimensionDisplaypolynode writes a part’s size beside it, per axis, in millimetres and inches, which is the readout someone wants before downloading a file: showing a part’s size.geo/DimensionPromoteconverts geometry between 2D and 3D. -
New
geo/FileOBJimports Wavefront .obj geometry, with presets.tex/Colorfills a texture with a flat colour, for any input that wants a texture but only needs a constant.geo/VolumeSmoothsmooths a volume’s voxel values. -
New
render/Taais available, to allow temporal antialiasing. It’s currently useful to have smooth edges when modeling with SDF nodes. - Improved A glTF compressed with Draco or meshopt now imports. 2.0.57 refused those files with an error naming the extension, which is still what happens for an extension Polygon does not support.
-
Improved
A node can WARN as well as error. A warning marks the node and reaches the logger without stopping the graph, and
geo/AttributeDisplayis the first to use it. A polynode also surfaces the error of the node inside it rather than failing silently. -
Improved
Expressions do more.
bbox()andcentroid()take a node path, sobbox("/geo1/box1").size.xreads another node’s bounds.format(value, decimals)turns a number into a string, which is what lets aStringParamread"X " + format(bbox("/box1").size.x, 1) + " mm". A cycle between expressions is detected and reported instead of looping. -
Improved
geo/GroupCreategainsbyPattern: build a group from the members of groups that already exist, or by entity index, using the same syntax as any other group field. -
Improved
Manipulators translate on the XY plane, and the manifold primitives carry one for
center. -
Improved
geo/Textgains vertical alignment, handles line breaks properly, and describes itself in the help panel. -
Improved
geo/Mergepreserves the object groups of its inputs.geo/Deleteno longer clones its input, so it is faster on large scenes.geo/Wireframeemits one segment per edge rather than one per half edge.geo/Clipinterpolates attributes across the cut. -
Improved
geo/SceneGLTFreferences nodes by relative path, names and lays out the generated sub-graph better, and gets a flight helmet preset. - Improved The 3MF export carries colour, writes the tags Bambu Studio reads, and drops its pretty printing to keep files small.
-
Improved
code/TextureSample2DgainsmipMapBias, and thecodecontext gets divide and invert through MathBinary and MathUnary.
Also in this release
- The wireframe hotkey is G, and Shift+G walks the cycle backwards. It was Ctrl+W, which browsers take to close the tab, so it never worked on the web.
- Fixed: a crash when creating a node with Enter from the tab menu, a crash when dropping a polynode with no inputs onto a connection, a crash when clicking a read-only panel in the LLM tab, and a crash on resize in the web build, which the blog embeds were hitting.
- Fixed: the colour picker did not match the colour it was editing when used for the renderer background. A node context menu could be opened from outside the network panel. Renderer leaks and a double free on the GPU side.