{"data":{"id":"178","slug":"party-obstacle-course","title":"Party Obstacle Course: festival out and back","summary":"Race a padded out and back course with rollers, seesaws, spinners and bumpers, then mount the podium.","url":"https://3dassets.dev/demos/party-obstacle-course","coverUrl":"https://cdn.3dassets.dev/media/party-obstacle-course-demo-1.png","featured":false,"pack":{"slug":"party-obstacle-course","title":"Party Obstacle Course","url":"https://3dassets.dev/packs/party-obstacle-course","summary":"Thirty premium padded obstacle and festival designs for original party courses.","assetCount":31,"totalBytes":4520204,"starterScene":{"slug":"party-obstacle-course-party-obstacle-cou-62a043a4-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/28953/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-cou-62a043a4-starter-scene","fileSize":1461024}},"placementCount":203,"assetCount":30,"spawn":{"position":[0,0,22.8],"yaw":180},"publishedAt":"2026-09-23T15:03:23.869Z","updatedAt":"2026-09-23T15:03:23.870Z","description":"A festival out and back course on a grass field: start gate south, seven stages up the west lane, a turn compound at the north end, seven stages back down the east lane, flag arch and three place podium.\n\nPlaced: all 30 ground models. Platforms, junction, landings, ramp, steps, gap blocks, beam, bridge, sweeper, paddle gate, bumpers, pendulum, lift, both gates, beacons, bleachers, canopies, booth, consoles, speakers, rails, corners, posts, mats, chests and podium. Lane dividers and a full perimeter fence with a south entry keep visitors on the walk.\n\nMovement: the sweeper, paddle gate, seesaw, pendulum, bumpers and lift run on always so the machinery is live on arrival. Everything else rides proximity. No posed figures in this pack, so nothing is set to off. Linkages that cannot be rigid node animation are left static by the authors and described as fixed padding.\n\nNot placed: the festival out and back challenge starter scene. It is a 28 by 29 m single model on a free origin that would swallow the whole walkable plot and duplicate every stage, so the demo builds the same course from its parts instead. The pack holds 31 designs and the demo places 30 distinct models, which is the whole placeable kit: 48 distinct is not reachable from a 31 design pack.","scene":{"version":1,"spawn":{"position":[0,0,22.8],"yaw":180},"bounds":{"min":[-18,0,-22.5],"max":[18,8,24]},"ground":{"size":90,"style":"plain"},"environment":{"preset":"outdoor","sky":"#6db9f2","horizon":"#f7e3bd","floor":"#69a85f","light":"day","shadows":true},"placements":[{"asset":"party-obstacle-course-party-obstacle-course-platform-s-f258befb","position":[-6,0,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stair-appr-88a1b406","position":[-6,0,8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-rising-ram-556e7e88","position":[-6,0,4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52","position":[-6,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-balance-be-51149d66","position":[-6,0,-4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-tilting-se-6652bf9c","position":[-6,0,-8],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-rotating-s-21f0bd35","position":[-6,0,-12],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-platform-s-f258befb","position":[-6,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-junction-eedd3990","position":[-2,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-platform-s-f258befb","position":[2,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-end-landin-ac9a4c90","position":[6,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-platform-c-126f562b","position":[-6,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-junction-eedd3990","position":[-2,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-end-landin-ac9a4c90","position":[2,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-platform-c-126f562b","position":[6,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-rotating-p-4f80b42e","position":[6,0,-12],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-pendulum-g-2eb9c62b","position":[6,0,-8],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-piston-bum-437544d6","position":[6,0,-4],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-moving-lif-a11e242e","position":[6,0,0],"rotation":0,"animate":"always"},{"asset":"party-obstacle-course-party-obstacle-course-gap-jump-p-e21c1def","position":[6,0,4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-platform-s-f258befb","position":[6,0,8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52","position":[6,0,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-start-gate-3a5ac90e","position":[-6,0,18.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-finish-arc-c695fbd0","position":[6,0,18.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[5.1,0.832,7.1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-2.9,0.84,-16.9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[6.9,0.832,7.1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-1.1,0.84,-16.9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[5.1,0.832,8.9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-2.9,0.84,-15.1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[6.9,0.832,8.9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-1.1,0.84,-15.1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,14],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,14],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,10],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,10],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,-2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,-2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,-6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,-6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,-10],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,-10],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,-14],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,-14],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,15.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[-9.5,0,-16.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,15.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","position":[9.5,0,-16.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,-4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,-8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[0,0,-12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[-6,0.832,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[-6,0.832,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[2,0.832,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[6,1.3,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","position":[2,1.3,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,11],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,11],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,7],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,7],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,3],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,3],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,-1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,-1],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,-5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,-5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,-9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,-9],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,-13],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,-13],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,19.4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,19.4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-2.3,0,-19.4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[2.3,0,-19.4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-7,0,20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[8.8,0,20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[-3.4,0,18.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","position":[3.4,0,18.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,0],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,0],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,-4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,-4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,-8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,-8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-3,0,-12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[3,0,-12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,-16],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,-16],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,-12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,-12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,-8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,-8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,-4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,-4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,0],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,0],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,4],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,8],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,12],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-16,0,16],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[16,0,16],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-14,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-10,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-6,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[6,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[10,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[14,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-14,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-10,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-6,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[-2,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[2,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[6,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[10,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","position":[14,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","position":[-16,0,-21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","position":[16,0,-21],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","position":[-16,0,21],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","position":[16,0,21],"rotation":180},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-1.2,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[1.2,0,21],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-2.5,0,22.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[2.5,0,22.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,-20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,-20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,-16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,-12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,-12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,-8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,-8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,-4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,-4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,4],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,12],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,16],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[-17,0,20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","position":[17,0,20],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,10],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,10],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,6],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,6],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,2],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,2],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,-2],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,-2],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,-6],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,-6],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[-12.5,0,-10],"rotation":90},{"asset":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","position":[12.5,0,-10],"rotation":270},{"asset":"party-obstacle-course-party-obstacle-course-shade-cano-748ae178","position":[-12.5,0,15],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-shade-cano-748ae178","position":[12.5,0,15],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-shade-cano-748ae178","position":[-12.5,0,-14.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-shade-cano-748ae178","position":[12.5,0,-14.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-13.5,0,18.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[12.5,0,18.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-8,0,19.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[9.5,0,18.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-9.5,0,-18.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[9.5,0,-18.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-6.5,0,22.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[8,0,22.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-12,0,-19.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-8,0,-19.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-5.5,0,-19.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[8,0,-19.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[12,0,-19.8],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-operator-b-a88eb73e","position":[-10.5,0,18.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-timing-con-8a31e836","position":[0,0,19.6],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-timing-con-8a31e836","position":[0,0,-19.4],"rotation":180},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[-3.4,0,20.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[3.4,0,20.2],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[-3.4,0,-19.2],"rotation":180},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[3.4,0,-19.2],"rotation":180},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[-9.5,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","position":[9.5,0,0],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-timing-con-8a31e836","position":[-5,0,20.3],"rotation":10},{"asset":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","position":[-4,0,22.5],"rotation":0},{"asset":"party-obstacle-course-party-obstacle-course-celebratio-e1340d69","position":[6,0,20],"rotation":180}],"points":[{"position":[-2.6,0,19.5],"title":"Start lights","text":"The light gate frames the out lane: steps, ramp and rollers ahead, crowd on both sides.","asset":"party-obstacle-course-party-obstacle-course-start-gate-3a5ac90e"},{"position":[-2.6,0,7],"title":"Climb and roll","text":"Four steps up, a padded ramp, then the seven roller bridge where footing keeps moving.","asset":"party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52"},{"position":[-2.6,0,-5],"title":"Seesaw and sweeper","text":"The bearing seesaw tips under weight, then the padded sweeper arm spins across the pad.","asset":"party-obstacle-course-party-obstacle-course-rotating-s-21f0bd35"},{"position":[0,0,-16],"title":"Top turn","text":"Quarter turns and the three way junction swing runners around to the back lane.","asset":"party-obstacle-course-party-obstacle-course-junction-eedd3990"},{"position":[2.6,0,-9],"title":"Paddles and pendulum","text":"The four paddle gate rotates through the lane while the padded pendulum swings overhead.","asset":"party-obstacle-course-party-obstacle-course-pendulum-g-2eb9c62b"},{"position":[2.6,0,-1],"title":"Bumpers and lift","text":"Piston bumpers punch out from the walls, then the guided lift carries runners to the gap jumps.","asset":"party-obstacle-course-party-obstacle-course-moving-lif-a11e242e"},{"position":[2.6,0,7],"title":"Drums and home straight","text":"Stepping drums dot the last platform, then a clear run under the flag arch.","asset":"party-obstacle-course-party-obstacle-course-finish-arc-c695fbd0"},{"position":[3.4,0,20],"title":"Podium","text":"Three places on the celebration podium face the finish arch and the timing booth.","asset":"party-obstacle-course-party-obstacle-course-celebratio-e1340d69"}],"poster":{"position":[-8.1,3.4,5.6],"lookAt":[-6,0.6,0]}},"bounds":{"min":[-18,0,-22.5],"max":[18,8,24]},"assets":[{"id":"28925","slug":"party-obstacle-course-party-obstacle-course-platform-s-f258befb","title":"Padded straight platform (Party Obstacle Course)","summary":"Padded straight platform in a padded coral and teal festival family.","description":"Padded straight platform. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-platform-s-f258befb","cdnUrl":"https://cdn.3dassets.dev/assets/28925/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-platform-s-f258befb","thumbnailUrl":"https://cdn.3dassets.dev/assets/28925/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28925/v1/poster.webp","blurhash":"UB7:94x]8wNG*JofQ-WV00RPyrjZ8waetlV[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":104460,"triangles":5280,"vertices":4314,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000007629292092858897,-2],"max":[2,0.8319944506222603,2]},"sizeMeters":[4,0.832,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:48.303Z","updatedAt":"2026-10-25T11:06:59.241Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28925/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaddedStraightPlatformPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28925/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28925/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28925/v1/model.glb\" alt=\"Padded straight platform (Party Obstacle Course)\" 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/28925/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/28925/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28928","slug":"party-obstacle-course-party-obstacle-course-stair-appr-88a1b406","title":"Four-step approach (Party Obstacle Course)","summary":"Four-step approach in a padded coral and teal festival family.","description":"Four-step approach. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-stair-appr-88a1b406","cdnUrl":"https://cdn.3dassets.dev/assets/28928/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-stair-appr-88a1b406","thumbnailUrl":"https://cdn.3dassets.dev/assets/28928/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28928/v1/poster.webp","blurhash":"U9BD$lHW00#8+bsUO?Xm00*e^+Nv3BNa+HrD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":40596,"triangles":2352,"vertices":1522,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.899999976158142,0.00010072080497530722,-2.00013426261749],"max":[1.899999976158142,0.7998657165208843,2.00013426261749]},"sizeMeters":[3.8,0.8,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:49.155Z","updatedAt":"2026-10-12T13:09:41.189Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28928/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FourStepApproachPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28928/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28928/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28928/v1/model.glb\" alt=\"Four-step approach (Party Obstacle Course)\" 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/28928/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/28928/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28927","slug":"party-obstacle-course-party-obstacle-course-rising-ram-556e7e88","title":"Rising padded ramp (Party Obstacle Course)","summary":"Rising padded ramp in a padded coral and teal festival family.","description":"Rising padded ramp. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-rising-ram-556e7e88","cdnUrl":"https://cdn.3dassets.dev/assets/28927/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-rising-ram-556e7e88","thumbnailUrl":"https://cdn.3dassets.dev/assets/28927/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28927/v1/poster.webp","blurhash":"U77MvduOD4Rim,g2X-WV00VE*JniO?ixm,oM","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":249476,"triangles":14496,"vertices":9974,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.00008004850016907206,-2],"max":[2,0.7650800210820325,2]},"sizeMeters":[4,0.765,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:48.634Z","updatedAt":"2026-10-25T09:34:03.259Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28927/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RisingPaddedRampPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28927/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28927/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28927/v1/model.glb\" alt=\"Rising padded ramp (Party Obstacle Course)\" 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/28927/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/28927/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28935","slug":"party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52","title":"Seven-roller bridge (Party Obstacle Course)","summary":"Seven-roller bridge in a padded coral and teal festival family.","description":"Seven-roller bridge. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52","cdnUrl":"https://cdn.3dassets.dev/assets/28935/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-roller-bri-afc8ad52","thumbnailUrl":"https://cdn.3dassets.dev/assets/28935/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28935/v1/poster.webp","blurhash":"UGC~bj%102R-}?bFE3sp00M|^is.0NWD={Sd","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":156792,"triangles":6624,"vertices":7030,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00008545812227339633,-2],"max":[2,1.3299875112529729,2]},"sizeMeters":[4,1.33,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":6,"publishedAt":"2026-09-08T03:57:50.526Z","updatedAt":"2026-10-05T15:50:25.491Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28935/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SevenRollerBridgePartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28935/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28935/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28935/v1/model.glb\" alt=\"Seven-roller bridge (Party Obstacle Course)\" 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/28935/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/28935/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28931","slug":"party-obstacle-course-party-obstacle-course-balance-be-51149d66","title":"Narrow padded balance beam (Party Obstacle Course)","summary":"Narrow padded balance beam in a padded coral and teal festival family.","description":"Narrow padded balance beam. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-balance-be-51149d66","cdnUrl":"https://cdn.3dassets.dev/assets/28931/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-balance-be-51149d66","thumbnailUrl":"https://cdn.3dassets.dev/assets/28931/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28931/v1/poster.webp","blurhash":"U47e0Gs=00tQ^zIq9c=_00IV_1%006$}~S9w","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":133240,"triangles":7044,"vertices":5454,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00008545812227339633,-2],"max":[2,1.5398766623063727,2]},"sizeMeters":[4,1.54,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":8,"publishedAt":"2026-09-08T03:57:50.199Z","updatedAt":"2026-10-12T15:37:43.970Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28931/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NarrowPaddedBalanceBeamPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28931/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28931/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28931/v1/model.glb\" alt=\"Narrow padded balance beam (Party Obstacle Course)\" 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/28931/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/28931/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28932","slug":"party-obstacle-course-party-obstacle-course-tilting-se-6652bf9c","title":"Bearing-mounted seesaw (Party Obstacle Course)","summary":"Bearing-mounted seesaw in a padded coral and teal festival family.","description":"Bearing-mounted seesaw. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-tilting-se-6652bf9c","cdnUrl":"https://cdn.3dassets.dev/assets/28932/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-tilting-se-6652bf9c","thumbnailUrl":"https://cdn.3dassets.dev/assets/28932/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28932/v1/poster.webp","blurhash":"U99j+Dai01xs~9Iq9c-n00M|_0%004%0~SE4","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":124148,"triangles":6456,"vertices":5077,"meshes":4,"materials":4,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-2,0.00008545812227339633,-2],"max":[2,1.5700864017184273,2]},"sizeMeters":[4,1.57,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:50.215Z","updatedAt":"2026-10-05T15:50:20.497Z","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/28932/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 BearingMountedSeesawPartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28932/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/28932/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28932/v1/model.glb\" alt=\"Bearing-mounted seesaw (Party Obstacle Course)\" 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/28932/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/28932/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28933","slug":"party-obstacle-course-party-obstacle-course-rotating-s-21f0bd35","title":"Rotating padded sweeper (Party Obstacle Course)","summary":"Rotating padded sweeper in a padded coral and teal festival family.","description":"Rotating padded sweeper. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-rotating-s-21f0bd35","cdnUrl":"https://cdn.3dassets.dev/assets/28933/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-rotating-s-21f0bd35","thumbnailUrl":"https://cdn.3dassets.dev/assets/28933/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28933/v1/poster.webp","blurhash":"U6ABLl?b00EM@ssnGGNb00Mx_Na_3?N_@@xD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":139440,"triangles":6444,"vertices":5936,"meshes":6,"materials":6,"textures":0,"animations":["spin"],"boundingBox":{"min":[-2,-0.00011655891325001999,-2],"max":[2,2.0699920182982336,2]},"sizeMeters":[4,2.07,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:50.218Z","updatedAt":"2026-10-25T12:23:55.005Z","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/28933/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 RotatingPaddedSweeperPartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28933/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/28933/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28933/v1/model.glb\" alt=\"Rotating padded sweeper (Party Obstacle Course)\" 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/28933/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/28933/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28922","slug":"party-obstacle-course-party-obstacle-course-junction-eedd3990","title":"Three-way checkpoint junction (Party Obstacle Course)","summary":"Three-way checkpoint junction in a padded coral and teal festival family.","description":"Three-way checkpoint junction. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-junction-eedd3990","cdnUrl":"https://cdn.3dassets.dev/assets/28922/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-junction-eedd3990","thumbnailUrl":"https://cdn.3dassets.dev/assets/28922/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28922/v1/poster.webp","blurhash":"UB8iFlx[4TNH.mkCMda{00RP.RoJ4Tae%LWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":112972,"triangles":5472,"vertices":4727,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000007629292092858897,-2],"max":[2,0.8399967830854969,2]},"sizeMeters":[4,0.84,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":11,"publishedAt":"2026-09-08T03:57:48.243Z","updatedAt":"2026-10-25T15:23:36.995Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28922/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeWayCheckpointJunctionPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28922/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28922/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28922/v1/model.glb\" alt=\"Three-way checkpoint junction (Party Obstacle Course)\" 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/28922/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/28922/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28926","slug":"party-obstacle-course-party-obstacle-course-end-landin-ac9a4c90","title":"Terminal landing (Party Obstacle Course)","summary":"Terminal landing in a padded coral and teal festival family.","description":"Terminal landing. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-end-landin-ac9a4c90","cdnUrl":"https://cdn.3dassets.dev/assets/28926/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-end-landin-ac9a4c90","thumbnailUrl":"https://cdn.3dassets.dev/assets/28926/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28926/v1/poster.webp","blurhash":"UDEoG6=|02NH~AxHIqSx00IV_0Sw03NstiRQ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":143836,"triangles":7632,"vertices":5844,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000007629292092858897,-2],"max":[2,1.2999465808390145,2]},"sizeMeters":[4,1.3,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":6,"publishedAt":"2026-09-08T03:57:48.315Z","updatedAt":"2026-10-05T15:50:16.300Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28926/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TerminalLandingPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28926/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28926/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28926/v1/model.glb\" alt=\"Terminal landing (Party Obstacle Course)\" 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/28926/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/28926/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28924","slug":"party-obstacle-course-party-obstacle-course-platform-c-126f562b","title":"Quarter-turn platform (Party Obstacle Course)","summary":"Quarter-turn platform in a padded coral and teal festival family.","description":"Quarter-turn platform. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-platform-c-126f562b","cdnUrl":"https://cdn.3dassets.dev/assets/28924/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-platform-c-126f562b","thumbnailUrl":"https://cdn.3dassets.dev/assets/28924/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28924/v1/poster.webp","blurhash":"UGEUijxt0eaf}[oeIpja00Rj^QWV0eR*$%WV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":124520,"triangles":6456,"vertices":5074,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000007629292092858897,-2],"max":[2,0.8350247868351546,2]},"sizeMeters":[4,0.835,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:48.295Z","updatedAt":"2026-10-25T16:40:51.822Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28924/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuarterTurnPlatformPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28924/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28924/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28924/v1/model.glb\" alt=\"Quarter-turn platform (Party Obstacle Course)\" 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/28924/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/28924/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28934","slug":"party-obstacle-course-party-obstacle-course-rotating-p-4f80b42e","title":"Rotating four-paddle gate (Party Obstacle Course)","summary":"Rotating four-paddle gate in a padded coral and teal festival family.","description":"Rotating four-paddle gate. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-rotating-p-4f80b42e","cdnUrl":"https://cdn.3dassets.dev/assets/28934/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-rotating-p-4f80b42e","thumbnailUrl":"https://cdn.3dassets.dev/assets/28934/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28934/v1/poster.webp","blurhash":"UAAxGa?a0057VrkWM{RP00K5~Avfy?kWxanQ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":206608,"triangles":11480,"vertices":8825,"meshes":8,"materials":6,"textures":0,"animations":["spin"],"boundingBox":{"min":[-2.0250000953674316,0.00008086079004701596,-2.0000329015892877],"max":[2.0250000953674316,4.049949727905867,2.0000329015892877]},"sizeMeters":[4.05,4.05,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:50.397Z","updatedAt":"2026-10-25T15:57:10.673Z","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/28934/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 RotatingFourPaddleGatePartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28934/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/28934/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28934/v1/model.glb\" alt=\"Rotating four-paddle gate (Party Obstacle Course)\" 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/28934/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/28934/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28937","slug":"party-obstacle-course-party-obstacle-course-pendulum-g-2eb9c62b","title":"Suspended padded pendulum (Party Obstacle Course)","summary":"Suspended padded pendulum in a padded coral and teal festival family.","description":"Suspended padded pendulum. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-pendulum-g-2eb9c62b","cdnUrl":"https://cdn.3dassets.dev/assets/28937/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-pendulum-g-2eb9c62b","thumbnailUrl":"https://cdn.3dassets.dev/assets/28937/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28937/v1/poster.webp","blurhash":"UID0rj%f00Mx:~s+ElNI01n$-oIqG^X9$Lnh","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":185528,"triangles":10176,"vertices":7788,"meshes":7,"materials":6,"textures":0,"animations":["swing"],"boundingBox":{"min":[-2.0250000953674316,0.00008086079004701596,-2.0000329015892877],"max":[2.0250000953674316,4.050000190734863,2.0000329015892877]},"sizeMeters":[4.05,4.05,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":14,"publishedAt":"2026-09-08T03:57:51.199Z","updatedAt":"2026-10-25T10:18:27.951Z","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/28937/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 SuspendedPaddedPendulumPartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28937/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/28937/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28937/v1/model.glb\" alt=\"Suspended padded pendulum (Party Obstacle Course)\" 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/28937/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/28937/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28936","slug":"party-obstacle-course-party-obstacle-course-piston-bum-437544d6","title":"Padded piston bumper (Party Obstacle Course)","summary":"Padded piston bumper in a padded coral and teal festival family.","description":"Padded piston bumper. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-piston-bum-437544d6","cdnUrl":"https://cdn.3dassets.dev/assets/28936/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-piston-bum-437544d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/28936/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28936/v1/poster.webp","blurhash":"U58FGv_M004ovLnPO?S~008{?w.7C+O=:k#8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":128796,"triangles":7044,"vertices":5458,"meshes":6,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2,-0.00004121157344538773,-2],"max":[2,1.9000411884021398,2]},"sizeMeters":[4,1.9,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:50.906Z","updatedAt":"2026-10-25T09:39:59.122Z","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/28936/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 PaddedPistonBumperPartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28936/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/28936/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28936/v1/model.glb\" alt=\"Padded piston bumper (Party Obstacle Course)\" 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/28936/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/28936/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28939","slug":"party-obstacle-course-party-obstacle-course-moving-lif-a11e242e","title":"Guided low lift (Party Obstacle Course)","summary":"Guided low lift in a padded coral and teal festival family.","description":"Guided low lift. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Rigid mechanical animation; supporting structure stays fixed. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-moving-lif-a11e242e","cdnUrl":"https://cdn.3dassets.dev/assets/28939/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-moving-lif-a11e242e","thumbnailUrl":"https://cdn.3dassets.dev/assets/28939/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28939/v1/poster.webp","blurhash":"UCA130%L02IWMdW=t7ni00Rj~Tt5-:jYRobc","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":137732,"triangles":8220,"vertices":6214,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2,0.00008545812227339633,-2],"max":[2,2.799899559222858,2]},"sizeMeters":[4,2.8,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":6,"publishedAt":"2026-09-08T03:57:51.997Z","updatedAt":"2026-10-05T15:50:32.164Z","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/28939/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 GuidedLowLiftPartyObstacleCourse(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/28939/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/28939/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28939/v1/model.glb\" alt=\"Guided low lift (Party Obstacle Course)\" 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/28939/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/28939/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"28929","slug":"party-obstacle-course-party-obstacle-course-gap-jump-p-e21c1def","title":"Twin gap jump blocks (Party Obstacle Course)","summary":"Twin gap jump blocks in a padded coral and teal festival family.","description":"Twin gap jump blocks. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Course deck ports meet on a 4 m grid at 0.8 m height. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-gap-jump-p-e21c1def","cdnUrl":"https://cdn.3dassets.dev/assets/28929/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-gap-jump-p-e21c1def","thumbnailUrl":"https://cdn.3dassets.dev/assets/28929/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28929/v1/poster.webp","blurhash":"UDCY]vyA0Li+}@SwEe$j00Mg-ox.0gw4#rEg","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":114612,"triangles":6456,"vertices":5078,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00008545812227339633,-2],"max":[2,1.2000061364845407,2]},"sizeMeters":[4,1.2,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:49.339Z","updatedAt":"2026-10-05T15:50:16.305Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28929/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwinGapJumpBlocksPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28929/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28929/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28929/v1/model.glb\" alt=\"Twin gap jump blocks (Party Obstacle Course)\" 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/28929/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/28929/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28941","slug":"party-obstacle-course-party-obstacle-course-start-gate-3a5ac90e","title":"Start light gate (Party Obstacle Course)","summary":"Start light gate in a padded coral and teal festival family.","description":"Start light gate. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-start-gate-3a5ac90e","cdnUrl":"https://cdn.3dassets.dev/assets/28941/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-start-gate-3a5ac90e","thumbnailUrl":"https://cdn.3dassets.dev/assets/28941/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28941/v1/poster.webp","blurhash":"UD6J~|oz8wcE.mu4IAMJh}o}VsQ.M{oLxaRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":86848,"triangles":4104,"vertices":3545,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-2.0250000953674316,0.00009842015568427287,-0.375002306548954],"max":[2.0250000953674316,4.050000190734863,0.375002306548954]},"sizeMeters":[4.05,4.05,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:52.123Z","updatedAt":"2026-10-05T15:50:31.678Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28941/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StartLightGatePartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28941/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28941/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28941/v1/model.glb\" alt=\"Start light gate (Party Obstacle Course)\" 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/28941/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/28941/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28938","slug":"party-obstacle-course-party-obstacle-course-finish-arc-c695fbd0","title":"Finish flag arch (Party Obstacle Course)","summary":"Finish flag arch in a padded coral and teal festival family.","description":"Finish flag arch. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-finish-arc-c695fbd0","cdnUrl":"https://cdn.3dassets.dev/assets/28938/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-finish-arc-c695fbd0","thumbnailUrl":"https://cdn.3dassets.dev/assets/28938/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28938/v1/poster.webp","blurhash":"UJEw|4tl0exG~C-VE1EL9tr?WVIoIUj]xuNG","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":146420,"triangles":8424,"vertices":5754,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0250000953674316,-0.00002102823413285826,-0.375002306548954],"max":[2.0250000953674316,4.050000190734863,0.375002306548954]},"sizeMeters":[4.05,4.05,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:52.012Z","updatedAt":"2026-10-05T15:50:32.347Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28938/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FinishFlagArchPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28938/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28938/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28938/v1/model.glb\" alt=\"Finish flag arch (Party Obstacle Course)\" 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/28938/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/28938/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28930","slug":"party-obstacle-course-party-obstacle-course-stepping-d-de85e134","title":"Raised stepping drum (Party Obstacle Course)","summary":"Raised stepping drum in a padded coral and teal festival family.","description":"Raised stepping drum. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-stepping-d-de85e134","cdnUrl":"https://cdn.3dassets.dev/assets/28930/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-stepping-d-de85e134","thumbnailUrl":"https://cdn.3dassets.dev/assets/28930/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28930/v1/poster.webp","blurhash":"USDAMXtR01RQ~7oJE4flD5V@yCoy5ZW=$eae","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31584,"triangles":1120,"vertices":2410,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7300000190734863,0.00004547104936612756,-0.7300000190734863],"max":[0.7300000190734863,1.0299777007664688,0.7300000190734863]},"sizeMeters":[1.46,1.03,1.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:50.184Z","updatedAt":"2026-10-25T07:14:35.100Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28930/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RaisedSteppingDrumPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28930/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28930/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28930/v1/model.glb\" alt=\"Raised stepping drum (Party Obstacle Course)\" 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/28930/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/28930/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28950","slug":"party-obstacle-course-party-obstacle-course-safety-mat-98d41847","title":"Stitched landing mat (Party Obstacle Course)","summary":"Stitched landing mat in a padded coral and teal festival family.","description":"Stitched landing mat. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-safety-mat-98d41847","cdnUrl":"https://cdn.3dassets.dev/assets/28950/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-safety-mat-98d41847","thumbnailUrl":"https://cdn.3dassets.dev/assets/28950/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28950/v1/poster.webp","blurhash":"UBF4i@%20Kbb-VayR*kC00M{}[WB9Zofs:WB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50100,"triangles":2940,"vertices":1900,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000060427319314701466,-2],"max":[2,0.13002284029919634,2]},"sizeMeters":[4,0.13,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:54.191Z","updatedAt":"2026-10-05T15:54:20.719Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28950/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StitchedLandingMatPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28950/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28950/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28950/v1/model.glb\" alt=\"Stitched landing mat (Party Obstacle Course)\" 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/28950/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/28950/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28940","slug":"party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","title":"Checkpoint beacon (Party Obstacle Course)","summary":"Checkpoint beacon in a padded coral and teal festival family.","description":"Checkpoint beacon. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","cdnUrl":"https://cdn.3dassets.dev/assets/28940/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-checkpoint-c9f892fe","thumbnailUrl":"https://cdn.3dassets.dev/assets/28940/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28940/v1/poster.webp","blurhash":"UF8qNat700M{~Vof4pRj-;j[IUWBt9f8V=fi","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":29528,"triangles":1100,"vertices":1483,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2750000059604645,0.000009763952226786443,-0.2750000059604645],"max":[0.2750000059604645,1.669990977407626,0.2750000059604645]},"sizeMeters":[0.55,1.67,0.55],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:52.099Z","updatedAt":"2026-10-25T09:38:18.610Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28940/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CheckpointBeaconPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28940/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28940/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28940/v1/model.glb\" alt=\"Checkpoint beacon (Party Obstacle Course)\" 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/28940/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/28940/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28947","slug":"party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","title":"Straight perimeter rail (Party Obstacle Course)","summary":"Straight perimeter rail in a padded coral and teal festival family.","description":"Straight perimeter rail. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","cdnUrl":"https://cdn.3dassets.dev/assets/28947/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-perimeter--29a8ce92","thumbnailUrl":"https://cdn.3dassets.dev/assets/28947/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28947/v1/poster.webp","blurhash":"UA8rL1xu4.kW.m%~RiM{00u3?vR58wDO%#-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59860,"triangles":3132,"vertices":2324,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00005127163844526744,-0.3000854443931877],"max":[2,1.12991361408629,0.3000854443931877]},"sizeMeters":[4,1.13,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":6,"publishedAt":"2026-09-08T03:57:53.885Z","updatedAt":"2026-10-05T15:54:18.661Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28947/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StraightPerimeterRailPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28947/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28947/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28947/v1/model.glb\" alt=\"Straight perimeter rail (Party Obstacle Course)\" 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/28947/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/28947/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28948","slug":"party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","title":"Corner perimeter rail (Party Obstacle Course)","summary":"Corner perimeter rail in a padded coral and teal festival family.","description":"Corner perimeter rail. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","cdnUrl":"https://cdn.3dassets.dev/assets/28948/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-barrier-co-9e4d01c1","thumbnailUrl":"https://cdn.3dassets.dev/assets/28948/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28948/v1/poster.webp","blurhash":"U76lMc4T8w_N%~R5VYtR00?^%#8{D4%#kCMd","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":115876,"triangles":6264,"vertices":4646,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0000000335276127,0.000028382105120183798,-0.30000001192092896],"max":[2.2999999821186066,1.1299821524325306,4]},"sizeMeters":[4.3,1.13,4.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:54.075Z","updatedAt":"2026-10-25T14:24:56.582Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28948/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CornerPerimeterRailPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28948/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28948/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28948/v1/model.glb\" alt=\"Corner perimeter rail (Party Obstacle Course)\" 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/28948/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/28948/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28949","slug":"party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","title":"Terminal perimeter post (Party Obstacle Course)","summary":"Terminal perimeter post in a padded coral and teal festival family.","description":"Terminal perimeter post. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","cdnUrl":"https://cdn.3dassets.dev/assets/28949/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-barrier-en-0927acb5","thumbnailUrl":"https://cdn.3dassets.dev/assets/28949/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28949/v1/poster.webp","blurhash":"UA8NX[t700M{}@oL5QR+v#jZO?W;spfRR*a{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19816,"triangles":844,"vertices":936,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2750000059604645,0.000015716951441750726,-0.2750000059604645],"max":[0.2750000059604645,1.3099911474317898,0.2750000059604645]},"sizeMeters":[0.55,1.31,0.55],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:54.055Z","updatedAt":"2026-10-25T13:28:34.176Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28949/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TerminalPerimeterPostPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28949/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28949/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28949/v1/model.glb\" alt=\"Terminal perimeter post (Party Obstacle Course)\" 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/28949/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/28949/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28942","slug":"party-obstacle-course-party-obstacle-course-spectator--f78ae874","title":"Three-tier spectator bleacher (Party Obstacle Course)","summary":"Three-tier spectator bleacher in a padded coral and teal festival family.","description":"Three-tier spectator bleacher. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-spectator--f78ae874","cdnUrl":"https://cdn.3dassets.dev/assets/28942/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-spectator--f78ae874","thumbnailUrl":"https://cdn.3dassets.dev/assets/28942/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28942/v1/poster.webp","blurhash":"U9A^Bo%M03Rk^$?GNeIq00xC~TNJ0403-Q-,","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59892,"triangles":3528,"vertices":2291,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.000045163221699395795,-1.1249122592852565],"max":[2,0.9799145538359084,1.1249122592852565]},"sizeMeters":[4,0.98,2.25],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":13,"publishedAt":"2026-09-08T03:57:52.303Z","updatedAt":"2026-10-25T16:46:23.129Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28942/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeTierSpectatorBleacherPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28942/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28942/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28942/v1/model.glb\" alt=\"Three-tier spectator bleacher (Party Obstacle Course)\" 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/28942/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/28942/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28943","slug":"party-obstacle-course-party-obstacle-course-shade-cano-748ae178","title":"Festival shade canopy (Party Obstacle Course)","summary":"Festival shade canopy in a padded coral and teal festival family.","description":"Festival shade canopy. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-shade-cano-748ae178","cdnUrl":"https://cdn.3dassets.dev/assets/28943/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-shade-cano-748ae178","thumbnailUrl":"https://cdn.3dassets.dev/assets/28943/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28943/v1/poster.webp","blurhash":"UV9Iett7VEWC*JofVYjaMyWCR%odHsRkXSay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":47364,"triangles":2148,"vertices":1976,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.00007540111804860139,-2],"max":[2,2.9201108441782284,2]},"sizeMeters":[4,2.92,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:52.495Z","updatedAt":"2026-10-25T11:38:50.525Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28943/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FestivalShadeCanopyPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28943/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28943/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28943/v1/model.glb\" alt=\"Festival shade canopy (Party Obstacle Course)\" 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/28943/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/28943/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28951","slug":"party-obstacle-course-party-obstacle-course-equipment--45e5a81d","title":"Festival equipment chest (Party Obstacle Course)","summary":"Festival equipment chest in a padded coral and teal festival family.","description":"Festival equipment chest. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-equipment--45e5a81d","cdnUrl":"https://cdn.3dassets.dev/assets/28951/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-equipment--45e5a81d","thumbnailUrl":"https://cdn.3dassets.dev/assets/28951/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28951/v1/poster.webp","blurhash":"UcEWU1oz9GbF~StQIsV@M0xWozRl5Es9r=S5","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":61580,"triangles":3528,"vertices":2284,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000025192001927076824,-0.3500093270205642],"max":[0.6000000238418579,0.7499871822255108,0.4200093198680068]},"sizeMeters":[1.2,0.75,0.77],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":9,"publishedAt":"2026-09-08T03:57:54.362Z","updatedAt":"2026-10-25T09:29:39.545Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28951/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FestivalEquipmentChestPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28951/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28951/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28951/v1/model.glb\" alt=\"Festival equipment chest (Party Obstacle Course)\" 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/28951/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/28951/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28944","slug":"party-obstacle-course-party-obstacle-course-operator-b-a88eb73e","title":"Roofed operator booth (Party Obstacle Course)","summary":"Roofed operator booth in a padded coral and teal festival family.","description":"Roofed operator booth. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-operator-b-a88eb73e","cdnUrl":"https://cdn.3dassets.dev/assets/28944/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-operator-b-a88eb73e","thumbnailUrl":"https://cdn.3dassets.dev/assets/28944/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28944/v1/poster.webp","blurhash":"UeENCHtR9bS3~8oeIubIvfjYVtWBI]oLnhV[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":78724,"triangles":5292,"vertices":3433,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.649999976158142,-0.00006714104459182302,-1.4499877716444503],"max":[1.649999976158142,3.000083161130919,1.4499877716444503]},"sizeMeters":[3.3,3,2.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":6,"publishedAt":"2026-09-08T03:57:52.775Z","updatedAt":"2026-10-05T15:54:18.091Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28944/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofedOperatorBoothPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28944/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28944/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28944/v1/model.glb\" alt=\"Roofed operator booth (Party Obstacle Course)\" 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/28944/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/28944/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28945","slug":"party-obstacle-course-party-obstacle-course-timing-con-8a31e836","title":"Timing control console (Party Obstacle Course)","summary":"Timing control console in a padded coral and teal festival family.","description":"Timing control console. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-timing-con-8a31e836","cdnUrl":"https://cdn.3dassets.dev/assets/28945/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-timing-con-8a31e836","thumbnailUrl":"https://cdn.3dassets.dev/assets/28945/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28945/v1/poster.webp","blurhash":"UG6SsWs;D4W-*JozMdaenOkqX7Z$QmbvXmVY","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":57860,"triangles":3228,"vertices":2536,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,1.3411045607369942e-9,-0.32495345898251804],"max":[0.6000000238418579,1.6250166565031572,0.32495345898251804]},"sizeMeters":[1.2,1.625,0.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":7,"publishedAt":"2026-09-08T03:57:52.989Z","updatedAt":"2026-10-05T15:54:18.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28945/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimingControlConsolePartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28945/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28945/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28945/v1/model.glb\" alt=\"Timing control console (Party Obstacle Course)\" 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/28945/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/28945/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28946","slug":"party-obstacle-course-party-obstacle-course-speaker-to-21467db3","title":"Twin speaker tower (Party Obstacle Course)","summary":"Twin speaker tower in a padded coral and teal festival family.","description":"Twin speaker tower. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-speaker-to-21467db3","cdnUrl":"https://cdn.3dassets.dev/assets/28946/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-speaker-to-21467db3","thumbnailUrl":"https://cdn.3dassets.dev/assets/28946/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28946/v1/poster.webp","blurhash":"UD7,=Qt70dM{}toe5RR*^PoL9[WV-AjZEgbb","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":56156,"triangles":2736,"vertices":2297,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4499603398739641,1.3411045607369942e-9,-0.4000344983056753],"max":[0.4499603398739641,2.509981265756963,0.42997772749280894]},"sizeMeters":[0.9,2.51,0.83],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":8,"publishedAt":"2026-09-08T03:57:54.016Z","updatedAt":"2026-10-08T13:34:57.259Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28946/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwinSpeakerTowerPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28946/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28946/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28946/v1/model.glb\" alt=\"Twin speaker tower (Party Obstacle Course)\" 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/28946/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/28946/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"28952","slug":"party-obstacle-course-party-obstacle-course-celebratio-e1340d69","title":"Three-place celebration podium (Party Obstacle Course)","summary":"Three-place celebration podium in a padded coral and teal festival family.","description":"Three-place celebration podium. Original CC0 AI-generated stylized premium model with rounded padding, seams and visible mounting hardware. Metres, Y up, Z forward; footprint origin at ground level. Static structure; joints do not simulate mechanics. No game logic, collision or physics.","status":"published","url":"https://3dassets.dev/assets/party-obstacle-course-party-obstacle-course-celebratio-e1340d69","cdnUrl":"https://cdn.3dassets.dev/assets/28952/v1/model.glb","downloadUrl":"https://3dassets.dev/download/party-obstacle-course-party-obstacle-course-celebratio-e1340d69","thumbnailUrl":"https://cdn.3dassets.dev/assets/28952/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/28952/v1/poster.webp","blurhash":"UHD+;x{z03O@+u%NW=Vr00A??rs92[9Yocb_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"stylized","title":"Stylized"},{"slug":"modern","title":"Modern"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54816,"triangles":3528,"vertices":2282,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0999999344348907,-0.00002670220522058009,-0.699999988079071],"max":[2.0999999344348907,0.8799896881506827,0.699999988079071]},"sizeMeters":[4.2,0.88,1.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":10,"publishedAt":"2026-09-08T03:57:54.649Z","updatedAt":"2026-10-25T16:43:09.756Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/28952/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreePlaceCelebrationPodiumPartyObstacleCourse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/28952/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/28952/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/28952/v1/model.glb\" alt=\"Three-place celebration podium (Party Obstacle Course)\" 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/28952/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/28952/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}