Random Bits of Open Code

a3d
Login

A3D - All 3D

Do you prefer to write code over pushing polygons around with a mouse?

Goals:

  1. Write 3D CSG code in Scheme - all the power of functional programing in Scheme.
  2. Target multiple tools for visualization and processing.

POVRAY Target

Write the design in scheme/a3d and compile for POVRAY for photorealistic pictures.

OpenScad

Write the design in scheme/a3d and get the interactive browsing of openscad. Print the design on your 3D printer.

Some of the projects I want to do include redesign of the dining room, a boat (based on the Elusion design by Matt Layden) and various other projects. Being able to do photorealistic renderings is quite handy but openscad has no good way that I know of to do such a rendering. I wrote a3d to fill this gap for me.

This is a very early release which has the beginnings of a useful subset supporting OpenScad and POVRay.

Examples

Boat hull (see boat.scm):
This uses bezier curves from the 2d-primitives egg to construct non-compound curves for the sides. With large values for "accuracy" quite smooth surfaces can be formed. I'm focused on non-compound curves as my plan is to build the boat with plywood.
Dining Room (OpenScad) source is ./doc/tip/a3d/dining-room.scm:

Dining Room (POV Ray):

NOTE: After doing all this work I found Ruckus for Racket: https://docs.racket-lang.org/ruckus/index.html which is somewhat overlapping with what I want to do with a3d. I may merge the syntax of a3d to make it compatible with Ruckus. They are already quite similar.