PixelCNC v1.76b
The first PixelCNC update of the New Year is here! This update comes with several new features and changes, and of course the requisite bugfixes - including fixes for some potential crashes. The changes list for this update doubled in size just in the last month before going live, which wasn't something we'd anticipated. This also resulted in this update taking longer than we'd hoped but now it's finally here. The most prominent aspects of v1.76b are detailed below.
Content Library
PixelCNC now includes the first version of an online Content Library that users can upload and share raster-layer and paths-layer content through. The Content Library can be browsed by clicking "Content Library" on the "New Layer" dialog (previously the "Create Layer" dialog).
Above is the current Content Library browser dialog, which will likely undergo changes over time as we evolve and improve it. On the left-side of the dialog is where selected content is displayed and includes a preview image, the content's name, description, and its library category and associated 'tags'. On the right side of the browser dialog is where indexing options and a content listing are displayed for selecting content from the library.
Indexing options above the content list allow users to narrow down the type of content that they're looking for. This includes toggles for listing raster and paths content, content category selection, and content tags to filter content by under the selected category. Clicking the category and tags options will expand them to allow selecting a category to list content from, or toggle tags to filter content in the selected category by.
Content tags are modifier flags that enable further specifying what users may be looking for in the library. Users can toggle between listed content including all of the selected tags or displaying content that includes any of the selected tags. This is done by clicking the "Match ALL/ANY" button on the right of the tags dropdown.
When uploading content it cannot be edited or changed afterward. Uploading multiple versions of layer content is fine, but the previous versions will persist for everyone to see.
There is a quality/size limit on raster (heightmap) content to prevent overburdening our server. These limits will increase in the future as we expand operations. In the meantime we feel that the existing limit is plenty sufficient for most purposes, but large complex high-resolution raster-layers will automatically be downscaled before being uploaded to the server to satisfy the size requirement.
Any licensed content should include the Licensed tag and contact/payment information (i.e. price and Paypal/Venmo details), to let users know how they can pay to use the content in any projects that they intend to sell.
The Content Library is a work-in-progress. Bugfixes, reliability, performance, new categories and tags, hackers, etc. are all liable to occur in the near future. Please don't hesitate to share your feedback and suggestions with us!
American Flag Tutorial
A new tutorial has been added to the Interactive Tutorial system that demonstrates how to create the flag of the USA entirely from scratch using only paths-layers and various features and functions in the canvas system.
Anyone who wants to learn more about creating 3D shapes using paths-layers should check this new tutorial out!
Shapes From Paths Options
The Shapes From Paths function now includes new parameters when used while path-editing is enabled for the selected paths-layer. These parameters replace what the paths-layer's Z origin and Z size normally do for generated shapes. The Z Origin parameter determines the height of the base of the generated shape (distance from the bottom of the canvas) and the Z Size indicates the height of the shape itself, or a fillet shape's radius and the rounded shape's maximum radius, to generate on top of the base.
Previously, to generate multiple different sized shapes a user would have to separate a paths-layer into multiple paths-layers using the "New Layer From Selection" function - which ironically had stopped working on v1.74b, causing the resulting paths-layers to be in the wrong position or have the wrong size. Thanks to Paul over at his DE Hammer channel on YouTube for catching the bug and suggesting these new parameters for the Shapes From Paths dialog :]
The Shapes From Paths function now also includes an option to specify whether the generated shapes should generate inside or outside of paths. This is actually inverting where shapes are generated. e.g. when two concentric circles would normally make a donut shape this option will now make a donut shaped hole.
Enhanced Mesh Export
A much improved mesh generation algorithm for exporting the canvas as a 3D model is included in this update. This is something that we've been meaning to do for a long while now, as the existing mesh generation algorithm did not make optimal use of triangles whenever a canvas possessed hard edges of any kind.
The previous algorithm involved subdividing triangles organized in a grid and could result in many unnecessary triangles being generated along hard edges to ensure that the subdivision achieved a granularity that captured the geometry accurately enough. While the wireframe rendering looks nice it's at the expense of vertex count and thus file size.
The new algorithm produces a mesh that is roughly half the size with twice the accuracy by organically placing new vertices when subdividing triangles wherever they are needed the absolute most - such as along hard edges. This is repeated until the largest mesh/heightmap error is below a set threshold.
Raster/Paths-Layer Export
Until now, only the canvas and simulation could both be exported as heightmap images, using conventional image file formats like JPEG and PNG.
Two layer types can now be exported in addition to exporting the canvas and simulation heightmaps. Raster-layers can be exported as as a heightmap image, and paths-layers can be exported as 2D vector geometry.
Exporting paths currently only supports the SVG format, and scales paths by a factor of 100 from their machine-space dimensions. i.e. a circle path with a diameter of 10 inches will be exported as an SVG path that's 1000 'SVG units' (usually pixels) in diameter. This is specifically to allow the resulting SVG to be viewable in a browser, otherwise they tend to be too small to be viewable.
Compressed Heightmap Format
A new heightmap format has been included for exporting the canvas, raster-layers, and CNC simulations. We've ordained that it be called the "Deftware Compressed Scalar Field" format, with the file extension .DCSF, which can now also be loaded as a raster-layer to a project's canvas.
The DCSF format is much more accurate and precise than conventional image formats as it is not limited to representing height values using 8-bit color channels, but instead compresses the heightmap hierarchically and then block-encodes error deltas for fine-adjustment of the interpolated height values. This results in a format that's much smaller than a raw bitmap while offering much higher accuracy and overall quality than any common image format.
The actual contents of an exported heightmap determine how effective each compression scheme is. Here's an image album showing a range of test cases comparing our new DCSF format against JPEG/PNG for storing heightmaps: https://imgur.com/gallery/TPINrRn
We're planning to release code for the DCSF format to allow other software developers to include support for loading the file format in their applications.
Supershape Stamp Changes
The path-editing tool for stamping parametric Supershape paths has had a few changes made. The most notable being the inclusion of an aspect ratio parameter which allows controlling how wide or tall the shape being stamped is. This will make it possible to have a wider range of shapes.
The Quality parameter has also been re-worked to properly control the distribution of nodes on the resulting paths when stamped. They no longer clump together with areas of high density and are better spread over the path more evenly.
Model-Layer Improvements
Model-layers have had an issue where some geometry will become clipped by the layer's bounding volume when the model has been rotated along its X or Y axes. This has been rectified, allowing a model to be in any orientation without resulting in any clipping. However, this does mean that when a model has been rotated on its X and/or Y axes it can extend above its model-layer volume now.
We've also changed how a selected model-layer's geometry is rendered. Instead of being drawn to the 3D view as flat-shaded triangles, it is now drawn in wireframe to be less confusing against the project's canvas.
Toolpath Simplify Setting
The Toolpath Simplify setting on the CNC/CAM Settings dialog that's accessible via the Config menu has been scaled up to result in more coordinates being produced along generated cutpaths for a given simplify value. This was decided upon due to precision/quality issues with certain projects and toolpath types and we felt that the effect of the original range of the setting's effect resulted in cutpaths that were just too coarse.
The comparison above shows how in this particular situation, which is a sort of 3D Contouring finishing pass, the default 10% Toolpath Simplify setting removes more cutpath coordinates than is desirable, resulting in a rough finish over the flats across the top of the model. Shown on the right is the same operation with its toolpath generated in v1.76b with the same Toolpath Simplify value, and retains more cutpath coordinates to result in the sort of finish one would expect.
Some users may wish to increase the Toolpath Simplify setting now to reduce their G-code size back to something more in line with what previous versions of PixelCNC produced. This might be necessary in situations where a user's CNC controller cannot keep up with the number of coordinates along a cutpath for the operation's feed rate, which will result in some stalling.
The Max Segment Length setting is also properly abided by now after fixing a bug that appeared a few versions ago. Previously, the toolpath generation algorithms would enforce half of the maximum length specified - which caused the default maximum cutpath segment length of 0.25" to actually produce cut moves with a maximum travel distance of 0.125".
What's Next?
We're looking at potentially releasing a "lite" version of PixelCNC that is priced more affordably for hobbyists and students who just want a solid way to generate toolpaths from images/vectors/models. It will have many of the canvas system features removed, and fewer toolpath types, and function like a reversion back to the early days of PixelCNC.
We'll be keeping tabs on the Content Library to see what everyone uploads, and add more content ourselves. There may be downtime or server issues at times while we work out any bugs and kinks that come up. It's even a possibility that we have to shut the Content Library down temporarily to fix a major issue, and release a new PixelCNC update to properly resolve whatever the problem may be. Time will tell!
Send us your feedback! Let us know what you want, need, have questions about, or just need some help figuring out how to do. If there's anything you wish that could be different or added, like a feature or tutorial, please don't hesitate to let us know. The more the merrier!
Thank you for your support and happy CNCing! :D