Dataset
100K
3D objects in one collection. All written in Sand3D, all in one download.
Discover the most diverse 3D-as-code dataset library,
created with Sand3D, our LLM-friendly language.
Exercise bike406 lines

Djembe43 lines

Tower crane377 lines

Foosball table105 lines

Microscope328 lines

Circus wagon83 lines

Camcorder334 lines

Beach chair96 lines

Robotic arm377 lines

Stereo receiver54 lines

Helicopter355 lines

Barrel27 lines

Telescope301 lines

Slot machine348 lines

Kick scooter314 lines

Peg solitaire45 lines

Satellite dish301 lines

Bass guitar101 lines

Wheelchair400 lines

Stacking rings89 lines

Observatory319 lines

Fridge55 lines

Drafting table313 lines

Keyboard321 lines

Windmill291 lines

Electric guitar68 lines

Headphones282 lines

Wheelbarrow274 lines

Robot arm296 lines

Park bench77 lines

Light bulb283 lines

Drone264 lines

Turntable292 lines

Archery target46 lines

Bell tower241 lines

Office chair255 lines

Rolling toolbox276 lines

Pan flute30 lines

Studio spotlight273 lines

Knee scooter260 lines

Football47 lines

Drill press267 lines

Music stand289 lines

Baby swing49 lines

DJ deck265 lines

Binoculars329 lines

String lights88 lines

Hand truck270 lines

Kettle grill279 lines

Wagon wheel34 lines

Robotic leg314 lines

School desk56 lines

Ring light285 lines

Vacuum cleaner401 lines

Ceiling fan57 lines

Searchlight287 lines

Sewing box248 lines

Stretcher57 lines

Camera tripod339 lines

Easel280 lines

Radiator56 lines

Rotary table247 lines

Toaster oven280 lines

Step ladder331 lines

Instrument case252 lines

Blender259 lines

Drying rack292 lines

Monitor arm326 lines

Washing machine237 lines

Task lamp254 lines

Pitch module293 lines

Rolling walker254 lines

Each render is the mesh built by the object’s Sand3D program.
Dataset
100K
3D objects in one collection. All written in Sand3D, all in one download.
We created Sand3Dan LLM-friendlylanguage that writes3D objects as code
Sand3D
One program per object. A Python file that gives each part
its shape, holes, position and material.
CAD parts



Mechanical parts, in the same language. Every dimension is a parameter of the program.
Meshes
The mesh beside each program. Ready for Blender, three.js and any glTF engine.
Programs a person can read and an LLM can learn from, written part by part.
Clean andcompact code
One function per part, every dimension a named parameter.
Less code,fewer tokens
Each program is optimized: fewer tokens for an LLM to read.
Programshierarchy
Each part is a function, called by the object it belongs to.
Fully open-sourced library
Programs on Hugging Face, the library on GitHub, all open.
Every part has its name in the code. Change a value, run the program again, and the object follows.

