{"data":{"id":"80","slug":"bowling-alley-and-pool-hall","title":"Bowling Alley and Pool Hall","summary":"Walk a bowling alley: full length lanes with pins standing, ball returns and divider seating, then a pool hall with racked tables, a dartboard, a jukebox and an arcade cabinet.","url":"https://3dassets.dev/demos/bowling-alley-and-pool-hall","coverUrl":"https://cdn.3dassets.dev/media/bowling-alley-and-pool-hall-demo.png","featured":true,"pack":{"slug":"bowling-alley-and-pool-hall","title":"Bowling Alley and Pool Hall","url":"https://3dassets.dev/packs/bowling-alley-and-pool-hall","summary":"Realistic bowling alley and pool hall models on real dimensions: ported lane, gutter, approach and pin deck modules, pins, balls and returns, pool tables, cues and darts, and the front of house.","assetCount":49,"totalBytes":7412208,"starterScene":{"slug":"bowling-alley-and-pool-hall-bowling-alle-4f825364-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/33882/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-alle-4f825364-starter-scene","fileSize":2747944}},"placementCount":213,"assetCount":46,"spawn":{"position":[-4.1,0.023,3],"yaw":-171.4},"publishedAt":"2026-09-11T05:08:28.088Z","updatedAt":"2026-09-11T05:08:28.089Z","description":"A bowling alley and the pool hall beside it, built from the pack's ported lane, floor, wall and bench modules on its own patterned carpet.\n\n**What is placed.** Lanes run the full 18.29 m as six modules each, with the approach and foul line at the near end, gutters down both sides and a pin deck with ten pins on their spots at the far end under the pinsetter housing. Ball returns, ball racks, bumper rails, lane number signs and divider seating with scoring screens sit between them, with the shoe hire counter, bench runs, bins and cleaning kit behind the approach. Past a low divider, the pool hall has nine foot tables racked and ready with cues, chalk, triangles and a slate, cue racks on the wall, a dartboard cabinet with its oche at the real 2.37 m, and high tables and stools. The jukebox, arcade cabinet, vending machine and bar counter line the wall under a neon sign.\n\n**What moves.** The ball return hood and the pinsetter housing lift, the dartboard cabinet doors and the vending machine door open and close, the jukebox lid lifts, the scoring screen arms tilt and a bowling ball spins.\n\n**What does not move, and why.** Pin action, a ball travelling the lane, the pinsetter linkage, the pool cloth and the ball return belt are static geometry. None of them is reachable with the rigid node transforms this library uses, and faking them would cost a consumer more than it gives. There are no players, because nothing here is skinned.","scene":{"version":1,"spawn":{"position":[-4.1,0.023,3],"yaw":-171.4},"ground":{"style":"none"},"environment":{"preset":"room","wallHeight":4.2,"lampHeight":3.8,"shadows":true},"placements":[{"asset":"bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","position":[-6,0,-10.93],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","position":[-6,0,-9.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-6,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-6,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-6,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-6,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","position":[-6,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-6,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","position":[-6,0,2.48],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-number-sign-59288499","position":[-6,3.1,-8.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","position":[-4.476,0,-10.93],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","position":[-4.476,0,-9.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-4.476,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-4.476,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-4.476,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-4.476,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","position":[-4.476,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-4.476,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","position":[-4.476,0,2.48],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-number-sign-59288499","position":[-4.476,3.1,-8.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","position":[-2.952,0,-10.93],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","position":[-2.952,0,-9.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-2.952,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-2.952,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-2.952,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-2.952,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","position":[-2.952,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-2.952,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","position":[-2.952,0,2.48],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-number-sign-59288499","position":[-2.952,3.1,-8.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","position":[-1.428,0,-10.93],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","position":[-1.428,0,-9.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-1.428,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-1.428,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","position":[-1.428,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-1.428,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","position":[-1.428,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","position":[-1.428,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","position":[-1.428,0,2.48],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-number-sign-59288499","position":[-1.428,3.1,-8.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-6.6445,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-6.6445,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-6.6445,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-5.3555,0,-7.426],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-5.3555,0,-4.378],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bumper-rail-84280b46","position":[-5.3555,0,-1.33],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","position":[-6.7620000000000005,0.09,1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","position":[-6.7620000000000005,0.09,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","position":[-5.2379999999999995,0.09,1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","position":[-5.2379999999999995,0.09,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","position":[-3.714,0.09,1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","position":[-3.714,0.09,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","position":[-2.19,0.09,1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","position":[-2.19,0.09,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","position":[-0.6659999999999999,0.09,1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","position":[-0.6659999999999999,0.09,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-rack-with-balls-cb7bda9f","position":[-6.2,0.02,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-rack-with-balls-warm-0030c8a7","position":[-4.4,0.02,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-rack-with-balls-cool-99ab2f97","position":[-2.6,0.02,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ball-rack-empty-c8d74118","position":[-0.9,0.02,6],"rotation":11.46},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[-6.3,0.02,5.2],"rotation":180},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[-4.5,0.02,5.2],"rotation":180},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[-2.6999999999999997,0.02,5.2],"rotation":180},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[-0.8999999999999995,0.02,5.2],"rotation":180},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[0.2,0.02,-1.4],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[0.2,0.02,0.40000000000000013],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[0.2,0.02,2.2],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[0.2,0.02,4],"rotation":90},{"asset":"bowling-alley-and-pool-hall-shoe-hire-counter-07376aed","position":[-4.6,0.02,6.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-shoes-838b23f8","position":[-2.9,0.02,6.3],"rotation":22.92},{"asset":"bowling-alley-and-pool-hall-bowling-shoes-838b23f8","position":[-2.55,0.02,6.45],"rotation":-17.19},{"asset":"bowling-alley-and-pool-hall-bowling-ball-de3b7f6d","position":[-7.3,0.02,6.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-ball-marbled-7a5993a0","position":[-7.02,0.02,6.56],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bowling-pin-a135b977","position":[-7.5,0.02,6.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-litter-bin-dbd9bb67","position":[-1.4,0.02,6.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-cleaning-kit-de7accdf","position":[-7.4,0.02,4.6],"rotation":28.65},{"asset":"bowling-alley-and-pool-hall-snack-basket-13216285","position":[-4.6,1.12,6.3],"rotation":0},{"asset":"bowling-alley-and-pool-hall-jukebox-15ed8fab","position":[1.2,0.02,-10.9],"rotation":0},{"asset":"bowling-alley-and-pool-hall-arcade-cabinet-bff3a400","position":[2.8,0.02,-10.85],"rotation":0},{"asset":"bowling-alley-and-pool-hall-vending-machine-d892b716","position":[4.4,0.02,-10.85],"rotation":0},{"asset":"bowling-alley-and-pool-hall-neon-wall-sign-c0d20cba","position":[3,2.3,-11.44],"rotation":0},{"asset":"bowling-alley-and-pool-hall-neon-wall-sign-c0d20cba","position":[7.94,2.2,-7],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-pool-table-1e7397c5","position":[3.4,0.02,-6.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pool-balls-racked-9d23c69a","position":[3.8,0.782,-6.6],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","position":[4.4,0.8200000000000001,-5.819999999999999],"rotation":0},{"asset":"bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","position":[2.4,0.8200000000000001,-7.38],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pool-table-1e7397c5","position":[3.4,0.02,-2.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-pool-balls-racked-9d23c69a","position":[3.8,0.782,-2.6],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","position":[4.4,0.8200000000000001,-1.82],"rotation":0},{"asset":"bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","position":[2.4,0.8200000000000001,-3.38],"rotation":0},{"asset":"bowling-alley-and-pool-hall-triangle-rack-ba249df8","position":[2.4,0.782,-6.2],"rotation":17.19},{"asset":"bowling-alley-and-pool-hall-pool-cue-03fdec43","position":[2.6,0.788,-2.2],"rotation":14.32},{"asset":"bowling-alley-and-pool-hall-pool-cue-03fdec43","position":[5.6,0.02,-5.4],"rotation":68.75},{"asset":"bowling-alley-and-pool-hall-cue-rack-wall-62b104ec","position":[7.7,0.02,-6.4],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-cue-rack-wall-62b104ec","position":[0.2,0.02,-11.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-scoreboard-slate-daf22010","position":[7.93,1.5,-9.6],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-scoreboard-slate-daf22010","position":[6.2,1.5,-11.44],"rotation":0},{"asset":"bowling-alley-and-pool-hall-dartboard-cabinet-4d3284da","position":[7.93,1.73,-8],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-oche-line-88123955","position":[5.56,0.02,-8],"rotation":90},{"asset":"bowling-alley-and-pool-hall-dartboard-cabinet-open-fa1b41a0","position":[-0.8,1.73,-11.44],"rotation":0},{"asset":"bowling-alley-and-pool-hall-oche-line-88123955","position":[-0.8,0.02,-9.07],"rotation":0},{"asset":"bowling-alley-and-pool-hall-darts-set-c1bf166d","position":[6.8,1.07,-4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-counter-section-42b3060a","position":[6.4,0.02,-11],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-counter-section-42b3060a","position":[8.200000000000001,0.02,-11],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[5.9,0.02,-10.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[7.1,0.02,-10.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[8.3,0.02,-10.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[1.6,0.02,1.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[0.9800000000000001,0.02,1.38],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[2.22,0.02,1.02],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[1.6,1.07,1.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[6.4,0.02,3],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[5.78,0.02,3.18],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[7.0200000000000005,0.02,2.82],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[6.4,1.07,3],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[6.8,0.02,-4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[6.18,0.02,-4.220000000000001],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[7.42,0.02,-4.58],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[6.8,1.07,-4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[3.2,0.02,4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[2.58,0.02,4.58],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[3.8200000000000003,0.02,4.220000000000001],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[3.2,1.07,4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[7,0.02,0.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[6.38,0.02,0.78],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[7.62,0.02,0.42],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[7,1.07,0.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-high-table-bfa5bc35","position":[1.3,0.02,3.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[0.68,0.02,3.7800000000000002],"rotation":90},{"asset":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","position":[1.92,0.02,3.42],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[1.3,1.07,3.6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-snack-basket-13216285","position":[1.6,1.07,1.48],"rotation":0},{"asset":"bowling-alley-and-pool-hall-snack-basket-13216285","position":[6.4,1.07,3.3],"rotation":0},{"asset":"bowling-alley-and-pool-hall-litter-bin-dbd9bb67","position":[8.3,0.02,4.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-litter-bin-dbd9bb67","position":[0.9,0.02,-4.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-litter-bin-dbd9bb67","position":[-0.6,0.02,5.4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-snack-basket-13216285","position":[1.3,1.07,3.88],"rotation":0},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[-5.238,0.77,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","position":[-2.19,0.77,4.1],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[0.6,0.02,6.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[2.4,0.02,6.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[4.2,0.02,6.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","position":[6,0.02,6.2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[-3.7,3.5,-8.2],"rotation":90},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[-3.7,3.5,-4.4],"rotation":90},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[-3.7,3.5,-0.6],"rotation":90},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[-3.7,3.5,3.2],"rotation":90},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[4.4,3.5,-7.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[4.4,3.5,-1.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","position":[4.4,3.5,3],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[-6,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[-4,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[-2,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[0,0,-10],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,-8],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,-6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,-4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,-2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,0],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[0,0,2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[0,0,4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[0,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[2,0,-10],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,-8],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,-6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,-4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,-2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,0],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[2,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[4,0,-10],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,-8],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,-6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,-4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,-2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,0],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[4,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[6,0,-10],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,-8],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,-6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,-4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,-2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,0],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[6,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","position":[8,0,-10],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,-8],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,-6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,-4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,-2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,0],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,2],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,4],"rotation":0},{"asset":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","position":[8,0,6],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-7,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-5,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-3,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-1,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[1,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[3,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[5,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[7,0,-11.5],"rotation":0},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[8,0,-10.5],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[8,0,-8.5],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[8,0,-6.5],"rotation":-90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-8,0,-10.5],"rotation":90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-8,0,-8.5],"rotation":90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-8,0,-6.5],"rotation":90},{"asset":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","position":[-8,0,-4.5],"rotation":90}],"points":[{"position":[-6.76,0.023,5.5],"title":"The approach","text":"Divider seating with a scoring screen on its arm sits behind each pair of lanes, with the ball returns and the ball racks between them and the shoes ready.","asset":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f"},{"position":[-6,0.023,-5.83],"title":"The lanes","text":"A lane is six 3.048 m modules end to end, with the approach and foul line at this end, the gutter pair down each side and the pin deck at the far end. Real bowling dimensions throughout.","asset":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a"},{"position":[-6,0.023,-7.4],"title":"Pin deck","text":"Ten pins on their spots under the pinsetter housing, whose hood lifts. The pin action and the ball travelling the lane are not animated: a rigid node transform cannot do either honestly.","asset":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97"},{"position":[-4.6,0.023,8],"title":"Shoe hire","text":"The counter with its pigeonholes, the bench seating run behind the approach and the bins and cleaning kit that go with them.","asset":"bowling-alley-and-pool-hall-shoe-hire-counter-07376aed"},{"position":[3.4,0.023,-4.6],"title":"Pool hall","text":"Nine foot tables racked and ready with cues, chalk, a triangle and a slate, the cue racks on the wall, and the dartboard cabinet with its oche, whose doors open.","asset":"bowling-alley-and-pool-hall-pool-table-1e7397c5"},{"position":[1.8,0.023,-9.3],"title":"Along the wall","text":"The jukebox, the arcade cabinet, the vending machine and the bar counter with its trays and baskets, under the neon sign.","asset":"bowling-alley-and-pool-hall-jukebox-15ed8fab"}],"poster":{"position":[-7.4,2.8,-0.6],"lookAt":[-6,0,-4.4]}},"bounds":{"min":[-10.099989317433144,-0.000010071331644496972,-13.66901564734822],"max":[11.099999976158143,5.50000030704779,10]},"assets":[{"id":"33841","slug":"bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","title":"Pinsetter Machine Housing (Bowling Alley and Pool Hall)","summary":"The pinsetter that stands behind a pin deck on the lane pitch: a welded frame with side sheets, the accent masking panel a bowler sees above the pins, the distributor drum and chutes inside, and a control box. The cowl over the machine deck lifts on its back edge.","description":"The pinsetter that stands behind a pin deck on the lane pitch: a welded frame with side sheets, the accent masking panel a bowler sees above the pins, the distributor drum and chutes inside, and a control box. The cowl over the machine deck lifts on its back edge. The rake, the spotting table and the pin elevator are a linkage and are left static, because a linkage is not reachable with one rigid node transform and faking it costs a consumer more than it gives. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: setter-cowl. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","cdnUrl":"https://cdn.3dassets.dev/assets/33841/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-pinsetter-housing-72f2c440","thumbnailUrl":"https://cdn.3dassets.dev/assets/33841/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33841/v1/poster.webp","blurhash":"U384lUtW009a?Js+E0S600M@-.xw0JtS?IRO","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":51912,"triangles":1104,"vertices":2476,"meshes":6,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.2239999771118164,0,-0.6600174846433285],"max":[0.7519999742507935,1.770024622001049,0.7550013729471434]},"sizeMeters":[1.976,1.77,1.415],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:43.635Z","updatedAt":"2026-09-11T05:06:43.748Z","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/33841/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 PinsetterMachineHousingBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33841/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/33841/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33841/v1/model.glb\" alt=\"Pinsetter Machine Housing (Bowling Alley and Pool Hall)\" 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/33841/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/33841/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33839","slug":"bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","title":"Pin Deck with a Full Rack (Bowling Alley and Pool Hall)","summary":"A pin deck module on the 1.524 m lane pitch with a full rack of ten pins standing on the real 12 inch triangle, kickback walls either side and the pit shield across the back. The head pin is toward +Z, the way a bowler sees it.","description":"A pin deck module on the 1.524 m lane pitch with a full rack of ten pins standing on the real 12 inch triangle, kickback walls either side and the pit shield across the back. The head pin is toward +Z, the way a bowler sees it. Port lane-front meets the last lane module lane-back. The pins are geometry on their spots and do not fall: pin action is a physics result, not a node transform, so a consumer drives it with their own bodies. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","cdnUrl":"https://cdn.3dassets.dev/assets/33839/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-pin-deck-with-rack-8184af97","thumbnailUrl":"https://cdn.3dassets.dev/assets/33839/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33839/v1/poster.webp","blurhash":"U59kBM%~00mm*ITIJ*#900Nt^kRN8w-W:m5P","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":230920,"triangles":5752,"vertices":11986,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7620000243186951,-0.0000014498797553663678,-0.651199996471405],"max":[0.7620000243186951,0.7199995883376932,0.650003438817464]},"sizeMeters":[1.524,0.72,1.301],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:44.531Z","updatedAt":"2026-09-11T05:06:44.626Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33839/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PinDeckWithAFullRackBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33839/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33839/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33839/v1/model.glb\" alt=\"Pin Deck with a Full Rack (Bowling Alley and Pool Hall)\" 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/33839/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/33839/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33838","slug":"bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","title":"Bowling Lane Module (Bowling Alley and Pool Hall)","summary":"A ten foot bowling lane bed module, 1.054 m wide between the gutters and 90 mm above the floor, laid as 39 maple and synthetic boards with a 1 mm shadow between them on a steel sub-frame. Six modules make the regulation 18.29 m from foul line to head pin.","description":"A ten foot bowling lane bed module, 1.054 m wide between the gutters and 90 mm above the floor, laid as 39 maple and synthetic boards with a 1 mm shadow between them on a steel sub-frame. Six modules make the regulation 18.29 m from foul line to head pin. Ports lane-back and lane-front butt module to module along Z; gutter-left and gutter-right take the gutter pair at the bed edges. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","cdnUrl":"https://cdn.3dassets.dev/assets/33838/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-lane-module-b6009a8a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33838/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33838/v1/poster.webp","blurhash":"UBCGDI%20Lt7-:9ZIo%L00D*?at64:~p-:9a","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":42688,"triangles":960,"vertices":2130,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5289606174856727,0.000047424137258066795,-1.5240000486373901],"max":[0.5289606174856727,0.09006930913353345,1.5240000486373901]},"sizeMeters":[1.058,0.09,3.048],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:41.900Z","updatedAt":"2026-09-11T05:06:42.018Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33838/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingLaneModuleBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33838/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33838/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33838/v1/model.glb\" alt=\"Bowling Lane Module (Bowling Alley and Pool Hall)\" 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/33838/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/33838/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33836","slug":"bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","title":"Bowling Gutter Pair (Bowling Alley and Pool Hall)","summary":"The pair of 235 mm gutter channels for one ten foot lane module, swept as a shallow U with the kickback wall on the outer side. The wall faces land on the 1.524 m lane pitch, so two lanes side by side share the kickback back to back.","description":"The pair of 235 mm gutter channels for one ten foot lane module, swept as a shallow U with the kickback wall on the outer side. The wall faces land on the 1.524 m lane pitch, so two lanes side by side share the kickback back to back. Ports lane-left and lane-right meet the lane module gutter-left and gutter-right at the bed edges. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","cdnUrl":"https://cdn.3dassets.dev/assets/33836/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-gutter-pair-996931a5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33836/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33836/v1/poster.webp","blurhash":"U15#hU?cIS%OM{D%WSRo009FWHD$.7~qxd-.","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":15644,"triangles":312,"vertices":732,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.7632325150312006,0.000024569169708714422,-1.5252000093460083],"max":[0.7632325150312006,0.08991358357648185,1.5240000486373901]},"sizeMeters":[1.526,0.09,3.049],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:41.885Z","updatedAt":"2026-09-11T05:06:42.035Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33836/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingGutterPairBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33836/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33836/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33836/v1/model.glb\" alt=\"Bowling Gutter Pair (Bowling Alley and Pool Hall)\" 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/33836/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/33836/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33837","slug":"bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","title":"Bowling Lane Module with Range Finders (Bowling Alley and Pool Hall)","summary":"The same ten foot lane module carrying the seven range finder arrows in dark inlay, for the module that sits nearest the foul line. The arrows step back from the edges to the centre and point at the pins.","description":"The same ten foot lane module carrying the seven range finder arrows in dark inlay, for the module that sits nearest the foul line. The arrows step back from the edges to the centre and point at the pins. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","cdnUrl":"https://cdn.3dassets.dev/assets/33837/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-lane-module-arrows-414780de","thumbnailUrl":"https://cdn.3dassets.dev/assets/33837/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33837/v1/poster.webp","blurhash":"UAC6oixu01oe-:9ZM|-p00E1^*t64p~p-:9H","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":45108,"triangles":1016,"vertices":2256,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5289606174856727,0.000047424137258066795,-1.5240000486373901],"max":[0.5289606174856727,0.09156347028697376,1.5240000486373901]},"sizeMeters":[1.058,0.092,3.048],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:41.888Z","updatedAt":"2026-09-11T05:06:42.016Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33837/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingLaneModuleWithRangeFindersBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33837/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33837/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33837/v1/model.glb\" alt=\"Bowling Lane Module with Range Finders (Bowling Alley and Pool Hall)\" 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/33837/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/33837/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33835","slug":"bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","title":"Bowling Approach and Foul Line (Bowling Alley and Pool Hall)","summary":"A fifteen foot approach module the full 1.524 m lane pitch wide, in the same board construction as the lane, with the foul line inlaid across its far end and both rows of approach dots. Approaches butt side to side so a row of lanes shares one continuous run-up.","description":"A fifteen foot approach module the full 1.524 m lane pitch wide, in the same board construction as the lane, with the foul line inlaid across its far end and both rows of approach dots. Approaches butt side to side so a row of lanes shares one continuous run-up. Port lane-back meets the lane module lane-front; approach-left and approach-right join the next lane approach. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","cdnUrl":"https://cdn.3dassets.dev/assets/33835/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-approach-and-foul--abd3a2c0","thumbnailUrl":"https://cdn.3dassets.dev/assets/33835/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33835/v1/poster.webp","blurhash":"UBB:jL%M0Lt7%L9ZM{%L00E1^*s.D*~W-:9a","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":85612,"triangles":1968,"vertices":4375,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7638604127990026,0.0001404453356608111,-2.2860000133514404],"max":[0.7638604127990026,0.09142223279590657,2.2860000133514404]},"sizeMeters":[1.528,0.091,4.572],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:41.738Z","updatedAt":"2026-09-11T05:06:41.922Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33835/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingApproachAndFoulLineBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33835/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33835/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33835/v1/model.glb\" alt=\"Bowling Approach and Foul Line (Bowling Alley and Pool Hall)\" 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/33835/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/33835/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33852","slug":"bowling-alley-and-pool-hall-lane-number-sign-59288499","title":"Lane Number Sign (Bowling Alley and Pool Hall)","summary":"The lit lane number panel that hangs over a pin deck: a double sided glowing face in a dark case on two drop rods, with an accent rail under it. The face carries no digits, so a consumer numbers their own lanes.","description":"The lit lane number panel that hangs over a pin deck: a double sided glowing face in a dark case on two drop rods, with an accent rail under it. The face carries no digits, so a consumer numbers their own lanes. The origin sits at the centre of the mounting bar at the top, because the sign hangs from a ceiling or a masking unit rather than standing on the floor. Metre units, +Y up, the player side toward +Z. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-lane-number-sign-59288499","cdnUrl":"https://cdn.3dassets.dev/assets/33852/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-lane-number-sign-59288499","thumbnailUrl":"https://cdn.3dassets.dev/assets/33852/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33852/v1/poster.webp","blurhash":"UDB|BK%g00Di5jt7=|NF4TIo.m-;?v$,DiEK","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":19212,"triangles":448,"vertices":1005,"meshes":7,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,-0.719981097199495,-0.0699740620474647],"max":[0.44999998807907104,0.024994658598709352,0.0699740620474647]},"sizeMeters":[0.9,0.745,0.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:50.450Z","updatedAt":"2026-09-11T05:06:50.551Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33852/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaneNumberSignBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33852/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33852/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33852/v1/model.glb\" alt=\"Lane Number Sign (Bowling Alley and Pool Hall)\" 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/33852/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/33852/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33853","slug":"bowling-alley-and-pool-hall-bumper-rail-84280b46","title":"Bumper Rail (Bowling Alley and Pool Hall)","summary":"A ten foot bumper rail that fills one gutter for a childrens lane: a padded magenta section with a cream capping strip and a dark end block at each end. Rails butt end to end down the lane.","description":"A ten foot bumper rail that fills one gutter for a childrens lane: a padded magenta section with a cream capping strip and a dark end block at each end. Rails butt end to end down the lane. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bumper-rail-84280b46","cdnUrl":"https://cdn.3dassets.dev/assets/33853/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bumper-rail-84280b46","thumbnailUrl":"https://cdn.3dassets.dev/assets/33853/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33853/v1/poster.webp","blurhash":"UDBV#Dt7E1kC%M9sRjxa00IU=}oyIA~D%fEK","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":15636,"triangles":320,"vertices":684,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.09994347691335854,0.00009607056958284288,-1.5252000093460083],"max":[0.09994347691335854,0.22995504939178124,1.5252000093460083]},"sizeMeters":[0.2,0.23,3.05],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:50.795Z","updatedAt":"2026-09-11T05:06:50.894Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33853/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BumperRailBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33853/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33853/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33853/v1/model.glb\" alt=\"Bumper Rail (Bowling Alley and Pool Hall)\" 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/33853/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/33853/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33843","slug":"bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","title":"Ball Return Unit (Bowling Alley and Pool Hall)","summary":"The ball return console that stands between two lanes: a tapered frame body with glowing side bands, the chrome return rails and two balls waiting on the ramp, and a hood over the ball lift that opens on its back edge for a jam.","description":"The ball return console that stands between two lanes: a tapered frame body with glowing side bands, the chrome return rails and two balls waiting on the ramp, and a hood over the ball lift that opens on its back edge for a jam. The ball lift wheel and the underlane track are inside the machine and are left static; the ball travel itself belongs to the consumer. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: return-hood. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","cdnUrl":"https://cdn.3dassets.dev/assets/33843/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ball-return-unit-e3e0669f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33843/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33843/v1/poster.webp","blurhash":"U59QaXys00vO:k54Ed^S4T9YTG=|%5tSpI$-","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":80976,"triangles":2472,"vertices":5965,"meshes":8,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.44999998807907104,0.000001225508750590798,-0.7500127982779544],"max":[0.44999998807907104,1.1799956841528039,0.75]},"sizeMeters":[0.9,1.18,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:46.267Z","updatedAt":"2026-09-11T05:06:46.364Z","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/33843/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 BallReturnUnitBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33843/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/33843/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33843/v1/model.glb\" alt=\"Ball Return Unit (Bowling Alley and Pool Hall)\" 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/33843/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/33843/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33851","slug":"bowling-alley-and-pool-hall-lane-divider-seating-1883064f","title":"Lane Divider Seating with Scoring Screen (Bowling Alley and Pool Hall)","summary":"The settee unit that sits between two lanes at the approach: two upholstered bucket seats side by side on a plinth facing the lane, with a timber score table on a pedestal behind them and the scoring screen on a post above it. The screen head tips on its mount.","description":"The settee unit that sits between two lanes at the approach: two upholstered bucket seats side by side on a plinth facing the lane, with a timber score table on a pedestal behind them and the scoring screen on a post above it. The screen head tips on its mount. The screen carries no wording or scores, so a consumer can render their own. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: score-arm. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-lane-divider-seating-1883064f","cdnUrl":"https://cdn.3dassets.dev/assets/33851/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-lane-divider-seating-1883064f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33851/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33851/v1/poster.webp","blurhash":"UBA,64kD00oyIoennhXm0cV?}ckE-qS}S}#q","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":81908,"triangles":1856,"vertices":4006,"meshes":7,"materials":6,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.7300000190734863,0.000035778419282511686,-0.5799859845322125],"max":[0.7300000190734863,1.5326287263702218,0.5799859845322125]},"sizeMeters":[1.46,1.533,1.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:51.007Z","updatedAt":"2026-09-11T05:06:51.093Z","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/33851/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 LaneDividerSeatingWithScoringScreenBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33851/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/33851/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33851/v1/model.glb\" alt=\"Lane Divider Seating with Scoring Screen (Bowling Alley and Pool Hall)\" 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/33851/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/33851/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33844","slug":"bowling-alley-and-pool-hall-ball-rack-with-balls-cb7bda9f","title":"Ball Rack with Balls (Bowling Alley and Pool Hall)","summary":"A six ball house rack on two curved chrome rails and a welded frame, loaded with balls in the house colours. The rails hold every ball clear of its finger holes, the way a real rack does.","description":"A six ball house rack on two curved chrome rails and a welded frame, loaded with balls in the house colours. The rails hold every ball clear of its finger holes, the way a real rack does. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ball-rack-with-balls-cb7bda9f","cdnUrl":"https://cdn.3dassets.dev/assets/33844/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ball-rack-with-balls-cb7bda9f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33844/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33844/v1/poster.webp","blurhash":"U8AAXZ-E4Txu~W=~MeM_00xZ%MD%4URi.8M_","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":134368,"triangles":5976,"vertices":14952,"meshes":8,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,-0.0000400649345066173,-0.2574727689575574],"max":[0.7300000190734863,0.7076047349920265,0.2574727689575574]},"sizeMeters":[1.46,0.708,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:46.607Z","updatedAt":"2026-09-11T05:06:46.700Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33844/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BallRackWithBallsBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33844/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33844/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33844/v1/model.glb\" alt=\"Ball Rack with Balls (Bowling Alley and Pool Hall)\" 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/33844/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/33844/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33845","slug":"bowling-alley-and-pool-hall-ball-rack-with-balls-warm-0030c8a7","title":"Ball Rack with Balls, Warm Set (Bowling Alley and Pool Hall)","summary":"The same house rack loaded with the warm half of the ball colours: magenta, timber marble and cream.","description":"The same house rack loaded with the warm half of the ball colours: magenta, timber marble and cream. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ball-rack-with-balls-warm-0030c8a7","cdnUrl":"https://cdn.3dassets.dev/assets/33845/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ball-rack-with-balls-warm-0030c8a7","thumbnailUrl":"https://cdn.3dassets.dev/assets/33845/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33845/v1/poster.webp","blurhash":"UBAvz.-W0Lsq}[-qIVNF00rs-VJ60fRP?HO9","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":207472,"triangles":5976,"vertices":14952,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,-0.0000400649345066173,-0.2574727689575574],"max":[0.7300000190734863,0.7076047349920265,0.2574727689575574]},"sizeMeters":[1.46,0.708,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:47.267Z","updatedAt":"2026-09-11T05:06:47.357Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33845/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BallRackWithBallsWarmSetBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33845/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33845/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33845/v1/model.glb\" alt=\"Ball Rack with Balls, Warm Set (Bowling Alley and Pool Hall)\" 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/33845/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/33845/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33846","slug":"bowling-alley-and-pool-hall-ball-rack-with-balls-cool-99ab2f97","title":"Ball Rack with Balls, Cool Set (Bowling Alley and Pool Hall)","summary":"The same house rack loaded with the cool half of the ball colours: glowing cyan, black and green.","description":"The same house rack loaded with the cool half of the ball colours: glowing cyan, black and green. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ball-rack-with-balls-cool-99ab2f97","cdnUrl":"https://cdn.3dassets.dev/assets/33846/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ball-rack-with-balls-cool-99ab2f97","thumbnailUrl":"https://cdn.3dassets.dev/assets/33846/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33846/v1/poster.webp","blurhash":"U99adK.8Di%2?].9aKVr00tQ%MIADPRPx^IU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":279700,"triangles":5976,"vertices":14952,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,-0.00000505824548469036,-0.2574727689575574],"max":[0.7300000190734863,0.7076050557659315,0.2574727689575574]},"sizeMeters":[1.46,0.708,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:47.650Z","updatedAt":"2026-09-11T05:06:47.751Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33846/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BallRackWithBallsCoolSetBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33846/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33846/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33846/v1/model.glb\" alt=\"Ball Rack with Balls, Cool Set (Bowling Alley and Pool Hall)\" 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/33846/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/33846/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33847","slug":"bowling-alley-and-pool-hall-ball-rack-empty-c8d74118","title":"Ball Rack, Empty (Bowling Alley and Pool Hall)","summary":"The same rack with every ball taken off it, for a lane that is closed or a rack a consumer loads themselves.","description":"The same rack with every ball taken off it, for a lane that is closed or a rack a consumer loads themselves. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ball-rack-empty-c8d74118","cdnUrl":"https://cdn.3dassets.dev/assets/33847/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ball-rack-empty-c8d74118","thumbnailUrl":"https://cdn.3dassets.dev/assets/33847/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33847/v1/poster.webp","blurhash":"U37d:_%ND*t8%M_4WEMw00Ri%KM|IT4mM|kC","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":27940,"triangles":576,"vertices":1356,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,-0.0000400649345066173,-0.2574727689575574],"max":[0.7300000190734863,0.5540156223655937,0.2574727689575574]},"sizeMeters":[1.46,0.554,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:49.017Z","updatedAt":"2026-09-11T05:06:49.111Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33847/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BallRackEmptyBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33847/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33847/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33847/v1/model.glb\" alt=\"Ball Rack, Empty (Bowling Alley and Pool Hall)\" 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/33847/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/33847/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33878","slug":"bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","title":"Bench Seating Run (Bowling Alley and Pool Hall)","summary":"A 1.8 m bench of moulded seating: a crowned and welted magenta pad on a welded frame with a tipped back rest, for the row behind an approach. Runs butt end to end.","description":"A 1.8 m bench of moulded seating: a crowned and welted magenta pad on a welded frame with a tipped back rest, for the row behind an approach. Runs butt end to end. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","cdnUrl":"https://cdn.3dassets.dev/assets/33878/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bench-seating-run-cb58ccd2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33878/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33878/v1/poster.webp","blurhash":"UKDkv5Sz5ObF}IxbE_I.0c,Js;J55%r?#rNZ","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":43872,"triangles":1004,"vertices":2186,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.8799999952316284,0.000011152352463655868,-0.2631201799478603],"max":[0.8799999952316284,0.8385213328356651,0.24996572254698507]},"sizeMeters":[1.76,0.839,0.513],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:04.587Z","updatedAt":"2026-09-11T05:07:04.679Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33878/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BenchSeatingRunBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33878/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33878/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33878/v1/model.glb\" alt=\"Bench Seating Run (Bowling Alley and Pool Hall)\" 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/33878/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/33878/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33867","slug":"bowling-alley-and-pool-hall-shoe-hire-counter-07376aed","title":"Shoe Hire Counter with Pigeonholes (Bowling Alley and Pool Hall)","summary":"The counter a game starts at: a 2.3 m desk panelled in alternating magenta and teal with a timber top, a lit toe band, a till on a stand and a spray bottle, standing in front of a twenty hole pigeonhole rack loaded with pairs of hire shoes.","description":"The counter a game starts at: a 2.3 m desk panelled in alternating magenta and teal with a timber top, a lit toe band, a till on a stand and a spray bottle, standing in front of a twenty hole pigeonhole rack loaded with pairs of hire shoes. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-shoe-hire-counter-07376aed","cdnUrl":"https://cdn.3dassets.dev/assets/33867/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-shoe-hire-counter-07376aed","thumbnailUrl":"https://cdn.3dassets.dev/assets/33867/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33867/v1/poster.webp","blurhash":"U8B|1{}]00OGIAW9oxaM000eR#xt%O%OM{M_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":282076,"triangles":6944,"vertices":14579,"meshes":8,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,0.000048837388668232506,-0.9611822717408147],"max":[1.2000000476837158,1.8999511387694739,0.39995118627747006]},"sizeMeters":[2.4,1.9,1.361],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:00.400Z","updatedAt":"2026-09-11T05:07:00.504Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33867/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShoeHireCounterWithPigeonholesBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33867/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33867/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33867/v1/model.glb\" alt=\"Shoe Hire Counter with Pigeonholes (Bowling Alley and Pool Hall)\" 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/33867/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/33867/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33850","slug":"bowling-alley-and-pool-hall-bowling-shoes-838b23f8","title":"Bowling Shoes, Pair (Bowling Alley and Pool Hall)","summary":"A pair of house hire shoes set down side by side: navy uppers with a cream toe cap and a magenta heel counter, on a flat sliding sole, with laces and the size patch on the heel. 290 mm long.","description":"A pair of house hire shoes set down side by side: navy uppers with a cream toe cap and a magenta heel counter, on a flat sliding sole, with laces and the size patch on the heel. 290 mm long. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-shoes-838b23f8","cdnUrl":"https://cdn.3dassets.dev/assets/33850/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-shoes-838b23f8","thumbnailUrl":"https://cdn.3dassets.dev/assets/33850/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33850/v1/poster.webp","blurhash":"U4973MGr00]Y}JE_Fq,J00vg-?J50v]q=N60","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":68760,"triangles":1716,"vertices":3424,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1374133397858402,-0.000004289554166050924,-0.1462317854166031],"max":[0.1374133397858402,0.13024629454474373,0.1462317854166031]},"sizeMeters":[0.275,0.13,0.292],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:50.371Z","updatedAt":"2026-09-11T05:06:50.493Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33850/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingShoesPairBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33850/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33850/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33850/v1/model.glb\" alt=\"Bowling Shoes, Pair (Bowling Alley and Pool Hall)\" 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/33850/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/33850/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33848","slug":"bowling-alley-and-pool-hall-bowling-ball-de3b7f6d","title":"Bowling Ball (Bowling Alley and Pool Hall)","summary":"A 218 mm house ball in magenta resin with the three drilled finger holes sunk into its top face. The whole ball is one named node on its own centre, so it rolls.","description":"A 218 mm house ball in magenta resin with the three drilled finger holes sunk into its top face. The whole ball is one named node on its own centre, so it rolls. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: ball. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-ball-de3b7f6d","cdnUrl":"https://cdn.3dassets.dev/assets/33848/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-ball-de3b7f6d","thumbnailUrl":"https://cdn.3dassets.dev/assets/33848/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33848/v1/poster.webp","blurhash":"UICNzNxH0]I.-Dj[I.ay0]NZ}cxH9?WV-DoL","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":44156,"triangles":900,"vertices":2266,"meshes":2,"materials":2,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.1088000014424324,-1.4424324096262708e-9,-0.10800310211243015],"max":[0.1088000014424324,0.2176000014424324,0.10800310211243015]},"sizeMeters":[0.218,0.218,0.216],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:48.343Z","updatedAt":"2026-09-11T05:06:48.443Z","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/33848/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 BowlingBallBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33848/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/33848/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33848/v1/model.glb\" alt=\"Bowling Ball (Bowling Alley and Pool Hall)\" 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/33848/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/33848/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33849","slug":"bowling-alley-and-pool-hall-bowling-ball-marbled-7a5993a0","title":"Bowling Ball, Marbled (Bowling Alley and Pool Hall)","summary":"The same house ball in black resin with cream marbling swirled round it, for a rack that is not all one colour.","description":"The same house ball in black resin with cream marbling swirled round it, for a rack that is not all one colour. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: ball. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-ball-marbled-7a5993a0","cdnUrl":"https://cdn.3dassets.dev/assets/33849/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-ball-marbled-7a5993a0","thumbnailUrl":"https://cdn.3dassets.dev/assets/33849/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33849/v1/poster.webp","blurhash":"UD9tJvt700Rj-;j[IUj[00Rj~qxuD$WB%Mj[","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":48140,"triangles":988,"vertices":2442,"meshes":3,"materials":2,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.11550685098930176,-0.0008458926897642882,-0.1156904473900795],"max":[0.11550685098930176,0.21844588523918368,0.1156904473900795]},"sizeMeters":[0.231,0.219,0.231],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:48.856Z","updatedAt":"2026-09-11T05:06:48.981Z","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/33849/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 BowlingBallMarbledBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33849/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/33849/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33849/v1/model.glb\" alt=\"Bowling Ball, Marbled (Bowling Alley and Pool Hall)\" 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/33849/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/33849/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33840","slug":"bowling-alley-and-pool-hall-bowling-pin-a135b977","title":"Bowling Pin (Bowling Alley and Pool Hall)","summary":"A single ten pin on the real profile: 381 mm tall, 121 mm across the belly, in coated white with the two red neck stripes and the dark base ring that keep it readable against a pale floor.","description":"A single ten pin on the real profile: 381 mm tall, 121 mm across the belly, in coated white with the two red neck stripes and the dark base ring that keep it readable against a pale floor. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bowling-pin-a135b977","cdnUrl":"https://cdn.3dassets.dev/assets/33840/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bowling-pin-a135b977","thumbnailUrl":"https://cdn.3dassets.dev/assets/33840/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33840/v1/poster.webp","blurhash":"U8CsXE-;0000w}WCI.kB00Rj~W%2?]t7DPM{","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":21100,"triangles":468,"vertices":968,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.06049234178469209,0,-0.05958539269113976],"max":[0.06049234178469209,0.38100001215934753,0.05958539269113976]},"sizeMeters":[0.121,0.381,0.119],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:43.615Z","updatedAt":"2026-09-11T05:06:43.715Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33840/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BowlingPinBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33840/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33840/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33840/v1/model.glb\" alt=\"Bowling Pin (Bowling Alley and Pool Hall)\" 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/33840/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/33840/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33879","slug":"bowling-alley-and-pool-hall-litter-bin-dbd9bb67","title":"Litter Bin (Bowling Alley and Pool Hall)","summary":"A 0.76 m open top litter bin: a charcoal drum with a magenta band and a chrome rim, with the sack liner turned over the rim the way a cleaned one is.","description":"A 0.76 m open top litter bin: a charcoal drum with a magenta band and a chrome rim, with the sack liner turned over the rim the way a cleaned one is. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-litter-bin-dbd9bb67","cdnUrl":"https://cdn.3dassets.dev/assets/33879/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-litter-bin-dbd9bb67","thumbnailUrl":"https://cdn.3dassets.dev/assets/33879/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33879/v1/poster.webp","blurhash":"U37-mH?v0000~SV[4rtQjDRjS3xu%0oKRpS3","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":23844,"triangles":528,"vertices":1070,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.19949999451637268,0,-0.19648012704971046],"max":[0.19949999451637268,0.7799963423014815,0.19648012704971046]},"sizeMeters":[0.399,0.78,0.393],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:05.215Z","updatedAt":"2026-09-11T05:07:05.307Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33879/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LitterBinBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33879/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33879/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33879/v1/model.glb\" alt=\"Litter Bin (Bowling Alley and Pool Hall)\" 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/33879/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/33879/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33880","slug":"bowling-alley-and-pool-hall-cleaning-kit-de7accdf","title":"Lane Cleaning Kit (Bowling Alley and Pool Hall)","summary":"The kit that keeps a house running: a mop bucket on castors with a wringer and a mop standing in it, and a lane duster leaning beside it. Everything is rigid geometry; the mop head and the duster pad do not flex.","description":"The kit that keeps a house running: a mop bucket on castors with a wringer and a mop standing in it, and a lane duster leaning beside it. Everything is rigid geometry; the mop head and the duster pad do not flex. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-cleaning-kit-de7accdf","cdnUrl":"https://cdn.3dassets.dev/assets/33880/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-cleaning-kit-de7accdf","thumbnailUrl":"https://cdn.3dassets.dev/assets/33880/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33880/v1/poster.webp","blurhash":"U78p.Z]V002-9XTE?Iz[0wNs-p$l}w,^9rAS","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":30840,"triangles":616,"vertices":1313,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.27579013770439076,-8.842713861839657e-7,-0.213961206153748],"max":[0.6736087690270642,1.3648905754089355,0.16999237345638507]},"sizeMeters":[0.949,1.365,0.384],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:05.343Z","updatedAt":"2026-09-11T05:07:05.706Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33880/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaneCleaningKitBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33880/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33880/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33880/v1/model.glb\" alt=\"Lane Cleaning Kit (Bowling Alley and Pool Hall)\" 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/33880/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/33880/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33873","slug":"bowling-alley-and-pool-hall-snack-basket-13216285","title":"Snack Basket (Bowling Alley and Pool Hall)","summary":"A lined snack basket of fries with a dip pot in the corner, the food a bowling alley actually serves. 240 mm across, so it sits on a divider table or a high table.","description":"A lined snack basket of fries with a dip pot in the corner, the food a bowling alley actually serves. 240 mm across, so it sits on a divider table or a high table. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-snack-basket-13216285","cdnUrl":"https://cdn.3dassets.dev/assets/33873/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-snack-basket-13216285","thumbnailUrl":"https://cdn.3dassets.dev/assets/33873/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33873/v1/poster.webp","blurhash":"U8EUl.^l00InyV%2rwM{009?~pkBHZ9ZKatj","category":{"slug":"food","title":"Food & Drink"},"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":70776,"triangles":1744,"vertices":3539,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1379999965429306,-0.000003888680323561877,-0.10300619267699199],"max":[0.1379999965429306,0.11555382846741363,0.10300619267699199]},"sizeMeters":[0.276,0.116,0.206],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:02.011Z","updatedAt":"2026-09-11T05:07:02.106Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33873/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SnackBasketBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33873/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33873/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33873/v1/model.glb\" alt=\"Snack Basket (Bowling Alley and Pool Hall)\" 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/33873/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/33873/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33869","slug":"bowling-alley-and-pool-hall-jukebox-15ed8fab","title":"Jukebox (Bowling Alley and Pool Hall)","summary":"A bubbler jukebox: a timber cabinet with a half round lit head, chrome bands following the arch, chrome pilasters, a record stack and a labelled disc behind the glass and a sloped selection panel with lettered buttons. The glazed front lifts on its top edge to load the records.","description":"A bubbler jukebox: a timber cabinet with a half round lit head, chrome bands following the arch, chrome pilasters, a record stack and a labelled disc behind the glass and a sloped selection panel with lettered buttons. The glazed front lifts on its top edge to load the records. The record stack and the transfer arm behind the glass are static, because a changer is a linkage rather than one rigid node. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: juke-front. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-jukebox-15ed8fab","cdnUrl":"https://cdn.3dassets.dev/assets/33869/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-jukebox-15ed8fab","thumbnailUrl":"https://cdn.3dassets.dev/assets/33869/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33869/v1/poster.webp","blurhash":"U7A]?8TK00mj~ptQ9GR64naJ%gx^4TRP%zyD","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":81376,"triangles":1736,"vertices":3902,"meshes":9,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.49003033364409315,0,-0.31000213201351334],"max":[0.49003033364409315,1.5199999809265137,0.3774524838019724]},"sizeMeters":[0.98,1.52,0.687],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:59.765Z","updatedAt":"2026-09-11T05:06:59.865Z","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/33869/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 JukeboxBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33869/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/33869/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33869/v1/model.glb\" alt=\"Jukebox (Bowling Alley and Pool Hall)\" 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/33869/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/33869/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33868","slug":"bowling-alley-and-pool-hall-arcade-cabinet-bff3a400","title":"Arcade Cabinet (Bowling Alley and Pool Hall)","summary":"A full size upright arcade cabinet in teal side art: a lit marquee over a bezelled screen, a control deck with a ball top joystick and six buttons, and a coin door in the front panel. 1.85 m tall.","description":"A full size upright arcade cabinet in teal side art: a lit marquee over a bezelled screen, a control deck with a ball top joystick and six buttons, and a coin door in the front panel. 1.85 m tall. Nothing on it moves: a cabinet is a fixed box and its screen content belongs to the consumer. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-arcade-cabinet-bff3a400","cdnUrl":"https://cdn.3dassets.dev/assets/33868/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-arcade-cabinet-bff3a400","thumbnailUrl":"https://cdn.3dassets.dev/assets/33868/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33868/v1/poster.webp","blurhash":"U46lui,[007Y~Xxv9EDirEcEW,mlQnRju3xt","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":61280,"triangles":1344,"vertices":2936,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.37999893674940105,0,-0.37100848104959033],"max":[0.37999893674940105,1.851199984550476,0.3899989272126579]},"sizeMeters":[0.76,1.851,0.761],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:59.541Z","updatedAt":"2026-09-11T05:06:59.712Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33868/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ArcadeCabinetBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33868/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33868/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33868/v1/model.glb\" alt=\"Arcade Cabinet (Bowling Alley and Pool Hall)\" 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/33868/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/33868/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33870","slug":"bowling-alley-and-pool-hall-vending-machine-d892b716","title":"Drinks Vending Machine (Bowling Alley and Pool Hall)","summary":"A 1.95 m chilled vending machine: four shelves of cans and bottles behind a framed glass door, a lit keypad and coin slot down the right pilaster and a delivery flap at the bottom. The door swings open on its left stile.","description":"A 1.95 m chilled vending machine: four shelves of cans and bottles behind a framed glass door, a lit keypad and coin slot down the right pilaster and a delivery flap at the bottom. The door swings open on its left stile. Metre units, +Y up, the player side toward +Z, resting on y=0. Named pivoted nodes: vending-door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-vending-machine-d892b716","cdnUrl":"https://cdn.3dassets.dev/assets/33870/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-vending-machine-d892b716","thumbnailUrl":"https://cdn.3dassets.dev/assets/33870/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33870/v1/poster.webp","blurhash":"U79Q:Y?v0000?dt8I9Ri8_IB%M?ubxWCacxs","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":173732,"triangles":4096,"vertices":8754,"meshes":10,"materials":9,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5000717307256161,0,-0.40993729314279975],"max":[0.5000717307256161,1.9500000476837158,0.44901824201003204]},"sizeMeters":[1,1.95,0.859],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:01.808Z","updatedAt":"2026-09-11T05:07:01.912Z","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/33870/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 DrinksVendingMachineBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33870/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/33870/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33870/v1/model.glb\" alt=\"Drinks Vending Machine (Bowling Alley and Pool Hall)\" 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/33870/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/33870/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33874","slug":"bowling-alley-and-pool-hall-neon-wall-sign-c0d20cba","title":"Neon Wall Sign (Bowling Alley and Pool Hall)","summary":"The lit sign over a bowling alley counter: two pins and a ball drawn in glowing tube with speed strokes behind them, on a dark backing plate with chrome stand-offs. 1.7 m across.","description":"The lit sign over a bowling alley counter: two pins and a ball drawn in glowing tube with speed strokes behind them, on a dark backing plate with chrome stand-offs. 1.7 m across. The origin is the centre of the plate, which is the wall face, so the sign hangs at whatever height a room wants. The tubes carry no wording. Metre units, +Y up, the player side toward +Z. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-neon-wall-sign-c0d20cba","cdnUrl":"https://cdn.3dassets.dev/assets/33874/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-neon-wall-sign-c0d20cba","thumbnailUrl":"https://cdn.3dassets.dev/assets/33874/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33874/v1/poster.webp","blurhash":"U7AdD:%#4,rE.8_4s;In00rt?JX,iwROX5%3","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":38804,"triangles":1204,"vertices":2797,"meshes":11,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.8500000238418579,-0.38996705094804684,-0.05000686773858485],"max":[0.8500000238418579,0.38996705094804684,0.05799273579765196]},"sizeMeters":[1.7,0.78,0.108],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:02.966Z","updatedAt":"2026-09-11T05:07:03.066Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33874/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NeonWallSignBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33874/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33874/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33874/v1/model.glb\" alt=\"Neon Wall Sign (Bowling Alley and Pool Hall)\" 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/33874/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/33874/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33854","slug":"bowling-alley-and-pool-hall-pool-table-1e7397c5","title":"Pool Table, Nine Foot (Bowling Alley and Pool Hall)","summary":"A nine foot pool table: a 2.54 by 1.27 m green cloth bed on slate, timber rails with proud cushion faces and cream diamond sights, six iron pocket rings with leather nets slung under them, and a cabinet on six turned legs. Cushion tops at 0.8 m.","description":"A nine foot pool table: a 2.54 by 1.27 m green cloth bed on slate, timber rails with proud cushion faces and cream diamond sights, six iron pocket rings with leather nets slung under them, and a cabinet on six turned legs. Cushion tops at 0.8 m. The cloth and the pocket nets are modelled as rigid geometry: cloth drape is not reachable with a node transform. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-pool-table-1e7397c5","cdnUrl":"https://cdn.3dassets.dev/assets/33854/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-pool-table-1e7397c5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33854/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33854/v1/poster.webp","blurhash":"UAA19KxuHXr??^%MZ$n400ozg$Vs8wIVPBK5","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":161236,"triangles":3984,"vertices":8311,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.4149999618530273,0.00007585523806430405,-0.7799838041624005],"max":[1.4149999618530273,0.8014593894136696,0.7799838041624005]},"sizeMeters":[2.83,0.801,1.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:53.238Z","updatedAt":"2026-09-11T05:06:53.424Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33854/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PoolTableNineFootBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33854/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33854/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33854/v1/model.glb\" alt=\"Pool Table, Nine Foot (Bowling Alley and Pool Hall)\" 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/33854/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/33854/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33855","slug":"bowling-alley-and-pool-hall-pool-balls-racked-9d23c69a","title":"Pool Balls, Racked (Bowling Alley and Pool Hall)","summary":"A full set racked ready to break: fifteen 57.2 mm balls in the triangle, solids and stripes alternating, with the cue ball on the head spot 0.86 m in front of the apex. The set rests on y=0 so it drops straight onto a table bed.","description":"A full set racked ready to break: fifteen 57.2 mm balls in the triangle, solids and stripes alternating, with the cue ball on the head spot 0.86 m in front of the apex. The set rests on y=0 so it drops straight onto a table bed. The cue ball is cream with no spots, so it reads against the cloth and against the table rail. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-pool-balls-racked-9d23c69a","cdnUrl":"https://cdn.3dassets.dev/assets/33855/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-pool-balls-racked-9d23c69a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33855/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33855/v1/poster.webp","blurhash":"U55q*FI:-;?H$*9ZR%xG0Ks:MyE1EL~qxuI.","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":23868,"triangles":4832,"vertices":12280,"meshes":23,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.1446000039577484,-7.450580596923828e-9,-0.22777040302753448],"max":[0.1446000039577484,0.057200007140636444,0.8885999917984009]},"sizeMeters":[0.289,0.057,1.116],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:52.369Z","updatedAt":"2026-09-11T05:06:52.464Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33855/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PoolBallsRackedBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33855/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33855/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33855/v1/model.glb\" alt=\"Pool Balls, Racked (Bowling Alley and Pool Hall)\" 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/33855/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/33855/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33859","slug":"bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","title":"Chalk Cube (Bowling Alley and Pool Hall)","summary":"A 24 mm cube of table chalk in its paper wrap, dished on top where a tip has worn it. Green chalk on a dark wrap, so it reads on a pale rail.","description":"A 24 mm cube of table chalk in its paper wrap, dished on top where a tip has worn it. Green chalk on a dark wrap, so it reads on a pale rail. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","cdnUrl":"https://cdn.3dassets.dev/assets/33859/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-chalk-cube-4e2cd4ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/33859/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33859/v1/poster.webp","blurhash":"UG86HYx]MJV@uikCRjofL#RPX8f+QSWBidV@","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":9140,"triangles":168,"vertices":383,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.012400000356137753,2.273184827959046e-7,-0.012400000356137753],"max":[0.012400000356137753,0.02183958430370824,0.012400000356137753]},"sizeMeters":[0.025,0.022,0.025],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:56.063Z","updatedAt":"2026-09-11T05:06:56.155Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33859/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChalkCubeBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33859/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33859/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33859/v1/model.glb\" alt=\"Chalk Cube (Bowling Alley and Pool Hall)\" 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/33859/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/33859/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33856","slug":"bowling-alley-and-pool-hall-triangle-rack-ba249df8","title":"Triangle Rack (Bowling Alley and Pool Hall)","summary":"The wooden triangle a set is racked in, lying flat on its side rails with a brass hanging eye at the apex. 335 mm on the side, sized on the 57.2 mm ball.","description":"The wooden triangle a set is racked in, lying flat on its side rails with a brass hanging eye at the apex. 335 mm on the side, sized on the 57.2 mm ball. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-triangle-rack-ba249df8","cdnUrl":"https://cdn.3dassets.dev/assets/33856/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-triangle-rack-ba249df8","thumbnailUrl":"https://cdn.3dassets.dev/assets/33856/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33856/v1/poster.webp","blurhash":"U48zV@~A00t7_2t59ajd000g~CRl01IW?aot","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":11408,"triangles":232,"vertices":499,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.10699515947401586,0.000006943899335146858,-0.17491471767425537],"max":[0.19705441751778188,0.03799935913119681,0.17491471767425537]},"sizeMeters":[0.304,0.038,0.35],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:53.441Z","updatedAt":"2026-09-11T05:06:53.561Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33856/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TriangleRackBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33856/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33856/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33856/v1/model.glb\" alt=\"Triangle Rack (Bowling Alley and Pool Hall)\" 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/33856/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/33856/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33858","slug":"bowling-alley-and-pool-hall-pool-cue-03fdec43","title":"Pool Cue (Bowling Alley and Pool Hall)","summary":"A 1.47 m two piece cue lying flat: a turned butt with an accent wrap, a joint collar, the full taper up the shaft, a cream ferrule and a dark tip, so it reads as a cue in a hand and not as a dowel.","description":"A 1.47 m two piece cue lying flat: a turned butt with an accent wrap, a joint collar, the full taper up the shaft, a cream ferrule and a dark tip, so it reads as a cue in a hand and not as a dowel. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-pool-cue-03fdec43","cdnUrl":"https://cdn.3dassets.dev/assets/33858/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-pool-cue-03fdec43","thumbnailUrl":"https://cdn.3dassets.dev/assets/33858/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33858/v1/poster.webp","blurhash":"U37dLF=|DlxZ={~BxHV[00S0~UR-5701S0--","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":15776,"triangles":336,"vertices":686,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7350000143051147,-0.0000013113654537162678,-0.0157013107723875],"max":[0.7380002313555715,0.03140131017932128,0.0157013107723875]},"sizeMeters":[1.473,0.031,0.031],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:55.052Z","updatedAt":"2026-09-11T05:06:55.172Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33858/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PoolCueBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33858/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33858/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33858/v1/model.glb\" alt=\"Pool Cue (Bowling Alley and Pool Hall)\" 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/33858/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/33858/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33857","slug":"bowling-alley-and-pool-hall-cue-rack-wall-62b104ec","title":"Wall Cue Rack with Six Cues (Bowling Alley and Pool Hall)","summary":"A full height cue rack that stands against a wall: a timber back board with a cupped top rail and a heel tray, loaded with six cues standing butt down. An accent header runs across the top.","description":"A full height cue rack that stands against a wall: a timber back board with a cupped top rail and a heel tray, loaded with six cues standing butt down. An accent header runs across the top. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-cue-rack-wall-62b104ec","cdnUrl":"https://cdn.3dassets.dev/assets/33857/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-cue-rack-wall-62b104ec","thumbnailUrl":"https://cdn.3dassets.dev/assets/33857/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33857/v1/poster.webp","blurhash":"U3B2}l:,00C4}sxF9uEgK1ozrrRP-W$kI.EL","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":99416,"triangles":2576,"vertices":5387,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.4599337783717518,0,-0.011941345926048702],"max":[0.4599337783717518,1.8600000143051147,0.1599413422454619]},"sizeMeters":[0.92,1.86,0.172],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:53.693Z","updatedAt":"2026-09-11T05:06:53.797Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33857/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallCueRackWithSixCuesBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33857/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33857/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33857/v1/model.glb\" alt=\"Wall Cue Rack with Six Cues (Bowling Alley and Pool Hall)\" 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/33857/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/33857/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33860","slug":"bowling-alley-and-pool-hall-scoreboard-slate-daf22010","title":"Scoreboard Slate (Bowling Alley and Pool Hall)","summary":"The framed slate scoreboard that hangs beside a pool table: a timber frame round a ruled dark slate with an accent header, a ledge under it and a stick of chalk and a wiper on the ledge. No wording, so a consumer writes their own frames.","description":"The framed slate scoreboard that hangs beside a pool table: a timber frame round a ruled dark slate with an accent header, a ledge under it and a stick of chalk and a wiper on the ledge. No wording, so a consumer writes their own frames. The origin sits at the centre of the back face, which is the wall face, so the board hangs at whatever height a room wants. Metre units, +Y up, the player side toward +Z. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-scoreboard-slate-daf22010","cdnUrl":"https://cdn.3dassets.dev/assets/33860/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-scoreboard-slate-daf22010","thumbnailUrl":"https://cdn.3dassets.dev/assets/33860/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33860/v1/poster.webp","blurhash":"U2A,5*_M004o}^=}D~4.1C$%RsE2Gh_2wR01","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":24376,"triangles":616,"vertices":1383,"meshes":10,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.36000001430511475,-0.5299857951834615,-0.0012155640699477513],"max":[0.3612000048160553,0.27000001072883606,0.09750236015918408]},"sizeMeters":[0.721,0.8,0.099],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:56.172Z","updatedAt":"2026-09-11T05:06:56.288Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33860/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScoreboardSlateBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33860/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33860/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33860/v1/model.glb\" alt=\"Scoreboard Slate (Bowling Alley and Pool Hall)\" 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/33860/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/33860/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33861","slug":"bowling-alley-and-pool-hall-dartboard-cabinet-4d3284da","title":"Dartboard in a Wall Cabinet (Bowling Alley and Pool Hall)","summary":"A bristle board in a timber cabinet: twenty segments with the doubles and trebles rings, the two bulls, a wire spider and a number ring, behind two leaves with cream scoring panels inside them. Board diameter 451 mm.","description":"A bristle board in a timber cabinet: twenty segments with the doubles and trebles rings, the two bulls, a wire spider and a number ring, behind two leaves with cream scoring panels inside them. Board diameter 451 mm. The origin is the bull itself, so the cabinet hangs with the bull at the regulation 1.73 m simply by placing it there. The wire spider is geometry, not a separate node. Metre units, +Y up, the player side toward +Z. Named pivoted nodes: cabinet-door-left, cabinet-door-right. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-dartboard-cabinet-4d3284da","cdnUrl":"https://cdn.3dassets.dev/assets/33861/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-dartboard-cabinet-4d3284da","thumbnailUrl":"https://cdn.3dassets.dev/assets/33861/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33861/v1/poster.webp","blurhash":"U4C677D,00X7~V$*E29u0Mod=_kB-mxt9wIV","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":129236,"triangles":3904,"vertices":8195,"meshes":20,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3100122940372234,-0.3210042439832946,-0.09798107776353945],"max":[0.3100122940372234,0.3210042439832946,0.0909996649166516]},"sizeMeters":[0.62,0.642,0.189],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:55.518Z","updatedAt":"2026-09-11T05:06:55.620Z","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/33861/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 DartboardInAWallCabinetBowlingAlleyAndPoolHall(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33861/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/33861/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33861/v1/model.glb\" alt=\"Dartboard in a Wall Cabinet (Bowling Alley and Pool Hall)\" 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/33861/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/33861/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33864","slug":"bowling-alley-and-pool-hall-oche-line-88123955","title":"Oche Throw Line (Bowling Alley and Pool Hall)","summary":"The raised oche a player stands behind: a 1.24 m timber bar 38 mm high with an accent strip along its top and a block at each end. Set it 2.37 m from the board face for the regulation throw.","description":"The raised oche a player stands behind: a 1.24 m timber bar 38 mm high with an accent strip along its top and a block at each end. Set it 2.37 m from the board face for the regulation throw. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-oche-line-88123955","cdnUrl":"https://cdn.3dassets.dev/assets/33864/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-oche-line-88123955","thumbnailUrl":"https://cdn.3dassets.dev/assets/33864/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33864/v1/poster.webp","blurhash":"U59PsNn-0xX8$m}]W.EL00xb~CWTEu0Jwi}]","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":14864,"triangles":288,"vertices":648,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6200000047683716,0.000002837464327970496,-0.05503036677027896],"max":[0.6200000047683716,0.044024993794640144,0.05503036677027896]},"sizeMeters":[1.24,0.044,0.11],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:57.682Z","updatedAt":"2026-09-11T05:06:57.817Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33864/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OcheThrowLineBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33864/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33864/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33864/v1/model.glb\" alt=\"Oche Throw Line (Bowling Alley and Pool Hall)\" 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/33864/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/33864/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33862","slug":"bowling-alley-and-pool-hall-dartboard-cabinet-open-fa1b41a0","title":"Dartboard Cabinet, Open (Bowling Alley and Pool Hall)","summary":"The same cabinet with both leaves standing open against the wall, for dressing a room without animating it.","description":"The same cabinet with both leaves standing open against the wall, for dressing a room without animating it. Metre units, +Y up, the player side toward +Z. Named pivoted nodes: cabinet-door-left, cabinet-door-right. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-dartboard-cabinet-open-fa1b41a0","cdnUrl":"https://cdn.3dassets.dev/assets/33862/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-dartboard-cabinet-open-fa1b41a0","thumbnailUrl":"https://cdn.3dassets.dev/assets/33862/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33862/v1/poster.webp","blurhash":"U6DSUT8{00?uV??Hxb9Y00?a?d9G%gi^V?Oa","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":139548,"triangles":3904,"vertices":8161,"meshes":20,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.31201479771501267,-0.3210042439832946,-0.2290156473482191],"max":[0.31201479771501267,0.3210042439832946,0.0730156512169331]},"sizeMeters":[0.624,0.642,0.302],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:57.787Z","updatedAt":"2026-09-11T05:06:57.898Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33862/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DartboardCabinetOpenBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33862/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33862/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33862/v1/model.glb\" alt=\"Dartboard Cabinet, Open (Bowling Alley and Pool Hall)\" 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/33862/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/33862/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33863","slug":"bowling-alley-and-pool-hall-darts-set-c1bf166d","title":"Darts Set of Three (Bowling Alley and Pool Hall)","summary":"Three steel tip darts lying in an open flip case: each one a knurled brass barrel, a nylon shaft and four flights, which is what makes a thrown dart read as a dart. 165 mm long.","description":"Three steel tip darts lying in an open flip case: each one a knurled brass barrel, a nylon shaft and four flights, which is what makes a thrown dart read as a dart. 165 mm long. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-darts-set-c1bf166d","cdnUrl":"https://cdn.3dassets.dev/assets/33863/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-darts-set-c1bf166d","thumbnailUrl":"https://cdn.3dassets.dev/assets/33863/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33863/v1/poster.webp","blurhash":"UCCY2%}c0wFE]==#WoAA00J5-XM|1F1ER%;-","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":58364,"triangles":1364,"vertices":2910,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.0949999988079071,0.000004800886953065797,-0.05206590362133519],"max":[0.0949999988079071,0.0625006765307438,0.05206590362133519]},"sizeMeters":[0.19,0.062,0.104],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:57.130Z","updatedAt":"2026-09-11T05:06:57.235Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33863/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DartsSetOfThreeBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33863/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33863/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33863/v1/model.glb\" alt=\"Darts Set of Three (Bowling Alley and Pool Hall)\" 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/33863/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/33863/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33871","slug":"bowling-alley-and-pool-hall-bar-counter-section-42b3060a","title":"Bar Counter Section (Bowling Alley and Pool Hall)","summary":"A 1.8 m bar counter section: a panelled timber front on a frame carcass with a brass nosing, a foot rail on two standoffs, a drip tray and a two tap keg font on the deck. Counter top at 1.06 m, the height of the bar stool.","description":"A 1.8 m bar counter section: a panelled timber front on a frame carcass with a brass nosing, a foot rail on two standoffs, a drip tray and a two tap keg font on the deck. Counter top at 1.06 m, the height of the bar stool. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bar-counter-section-42b3060a","cdnUrl":"https://cdn.3dassets.dev/assets/33871/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bar-counter-section-42b3060a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33871/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33871/v1/poster.webp","blurhash":"U3BfkV}?009Y};?cE10K00JV~AIn0ke+%NI:","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":49648,"triangles":1076,"vertices":2415,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.000011137223921854622,-0.3399548236002479],"max":[0.8999999761581421,1.4599996575122787,0.48299296007297493]},"sizeMeters":[1.8,1.46,0.823],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:01.285Z","updatedAt":"2026-09-11T05:07:01.381Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33871/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BarCounterSectionBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33871/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33871/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33871/v1/model.glb\" alt=\"Bar Counter Section (Bowling Alley and Pool Hall)\" 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/33871/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/33871/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33866","slug":"bowling-alley-and-pool-hall-bar-stool-fbffb1b6","title":"Bar Stool (Bowling Alley and Pool Hall)","summary":"A 0.76 m bar stool: a welded four leg frame with a brass foot ring, a crowned and welted magenta seat pad and a low back rest. The height of the high table and the bar counter.","description":"A 0.76 m bar stool: a welded four leg frame with a brass foot ring, a crowned and welted magenta seat pad and a low back rest. The height of the high table and the bar counter. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-bar-stool-fbffb1b6","cdnUrl":"https://cdn.3dassets.dev/assets/33866/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-bar-stool-fbffb1b6","thumbnailUrl":"https://cdn.3dassets.dev/assets/33866/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33866/v1/poster.webp","blurhash":"U59Gg%gM00#D{CJ52k=gvLNFK$%3bpnikES~","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":45912,"triangles":1066,"vertices":2247,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.25699999928474426,0,-0.25699999928474426],"max":[0.25699999928474426,1.0202176145481394,0.25699999928474426]},"sizeMeters":[0.514,1.02,0.514],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:58.821Z","updatedAt":"2026-09-11T05:06:58.929Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33866/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BarStoolBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33866/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33866/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33866/v1/model.glb\" alt=\"Bar Stool (Bowling Alley and Pool Hall)\" 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/33866/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/33866/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33865","slug":"bowling-alley-and-pool-hall-high-table-bfa5bc35","title":"High Poseur Table (Bowling Alley and Pool Hall)","summary":"A 0.7 m round poseur table at 1.05 m on a cast column and a weighted disc base, with a timber top and a brass edge band. The height a pool room drinks at.","description":"A 0.7 m round poseur table at 1.05 m on a cast column and a weighted disc base, with a timber top and a brass edge band. The height a pool room drinks at. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-high-table-bfa5bc35","cdnUrl":"https://cdn.3dassets.dev/assets/33865/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-high-table-bfa5bc35","thumbnailUrl":"https://cdn.3dassets.dev/assets/33865/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33865/v1/poster.webp","blurhash":"U89GzBxt00IV}+ocA0ai~UoL9aWqS5ahadf$","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":17616,"triangles":384,"vertices":784,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3499999940395355,0,-0.3499999940395355],"max":[0.3499999940395355,1.0499784073209137,0.3499999940395355]},"sizeMeters":[0.7,1.05,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:06:57.953Z","updatedAt":"2026-09-11T05:06:58.149Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33865/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HighPoseurTableBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33865/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33865/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33865/v1/model.glb\" alt=\"High Poseur Table (Bowling Alley and Pool Hall)\" 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/33865/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/33865/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33872","slug":"bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","title":"Drinks Tray with Glasses (Bowling Alley and Pool Hall)","summary":"A service tray carried back to a lane: three tumblers and a stemmed glass, each lathed up the outside and back down the inside so it has a real opening, plus a can, on a rubber lined tray.","description":"A service tray carried back to a lane: three tumblers and a stemmed glass, each lathed up the outside and back down the inside so it has a real opening, plus a can, on a rubber lined tray. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","cdnUrl":"https://cdn.3dassets.dev/assets/33872/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-drinks-tray-ee62e2d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/33872/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33872/v1/poster.webp","blurhash":"U9AARHt800jFtRt7MxM{00WB~XNGIBM{.8%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":51228,"triangles":1240,"vertices":2506,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2240000069141388,0.000007262075018662356,-0.16399915054384562],"max":[0.2240000069141388,0.1960022577042848,0.16399915054384562]},"sizeMeters":[0.448,0.196,0.328],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:01.496Z","updatedAt":"2026-09-11T05:07:01.586Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33872/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DrinksTrayWithGlassesBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33872/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33872/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33872/v1/model.glb\" alt=\"Drinks Tray with Glasses (Bowling Alley and Pool Hall)\" 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/33872/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/33872/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33881","slug":"bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","title":"Ceiling Light Bar (Bowling Alley and Pool Hall)","summary":"A 2.4 m linear light bar on two drop rods, with a glowing cyan tube in a charcoal channel. The run of them over the lanes is what gives an alley its colour.","description":"A 2.4 m linear light bar on two drop rods, with a glowing cyan tube in a charcoal channel. The run of them over the lanes is what gives an alley its colour. The origin sits at the centre of the two mounting plates at the top, because the bar hangs from a ceiling rather than standing on the floor. The fixture emits through its material only; there is no light node in the file. Metre units, +Y up, the player side toward +Z. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","cdnUrl":"https://cdn.3dassets.dev/assets/33881/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-ceiling-light-bar-7e990452","thumbnailUrl":"https://cdn.3dassets.dev/assets/33881/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33881/v1/poster.webp","blurhash":"U78ESgj]ITtQ9E.8x]M{00IAx^tR_4Di8_t8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19176,"triangles":496,"vertices":1122,"meshes":8,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000030585564019,-0.5600642371649533,-0.08000001311302185],"max":[1.2000030585564019,3.070477899332069e-7,0.08000001311302185]},"sizeMeters":[2.4,0.56,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:05.485Z","updatedAt":"2026-09-11T05:07:05.729Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33881/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CeilingLightBarBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33881/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33881/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33881/v1/model.glb\" alt=\"Ceiling Light Bar (Bowling Alley and Pool Hall)\" 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/33881/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/33881/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33876","slug":"bowling-alley-and-pool-hall-plain-floor-module-4400d627","title":"Plain Floor Module (Bowling Alley and Pool Hall)","summary":"The same 2 m module in plain indigo carpet with no pattern, for the run behind the approach and under the machines where a pattern would fight with the lane wood.","description":"The same 2 m module in plain indigo carpet with no pattern, for the run behind the approach and under the machines where a pattern would fight with the lane wood. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-plain-floor-module-4400d627","cdnUrl":"https://cdn.3dassets.dev/assets/33876/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-plain-floor-module-4400d627","thumbnailUrl":"https://cdn.3dassets.dev/assets/33876/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33876/v1/poster.webp","blurhash":"U46a*,t94mkCt9fiWnja00Rh-@WAIljcn%bF","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":3824,"triangles":64,"vertices":142,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000010071331644496972,-1],"max":[1,0.02001007088460966,1]},"sizeMeters":[2,0.02,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:03.580Z","updatedAt":"2026-09-11T05:07:03.682Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33876/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlainFloorModuleBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33876/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33876/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33876/v1/model.glb\" alt=\"Plain Floor Module (Bowling Alley and Pool Hall)\" 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/33876/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/33876/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33875","slug":"bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","title":"Patterned Carpet Floor Module (Bowling Alley and Pool Hall)","summary":"A 2 m carpet module in the bold house pattern: four magenta arrowheads chasing round a cream ring on deep indigo, with green flecks between them. Modules tile on a 2 m grid in any rotation, because the pattern is four way symmetric.","description":"A 2 m carpet module in the bold house pattern: four magenta arrowheads chasing round a cream ring on deep indigo, with green flecks between them. Modules tile on a 2 m grid in any rotation, because the pattern is four way symmetric. Ports carpet-left, carpet-right, carpet-front and carpet-back sit at the module edge midpoints at half thickness. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","cdnUrl":"https://cdn.3dassets.dev/assets/33875/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-carpet-floor-module-6fd93cda","thumbnailUrl":"https://cdn.3dassets.dev/assets/33875/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33875/v1/poster.webp","blurhash":"U67U3?t90JW=t9fkWAf800Ri^-n}Imf6s;bE","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":40072,"triangles":872,"vertices":1953,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000010071331644496972,-1],"max":[1,0.02268244422225598,1]},"sizeMeters":[2,0.023,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:03.161Z","updatedAt":"2026-09-11T05:07:03.359Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33875/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PatternedCarpetFloorModuleBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33875/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33875/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33875/v1/model.glb\" alt=\"Patterned Carpet Floor Module (Bowling Alley and Pool Hall)\" 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/33875/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/33875/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33877","slug":"bowling-alley-and-pool-hall-wall-panel-module-2473be30","title":"Wall Panel Module (Bowling Alley and Pool Hall)","summary":"A 2 m by 2.6 m wall module: a dark panel with a timber dado below an accent band, vertical battens above it and a skirting along the floor. Panels butt on the 2 m module with a 4 mm shadow gap at each joint.","description":"A 2 m by 2.6 m wall module: a dark panel with a timber dado below an accent band, vertical battens above it and a skirting along the floor. Panels butt on the 2 m module with a 4 mm shadow gap at each joint. Metre units, +Y up, the player side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/bowling-alley-and-pool-hall-wall-panel-module-2473be30","cdnUrl":"https://cdn.3dassets.dev/assets/33877/v1/model.glb","downloadUrl":"https://3dassets.dev/download/bowling-alley-and-pool-hall-wall-panel-module-2473be30","thumbnailUrl":"https://cdn.3dassets.dev/assets/33877/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33877/v1/poster.webp","blurhash":"U89jM_?H00E1NGoes:M|9uM{w]xZ~A-pEiE2","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":34092,"triangles":768,"vertices":1714,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9991999864578247,0,-0.09998931743314418],"max":[0.9991999864578247,2.602048635482788,0.030934942876995993]},"sizeMeters":[1.998,2.602,0.131],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:07:03.731Z","updatedAt":"2026-09-11T05:07:03.904Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33877/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallPanelModuleBowlingAlleyAndPoolHall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33877/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33877/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33877/v1/model.glb\" alt=\"Wall Panel Module (Bowling Alley and Pool Hall)\" 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/33877/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/33877/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}