Skip to content

PicoGK v2.0.0

Choose a tag to compare

@leap71 leap71 released this 21 Apr 10:17
· 38 commits to main since this release

PicoGK v2

This is a substantial release, as a large part of PicoGK was rewritten and enhanced to provide a more robust basis for the future.

Core areas of focus for 2.0 were:

  • Improved Memory Management. PicoGK now works with much larger objects and more complex projects.
  • Support for non-global use of PicoGK objects (i.e. by instantiating a Library object for a limited scope)
  • Foundational support for user interface (using Dear ImGui under the hood)
  • A new viewer with improved interactivity
  • Support for rendering bitmaps in the viewer (and visualizing slices)

Many of these areas will be extended in the coming months.

Release Notes

  • NEW: A substantial amount of the PicoGK Runtime was rewritten and extended to support
    • Robust memory management and reporting for very large objects
    • Foundational work for a sophisticated user interface (based on the Imgui open-source library)
    • Images in the viewer
    • Performance enhancements for lattice operations and booleans by using new openvdb functions
    • Enhanced rendering support
    • Moved to opendb transformations for better compatibility with .VDB exchange
  • NEW: Completely new Viewer with enhanced zooming, panning, intuitive navigation. Foundational work on adding a proper UI framework
  • CHANGE: Entirely new memory management system
  • CHANGE: PicoGK now requires OpenGL 4.1 Core profile
  • NEW: Support for rendering text to bitmaps
  • NEW: Support for 2D textures (bitmaps) in the viewer (GPUTexture)
  • NEW: Each viewer object now can have its own rotation/translation matrix (in addition to each viewer group having one). This is preparation for assemblies.
  • NEW: Added Frame3d object (similar to ShapeKernel's LocalFrame) to encapsulate a local coordinate system
  • NEW: A number of base interfaces to abstract 2D and 3D paths and contours (PicoGK.Shapes)
  • NEW: Support for visualizing exceeded overhang angle in Viewer objects (important for 3D printing)
  • NEW: Added SliceViz to show sliced Voxels bitmaps in the viewer
  • NEW: Added VoxCutViz to enable cutting Voxels and showing the slice bitmap at the cut intersection
  • NEW: Added ILog interface to abstract logging of information and replaced rigid LogFile implementation
  • NEW: Added IProgress interface and various progress reporting objects
  • NEW: Added RemoteAllObjects to Viewer
  • NEW: Added extraction of slices from Voxels in X and Y directions.
  • NEW: Added Voxels.bIsEmpty to detect whether a voxel field doesn't contain data
  • NEW: Added Voxels.bIsInside to detect if a position is inside a Voxels object
  • NEW: Added fast function to create voxelized lattice beams Voxels.voxLatticeBeam
  • NEW: Added function to create a shelled Mesh as Voxels object Voxels.voxMeshShell
  • NEW: Library can now report memory consumption of all objects
  • NEW: A number of numerical helper functions for comparisons
  • FIX: Using multiple Library objects in sequence didn't work properly
  • FIX: Slices were mirrored in Y, resulting in flipped CLI files
  • FIX: PolyLine objects were not included in the Viewer bounding box calculations.
  • FIX: Inconsistency between PicoGK Runtime and C# size about row order vs column order matrices (now consistently uses row order as does C#)
  • CHANGE: Reorganized file structure with subfolders