We’re happy to announce that AbFab3D has reached its 1.0 milestone goals. The codebase architecture changes have settled down, the unit tests are in place and its starting to feel like a usable codebase. Took longer then I hoped but that’s software development for you.
The main architectural changes are a refactor of the Grid interface to explicitly separate voxel state from per voxel attributes. We know over time we’ll want to hang more data off each voxel but we also want to make implementing memory efficient grids easy. The original Grid interface has been split into two interfaces: Grid and AttributeGrid. An attribute grid layers on the concept of per-voxel attributes. These attributes could be 3d printing material information, normals, colors, whatever you’d want to store there. As time goes on we’ll leverage those attributes on the exporters to communicate better with printers.
A good example of using that information is this visualization we did for showing wallthickness and hole size visualization. Green are areas safe to print, red are too thin and purple are holes which might close during printing.
The other core changes are centered around exporting from Voxels to Triangles. We’ve spent a lot time improving its quality and ability to handle large grid sizes. Below is a beautiful example of exporting a fractal image using AbFab3D.
Vladimir Bulatov created this 3D printed object using AbFab3D. It’s the limit set of a discrete symmetry group of 4 dimensional hyperbolic space. If your interested you can order a copy here: Shapeways Model
From here we will be concentrating on a couple areas. We’ll be doing a hard multiprocessor pass on most of the core functionality. One of the promises of voxel graphics is the ability to easily throw multiple processors at a problem. Tests so far look promising that it works to least to 4 processors with linear scaling. In addition we’ll be improving the Triangle to Voxel routines, concentrating on quality of voxelization and multiprocessor speed.
Fun stats, the codebase is now 142K lines of code. Test coverage now at 23% which is dropping, time to get back into the testing habit.