Devlog: PixelCNC Beta and New Website Launch
The New Website!
For the last two years we have been looking to move off of the e-commerce platform that we originally introduced our software through. The platform is geared toward indie/hobby game developers and smaller projects - and for that it's really great. It enables virtually anybody to put their projects out into the world and even earn money from them.
There were several different reasons we felt the need to graduate from the platform: the lack of flexibility and freedom allowed with a page's design and content, the 2-3 week wait for earnings to be paid out, multiple fees that amounted to a 9-10% cut taken from sales revenue, and no support for selling physical products (something that we've been planning on for some time). In spite of these inconveniences we decided to remain focused primarily on developing PixelCNC for the interim. We were able to use the platform to release PixelCNC during the alpha phase of development and begin growing a core userbase of enthusiastic folk who helped us find bugs and who had some great ideas and suggestions along the way.
There's still a good amount of work to be done on the new site to really flesh it out and we felt that in its current state it's a sufficient replacement for our previous site to be able to release the beta version of PixelCNC. The only major thing that's lacking is a public forum to go with it. For now we'll keep using the messageboard on the old site which can be accessed via http://forum.deftware.org. Users can also interact on Reddit over at the /r/PixelCNC subreddit. Options are still being evaluated for a new messageboard but hopefully between these options and our user/tech support email address support@deftware.org users will be able to get any assistance and help that they need.
PixelCNC Beta Changes
There's a good number of changes that have been made to PixelCNC for the beta version. About half of them are bug fixes. The changes.txt included with each release is displayed automatically after an automatic update has been installed, and can also be accessed manually via the Help menu.
With the release of the beta version we've opted to merge the free trial and paid versions of PixelCNC into a single build to streamline the process of releasing new updates moving forward. The paid and trial versions are differentiated by activating the software using per-customer assigned product keys. The new site enables us to deliver these keys to users when they purchase PixelCNC for removing the default free trial mode and its restrictions - rather than downloading an entirely separate build as was the case during the alpha.
Operation Type Categories
The Operation Type selection dialog has been re-worked to be a bit less daunting for new users.
Operations were haphazardly listed in an uninformative way and users had to just know what they each did, and how they could each be used. The only real way to figure out what each operation does was by reading the user guide, watching tutorials, and trial-and-error by tinkering around with them one-at-a-time.
Those who are inexperienced with CAM software were liable to entering bad/nonsensical parameters for an operation which could lead to problems. Some parameters have warnings or errors if usable values are not entered (e.g. cut Stepover cannot be zero for some operations). Our goal is to at least enable users to glean how to do things directly in the interface and categorizing operations is a step in that direction that should be useful for newer users.
Operations have been grouped into "3D Contouring", "2.5D Milling" and "Specialty Cuts" categories.
The 3D Contouring operations all behave about the same - effectively contouring 2D polylines onto the canvas to generate layers of 3D cuts which carve the canvas's 3D shape into a workpiece. They only differ in the patterns of lines that they generate cutpaths from. The 2.5D Milling operations includes two operations for roughing out the 3D shape of the canvas in layers of cuts (the Trochoidal and Horizontal milling operations). This group also includes two operations for pocket and profile milling which will generate cuts down to a specified maximum depth, regardless of the canvas shape after contouring it at a specified Z depth to generate their cutpaths. The Specialty Cuts group contains the Medial-Axis Carving operation for V-carving/B-Carving and the two Stippling operations for stippled halftone projects. The Specialty Cuts group really only exists because its operations don't really belong with the other two groups.
Trochoidal Milling Operation
v1.55b introduces a new toolpath type for roughing out the shape and form of a project's canvas. This can be found under 2.5D Milling on the Operation Type dialog when creating a new operation or changing an existing operation's type.
The Trochoidal Milling operation is meant to be an alternative to the Horizontal Milling operation in that both operations generate layers of cuts at Cut Depth increments to remove material around the canvas contents at each cutting plane's depth. This is in contrast with how the Pocket and Profile Milling operations work where the user specifies a single Z-plane to contour the canvas at to generate cutpaths from, down to a specified Max Depth, regardless of the rest of the canvas' shape above and below the contouring Z-plane.
Trochoidal milling allows for roughing out a workpiece using a deeper cut depth and higher feed rates by eliminating or reducing the spikes in cutting forces that can occur with the offset milling strategy that the Horizontal Milling operation employs. These spikes tend to occur when the cutter moves through an inside corner, or slots through a narrow area. Trochoidal milling will cut long narrow areas in tiny circular moves as long as there is room for the cutter.
Horizontal/Pocket Milling: Cut Smoothing
This new parameter for these two operations rounds out the cutpaths that are generated to help reduce sharp forces on the machine when entering inside corners. It's important to keep in mind that using this parameter will cause the space between neighboring cuts to grow larger than the specified cut stepover in some areas. It should be used in tandem with a decrease in the stepover distance to prevent material from being missed which leaves behind little pillars of material that should be removed.
Horizontal Finishing: Ignore Perimeter Option
The Horizontal Milling operation's finishing mode (set cut stepover to zero) can now omit the edges of the canvas, which normally would be treated like the walls of a pocket. This is useful for projects where the workpiece is meant to be cut into something more of a 3D object rather than a relief carving. Some projects would be stuck with these perimeter cuts even though material had already been removed or roughed out from there and cuts around the inside of the canvas are not needed.
Tool Library: Sorting and Re-ordering
The tool library has seen some great improvements. Tools can be re-ordered within the list per the user's preference and can also be viewed with four different sorting modes when loading or saving a tool definition.
The sorting modes available now allow for sorting by library slot #, tool Type, tool Diameter, and Flute Length. Each of these sorting modes can be toggled to sort in ascending or descending order by clicking on the sorting mode to alternate the sort direction, which is shown as an arrow on the mode button. Tools can only be manually re-ordered with the Slot # sorting mode active. Move tools between slots by clicking the up/down arrows that appear on the right side of each tool slot.
Sorting modes can be accessed whether viewing the Tool Library while saving a tool definition or loading a tool definition.
Text-Layers: Character Spacing Parameter
Text-layers now include a character spacing parameter that ranges from -0.5 to 1.0. The default character spacing of a TrueType/OpenType font can be used by setting the parameter to 0.0. A button is provided next to the spacing parameter to reset it back to zero.
The spacing parameter is added to the existed character spacing as a fraction of the font's default character spacing, rather than a fixed distance or physical measurement. This allows for a much more visually consistent spacing between characters, as opposed to just applying a fixed distance offset between all characters (especially with non-monospace fonts). It also keeps a proportionate spacing when changing the font size of the text-layer.
New Parametric Brush System
The old parametric brush system provided an interesting range of brush profiles for the Manual Brush raster-editing mode and the Stroke Paths function but it did not allow for many desirable shapes to be created. Some examples of shapes it couldn't do are hemispheres and truncated cones.
The new system works using three parameters instead of one. The first parameter controls the radius of the flat at the center tip of the brush. The next two parameters each control a radius at the ends of the ramp that's formed between the radius of the center flat and the radius of the brush. Radii can be positive or negative, and must share the height of the brush (i.e. if they're both 100% they each only occupy half of the height of the brush as they would at 50%). Varying the brush Diameter and Brush Value affects how these parameters will interact and the brush shape that is produced.
Profile Milling/Medial-Axis Carving: Include Edges Option
The Include Edges option replaces the Confine Cuts option which was unused for the Profile Milling and Medial-Axis Carving operations. It allows for these operations to include or omit contours generated around the edges of the canvas. It's especially useful when cutting out shapes from the workpiece and cuts around the edges of the canvas are not needed, those cuts can be excluded by disabling the option.
Leave Stock No Longer Affects Canvas Edges
Internally, the canvas is treated like a pocket for most operations. The Leave Stock parameter would then be applied to the inner-edge "walls" of this pocket along with the rest of the canvas contents, effectively shrinking the canvas. This has been changed so that Leave Stock only applies to everything inside of the canvas volume and not its edges. Leave stock also ignores the edges even when Confine Cuts is enabled, which is an option that prevents the cutter from removing material outside the bounds of the canvas by offsetting cuts from the edges of the canvas by the cutter's radius. Leave Stock will not further offset cuts that have been offset from the edges of the canvas by the Confine Cuts option.
It's important to keep in mind that the Leave Stock parameter is not a horizontal offset for cutpaths. It offsets the canvas in all three dimensions, expanding a shell around its form which the cutter will then toolpath off of instead of the raw canvas itself. For the Horizontal/Trochoidal Milling operations this means that the bottom of the canvas will not be reachable by the cutter, it can only go as deep as the specified Max Depth minus the Leave Stock amount.
What's Next?
There was an idea to improve overall toolpath precision for a given canvas resolution using an intelligent image upscaling algorithm which could improve contouring algorithms. This will allow the canvas to be worked with at the same resolutions as before while increasing toolpath quality - without requiring that the canvas resolution be increased, which can hinder performance when working with and editing the canvas and its contents. Toolpath calculation speed will be affected though so there would be a CNC/CAM Settings option for users to set the amount of supersampling they wish for PixelCNC to employ. Some experiments will be done to see if this is a workable feature to add.
There will be some new canvas editing functionality, particularly selection tools for raster-layer editing so that areas can be selected and editing functions can be applied only to those areas. There are a number of other raster/paths layer editing features that are planned as well to make it easier to duplicate a part of a layer (i.e. stamp tool).
The ability to add layers to composition groups is also in the works, to allow project operations to toolpath off of different canvas contents. This will be handy for more complicated projects that otherwise require going back and forth between Project Canvas and Project Operations modes to toggle different canvas layers on/off and generate toolpaths from different combinations of layers and their resulting canvas compositions.
We're also working on an asset/content library that's seeded with some common shapes and designs, and which paid users will be able to upload stuff to for sharing with other users on this library. Everyone will be able to browse the library directly in PixelCNC and use the available content in their projects. The library would contain raster-layer and paths-layer assets to incorporate into a project.
There are plenty more things on the to-do list that need to be sifted through and reprioritized before we can announce them. We'll be announcing more as we're able to figure out how important different features are. Stay tuned!