Octodraw is a Kotlin + libGDX direct 3D sketching and modeling project. It focuses on edges, planar faces, tool-driven workflows, precise snapping, objects/instances, and a live Groovy console for power users.
The current docs site lives in docs-site/ and is the preferred place for user guidance, tutorials, reference material, and automation notes.
- Draw edges, create faces, and push/pull solids.
- Line workflows include chained
Lineand single-segmentConstruction Line. - Surface-aligned rectangles, quads, and circles.
- Snap to grid, endpoints, midpoints, lines, faces, and guides.
- Objects with prototypes, instances, and edit mode.
- Linear dimensions and text entities.
- Scale supports axis-constrained squash/stretch when the reference direction is aligned with
X,Y, orZ. - Real-time lighting and shadow controls.
- Groovy dev console and plugin system.
- Select, Line, Rectangle, Surface Rectangle, Quad, Circle
- Push/Pull, Move, Rotate, Scale, Stretch
- Linear Dimension, Text, Paint, Object placement
- Eraser tool
- Click, window, crossing, and volume selection.
- Double-click groups to enter edit mode; double-click faces for coplanar selection; triple-click for connected geometry.
- Snap to grid intersections/lines, endpoints, midpoints, line segments, faces, and guides.
- Guides:
Gfor grid guides,Tfor axis guides. - Undo/redo:
Ctrl+Z/Ctrl+YorCtrl+Shift+Z.
- Create object prototypes from selection (
Ctrl+GorCtrl+O). - Place instances via the Objects panel or Object tool.
- Edit an object by double-clicking an instance.
- Glue-to-surface keeps objects aligned to a picked surface during moves.
- Selection, Object Info, Objects, Model Settings, Lighting, Plugin Manager.
- Action buttons: Cleanup, Delete, Flip Faces, Color, Lighting, Plugin Manager.
- Command Palette (
Ctrl+Shift+P) for tools and panel actions.
The dev console is a persistent Groovy REPL that runs alongside the GUI. Start it via the desktop launcher command:
edit --file path/to/model.octdInside the console, type :help and :examples for meta commands and snippets. Use app.run { ... } to mutate the model safely. Use :perf to print memory, disk, thread, and CPU stats.
- Default file:
octodraw.octdin the working directory. - Autosaves on geometry, selection, and settings changes.
- Model files store camera, lighting, shadow settings, units, and grid spacing.
Get the latest release artifacts from GitHub Releases.
- Windows:
.zip,.msi,.msix - Linux:
.tar.gzor.zip - macOS:
.tar.gzor.zip
edit --file <path> [--size WIDTHxHEIGHT] Open or create a model file
edit --plugins-dir <path> Override plugins folder
groovy <script> Run a Groovy script file
version Show version information
update Download and replace the editor jar
help Show help./gradlew build
./gradlew :lwjgl3:run
./gradlew :web:prepareWebComponentBundleWeb artifacts are written to dist/ as:
octodraw-<version>-webapp.{zip,tar.gz}for the TeaVM/WebGL runtime shelloctodraw-<version>-webdocs.{zip,tar.gz}for the docs-only bundle
- Main docs: alfu32.github.io/k3d/
- Tutorials: alfu32.github.io/k3d/tutorials/
- Guide: alfu32.github.io/k3d/guide/
- Reference: alfu32.github.io/k3d/reference/
- Automation: alfu32.github.io/k3d/automation/
- Specification: alfu32.github.io/k3d/specification/
- Local source docs:
docs/ - Docs site source:
docs-site/
Octodraw is an active work-in-progress. File formats and APIs may evolve as new modeling and topology features land.


