v1.39a - Models/Text to Raster, New Shading/Lighting, Improved Brush-Stroke & Paths-to-Raster Shape Generation, Bugfixes...


This is not a very big update, and it's a bit overdue. This update is a 50/50 split between new features/enhancements and bug fixes. This last month has been a bit slow, for multiple reasons, one of which is the fact that here in California we've already had the power shut off three times in the last month due to the threat of wind. We've just received our gasoline/propane generator to mostly alleviate the situation but it remains to be seen whether or not internet service will remain operational during a power outage.

Alas, this is a bit more of a "polish" update, in that it spiffs and spruces up a number of things. It fixes several bugs and tweaks the UI, while adding a handful of optimizations and  new pieces of functionality. Most of this update has just been basic been grunt-work, low-level mind-numbing stuff that isn't particularly fun to work on or implement. In spite of that, I feel lucky everyday that I get to work on something that people are actually interested in :) These kinds of updates are a necessary ... evil?

Here's the full changes.txt for v1.39a:

  •  added much nicer lighting/shading to all canvas/simulation rendering modes for smoother visuals and less artifacting, including specular highlights!
  • added create raster-layer from model/text layer types
  • added merge-down function for raster layers
  • improved quality and speed of brush-stroke generation, for both the editing of raster-layers and stroke-paths of paths-layers
  • added cubic curve interpolation to raster-layer editing brush strokes to prevent faceted brush-strokes
  • improved model-layer pitch/roll rotation when right-click-dragging edge handles
  • restricted model x/y angles to a -90/+90 range to simplify achieving a particular orientation while reducing potential for gimbal-lock
  • added x/y angle knobs to model-layer properties, which previously could only be adjusted by right-click-dragging a model-layer's edge handles
  • added rendering of raster-layer's depth image on bottom of canvas when selected
  • added size-clamping behavior when cropping a layer to prevent accidental change of a layer's scaling if the edge of the layer is reached
  • added "follow surface" option to raster-editing mode for switching between the brush positioning at the bottom of the canvas depth or on its surface
  • enabled automatic updates for free-trial, both the 32/64 bit versions
  • changed specification of simulation resolution back to the original method of a fixed-size instead of by pixels/inch (switched to with v1.34a)
  • changed simulation to default to the non-raymarched (slice-stack) render mode eliminate proxy-geometry texture updates and speed up simulation calculation
  • changed grid rendering to reduce total geometry processed by GPU
  • changed raster-editing to terminate brush stroke if brush leaves layer bounds
  • changed coloration, style, and appearance of some 3d view contents
  • changed text size to an exponential curve for finer control at smaller sizes
  • changed "layer exterior" from a normalized value to a Z-depth measurement
  • changed duplication of a paths-layer to not produce a canvas-sized layer
  • improved algorithm for generating raster brushes, allowing 'hardness' to span a more useful range of shapes for both raster-editing and stroke-paths
  • fixed blocky artifacts when editing a raster-layer that has a smoothing radius
  • fixed bug in polyline fill algorithm used by shape-generation function that caused sharp corners to be truncated
  • fixed "move layer up/down" buttons corrupting layer list if layer is already at one end of the list
  • fixed crash caused when duplicating paths-layers
  • fixed crash caused by fonts which a preview icon cannot be generated for while scrolling through list of enumerated fonts in text-edit mode
  • fixed 'stroke-paths' not working on open/non-closed paths
  • fixed 1-pixel size discrepancy with text-layers causing sub-par text quality
  • fixed bug in image anti-aliased thresholding function that caused certain artifacts in generated horizontal milling toolpaths
  • fixed bug when changing simulation mesh quality with raymarched simulation mode enabled which caused proxy mesh heightmap to become corrupted
  • fixed bug causing stray cut in horizontal milling when using ramp cut engage and rest-machining simultaneously
  • fixed bug resulting in program freeze when generating a toolpath with canvas quality set to a value less than 1.0 on systems with only two logical CPU cores
  • fixed UI responding to clicks on file open/save and color chooser dialogs
  • fixed selected text-layer depth image rendering when cropped along Y-axis

Improved Shading and Lighting

