Repolode
Sandflow-ai

Sandflow-ai/sand3d

A Python library for writing 3D objects as short, named-part programs over Blender's bpy, designed so LLMs can generate them.

Stars
724
Forks
83
Open issues
2
Last commit
yesterday

What is it?

sand3d lets you describe a 3D object as a short Python program built from profiles, solids, edits, frames, joints and assemblies, running on Blender's bpy module. Parts, edges and faces are referenced by name rather than hand-computed coordinates, and the same program always produces the same mesh.

The library exports to GLB, URDF, USDA, OBJ and STL through a single export call, with USD variants produced through USD's own tools. Joints with limits (hinge, slide, continuous) are carried into the exported formats, so articulated objects such as a washing machine with a moving door and drawer can be written and exported directly.

The project's docs include a compact API reference of about 3,600 tokens intended for use in an LLM system prompt, along with guidelines for multi-part assemblies. Several open datasets of sand3d programs, derived from sources such as Objaverse, CAD models and NVIDIA SimReady, are published on Hugging Face under CC BY 4.0.

Key features

  • 01Builds objects from named profiles, solids, edits and frames instead of raw coordinates.
  • 02Defines joints with type, axis and range for articulated objects.
  • 03Exports to GLB, URDF, USDA, OBJ and STL with a single call.
  • 04Ships a compact API reference sized for LLM system prompts.
  • 05Produces deterministic meshes from the same program.

Use cases

  • Having an LLM generate parametric 3D parts from short text programs.
  • Creating articulated objects with joints for robotics or physics simulation exports such as URDF.
  • Exporting procedurally written models to GLB or USD for viewers and Omniverse pipelines.
  • Building a dataset of readable 3D programs for training or evaluating models.

Quick start

  1. 1

    Install sand3d with pip (needs Python 3.13 or 3.11)

    pip install sand3d
  2. 2

    Write a program using the sand3d API, then export it to GLB, URDF, USDA, OBJ or STL with s3d.export

Things to know

  • There is no bpy wheel for Python 3.12, and from bpy 5.2 on there is none for Intel Macs, so those setups must use Python 3.11.
  • Blender ships inside the install as the bpy module, which makes the dependency heavy.

In collections

Topics

FAQ

What is sand3d?
A Python library for writing 3D objects as short, named-part programs over Blender's bpy, designed so LLMs can generate them. sand3d lets you describe a 3D object as a short Python program built from profiles, solids, edits, frames, joints and assemblies, running on Blender's bpy module. Parts, edges and faces are referenced by name rather than hand-computed coordinates, and the same program always produces the same mesh.
Is sand3d free to use? What license does it have?
sand3d is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is sand3d still maintained?
Actively maintained. The last commit to sand3d was on Nov 6, 2026.
What can I use sand3d for?
Having an LLM generate parametric 3D parts from short text programs. Creating articulated objects with joints for robotics or physics simulation exports such as URDF. Exporting procedurally written models to GLB or USD for viewers and Omniverse pipelines. Building a dataset of readable 3D programs for training or evaluating models.
How do I install sand3d?
Install sand3d with pip (needs Python 3.13 or 3.11): pip install sand3d Write a program using the sand3d API, then export it to GLB, URDF, USDA, OBJ or STL with s3d.export
Where can I get sand3d?
The source code and installation instructions are on GitHub: https://github.com/Sandflow-ai/sand3d

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects