{"data":{"id":"77","slug":"ice-hockey-arena-and-locker-room","title":"Ice Hockey Arena and Locker Room","summary":"Walk a rink end: marked ice inside dasher boards and glass, a goal in its crease, players bench and penalty box, the resurfacer at the gate, and the locker room next door.","url":"https://3dassets.dev/demos/ice-hockey-arena-and-locker-room","coverUrl":"https://cdn.3dassets.dev/media/ice-hockey-arena-and-locker-room-demo.png","featured":true,"pack":{"slug":"ice-hockey-arena-and-locker-room","title":"Ice Hockey Arena and Locker Room","url":"https://3dassets.dev/packs/ice-hockey-arena-and-locker-room","summary":"Realistic ice hockey models for a whole rink and the room behind it: modular ice pans and dasher boards, glass, goals, benches, the resurfacer and ice crew kit, player and goalie gear, and a locker room of stalls and fittings.","assetCount":49,"totalBytes":4116816,"starterScene":{"slug":"ice-hockey-arena-and-locker-room-rink-en-1051d943-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/33739/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-rink-en-1051d943-starter-scene","fileSize":1967376}},"placementCount":152,"assetCount":48,"spawn":{"position":[-0.2,0.12,1.6],"yaw":178.3},"publishedAt":"2026-09-11T03:55:56.318Z","updatedAt":"2026-09-11T03:55:56.319Z","description":"A rink end and the room behind it, built from the pack's five modular systems: ice pans, dasher boards, protective glass, locker stalls and rubber floor tiles.\n\n**What is placed.** Ice pans lay the surface with the blue line, centre line, face-off dots and the goal crease carried on the modules themselves, closed in by dasher boards, corners and glass. A goal stands in the crease with pucks and training cones out for a drill. The players bench and the penalty box sit against the boards with the scorers table and the scoreboard, and the resurfacer is parked at the gate with the squeegee, scraper, shovel, snow bucket and hose reel. Beside the rink, a run of locker stalls on rubber tiles holds jerseys, shoulder pads, leg pads, masks, helmets, gloves, skates, sticks and bags, with a tape bench, a whiteboard, a trophy shelf, a first aid box, a laundry bin and the skate sharpener.\n\n**What moves.** The boards gate, the bench gate and the penalty box door open and close, the resurfacer rolls its wheels and turns its brush, the sharpening wheel spins, the laundry bin lid lifts and the scoreboard flap tilts.\n\n**What does not move, and why.** The goal netting, the jersey and pad straps and the protective glass are static geometry. Netting and webbing are not reachable with the rigid node transforms this library uses, and glass has nothing to move. There are no players, because nothing here is skinned.","scene":{"version":1,"spawn":{"position":[-0.2,0.12,1.6],"yaw":178.3},"ground":{"style":"none"},"environment":{"preset":"hall","wallHeight":7,"lampHeight":6,"shadows":true},"placements":[{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-6,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-6,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-6,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[-6,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[-6,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-4,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-face-78e57a19","position":[-4,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-4,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[-4,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[-4,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-2,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-2,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[-2,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[-2,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[-2,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[0,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-goal-crease-section-a1a1fbf3","position":[0,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[0,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[0,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[0,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[2,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[2,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[2,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[2,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[2,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[4,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-face-78e57a19","position":[4,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[4,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[4,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[4,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[6,0,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[6,0,-4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","position":[6,0,-2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","position":[6,0,0],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","position":[6,0,2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[-4,0.06,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[-2,0.06,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[0,0.06,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[2,0.06,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[4,0.06,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-corner-ed64e815","position":[-6,0.06,-6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-corner-ed64e815","position":[6,0.06,-6],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[-7,0.06,-4],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-boards-gate-panel-718321b4","position":[-7,0.06,0],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[-7,0.06,2],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[7,0.06,0],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","position":[7,0.06,2],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[-4,1.1300000000000001,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[-2,1.1300000000000001,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[0,1.1300000000000001,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[2,1.1300000000000001,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[4,1.1300000000000001,-7],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[-7,1.1300000000000001,0],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[-7,1.1300000000000001,2],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[7,1.1300000000000001,0],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","position":[7,1.1300000000000001,2],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-hockey-goal-547b20bf","position":[0,0.06,-5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-net-anchor-peg-set-55b2c9f1","position":[1.5,0.06,-5.3],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","position":[-3,0.06,-1.6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","position":[2.8,0.06,-0.6],"rotation":22.92},{"asset":"ice-hockey-arena-and-locker-room-puck-bucket-a9f7c223","position":[-1.4,0.06,-0.8],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-0.6,0.06,-2.4],"rotation":17.19},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[0.9,0.06,-1.9],"rotation":63.03},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[2.1,0.06,-3.1],"rotation":34.38},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-2.2,0.06,-3.4],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[1.4,0.06,-4.2],"rotation":51.57},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-1.1,0.06,-4.6],"rotation":22.92},{"asset":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","position":[-4.6,0.06,2.4],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","position":[4.2,0.06,2.6],"rotation":-17.19},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-4,0.06,1.2],"rotation":40.11},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[3.2,0.06,1.6],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-5.2,0.06,-0.4],"rotation":74.48},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[5.4,0.06,-1.2],"rotation":28.65},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[0.2,0.06,2.6],"rotation":51.57},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[-3,0.06,0.6],"rotation":5.73},{"asset":"ice-hockey-arena-and-locker-room-hockey-stick-heel-cur-ce0898c1","position":[5.2,0.06,0.6],"rotation":120.32},{"asset":"ice-hockey-arena-and-locker-room-puck-bucket-a9f7c223","position":[5.6,0.06,-3.6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-snow-shovel-d5dd276b","position":[-5.4,0.06,3],"rotation":74.48},{"asset":"ice-hockey-arena-and-locker-room-rink-squeegee-a1d582b1","position":[4.6,0.06,-4.4],"rotation":108.86},{"asset":"ice-hockey-arena-and-locker-room-hockey-stick-552f90d7","position":[-2.6,0.06,-2.9],"rotation":68.75},{"asset":"ice-hockey-arena-and-locker-room-hockey-stick-toe-curv-277a318d","position":[3.4,0.06,-2.2],"rotation":-51.57},{"asset":"ice-hockey-arena-and-locker-room-goalie-stick-91cd1483","position":[1.1,0.06,-5.6],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-players-bench-3ae7f6da","position":[7.7,0.06,-3],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-scorers-table-2574e960","position":[9.4,0,-1.4],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-penalty-box-057f8942","position":[-7.6,0.06,-2],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-arena-scoreboard-655d2b37","position":[0,0,-10.2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-ice-resurfacer-1eade0ec","position":[-9.4,0,-0.6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rink-squeegee-a1d582b1","position":[-8.3,0,2.6],"rotation":-17.19},{"asset":"ice-hockey-arena-and-locker-room-snow-shovel-d5dd276b","position":[-8.9,0,3.4],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-ice-scraper-94103acc","position":[-7.9,0,3.6],"rotation":34.38},{"asset":"ice-hockey-arena-and-locker-room-snow-bucket-fd690e3b","position":[-8.2,0,-3.2],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-hose-reel-0a4e3a65","position":[-9.6,0,-4.2],"rotation":17.19},{"asset":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","position":[-8.6,0,-5.4],"rotation":28.65},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[11.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[11.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[11.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[11.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[11.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[12.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[12.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[12.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[12.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[12.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[13.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[13.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[13.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[13.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[13.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[14.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[14.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[14.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[14.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[14.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[15.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[15.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[15.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[15.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[15.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[16.5,0,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[16.5,0,-2.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[16.5,0,-1.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[16.5,0,-0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","position":[16.5,0,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","position":[11.6,0.02,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","position":[12.799999999999999,0.02,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","position":[14,0.02,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","position":[15.2,0.02,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","position":[16.4,0.02,-3.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-jersey-on-hanger-61931b95","position":[12.2,1.05,-3.68],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-jersey-on-hanger-61931b95","position":[15,1.05,-3.68],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-shoulder-pads-on-hang-0ae31543","position":[13.4,1.22,-3.68],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-shin-guards-0fd9a962","position":[11.75,0.5,-3.4],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-hockey-gloves-fad8a99c","position":[15.7,0.5,-3.42],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-helmet-with-cage-53ced288","position":[14.4,1.78,-3.55],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-goalie-mask-f427f311","position":[16.4,1.78,-3.55],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-player-skate-1217cfdd","position":[12.55,0.02,-3.3],"rotation":11.46},{"asset":"ice-hockey-arena-and-locker-room-player-skate-1217cfdd","position":[12.8,0.02,-3.28],"rotation":-8.59},{"asset":"ice-hockey-arena-and-locker-room-goalie-skate-251a6e36","position":[16.1,0.02,-3.3],"rotation":5.73},{"asset":"ice-hockey-arena-and-locker-room-goalie-pads-c713e1bd","position":[16.9,0.02,-2.5],"rotation":-17.19},{"asset":"ice-hockey-arena-and-locker-room-hockey-bag-1c01d046","position":[13.1,0.02,-2.3],"rotation":8.59},{"asset":"ice-hockey-arena-and-locker-room-hockey-bag-1c01d046","position":[15.3,0.02,-2.5],"rotation":-22.92},{"asset":"ice-hockey-arena-and-locker-room-hockey-stick-heel-cur-ce0898c1","position":[16.5,0.02,-1.1],"rotation":80.21},{"asset":"ice-hockey-arena-and-locker-room-puck-48ffea52","position":[14.2,0.02,-2.4],"rotation":28.65},{"asset":"ice-hockey-arena-and-locker-room-stick-rack-e3e1e7ee","position":[16.9,0.02,-1.4],"rotation":-90},{"asset":"ice-hockey-arena-and-locker-room-trophy-shelf-78e4011e","position":[11.3,0.02,-2.5],"rotation":90},{"asset":"ice-hockey-arena-and-locker-room-laundry-bin-b65d565a","position":[11.7,0.02,-0.9],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-whiteboard-on-stand-ca671303","position":[12.5,0.02,0.5],"rotation":17.19},{"asset":"ice-hockey-arena-and-locker-room-water-bottle-rack-d725dfc5","position":[13.7,0.02,0.1],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-skate-sharpening-mach-9ea5b009","position":[14.4,0.02,0.6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-tape-and-tools-bench-516b7a38","position":[16,0.02,0.6],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-first-aid-box-60363b52","position":[15.6,0.92,0.5],"rotation":0},{"asset":"ice-hockey-arena-and-locker-room-water-bottle-rack-d725dfc5","position":[8.1,0,-2.2],"rotation":-90}],"points":[{"position":[0,0.12,-3.4],"title":"The goal","text":"A goal in its painted crease with pucks out on the ice. The netting is static geometry: a rigid node transform cannot make a net behave.","asset":"ice-hockey-arena-and-locker-room-hockey-goal-547b20bf"},{"position":[6.2,0.12,-2.6],"title":"Players bench","text":"A bench unit against the dashers with its own gate onto the ice, sticks and bottles along it. The gate swings, and so does the boards gate at the far end.","asset":"ice-hockey-arena-and-locker-room-players-bench-3ae7f6da"},{"position":[-6.2,0.12,-1.8],"title":"Penalty box","text":"The box with a door that opens, the scorers table beside it and the scoreboard above, whose result flap tilts.","asset":"ice-hockey-arena-and-locker-room-penalty-box-057f8942"},{"position":[-8,0.12,0.4],"title":"Resurfacer","text":"The ice resurfacer parked at the gate, its wheels rolling and its brush turning, with the squeegee, scraper, shovel and snow bucket beside it.","asset":"ice-hockey-arena-and-locker-room-ice-resurfacer-1eade0ec"},{"position":[11.6,0.12,-1.8],"title":"Locker room","text":"A run of stall units on rubber floor tiles, gear hung in them: jerseys, shoulder pads, leg pads, masks, gloves, skates and bags.","asset":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece"},{"position":[13.4,0.12,1.4],"title":"Skate sharpening","text":"The sharpening machine with its spinning wheel, the tape bench, the whiteboard, the first aid box and the laundry bin, whose lid lifts.","asset":"ice-hockey-arena-and-locker-room-skate-sharpening-mach-9ea5b009"}],"poster":{"position":[-2.4,2.9,-2.2],"lookAt":[0,0.6,-5.4]}},"bounds":{"min":[-12.400035112920335,-0.000020142663288993945,-12.86000611468034],"max":[19.269029887937517,6.110981224846876,6.768828099138633]},"assets":[{"id":"33693","slug":"ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","title":"Ice Surface Pan, 2 m (Ice Hockey Arena and Locker Room)","summary":"A 2 m square ice pan, 60 mm deep: a dark service frame carrying a pale blue ice slab proud of it. Pans tile on a 2 m grid through ice-left, ice-right, ice-front and ice-back, so a rink is laid out module by module and the marked pans drop into the run.","description":"A 2 m square ice pan, 60 mm deep: a dark service frame carrying a pale blue ice slab proud of it. Pans tile on a 2 m grid through ice-left, ice-right, ice-front and ice-back, so a rink is laid out module by module and the marked pans drop into the run. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","cdnUrl":"https://cdn.3dassets.dev/assets/33693/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-surface-tile-951573fd","thumbnailUrl":"https://cdn.3dassets.dev/assets/33693/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33693/v1/poster.webp","blurhash":"UDD0M-xu00WU-;fQM{j[00Ri~qay4nj[xuWB","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":7348,"triangles":128,"vertices":289,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000020142663288993945,-1],"max":[1,0.05994659178420548,1]},"sizeMeters":[2,0.06,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:15.196Z","updatedAt":"2026-09-11T03:54:15.320Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33693/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSurfacePan2MIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33693/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33693/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33693/v1/model.glb\" alt=\"Ice Surface Pan, 2 m (Ice Hockey Arena and Locker Room)\" 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/33693/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/33693/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33691","slug":"ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","title":"Ice Surface Pan with Blue Line (Ice Hockey Arena and Locker Room)","summary":"The same 2 m ice pan with a 400 mm blue line painted across it, 2 mm proud of the ice face. A row of these lays a zone line straight across a rink.","description":"The same 2 m ice pan with a 400 mm blue line painted across it, 2 mm proud of the ice face. A row of these lays a zone line straight across a rink. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","cdnUrl":"https://cdn.3dassets.dev/assets/33691/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-surface-tile-blue-9e3b7f1d","thumbnailUrl":"https://cdn.3dassets.dev/assets/33691/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33691/v1/poster.webp","blurhash":"UCCQ3^tR00ax-;WXM{oc00Ri_4az8_s+%3NH","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":10140,"triangles":176,"vertices":395,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000020142663288993945,-1],"max":[1,0.061976591126040176,1]},"sizeMeters":[2,0.062,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:15.158Z","updatedAt":"2026-09-11T03:54:15.276Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33691/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSurfacePanWithBlueLineIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33691/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33691/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33691/v1/model.glb\" alt=\"Ice Surface Pan with Blue Line (Ice Hockey Arena and Locker Room)\" 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/33691/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/33691/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33694","slug":"ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","title":"Ice Surface Pan with Centre Line (Ice Hockey Arena and Locker Room)","summary":"The same 2 m ice pan painted with the red centre line instead of a blue zone line.","description":"The same 2 m ice pan painted with the red centre line instead of a blue zone line. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","cdnUrl":"https://cdn.3dassets.dev/assets/33694/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-surface-tile-cent-74b44ca2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33694/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33694/v1/poster.webp","blurhash":"UCDJ3R$+00S2-;niM{X800NG~WjZ4.S~%2n4","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":10156,"triangles":176,"vertices":395,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000020142663288993945,-1],"max":[1,0.061976591126040176,1]},"sizeMeters":[2,0.062,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:15.306Z","updatedAt":"2026-09-11T03:54:15.522Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33694/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSurfacePanWithCentreLineIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33694/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33694/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33694/v1/model.glb\" alt=\"Ice Surface Pan with Centre Line (Ice Hockey Arena and Locker Room)\" 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/33694/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/33694/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33692","slug":"ice-hockey-arena-and-locker-room-ice-surface-tile-face-78e57a19","title":"Ice Surface Pan with Face-off Dot (Ice Hockey Arena and Locker Room)","summary":"The same 2 m ice pan carrying a 600 mm red face-off dot and the four hash marks around it. The dot and hashes are drawn to the 2 m module, so the surrounding circle of a regulation rink is not on the pan.","description":"The same 2 m ice pan carrying a 600 mm red face-off dot and the four hash marks around it. The dot and hashes are drawn to the 2 m module, so the surrounding circle of a regulation rink is not on the pan. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-surface-tile-face-78e57a19","cdnUrl":"https://cdn.3dassets.dev/assets/33692/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-surface-tile-face-78e57a19","thumbnailUrl":"https://cdn.3dassets.dev/assets/33692/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33692/v1/poster.webp","blurhash":"UCD9u9xu00WC-;fRM{fQ00NF~Wax4nj[%3ae","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":27100,"triangles":624,"vertices":1281,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000020142663288993945,-1],"max":[1,0.06201077185316073,1]},"sizeMeters":[2,0.062,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:15.176Z","updatedAt":"2026-09-11T03:54:15.305Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33692/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSurfacePanWithFaceOffDotIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33692/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33692/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33692/v1/model.glb\" alt=\"Ice Surface Pan with Face-off Dot (Ice Hockey Arena and Locker Room)\" 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/33692/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/33692/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33695","slug":"ice-hockey-arena-and-locker-room-goal-crease-section-a1a1fbf3","title":"Goal Crease Ice Pan (Ice Hockey Arena and Locker Room)","summary":"A 2 m ice pan painted with the goal line along its back edge and the goalkeeper crease drawn off it: a light blue fill inside a red outline. The crease is drawn at 950 mm radius so it sits inside the 2 m module rather than at the 1.83 m of a regulation rink.","description":"A 2 m ice pan painted with the goal line along its back edge and the goalkeeper crease drawn off it: a light blue fill inside a red outline. The crease is drawn at 950 mm radius so it sits inside the 2 m module rather than at the 1.83 m of a regulation rink. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-goal-crease-section-a1a1fbf3","cdnUrl":"https://cdn.3dassets.dev/assets/33695/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-goal-crease-section-a1a1fbf3","thumbnailUrl":"https://cdn.3dassets.dev/assets/33695/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33695/v1/poster.webp","blurhash":"UBB|EQ.700D+%3oyWARk00IB_4%KEJRQV{xt","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":21280,"triangles":444,"vertices":942,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000020142663288993945,-1],"max":[1,0.06324281357353816,1]},"sizeMeters":[2,0.063,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:17.887Z","updatedAt":"2026-09-11T03:54:18.009Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33695/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalCreaseIcePanIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33695/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33695/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33695/v1/model.glb\" alt=\"Goal Crease Ice Pan (Ice Hockey Arena and Locker Room)\" 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/33695/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/33695/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33696","slug":"ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","title":"Dasher Board Panel, 2 m (Ice Hockey Arena and Locker Room)","summary":"A 2 m dasher board module 1.07 m tall: a white kicked panel with a yellow kick plate on the ice face, a blue cap rail and two steel back posts. Panels butt on the 2 m module through board-left and board-right, so a run closes a rink and the glass module drops on top.","description":"A 2 m dasher board module 1.07 m tall: a white kicked panel with a yellow kick plate on the ice face, a blue cap rail and two steel back posts. Panels butt on the 2 m module through board-left and board-right, so a run closes a rink and the glass module drops on top. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","cdnUrl":"https://cdn.3dassets.dev/assets/33696/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-boards-panel-straight-ef6395f1","thumbnailUrl":"https://cdn.3dassets.dev/assets/33696/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33696/v1/poster.webp","blurhash":"UMH_}W-;9G%MOc_N%KM|00I^-;oasiE1NLjb","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":16596,"triangles":320,"vertices":725,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000041344526191144926,-0.1049549837319907],"max":[1,1.0700302347820534,0.06494338816492203]},"sizeMeters":[2,1.07,0.17],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:17.971Z","updatedAt":"2026-09-11T03:54:18.148Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33696/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DasherBoardPanel2MIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33696/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33696/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33696/v1/model.glb\" alt=\"Dasher Board Panel, 2 m (Ice Hockey Arena and Locker Room)\" 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/33696/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/33696/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33699","slug":"ice-hockey-arena-and-locker-room-boards-panel-corner-ed64e815","title":"Dasher Board Corner, 2 m Radius (Ice Hockey Arena and Locker Room)","summary":"A rink corner struck on a 2 m radius from eight short dasher segments, filling one 2 m module square, so a run turns through 90 degrees with no gap. The ice side is the concave face.","description":"A rink corner struck on a 2 m radius from eight short dasher segments, filling one 2 m module square, so a run turns through 90 degrees with no gap. The ice side is the concave face. Its ends sit on the straight panels grid: board-left faces +Z at the -X end and board-right faces +X at the -Z end. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-boards-panel-corner-ed64e815","cdnUrl":"https://cdn.3dassets.dev/assets/33699/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-boards-panel-corner-ed64e815","thumbnailUrl":"https://cdn.3dassets.dev/assets/33699/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33699/v1/poster.webp","blurhash":"UFEMOIt7IV%M.Aj]MxbH00WBxUIU8^ax%Ne.","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":73492,"triangles":1792,"vertices":3880,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.0873789379480803,0.00001837792902825708,-1.0641969442367554],"max":[1.0085725784301758,1.0699842358729108,1.0085725784301758]},"sizeMeters":[2.096,1.07,2.073],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:18.856Z","updatedAt":"2026-09-11T03:54:18.956Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33699/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DasherBoardCorner2MRadiusIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33699/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33699/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33699/v1/model.glb\" alt=\"Dasher Board Corner, 2 m Radius (Ice Hockey Arena and Locker Room)\" 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/33699/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/33699/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33697","slug":"ice-hockey-arena-and-locker-room-boards-gate-panel-718321b4","title":"Dasher Board Gate Panel (Ice Hockey Arena and Locker Room)","summary":"The same 2 m dasher module with a 900 mm gate in it: steel jamb posts, a hinged leaf with its own kick plate and cap, and a grab bar. This is the gate the resurfacer and the crew come through.","description":"The same 2 m dasher module with a 900 mm gate in it: steel jamb posts, a hinged leaf with its own kick plate and cap, and a grab bar. This is the gate the resurfacer and the crew come through. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: boards-gate. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-boards-gate-panel-718321b4","cdnUrl":"https://cdn.3dassets.dev/assets/33697/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-boards-gate-panel-718321b4","thumbnailUrl":"https://cdn.3dassets.dev/assets/33697/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33697/v1/poster.webp","blurhash":"UHF~mp%1D*M_Xq~qxpM_00Ni-pxWVp9aM~oN","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":46088,"triangles":992,"vertices":2249,"meshes":8,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1,-0.000043783616214931875,-0.10500633338358338],"max":[1,1.0712301954906716,0.08599658208524563]},"sizeMeters":[2,1.071,0.191],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:17.133Z","updatedAt":"2026-09-11T03:54:17.233Z","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/33697/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 DasherBoardGatePanelIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33697/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/33697/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33697/v1/model.glb\" alt=\"Dasher Board Gate Panel (Ice Hockey Arena and Locker Room)\" 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/33697/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/33697/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33701","slug":"ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","title":"Protective Glass Panel, 2 m (Ice Hockey Arena and Locker Room)","summary":"A 2 m protective glass module 1.6 m tall in slim dark stanchions on a steel shoe. It is modelled to stand on top of a dasher board module, so place it at 1.07 m over the boards; glass-left and glass-right butt panel to panel along a run. The glass is a solid sheet with no flex.","description":"A 2 m protective glass module 1.6 m tall in slim dark stanchions on a steel shoe. It is modelled to stand on top of a dasher board module, so place it at 1.07 m over the boards; glass-left and glass-right butt panel to panel along a run. The glass is a solid sheet with no flex. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","cdnUrl":"https://cdn.3dassets.dev/assets/33701/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-protective-glass-pane-997b851b","thumbnailUrl":"https://cdn.3dassets.dev/assets/33701/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33701/v1/poster.webp","blurhash":"UBD,AtWC00M{^%?b9a9F00%L~pIV4.Ro_3xV","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":20928,"triangles":416,"vertices":951,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.0199999809265137,-0.00003631731992258594,-0.07993896148622966],"max":[1.0199999809265137,1.6012508094561242,0.07993896148622966]},"sizeMeters":[2.04,1.601,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:20.766Z","updatedAt":"2026-09-11T03:54:20.890Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33701/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ProtectiveGlassPanel2MIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33701/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33701/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33701/v1/model.glb\" alt=\"Protective Glass Panel, 2 m (Ice Hockey Arena and Locker Room)\" 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/33701/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/33701/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33698","slug":"ice-hockey-arena-and-locker-room-hockey-goal-547b20bf","title":"Hockey Goal with Net (Ice Hockey Arena and Locker Room)","summary":"A regulation 1.83 m by 1.22 m hockey goal: a red tubular frame with a swept back frame, base pipes and a padded blue skirt inside the mouth. The mouth faces +Z.","description":"A regulation 1.83 m by 1.22 m hockey goal: a red tubular frame with a swept back frame, base pipes and a padded blue skirt inside the mouth. The mouth faces +Z. The netting is a static cord lattice, because a net cannot be made to billow by a rigid node transform, and the pegs that anchor the frame into the ice are a separate model. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-goal-547b20bf","cdnUrl":"https://cdn.3dassets.dev/assets/33698/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-goal-547b20bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/33698/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33698/v1/poster.webp","blurhash":"UDE2Y1~DHq]6q?}[x_Io009F-;O@Gc9avy%1","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":94232,"triangles":2144,"vertices":4907,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.9397274851799011,0.000012515509252630785,-0.870740100314934],"max":[0.9397274851799011,1.2473231568692875,0.025940082540828968]},"sizeMeters":[1.879,1.247,0.897],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:18.180Z","updatedAt":"2026-09-11T03:54:18.284Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33698/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyGoalWithNetIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33698/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33698/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33698/v1/model.glb\" alt=\"Hockey Goal with Net (Ice Hockey Arena and Locker Room)\" 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/33698/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/33698/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33713","slug":"ice-hockey-arena-and-locker-room-net-anchor-peg-set-55b2c9f1","title":"Goal Anchor Peg Set (Ice Hockey Arena and Locker Room)","summary":"A tray of four steel goal anchor pegs with red collars and the drift used to set them, for pinning a goal frame into the ice. One placement beside the crease.","description":"A tray of four steel goal anchor pegs with red collars and the drift used to set them, for pinning a goal frame into the ice. One placement beside the crease. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-net-anchor-peg-set-55b2c9f1","cdnUrl":"https://cdn.3dassets.dev/assets/33713/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-net-anchor-peg-set-55b2c9f1","thumbnailUrl":"https://cdn.3dassets.dev/assets/33713/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33713/v1/poster.webp","blurhash":"U49QBfGF00|@}uXmEy#R00v#~XAX0KrC;RB:","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":26012,"triangles":560,"vertices":1183,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.23000000417232513,0.000011444360276533644,-0.1500015286465831],"max":[0.23000000417232513,0.11999158822063694,0.2899924116728856]},"sizeMeters":[0.46,0.12,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:26.032Z","updatedAt":"2026-09-11T03:54:26.151Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33713/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalAnchorPegSetIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33713/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33713/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33713/v1/model.glb\" alt=\"Goal Anchor Peg Set (Ice Hockey Arena and Locker Room)\" 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/33713/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/33713/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33711","slug":"ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","title":"Training Cone Set (Ice Hockey Arena and Locker Room)","summary":"Five 310 mm training cones on square bases with reflective collars, set out as a drill lane. Placed as one model so a skills drill is one placement; the cones do not separate.","description":"Five 310 mm training cones on square bases with reflective collars, set out as a drill lane. Placed as one model so a skills drill is one placement; the cones do not separate. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","cdnUrl":"https://cdn.3dassets.dev/assets/33711/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-drill-cone-set-428c5f59","thumbnailUrl":"https://cdn.3dassets.dev/assets/33711/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33711/v1/poster.webp","blurhash":"U5A,q2%L0102xUt6M}M|00WA~T?ZS8NHxr%K","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":49120,"triangles":1160,"vertices":2455,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6299999952316284,0.0000019223467718383624,-0.48003310421895845],"max":[0.6299999952316284,0.3250035096597733,0.4700331137557016]},"sizeMeters":[1.26,0.325,0.95],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:25.330Z","updatedAt":"2026-09-11T03:54:25.508Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33711/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrainingConeSetIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33711/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33711/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33711/v1/model.glb\" alt=\"Training Cone Set (Ice Hockey Arena and Locker Room)\" 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/33711/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/33711/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33710","slug":"ice-hockey-arena-and-locker-room-puck-bucket-a9f7c223","title":"Puck Bucket (Ice Hockey Arena and Locker Room)","summary":"A 440 mm blue bucket with a steel rim and lifting lugs, filled with practice pucks. The pucks are part of the model; the separate puck design is the one to place loose on the ice.","description":"A 440 mm blue bucket with a steel rim and lifting lugs, filled with practice pucks. The pucks are part of the model; the separate puck design is the one to place loose on the ice. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-puck-bucket-a9f7c223","cdnUrl":"https://cdn.3dassets.dev/assets/33710/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-puck-bucket-a9f7c223","thumbnailUrl":"https://cdn.3dassets.dev/assets/33710/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33710/v1/poster.webp","blurhash":"U67LZhx_8wVp~UjDNNp0QRV=cHo~TMo#R2RO","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":42676,"triangles":1016,"vertices":2110,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.23749999701976776,-0.000010978535445710369,-0.23399189439952275],"max":[0.23749999701976776,0.3836710876402509,0.23399189439952275]},"sizeMeters":[0.475,0.384,0.468],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:26.227Z","updatedAt":"2026-09-11T03:54:26.324Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33710/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PuckBucketIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33710/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33710/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33710/v1/model.glb\" alt=\"Puck Bucket (Ice Hockey Arena and Locker Room)\" 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/33710/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/33710/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33714","slug":"ice-hockey-arena-and-locker-room-puck-48ffea52","title":"Ice Hockey Puck (Ice Hockey Arena and Locker Room)","summary":"A regulation vulcanised rubber puck, 76 mm across and 25.4 mm thick, with the milled edge chamfers. Lies flat on the ice.","description":"A regulation vulcanised rubber puck, 76 mm across and 25.4 mm thick, with the milled edge chamfers. Lies flat on the ice. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-puck-48ffea52","cdnUrl":"https://cdn.3dassets.dev/assets/33714/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-puck-48ffea52","thumbnailUrl":"https://cdn.3dassets.dev/assets/33714/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33714/v1/poster.webp","blurhash":"U25X[Zx]00M{?cWVM{oz00RP_3xa00s:xuRP","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":7400,"triangles":160,"vertices":328,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.03799999877810478,-0.0000022306480826767006,-0.03799999877810478],"max":[0.03799999877810478,0.025402230341118756,0.03799999877810478]},"sizeMeters":[0.076,0.025,0.076],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:27.230Z","updatedAt":"2026-09-11T03:54:27.330Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33714/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceHockeyPuckIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33714/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33714/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33714/v1/model.glb\" alt=\"Ice Hockey Puck (Ice Hockey Arena and Locker Room)\" 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/33714/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/33714/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33716","slug":"ice-hockey-arena-and-locker-room-hockey-stick-heel-cur-ce0898c1","title":"Hockey Stick, Heel Curve (Ice Hockey Arena and Locker Room)","summary":"The same stick with a heel curve blade: the bend sits right at the heel and the toe runs straight off it, the pattern a player who shoots off the back foot picks.","description":"The same stick with a heel curve blade: the bend sits right at the heel and the toe runs straight off it, the pattern a player who shoots off the back foot picks. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-stick-heel-cur-ce0898c1","cdnUrl":"https://cdn.3dassets.dev/assets/33716/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-stick-heel-cur-ce0898c1","thumbnailUrl":"https://cdn.3dassets.dev/assets/33716/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33716/v1/poster.webp","blurhash":"U67UCw~pE2M}oLIUD*kC004o-o%LNa?b~WjZ","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":37548,"triangles":864,"vertices":1837,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.02914025569209283,0.000002350175335594923,-1.3212000131607056],"max":[0.3172866974944753,0.048024611562433,0.11668183588023696]},"sizeMeters":[0.346,0.048,1.438],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:27.739Z","updatedAt":"2026-09-11T03:54:27.834Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33716/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyStickHeelCurveIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33716/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33716/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33716/v1/model.glb\" alt=\"Hockey Stick, Heel Curve (Ice Hockey Arena and Locker Room)\" 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/33716/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/33716/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33708","slug":"ice-hockey-arena-and-locker-room-snow-shovel-d5dd276b","title":"Ice Snow Shovel (Ice Hockey Arena and Locker Room)","summary":"A 560 mm bladed snow shovel with a blue scoop, a steel wear strip and a long timber handle, for clearing the snow a scrape leaves at the boards.","description":"A 560 mm bladed snow shovel with a blue scoop, a steel wear strip and a long timber handle, for clearing the snow a scrape leaves at the boards. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-snow-shovel-d5dd276b","cdnUrl":"https://cdn.3dassets.dev/assets/33708/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-snow-shovel-d5dd276b","thumbnailUrl":"https://cdn.3dassets.dev/assets/33708/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33708/v1/poster.webp","blurhash":"U75##5iZ4mcHn1tTbxMw00b{?beRPEI8r.-?","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":12584,"triangles":240,"vertices":523,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2800050101373675,0.000020453392427954853,-0.1891200840473175],"max":[0.2800050101373675,1.00906639391287,1.1083101034164429]},"sizeMeters":[0.56,1.009,1.297],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:24.070Z","updatedAt":"2026-09-11T03:54:24.194Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33708/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSnowShovelIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33708/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33708/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33708/v1/model.glb\" alt=\"Ice Snow Shovel (Ice Hockey Arena and Locker Room)\" 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/33708/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/33708/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33706","slug":"ice-hockey-arena-and-locker-room-rink-squeegee-a1d582b1","title":"Rink Squeegee (Ice Hockey Arena and Locker Room)","summary":"A 950 mm rink squeegee: an alloy stock with a rubber blade under it, a blue socket and a long timber handle with a grip. Used to pull standing water off a flooded sheet.","description":"A 950 mm rink squeegee: an alloy stock with a rubber blade under it, a blue socket and a long timber handle with a grip. Used to pull standing water off a flooded sheet. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-rink-squeegee-a1d582b1","cdnUrl":"https://cdn.3dassets.dev/assets/33706/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-rink-squeegee-a1d582b1","thumbnailUrl":"https://cdn.3dassets.dev/assets/33706/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33706/v1/poster.webp","blurhash":"U36kO_9F4;X9ad?bIVIo00-;~URPXA00?a?a","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14960,"triangles":272,"vertices":607,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.4749999940395355,-0.000011520443080757087,-0.029999999329447746],"max":[0.4749999940395355,1.0889177369088832,1.368209958076477]},"sizeMeters":[0.95,1.089,1.398],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:22.409Z","updatedAt":"2026-09-11T03:54:22.517Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33706/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RinkSqueegeeIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33706/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33706/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33706/v1/model.glb\" alt=\"Rink Squeegee (Ice Hockey Arena and Locker Room)\" 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/33706/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/33706/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33715","slug":"ice-hockey-arena-and-locker-room-hockey-stick-552f90d7","title":"Hockey Stick (Ice Hockey Arena and Locker Room)","summary":"A 1.32 m senior hockey stick lying flat as it lies on the ice: a taped butt and knob, a composite shaft and a 300 mm mid curve blade set at the lie angle, wrapped with white tape. The blade curve is modelled, not textured.","description":"A 1.32 m senior hockey stick lying flat as it lies on the ice: a taped butt and knob, a composite shaft and a 300 mm mid curve blade set at the lie angle, wrapped with white tape. The blade curve is modelled, not textured. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-stick-552f90d7","cdnUrl":"https://cdn.3dassets.dev/assets/33715/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-stick-552f90d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/33715/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33715/v1/poster.webp","blurhash":"U57UCu_24pRoxtIUD*xt004o^%%LD+?b~pIU","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":37460,"triangles":864,"vertices":1837,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.028285862343222612,0.000003491719246682609,-1.3212000131607056],"max":[0.27472412719002437,0.04796681037244954,0.2234061360359192]},"sizeMeters":[0.303,0.048,1.545],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:27.666Z","updatedAt":"2026-09-11T03:54:27.781Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33715/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyStickIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33715/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33715/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33715/v1/model.glb\" alt=\"Hockey Stick (Ice Hockey Arena and Locker Room)\" 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/33715/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/33715/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33717","slug":"ice-hockey-arena-and-locker-room-hockey-stick-toe-curv-277a318d","title":"Hockey Stick, Toe Curve (Ice Hockey Arena and Locker Room)","summary":"The same stick with a toe curve blade: a straight heel opening into a hooked toe, longer and narrower, for a quick release.","description":"The same stick with a toe curve blade: a straight heel opening into a hooked toe, longer and narrower, for a quick release. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-stick-toe-curv-277a318d","cdnUrl":"https://cdn.3dassets.dev/assets/33717/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-stick-toe-curv-277a318d","thumbnailUrl":"https://cdn.3dassets.dev/assets/33717/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33717/v1/poster.webp","blurhash":"U47A}B_20MI=xtD%D%xu004.^*-oD*_3~pIU","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":37544,"triangles":864,"vertices":1837,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.027433231387985535,-7.047330172239852e-7,-1.3212000131607056],"max":[0.2696789092465766,0.048022616709554,0.26128917932510376]},"sizeMeters":[0.297,0.048,1.582],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:27.908Z","updatedAt":"2026-09-11T03:54:28.086Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33717/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyStickToeCurveIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33717/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33717/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33717/v1/model.glb\" alt=\"Hockey Stick, Toe Curve (Ice Hockey Arena and Locker Room)\" 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/33717/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/33717/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33718","slug":"ice-hockey-arena-and-locker-room-goalie-stick-91cd1483","title":"Goalie Stick (Ice Hockey Arena and Locker Room)","summary":"A goalkeeper stick lying flat: a taped butt and knob, a shaft stepping into a 580 mm white paddle with a blue heel band, and a 340 mm blade at the lie angle wrapped with blue tape. Bigger in every dimension than a player stick beside it.","description":"A goalkeeper stick lying flat: a taped butt and knob, a shaft stepping into a 580 mm white paddle with a blue heel band, and a 340 mm blade at the lie angle wrapped with blue tape. Bigger in every dimension than a player stick beside it. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-goalie-stick-91cd1483","cdnUrl":"https://cdn.3dassets.dev/assets/33718/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-goalie-stick-91cd1483","thumbnailUrl":"https://cdn.3dassets.dev/assets/33718/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33718/v1/poster.webp","blurhash":"U57BJ?_4009Ex[IUIU%2004m_3?wDj-=?bD*","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":43508,"triangles":992,"vertices":2115,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.06098078945530286,-0.0000059820729689467195,-1.2549999952316284],"max":[0.30978435378691194,0.05600528639896031,0.26084253191947937]},"sizeMeters":[0.371,0.056,1.516],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:29.925Z","updatedAt":"2026-09-11T03:54:30.027Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33718/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalieStickIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33718/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33718/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33718/v1/model.glb\" alt=\"Goalie Stick (Ice Hockey Arena and Locker Room)\" 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/33718/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/33718/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33700","slug":"ice-hockey-arena-and-locker-room-players-bench-3ae7f6da","title":"Players Bench with Gate (Ice Hockey Arena and Locker Room)","summary":"A 3.6 m players bench: dasher board on the ice side with a 900 mm hinged gate, a 1.9 m white back wall with a blue cap, side walls, a rubber floor and a three slat timber bench on steel legs, with a stick rail behind it.","description":"A 3.6 m players bench: dasher board on the ice side with a 900 mm hinged gate, a 1.9 m white back wall with a blue cap, side walls, a rubber floor and a three slat timber bench on steel legs, with a stick rail behind it. It lets into the board line rather than standing behind it, so leave a 3.6 m gap in the run for it. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: bench-gate. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-players-bench-3ae7f6da","cdnUrl":"https://cdn.3dassets.dev/assets/33700/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-players-bench-3ae7f6da","thumbnailUrl":"https://cdn.3dassets.dev/assets/33700/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33700/v1/poster.webp","blurhash":"UBH2p2xn00WEO__4i]IA00IuxajXnKInngD%","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":85552,"triangles":1888,"vertices":4257,"meshes":9,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.8300000429153442,-0.00001677193429050483,-0.7250798424486383],"max":[1.8300000429153442,1.9500799885921623,0.7896830324321975]},"sizeMeters":[3.66,1.95,1.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:19.713Z","updatedAt":"2026-09-11T03:54:19.811Z","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/33700/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 PlayersBenchWithGateIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33700/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/33700/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33700/v1/model.glb\" alt=\"Players Bench with Gate (Ice Hockey Arena and Locker Room)\" 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/33700/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/33700/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33703","slug":"ice-hockey-arena-and-locker-room-scorers-table-2574e960","title":"Scorers Table (Ice Hockey Arena and Locker Room)","summary":"A 2.2 m scorers table: a timber top on a blue faced desk with a blank white sign panel, steel legs, a tilted timing console, a horn box with its trumpet and a slatted bench behind it for the crew.","description":"A 2.2 m scorers table: a timber top on a blue faced desk with a blank white sign panel, steel legs, a tilted timing console, a horn box with its trumpet and a slatted bench behind it for the crew. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-scorers-table-2574e960","cdnUrl":"https://cdn.3dassets.dev/assets/33703/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-scorers-table-2574e960","thumbnailUrl":"https://cdn.3dassets.dev/assets/33703/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33703/v1/poster.webp","blurhash":"UEB|Qt.A01V@-NxsbxWZ00Mv?Gbb5FIqs7V?","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":42928,"triangles":910,"vertices":2009,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.100000023841858,0.00006263686622742792,-1.0299735950947784],"max":[1.100000023841858,0.9351569572636725,0.3599736380101226]},"sizeMeters":[2.2,0.935,1.39],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:20.764Z","updatedAt":"2026-09-11T03:54:20.882Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33703/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScorersTableIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33703/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33703/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33703/v1/model.glb\" alt=\"Scorers Table (Ice Hockey Arena and Locker Room)\" 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/33703/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/33703/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33702","slug":"ice-hockey-arena-and-locker-room-penalty-box-057f8942","title":"Penalty Box (Ice Hockey Arena and Locker Room)","summary":"A 2.4 m penalty box on the same construction as the bench: dasher board with an 800 mm hinged door, a white back wall with a blue cap and a red sign panel, side walls, a rubber floor and a slatted bench.","description":"A 2.4 m penalty box on the same construction as the bench: dasher board with an 800 mm hinged door, a white back wall with a blue cap and a red sign panel, side walls, a rubber floor and a slatted bench. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: box-door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-penalty-box-057f8942","cdnUrl":"https://cdn.3dassets.dev/assets/33702/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-penalty-box-057f8942","thumbnailUrl":"https://cdn.3dassets.dev/assets/33702/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33702/v1/poster.webp","blurhash":"UCH__SIT00xbOx-=RNRO00jwoMt6WARPs6Io","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":73188,"triangles":1664,"vertices":3757,"meshes":10,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.2300000190734863,-0.00003952213102039262,-0.6249739059471074],"max":[1.2300000190734863,1.8500100847737384,0.6896321471285645]},"sizeMeters":[2.46,1.85,1.315],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:20.944Z","updatedAt":"2026-09-11T03:54:21.043Z","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/33702/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 PenaltyBoxIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33702/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/33702/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33702/v1/model.glb\" alt=\"Penalty Box (Ice Hockey Arena and Locker Room)\" 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/33702/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/33702/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33704","slug":"ice-hockey-arena-and-locker-room-arena-scoreboard-655d2b37","title":"Arena Scoreboard on Stand (Ice Hockey Arena and Locker Room)","summary":"A 2.6 m arena scoreboard on a braced four leg stand, 4 m to the cap: a dark box with a display face and a red banner on both sides, a blue cap and a yellow advertising flap hinged under the board.","description":"A 2.6 m arena scoreboard on a braced four leg stand, 4 m to the cap: a dark box with a display face and a red banner on both sides, a blue cap and a yellow advertising flap hinged under the board. Stand it behind the end boards. The display is a blank panel, not a working readout. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: score-flap. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-arena-scoreboard-655d2b37","cdnUrl":"https://cdn.3dassets.dev/assets/33704/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-arena-scoreboard-655d2b37","thumbnailUrl":"https://cdn.3dassets.dev/assets/33704/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33704/v1/poster.webp","blurhash":"UA7BftkX00i]yZo#R3ROXUozngRjRiogs;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":51224,"triangles":1088,"vertices":2449,"meshes":7,"materials":6,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-1.350000023841858,0,-0.6600061146803405],"max":[1.350000023841858,4.110981224846876,0.6600061146803405]},"sizeMeters":[2.7,4.111,1.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:22.498Z","updatedAt":"2026-09-11T03:54:22.607Z","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/33704/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 ArenaScoreboardOnStandIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33704/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/33704/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33704/v1/model.glb\" alt=\"Arena Scoreboard on Stand (Ice Hockey Arena and Locker Room)\" 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/33704/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/33704/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33705","slug":"ice-hockey-arena-and-locker-room-ice-resurfacer-1eade0ec","title":"Ice Resurfacer (Ice Hockey Arena and Locker Room)","summary":"A 4.4 m ice resurfacer: a blue snow tank on a steel chassis with a yellow cap rail, an open cab with a seat, wheel and canopy, and a full width conditioner at the tail carrying the wash brush.","description":"A 4.4 m ice resurfacer: a blue snow tank on a steel chassis with a yellow cap rail, an open cab with a seat, wheel and canopy, and a full width conditioner at the tail carrying the wash brush. The conveyor, the augers inside the tank and the water hose are static, because a belt or a flexible run cannot be driven by a rigid node transform. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-front-left, wheel-front-right, wheel-rear-left, wheel-rear-right, brush. Rigid node-transform clips: wheel-roll and brush-spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-resurfacer-1eade0ec","cdnUrl":"https://cdn.3dassets.dev/assets/33705/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-resurfacer-1eade0ec","thumbnailUrl":"https://cdn.3dassets.dev/assets/33705/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33705/v1/poster.webp","blurhash":"UGCP|lx]02Ri~RV?9bt700RP%LxZ0To$?YWB","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":109680,"triangles":3120,"vertices":6391,"meshes":14,"materials":7,"textures":0,"animations":["wheel-roll","brush-spin"],"boundingBox":{"min":[-1.0000351129203355,-3.576278662098531e-9,-2.569963657938754],"max":[1.0000351129203355,2.510029306458529,1.899999976158142]},"sizeMeters":[2,2.51,4.47],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:23.419Z","updatedAt":"2026-09-11T03:54:23.515Z","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/33705/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 IceResurfacerIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33705/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/33705/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33705/v1/model.glb\" alt=\"Ice Resurfacer (Ice Hockey Arena and Locker Room)\" 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/33705/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/33705/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33707","slug":"ice-hockey-arena-and-locker-room-ice-scraper-94103acc","title":"Hand Ice Scraper (Ice Hockey Arena and Locker Room)","summary":"A 520 mm hand ice scraper: a wide steel blade in a dark stock on a long timber handle, for cutting ridges and edges the resurfacer cannot reach.","description":"A 520 mm hand ice scraper: a wide steel blade in a dark stock on a long timber handle, for cutting ridges and edges the resurfacer cannot reach. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-ice-scraper-94103acc","cdnUrl":"https://cdn.3dassets.dev/assets/33707/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-ice-scraper-94103acc","thumbnailUrl":"https://cdn.3dassets.dev/assets/33707/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33707/v1/poster.webp","blurhash":"U471i$IU0gxbV??bRlE000t7~BRjkY00xr_3","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11896,"triangles":208,"vertices":472,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.25999999046325684,0.0000012820495837295026,-0.07999084151311052],"max":[0.25999999046325684,0.9789477340120106,1.2383356094360352]},"sizeMeters":[0.52,0.979,1.318],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:23.632Z","updatedAt":"2026-09-11T03:54:23.743Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33707/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HandIceScraperIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33707/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33707/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33707/v1/model.glb\" alt=\"Hand Ice Scraper (Ice Hockey Arena and Locker Room)\" 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/33707/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/33707/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33709","slug":"ice-hockey-arena-and-locker-room-snow-bucket-fd690e3b","title":"Ice Snow Bucket (Ice Hockey Arena and Locker Room)","summary":"A 680 mm yellow snow tub with a rolled rim, lifting lugs and a steel bail, heaped with scraped snow. The snow is modelled as a solid cap, not a particle system.","description":"A 680 mm yellow snow tub with a rolled rim, lifting lugs and a steel bail, heaped with scraped snow. The snow is modelled as a solid cap, not a particle system. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-snow-bucket-fd690e3b","cdnUrl":"https://cdn.3dassets.dev/assets/33709/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-snow-bucket-fd690e3b","thumbnailUrl":"https://cdn.3dassets.dev/assets/33709/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33709/v1/poster.webp","blurhash":"UBC?V?%K00D+0TNH^v%100Rk~pt6?7xZNNM|","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":39216,"triangles":916,"vertices":1884,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.35749998688697815,-0.00001954411781462939,-0.3540086695309848],"max":[0.35749998688697815,0.8759495964308543,0.3540086695309848]},"sizeMeters":[0.715,0.876,0.708],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:24.262Z","updatedAt":"2026-09-11T03:54:24.436Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33709/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceSnowBucketIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33709/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33709/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33709/v1/model.glb\" alt=\"Ice Snow Bucket (Ice Hockey Arena and Locker Room)\" 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/33709/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/33709/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33712","slug":"ice-hockey-arena-and-locker-room-hose-reel-0a4e3a65","title":"Flood Hose Reel (Ice Hockey Arena and Locker Room)","summary":"A 760 mm flood hose reel on a steel base: a drum between two frames wound with hose, and a red cranked handle. The hose is a static coil, since a flexible run is not reachable with a rigid node transform, and the drum is modelled fixed for the same reason the coil is.","description":"A 760 mm flood hose reel on a steel base: a drum between two frames wound with hose, and a red cranked handle. The hose is a static coil, since a flexible run is not reachable with a rigid node transform, and the drum is modelled fixed for the same reason the coil is. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hose-reel-0a4e3a65","cdnUrl":"https://cdn.3dassets.dev/assets/33712/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hose-reel-0a4e3a65","thumbnailUrl":"https://cdn.3dassets.dev/assets/33712/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33712/v1/poster.webp","blurhash":"U37xI5xu00Mv0:?b~UD$8wadx{kXvJM|E4WB","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":69264,"triangles":1688,"vertices":3469,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6899999976158142,-0.0000034588766181231634,-0.3400000035762787],"max":[0.41999755037317676,0.9800000190734863,0.3400000035762787]},"sizeMeters":[1.11,0.98,0.68],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:25.823Z","updatedAt":"2026-09-11T03:54:26.037Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33712/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FloodHoseReelIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33712/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33712/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33712/v1/model.glb\" alt=\"Flood Hose Reel (Ice Hockey Arena and Locker Room)\" 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/33712/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/33712/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33726","slug":"ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","title":"Interlocking Rubber Floor Tile (Ice Hockey Arena and Locker Room)","summary":"A 1 m interlocking rubber locker room tile, 20 mm thick, with three teeth on each of its +X and +Z edges and the matching channel on the other two. The wearing face carries the moulded stud pattern a skate blade can be walked over.","description":"A 1 m interlocking rubber locker room tile, 20 mm thick, with three teeth on each of its +X and +Z edges and the matching channel on the other two. The wearing face carries the moulded stud pattern a skate blade can be walked over. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","cdnUrl":"https://cdn.3dassets.dev/assets/33726/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-rubber-floor-tile-e32ca204","thumbnailUrl":"https://cdn.3dassets.dev/assets/33726/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33726/v1/poster.webp","blurhash":"U26H+PxZ00ocW?afWBaz00NH~qV]r;kUt6oc","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":55100,"triangles":1248,"vertices":2845,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.4880000054836273,-0.000010071629967862983,-0.4880000054836273],"max":[0.5120000243186951,0.023013717891399943,0.5120000243186951]},"sizeMeters":[1,0.023,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:32.818Z","updatedAt":"2026-09-11T03:54:32.920Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33726/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InterlockingRubberFloorTileIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33726/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33726/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33726/v1/model.glb\" alt=\"Interlocking Rubber Floor Tile (Ice Hockey Arena and Locker Room)\" 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/33726/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/33726/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33727","slug":"ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","title":"Locker Room Stall Unit (Ice Hockey Arena and Locker Room)","summary":"A 1.2 m locker room stall 2.05 m tall: a timber back panel and cheeks, a bench seat at 460 mm, a boot shelf under it, a top shelf, three hooks and a blue name plate. Units butt on the 1.2 m module through stall-left and stall-right, so a run of them lines a wall.","description":"A 1.2 m locker room stall 2.05 m tall: a timber back panel and cheeks, a bench seat at 460 mm, a boot shelf under it, a top shelf, three hooks and a blue name plate. Units butt on the 1.2 m module through stall-left and stall-right, so a run of them lines a wall. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","cdnUrl":"https://cdn.3dassets.dev/assets/33727/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-stall-bench-unit-41d66ece","thumbnailUrl":"https://cdn.3dassets.dev/assets/33727/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33727/v1/poster.webp","blurhash":"U9EVc:s=00xA~SxC58Iu0NI;=@%0t7t7M}M{","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":32952,"triangles":704,"vertices":1564,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5912082324317071,0,-0.309960555539768],"max":[0.5900311151553354,2.049999952316284,0.3200335671660966]},"sizeMeters":[1.181,2.05,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:33.016Z","updatedAt":"2026-09-11T03:54:33.120Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33727/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LockerRoomStallUnitIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33727/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33727/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33727/v1/model.glb\" alt=\"Locker Room Stall Unit (Ice Hockey Arena and Locker Room)\" 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/33727/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/33727/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33728","slug":"ice-hockey-arena-and-locker-room-jersey-on-hanger-61931b95","title":"Jersey on a Hanger (Ice Hockey Arena and Locker Room)","summary":"A blue game jersey with white and red waist stripes and a blank white number panel, hanging on a wire hanger. Hang it at a stall hook: the model rests on y=0 with the hook 850 mm above it, so place it at the hook height. The cloth is a rigid shell, not simulated.","description":"A blue game jersey with white and red waist stripes and a blank white number panel, hanging on a wire hanger. Hang it at a stall hook: the model rests on y=0 with the hook 850 mm above it, so place it at the hook height. The cloth is a rigid shell, not simulated. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-jersey-on-hanger-61931b95","cdnUrl":"https://cdn.3dassets.dev/assets/33728/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-jersey-on-hanger-61931b95","thumbnailUrl":"https://cdn.3dassets.dev/assets/33728/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33728/v1/poster.webp","blurhash":"UE9k8N%M00E1skt8X9Ri00M|_4-oM|Risoxu","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":60024,"triangles":1476,"vertices":2969,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.36103376746177673,-0.000021714640408787567,-0.08999367451020297],"max":[0.36103376746177673,0.7523281807009707,0.09998656568522547]},"sizeMeters":[0.722,0.752,0.19],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:33.451Z","updatedAt":"2026-09-11T03:54:33.549Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33728/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JerseyOnAHangerIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33728/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33728/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33728/v1/model.glb\" alt=\"Jersey on a Hanger (Ice Hockey Arena and Locker Room)\" 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/33728/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/33728/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33729","slug":"ice-hockey-arena-and-locker-room-shoulder-pads-on-hang-0ae31543","title":"Shoulder Pads on a Hanger (Ice Hockey Arena and Locker Room)","summary":"A set of shoulder pads on a hanger: a white chest shell with blue caps and bicep guards and a red collar roll. Hang it at a stall hook. The shoulder straps are static.","description":"A set of shoulder pads on a hanger: a white chest shell with blue caps and bicep guards and a red collar roll. Hang it at a stall hook. The shoulder straps are static. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-shoulder-pads-on-hang-0ae31543","cdnUrl":"https://cdn.3dassets.dev/assets/33729/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-shoulder-pads-on-hang-0ae31543","thumbnailUrl":"https://cdn.3dassets.dev/assets/33729/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33729/v1/poster.webp","blurhash":"UFB3v#%K00E7rVkYXmnM00M_~W-oK*nNrDNz","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":69696,"triangles":1776,"vertices":3459,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.36166366934776306,0.000010772473582831843,-0.12750037891764293],"max":[0.36166366934776306,0.5423282021586429,0.12750037891764293]},"sizeMeters":[0.723,0.542,0.255],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:34.044Z","updatedAt":"2026-09-11T03:54:34.143Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33729/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShoulderPadsOnAHangerIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33729/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33729/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33729/v1/model.glb\" alt=\"Shoulder Pads on a Hanger (Ice Hockey Arena and Locker Room)\" 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/33729/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/33729/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33730","slug":"ice-hockey-arena-and-locker-room-shin-guards-0fd9a962","title":"Shin Guards (Ice Hockey Arena and Locker Room)","summary":"A pair of shin guards standing on their ankles: white shells with blue knee caps and dark strap runs. The straps are modelled closed and do not move.","description":"A pair of shin guards standing on their ankles: white shells with blue knee caps and dark strap runs. The straps are modelled closed and do not move. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-shin-guards-0fd9a962","cdnUrl":"https://cdn.3dassets.dev/assets/33730/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-shin-guards-0fd9a962","thumbnailUrl":"https://cdn.3dassets.dev/assets/33730/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33730/v1/poster.webp","blurhash":"UADvsFx^00M_.Ax^MwD$00WC_4jY?8%1E3Io","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":48604,"triangles":1184,"vertices":2416,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2150000035762787,0.0000037457904799031994,-0.09063362330016383],"max":[0.2150000035762787,0.5040000081062317,0.10480660944995174]},"sizeMeters":[0.43,0.504,0.195],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:34.460Z","updatedAt":"2026-09-11T03:54:34.578Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33730/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShinGuardsIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33730/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33730/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33730/v1/model.glb\" alt=\"Shin Guards (Ice Hockey Arena and Locker Room)\" 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/33730/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/33730/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33724","slug":"ice-hockey-arena-and-locker-room-hockey-gloves-fad8a99c","title":"Hockey Gloves (Ice Hockey Arena and Locker Room)","summary":"A pair of hockey gloves sitting palm down: blue backs with segmented fingers, white flared cuffs, red thumbs and a cuff trim. Modelled as one pair in one file, so a stall is dressed with one placement.","description":"A pair of hockey gloves sitting palm down: blue backs with segmented fingers, white flared cuffs, red thumbs and a cuff trim. Modelled as one pair in one file, so a stall is dressed with one placement. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-gloves-fad8a99c","cdnUrl":"https://cdn.3dassets.dev/assets/33724/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-gloves-fad8a99c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33724/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33724/v1/poster.webp","blurhash":"UAA]~zBs0cv~}stSAHNF00]yo$Ez0}m*=XS%","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":77384,"triangles":1920,"vertices":3938,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.23499999940395355,-0.000001966193371574776,-0.22825874576022945],"max":[0.23499999940395355,0.18000197334592893,0.11350770759568694]},"sizeMeters":[0.47,0.18,0.342],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:32.352Z","updatedAt":"2026-09-11T03:54:32.451Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33724/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyGlovesIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33724/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33724/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33724/v1/model.glb\" alt=\"Hockey Gloves (Ice Hockey Arena and Locker Room)\" 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/33724/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/33724/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33723","slug":"ice-hockey-arena-and-locker-room-helmet-with-cage-53ced288","title":"Player Helmet with Cage (Ice Hockey Arena and Locker Room)","summary":"A red player helmet standing on its own rim as it stands on a stall shelf: a vented two piece shell with a white brow rim, a dark liner edge, ear covers with adjuster discs, and a steel cage clipped to the shell at both sides over a white chin cup. The chin strap is static.","description":"A red player helmet standing on its own rim as it stands on a stall shelf: a vented two piece shell with a white brow rim, a dark liner edge, ear covers with adjuster discs, and a steel cage clipped to the shell at both sides over a white chin cup. The chin strap is static. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-helmet-with-cage-53ced288","cdnUrl":"https://cdn.3dassets.dev/assets/33723/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-helmet-with-cage-53ced288","thumbnailUrl":"https://cdn.3dassets.dev/assets/33723/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33723/v1/poster.webp","blurhash":"UBEKo{?G0KD%{fM{AWxa0dI:|_$j2[tR=ejZ","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":75220,"triangles":1808,"vertices":3792,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.13200096225528973,-0.0000035762454889537443,-0.13600000739097595],"max":[0.13200096225528973,0.24733687106422278,0.1490018403376275]},"sizeMeters":[0.264,0.247,0.285],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:31.277Z","updatedAt":"2026-09-11T03:54:31.376Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33723/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlayerHelmetWithCageIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33723/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33723/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33723/v1/model.glb\" alt=\"Player Helmet with Cage (Ice Hockey Arena and Locker Room)\" 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/33723/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/33723/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33720","slug":"ice-hockey-arena-and-locker-room-goalie-mask-f427f311","title":"Goalie Mask (Ice Hockey Arena and Locker Room)","summary":"A goalkeeper mask standing on its chin: a blue shell with a white brow plate and a red top stripe, a steel cat eye cage and a separate backplate. The harness webbing is static.","description":"A goalkeeper mask standing on its chin: a blue shell with a white brow plate and a red top stripe, a steel cat eye cage and a separate backplate. The harness webbing is static. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-goalie-mask-f427f311","cdnUrl":"https://cdn.3dassets.dev/assets/33720/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-goalie-mask-f427f311","thumbnailUrl":"https://cdn.3dassets.dev/assets/33720/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33720/v1/poster.webp","blurhash":"UC9@r9?w8wD$$-M{NExt8wMcg6b_Rh%1xuNf","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":41828,"triangles":954,"vertices":1979,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.12299999967834216,-0.0000027384657075024688,-0.1850015287955947],"max":[0.12299999967834216,0.32633012533187866,0.16641040046371605]},"sizeMeters":[0.246,0.326,0.351],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:29.384Z","updatedAt":"2026-09-11T03:54:29.477Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33720/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalieMaskIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33720/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33720/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33720/v1/model.glb\" alt=\"Goalie Mask (Ice Hockey Arena and Locker Room)\" 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/33720/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/33720/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33721","slug":"ice-hockey-arena-and-locker-room-player-skate-1217cfdd","title":"Player Skate (Ice Hockey Arena and Locker Room)","summary":"A senior player skate: a dark composite boot with a red heel counter, a padded tongue, laced eyelets and a steel runner in a frame holder. Heel at the origin, toe toward +Z.","description":"A senior player skate: a dark composite boot with a red heel counter, a padded tongue, laced eyelets and a steel runner in a frame holder. Heel at the origin, toe toward +Z. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-player-skate-1217cfdd","cdnUrl":"https://cdn.3dassets.dev/assets/33721/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-player-skate-1217cfdd","thumbnailUrl":"https://cdn.3dassets.dev/assets/33721/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33721/v1/poster.webp","blurhash":"U58ga9t-00qt}uI;0{]-McR*kr$*9sRP-WpI","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":49576,"triangles":1152,"vertices":2387,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.04650105401457141,0.000006622372402440013,-0.13500000536441803],"max":[0.04650105401457141,0.3390009117941124,0.17499999701976776]},"sizeMeters":[0.093,0.339,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:29.712Z","updatedAt":"2026-09-11T03:54:29.810Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33721/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlayerSkateIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33721/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33721/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33721/v1/model.glb\" alt=\"Player Skate (Ice Hockey Arena and Locker Room)\" 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/33721/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/33721/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33722","slug":"ice-hockey-arena-and-locker-room-goalie-skate-251a6e36","title":"Goalie Skate (Ice Hockey Arena and Locker Room)","summary":"The goalkeeper cut of the same skate: a lower, wider white boot with a blue cowling over the toe and a flatter runner. Sits noticeably lower than the player skate beside it.","description":"The goalkeeper cut of the same skate: a lower, wider white boot with a blue cowling over the toe and a flatter runner. Sits noticeably lower than the player skate beside it. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-goalie-skate-251a6e36","cdnUrl":"https://cdn.3dassets.dev/assets/33722/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-goalie-skate-251a6e36","thumbnailUrl":"https://cdn.3dassets.dev/assets/33722/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33722/v1/poster.webp","blurhash":"UAA^k2x^00M_%NROR4p000RO~qo}E1tTo#eR","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":60040,"triangles":1440,"vertices":2933,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.06924014841624894,0.000006622372402440013,-0.13500000536441803],"max":[0.06924014841624894,0.28900092222492524,0.19175000488758087]},"sizeMeters":[0.138,0.289,0.327],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:30.972Z","updatedAt":"2026-09-11T03:54:31.083Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33722/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalieSkateIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33722/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33722/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33722/v1/model.glb\" alt=\"Goalie Skate (Ice Hockey Arena and Locker Room)\" 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/33722/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/33722/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33719","slug":"ice-hockey-arena-and-locker-room-goalie-pads-c713e1bd","title":"Goalie Leg Pads (Ice Hockey Arena and Locker Room)","summary":"A pair of 920 mm goalkeeper leg pads standing on their toes as they stand in a stall: white faces with blue roll segments, red knee stacks and the outer roll that gives a pad its silhouette. The straps are modelled flat against the pad and do not move.","description":"A pair of 920 mm goalkeeper leg pads standing on their toes as they stand in a stall: white faces with blue roll segments, red knee stacks and the outer roll that gives a pad its silhouette. The straps are modelled flat against the pad and do not move. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-goalie-pads-c713e1bd","cdnUrl":"https://cdn.3dassets.dev/assets/33719/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-goalie-pads-c713e1bd","thumbnailUrl":"https://cdn.3dassets.dev/assets/33719/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33719/v1/poster.webp","blurhash":"UBEyMcnP00XS~C%M9Z9Z0JtQ=}MyT{pIicMd","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":73016,"triangles":1824,"vertices":3654,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3599858044517613,0.0000053420284859655165,-0.08501235809616346],"max":[0.3599858044517613,0.949999988079071,0.1444934884439089]},"sizeMeters":[0.72,0.95,0.23],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:29.319Z","updatedAt":"2026-09-11T03:54:29.424Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33719/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoalieLegPadsIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33719/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33719/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33719/v1/model.glb\" alt=\"Goalie Leg Pads (Ice Hockey Arena and Locker Room)\" 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/33719/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/33719/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33725","slug":"ice-hockey-arena-and-locker-room-hockey-bag-1c01d046","title":"Hockey Kit Bag (Ice Hockey Arena and Locker Room)","summary":"A 1 m wheeled kit bag: a dark holdall on a rubber base rail with a zip run, a blue panel and static carry straps. Webbing and zips do not move.","description":"A 1 m wheeled kit bag: a dark holdall on a rubber base rail with a zip run, a blue panel and static carry straps. Webbing and zips do not move. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-hockey-bag-1c01d046","cdnUrl":"https://cdn.3dassets.dev/assets/33725/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-hockey-bag-1c01d046","thumbnailUrl":"https://cdn.3dassets.dev/assets/33725/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33725/v1/poster.webp","blurhash":"U58g~q?b00s%.A?Ii]In00M{.9S58^D%W@ng","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":33716,"triangles":768,"vertices":1624,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5249999761581421,-0.000008240106971795641,-0.22250350857288884],"max":[0.5249999761581421,0.5360059257308583,0.23997114421462404]},"sizeMeters":[1.05,0.536,0.462],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:31.776Z","updatedAt":"2026-09-11T03:54:31.874Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33725/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HockeyKitBagIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33725/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33725/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33725/v1/model.glb\" alt=\"Hockey Kit Bag (Ice Hockey Arena and Locker Room)\" 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/33725/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/33725/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33731","slug":"ice-hockey-arena-and-locker-room-stick-rack-e3e1e7ee","title":"Stick Rack (Ice Hockey Arena and Locker Room)","summary":"A 1.3 m stick rack: a steel base with two uprights, two rails and seven pairs of blue dividers, so a team hangs its sticks butt up in the room. Nothing on it moves; place sticks against it rather than expecting a clip.","description":"A 1.3 m stick rack: a steel base with two uprights, two rails and seven pairs of blue dividers, so a team hangs its sticks butt up in the room. Nothing on it moves; place sticks against it rather than expecting a clip. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-stick-rack-e3e1e7ee","cdnUrl":"https://cdn.3dassets.dev/assets/33731/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-stick-rack-e3e1e7ee","thumbnailUrl":"https://cdn.3dassets.dev/assets/33731/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33731/v1/poster.webp","blurhash":"U27_TjDh00Tg9n%1#fD*Q8t8Klxa=__NOt00","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":54720,"triangles":1216,"vertices":2789,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499999761581421,0.000006409316596071163,-0.20997496712039349],"max":[0.6499999761581421,1.2400213552989452,0.20997496712039349]},"sizeMeters":[1.3,1.24,0.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:34.696Z","updatedAt":"2026-09-11T03:54:34.796Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33731/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StickRackIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33731/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33731/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33731/v1/model.glb\" alt=\"Stick Rack (Ice Hockey Arena and Locker Room)\" 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/33731/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/33731/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33735","slug":"ice-hockey-arena-and-locker-room-trophy-shelf-78e4011e","title":"Trophy Shelf (Ice Hockey Arena and Locker Room)","summary":"A 1 m three shelf timber trophy stand with a blue backing panel, carrying three cups on plinths and a mounted shield. Stands against a locker room wall.","description":"A 1 m three shelf timber trophy stand with a blue backing panel, carrying three cups on plinths and a mounted shield. Stands against a locker room wall. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-trophy-shelf-78e4011e","cdnUrl":"https://cdn.3dassets.dev/assets/33735/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-trophy-shelf-78e4011e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33735/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33735/v1/poster.webp","blurhash":"U7ECRU=|00IU_1?GIW0M00Nx~Vj;V]%L%LD+","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":64228,"triangles":1536,"vertices":3271,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5012000203132629,0,-0.18001343350898766],"max":[0.500030518509476,1.5,0.18001343350898766]},"sizeMeters":[1.001,1.5,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:36.521Z","updatedAt":"2026-09-11T03:54:36.630Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33735/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrophyShelfIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33735/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33735/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33735/v1/model.glb\" alt=\"Trophy Shelf (Ice Hockey Arena and Locker Room)\" 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/33735/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/33735/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33737","slug":"ice-hockey-arena-and-locker-room-laundry-bin-b65d565a","title":"Laundry Bin (Ice Hockey Arena and Locker Room)","summary":"A 780 mm wheeled laundry bin: a blue tub on a dark chassis with four castors, a white label panel and a hinged white lid. The lid is a named node on its back edge and opens and closes; the castors are fixed.","description":"A 780 mm wheeled laundry bin: a blue tub on a dark chassis with four castors, a white label panel and a hinged white lid. The lid is a named node on its back edge and opens and closes; the castors are fixed. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: bin-lid. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-laundry-bin-b65d565a","cdnUrl":"https://cdn.3dassets.dev/assets/33737/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-laundry-bin-b65d565a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33737/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33737/v1/poster.webp","blurhash":"UB9*fdyY00I9~Vt79aRiUurXbzWYD+%L%1D*","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":24880,"triangles":512,"vertices":1126,"meshes":6,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.4000000059604645,0.000004733451831530344,-0.29001677738027454],"max":[0.4000000059604645,0.9899945070814926,0.29001677738027454]},"sizeMeters":[0.8,0.99,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:37.576Z","updatedAt":"2026-09-11T03:54:37.674Z","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/33737/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 LaundryBinIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33737/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/33737/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33737/v1/model.glb\" alt=\"Laundry Bin (Ice Hockey Arena and Locker Room)\" 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/33737/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/33737/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33734","slug":"ice-hockey-arena-and-locker-room-whiteboard-on-stand-ca671303","title":"Tactics Whiteboard on a Stand (Ice Hockey Arena and Locker Room)","summary":"A 1.3 m tactics whiteboard on a splayed steel stand: a white face with a pale rink plan, a red goal line and a blue zone line drawn on it, and a pen tray. The board is fixed to the stand and does not tilt.","description":"A 1.3 m tactics whiteboard on a splayed steel stand: a white face with a pale rink plan, a red goal line and a blue zone line drawn on it, and a pen tray. The board is fixed to the stand and does not tilt. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-whiteboard-on-stand-ca671303","cdnUrl":"https://cdn.3dassets.dev/assets/33734/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-whiteboard-on-stand-ca671303","thumbnailUrl":"https://cdn.3dassets.dev/assets/33734/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33734/v1/poster.webp","blurhash":"UBBN1hxu00M{~qxu4nMx4Tof.8M{00WB_Nof","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":30608,"triangles":622,"vertices":1345,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.6800162821421946,0,-0.39994421408363023],"max":[0.6800162821421946,1.7802395820617676,0.39994421408363023]},"sizeMeters":[1.36,1.78,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:36.132Z","updatedAt":"2026-09-11T03:54:36.237Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33734/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TacticsWhiteboardOnAStandIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33734/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33734/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33734/v1/model.glb\" alt=\"Tactics Whiteboard on a Stand (Ice Hockey Arena and Locker Room)\" 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/33734/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/33734/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33732","slug":"ice-hockey-arena-and-locker-room-water-bottle-rack-d725dfc5","title":"Water Bottle Rack with Bottles (Ice Hockey Arena and Locker Room)","summary":"A six bottle rink carrier: a steel frame with a carry bar and six long straw bottles in red and white. Bottles and carrier are one model, so a bench is dressed with one placement.","description":"A six bottle rink carrier: a steel frame with a carry bar and six long straw bottles in red and white. Bottles and carrier are one model, so a bench is dressed with one placement. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-water-bottle-rack-d725dfc5","cdnUrl":"https://cdn.3dassets.dev/assets/33732/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-water-bottle-rack-d725dfc5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33732/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33732/v1/poster.webp","blurhash":"U8CsEt?c00Xlxc-;f#9s00Me}[Mw0x9u#;,:","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":47404,"triangles":1320,"vertices":2782,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.31119999289512634,2.8840957122522326e-9,-0.14998107967761765],"max":[0.31119999289512634,0.5299878429305286,0.14998107967761765]},"sizeMeters":[0.622,0.53,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:35.123Z","updatedAt":"2026-09-11T03:54:35.223Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33732/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterBottleRackWithBottlesIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33732/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33732/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33732/v1/model.glb\" alt=\"Water Bottle Rack with Bottles (Ice Hockey Arena and Locker Room)\" 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/33732/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/33732/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33738","slug":"ice-hockey-arena-and-locker-room-skate-sharpening-mach-9ea5b009","title":"Skate Sharpening Machine (Ice Hockey Arena and Locker Room)","summary":"A 860 mm skate sharpening machine: a dark cabinet with a blue front, a steel deck carrying the holder carriage, a guarded grinding wheel with a red dressing arm, a readout and a start button. The wheel is a named node and spins; the carriage is fixed.","description":"A 860 mm skate sharpening machine: a dark cabinet with a blue front, a steel deck carrying the holder carriage, a guarded grinding wheel with a red dressing arm, a readout and a start button. The wheel is a named node and spins; the carriage is fixed. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Named pivoted nodes: grind-wheel. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-skate-sharpening-mach-9ea5b009","cdnUrl":"https://cdn.3dassets.dev/assets/33738/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-skate-sharpening-mach-9ea5b009","thumbnailUrl":"https://cdn.3dassets.dev/assets/33738/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33738/v1/poster.webp","blurhash":"U8AAj*%h00H=~Tt64=M}H;V?ObS79HkExtMv","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":40976,"triangles":824,"vertices":1786,"meshes":8,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.4300000071525574,-6.207663586499379e-7,-0.31999911897661626],"max":[0.4300000071525574,1.190000057220459,0.3500010721215171]},"sizeMeters":[0.86,1.19,0.67],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:37.911Z","updatedAt":"2026-09-11T03:54:38.090Z","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/33738/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 SkateSharpeningMachineIceHockeyArenaAndLockerRoom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33738/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/33738/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33738/v1/model.glb\" alt=\"Skate Sharpening Machine (Ice Hockey Arena and Locker Room)\" 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/33738/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/33738/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33733","slug":"ice-hockey-arena-and-locker-room-tape-and-tools-bench-516b7a38","title":"Tape and Tools Bench (Ice Hockey Arena and Locker Room)","summary":"A 1.6 m equipment bench: a timber top on a blue cabinet with two drawers, a white peg board carrying tape rolls, shears and a knife, and more tape and a tool tray on the top. Drawers are modelled shut and are not rigged.","description":"A 1.6 m equipment bench: a timber top on a blue cabinet with two drawers, a white peg board carrying tape rolls, shears and a knife, and more tape and a tool tray on the top. Drawers are modelled shut and are not rigged. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-tape-and-tools-bench-516b7a38","cdnUrl":"https://cdn.3dassets.dev/assets/33733/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-tape-and-tools-bench-516b7a38","thumbnailUrl":"https://cdn.3dassets.dev/assets/33733/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33733/v1/poster.webp","blurhash":"UPE3F[RP00of~pa}9ZRj9Ft7s;Rj9Ht7xZRj","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":68560,"triangles":1600,"vertices":3408,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.800000011920929,0.00002760368645426947,-0.33001495898724925],"max":[0.800000011920929,1.5999481185338909,0.33001495898724925]},"sizeMeters":[1.6,1.6,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:35.968Z","updatedAt":"2026-09-11T03:54:36.079Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33733/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TapeAndToolsBenchIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33733/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33733/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33733/v1/model.glb\" alt=\"Tape and Tools Bench (Ice Hockey Arena and Locker Room)\" 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/33733/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/33733/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33736","slug":"ice-hockey-arena-and-locker-room-first-aid-box-60363b52","title":"First Aid Box (Ice Hockey Arena and Locker Room)","summary":"A 360 mm white first aid box with a red band and a white cross, a carry handle and a latch. Modelled shut; the lid is not rigged.","description":"A 360 mm white first aid box with a red band and a white cross, a carry handle and a latch. Modelled shut; the lid is not rigged. Metre units, +Y up, the ice or user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/ice-hockey-arena-and-locker-room-first-aid-box-60363b52","cdnUrl":"https://cdn.3dassets.dev/assets/33736/v1/model.glb","downloadUrl":"https://3dassets.dev/download/ice-hockey-arena-and-locker-room-first-aid-box-60363b52","thumbnailUrl":"https://cdn.3dassets.dev/assets/33736/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33736/v1/poster.webp","blurhash":"UJI3B|=y0erX}Z=fR*I:0KRj$*S~NaaKNaJk","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":21788,"triangles":448,"vertices":994,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1850000023841858,-0.000008550150046554572,-0.07500045765346504],"max":[0.1850000023841858,0.28119990973863174,0.08499710072948038]},"sizeMeters":[0.37,0.281,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:54:37.085Z","updatedAt":"2026-09-11T03:54:37.189Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33736/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FirstAidBoxIceHockeyArenaAndLockerRoom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33736/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33736/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33736/v1/model.glb\" alt=\"First Aid Box (Ice Hockey Arena and Locker Room)\" 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/33736/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/33736/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}