lantern.py62 lines
import sky3d as s3d def lantern(): base = s3d.at(reservoir(), z=-4) glass = s3d.at(chimney(), z=70) support = s3d.at(side_support(), x=61, z=50) twin = s3d.transform(s3d.copy(support), mirror="x") guard = s3d.at(wire_guard(), z=80.5) handle = s3d.at(carrying_handle(), y=1, z=222) return s3d.assembly("lantern", base, glass, support, twin, guard, handle) def reservoir(r=58, rim=62, h=74, shoulder=47, neck=28, lip=5, filler=18, recess=6, inner=48): body = s3d.revolve("tank", s3d.poly([(0,recess),(inner,recess),(rim-lip*2,0),(rim,0),(rim,lip),(r,lip*2),(r,shoulder),(neck,h-8),(neck,h),(0,h)])) s3d.material(body, "painted_metal", color="#3f540c") fill = s3d.at(s3d.cylinder("filler", d=filler, h=5), x=22, y=-29, z=57, ry=25) s3d.material(fill,"steel",color="#3f3c39") return s3d.group("reservoir", body, fill) def chimney(h=146, foot=26, belly=47): body = s3d.revolve("red_chimney", s3d.poly([(0,0),(foot,0),(foot,9),(32,15),(43,24),(belly,34),(46,48),(40,80),(34,105),(23,h),(0,h)])) s3d.material(body,"glossy_plastic",color="#9f0d00",roughness=0.3) cap_placed = s3d.at(cap(), z=139) return s3d.group("chimney", body, cap_placed) def cap(r=30, h=69, loop_w=20, loop_h=23, wire=2.5): body = s3d.revolve("cap_body",s3d.poly([(0,0),(23,0),(23,8),(34,10),(34,14),(r,15),(r,43),(r-2,45),(r,47),(r,56),(14,63),(6,h),(0,h)])) s3d.material(body,"painted_metal",color="#364908") rim = s3d.at(s3d.torus("cap_rim",d=r*2,d_wire=3),z=56) s3d.material(rim,"steel",color="#3f3c39") loop = s3d.wire("cap_loop",path=[(-loop_w/3,-1,h-2),(-loop_w/2,-1,h+loop_h*0.65),(-loop_w/3,-1,h+loop_h),(loop_w/3,-1,h+loop_h),(loop_w/2,-1,h+loop_h*0.65),(loop_w/3,-1,h-2)],d=wire,fillet=3) s3d.material(loop,"steel",color="#482e1e") return s3d.group("cap",body,rim,loop) def side_support(w=19,d=14,h=202): body = s3d.loft("support",s3d.station(z=0,w=w,d=d,x=-12,n=3),s3d.station(z=10,w=w,d=d,x=6,n=3),s3d.station(z=30,w=w,d=d,x=11,n=3),s3d.station(z=65,w=w,d=d,x=5,n=3),s3d.station(z=150,w=w,d=d,x=-7,n=3),s3d.station(z=175,w=w,d=d,x=-12,n=3),s3d.station(z=185,w=w,d=d,x=-20,n=3),s3d.station(z=190,w=w,d=d,x=-29,n=3)) s3d.material(body,"painted_metal",color="#3f540c") return s3d.group("side_support",body) def wire_guard(r=49,wire=3,h=65): rim = s3d.at(s3d.torus("guard_ring",d=r*2,d_wire=wire),z=20) s3d.material(rim,"steel",color="#3f3c39") path=s3d.spline([(-r,0,18),(-r*0.7,-r*0.7,28),(0,-r,40),(r*0.7,-r*0.7,53),(r,0,58)]) a=s3d.wire("cross_guard",path=path,d=wire) s3d.material(a,"steel",color="#55534d") b=s3d.transform(s3d.copy(a),mirror="x") c=s3d.transform(s3d.copy(a),mirror="y") e=s3d.transform(s3d.copy(b),mirror="y") return s3d.group("wire_guard",rim,a,b,c,e) def carrying_handle(w=127,d=4,h=124,grip=40): bail=s3d.wire("bail",path=[(-48,0,0),(-w/2,0,15),(-50,0,42),(-48,0,93),(-39,0,111),(-grip/2,0,h-4),(grip/2,0,h-4),(39,0,111),(48,0,93),(50,0,42),(w/2,0,15),(48,0,0)],d=d,fillet=7) s3d.material(bail,"steel",color="#55534d") grip_body=s3d.at(s3d.cylinder("grip",d=8,h=grip),x=-grip/2,z=h-4,ry=90) s3d.material(grip_body,"wood" if False else "walnut",color="#482e1e") return s3d.group("carrying_handle",bail,grip_body)
The most diverse 3D-as-code dataset library
100,000
Every object began in an open collection. Our models rewrote each one as a Sand3D program, checked against its original. The result is a 3D model fully controllable through code.
67K
ObjaverseEveryday objects, rewritten as code.
24K
CADMechanical parts, in the same language.
9.2K
ArticraftDoors and drawers, with joints in code.
2.3K
NVIDIA SimReadySimulation objects, translated to Sand3D.
3.1K
AutoMateAssemblies, mating joints included.
10K+ articulated objects and 36K joints, each checked against its source.
Every joint is declared in the program, with its axis and its limits.

Tackle box3 joints
The dataset is on Hugging Face, and the Sand3D library that runs the programs is on GitHub. Download the collection, read any program, open any mesh.