This has been a long-time-coming. One of the things that I've always wanted PixelCNC to have is specular highlighting, where the virtual light source shines off the surface of the project canvas or stock material in the CNC simulation. This may end up being a tad slower on older graphics hardware, but to compensate this update also has reduced the geometry complexity of the Z.0 grid by reducing its draw-radius.

The previous shading method was intended to be fast and basic - it was never meant to be accurate. I always felt that CAM software didn't need to have realistic lighting, in spite of my years of writing physically accurate lighting algorithms for game engine rendering systems. PixelCNC's super basic shaded rendering has undergone a few changes, there's been several variations that have been released publicly over time, but I finally decided that enough was enough. I wasn't going to achieve visually what I felt that PixelCNC deserved unless I went ahead and gave it the legitimate Phong lighting treatment.

The new lighting is used for both canvas and simulation modes, for all rendering modes: slice-stack (default for both canvas and simulation modes), mesh canvas, and  raymarched simulation.


Raster-Layer from Model/Text-Layers


Raster-layers can now be created from model-layers and text-layers. This enables users to make manual-edits (via raster-editing mode) to these types of layers, without having to take the roundabout way of creating a blank raster-layer and performing edits on that which are then blended with the model/text in question. In a subsequent version users will also be able to apply a variety of modifier functions to further generate novel effects and forms from raster-layers. In combination with being able to produce raster-layers from text and models users will effectively be able to apply the raster functions to these as well.


Improved Brush-Stroke Quality/Speed

Raster-editing mode, as well as the Stroke Paths function (via Paths to Raster) generate smoother brush-strokes now.

Cubic Brush Stroke Interpolation


Fast brush-strokes are now interpolated using cubic splines so that they do not end up appearing polygonal or segmented.


Merge Down Layers

Raster-layers can now be merged-down, baking them together into a single raster-layer. The active layer's blend mode is used to perform the merge.

Free-Trial Automatic Updates

Those who are using the free-trial of PixelCNC have not been enjoying the benefit of automatic updates. Unless they go out of their way to check in on PixelCNC's development from time to time there's little in the way keeping them apprised of development. Users of the free-trial will now receive the new features and fixes that might convince them that the full version is a worthwhile investment.

What's Next?

+ Undo/redo system: Now that most of the major features are implemented it's pretty much safe to start integrating an undo system without worrying about any major new features being added that will require the system be reworked to accommodate them. There's a distinct possibility that undo/redo will be rolled out incrementally, where it initially only enables users to undo raster/path layer edits. Secondarily, in a subsequent update, the ability to undo/redo general layer property changes like size/position/rotation would be included as well. Ideally, the canvas layer system would've been designed around an undo/redo system from the start which would've made things much simpler and more efficient, but we'll still be able to get it pretty close in spite of integrating it after-the-fact.

+ Layer-editing functions similar to Photoshop/GIMP image 'filters', which will be for manipulating the contents of a layer algorithmically in tandem with any existing manual editing. Raster-layers will enjoy the sort of functions one would expect from an image/graphic editing program, path-layers will have functions for smoothing/simplifying paths, expanding/contracting, and other automated manipulations. I haven't thought about any kind of function for manipulating model-layers, but I'll be keeping my mind open to the possibility.

+ Advanced text manipulation: such as text-along-paths, changing the individual orientation of characters, and shape/size manipulation. 

+ Paths-to-raster functions: currently there's the ability to generate 3D shapes from 2D paths, but so far only about half of the total planned functions exist in PixelCNC. Functions like rail-sweep, dual-rail-sweep, lathe, etc.. are all planned for implementation, and will dramatically increase the flexibility and ease of creating forms and shapes beyond what is currently possible.

+ ...and more!!! Stay tuned...

Files

PixelCNC v1.39a (64-bit).zip 2.6 MB
Oct 30, 2019
PixelCNC v1.39a (32-bit).zip 2.5 MB
Oct 30, 2019
PixelCNC v1.39a Trial (64-bit).zip 2.5 MB
Oct 30, 2019
PixelCNC v1.39a Trial (32-bit).zip 2.5 MB
Oct 30, 2019

Leave a comment

Log in with itch.io to leave a comment.