{"data":{"id":"74","slug":"gym-and-fitness-studio","title":"Gym and Fitness Studio","summary":"Walk a commercial gym floor: cardio row along the mirrors, cable machines and a power rack, a free weight zone, a functional corner, and reception and lockers at the door.","url":"https://3dassets.dev/demos/gym-and-fitness-studio","coverUrl":"https://cdn.3dassets.dev/media/gym-and-fitness-studio-demo.png","featured":true,"pack":{"slug":"gym-and-fitness-studio","title":"Gym and Fitness Studio","url":"https://3dassets.dev/packs/gym-and-fitness-studio","summary":"Realistic gym equipment for a commercial fitness floor: free weights, cardio and resistance machines, functional training kit, mirrored studio modules and front-of-house.","assetCount":46,"totalBytes":7223336,"starterScene":{"slug":"gym-and-fitness-studio-commercial-gym-fl-4268a6ed-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/33602/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-commercial-gym-fl-4268a6ed-starter-scene","fileSize":2966580}},"placementCount":180,"assetCount":43,"spawn":{"position":[-0.8,0.025,3.9],"yaw":180},"publishedAt":"2026-09-11T02:57:00.713Z","updatedAt":"2026-09-11T02:57:00.713Z","description":"A commercial gym laid on the pack's own interlocking rubber tiles, with mirrored wall panels closing two sides.\n\n**What is placed.** Reception, towel shelf, water cooler and a locker bank at the entrance. A cardio row of treadmill, rowing machine, upright bike and spin bike along the mirrors. Lat pulldown, cable crossover, leg press and a full height power rack across the back. A free weight zone of dumbbell rack, kettlebell rack, plate tree, bumper stack, barbells and flat and adjustable benches. A functional corner with the punching bag, battle ropes, suspension frame, medicine balls, plyo boxes, yoga mats, foam rollers, towels and bottles left out on the floor between them.\n\n**What moves.** Locker doors swing, the rowing seat slides on its rail, the lat pulldown stack lifts, the treadmill and bike consoles tilt, the bike and spin flywheels turn, the pedestal fan blades spin and the punching bag rocks.\n\n**What does not move, and why.** The treadmill and rowing belts, the cable runs, the battle ropes and the suspension straps are static geometry. Every one of them is a belt, a cable or a rope, and none is reachable with the rigid node transforms this library uses. There is nobody training, because nothing here is skinned.","scene":{"version":1,"spawn":{"position":[-0.8,0.025,3.9],"yaw":180},"ground":{"style":"none"},"environment":{"preset":"room","wallHeight":3.6,"lampHeight":3.3,"shadows":true},"placements":[{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-5,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-4,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-3,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-2,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-1,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-1,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-1,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[-1,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[-1,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[-1,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[-1,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[-1,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[0,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[0,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[0,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[0,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[0,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[0,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[0,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[0,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[1,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[1,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[1,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[1,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[1,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[1,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[1,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","position":[1,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[2,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[3,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[4,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,-2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,-1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,0],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,1],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,3],"rotation":0},{"asset":"gym-and-fitness-studio-rubber-floor-tile-08784819","position":[5,0,4],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","position":[-4.8,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-3.5999999999999996,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-2.4,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-1.2000000000000002,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[0,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[1.2000000000000002,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[2.3999999999999995,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[3.6000000000000005,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","position":[4.8,0,-3.62],"rotation":0},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-5.45,0,-3],"rotation":90},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-5.45,0,-1.8],"rotation":90},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-5.45,0,-0.6000000000000001],"rotation":90},{"asset":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","position":[-5.45,0,0.5999999999999996],"rotation":90},{"asset":"gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","position":[-5.45,0,1.7999999999999998],"rotation":90},{"asset":"gym-and-fitness-studio-wall-clock-02816a94","position":[0,1.86,-3.6],"rotation":0},{"asset":"gym-and-fitness-studio-treadmill-b07460be","position":[-4.9,0,-2.3],"rotation":0},{"asset":"gym-and-fitness-studio-treadmill-b07460be","position":[-3.7,0,-2.3],"rotation":0},{"asset":"gym-and-fitness-studio-exercise-bike-upright-7f281ff6","position":[-2.6,0,-2.5],"rotation":0},{"asset":"gym-and-fitness-studio-rowing-machine-3d9e95df","position":[-1.5,0,-2.2],"rotation":0},{"asset":"gym-and-fitness-studio-towel-folded-337516d0","position":[-3.7,1.14,-3.1],"rotation":0},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[-2.35,0,-1.9],"rotation":0},{"asset":"gym-and-fitness-studio-cable-crossover-frame-1fb97f17","position":[0.9,0,-3],"rotation":0},{"asset":"gym-and-fitness-studio-power-rack-f687de8e","position":[4,0,-2.7],"rotation":0},{"asset":"gym-and-fitness-studio-lat-pulldown-station-89339d36","position":[2.9,0,-0.9],"rotation":0},{"asset":"gym-and-fitness-studio-leg-press-machine-a8871369","position":[4.6,0,0.9],"rotation":0},{"asset":"gym-and-fitness-studio-bumper-plate-stack-4cbca27c","position":[3.4,0,-3.3],"rotation":0},{"asset":"gym-and-fitness-studio-barbell-empty-49e6d762","position":[1.6,0,-1.9],"rotation":0},{"asset":"gym-and-fitness-studio-dumbbell-rack-loaded-89afa5b2","position":[2,0,1.5],"rotation":0},{"asset":"gym-and-fitness-studio-kettlebell-set-dc97b187","position":[3.9,0,2],"rotation":0},{"asset":"gym-and-fitness-studio-weight-plate-tree-e1ac8322","position":[4.9,0,2.9],"rotation":0},{"asset":"gym-and-fitness-studio-flat-bench-7fd01050","position":[0.9,0,1.9],"rotation":0},{"asset":"gym-and-fitness-studio-adjustable-bench-incline-af9360f6","position":[1.7,0,2.7],"rotation":0},{"asset":"gym-and-fitness-studio-adjustable-bench-4624177a","position":[2.9,0,3.2],"rotation":20.05},{"asset":"gym-and-fitness-studio-barbell-loaded-33928ba8","position":[0.1,0,3.5],"rotation":0},{"asset":"gym-and-fitness-studio-dumbbell-single-ad7c4a83","position":[0.9,0,2.7],"rotation":22.92},{"asset":"gym-and-fitness-studio-dumbbell-single-heavy-aea129fc","position":[1.25,0,2.75],"rotation":28.65},{"asset":"gym-and-fitness-studio-dumbbell-single-light-18066779","position":[3.1,0,1.6],"rotation":-17.19},{"asset":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","position":[2.6,0,2.4],"rotation":0},{"asset":"gym-and-fitness-studio-towel-folded-337516d0","position":[0.9,0.45,1.9],"rotation":0},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[1.45,0,1.85],"rotation":0},{"asset":"gym-and-fitness-studio-punching-bag-on-stand-301be432","position":[-4.7,0,2.5],"rotation":0},{"asset":"gym-and-fitness-studio-battle-ropes-c8b17275","position":[-3.1,0,1.3],"rotation":0},{"asset":"gym-and-fitness-studio-suspension-trainer-frame-1e63378f","position":[-4.4,0,0.3],"rotation":0},{"asset":"gym-and-fitness-studio-medicine-ball-rack-3aa9f5af","position":[-3.9,0,3.9],"rotation":0},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[-2.5,0,3.3],"rotation":0},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[-2.5,0,2.5],"rotation":14.32},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[-1.3,0,2.3],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","position":[-1,0,3.8],"rotation":0},{"asset":"gym-and-fitness-studio-foam-roller-3dcea971","position":[-1.7,0,1.5],"rotation":17.19},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[-1.75,0,2.9],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[-1.7,0,0.5],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[-0.9,0,0.5],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[-0.1,0,0.5],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[0.7,0,0.5],"rotation":0},{"asset":"gym-and-fitness-studio-foam-roller-3dcea971","position":[0.45,0,-0.2],"rotation":17.19},{"asset":"gym-and-fitness-studio-foam-roller-3dcea971","position":[-1.7,0,1.15],"rotation":28.65},{"asset":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","position":[-1.5,0,0.1],"rotation":0},{"asset":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","position":[-0.75,0,-0.35],"rotation":22.92},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[1.2,0,0.4],"rotation":11.46},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[0.3,0,-1.2],"rotation":0},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[1.05,0,-1.3],"rotation":16.04},{"asset":"gym-and-fitness-studio-medicine-ball-rack-3aa9f5af","position":[-2.6,0,-0.4],"rotation":0},{"asset":"gym-and-fitness-studio-dumbbell-single-ad7c4a83","position":[-0.5,0,1.1],"rotation":34.38},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[-1.2,0,0.9],"rotation":0},{"asset":"gym-and-fitness-studio-towel-folded-337516d0","position":[1.7,0.46,2.7],"rotation":0},{"asset":"gym-and-fitness-studio-towel-folded-337516d0","position":[2.9,0.46,3.2],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[4.4,0,-0.9],"rotation":90},{"asset":"gym-and-fitness-studio-yoga-mat-flat-ea182435","position":[4.4,0,-1.6],"rotation":90},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[3.9,0,-0.9],"rotation":11.46},{"asset":"gym-and-fitness-studio-plyo-box-b65bb5f6","position":[3.9,0,-1.55],"rotation":8.59},{"asset":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","position":[3.5,0,0.2],"rotation":0},{"asset":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","position":[3.74,0,0.12],"rotation":28.65},{"asset":"gym-and-fitness-studio-foam-roller-3dcea971","position":[3.2,0,1.1],"rotation":28.65},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[3.3,0,0.55],"rotation":0},{"asset":"gym-and-fitness-studio-dumbbell-single-ad7c4a83","position":[0.45,0,1.5],"rotation":68.75},{"asset":"gym-and-fitness-studio-dumbbell-single-heavy-aea129fc","position":[1.35,0,1.55],"rotation":74.48},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[1.05,0,2.55],"rotation":0},{"asset":"gym-and-fitness-studio-locker-bank-44c1032e","position":[-5,0,4.2],"rotation":0},{"asset":"gym-and-fitness-studio-locker-bank-open-door-bd2cea7d","position":[-3.8,0,4.2],"rotation":0},{"asset":"gym-and-fitness-studio-changing-bench-b451f89f","position":[-2.5,0,3.9],"rotation":0},{"asset":"gym-and-fitness-studio-gym-signage-board-b8d3bcba","position":[-1.2,0,4.2],"rotation":0},{"asset":"gym-and-fitness-studio-water-cooler-ec5c67da","position":[0.5,0,4.25],"rotation":0},{"asset":"gym-and-fitness-studio-reception-desk-924c4679","position":[2.5,0,4.15],"rotation":0},{"asset":"gym-and-fitness-studio-towel-shelf-19b657a9","position":[4.3,0,4.2],"rotation":0},{"asset":"gym-and-fitness-studio-standing-fan-4a03c434","position":[5.1,0,3.1],"rotation":0},{"asset":"gym-and-fitness-studio-towel-folded-337516d0","position":[-2.5,0.44,3.9],"rotation":0},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[2.1,1.12,4.05],"rotation":0},{"asset":"gym-and-fitness-studio-towel-shelf-19b657a9","position":[-2.3,0,4.3],"rotation":0},{"asset":"gym-and-fitness-studio-standing-fan-4a03c434","position":[-0.2,0,4.35],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","position":[-2.85,0,4.35],"rotation":0},{"asset":"gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","position":[-2.85,0.153,4.35],"rotation":5.73},{"asset":"gym-and-fitness-studio-water-bottle-97b8b284","position":[-2.9,0.44,3.9],"rotation":0}],"points":[{"position":[2.5,0.025,3.2],"title":"Front of house","text":"The reception desk, the towel shelf, the water cooler and the locker bank make the entrance. A locker door swings open as you pass it.","asset":"gym-and-fitness-studio-reception-desk-924c4679"},{"position":[2,0.025,0.6],"title":"Free weights","text":"A three tier rack of hex dumbbells, a kettlebell rack, a loaded plate tree, a bumper stack and an Olympic barbell, with flat and adjustable benches to use them on.","asset":"gym-and-fitness-studio-dumbbell-rack-loaded-89afa5b2"},{"position":[-2.8,0.025,-1.6],"title":"Cardio row","text":"Treadmill, rowing machine, upright bike and spin bike stand along the mirrored wall. The flywheels turn and the rowing seat slides on its rail as you come near.","asset":"gym-and-fitness-studio-rowing-machine-3d9e95df"},{"position":[1.6,0.025,-1.9],"title":"Cable machines","text":"A lat pulldown with a moving weight stack and a cable crossover frame. The cables themselves are static geometry: a rigid node transform cannot make a running cable behave.","asset":"gym-and-fitness-studio-lat-pulldown-station-89339d36"},{"position":[4,0.025,-1.6],"title":"Power rack","text":"A full height rack with safeties and a loaded bar, the tallest piece in the room and the one that sets the ceiling height for a gym interior.","asset":"gym-and-fitness-studio-power-rack-f687de8e"},{"position":[-3.6,0.025,1.8],"title":"Functional corner","text":"Punching bag, battle ropes, suspension frame, medicine balls, plyo boxes, mats and rollers fill the open floor, which is what a gym floor really looks like between the machines.","asset":"gym-and-fitness-studio-punching-bag-on-stand-301be432"}],"poster":{"position":[-2,2.4,1.9],"lookAt":[2,0.5,1.5]}},"bounds":{"min":[-7.699948930422387,-0.000038806852346078,-5.690010835611082],"max":[7.514999985694885,4.420005504833308,6.606029853106425]},"assets":[{"id":"33589","slug":"gym-and-fitness-studio-rubber-floor-tile-08784819","title":"Interlocking Rubber Floor Tile (Gym and Fitness Studio)","summary":"A 1 m interlocking mid charcoal rubber gym tile, 22 mm thick, with three teeth on each of its +X and +Z edges and the matching channel on the other two, so a run of them tiles on a 1 m grid. The wearing face carries a moulded stud pattern.","description":"A 1 m interlocking mid charcoal rubber gym tile, 22 mm thick, with three teeth on each of its +X and +Z edges and the matching channel on the other two, so a run of them tiles on a 1 m grid. The wearing face carries a moulded stud pattern. Ports tile-left, tile-right, tile-front and tile-back sit at the tile edge midpoints at half thickness. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-rubber-floor-tile-08784819","cdnUrl":"https://cdn.3dassets.dev/assets/33589/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-rubber-floor-tile-08784819","thumbnailUrl":"https://cdn.3dassets.dev/assets/33589/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33589/v1/poster.webp","blurhash":"U5A^RT%N00ax-;a#Rjoe00IU~qWB4noKogRk","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":71308,"triangles":1680,"vertices":3749,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.48500001430511475,-0.00001844112972583696,-0.48500001430511475],"max":[0.5149999856948853,0.024518440488975904,0.5149999856948853]},"sizeMeters":[1,0.025,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:52.801Z","updatedAt":"2026-09-11T02:54:52.986Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33589/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InterlockingRubberFloorTileGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33589/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33589/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33589/v1/model.glb\" alt=\"Interlocking Rubber Floor Tile (Gym and Fitness Studio)\" 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/33589/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/33589/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33590","slug":"gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","title":"Interlocking Rubber Floor Tile, Accent (Gym and Fitness Studio)","summary":"The same 1 m interlocking rubber tile moulded in the studio accent colour, for marking out a lifting platform or a functional zone inside a grey floor.","description":"The same 1 m interlocking rubber tile moulded in the studio accent colour, for marking out a lifting platform or a functional zone inside a grey floor. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","cdnUrl":"https://cdn.3dassets.dev/assets/33590/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-rubber-floor-tile-accent-c7d346c3","thumbnailUrl":"https://cdn.3dassets.dev/assets/33590/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33590/v1/poster.webp","blurhash":"UAEduC%10LX8$*j@S1f700NG}tV[9[e=njW.","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":71336,"triangles":1680,"vertices":3749,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.48500001430511475,-0.00001844112972583696,-0.48500001430511475],"max":[0.5149999856948853,0.024518440488975904,0.5149999856948853]},"sizeMeters":[1,0.025,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:53.337Z","updatedAt":"2026-09-11T02:54:53.540Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33590/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InterlockingRubberFloorTileAccentGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33590/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33590/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33590/v1/model.glb\" alt=\"Interlocking Rubber Floor Tile, Accent (Gym and Fitness Studio)\" 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/33590/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/33590/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33592","slug":"gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","title":"Mirrored Wall Panel with Barre (Gym and Fitness Studio)","summary":"The same mirrored wall module with a timber studio barre on two alloy brackets at 1 m, for the stretch and mobility end of a studio wall.","description":"The same mirrored wall module with a timber studio barre on two alloy brackets at 1 m, for the stretch and mobility end of a studio wall. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","cdnUrl":"https://cdn.3dassets.dev/assets/33592/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-mirror-wall-panel-with-barre-39d53462","thumbnailUrl":"https://cdn.3dassets.dev/assets/33592/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33592/v1/poster.webp","blurhash":"U9D0Gpxu00IU?bt7D%IU00Rk~qt6xuofM{Ri","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"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":31400,"triangles":656,"vertices":1457,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5980041132428173,0,-0.07001083561108115],"max":[0.5980041132428173,2.4000000953674316,0.17803210723774202]},"sizeMeters":[1.196,2.4,0.248],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:54.171Z","updatedAt":"2026-09-11T02:54:54.268Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33592/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MirroredWallPanelWithBarreGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33592/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33592/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33592/v1/model.glb\" alt=\"Mirrored Wall Panel with Barre (Gym and Fitness Studio)\" 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/33592/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/33592/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33591","slug":"gym-and-fitness-studio-mirror-wall-panel-1f6389f5","title":"Mirrored Wall Panel Module (Gym and Fitness Studio)","summary":"A 1.2 m by 2.4 m mirrored wall panel on a backing board, with slim alloy stiles, a kick rail along the floor and a head rail. Panels butt on the 1.2 m module through run-left and run-right, so a run tiles along X with a 4 mm shadow gap at each joint.","description":"A 1.2 m by 2.4 m mirrored wall panel on a backing board, with slim alloy stiles, a kick rail along the floor and a head rail. Panels butt on the 1.2 m module through run-left and run-right, so a run tiles along X with a 4 mm shadow gap at each joint. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-mirror-wall-panel-1f6389f5","cdnUrl":"https://cdn.3dassets.dev/assets/33591/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-mirror-wall-panel-1f6389f5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33591/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33591/v1/poster.webp","blurhash":"UBE3F@%M009Y-;xuMyD%00WB~qt7xut7RjRP","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"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":18600,"triangles":384,"vertices":867,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5980041132428173,0,-0.07001083561108115],"max":[0.5980041132428173,2.4000000953674316,0.02094186288533855]},"sizeMeters":[1.196,2.4,0.091],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:53.621Z","updatedAt":"2026-09-11T02:54:53.722Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33591/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MirroredWallPanelModuleGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33591/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33591/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33591/v1/model.glb\" alt=\"Mirrored Wall Panel Module (Gym and Fitness Studio)\" 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/33591/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/33591/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33599","slug":"gym-and-fitness-studio-wall-clock-02816a94","title":"Gym Wall Clock (Gym and Fitness Studio)","summary":"A 340 mm wall clock with a deep steel bezel, a plain dial, hour marks and a red sweep second hand. It is modelled resting on y=0 for the contact sheet and hangs from the back of its bezel on a wall.","description":"A 340 mm wall clock with a deep steel bezel, a plain dial, hour marks and a red sweep second hand. It is modelled resting on y=0 for the contact sheet and hangs from the back of its bezel on a wall. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-wall-clock-02816a94","cdnUrl":"https://cdn.3dassets.dev/assets/33599/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-wall-clock-02816a94","thumbnailUrl":"https://cdn.3dassets.dev/assets/33599/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33599/v1/poster.webp","blurhash":"UFCGS,%M009Z%MxuRjIU00M|~q%2RPM{Rj%M","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":51684,"triangles":1242,"vertices":2535,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.17000000178813934,0.000005661710452381508,-0.000004364979612921788],"max":[0.17000000178813934,0.33751535488729545,0.06250089926639874]},"sizeMeters":[0.34,0.338,0.063],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T02:54:57.710Z","updatedAt":"2026-09-11T03:56:51.773Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33599/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GymWallClockGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33599/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33599/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33599/v1/model.glb\" alt=\"Gym Wall Clock (Gym and Fitness Studio)\" 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/33599/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/33599/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33568","slug":"gym-and-fitness-studio-treadmill-b07460be","title":"Commercial Treadmill (Gym and Fitness Studio)","summary":"A 2.05 m commercial treadmill: a cushioned running deck between side rails, a motor cowl, tubular uprights with rubber-gripped handrails and a tilting console head on its mount. The belt itself is fixed geometry, because a running belt is a loop no rigid node transform can drive.","description":"A 2.05 m commercial treadmill: a cushioned running deck between side rails, a motor cowl, tubular uprights with rubber-gripped handrails and a tilting console head on its mount. The belt itself is fixed geometry, because a running belt is a loop no rigid node transform can drive. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: console. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-treadmill-b07460be","cdnUrl":"https://cdn.3dassets.dev/assets/33568/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-treadmill-b07460be","thumbnailUrl":"https://cdn.3dassets.dev/assets/33568/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33568/v1/poster.webp","blurhash":"U99tM.D%4T?b9FD%t7%N00-;%MIU~qogITj=","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":60636,"triangles":1296,"vertices":2878,"meshes":8,"materials":7,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.45373774389397414,-0.0000017916064428691314,-1.0450101998155232],"max":[0.45373774389397414,1.4235250086217113,1.024999976158142]},"sizeMeters":[0.907,1.424,2.07],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:43.019Z","updatedAt":"2026-09-11T02:54:43.127Z","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/33568/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 CommercialTreadmillGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33568/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/33568/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33568/v1/model.glb\" alt=\"Commercial Treadmill (Gym and Fitness Studio)\" 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/33568/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/33568/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33570","slug":"gym-and-fitness-studio-exercise-bike-upright-7f281ff6","title":"Upright Exercise Bike (Gym and Fitness Studio)","summary":"An upright exercise bike on stabiliser feet: a shrouded flywheel, a padded saddle on an adjustable post, swept handlebars with rubber grips, a crank set with pedals and a tilting console. The flywheel spins and the console tips; the drive belt inside the shroud is fixed geometry.","description":"An upright exercise bike on stabiliser feet: a shrouded flywheel, a padded saddle on an adjustable post, swept handlebars with rubber grips, a crank set with pedals and a tilting console. The flywheel spins and the console tips; the drive belt inside the shroud is fixed geometry. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: flywheel, console. Rigid node-transform clips: spin and tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-exercise-bike-upright-7f281ff6","cdnUrl":"https://cdn.3dassets.dev/assets/33570/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-exercise-bike-upright-7f281ff6","thumbnailUrl":"https://cdn.3dassets.dev/assets/33570/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33570/v1/poster.webp","blurhash":"U37w~T-;00M_NMD%D$?b00xZ_4M|jDoHbbo#","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":93008,"triangles":2100,"vertices":4480,"meshes":10,"materials":7,"textures":0,"animations":["spin","tilt"],"boundingBox":{"min":[-0.26998718253849563,0,-0.6399999856948853],"max":[0.26998718253849563,1.2579129596769405,0.4750198586944382]},"sizeMeters":[0.54,1.258,1.115],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:43.839Z","updatedAt":"2026-09-11T02:54:44.042Z","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/33570/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 UprightExerciseBikeGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33570/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/33570/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33570/v1/model.glb\" alt=\"Upright Exercise Bike (Gym and Fitness Studio)\" 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/33570/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/33570/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33569","slug":"gym-and-fitness-studio-rowing-machine-3d9e95df","title":"Air Rowing Machine (Gym and Fitness Studio)","summary":"A 2.4 m air rower: a caged flywheel on a front tower, an aluminium monorail, a padded seat on rollers and pivoting footplates. The seat slides and the flywheel spins; the chain and handle strap are fixed geometry.","description":"A 2.4 m air rower: a caged flywheel on a front tower, an aluminium monorail, a padded seat on rollers and pivoting footplates. The seat slides and the flywheel spins; the chain and handle strap are fixed geometry. A flexible run is not reachable with a rigid node transform, so the chain is modelled where it lies. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: flywheel, row-seat. Rigid node-transform clips: open, close and spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-rowing-machine-3d9e95df","cdnUrl":"https://cdn.3dassets.dev/assets/33569/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-rowing-machine-3d9e95df","thumbnailUrl":"https://cdn.3dassets.dev/assets/33569/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33569/v1/poster.webp","blurhash":"U37UJ0WX4-?b_24n9Y%M00M{?cWB00~q~qE2","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":107976,"triangles":2448,"vertices":5250,"meshes":10,"materials":6,"textures":0,"animations":["open","close","spin"],"boundingBox":{"min":[-0.24993439085530775,-0.000024528796575273848,-1.2100000381469727],"max":[0.24993439085530775,0.6600051985707228,1.1200000047683716]},"sizeMeters":[0.5,0.66,2.33],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:43.568Z","updatedAt":"2026-09-11T02:54:43.667Z","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/33569/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 AirRowingMachineGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33569/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/33569/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33569/v1/model.glb\" alt=\"Air Rowing Machine (Gym and Fitness Studio)\" 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/33569/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/33569/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33586","slug":"gym-and-fitness-studio-towel-folded-337516d0","title":"Folded Gym Towel (Gym and Fitness Studio)","summary":"A folded gym towel, 340 by 240 mm and three layers deep, with the layers offset a few millimetres so the stack reads as cloth rather than a block.","description":"A folded gym towel, 340 by 240 mm and three layers deep, with the layers offset a few millimetres so the stack reads as cloth rather than a block. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-towel-folded-337516d0","cdnUrl":"https://cdn.3dassets.dev/assets/33586/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-towel-folded-337516d0","thumbnailUrl":"https://cdn.3dassets.dev/assets/33586/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33586/v1/poster.webp","blurhash":"U6Bg*p.900WVyDyDn$R500IA?^RiMcHrNGt7","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":14196,"triangles":288,"vertices":651,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.17299999296665192,-0.000004363620786370509,-0.12000182711349022],"max":[0.1679999977350235,0.06200436260750741,0.12000182711349022]},"sizeMeters":[0.341,0.062,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:51.572Z","updatedAt":"2026-09-11T02:54:51.676Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33586/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldedGymTowelGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33586/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33586/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33586/v1/model.glb\" alt=\"Folded Gym Towel (Gym and Fitness Studio)\" 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/33586/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/33586/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33588","slug":"gym-and-fitness-studio-water-bottle-97b8b284","title":"Sports Water Bottle (Gym and Fitness Studio)","summary":"A 750 ml sports water bottle, 290 mm tall, with a moulded waist, a printed band and a flip-top cap.","description":"A 750 ml sports water bottle, 290 mm tall, with a moulded waist, a printed band and a flip-top cap. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-water-bottle-97b8b284","cdnUrl":"https://cdn.3dassets.dev/assets/33588/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-water-bottle-97b8b284","thumbnailUrl":"https://cdn.3dassets.dev/assets/33588/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33588/v1/poster.webp","blurhash":"U8B.l.-p000K9uV[-UtQ0fNG}s%1YQozmRaJ","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":15956,"triangles":340,"vertices":697,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.042500000447034836,0,-0.042500000447034836],"max":[0.042500000447034836,0.2919989303545687,0.042500000447034836]},"sizeMeters":[0.085,0.292,0.085],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:52.531Z","updatedAt":"2026-09-11T02:54:52.649Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33588/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SportsWaterBottleGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33588/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33588/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33588/v1/model.glb\" alt=\"Sports Water Bottle (Gym and Fitness Studio)\" 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/33588/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/33588/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33578","slug":"gym-and-fitness-studio-cable-crossover-frame-1fb97f17","title":"Cable Crossover Frame (Gym and Fitness Studio)","summary":"A 3.4 m cable crossover frame: two floor-mounted towers on a spanning beam, four carriage pulleys on their tracks with parked handles, and a knurled chin-up bar slung under the beam.","description":"A 3.4 m cable crossover frame: two floor-mounted towers on a spanning beam, four carriage pulleys on their tracks with parked handles, and a knurled chin-up bar slung under the beam. The frame is static: a cable bending round a pulley cannot be driven by a rigid node transform. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-cable-crossover-frame-1fb97f17","cdnUrl":"https://cdn.3dassets.dev/assets/33578/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-cable-crossover-frame-1fb97f17","thumbnailUrl":"https://cdn.3dassets.dev/assets/33578/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33578/v1/poster.webp","blurhash":"U36*j#fAD$x[_4?c8_D$D$xaIUInInx]?bMx","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":130960,"triangles":3192,"vertices":6703,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.878499984741211,-0.000005428539363139251,-0.5501087704208927],"max":[1.7699999809265137,2.4200055048333082,0.5501087704208927]},"sizeMeters":[3.648,2.42,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:48.047Z","updatedAt":"2026-09-11T02:54:48.231Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33578/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableCrossoverFrameGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33578/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33578/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33578/v1/model.glb\" alt=\"Cable Crossover Frame (Gym and Fitness Studio)\" 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/33578/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/33578/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33574","slug":"gym-and-fitness-studio-power-rack-f687de8e","title":"Power Rack (Gym and Fitness Studio)","summary":"A 2.3 m four-post power rack with numbered hole patterns, a knurled pull-up bar across the front, two J-hooks, full-length safety arms and a loaded Olympic bar racked at working height. Static geometry: the J-hooks and safeties are modelled where a lifter would set them.","description":"A 2.3 m four-post power rack with numbered hole patterns, a knurled pull-up bar across the front, two J-hooks, full-length safety arms and a loaded Olympic bar racked at working height. Static geometry: the J-hooks and safeties are modelled where a lifter would set them. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-power-rack-f687de8e","cdnUrl":"https://cdn.3dassets.dev/assets/33574/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-power-rack-f687de8e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33574/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33574/v1/poster.webp","blurhash":"U28D|h?a00My.SofIAWU00D*=e?a:*E15k-U","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":190524,"triangles":4760,"vertices":9848,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.0199999809265137,0,-0.699999988079071],"max":[1.0199999809265137,2.319999933242798,0.7949995457635836]},"sizeMeters":[2.04,2.32,1.495],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:46.709Z","updatedAt":"2026-09-11T02:54:46.816Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33574/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PowerRackGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33574/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33574/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33574/v1/model.glb\" alt=\"Power Rack (Gym and Fitness Studio)\" 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/33574/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/33574/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33572","slug":"gym-and-fitness-studio-lat-pulldown-station-89339d36","title":"Lat Pulldown Station (Gym and Fitness Studio)","summary":"A 2.2 m lat pulldown with a twelve-plate selectorised stack on guide rods, a cantilevered top pulley, an angled lat bar, a padded seat and adjustable thigh pads. The stack lifts and returns on its rods; the cable is fixed geometry, because a cable that bends is not a rigid node.","description":"A 2.2 m lat pulldown with a twelve-plate selectorised stack on guide rods, a cantilevered top pulley, an angled lat bar, a padded seat and adjustable thigh pads. The stack lifts and returns on its rods; the cable is fixed geometry, because a cable that bends is not a rigid node. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: weight-stack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-lat-pulldown-station-89339d36","cdnUrl":"https://cdn.3dassets.dev/assets/33572/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-lat-pulldown-station-89339d36","thumbnailUrl":"https://cdn.3dassets.dev/assets/33572/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33572/v1/poster.webp","blurhash":"U26a^+W@00nfr=IAR%?c00IT?c?c?wNIIA-p","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":139952,"triangles":3256,"vertices":7092,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5681139968842005,0,-0.9950368200323422],"max":[0.5681139968842005,2.25,0.5500069701061334]},"sizeMeters":[1.136,2.25,1.545],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:45.749Z","updatedAt":"2026-09-11T02:54:45.843Z","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/33572/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 LatPulldownStationGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33572/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/33572/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33572/v1/model.glb\" alt=\"Lat Pulldown Station (Gym and Fitness Studio)\" 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/33572/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/33572/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33573","slug":"gym-and-fitness-studio-leg-press-machine-a8871369","title":"Forty-Five Degree Leg Press (Gym and Fitness Studio)","summary":"A plate-loaded 45 degree leg press: a raked twin-rail carriage with a ribbed footplate, a reclined back pad and seat, shoulder rests and two loading horns carrying 20 kg bumper plates.","description":"A plate-loaded 45 degree leg press: a raked twin-rail carriage with a ribbed footplate, a reclined back pad and seat, shoulder rests and two loading horns carrying 20 kg bumper plates. The sled is parked at the bottom of its travel and is static, because its stroke runs on a raked axis this rig does not follow. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-leg-press-machine-a8871369","cdnUrl":"https://cdn.3dassets.dev/assets/33573/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-leg-press-machine-a8871369","thumbnailUrl":"https://cdn.3dassets.dev/assets/33573/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33573/v1/poster.webp","blurhash":"U47-c:_3004nMxM_NFoz00IU_4%MR:o#-;xZ","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":160224,"triangles":3944,"vertices":8205,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.6299999952316284,-0.000008890936742611544,-1],"max":[0.6299999952316284,1.1412612894276484,1]},"sizeMeters":[1.26,1.141,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:46.355Z","updatedAt":"2026-09-11T02:54:46.456Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33573/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FortyFiveDegreeLegPressGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33573/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33573/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33573/v1/model.glb\" alt=\"Forty-Five Degree Leg Press (Gym and Fitness Studio)\" 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/33573/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/33573/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33567","slug":"gym-and-fitness-studio-bumper-plate-stack-4cbca27c","title":"Bumper Plate Stack (Gym and Fitness Studio)","summary":"Six bumper plates stacked flat on the floor, three 20 kg, two 10 kg and one 5 kg, each turned a little against the one below so the stack reads as loose rather than machined.","description":"Six bumper plates stacked flat on the floor, three 20 kg, two 10 kg and one 5 kg, each turned a little against the one below so the stack reads as loose rather than machined. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-bumper-plate-stack-4cbca27c","cdnUrl":"https://cdn.3dassets.dev/assets/33567/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-bumper-plate-stack-4cbca27c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33567/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33567/v1/poster.webp","blurhash":"U69P[[Xm00#+=HR*Egxa00nN}[Or0zs.^PNH","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":90404,"triangles":2400,"vertices":4572,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.22499999403953552,0.000002083821001586106,-0.22499999403953552],"max":[0.22499999403953552,0.3624850311567379,0.22499999403953552]},"sizeMeters":[0.45,0.362,0.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:41.799Z","updatedAt":"2026-09-11T02:54:41.996Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33567/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BumperPlateStackGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33567/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33567/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33567/v1/model.glb\" alt=\"Bumper Plate Stack (Gym and Fitness Studio)\" 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/33567/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/33567/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33562","slug":"gym-and-fitness-studio-barbell-empty-49e6d762","title":"Olympic Barbell, Bare (Gym and Fitness Studio)","summary":"The same 2.2 m Olympic barbell with the plates and collars stripped off, for racking on a power rack or loading in engine.","description":"The same 2.2 m Olympic barbell with the plates and collars stripped off, for racking on a power rack or loading in engine. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-barbell-empty-49e6d762","cdnUrl":"https://cdn.3dassets.dev/assets/33562/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-barbell-empty-49e6d762","thumbnailUrl":"https://cdn.3dassets.dev/assets/33562/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33562/v1/poster.webp","blurhash":"U25}pxae9Fofxu_3WBM{00xu_3V@IU00xu?b","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":15920,"triangles":384,"vertices":776,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-1.4900000095367432,0.00008102685569394419,-0.02437330256391169],"max":[1.4900000095367432,0.049918973889364116,0.02437330256391169]},"sizeMeters":[2.98,0.05,0.049],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:39.950Z","updatedAt":"2026-09-11T02:54:40.075Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33562/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OlympicBarbellBareGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33562/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33562/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33562/v1/model.glb\" alt=\"Olympic Barbell, Bare (Gym and Fitness Studio)\" 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/33562/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/33562/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33561","slug":"gym-and-fitness-studio-dumbbell-rack-loaded-89afa5b2","title":"Three-Tier Dumbbell Rack, Loaded (Gym and Fitness Studio)","summary":"A 1.9 m three-tier A-frame dumbbell rack loaded with twelve rubber hex dumbbells on saddled trays, with rubber cradle strips, splayed end frames on levelling feet and weight labels along the front rail.","description":"A 1.9 m three-tier A-frame dumbbell rack loaded with twelve rubber hex dumbbells on saddled trays, with rubber cradle strips, splayed end frames on levelling feet and weight labels along the front rail. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-dumbbell-rack-loaded-89afa5b2","cdnUrl":"https://cdn.3dassets.dev/assets/33561/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-dumbbell-rack-loaded-89afa5b2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33561/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33561/v1/poster.webp","blurhash":"U47w.|~WH=%3xY?HjcIA009Yx]IoIVE1o#t8","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":227056,"triangles":5728,"vertices":11807,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9789999723434448,0.000007018753886089968,-0.5512445157188431],"max":[0.9789999723434448,1.145993008902669,0.6020133450109354]},"sizeMeters":[1.958,1.146,1.153],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:39.344Z","updatedAt":"2026-09-11T02:54:39.448Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33561/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeTierDumbbellRackLoadedGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33561/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33561/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33561/v1/model.glb\" alt=\"Three-Tier Dumbbell Rack, Loaded (Gym and Fitness Studio)\" 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/33561/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/33561/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33565","slug":"gym-and-fitness-studio-kettlebell-set-dc97b187","title":"Kettlebell Rack, Six Bells (Gym and Fitness Studio)","summary":"A 1.1 m two-tier kettlebell rack carrying six cast bells from 12 to 32 kg on rubber-lined shelves, on a raked tubular frame with levelling feet.","description":"A 1.1 m two-tier kettlebell rack carrying six cast bells from 12 to 32 kg on rubber-lined shelves, on a raked tubular frame with levelling feet. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-kettlebell-set-dc97b187","cdnUrl":"https://cdn.3dassets.dev/assets/33565/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-kettlebell-set-dc97b187","thumbnailUrl":"https://cdn.3dassets.dev/assets/33565/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33565/v1/poster.webp","blurhash":"U184rY_400~q-;_N4T000000WYD$00r;~qMx","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":129152,"triangles":3056,"vertices":6796,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5600000023841858,0.00003140493006370537,-0.3199710138093222],"max":[0.5600000023841858,0.9319956401250546,0.379971016193508]},"sizeMeters":[1.12,0.932,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:41.213Z","updatedAt":"2026-09-11T02:54:41.316Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33565/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function KettlebellRackSixBellsGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33565/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33565/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33565/v1/model.glb\" alt=\"Kettlebell Rack, Six Bells (Gym and Fitness Studio)\" 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/33565/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/33565/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33566","slug":"gym-and-fitness-studio-weight-plate-tree-e1ac8322","title":"Weight Plate Tree, Loaded (Gym and Fitness Studio)","summary":"A 1.4 m vertical plate tree on a three-legged base with six horns, loaded with four 20 kg bumper plates and eight smaller plates, the horns staggered up the column so plates clear each other.","description":"A 1.4 m vertical plate tree on a three-legged base with six horns, loaded with four 20 kg bumper plates and eight smaller plates, the horns staggered up the column so plates clear each other. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-weight-plate-tree-e1ac8322","cdnUrl":"https://cdn.3dassets.dev/assets/33566/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-weight-plate-tree-e1ac8322","thumbnailUrl":"https://cdn.3dassets.dev/assets/33566/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33566/v1/poster.webp","blurhash":"U57ArTX800i^+vR*Fwxa5PjY=|bI0|ni}sX8","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":200328,"triangles":5352,"vertices":10332,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.49499132163925624,0,-0.43607151977755026],"max":[0.30170850643304487,1.4556976556777954,0.43607151977755026]},"sizeMeters":[0.797,1.456,0.872],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:42.655Z","updatedAt":"2026-09-11T02:54:42.771Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33566/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeightPlateTreeLoadedGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33566/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33566/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33566/v1/model.glb\" alt=\"Weight Plate Tree, Loaded (Gym and Fitness Studio)\" 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/33566/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/33566/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33575","slug":"gym-and-fitness-studio-flat-bench-7fd01050","title":"Flat Utility Bench (Gym and Fitness Studio)","summary":"A 1.24 m flat utility bench: a crowned vinyl pad on a welded tubular tripod frame with rubber feet, at the 450 mm seat height a dumbbell or barbell press is worked from.","description":"A 1.24 m flat utility bench: a crowned vinyl pad on a welded tubular tripod frame with rubber feet, at the 450 mm seat height a dumbbell or barbell press is worked from. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-flat-bench-7fd01050","cdnUrl":"https://cdn.3dassets.dev/assets/33575/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-flat-bench-7fd01050","thumbnailUrl":"https://cdn.3dassets.dev/assets/33575/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33575/v1/poster.webp","blurhash":"U67d|HozD$ae?wD%Mx%M00D$s;t88^xt%hV[","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":49772,"triangles":1100,"vertices":2475,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2299705564213559,7.012728527218404e-7,-0.621999979019165],"max":[0.2299705564213559,0.45796919691135907,0.621999979019165]},"sizeMeters":[0.46,0.458,1.244],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:46.151Z","updatedAt":"2026-09-11T02:54:46.272Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33575/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FlatUtilityBenchGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33575/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33575/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33575/v1/model.glb\" alt=\"Flat Utility Bench (Gym and Fitness Studio)\" 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/33575/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/33575/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33577","slug":"gym-and-fitness-studio-adjustable-bench-incline-af9360f6","title":"Adjustable Bench, Inclined (Gym and Fitness Studio)","summary":"The same adjustable bench with its back section set to a 45 degree incline on the ladder bracket. The incline is baked into the geometry, so the model needs no rig to read as adjusted.","description":"The same adjustable bench with its back section set to a 45 degree incline on the ladder bracket. The incline is baked into the geometry, so the model needs no rig to read as adjusted. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-adjustable-bench-incline-af9360f6","cdnUrl":"https://cdn.3dassets.dev/assets/33577/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-adjustable-bench-incline-af9360f6","thumbnailUrl":"https://cdn.3dassets.dev/assets/33577/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33577/v1/poster.webp","blurhash":"U57K;-?d9EDiNZInMxs.00V?%NR-IAt6-=og","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":81308,"triangles":1840,"vertices":4103,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.2300218185623357,-5.191171055050209e-7,-0.44999998807907104],"max":[0.2300218185623357,0.7497586199755282,0.5920000076293945]},"sizeMeters":[0.46,0.75,1.042],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:47.801Z","updatedAt":"2026-09-11T02:54:47.908Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33577/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AdjustableBenchInclinedGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33577/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33577/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33577/v1/model.glb\" alt=\"Adjustable Bench, Inclined (Gym and Fitness Studio)\" 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/33577/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/33577/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33576","slug":"gym-and-fitness-studio-adjustable-bench-4624177a","title":"Adjustable Bench, Flat (Gym and Fitness Studio)","summary":"An adjustable weight bench with the back section laid flat: a two-piece vinyl pad on a tubular frame with a notched ladder bracket under the back, rubber feet and a 460 mm seat height.","description":"An adjustable weight bench with the back section laid flat: a two-piece vinyl pad on a tubular frame with a notched ladder bracket under the back, rubber feet and a 460 mm seat height. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-adjustable-bench-4624177a","cdnUrl":"https://cdn.3dassets.dev/assets/33576/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-adjustable-bench-4624177a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33576/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33576/v1/poster.webp","blurhash":"U68N%^?bISjc.AD$D$%N00I9NFbd8^ox.8t8","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":81496,"triangles":1840,"vertices":4121,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.2300218185623357,-5.191171055050209e-7,-0.44999998807907104],"max":[0.2300218185623357,0.48799701050211763,0.5920000076293945]},"sizeMeters":[0.46,0.488,1.042],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:47.395Z","updatedAt":"2026-09-11T02:54:47.506Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33576/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AdjustableBenchFlatGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33576/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33576/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33576/v1/model.glb\" alt=\"Adjustable Bench, Flat (Gym and Fitness Studio)\" 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/33576/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/33576/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33563","slug":"gym-and-fitness-studio-barbell-loaded-33928ba8","title":"Olympic Barbell with Bumper Plates (Gym and Fitness Studio)","summary":"A 2.2 m Olympic barbell loaded with two 20 kg bumper plates and a 10 kg plate a side behind spring collars, resting on its plates. The bar is a single rigid model: the sleeves do not spin.","description":"A 2.2 m Olympic barbell loaded with two 20 kg bumper plates and a 10 kg plate a side behind spring collars, resting on its plates. The bar is a single rigid model: the sleeves do not spin. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-barbell-loaded-33928ba8","cdnUrl":"https://cdn.3dassets.dev/assets/33563/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-barbell-loaded-33928ba8","thumbnailUrl":"https://cdn.3dassets.dev/assets/33563/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33563/v1/poster.webp","blurhash":"U25OEIJ78_x]tR?HS2RP00-p_NIUm,0K%2-;","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":111684,"triangles":2976,"vertices":5688,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.4900000095367432,0.0000761440096257171,-0.2249238500299098],"max":[1.4900000095367432,0.4499238440694453,0.2249238500299098]},"sizeMeters":[2.98,0.45,0.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:40.049Z","updatedAt":"2026-09-11T02:54:40.162Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33563/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OlympicBarbellWithBumperPlatesGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33563/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33563/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33563/v1/model.glb\" alt=\"Olympic Barbell with Bumper Plates (Gym and Fitness Studio)\" 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/33563/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/33563/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33560","slug":"gym-and-fitness-studio-dumbbell-single-ad7c4a83","title":"Rubber Hex Dumbbell (Gym and Fitness Studio)","summary":"A 20 kg rubber hex dumbbell, 420 mm long, with a knurled steel handle, chromed collars and six-sided heads that stop it rolling on the floor.","description":"A 20 kg rubber hex dumbbell, 420 mm long, with a knurled steel handle, chromed collars and six-sided heads that stop it rolling on the floor. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-dumbbell-single-ad7c4a83","cdnUrl":"https://cdn.3dassets.dev/assets/33560/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-dumbbell-single-ad7c4a83","thumbnailUrl":"https://cdn.3dassets.dev/assets/33560/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33560/v1/poster.webp","blurhash":"U25#kb%M4n-;.8?boeRj00t7~qD%4n4mxuxu","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":15596,"triangles":360,"vertices":714,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.30000001192092896,-0.00001233345196120783,-0.07621998044501277],"max":[0.30000001192092896,0.1760123324982869,0.07621998044501277]},"sizeMeters":[0.6,0.176,0.152],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:38.300Z","updatedAt":"2026-09-11T02:54:38.424Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33560/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RubberHexDumbbellGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33560/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33560/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33560/v1/model.glb\" alt=\"Rubber Hex Dumbbell (Gym and Fitness Studio)\" 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/33560/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/33560/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33559","slug":"gym-and-fitness-studio-dumbbell-single-heavy-aea129fc","title":"Rubber Hex Dumbbell, Heavy (Gym and Fitness Studio)","summary":"A heavy rubber hex dumbbell, 480 mm long, built to the same pattern as the 20 kg unit with deeper heads for the top of a rack.","description":"A heavy rubber hex dumbbell, 480 mm long, built to the same pattern as the 20 kg unit with deeper heads for the top of a rack. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-dumbbell-single-heavy-aea129fc","cdnUrl":"https://cdn.3dassets.dev/assets/33559/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-dumbbell-single-heavy-aea129fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/33559/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33559/v1/poster.webp","blurhash":"U25=66xs4n-=%L?caxIU00Rk_3M_4n00xv-:","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":15632,"triangles":360,"vertices":714,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.3499999940395355,-0.000021785574747426595,-0.09353770402551996],"max":[0.3499999940395355,0.21602179117758402,0.09353770402551996]},"sizeMeters":[0.7,0.216,0.187],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:38.286Z","updatedAt":"2026-09-11T02:54:38.407Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33559/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RubberHexDumbbellHeavyGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33559/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33559/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33559/v1/model.glb\" alt=\"Rubber Hex Dumbbell, Heavy (Gym and Fitness Studio)\" 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/33559/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/33559/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33558","slug":"gym-and-fitness-studio-dumbbell-single-light-18066779","title":"Rubber Hex Dumbbell, Light (Gym and Fitness Studio)","summary":"A light rubber hex dumbbell, 360 mm long, built to the same pattern as the 20 kg unit with smaller heads and a shorter handle.","description":"A light rubber hex dumbbell, 360 mm long, built to the same pattern as the 20 kg unit with smaller heads and a shorter handle. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-dumbbell-single-light-18066779","cdnUrl":"https://cdn.3dassets.dev/assets/33558/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-dumbbell-single-light-18066779","thumbnailUrl":"https://cdn.3dassets.dev/assets/33558/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33558/v1/poster.webp","blurhash":"U26Hy8Rl00-=-;?cM|M{00xu~qD%0000?b%N","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":15584,"triangles":360,"vertices":714,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.25,-0.0000049409586982268605,-0.0554216132084109],"max":[0.25,0.128004947038372,0.0554216132084109]},"sizeMeters":[0.5,0.128,0.111],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:39.167Z","updatedAt":"2026-09-11T02:54:39.387Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33558/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RubberHexDumbbellLightGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33558/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33558/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33558/v1/model.glb\" alt=\"Rubber Hex Dumbbell, Light (Gym and Fitness Studio)\" 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/33558/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/33558/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33564","slug":"gym-and-fitness-studio-kettlebell-single-cf7fa12b","title":"Cast Kettlebell (Gym and Fitness Studio)","summary":"A 24 kg cast kettlebell, 235 mm tall, with a squared cast handle loop and a flat rubber base ring so it stands square on a rubber floor.","description":"A 24 kg cast kettlebell, 235 mm tall, with a squared cast handle loop and a flat rubber base ring so it stands square on a rubber floor. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-kettlebell-single-cf7fa12b","cdnUrl":"https://cdn.3dassets.dev/assets/33564/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-kettlebell-single-cf7fa12b","thumbnailUrl":"https://cdn.3dassets.dev/assets/33564/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33564/v1/poster.webp","blurhash":"U37UPG.9008_DiMyt7%M00Ri_4t7%gtRWBM{","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":17468,"triangles":376,"vertices":823,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.10000047222301435,0,-0.10000047222301435],"max":[0.10000047222301435,0.24899999797344208,0.10000047222301435]},"sizeMeters":[0.2,0.249,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:41.981Z","updatedAt":"2026-09-11T02:54:42.109Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33564/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CastKettlebellGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33564/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33564/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33564/v1/model.glb\" alt=\"Cast Kettlebell (Gym and Fitness Studio)\" 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/33564/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/33564/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33587","slug":"gym-and-fitness-studio-punching-bag-on-stand-301be432","title":"Punching Bag on Weighted Stand (Gym and Fitness Studio)","summary":"A 2.05 m free-standing heavy bag: a weighted drum base with bumper plates leant against it, a tubular upright and a cranked top arm, and a 1.05 m vinyl bag on a four-strap swivel. The bag swings on its swivel; the base and arm are fixed.","description":"A 2.05 m free-standing heavy bag: a weighted drum base with bumper plates leant against it, a tubular upright and a cranked top arm, and a 1.05 m vinyl bag on a four-strap swivel. The bag swings on its swivel; the base and arm are fixed. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: bag. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-punching-bag-on-stand-301be432","cdnUrl":"https://cdn.3dassets.dev/assets/33587/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-punching-bag-on-stand-301be432","thumbnailUrl":"https://cdn.3dassets.dev/assets/33587/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33587/v1/poster.webp","blurhash":"U26824~W0000DORPyDo}0LIp^*-oystRmkR5","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":85896,"triangles":2140,"vertices":4211,"meshes":6,"materials":4,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.47540009021759033,0,-0.4931726539278138],"max":[0.4937761425971985,2.098238229751587,0.4621611619138825]},"sizeMeters":[0.969,2.098,0.955],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:51.921Z","updatedAt":"2026-09-11T02:54:52.022Z","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/33587/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 PunchingBagOnWeightedStandGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33587/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/33587/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33587/v1/model.glb\" alt=\"Punching Bag on Weighted Stand (Gym and Fitness Studio)\" 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/33587/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/33587/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33579","slug":"gym-and-fitness-studio-battle-ropes-c8b17275","title":"Battle Ropes and Wall Anchor (Gym and Fitness Studio)","summary":"A pair of 15 m battle ropes laid in a lazy S from a two-ring wall anchor, with whipped gripped ends. The ropes are fixed geometry in a resting wave: a rope is not reachable with a rigid node transform, so it is modelled as it lies.","description":"A pair of 15 m battle ropes laid in a lazy S from a two-ring wall anchor, with whipped gripped ends. The ropes are fixed geometry in a resting wave: a rope is not reachable with a rigid node transform, so it is modelled as it lies. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-battle-ropes-c8b17275","cdnUrl":"https://cdn.3dassets.dev/assets/33579/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-battle-ropes-c8b17275","thumbnailUrl":"https://cdn.3dassets.dev/assets/33579/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33579/v1/poster.webp","blurhash":"U46an@^QD$I:JT9toz-p00E1x]kC+v~Cr?9F","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":61988,"triangles":1292,"vertices":3234,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7688848410452827,-0.000009766678854578048,-1.6099978875887602],"max":[0.7721191670275047,0.3440064141833157,1.7399587758595112]},"sizeMeters":[1.541,0.344,3.35],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:48.316Z","updatedAt":"2026-09-11T02:54:48.415Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33579/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BattleRopesAndWallAnchorGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33579/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33579/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33579/v1/model.glb\" alt=\"Battle Ropes and Wall Anchor (Gym and Fitness Studio)\" 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/33579/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/33579/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33585","slug":"gym-and-fitness-studio-suspension-trainer-frame-1e63378f","title":"Suspension Trainer Frame (Gym and Fitness Studio)","summary":"A free-standing 2.3 m suspension trainer frame: two splayed A-frames on foot rails, a 1.6 m top bar and two webbing straps with moulded handles hanging from anchor rings. The straps are fixed geometry, because webbing under load is not a rigid node.","description":"A free-standing 2.3 m suspension trainer frame: two splayed A-frames on foot rails, a 1.6 m top bar and two webbing straps with moulded handles hanging from anchor rings. The straps are fixed geometry, because webbing under load is not a rigid node. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-suspension-trainer-frame-1e63378f","cdnUrl":"https://cdn.3dassets.dev/assets/33585/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-suspension-trainer-frame-1e63378f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33585/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33585/v1/poster.webp","blurhash":"U17nRV_300S$-;?b4n0000IU}@oI9=-;~XD$","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":64888,"triangles":1496,"vertices":3210,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.9800000190734863,0,-0.600017102043284],"max":[0.9800000190734863,2.2827975749969482,0.600017102043284]},"sizeMeters":[1.96,2.283,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:51.149Z","updatedAt":"2026-09-11T02:54:51.245Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33585/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SuspensionTrainerFrameGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33585/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33585/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33585/v1/model.glb\" alt=\"Suspension Trainer Frame (Gym and Fitness Studio)\" 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/33585/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/33585/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33580","slug":"gym-and-fitness-studio-medicine-ball-rack-3aa9f5af","title":"Medicine Ball Rack, Loaded (Gym and Fitness Studio)","summary":"A 1 m three-tier medicine ball rack on a raked tubular frame, loaded with nine rubber wall balls from 4 to 10 kg nested between cradle rails.","description":"A 1 m three-tier medicine ball rack on a raked tubular frame, loaded with nine rubber wall balls from 4 to 10 kg nested between cradle rails. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-medicine-ball-rack-3aa9f5af","cdnUrl":"https://cdn.3dassets.dev/assets/33580/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-medicine-ball-rack-3aa9f5af","thumbnailUrl":"https://cdn.3dassets.dev/assets/33580/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33580/v1/poster.webp","blurhash":"U38;7B-=00Sx-U%f9u8_00D%^P$%E0%1?HE2","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":144380,"triangles":3048,"vertices":7646,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5100162974551239,0,-0.34000142392962385],"max":[0.5100162974551239,1.0502020746926988,0.46000142869799543]},"sizeMeters":[1.02,1.05,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:49.131Z","updatedAt":"2026-09-11T02:54:49.321Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33580/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MedicineBallRackLoadedGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33580/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33580/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33580/v1/model.glb\" alt=\"Medicine Ball Rack, Loaded (Gym and Fitness Studio)\" 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/33580/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/33580/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33581","slug":"gym-and-fitness-studio-plyo-box-b65bb5f6","title":"Three-in-One Plyo Box (Gym and Fitness Studio)","summary":"A plywood plyo box, 750 by 500 by 600 mm, with chamfered corner battens, a grip strip on the top face and hand holds on both long sides, so it can be turned onto any of its three faces for a different step height.","description":"A plywood plyo box, 750 by 500 by 600 mm, with chamfered corner battens, a grip strip on the top face and hand holds on both long sides, so it can be turned onto any of its three faces for a different step height. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-plyo-box-b65bb5f6","cdnUrl":"https://cdn.3dassets.dev/assets/33581/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-plyo-box-b65bb5f6","thumbnailUrl":"https://cdn.3dassets.dev/assets/33581/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33581/v1/poster.webp","blurhash":"UDIEX,_K9ETCSi-o-nof00IC9bnT-ot7E2IV","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":37480,"triangles":832,"vertices":1859,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.375,-0.000016010296545965197,-0.2639999985694885],"max":[0.375,0.6070158413229098,0.2639999985694885]},"sizeMeters":[0.75,0.607,0.528],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:49.481Z","updatedAt":"2026-09-11T02:54:49.588Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33581/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeInOnePlyoBoxGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33581/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33581/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33581/v1/model.glb\" alt=\"Three-in-One Plyo Box (Gym and Fitness Studio)\" 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/33581/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/33581/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33583","slug":"gym-and-fitness-studio-yoga-mat-flat-ea182435","title":"Yoga Mat, Unrolled (Gym and Fitness Studio)","summary":"The same exercise mat unrolled on the floor, 1.78 m by 620 mm and 7 mm thick, with the last turn of the roll left standing at the far end.","description":"The same exercise mat unrolled on the floor, 1.78 m by 620 mm and 7 mm thick, with the last turn of the roll left standing at the far end. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-yoga-mat-flat-ea182435","cdnUrl":"https://cdn.3dassets.dev/assets/33583/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-yoga-mat-flat-ea182435","thumbnailUrl":"https://cdn.3dassets.dev/assets/33583/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33583/v1/poster.webp","blurhash":"UC9*V{ofDOs:ozIAV[x]00Rj%#W=RP?^o|IA","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":9572,"triangles":208,"vertices":443,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.3099449105033484,-0.000038806852346078,-0.9253481030464172],"max":[0.3099449105033484,0.05203880792522966,0.8899999856948853]},"sizeMeters":[0.62,0.052,1.815],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:49.983Z","updatedAt":"2026-09-11T02:54:50.080Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33583/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YogaMatUnrolledGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33583/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33583/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33583/v1/model.glb\" alt=\"Yoga Mat, Unrolled (Gym and Fitness Studio)\" 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/33583/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/33583/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33582","slug":"gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","title":"Yoga Mat, Rolled (Gym and Fitness Studio)","summary":"A 620 mm rolled exercise mat with a loose outer wrap and two carry straps, lying on its side ready to be picked off a rack.","description":"A 620 mm rolled exercise mat with a loose outer wrap and two carry straps, lying on its side ready to be picked off a rack. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","cdnUrl":"https://cdn.3dassets.dev/assets/33582/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-yoga-mat-rolled-2550c2f5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33582/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33582/v1/poster.webp","blurhash":"UAAUT{%MDOxG-p?^s:RP00j[?vRkD%4TWVyD","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":16328,"triangles":368,"vertices":754,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.32499998807907104,-0.000011825922512906373,-0.07385153568528244],"max":[0.3100000023841858,0.15501182711460582,0.07994222141049454]},"sizeMeters":[0.635,0.155,0.154],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:49.824Z","updatedAt":"2026-09-11T02:54:49.931Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33582/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YogaMatRolledGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33582/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33582/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33582/v1/model.glb\" alt=\"Yoga Mat, Rolled (Gym and Fitness Studio)\" 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/33582/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/33582/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33584","slug":"gym-and-fitness-studio-foam-roller-3dcea971","title":"Grid Foam Roller (Gym and Fitness Studio)","summary":"A 450 mm hollow-core foam roller with a moulded grid of raised blocks around a rigid inner tube, lying along X on the floor.","description":"A 450 mm hollow-core foam roller with a moulded grid of raised blocks around a rigid inner tube, lying along X on the floor. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-foam-roller-3dcea971","cdnUrl":"https://cdn.3dassets.dev/assets/33584/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-foam-roller-3dcea971","thumbnailUrl":"https://cdn.3dassets.dev/assets/33584/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33584/v1/poster.webp","blurhash":"U48g${-=00V=~X?bNFD%00t7-=IT4nM{s:Ri","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":71220,"triangles":1736,"vertices":3674,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.22499999403953552,0.0000031902493874552684,-0.07440800085960754],"max":[0.22499999403953552,0.1644319728909095,0.07440800085960754]},"sizeMeters":[0.45,0.164,0.149],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:50.927Z","updatedAt":"2026-09-11T02:54:51.030Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33584/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GridFoamRollerGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33584/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33584/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33584/v1/model.glb\" alt=\"Grid Foam Roller (Gym and Fitness Studio)\" 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/33584/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/33584/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33593","slug":"gym-and-fitness-studio-locker-bank-44c1032e","title":"Six-Door Locker Bank (Gym and Fitness Studio)","summary":"A 1.2 m six-door locker bank, two rows of three, with a sloped top, a recessed plinth, vented leaves, number plates and cam latches. Every leaf is a named node on its own hinge line.","description":"A 1.2 m six-door locker bank, two rows of three, with a sloped top, a recessed plinth, vented leaves, number plates and cam latches. Every leaf is a named node on its own hinge line. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: locker-door-1, locker-door-2, locker-door-3, locker-door-4, locker-door-5, locker-door-6. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-locker-bank-44c1032e","cdnUrl":"https://cdn.3dassets.dev/assets/33593/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-locker-bank-44c1032e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33593/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33593/v1/poster.webp","blurhash":"UAE_w4;N00GF.8%2VYE101Or}sn4xuW;NGjF","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":53108,"triangles":2876,"vertices":6456,"meshes":26,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6999489304223874,0,-0.31501514546496534],"max":[0.6999489304223874,1.9220000505447388,0.31501514546496534]},"sizeMeters":[1.4,1.922,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:54.546Z","updatedAt":"2026-09-11T02:54:54.655Z","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/33593/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 SixDoorLockerBankGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33593/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/33593/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33593/v1/model.glb\" alt=\"Six-Door Locker Bank (Gym and Fitness Studio)\" 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/33593/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/33593/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33594","slug":"gym-and-fitness-studio-locker-bank-open-door-bd2cea7d","title":"Six-Door Locker Bank, One Door Open (Gym and Fitness Studio)","summary":"The same locker bank with the middle lower leaf standing open on its hinge, for dressing a changing room without animating it. The other five leaves still swing.","description":"The same locker bank with the middle lower leaf standing open on its hinge, for dressing a changing room without animating it. The other five leaves still swing. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: locker-door-1, locker-door-2, locker-door-3, locker-door-4, locker-door-5, locker-door-6. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-locker-bank-open-door-bd2cea7d","cdnUrl":"https://cdn.3dassets.dev/assets/33594/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-locker-bank-open-door-bd2cea7d","thumbnailUrl":"https://cdn.3dassets.dev/assets/33594/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33594/v1/poster.webp","blurhash":"UAE.CU;N00GF.8%2R5D*01Or}sn4t8W;NGn$","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":69832,"triangles":2876,"vertices":6432,"meshes":26,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6999489304223874,0,-0.31501514546496534],"max":[0.6999489304223874,1.9220000505447388,0.31501514546496534]},"sizeMeters":[1.4,1.922,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:55.097Z","updatedAt":"2026-09-11T02:54:55.199Z","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/33594/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 SixDoorLockerBankOneDoorOpenGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33594/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/33594/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33594/v1/model.glb\" alt=\"Six-Door Locker Bank, One Door Open (Gym and Fitness Studio)\" 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/33594/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/33594/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33595","slug":"gym-and-fitness-studio-changing-bench-b451f89f","title":"Slatted Changing Bench (Gym and Fitness Studio)","summary":"A 1.5 m slatted changing bench: five timber slats on a welded steel frame at 440 mm, with a three-rail shoe rack underneath and rubber feet.","description":"A 1.5 m slatted changing bench: five timber slats on a welded steel frame at 440 mm, with a three-rail shoe rack underneath and rubber feet. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-changing-bench-b451f89f","cdnUrl":"https://cdn.3dassets.dev/assets/33595/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-changing-bench-b451f89f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33595/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33595/v1/poster.webp","blurhash":"UEB3sVxa9axu~W-:M|NG01-p%LIV01M{?Gj@","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":55000,"triangles":1216,"vertices":2757,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,0.00001840211516311932,-0.19996475757385307],"max":[0.7300000190734863,0.44996795686366636,0.19996475757385307]},"sizeMeters":[1.46,0.45,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:56.321Z","updatedAt":"2026-09-11T02:54:56.428Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33595/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SlattedChangingBenchGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33595/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33595/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33595/v1/model.glb\" alt=\"Slatted Changing Bench (Gym and Fitness Studio)\" 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/33595/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/33595/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33600","slug":"gym-and-fitness-studio-gym-signage-board-b8d3bcba","title":"Free-Standing Gym Signage Board (Gym and Fitness Studio)","summary":"A 1.65 m free-standing signage board: a steel-framed panel with an accent face and raised lettering blocks over a lower timetable panel, on two footed legs, for zoning a floor or standing beside a reception desk.","description":"A 1.65 m free-standing signage board: a steel-framed panel with an accent face and raised lettering blocks over a lower timetable panel, on two footed legs, for zoning a floor or standing beside a reception desk. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-gym-signage-board-b8d3bcba","cdnUrl":"https://cdn.3dassets.dev/assets/33600/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-gym-signage-board-b8d3bcba","thumbnailUrl":"https://cdn.3dassets.dev/assets/33600/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33600/v1/poster.webp","blurhash":"UBAT4kxu00IU}[xa57IU9Zn%?HSg5loL=xWV","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":55480,"triangles":1216,"vertices":2733,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.550000011920929,0,-0.21498764000366222],"max":[0.550000011920929,1.6500236632244252,0.21498764000366222]},"sizeMeters":[1.1,1.65,0.43],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:57.852Z","updatedAt":"2026-09-11T02:54:57.958Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33600/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FreeStandingGymSignageBoardGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33600/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33600/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33600/v1/model.glb\" alt=\"Free-Standing Gym Signage Board (Gym and Fitness Studio)\" 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/33600/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/33600/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33596","slug":"gym-and-fitness-studio-water-cooler-ec5c67da","title":"Bottled Water Cooler (Gym and Fitness Studio)","summary":"A 1.5 m bottled water cooler: a laminate cabinet with a recessed dispensing bay, chilled and ambient taps over a drip grille, and a 19 litre bottle inverted on the crown.","description":"A 1.5 m bottled water cooler: a laminate cabinet with a recessed dispensing bay, chilled and ambient taps over a drip grille, and a 19 litre bottle inverted on the crown. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-water-cooler-ec5c67da","cdnUrl":"https://cdn.3dassets.dev/assets/33596/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-water-cooler-ec5c67da","thumbnailUrl":"https://cdn.3dassets.dev/assets/33596/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33596/v1/poster.webp","blurhash":"U6Dl+s.8004TMxVsbvtS00Mx~q%#-AtROER5","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":37696,"triangles":824,"vertices":1771,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.17000335703604236,0,-0.18001342814416943],"max":[0.17000335703604236,1.5,0.22141619621880837]},"sizeMeters":[0.34,1.5,0.401],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:55.752Z","updatedAt":"2026-09-11T02:54:55.850Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33596/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BottledWaterCoolerGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33596/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33596/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33596/v1/model.glb\" alt=\"Bottled Water Cooler (Gym and Fitness Studio)\" 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/33596/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/33596/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33597","slug":"gym-and-fitness-studio-reception-desk-924c4679","title":"Gym Reception Desk (Gym and Fitness Studio)","summary":"A 2.2 m reception counter: a timber-fronted body with a returned end on a recessed plinth, a raised transaction top over a lower working top, an accent reveal along the front and desk kit of a monitor, a card terminal and a small sign.","description":"A 2.2 m reception counter: a timber-fronted body with a returned end on a recessed plinth, a raised transaction top over a lower working top, an accent reveal along the front and desk kit of a monitor, a card terminal and a small sign. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-reception-desk-924c4679","cdnUrl":"https://cdn.3dassets.dev/assets/33597/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-reception-desk-924c4679","thumbnailUrl":"https://cdn.3dassets.dev/assets/33597/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33597/v1/poster.webp","blurhash":"UHH.1l?G00oL_N^+i_IV00o}xtInDhOZS%IU","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":37684,"triangles":800,"vertices":1773,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.1399999856948853,-0.00001011977434550726,-0.41003294935509704],"max":[1.1399999856948853,1.248220387940026,0.4300329600839331]},"sizeMeters":[2.28,1.248,0.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:56.155Z","updatedAt":"2026-09-11T02:54:56.272Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33597/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GymReceptionDeskGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33597/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33597/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33597/v1/model.glb\" alt=\"Gym Reception Desk (Gym and Fitness Studio)\" 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/33597/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/33597/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33598","slug":"gym-and-fitness-studio-towel-shelf-19b657a9","title":"Towel Shelf, Loaded (Gym and Fitness Studio)","summary":"A 1.35 m open towel shelf in three tiers, loaded with eighteen rolled towels in two rows a shelf, with an accent front rail under the top.","description":"A 1.35 m open towel shelf in three tiers, loaded with eighteen rolled towels in two rows a shelf, with an accent front rail under the top. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-towel-shelf-19b657a9","cdnUrl":"https://cdn.3dassets.dev/assets/33598/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-towel-shelf-19b657a9","thumbnailUrl":"https://cdn.3dassets.dev/assets/33598/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33598/v1/poster.webp","blurhash":"U6Frq,?H0056~q-;D%4n0}tR+]Md-p%MNa9F","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":105868,"triangles":2880,"vertices":5361,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.46000000834465027,0,-0.23502533451356175],"max":[0.46000000834465027,1.350000023841858,0.23502533451356175]},"sizeMeters":[0.92,1.35,0.47],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:56.801Z","updatedAt":"2026-09-11T02:54:56.902Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33598/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TowelShelfLoadedGymAndFitnessStudio(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33598/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33598/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33598/v1/model.glb\" alt=\"Towel Shelf, Loaded (Gym and Fitness Studio)\" 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/33598/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/33598/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33601","slug":"gym-and-fitness-studio-standing-fan-4a03c434","title":"Free-Standing Pedestal Fan (Gym and Fitness Studio)","summary":"A 1.42 m pedestal fan on a weighted disc base: a telescopic column, a caged three-blade head with front and back guard rings and a control pod on the neck. The blades spin as one node; the head does not oscillate.","description":"A 1.42 m pedestal fan on a weighted disc base: a telescopic column, a caged three-blade head with front and back guard rings and a control pod on the neck. The blades spin as one node; the head does not oscillate. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: fan-blades. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/gym-and-fitness-studio-standing-fan-4a03c434","cdnUrl":"https://cdn.3dassets.dev/assets/33601/v1/model.glb","downloadUrl":"https://3dassets.dev/download/gym-and-fitness-studio-standing-fan-4a03c434","thumbnailUrl":"https://cdn.3dassets.dev/assets/33601/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33601/v1/poster.webp","blurhash":"U16H$J?a0001~qx[0KD%?wadDgo$00IU~p?c","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":63224,"triangles":1488,"vertices":3082,"meshes":5,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.2599765068444144,0,-0.25602985310642545],"max":[0.2599765068444144,1.4670000076293945,0.25602985310642545]},"sizeMeters":[0.52,1.467,0.512],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T02:54:58.104Z","updatedAt":"2026-09-11T02:54:58.264Z","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/33601/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 FreeStandingPedestalFanGymAndFitnessStudio(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33601/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/33601/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33601/v1/model.glb\" alt=\"Free-Standing Pedestal Fan (Gym and Fitness Studio)\" 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/33601/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/33601/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}