Sandflow open-sources sand3d: 100,000 3D models as Python code, 3.8x shorter than bpy
Sandflow AI has open-sourced the sand3d library and a dataset of 100,000+ 3D objects converted from polygon meshes into parametric Python code. Previously, Objaverse was a "soup of triangles" with no decomposition into parts, and every team had to clean it up independently. Here, every part has a meaningful name, while dimensions are represented as variables. The resulting code is 3.8x shorter than Blender scripts, making it cheaper in terms of tokens.
AI-processed from TG: @cgevent (Метаверсище и ИИще); edited by Hamidun News
Ask a language model to "make a table," and it can easily produce text, but 3D is more complicated. The model either outputs a messy Blender script or relies on a neural network that generates a mesh made of thousands of triangles. Sandflow AI proposes a third path: training LLMs to write compact parametric programs. To support this approach, the company has open-sourced the sand3d library and a dataset containing more than 100,000 objects.
Why older datasets got in the way
Most generative 3D projects rely on Objaverse. It is a huge collection, but its quality is inconsistent. Many models are essentially "triangle soup": collections of triangles with broken topology, where a table leg cannot be separated from the tabletop. For training a model that is supposed to understand an object's structure, such data is almost useless.
Moreover, every research team cleaned Objaverse for its own needs and kept the results to itself. The same work was repeated dozens of times, while open CAD model collections developed slowly. Sandflow says it performed this cleanup once and made the result available to everyone.
What it looks like in practice
In sand3d, an object is described by a short Python program. Take a cabinet, for example. In a mesh, it consists of tens of thousands of anonymous triangles. In sand3d, it is represented by several named parts, such as the body, door, and shelf, plus a few parameters: width, height, depth, and number of shelves. Want the cabinet to be 20 cm wider? Change one number, and the entire geometry is rebuilt without manually editing vertices.
This is convenient for LLMs for two reasons. First, semantic names give the model meaning: it learns to associate the word "door" with a specific part of the code. Second, the format is compact. According to Sandflow, sand3d syntax uses 3.8x fewer tokens on average than conventional Blender Python (bpy), or roughly 74% fewer. That means lower training and inference costs and room for more objects in the context window.
The dataset includes furniture, articulated mechanisms, and CAD parts, totaling more than 100,000 items. Everything is openly available: the code on GitHub, the dataset collection, and an interactive 3D explorer on Hugging Face.
What to keep in mind
First, the 3.8x and 74% figures currently come from Sandflow itself, and we have not seen independent measurements. The comparison with bpy also depends on how the reference scripts are written.
Second, parametric code works well for furniture, mechanisms, and parts with clearly defined geometry. Organic shapes such as characters, clothing, or plants fit less naturally into these programs, so meshes will still be necessary. It is also unclear how reliably objects reconstructed from meshes match the originals.
Third, the dataset alone does not provide a ready-made "3D chat generator." It is training material. Only experiments will show how much models trained on it actually improve in quality.
What to do with it
If you build tools for CAD, game assets, interior design, or product configurators, the explorer and repository are already worth examining. A practical first step would be to take a small open model, fine-tune it on a subset of sand3d, and test how it handles prompts such as "an 80 cm-wide chest of drawers with three drawers."
For product teams, the main point is that parameters provide editability. A user can say "make it slightly lower," and the model can change a number instead of regenerating the entire object. This is exactly the kind of behavior that conventional 3D generators often lack: they output a finished mesh that is difficult to modify properly.
The idea itself is not new: code has long been used as an intermediate representation in CAD and computer graphics. What is new is that someone has assembled a large, unified, open dataset in this format—and it was long overdue.
- Nov 12, 2026AI agents re-checked 2,000+ ICML 2026 papers and found errors that reviewers missed
- Nov 12, 2026Eight Countries, OpenAI and Anthropic Promise an AI "Kill Switch" — but Set No Deadlines or Penalties
- Nov 12, 2026Hugging Face warns: a wave of hacks could make open-source AI less open
- Nov 12, 2026OpenAI Built a Control Room: A Kill Switch for Models That Escaped the Sandbox
Key Questions Answered
Why older datasets got in the way?
Most generative 3D projects rely on Objaverse. It is a huge collection, but its quality is inconsistent. Many models are essentially "triangle soup": collections of triangles with broken topology, where a table leg cannot be separated from the tabletop. For training a model that is supposed to understand an object's structure, such data is almost useless. Moreover, every research team cleaned Objaverse for its own needs and kept the results to itself.
What it looks like in practice?
In sand3d, an object is described by a short Python program. Take a cabinet, for example. In a mesh, it consists of tens of thousands of anonymous triangles. In sand3d, it is represented by several named parts, such as the body, door, and shelf, plus a few parameters: width, height, depth, and number of shelves. Want the cabinet to be 20 cm wider? Change one number, and the entire geometry is rebuilt without manually editing vertices. This is convenient for LLMs for two reasons.
What to keep in mind?
First, the 3.8x and 74% figures currently come from Sandflow itself, and we have not seen independent measurements. The comparison with bpy also depends on how the reference scripts are written. Second, parametric code works well for furniture, mechanisms, and parts with clearly defined geometry. Organic shapes such as characters, clothing, or plants fit less naturally into these programs, so meshes will still be necessary. It is also unclear how reliably objects reconstructed from meshes match the originals.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.