{"data":{"id":270,"slug":"woodworking-workshop-and-joinery","title":"Woodworking Workshop and Joinery","summary":"Table saw, planer, band saw, lathe, benches, hand tools, timber racks and a modular shop shell in one realistic joinery family, built for woodworking and workshop scenes.","description":"Original CC0 joiner's workshop library: a cabinet table saw with its extension table and rip fence, a sliding mitre saw on a folding stand, a planer thicknesser, an open frame band saw, a spindle moulder, a floor standing pillar drill, a disc and belt sander, a wood lathe with its tool rest, a twin bag dust extractor and a mobile machine base, with a modular shell of concrete floor tiles, clad wall panels, a clerestory window strip, a roller delivery door and a ported extraction duct run on a 4 m grid. The bench side carries a laminated joiner's workbench with a working vice, an assembly table, a sawhorse pair, a tool board hung with chisels, a tenon saw, a bench plane, squares, a mallet and clamps, a clamp rack of sash clamps, a rolling tool chest, a sharpening station, a router table, a mallet and chisel tray and a bench plane on its own. Stock and finishing add a cantilever timber rack shown loaded and part loaded, a sheet material rack of ply, an offcut bin, a finished panelled door on its stand, glue and finish shelving, a finishing table, a drying rack, a workshop trolley, a collection bag of sawdust and a broom and dustpan, and the room is completed by a ceiling light bar, a fire extinguisher, a first aid box, a safety sign set and a workshop bin. Named pivoted nodes carry rigid node-transform clips only: the delivery door lifts, the saw blade, the band saw wheels, the lathe spindle and its blank, the sanding disc, the moulder spindle, the router cutter and the extractor fan turn, the drill quill feeds down with its chuck turning on it, the vice jaw and the tool chest drawers open and close, the trolley and base castors roll and the mitre saw head tilts through its cut. Drive belts, abrasive belts, the band saw blade, guarded cutterblocks, extraction hoses, the filter bags and every cord are modelled solid and never move, because a belt, a band or a piece of fabric is not reachable with one rigid node transform. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","url":"https://3dassets.dev/packs/woodworking-workshop-and-joinery","coverUrl":"https://cdn.3dassets.dev/assets/34274/v1/poster.webp","assetCount":43,"aiGenerated":true,"aiGeneratedAssetCount":43,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":4171348,"totalTriangles":78820,"starterScene":{"id":"34274","slug":"woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","title":"Joiner's shop with machine bay and bench run (Woodworking Workshop and Joinery)","summary":"A working joinery shop 12 m square: concrete floor tiles with a marked walkway across the front, cream clad walls under a clerestory, and the timber delivery door in the right hand wall. The cabinet saw stands clear in the middle of the floor with the router table, the...","description":"A working joinery shop 12 m square: concrete floor tiles with a marked walkway across the front, cream clad walls under a clerestory, and the timber delivery door in the right hand wall. The cabinet saw stands clear in the middle of the floor with the router table, the spindle moulder and the mitre saw stand around it, the planer thicknesser and the band saw sit on their mobile bases along the left wall, and the extraction main runs the width of the shop overhead to the twin bag extractor in the back corner. The bench run works under the window with the tool board of chisels, saw, plane and squares above it and the mallet, chisels and a bench plane on the top, with the sharpening station, the tool chest and the clamp rack to hand. The lathe, the pillar drill and the disc and belt sander take the rest of the back wall, the timber and sheet racks stand against the right hand wall by the door, a door is being assembled on the assembly table in the middle, and the finishing corner at the front holds the finishing table, the drying rack and a finished door on its stand. The front wall is left off so the shop reads from above.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/34274/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/34274/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34274/v1/poster.webp","blurhash":"U4C?o+~V00%gI?IoxZxa0057^iI9%1?GR*bY","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1759844,"triangles":39552,"vertices":88996,"meshes":258,"materials":12,"textures":2,"animations":[],"boundingBox":{"min":[-6.139896847437972,-0.12006042798986698,-6.139896847437971],"max":[6.140012815800681,4.029883648393341,6]},"sizeMeters":[12.28,4.15,12.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:31.269Z","updatedAt":"2026-09-11T07:29:31.449Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34274/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JoinerSShopWithMachineBayAndBenchRunWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34274/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34274/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34274/v1/model.glb\" alt=\"Joiner's shop with machine bay and bench run (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34274/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34274/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"34234","slug":"woodworking-workshop-and-joinery-woodworking-workshop--f1f4014d","title":"Workshop floor tile, 4 m (Woodworking Workshop and Joinery)","summary":"Power floated concrete floor module 4 m square and 120 mm thick with sawn movement joints along both edges, laid on a 4 m grid with edge ports on all four sides.","description":"Power floated concrete floor module 4 m square and 120 mm thick with sawn movement joints along both edges, laid on a 4 m grid with edge ports on all four sides. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 4.00 by 0.13 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static modular piece; the joints are modelled as recessed strips, not decals. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--f1f4014d","cdnUrl":"https://cdn.3dassets.dev/assets/34234/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--f1f4014d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34234/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34234/v1/poster.webp","blurhash":"U7Ci{$%M00WB-pWBRjoz00M{~qWB9Ft7t7RP","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50740,"triangles":36,"vertices":84,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.000060427989866981835,-2],"max":[2,0.12808826128751058,2]},"sizeMeters":[4,0.128,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:07.942Z","updatedAt":"2026-09-11T07:29:08.060Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34234/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopFloorTile4MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34234/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34234/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34234/v1/model.glb\" alt=\"Workshop floor tile, 4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34234/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34234/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34235","slug":"woodworking-workshop-and-joinery-woodworking-workshop--b3d6531b","title":"Workshop floor tile with walkway markings, 4 m (Woodworking Workshop and Joinery)","summary":"The same 4 m concrete floor module with a painted safety yellow walkway lane down it, standing 5 mm proud of the slab. Identical edge ports, so it lays into the same grid.","description":"The same 4 m concrete floor module with a painted safety yellow walkway lane down it, standing 5 mm proud of the slab. Identical edge ports, so it lays into the same grid. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 4.00 by 0.13 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static modular piece; the paint is modelled as a raised film. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--b3d6531b","cdnUrl":"https://cdn.3dassets.dev/assets/34235/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--b3d6531b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34235/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34235/v1/poster.webp","blurhash":"U7Ci{#%M00WD-pWBNGoz00M{~qWB9Ft7t6RP","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":51948,"triangles":60,"vertices":140,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.000060427989866981835,-2],"max":[2,0.12808826128751058,2]},"sizeMeters":[4,0.128,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:07.989Z","updatedAt":"2026-09-11T07:29:08.108Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34235/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopFloorTileWithWalkwayMarkings4MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34235/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34235/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34235/v1/model.glb\" alt=\"Workshop floor tile with walkway markings, 4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34235/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34235/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34233","slug":"woodworking-workshop-and-joinery-woodworking-workshop--422c03bf","title":"Workshop wall panel module, 4 m (Woodworking Workshop and Joinery)","summary":"Cream painted workshop wall 4 m wide and 2.8 m tall on a concrete plinth, with timber battens, a safety yellow impact rail and a capping rail, side ports on the centre line and a top port for the glazed strip that courses above it.","description":"Cream painted workshop wall 4 m wide and 2.8 m tall on a concrete plinth, with timber battens, a safety yellow impact rail and a capping rail, side ports on the centre line and a top port for the glazed strip that courses above it. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 4.00 by 2.80 by 0.28 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static modular piece. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--422c03bf","cdnUrl":"https://cdn.3dassets.dev/assets/34233/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--422c03bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/34233/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34233/v1/poster.webp","blurhash":"UGHxyp-;00xuS4~q%LE100M|?aoek9IoWCn#","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":70888,"triangles":108,"vertices":252,"meshes":5,"materials":5,"textures":2,"animations":[],"boundingBox":{"min":[-2,0.00009308741436625523,-0.13989684743797112],"max":[2,2.8000402748957653,0.13989684743797112]},"sizeMeters":[4,2.8,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:07.924Z","updatedAt":"2026-09-11T07:29:08.044Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34233/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopWallPanelModule4MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34233/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34233/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34233/v1/model.glb\" alt=\"Workshop wall panel module, 4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34233/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34233/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34232","slug":"woodworking-workshop-and-joinery-woodworking-workshop--2465c71e","title":"Workshop window strip module, 4 m (Woodworking Workshop and Joinery)","summary":"Glazed clerestory course 4 m wide and 1.2 m tall with charcoal mullions, sill and head, built to sit on the wall panel's top port and carry the run up to 4 m so the bench works under daylight.","description":"Glazed clerestory course 4 m wide and 1.2 m tall with charcoal mullions, sill and head, built to sit on the wall panel's top port and carry the run up to 4 m so the bench works under daylight. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 4.00 by 1.20 by 0.24 m (X by Y by Z). Metre units, +Y up, the working face toward +Z. The origin is the bottom centre of the frame, which is the course line it stacks on, so it drops straight onto the wall panel's top port. Static geometry; no rig, collision or navigation data. Static modular piece; the glazing is a solid pane. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--2465c71e","cdnUrl":"https://cdn.3dassets.dev/assets/34232/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--2465c71e","thumbnailUrl":"https://cdn.3dassets.dev/assets/34232/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34232/v1/poster.webp","blurhash":"U8B|Qq%M00xu%M~qs:IA00kC~qRjIU00WB?b","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7468,"triangles":120,"vertices":280,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00006716456270505766,-0.11987670522171698],"max":[2,1.1999328831210108,0.11987670522171698]},"sizeMeters":[4,1.2,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:07.875Z","updatedAt":"2026-09-11T07:29:07.973Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34232/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopWindowStripModule4MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34232/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34232/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34232/v1/model.glb\" alt=\"Workshop window strip module, 4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34232/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34232/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34236","slug":"woodworking-workshop-and-joinery-woodworking-workshop--e1b29a68","title":"Roller door module, 4 m (Woodworking Workshop and Joinery)","summary":"Full height timber delivery entrance module: a 3.2 m by 3.2 m opening in a cream clad surround, charcoal guide channels, red impact posts, a shutter hood and a slatted blue curtain that lifts clear of the opening.","description":"Full height timber delivery entrance module: a 3.2 m by 3.2 m opening in a cream clad surround, charcoal guide channels, red impact posts, a shutter hood and a slatted blue curtain that lifts clear of the opening. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 4.06 by 4.03 by 0.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: open and close. No skinning. The hood, the barrel inside it, the guide channels and the bottom rail stops are modelled solid; only the curtain moves, and the counterbalance springs and the chain hoist are not modelled. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--e1b29a68","cdnUrl":"https://cdn.3dassets.dev/assets/34236/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--e1b29a68","thumbnailUrl":"https://cdn.3dassets.dev/assets/34236/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34236/v1/poster.webp","blurhash":"U8CjY2Xn00rV_M_3D+4-00t6pyM|ENWBslM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":69164,"triangles":384,"vertices":894,"meshes":6,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-2.0299999713897705,0.00009308741436625523,-0.14001281580067998],"max":[2.0299999713897705,4.029883648393341,0.35998749381861417]},"sizeMeters":[4.06,4.03,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:10.628Z","updatedAt":"2026-09-11T07:29:10.744Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34236/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function RollerDoorModule4MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34236/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34236/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34236/v1/model.glb\" alt=\"Roller door module, 4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34236/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34236/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34238","slug":"woodworking-workshop-and-joinery-woodworking-workshop--1f5b7f96","title":"Workshop ceiling light bar, 2.4 m (Woodworking Workshop and Joinery)","summary":"Suspended twin tube light 2.4 m long: a grey steel channel on two drop rods with a charcoal reflector and two cream diffuser tubes, for lighting a bench run or a machine bay.","description":"Suspended twin tube light 2.4 m long: a grey steel channel on two drop rods with a charcoal reflector and two cream diffuser tubes, for lighting a bench run or a machine bay. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.40 by 0.34 by 0.26 m (X by Y by Z). Metre units, +Y up, the working face toward +Z. The origin is the ceiling fixing face at the top of the drop rods, so it hangs below the placement point. Static geometry; no rig, collision or navigation data. Static fitting; the tubes are solid geometry and the pack carries no lights or emissive materials. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--1f5b7f96","cdnUrl":"https://cdn.3dassets.dev/assets/34238/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--1f5b7f96","thumbnailUrl":"https://cdn.3dassets.dev/assets/34238/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34238/v1/poster.webp","blurhash":"U7AmrGxu9FxuWB~qxuM{00Rj_3ays:00IU-=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":12028,"triangles":208,"vertices":458,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.33605060263752856,-0.1299966402688607],"max":[1.2000000476837158,0.00594381661048228,0.1299966402688607]},"sizeMeters":[2.4,0.342,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:09.748Z","updatedAt":"2026-09-11T07:29:09.929Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34238/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopCeilingLightBar24MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34238/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34238/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34238/v1/model.glb\" alt=\"Workshop ceiling light bar, 2.4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34238/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34238/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34237","slug":"woodworking-workshop-and-joinery-woodworking-workshop--0d25333f","title":"Dust extraction duct run, 2 m (Woodworking Workshop and Joinery)","summary":"Two metre galvanised extraction duct 220 mm across with flanged joints, a bolted hanger strap and a blanked branch takeoff, ported at both ends so a run repeats across the shop to the extractor.","description":"Two metre galvanised extraction duct 220 mm across with flanged joints, a bolted hanger strap and a blanked branch takeoff, ported at both ends so a run repeats across the shop to the extractor. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.98 by 0.57 by 0.37 m (X by Y by Z). Metre units, +Y up, the working face toward +Z. The origin is on the duct centre line at mid length, which is the port height, so sections butt end to end. Static geometry; no rig, collision or navigation data. Static ducting; the blast gate on the branch is modelled shut and does not move. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--0d25333f","cdnUrl":"https://cdn.3dassets.dev/assets/34237/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--0d25333f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34237/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34237/v1/poster.webp","blurhash":"U48E6%jY00bIt6?bM{IU00Rj~qafM|00xu-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18744,"triangles":420,"vertices":874,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.9900000095367432,-0.12797265255509777,-0.12608015472981463],"max":[0.9900000095367432,0.43997146694839073,0.24002475972268114]},"sizeMeters":[1.98,0.568,0.366],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:10.759Z","updatedAt":"2026-09-11T07:29:10.965Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34237/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DustExtractionDuctRun2MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34237/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34237/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34237/v1/model.glb\" alt=\"Dust extraction duct run, 2 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34237/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34237/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34239","slug":"woodworking-workshop-and-joinery-woodworking-workshop--0fb1799a","title":"Cabinet table saw with extension table, 1.6 m (Woodworking Workshop and Joinery)","summary":"Cabinet saw on a blue body: a cast steel top split by the blade slot, a lattice extension table on the right, front and rear rails with a yellow rip fence, a riving knife under a crown guard, rise and tilt handwheels, a start and stop station and a dust port at the back.","description":"Cabinet saw on a blue body: a cast steel top split by the blade slot, a lattice extension table on the right, front and rear rails with a yellow rip fence, a riving knife under a crown guard, rise and tilt handwheels, a start and stop station and a dust port at the back. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.75 by 1.06 by 0.99 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The arbor, the drive belt inside the cabinet, the handwheels, the riving knife and the crown guard are modelled solid; only the blade turns, and it is left standing at cutting height rather than retracted. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--0fb1799a","cdnUrl":"https://cdn.3dassets.dev/assets/34239/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--0fb1799a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34239/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34239/v1/poster.webp","blurhash":"UA9*DX*04UR3_2xaIWW;4TVXt8g458bc${RO","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":111380,"triangles":2500,"vertices":5636,"meshes":9,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.5149999856948853,-0.000023187391015921932,-0.4999898502114135],"max":[1.2350000143051147,1.059973064007043,0.4949898549797851]},"sizeMeters":[1.75,1.06,0.995],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:09.767Z","updatedAt":"2026-09-11T07:29:09.967Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34239/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function CabinetTableSawWithExtensionTable16MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34239/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34239/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34239/v1/model.glb\" alt=\"Cabinet table saw with extension table, 1.6 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34239/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34239/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34241","slug":"woodworking-workshop-and-joinery-woodworking-workshop--17093d56","title":"Sliding mitre saw on a folding stand, 1.9 m (Woodworking Workshop and Joinery)","summary":"Red sliding mitre saw on a grey folding stand: splayed legs under two top rails, a roller support wing at each end, a charcoal base with a rotating mitre table and a fence, and a saw head on its rear pivot that tilts down through the cut and back.","description":"Red sliding mitre saw on a grey folding stand: splayed legs under two top rails, a roller support wing at each end, a charcoal base with a rotating mitre table and a fence, and a saw head on its rear pivot that tilts down through the cut and back. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.02 by 1.34 by 0.79 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: tilt. No skinning. The slide rails, the mitre latch, the stand's folding catches and the blade under its guard are modelled solid; the blade does not turn, because it is covered by the guard the whole time the head is down. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--17093d56","cdnUrl":"https://cdn.3dassets.dev/assets/34241/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--17093d56","thumbnailUrl":"https://cdn.3dassets.dev/assets/34241/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34241/v1/poster.webp","blurhash":"U4BDHD%g00#T^6?vB9DO00og?vn~0x00^Q_N","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":64924,"triangles":1448,"vertices":3220,"meshes":8,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-1.0099999904632568,0.00002684198322411291,-0.39994004126166927],"max":[1.0099999904632568,1.3400055252202725,0.38994002099609004]},"sizeMeters":[2.02,1.34,0.79],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:11.564Z","updatedAt":"2026-09-11T07:29:11.668Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34241/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SlidingMitreSawOnAFoldingStand19MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34241/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34241/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34241/v1/model.glb\" alt=\"Sliding mitre saw on a folding stand, 1.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34241/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34241/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34240","slug":"woodworking-workshop-and-joinery-woodworking-workshop--73b761d2","title":"Planer thicknesser, 1.65 m (Woodworking Workshop and Joinery)","summary":"Over and under planer thicknesser in red: infeed and outfeed cast tables set either side of the cutterblock with the infeed 2 mm low, a long steel fence at the back, a yellow bridge guard, a rise and fall handwheel with its scale, an extraction hood and a start and stop station.","description":"Over and under planer thicknesser in red: infeed and outfeed cast tables set either side of the cutterblock with the infeed 2 mm low, a long steel fence at the back, a yellow bridge guard, a rise and fall handwheel with its scale, an extraction hood and a start and stop station. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.62 by 1.08 by 1.18 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static machine. The cutterblock, the feed rollers, the drive belt and the thicknessing bed inside the body are modelled solid and do not turn, because a guarded cutterblock reads the same stationary and a belt is not reachable with one rigid node transform. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--73b761d2","cdnUrl":"https://cdn.3dassets.dev/assets/34240/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--73b761d2","thumbnailUrl":"https://cdn.3dassets.dev/assets/34240/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34240/v1/poster.webp","blurhash":"UABo]q~C015Q%~xvrXe-00Ef^P#km7RPF_NG","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":87640,"triangles":1948,"vertices":4379,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.8100000023841858,0.000026097991124740538,-0.7200000286102295],"max":[0.8100000023841858,1.0799739449242196,0.4627124941138566]},"sizeMeters":[1.62,1.08,1.183],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:12.569Z","updatedAt":"2026-09-11T07:29:12.665Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34240/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlanerThicknesser165MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34240/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34240/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34240/v1/model.glb\" alt=\"Planer thicknesser, 1.65 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34240/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34240/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34242","slug":"woodworking-workshop-and-joinery-woodworking-workshop--87d87bf5","title":"Open frame band saw, 2.1 m (Woodworking Workshop and Joinery)","summary":"Green cast frame band saw: a heavy plinth, a full height column carrying two exposed 400 mm wheels with charcoal tyres, a tilting steel table with its fence, an adjustable blade guard on its post, a dust port at the lower wheel and a start and stop station.","description":"Green cast frame band saw: a heavy plinth, a full height column carrying two exposed 400 mm wheels with charcoal tyres, a tilting steel table with its fence, an adjustable blade guard on its post, a dust port at the lower wheel and a start and stop station. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.92 by 2.10 by 0.75 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The blade itself is a solid steel band and the guides, the tension screw and the tracking knob are modelled solid; only the two wheels turn, and the blade is left running through the table at full depth. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--87d87bf5","cdnUrl":"https://cdn.3dassets.dev/assets/34242/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--87d87bf5","thumbnailUrl":"https://cdn.3dassets.dev/assets/34242/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34242/v1/poster.webp","blurhash":"U37By4.k0000y;%MQU8_8_xI.8I-_NWn9Esq","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":103132,"triangles":2528,"vertices":5564,"meshes":12,"materials":6,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.5434718633393298,0,-0.2799490284056784],"max":[0.3799718523720752,2.0999999046325684,0.46999054059348055]},"sizeMeters":[0.923,2.1,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:12.607Z","updatedAt":"2026-09-11T07:29:12.732Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34242/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function OpenFrameBandSaw21MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34242/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34242/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34242/v1/model.glb\" alt=\"Open frame band saw, 2.1 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34242/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34242/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34243","slug":"woodworking-workshop-and-joinery-woodworking-workshop--f0da24d6","title":"Spindle moulder, 1.1 m (Woodworking Workshop and Joinery)","summary":"Green spindle moulder: a cast table with its insert ring over a closed cabinet, a split cream fence on a charcoal body, a yellow ring guard, the rise and fall handwheel and a start and stop station, with the spindle and its cutter block turning in the opening.","description":"Green spindle moulder: a cast table with its insert ring over a closed cabinet, a split cream fence on a charcoal body, a yellow ring guard, the rise and fall handwheel and a start and stop station, with the spindle and its cutter block turning in the opening. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.00 by 1.22 by 1.07 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The fence halves, the ring guard, the hold down springs and the belt inside the cabinet are modelled solid; only the spindle and its cutter block turn. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--f0da24d6","cdnUrl":"https://cdn.3dassets.dev/assets/34243/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--f0da24d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/34243/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34243/v1/poster.webp","blurhash":"U7A^%Y?v008{}^n,9sWU00Mx.RWV0ctQ^RM{","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":90096,"triangles":1964,"vertices":4411,"meshes":8,"materials":6,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.5,0,-0.5599824657220481],"max":[0.5,1.2200000286102295,0.5127424243617604]},"sizeMeters":[1,1.22,1.073],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:12.624Z","updatedAt":"2026-09-11T07:29:12.742Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34243/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SpindleMoulder11MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34243/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34243/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34243/v1/model.glb\" alt=\"Spindle moulder, 1.1 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34243/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34243/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34244","slug":"woodworking-workshop-and-joinery-woodworking-workshop--64e716a2","title":"Floor standing pillar drill, 1.85 m (Woodworking Workshop and Joinery)","summary":"Cast base, a 1.6 m steel column, an adjustable table on its bracket and a grey head with a red belt cover: the quill feeds down on its three ball handles and the chuck and drill bit turn with it.","description":"Cast base, a 1.6 m steel column, an adjustable table on its bracket and a grey head with a red belt cover: the quill feeds down on its three ball handles and the chuck and drill bit turn with it. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.55 by 1.82 by 0.77 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin, open and close. No skinning. The belt and pulleys under the cover, the depth stop, the table bracket and the feed handles are modelled solid; the quill travels and the chuck turns with it, because the chuck is parented to the quill. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--64e716a2","cdnUrl":"https://cdn.3dassets.dev/assets/34244/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--64e716a2","thumbnailUrl":"https://cdn.3dassets.dev/assets/34244/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34244/v1/poster.webp","blurhash":"UB8p=b%2009Z}[s.5QNb+^V@E}o}Q-RjgNxu","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":121440,"triangles":2620,"vertices":6023,"meshes":9,"materials":7,"textures":0,"animations":["spin","open","close"],"boundingBox":{"min":[-0.22002763441587114,0,-0.41999998688697815],"max":[0.32702762774015093,1.8200000524520874,0.3500213314077548]},"sizeMeters":[0.547,1.82,0.77],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:13.590Z","updatedAt":"2026-09-11T07:29:13.706Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34244/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function FloorStandingPillarDrill185MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34244/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34244/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34244/v1/model.glb\" alt=\"Floor standing pillar drill, 1.85 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34244/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34244/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34245","slug":"woodworking-workshop-and-joinery-woodworking-workshop--da41b4be","title":"Disc and belt sander on a stand, 1.2 m (Woodworking Workshop and Joinery)","summary":"Blue bench sander on a grey steel stand: a 300 mm cream sanding disc behind its charcoal guard with a tilting steel table, a tilting belt platen on the left with its drums, a dust port under each and a start and stop station.","description":"Blue bench sander on a grey steel stand: a 300 mm cream sanding disc behind its charcoal guard with a tilting steel table, a tilting belt platen on the left with its drums, a dust port under each and a start and stop station. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.92 by 1.36 by 0.62 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The sanding belt, the drums, the platen and the tracking knob are modelled solid; only the disc turns, because an abrasive belt is a loop and a loop is not reachable with one rigid node transform. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--da41b4be","cdnUrl":"https://cdn.3dassets.dev/assets/34245/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--da41b4be","thumbnailUrl":"https://cdn.3dassets.dev/assets/34245/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34245/v1/poster.webp","blurhash":"U59agT-=00MwF~a~#OV@00IT_4%g+Ys,O[W@","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":86704,"triangles":1908,"vertices":4199,"meshes":10,"materials":8,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.41999998688697815,0,-0.30001846675371907],"max":[0.5,1.3600164821082834,0.3200094582638091]},"sizeMeters":[0.92,1.36,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:14.382Z","updatedAt":"2026-09-11T07:29:14.511Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34245/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function DiscAndBeltSanderOnAStand12MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34245/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34245/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34245/v1/model.glb\" alt=\"Disc and belt sander on a stand, 1.2 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34245/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34245/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34247","slug":"woodworking-workshop-and-joinery-woodworking-workshop--6ea6f387","title":"Wood lathe with tool rest, 1.9 m (Woodworking Workshop and Joinery)","summary":"Cast bed lathe on two green pedestals: twin steel ways, a headstock with the drive spindle, a tailstock on its quill, a charcoal banjo carrying the steel tool rest and a turned blank between centres that spins with the spindle.","description":"Cast bed lathe on two green pedestals: twin steel ways, a headstock with the drive spindle, a tailstock on its quill, a charcoal banjo carrying the steel tool rest and a turned blank between centres that spins with the spindle. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.70 by 1.41 by 0.54 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The tailstock, the banjo, the tool rest, the locking levers and the belt inside the headstock are modelled solid; the spindle and the blank on it turn, and the tool rest stays where the turner set it. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--6ea6f387","cdnUrl":"https://cdn.3dassets.dev/assets/34247/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--6ea6f387","thumbnailUrl":"https://cdn.3dassets.dev/assets/34247/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34247/v1/poster.webp","blurhash":"U898h+.l8{tS%M.ktRHs4TrtxZMdK|nmruR%","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":136500,"triangles":2716,"vertices":6069,"meshes":9,"materials":7,"textures":1,"animations":["spin"],"boundingBox":{"min":[-0.8500000238418579,-0.00002949734495505396,-0.2500364764568502],"max":[0.8500000238418579,1.409989456500024,0.28999878084902964]},"sizeMeters":[1.7,1.41,0.54],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:15.444Z","updatedAt":"2026-09-11T07:29:15.536Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34247/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function WoodLatheWithToolRest19MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34247/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34247/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34247/v1/model.glb\" alt=\"Wood lathe with tool rest, 1.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34247/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34247/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34246","slug":"woodworking-workshop-and-joinery-woodworking-workshop--65fc7a83","title":"Twin bag dust extractor, 2.05 m (Woodworking Workshop and Joinery)","summary":"Blue twin bag extractor on a charcoal base with four castors: a fan housing over the motor, a 200 mm inlet with its flexible cuff, a steel hoop frame carrying the cream filter bag above and the collection bag below, and the motor fan turning on top.","description":"Blue twin bag extractor on a charcoal base with four castors: a fan housing over the motor, a 200 mm inlet with its flexible cuff, a steel hoop frame carrying the cream filter bag above and the collection bag below, and the motor fan turning on top. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.90 by 2.05 by 0.98 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The bags, the hoops, the strap clamps and the flexible inlet cuff are modelled solid, because fabric is not reachable with one rigid node transform; only the motor fan turns and the castors are locked. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--65fc7a83","cdnUrl":"https://cdn.3dassets.dev/assets/34246/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--65fc7a83","thumbnailUrl":"https://cdn.3dassets.dev/assets/34246/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34246/v1/poster.webp","blurhash":"U5A,,$%2009HsSD*E2~W00M{~q%Mx_%2xTD*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":110980,"triangles":2524,"vertices":5550,"meshes":9,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.4500004435515467,0,-0.300032157517878],"max":[0.4500004435515467,2.049999952316284,0.6760321446432747]},"sizeMeters":[0.9,2.05,0.976],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:14.403Z","updatedAt":"2026-09-11T07:29:14.613Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34246/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function TwinBagDustExtractor205MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34246/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34246/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34246/v1/model.glb\" alt=\"Twin bag dust extractor, 2.05 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34246/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34246/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34248","slug":"woodworking-workshop-and-joinery-woodworking-workshop--af108527","title":"Mobile machine base, 0.8 m (Woodworking Workshop and Joinery)","summary":"Adjustable steel machine base: a welded rectangular frame with four corner brackets, a yellow foot lever and four castor wheels, so a planer or a band saw can be rolled out of the way and set down again.","description":"Adjustable steel machine base: a welded rectangular frame with four corner brackets, a yellow foot lever and four castor wheels, so a planer or a band saw can be rolled out of the way and set down again. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.80 by 0.20 by 0.69 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: wheel-roll. No skinning. The locking pawl and the height adjusters are modelled solid; the wheels roll and the frame stays flat on the floor. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--af108527","cdnUrl":"https://cdn.3dassets.dev/assets/34248/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--af108527","thumbnailUrl":"https://cdn.3dassets.dev/assets/34248/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34248/v1/poster.webp","blurhash":"U5A^RT%200It_4xuRioe00WB?bs*4TIUM|D*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21148,"triangles":636,"vertices":1388,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-0.4000000059604645,-1.7881393449270533e-9,-0.33002716639122154],"max":[0.4000000059604645,0.19601815890483407,0.3549909950808843]},"sizeMeters":[0.8,0.196,0.685],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:16.404Z","updatedAt":"2026-09-11T07:29:16.510Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34248/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function MobileMachineBase08MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34248/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34248/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34248/v1/model.glb\" alt=\"Mobile machine base, 0.8 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34248/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34248/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34250","slug":"woodworking-workshop-and-joinery-woodworking-workshop--bc21dc40","title":"Router table, 0.95 m (Woodworking Workshop and Joinery)","summary":"Enclosed router table: a blue cabinet with a cream laminated top and a steel insert plate, a split charcoal fence with its dust port and guard, a start and stop station on the front, and the router cutter turning in the opening.","description":"Enclosed router table: a blue cabinet with a cream laminated top and a steel insert plate, a split charcoal fence with its dust port and guard, a start and stop station on the front, and the router cutter turning in the opening. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.94 by 1.10 by 0.74 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: spin. No skinning. The router motor inside the cabinet, the lift screw and the featherboards are modelled solid; only the cutter turns, and the fence stays where it is set. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--bc21dc40","cdnUrl":"https://cdn.3dassets.dev/assets/34250/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--bc21dc40","thumbnailUrl":"https://cdn.3dassets.dev/assets/34250/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34250/v1/poster.webp","blurhash":"U8A-M3_3008^}:xuOaM{00Mx?vtT0OWA=?t8","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":77680,"triangles":1656,"vertices":3698,"meshes":9,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.47003541165873514,0,-0.3400065685780509],"max":[0.47003541165873514,1.100000023841858,0.3999987802529832]},"sizeMeters":[0.94,1.1,0.74],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:16.255Z","updatedAt":"2026-09-11T07:29:16.353Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34250/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function RouterTable095MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34250/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34250/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34250/v1/model.glb\" alt=\"Router table, 0.95 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34250/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34250/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34249","slug":"woodworking-workshop-and-joinery-woodworking-workshop--1a38c738","title":"Joiner's workbench with vice, 2 m (Woodworking Workshop and Joinery)","summary":"Laminated hardwood bench 2 m long on square legs and stretchers: eight glued top boards with a row of round dog holes, a front apron, a lower pine shelf and a cast front vice whose timber faced jaw slides out on its screw.","description":"Laminated hardwood bench 2 m long on square legs and stretchers: eight glued top boards with a row of round dog holes, a front apron, a lower pine shelf and a cast front vice whose timber faced jaw slides out on its screw. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.00 by 0.90 by 0.98 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: open and close. No skinning. The vice screw, the guide rods and the bench dogs are modelled solid; only the moving jaw travels, and the top is one glued slab so no board moves on its own. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--1a38c738","cdnUrl":"https://cdn.3dassets.dev/assets/34249/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--1a38c738","thumbnailUrl":"https://cdn.3dassets.dev/assets/34249/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34249/v1/poster.webp","blurhash":"U6AbkKS}0jWX}r-AEzEz0h#--SNtAVJRrun+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":64976,"triangles":932,"vertices":2200,"meshes":7,"materials":4,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-1,0.000004565855492466575,-0.36002685628833886],"max":[1,0.9029882147775875,0.6159303195751044]},"sizeMeters":[2,0.903,0.976],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:17.313Z","updatedAt":"2026-09-11T07:29:17.436Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34249/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function JoinerSWorkbenchWithVice2MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34249/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34249/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34249/v1/model.glb\" alt=\"Joiner's workbench with vice, 2 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34249/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34249/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34251","slug":"woodworking-workshop-and-joinery-woodworking-workshop--09eae188","title":"Assembly table, 1.8 m (Woodworking Workshop and Joinery)","summary":"Low assembly table 1.8 m by 1.1 m on a blue welded frame: a birch ply top on a torsion box grid with a field of dog holes, a lower shelf carrying two clamps and adjustable feet, built at 800 mm so a carcass can be squared up on it.","description":"Low assembly table 1.8 m by 1.1 m on a blue welded frame: a birch ply top on a torsion box grid with a field of dog holes, a lower shelf carrying two clamps and adjustable feet, built at 800 mm so a carcass can be squared up on it. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.80 by 0.80 by 1.10 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static table; the feet are modelled at their set height. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--09eae188","cdnUrl":"https://cdn.3dassets.dev/assets/34251/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--09eae188","thumbnailUrl":"https://cdn.3dassets.dev/assets/34251/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34251/v1/poster.webp","blurhash":"UDByQ?xu5rkW}SxbK5Rl00rqv|Nt5?V?r;WA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58908,"triangles":912,"vertices":2031,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.8999999761581421,0.00001524990120904679,-0.5500472891184104],"max":[0.8999999761581421,0.8029847233959101,0.5500472891184104]},"sizeMeters":[1.8,0.803,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:17.300Z","updatedAt":"2026-09-11T07:29:17.416Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34251/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AssemblyTable18MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34251/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34251/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34251/v1/model.glb\" alt=\"Assembly table, 1.8 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34251/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34251/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34252","slug":"woodworking-workshop-and-joinery-woodworking-workshop--dbd7bab7","title":"Sawhorse pair, 1 m (Woodworking Workshop and Joinery)","summary":"Two site built timber sawhorses with 1 m top beams, splayed legs, gussets and a lower tie, set out as a pair at working distance so a board or a door can be laid across them.","description":"Two site built timber sawhorses with 1 m top beams, splayed legs, gussets and a lower tie, set out as a pair at working distance so a board or a door can be laid across them. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.02 by 0.66 by 1.61 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static pair; the two horses are one model so they stay at the spacing a board needs. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--dbd7bab7","cdnUrl":"https://cdn.3dassets.dev/assets/34252/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--dbd7bab7","thumbnailUrl":"https://cdn.3dassets.dev/assets/34252/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34252/v1/poster.webp","blurhash":"U39FsIwJ10-V|EEh9^=b0MFeniw[7g$MxaJ-","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31636,"triangles":288,"vertices":656,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.5099597532442777,0.00000801102782405777,-0.8050000071525574],"max":[0.5099597532442777,0.6600428583940268,0.8050000071525574]},"sizeMeters":[1.02,0.66,1.61],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:19.018Z","updatedAt":"2026-09-11T07:29:19.133Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34252/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SawhorsePair1MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34252/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34252/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34252/v1/model.glb\" alt=\"Sawhorse pair, 1 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34252/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34252/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34253","slug":"woodworking-workshop-and-joinery-woodworking-workshop--d2de689f","title":"Tool wall panel with hand tools, 1.6 m (Woodworking Workshop and Joinery)","summary":"Wall hung tool board 1.6 m by 1 m: a pale ply panel in a timber frame, carrying four bench chisels on their rack, a tenon saw on its pegs, a bench plane on its shelf, two try squares, a mallet and two F clamps, each tool modelled as the real thing.","description":"Wall hung tool board 1.6 m by 1 m: a pale ply panel in a timber frame, carrying four bench chisels on their rack, a tenon saw on its pegs, a bench plane on its shelf, two try squares, a mallet and two F clamps, each tool modelled as the real thing. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.65 by 1.77 by 0.16 m (X by Y by Z). Metre units, +Y up, the working face toward +Z. The origin is the bottom centre of the panel's fixing face at the back, so it hangs flat on a wall panel with the tools facing +Z. Static geometry; no rig, collision or navigation data. Static board; the tools are modelled hanging where a joiner leaves them and none of them move. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--d2de689f","cdnUrl":"https://cdn.3dassets.dev/assets/34253/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--d2de689f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34253/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34253/v1/poster.webp","blurhash":"UFBpFLkB00WC~qxa8_Io9txa%LIU9Zof-;Rj","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":146828,"triangles":2628,"vertices":6076,"meshes":7,"materials":7,"textures":1,"animations":[],"boundingBox":{"min":[-0.8050585773421876,-0.20050953328609467,-0.00003587566326359801],"max":[0.8411999940872192,1.5687999725341797,0.15994911106869258]},"sizeMeters":[1.646,1.769,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:18.895Z","updatedAt":"2026-09-11T07:29:19.002Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34253/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ToolWallPanelWithHandTools16MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34253/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34253/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34253/v1/model.glb\" alt=\"Tool wall panel with hand tools, 1.6 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34253/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34253/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34255","slug":"woodworking-workshop-and-joinery-woodworking-workshop--0fc38a58","title":"Clamp rack with sash clamps, 1.8 m (Woodworking Workshop and Joinery)","summary":"Steel A frame clamp rack on castors holding six 1.5 m sash clamps: each clamp is a steel bar with a red head casting, a sliding tail on its pin and a screw with a timber T handle, racked the way a shop keeps them beside the assembly table.","description":"Steel A frame clamp rack on castors holding six 1.5 m sash clamps: each clamp is a steel bar with a red head casting, a sliding tail on its pin and a screw with a timber T handle, racked the way a shop keeps them beside the assembly table. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.76 by 1.17 by 0.80 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static rack; the clamp heads and screws are modelled at the settings they were left at and do not slide. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--0fc38a58","cdnUrl":"https://cdn.3dassets.dev/assets/34255/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--0fc38a58","thumbnailUrl":"https://cdn.3dassets.dev/assets/34255/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34255/v1/poster.webp","blurhash":"U7Bf@P$*4._3}[~WIU4n00wJso4.00H?^+tl","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":47496,"triangles":624,"vertices":1412,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.8799999952316284,-0.00003006022367683936,-0.3999707000636202],"max":[0.8799999952316284,1.169950438649209,0.3999707000636202]},"sizeMeters":[1.76,1.17,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:20.112Z","updatedAt":"2026-09-11T07:29:20.211Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34255/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClampRackWithSashClamps18MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34255/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34255/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34255/v1/model.glb\" alt=\"Clamp rack with sash clamps, 1.8 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34255/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34255/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34254","slug":"woodworking-workshop-and-joinery-woodworking-workshop--d5cab84d","title":"Rolling tool chest, 1 m (Woodworking Workshop and Joinery)","summary":"Red seven drawer tool chest on four castors: a timber worktop, steel drawer pulls on every front, a side handle and a lower cupboard, with every drawer opening on its runners.","description":"Red seven drawer tool chest on four castors: a timber worktop, steel drawer pulls on every front, a side handle and a lower cupboard, with every drawer opening on its runners. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.76 by 0.96 by 0.55 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: open and close. No skinning. The castors are modelled locked and the carcass, the worktop and the side handle are solid; the seven drawers slide. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--d5cab84d","cdnUrl":"https://cdn.3dassets.dev/assets/34254/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--d5cab84d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34254/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34254/v1/poster.webp","blurhash":"U8E^NQ}[010e;1w0o~pH0yI;=es,xZNaAWo0","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":74704,"triangles":1248,"vertices":2790,"meshes":18,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.3700000047683716,0,-0.2700167900784632],"max":[0.38501654371668564,0.9549797817127427,0.28299337815658876]},"sizeMeters":[0.755,0.955,0.553],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:19.066Z","updatedAt":"2026-09-11T07:29:19.190Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34254/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function RollingToolChest1MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34254/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34254/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34254/v1/model.glb\" alt=\"Rolling tool chest, 1 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34254/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34254/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34256","slug":"woodworking-workshop-and-joinery-woodworking-workshop--c7d57ddc","title":"Sharpening station, 0.7 m (Woodworking Workshop and Joinery)","summary":"Sharpening bench in pine: a charcoal stone pond holding a coarse and a fine waterstone, a leather strop on its block, a honing guide, a water jug and a lower shelf of stone boxes, set at the height a joiner touches up an iron.","description":"Sharpening bench in pine: a charcoal stone pond holding a coarse and a fine waterstone, a leather strop on its block, a honing guide, a water jug and a lower shelf of stone boxes, set at the height a joiner touches up an iron. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.73 by 1.06 by 0.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static station; the stones, the guide and the jug are modelled where they are left on the top. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--c7d57ddc","cdnUrl":"https://cdn.3dassets.dev/assets/34256/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--c7d57ddc","thumbnailUrl":"https://cdn.3dassets.dev/assets/34256/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34256/v1/poster.webp","blurhash":"U6BoaJ^500D+_4-RIA9c15S_$zeoouogS1RP","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":47120,"triangles":520,"vertices":1223,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.3599896302371858,0,-0.2500259452686612],"max":[0.375,1.0599930375681648,0.2500259452686612]},"sizeMeters":[0.735,1.06,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:21.751Z","updatedAt":"2026-09-11T07:29:21.850Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34256/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SharpeningStation07MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34256/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34256/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34256/v1/model.glb\" alt=\"Sharpening station, 0.7 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34256/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34256/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34257","slug":"woodworking-workshop-and-joinery-woodworking-workshop--5ac95e85","title":"Mallet and chisel set on a tray, 0.5 m (Woodworking Workshop and Joinery)","summary":"A joiner's mallet standing in a shallow pine tray with three bench chisels laid beside it and a marking gauge: handles, ferrules and ground bevels modelled, for dressing a bench or an assembly table mid job.","description":"A joiner's mallet standing in a shallow pine tray with three bench chisels laid beside it and a marking gauge: handles, ferrules and ground bevels modelled, for dressing a bench or an assembly table mid job. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.55 by 0.38 by 0.30 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static group; the tools rest in the tray and nothing moves. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--5ac95e85","cdnUrl":"https://cdn.3dassets.dev/assets/34257/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--5ac95e85","thumbnailUrl":"https://cdn.3dassets.dev/assets/34257/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34257/v1/poster.webp","blurhash":"UBA[$3=c5RXS0#so-URk0}I?ofR*}?fhRjxa","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":65276,"triangles":932,"vertices":2148,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.25,-0.000009322570179888523,-0.1500137333292642],"max":[0.30000001192092896,0.3825203830265249,0.1500137333292642]},"sizeMeters":[0.55,0.383,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:20.922Z","updatedAt":"2026-09-11T07:29:21.025Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34257/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MalletAndChiselSetOnATray05MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34257/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34257/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34257/v1/model.glb\" alt=\"Mallet and chisel set on a tray, 0.5 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34257/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34257/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34258","slug":"woodworking-workshop-and-joinery-woodworking-workshop--0778378a","title":"Bench plane, 360 mm (Woodworking Workshop and Joinery)","summary":"Number five jack plane: a flat steel sole, a blue japanned body, the iron and red lever cap set at the mouth, a timber tote and front knob, sitting on its sole the way it is left on the bench.","description":"Number five jack plane: a flat steel sole, a blue japanned body, the iron and red lever cap set at the mouth, a timber tote and front knob, sitting on its sole the way it is left on the bench. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.36 by 0.13 by 0.07 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static tool; the iron is modelled set at its cut and the adjuster does not turn. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--0778378a","cdnUrl":"https://cdn.3dassets.dev/assets/34258/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--0778378a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34258/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34258/v1/poster.webp","blurhash":"U58;#~-j00YQU[_3kqE100H?_4R5Y88^rC$+","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":36240,"triangles":308,"vertices":741,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.18000000715255737,0.000004711037332690016,-0.03599231076581792],"max":[0.18000000715255737,0.1309991369674398,0.03599231076581792]},"sizeMeters":[0.36,0.131,0.072],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:20.967Z","updatedAt":"2026-09-11T07:29:21.059Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34258/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BenchPlane360MmWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34258/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34258/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34258/v1/model.glb\" alt=\"Bench plane, 360 mm (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34258/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34258/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34259","slug":"woodworking-workshop-and-joinery-woodworking-workshop--b4f0d615","title":"Timber rack with boards, 2.3 m (Woodworking Workshop and Joinery)","summary":"Blue cantilever timber rack 2.3 m wide and 2.25 m tall on bolted foot plates, with four pairs of raked arms carrying a full load of sawn hardwood and softwood boards in mixed widths and thicknesses.","description":"Blue cantilever timber rack 2.3 m wide and 2.25 m tall on bolted foot plates, with four pairs of raked arms carrying a full load of sawn hardwood and softwood boards in mixed widths and thicknesses. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.34 by 2.25 by 0.67 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static rack; the boards are modelled stacked on the arms and none of them move. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--b4f0d615","cdnUrl":"https://cdn.3dassets.dev/assets/34259/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--b4f0d615","thumbnailUrl":"https://cdn.3dassets.dev/assets/34259/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34259/v1/poster.webp","blurhash":"U89?|C#k0Ko$_N-VI9Io1$bv+ZM{KOXnn4Mw","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":39128,"triangles":420,"vertices":964,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.1699999570846558,0,-0.34994657747996616],"max":[1.1699999570846558,2.25,0.31999556527938283]},"sizeMeters":[2.34,2.25,0.67],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:23.039Z","updatedAt":"2026-09-11T07:29:23.144Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34259/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberRackWithBoards23MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34259/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34259/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34259/v1/model.glb\" alt=\"Timber rack with boards, 2.3 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34259/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34259/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34260","slug":"woodworking-workshop-and-joinery-woodworking-workshop--589187d1","title":"Timber rack, part loaded, 2.3 m (Woodworking Workshop and Joinery)","summary":"The same cantilever rack after a run of work: the lower arms still carrying boards and the upper arms nearly clear, for a shop that has been using its stock.","description":"The same cantilever rack after a run of work: the lower arms still carrying boards and the upper arms nearly clear, for a shop that has been using its stock. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.34 by 2.25 by 0.67 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static rack. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--589187d1","cdnUrl":"https://cdn.3dassets.dev/assets/34260/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--589187d1","thumbnailUrl":"https://cdn.3dassets.dev/assets/34260/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34260/v1/poster.webp","blurhash":"UA97ntt80eof?wxvD%M_9[a#vgNFK5t7v}Mx","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30968,"triangles":300,"vertices":684,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.1699999570846558,0,-0.34994657747996616],"max":[1.1699999570846558,2.25,0.31999556527938283]},"sizeMeters":[2.34,2.25,0.67],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:22.605Z","updatedAt":"2026-09-11T07:29:22.714Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34260/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberRackPartLoaded23MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34260/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34260/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34260/v1/model.glb\" alt=\"Timber rack, part loaded, 2.3 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34260/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34260/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34261","slug":"woodworking-workshop-and-joinery-woodworking-workshop--854a5688","title":"Sheet material rack with ply, 2.5 m (Woodworking Workshop and Joinery)","summary":"Upright sheet rack 2.5 m wide: a steel base frame with charcoal dividers and a back leaning post, holding five birch ply and MDF sheets on edge with their faces clear of the floor.","description":"Upright sheet rack 2.5 m wide: a steel base frame with charcoal dividers and a back leaning post, holding five birch ply and MDF sheets on edge with their faces clear of the floor. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 2.50 by 1.93 by 0.70 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static rack; the sheets are modelled leaning on the posts and do not slide. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--854a5688","cdnUrl":"https://cdn.3dassets.dev/assets/34261/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--854a5688","thumbnailUrl":"https://cdn.3dassets.dev/assets/34261/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34261/v1/poster.webp","blurhash":"U7ELZ{mQ0gR-8w}@pd9v0fw^ZMt,cu%#^j8_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":26632,"triangles":156,"vertices":364,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.25,0.0000691411132636155,-0.3499328592791528],"max":[1.25,1.9261588032682861,0.3499328592791528]},"sizeMeters":[2.5,1.926,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:22.678Z","updatedAt":"2026-09-11T07:29:22.773Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34261/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SheetMaterialRackWithPly25MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34261/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34261/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34261/v1/model.glb\" alt=\"Sheet material rack with ply, 2.5 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34261/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34261/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34262","slug":"woodworking-workshop-and-joinery-woodworking-workshop--c16ce05c","title":"Offcut bin, 0.9 m (Woodworking Workshop and Joinery)","summary":"Timber sided offcut bin on skids, 0.9 m by 0.6 m, filled with short ends and ply strips standing at the angles they were thrown in at, with a stencil plate on the front.","description":"Timber sided offcut bin on skids, 0.9 m by 0.6 m, filled with short ends and ply strips standing at the angles they were thrown in at, with a stencil plate on the front. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.90 by 1.10 by 0.61 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static bin; the offcuts are modelled as one loaded state. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--c16ce05c","cdnUrl":"https://cdn.3dassets.dev/assets/34262/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--c16ce05c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34262/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34262/v1/poster.webp","blurhash":"U5Bo1}}r0O9]0iNu-UsE0M9^-Axs=xxZr=RP","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41240,"triangles":480,"vertices":1090,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.4500135559731125,0,-0.2999880386405433],"max":[0.4500135559731125,1.097346544265747,0.31499996370290506]},"sizeMeters":[0.9,1.097,0.615],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:24.626Z","updatedAt":"2026-09-11T07:29:24.723Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34262/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OffcutBin09MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34262/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34262/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34262/v1/model.glb\" alt=\"Offcut bin, 0.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34262/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34262/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34263","slug":"woodworking-workshop-and-joinery-woodworking-workshop--b5fbe5fd","title":"Panelled door on a stand, 2 m (Woodworking Workshop and Joinery)","summary":"Finished four panel door 2 m tall in hardwood with raised ply panels, a steel lever handle and two hinges, standing upright in a timber stand with a back brace, the way a finished job waits for collection.","description":"Finished four panel door 2 m tall in hardwood with raised ply panels, a steel lever handle and two hinges, standing upright in a timber stand with a back brace, the way a finished job waits for collection. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.92 by 2.07 by 0.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static assembly; the door is fixed in its stand and the handle does not turn. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--b5fbe5fd","cdnUrl":"https://cdn.3dassets.dev/assets/34263/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--b5fbe5fd","thumbnailUrl":"https://cdn.3dassets.dev/assets/34263/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34263/v1/poster.webp","blurhash":"U396Bb=^040%S|oeWCNI0$af}roxnSoKkAR+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":32960,"triangles":288,"vertices":659,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.4649883433842195,0,-0.25003997118366017],"max":[0.4499519188366902,2.069999933242798,0.25003997118366017]},"sizeMeters":[0.915,2.07,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:24.294Z","updatedAt":"2026-09-11T07:29:24.394Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34263/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PanelledDoorOnAStand2MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34263/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34263/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34263/v1/model.glb\" alt=\"Panelled door on a stand, 2 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34263/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34263/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34264","slug":"woodworking-workshop-and-joinery-woodworking-workshop--4a8333c5","title":"Glue and finish shelving, 0.9 m (Woodworking Workshop and Joinery)","summary":"Steel shelving unit 0.9 m wide and 1.5 m tall with three shelves of workshop stock: tins of finish and stain, glue bottles, a jar of brushes, rag rolls and a measuring jug, all with blank labels.","description":"Steel shelving unit 0.9 m wide and 1.5 m tall with three shelves of workshop stock: tins of finish and stain, glue bottles, a jar of brushes, rag rolls and a measuring jug, all with blank labels. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.90 by 1.57 by 0.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static shelving; the stock is modelled as placed. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--4a8333c5","cdnUrl":"https://cdn.3dassets.dev/assets/34264/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--4a8333c5","thumbnailUrl":"https://cdn.3dassets.dev/assets/34264/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34264/v1/poster.webp","blurhash":"UBDcab-:00Io~q%M9FD%00ay.7aej[xtofIV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":84200,"triangles":1460,"vertices":3286,"meshes":7,"materials":7,"textures":1,"animations":[],"boundingBox":{"min":[-0.45004119998779263,0,-0.19998016296884064],"max":[0.45004119998779263,1.5700000524520874,0.19998016296884064]},"sizeMeters":[0.9,1.57,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:24.329Z","updatedAt":"2026-09-11T07:29:24.425Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34264/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GlueAndFinishShelving09MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34264/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34264/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34264/v1/model.glb\" alt=\"Glue and finish shelving, 0.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34264/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34264/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34265","slug":"woodworking-workshop-and-joinery-woodworking-workshop--03c076c9","title":"Finishing table, 1.2 m (Woodworking Workshop and Joinery)","summary":"Grey steel finishing table with a cream turntable top, a part in the middle being oiled, an open tin with its brush, a rag and a stack of finishing pads on the lower shelf, set in the corner a joiner keeps clean.","description":"Grey steel finishing table with a cream turntable top, a part in the middle being oiled, an open tin with its brush, a rag and a stack of finishing pads on the lower shelf, set in the corner a joiner keeps clean. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.20 by 1.02 by 0.80 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static table; the turntable is modelled at rest and does not turn. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--03c076c9","cdnUrl":"https://cdn.3dassets.dev/assets/34265/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--03c076c9","thumbnailUrl":"https://cdn.3dassets.dev/assets/34265/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34265/v1/poster.webp","blurhash":"UAFY$3-;00tR~p%MI:IU00WBt7RkIVbHaJV@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37084,"triangles":400,"vertices":899,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.00001588949377306914,-0.40002443070312294],"max":[0.6000000238418579,1.0219986905936527,0.40002443070312294]},"sizeMeters":[1.2,1.022,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:24.780Z","updatedAt":"2026-09-11T07:29:24.890Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34265/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FinishingTable12MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34265/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34265/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34265/v1/model.glb\" alt=\"Finishing table, 1.2 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34265/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34265/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34266","slug":"woodworking-workshop-and-joinery-woodworking-workshop--f9f39a5a","title":"Drying rack for finished parts, 1.4 m (Woodworking Workshop and Joinery)","summary":"Steel drying rack 1.4 m wide and 1.8 m tall: six levels of timber battens carrying finished ply and hardwood parts on edge, so a batch can air off without touching.","description":"Steel drying rack 1.4 m wide and 1.8 m tall: six levels of timber battens carrying finished ply and hardwood parts on edge, so a batch can air off without touching. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.38 by 2.02 by 0.53 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static rack; the parts are modelled resting on the battens. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--f9f39a5a","cdnUrl":"https://cdn.3dassets.dev/assets/34266/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--f9f39a5a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34266/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34266/v1/poster.webp","blurhash":"U3DSUU^k00ysL#=|h2Ej00IUD4MyEKxu%29F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41296,"triangles":444,"vertices":1036,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.6900448439289835,0,-0.26502578111972147],"max":[0.6900448439289835,2.015000104904175,0.26502578111972147]},"sizeMeters":[1.38,2.015,0.53],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:26.174Z","updatedAt":"2026-09-11T07:29:26.271Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34266/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DryingRackForFinishedParts14MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34266/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34266/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34266/v1/model.glb\" alt=\"Drying rack for finished parts, 1.4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34266/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34266/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34267","slug":"woodworking-workshop-and-joinery-woodworking-workshop--8892d2af","title":"Workshop trolley, 0.9 m (Woodworking Workshop and Joinery)","summary":"Three shelf steel trolley on four castors with a push handle, loaded with cut parts, a tin of finish and a clamp, for moving a job between the bench, the machines and the finishing corner.","description":"Three shelf steel trolley on four castors with a push handle, loaded with cut parts, a tin of finish and a clamp, for moving a job between the bench, the machines and the finishing corner. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.86 by 1.19 by 0.53 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Rigid node-transform clips: wheel-roll. No skinning. The frame, the handle and the load are modelled solid; the four wheels roll. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--8892d2af","cdnUrl":"https://cdn.3dassets.dev/assets/34267/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--8892d2af","thumbnailUrl":"https://cdn.3dassets.dev/assets/34267/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34267/v1/poster.webp","blurhash":"U6D0AX_4004.^*?vSh4T00s:~WD%?bniD%SP","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50432,"triangles":900,"vertices":1994,"meshes":14,"materials":6,"textures":1,"animations":["wheel-roll"],"boundingBox":{"min":[-0.42998217074399186,-7.450580569168253e-10,-0.26497743113743094],"max":[0.42998217074399186,1.190000057220459,0.26497743113743094]},"sizeMeters":[0.86,1.19,0.53],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:26.212Z","updatedAt":"2026-09-11T07:29:26.321Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34267/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function WorkshopTrolley09MWoodworkingWorkshopAndJoinery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34267/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34267/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34267/v1/model.glb\" alt=\"Workshop trolley, 0.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34267/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34267/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34268","slug":"woodworking-workshop-and-joinery-woodworking-workshop--a1986bb5","title":"Sawdust collection bag, 0.9 m (Woodworking Workshop and Joinery)","summary":"Full collection bag off the extractor: a cream sack on a timber pallet, slumped under its own weight, tied at the neck with a charcoal strap and a blank content label on the side.","description":"Full collection bag off the extractor: a cream sack on a timber pallet, slumped under its own weight, tied at the neck with a charcoal strap and a blank content label on the side. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.90 by 0.92 by 0.76 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static bag; the sack is modelled in one filled state, because fabric is not reachable with a rigid node transform. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--a1986bb5","cdnUrl":"https://cdn.3dassets.dev/assets/34268/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--a1986bb5","thumbnailUrl":"https://cdn.3dassets.dev/assets/34268/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34268/v1/poster.webp","blurhash":"UHE2%*xu00IUEjazs9Wo00Rj_Nxu$%oKsmjZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":35268,"triangles":384,"vertices":846,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.44999998807907104,0.000009616310462506883,-0.3800149440026849],"max":[0.44999998807907104,0.925000011920929,0.3800149440026849]},"sizeMeters":[0.9,0.925,0.76],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:27.311Z","updatedAt":"2026-09-11T07:29:27.414Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34268/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SawdustCollectionBag09MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34268/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34268/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34268/v1/model.glb\" alt=\"Sawdust collection bag, 0.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34268/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34268/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34269","slug":"woodworking-workshop-and-joinery-woodworking-workshop--f2b14154","title":"Broom and dustpan, 1.4 m (Woodworking Workshop and Joinery)","summary":"Shop broom with a charcoal bristle head on a 1.3 m timber handle, standing back against a wall, with a red dustpan and its brush on the floor beside it.","description":"Shop broom with a charcoal bristle head on a 1.3 m timber handle, standing back against a wall, with a red dustpan and its brush on the floor beside it. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 1.12 by 1.46 by 0.34 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static group; the broom leans at the angle it is left at and the pan lies flat. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--f2b14154","cdnUrl":"https://cdn.3dassets.dev/assets/34269/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--f2b14154","thumbnailUrl":"https://cdn.3dassets.dev/assets/34269/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34269/v1/poster.webp","blurhash":"U8839PkT0|rv0}w{}ZE#R.RlaxxY=eOCEz,Z","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24480,"triangles":124,"vertices":281,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.4100168828033365,-0.000018194714596866945,-0.11158141004485589],"max":[0.710016864921943,1.4647504091262817,0.22982395610767498]},"sizeMeters":[1.12,1.465,0.341],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:26.543Z","updatedAt":"2026-09-11T07:29:26.726Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34269/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BroomAndDustpan14MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34269/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34269/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34269/v1/model.glb\" alt=\"Broom and dustpan, 1.4 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34269/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34269/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34270","slug":"woodworking-workshop-and-joinery-woodworking-workshop--46a18d51","title":"Fire extinguisher on a stand, 0.7 m (Woodworking Workshop and Joinery)","summary":"Red nine litre extinguisher on a charcoal floor stand: a domed body, a brass valve head with its lever and gauge, a hose and horn clipped to the side and a blank cream label band.","description":"Red nine litre extinguisher on a charcoal floor stand: a domed body, a brass valve head with its lever and gauge, a hose and horn clipped to the side and a blank cream label band. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.34 by 0.64 by 0.31 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static prop; the lever, the pin and the hose are modelled solid. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--46a18d51","cdnUrl":"https://cdn.3dassets.dev/assets/34270/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--46a18d51","thumbnailUrl":"https://cdn.3dassets.dev/assets/34270/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34270/v1/poster.webp","blurhash":"U6AS[7?b0000-2WA9$og0_IU}H?bl9xurEIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21052,"triangles":416,"vertices":907,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.14998840140480363,0,-0.1499827260642477],"max":[0.18998839306015336,0.6400033507546029,0.15998271652750454]},"sizeMeters":[0.34,0.64,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:27.830Z","updatedAt":"2026-09-11T07:29:27.955Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34270/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FireExtinguisherOnAStand07MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34270/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34270/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34270/v1/model.glb\" alt=\"Fire extinguisher on a stand, 0.7 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34270/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34270/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34271","slug":"woodworking-workshop-and-joinery-woodworking-workshop--26722f2b","title":"First aid box, 0.36 m (Woodworking Workshop and Joinery)","summary":"Green wall mounted first aid box with a raised cream cross, a charcoal catch and a hinged lid, fixed at working height beside the bench run.","description":"Green wall mounted first aid box with a raised cream cross, a charcoal catch and a hinged lid, fixed at working height beside the bench run. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.36 by 0.35 by 0.14 m (X by Y by Z). Metre units, +Y up, the working face toward +Z. The origin is the centre of the fixing face at the back, so it mounts flat on a wall panel. Static geometry; no rig, collision or navigation data. Static box; the lid is modelled shut. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--26722f2b","cdnUrl":"https://cdn.3dassets.dev/assets/34271/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--26722f2b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34271/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34271/v1/poster.webp","blurhash":"UDAn.6-;009F*HtkrYrvD6koyBVswhofM{In","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9056,"triangles":156,"vertices":362,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.18000000715255737,-0.20999999716877937,0.000007320717274987565],"max":[0.18000000715255737,0.140008550746093,0.13599786612817402]},"sizeMeters":[0.36,0.35,0.136],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:27.847Z","updatedAt":"2026-09-11T07:29:27.970Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34271/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FirstAidBox036MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34271/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34271/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34271/v1/model.glb\" alt=\"First aid box, 0.36 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34271/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34271/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34272","slug":"woodworking-workshop-and-joinery-woodworking-workshop--c2a4178a","title":"Safety sign set on a post, 1.7 m (Woodworking Workshop and Joinery)","summary":"Free standing safety sign post on a weighted base carrying three signs: a blue mandatory disc for eye and ear protection, a yellow warning triangle and a red prohibition disc, with blank faces and no artwork.","description":"Free standing safety sign post on a weighted base carrying three signs: a blue mandatory disc for eye and ear protection, a yellow warning triangle and a red prohibition disc, with blank faces and no artwork. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.56 by 1.59 by 0.48 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static sign; the signs are bolted to the post. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--c2a4178a","cdnUrl":"https://cdn.3dassets.dev/assets/34272/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--c2a4178a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34272/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34272/v1/poster.webp","blurhash":"U68|-KxY00E4x]xaMxE20#Rk}?xtDRRn.5${","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24948,"triangles":540,"vertices":1130,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.3181980550289154,-0.000010376292989913022,-0.23999999463558197],"max":[0.23999999463558197,1.588277494179852,0.23999999463558197]},"sizeMeters":[0.558,1.588,0.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:28.415Z","updatedAt":"2026-09-11T07:29:28.523Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34272/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SafetySignSetOnAPost17MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34272/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34272/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34272/v1/model.glb\" alt=\"Safety sign set on a post, 1.7 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34272/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34272/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34273","slug":"woodworking-workshop-and-joinery-woodworking-workshop--b38b5972","title":"Workshop bin, 0.9 m (Woodworking Workshop and Joinery)","summary":"Charcoal workshop bin on a moulded base with a yellow banded rim, a blank waste plate and a part filled load of offcuts and shavings, sized for a bench run or a machine bay.","description":"Charcoal workshop bin on a moulded base with a yellow banded rim, a blank waste plate and a part filled load of offcuts and shavings, sized for a bench run or a machine bay. Free 3D model for woodworking, joinery and workshop game scenes in Unity, Godot, Unreal, three.js and Blender. Overall 0.58 by 1.08 by 0.58 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0 with the origin on the footprint. Static geometry; no rig, collision or navigation data. Static bin; the lid is not modelled, because the bin is in use. No manufacturer names, badges or artwork anywhere: every plate and label is blank.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodworking-workshop--b38b5972","cdnUrl":"https://cdn.3dassets.dev/assets/34273/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodworking-workshop--b38b5972","thumbnailUrl":"https://cdn.3dassets.dev/assets/34273/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34273/v1/poster.webp","blurhash":"U48D^P-;009F},n%ElX94VNFyC$+03bF?aWC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":46972,"triangles":624,"vertices":1389,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.28999999165534973,0,-0.28999999165534973],"max":[0.28999999165534973,1.0789867639541626,0.28999999165534973]},"sizeMeters":[0.58,1.079,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:29.055Z","updatedAt":"2026-09-11T07:29:29.159Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34273/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkshopBin09MWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34273/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34273/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34273/v1/model.glb\" alt=\"Workshop bin, 0.9 m (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34273/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34273/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34274","slug":"woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","title":"Joiner's shop with machine bay and bench run (Woodworking Workshop and Joinery)","summary":"A working joinery shop 12 m square: concrete floor tiles with a marked walkway across the front, cream clad walls under a clerestory, and the timber delivery door in the right hand wall. The cabinet saw stands clear in the middle of the floor with the router table, the...","description":"A working joinery shop 12 m square: concrete floor tiles with a marked walkway across the front, cream clad walls under a clerestory, and the timber delivery door in the right hand wall. The cabinet saw stands clear in the middle of the floor with the router table, the spindle moulder and the mitre saw stand around it, the planer thicknesser and the band saw sit on their mobile bases along the left wall, and the extraction main runs the width of the shop overhead to the twin bag extractor in the back corner. The bench run works under the window with the tool board of chisels, saw, plane and squares above it and the mallet, chisels and a bench plane on the top, with the sharpening station, the tool chest and the clamp rack to hand. The lathe, the pillar drill and the disc and belt sander take the rest of the back wall, the timber and sheet racks stand against the right hand wall by the door, a door is being assembled on the assembly table in the middle, and the finishing corner at the front holds the finishing table, the drying rack and a finished door on its stand. The front wall is left off so the shop reads from above.","status":"published","url":"https://3dassets.dev/assets/woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/34274/v1/model.glb","downloadUrl":"https://3dassets.dev/download/woodworking-workshop-and-joinery-woodwor-0d5f0137-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/34274/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34274/v1/poster.webp","blurhash":"U4C?o+~V00%gI?IoxZxa0057^iI9%1?GR*bY","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1759844,"triangles":39552,"vertices":88996,"meshes":258,"materials":12,"textures":2,"animations":[],"boundingBox":{"min":[-6.139896847437972,-0.12006042798986698,-6.139896847437971],"max":[6.140012815800681,4.029883648393341,6]},"sizeMeters":[12.28,4.15,12.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T07:29:31.269Z","updatedAt":"2026-09-11T07:29:31.449Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34274/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JoinerSShopWithMachineBayAndBenchRunWoodworkingWorkshopAndJoinery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34274/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34274/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34274/v1/model.glb\" alt=\"Joiner's shop with machine bay and bench run (Woodworking Workshop and Joinery)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/34274/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/34274/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"woodworking-workshop-and-joinery","title":"Woodworking Workshop and Joinery","url":"https://3dassets.dev/demos/woodworking-workshop-and-joinery"}}}