Six months in the making and at least three months delayed, the anniversary 0020 release of toxiclibs was finally released today. A little Happy-New-Year present for you & me. Before getting into the details of the countless things which have been changed & added with this release, please first go forth and download the bundle of ALL library modules from here: toxiclibs-0020
In the past few days I’ve uploaded 20 new demos (many of them using new functionality) to OpenProcessing. The release contains now 95 demos(!) in total, incl. several complete exercises of workshops I’ve taught throughout the past years. So let’s please also say thank you to the universities & institutions which made these possible!
Here’s also a quick list of some key additions & updates (some were already quietly introduced with the 0019 release in summer, but never documented). A complete & detailed changelog is bundled with each library module.
- 3D mesh construction & processing:
- New Winged-Edge mesh class for structured 3D data & enabling complex mesh operations/navigation
- Adding mesh subdivision strategies, vertex selectors & mesh filter classes (e.g. for modeling, smoothing)
- New BezierPatch class for constructing 3D surfaces from 4×4 control points
- Added .toMesh() methods for all 3D geometry primitives: AABB, Cone, Cylinder, Sphere, Plane, Terrain, BezierPatch
- Revamped architecture of all voxel based modeling classes:
- VolumetricSpace is now an abstract class with array or HashMap based implementations
- IsoSurface is now an interface with array or HashMap based implementations
- HashMap implementations able to produce much higher resolution meshes
- Major refactoring of core geometry classes:
- Introduction of immutable vectors (ReadonlyVec2D/3D)
- Introduction of Shape2D/3D interfaces for more polymorphic client code
- Support for barycentric coordinates in Triangle2D/3D
- Added Sutherland-Hodgeman polygon clipping algorithm (useful for laser cutting tasks)
- Behavioral physics:
- Massive refactoring of internal force handling & introduction of ParticleBehaviour implementations
- Added Attraction and ConstantForce (Gravity) behaviours
- Behaviours can be dynamically added globally (for entire sim) or to individual particles
- More maths:
- Added bezier, exponential, threshold and decimated interpolation classes
- SinCosLUT not a static class anymore, but can be instantiated with different precisions
- More utils:
- Added FileSequenceDescriptor class for working with file sequences
- Added FileUtils for file chooser dialogs, stream wrappers etc.
- Added DateUtils for creating timestamps (with optional timezone support)
- Added generic pluggable EventDispatcher helper to easily implement Observer pattern in client code
- Image based color palettes using new Histogram class in toxi.color package
- More simulations:
- Added 2D heightfield erosion strategies: TalusAngleErosion, ThermalErosion (still lacking good demos)
- Integrated optimized Jos Stam 2D fluid solver (from old 2006 demo, also still lacking bundled demo)
A lot of these above additions are in dire need for more documentation & tutorials. I will do my best to rectify this situation ASAP, but do hope the supplied demos do give you a jump start in the meantime. A lot of time went into creating & documenting them.
Likewise, to ensure the ongoing quality of the libraries and examples, please submit a bug report or enhancement request via the issue tracker…
Finally, another kind request, largely addressed to recent developments in the open source world around creative coding tools like this one: Please give credit where credit is due. If you’re using these libraries with Processing, please also list them in the tools used in your documentation (this is a separate project). Same goes for porting parts of these libraries to other languages. This social link back is hugely important and essential for this culture to exist and grow in the future.
Thank you & all the best for 2011!!