Skip to content
Turning 3d scenes into Escher-style woodcuts for plotting
C# Python
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
ImageLib Switched Lightness to IronPython Dec 31, 2018
Lightness Added rasterscene/raymarchedscene split in Lightness. Added initial S… Jan 1, 2019
ParticlePlot Switched Lightness to IronPython Dec 31, 2018
Zlib.Portable Initial commit Dec 23, 2018
LumberSharp.sln Added common project. Switched Lightness over to Vector2-based coordi… Dec 30, 2018 Added page setup. Dec 26, 2018


Stylized 3d -> SVG converter for plotters, inspired by Escher's woodcuts.



Ensure dependencies are installed.

git clone


From the Lightness directory under LumberSharp:

dotnet run tests/test.lua test.svg

Lua Files

LumberSharp uses Lua to define scenes and rendering parameters. The format is largely straightforward:

  • Set page parameters (defaults to A4 in portrait mode with 10mm margins on all sides)
  • Define a camera
  • Load some number of meshes
  • Add them to the scene
  • Specify the rendering size (default 1000x1000px -- you'll want to go higher, e.g. 4000-8000)

Setting scene.preview = true; will cause LumberSharp to emit a file called preview.png which will be the rendering of the normals of the scene. This is useful for setting up just the right shot.

You can’t perform that action at this time.