{"data":{"id":"116","slug":"dog-agility-and-training-field","title":"Dog Agility and Training Field","summary":"Walk a club agility course end to end: the hurdles and the running order, the A frame and dog walk, a seesaw that rocks on its fulcrum, twelve weave poles and a tunnel line, then the judging table and the handler area behind the rope.","url":"https://3dassets.dev/demos/dog-agility-and-training-field","coverUrl":"https://cdn.3dassets.dev/media/dog-agility-and-training-field-demo.png","featured":true,"pack":{"slug":"dog-agility-and-training-field","title":"Dog Agility and Training Field","url":"https://3dassets.dev/packs/dog-agility-and-training-field","summary":"44 stylized dog agility models: hurdles, tyre, spread and long jumps, an A frame, dog walk, seesaw, rigid and fabric tunnels, weaves and a pause table, with ported grass tiles, ring rope and gate, timing and judging kit, crates, gazebos, a club shed and a course set in a ring.","assetCount":45,"totalBytes":1404092,"starterScene":{"slug":"dog-agility-and-training-field-club-agil-7d9652a2-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/35620/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-club-agil-7d9652a2-starter-scene","fileSize":598488}},"placementCount":142,"assetCount":43,"spawn":{"position":[2.75,0.126,4.25],"yaw":195},"publishedAt":"2026-09-11T16:43:03.309Z","updatedAt":"2026-09-11T16:43:03.310Z","description":"## What is placed\n\nA roped agility ring on mown and worn grass, 24 metres square, laid from the pack's own ground tiles.\nThe round runs from the entry gate and the timing gates down the centre: two hurdles, the same hurdle\nat its upper setting, the wall jump and the brush fence, the spread jump, the tyre jump and the long\njump planks. The contact obstacles are the A frame, the dog walk and the seesaw, with the pause table\nand its painted box beside them. Twelve weave poles run down the east side and the tunnel line closes\nthe round: two rigid straights, a curve and the collapsed tunnel. Numbered cones set the order.\n\nThe judge and timekeeper table sits at the rope, with the scoreboard, the PA post and the spectator\nbenches across the ring. Behind it is the handler area: wire crates and a crate trolley, grooming\ntables and lead racks under two shade gazebos, water stations, a rosette and trophy table, the first\naid point, the noticeboard and the litter bins. The club shed and the equipment store rack stand at\nthe far end beside the car park, inside a boundary of hedges and tree clumps.\n\n## What moves\n\nBoth hurdles and the spread jump tilt their bars, the tyre swings in its frame, and the seesaw plank\nrocks on its fulcrum. The ring entry gate, the club shed door and the litter bin lids open and close.\nThe crate trolley and the grooming table roll on their wheels. Every clip plays as you walk up to it.\n\n## What does not move, and why\n\nThere are no dogs anywhere in this pack. The catalogue supplies them separately, in Cats Dogs and\nPets at Home and in Pets and Companions HD, so this is the course they run rather than a scene with\na dog in it. There are no handlers or judges either, because nothing in this library is skinned.\n\nThe ring rope, the fabric chute of the collapsed tunnel, the leads on the rack and the beam between\nthe timing gates are static geometry. None of them is reachable with the rigid node transforms this\nlibrary uses, and a faked version would cost a consumer more than it gives. No real kennel club,\ncompetition or governing body is named anywhere in the pack.\n","scene":{"version":1,"spawn":{"position":[2.75,0.126,4.25],"yaw":195},"ground":{"style":"none"},"environment":{"preset":"outdoor","shadows":true},"placements":[{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-10,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-6,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-2,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-2,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","position":[-2,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-2,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-2,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[-2,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[2,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[2,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","position":[2,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[2,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[2,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[2,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-car-park-marking-tile-c0664d63","position":[6,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[6,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[6,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","position":[6,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[6,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[6,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-car-park-marking-tile-c0664d63","position":[10,0,-10],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[10,0,-6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[10,0,-2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[10,0,2],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[10,0,6],"rotation":0},{"asset":"dog-agility-and-training-field-grass-ground-tile-ba799d86","position":[10,0,10],"rotation":0},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-6,0.062,6],"rotation":0},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-3,0.062,6],"rotation":0},{"asset":"dog-agility-and-training-field-ring-entry-gate-54f316f3","position":[0,0.062,6],"rotation":0},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[3,0.062,6],"rotation":0},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[6,0.062,6],"rotation":0},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[7.5,0.062,4.5],"rotation":90},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[7.5,0.062,1.5],"rotation":90},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[7.5,0.062,-1.5],"rotation":90},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[7.5,0.062,-4.5],"rotation":90},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[6,0.062,-6],"rotation":180},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[3,0.062,-6],"rotation":180},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[0,0.062,-6],"rotation":180},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-3,0.062,-6],"rotation":180},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-6,0.062,-6],"rotation":180},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-7.5,0.062,-4.5],"rotation":270},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-7.5,0.062,-1.5],"rotation":270},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-7.5,0.062,1.5],"rotation":270},{"asset":"dog-agility-and-training-field-ring-rope-run-034810d6","position":[-7.5,0.062,4.5],"rotation":270},{"asset":"dog-agility-and-training-field-timing-gate-pair-5f9f50ed","position":[0,0.062,4.9],"rotation":0},{"asset":"dog-agility-and-training-field-hurdle-jump-a24ae81a","position":[0,0.062,3.2],"rotation":0},{"asset":"dog-agility-and-training-field-hurdle-jump-high-b2051ee0","position":[0,0.062,1.7],"rotation":0},{"asset":"dog-agility-and-training-field-a-frame-ramp-ed89a0c3","position":[0,0.062,-1.5],"rotation":0},{"asset":"dog-agility-and-training-field-weave-pole-set-twelve-c565137b","position":[4.6,0.062,0.4],"rotation":90},{"asset":"dog-agility-and-training-field-dog-walk-a1112e2c","position":[6.7,0.062,0.6],"rotation":0},{"asset":"dog-agility-and-training-field-rigid-tunnel-straight-b6a7f18f","position":[3,0.062,-5.3],"rotation":270},{"asset":"dog-agility-and-training-field-rigid-tunnel-straight-b6a7f18f","position":[1.4000000000000001,0.062,-5.3],"rotation":270},{"asset":"dog-agility-and-training-field-rigid-tunnel-curve-03447b4e","position":[0.6000000000000001,0.062,-5.3],"rotation":270},{"asset":"dog-agility-and-training-field-collapsed-tunnel-entry-ee5e179a","position":[-1.521320343559643,0.062,-4.172792206135787],"rotation":135},{"asset":"dog-agility-and-training-field-agility-seesaw-a0993001","position":[-4.6,0.062,-1],"rotation":0},{"asset":"dog-agility-and-training-field-tyre-jump-d6713e22","position":[-6,0.062,1.8],"rotation":0},{"asset":"dog-agility-and-training-field-spread-jump-6faf8466","position":[-6,0.062,4.2],"rotation":0},{"asset":"dog-agility-and-training-field-long-jump-plank-set-b7506efd","position":[-2.8,0.062,4.6],"rotation":0},{"asset":"dog-agility-and-training-field-wall-jump-51118c85","position":[2.4,0.062,3.2],"rotation":0},{"asset":"dog-agility-and-training-field-brush-fence-7d8eaf85","position":[-2.6,0.062,-5.2],"rotation":0},{"asset":"dog-agility-and-training-field-pause-table-703be3d4","position":[-6.2,0.062,-4.2],"rotation":0},{"asset":"dog-agility-and-training-field-pause-box-marking-9d05dfc7","position":[-6.2,0.062,-1.8],"rotation":0},{"asset":"dog-agility-and-training-field-timing-gate-pair-5f9f50ed","position":[3.4,0.062,5.4],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[1.35,0.062,3.2],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[1.35,0.062,1.7],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[1,0.062,-0.4],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[3.4,0.062,-0.8],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[5.6,0.062,2.6],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[2.6,0.062,-4.2],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-3.6,0.062,-1],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-5,0.062,1.8],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-4.55,0.062,4.2],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-1.6,0.062,4.6],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[2.4,0.062,2.4],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-1.4,0.062,-5.2],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-5.2,0.062,-4.2],"rotation":0},{"asset":"dog-agility-and-training-field-judges-table-8d864aa8","position":[-9.2,0.062,2.4],"rotation":90},{"asset":"dog-agility-and-training-field-scoreboard-post-23b98089","position":[9.3,0.062,-1],"rotation":270},{"asset":"dog-agility-and-training-field-pa-speaker-post-8d62a208","position":[9.4,0.062,3.6],"rotation":0},{"asset":"dog-agility-and-training-field-club-noticeboard-23490d32","position":[-10.4,0.062,8.2],"rotation":0},{"asset":"dog-agility-and-training-field-first-aid-point-578131ba","position":[-6,0.062,6.8],"rotation":0},{"asset":"dog-agility-and-training-field-shade-gazebo-b25e7ce2","position":[-6.4,0.062,9],"rotation":0},{"asset":"dog-agility-and-training-field-rosette-and-trophy-tabl-e70911a3","position":[-6.4,0.062,9.2],"rotation":0},{"asset":"dog-agility-and-training-field-shade-gazebo-red-1ef24b1f","position":[6.4,0.062,9],"rotation":0},{"asset":"dog-agility-and-training-field-grooming-table-6f9ac32d","position":[6.2,0.062,8.8],"rotation":0},{"asset":"dog-agility-and-training-field-rosette-and-trophy-tabl-e70911a3","position":[2.8,0.062,11.6],"rotation":0},{"asset":"dog-agility-and-training-field-lead-rack-and-kit-bag-1482a00c","position":[-4,0.062,10.4],"rotation":0},{"asset":"dog-agility-and-training-field-lead-rack-and-kit-bag-1482a00c","position":[1.4,0.062,9.2],"rotation":0},{"asset":"dog-agility-and-training-field-water-station-9d34699c","position":[-1.4,0.062,8.4],"rotation":0},{"asset":"dog-agility-and-training-field-water-station-9d34699c","position":[8.4,0.062,8.2],"rotation":0},{"asset":"dog-agility-and-training-field-spectator-bench-f8c4825c","position":[-2.2,0.062,7.4],"rotation":180},{"asset":"dog-agility-and-training-field-spectator-bench-f8c4825c","position":[0.6,0.062,7.4],"rotation":180},{"asset":"dog-agility-and-training-field-spectator-bench-f8c4825c","position":[3.4,0.062,7.4],"rotation":180},{"asset":"dog-agility-and-training-field-dog-crate-4a7b0539","position":[2.6,0.062,10.6],"rotation":0},{"asset":"dog-agility-and-training-field-dog-crate-4a7b0539","position":[3.7,0.062,10.6],"rotation":0},{"asset":"dog-agility-and-training-field-dog-crate-4a7b0539","position":[4.8,0.062,11.3],"rotation":0},{"asset":"dog-agility-and-training-field-dog-crate-4a7b0539","position":[-2.6,0.062,10.8],"rotation":0},{"asset":"dog-agility-and-training-field-dog-crate-4a7b0539","position":[-1.5,0.062,10.8],"rotation":0},{"asset":"dog-agility-and-training-field-crate-trolley-6ff04960","position":[0.6,0.062,10.6],"rotation":0},{"asset":"dog-agility-and-training-field-field-litter-bin-eeefea95","position":[7.2,0.1,11.5],"rotation":0},{"asset":"dog-agility-and-training-field-field-litter-bin-eeefea95","position":[-9.7,0.062,4.6],"rotation":0},{"asset":"dog-agility-and-training-field-training-cone-and-marke-6f253868","position":[-9.4,0.062,6.6],"rotation":0},{"asset":"dog-agility-and-training-field-training-cone-and-marke-6f253868","position":[9.6,0.062,6.9],"rotation":90},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[-4.4,0.062,7.8],"rotation":0},{"asset":"dog-agility-and-training-field-course-number-cone-69d5bcb3","position":[1.8,0.062,11.4],"rotation":0},{"asset":"dog-agility-and-training-field-club-shed-5e51ef72","position":[-6,0.062,-9.2],"rotation":0},{"asset":"dog-agility-and-training-field-equipment-store-rack-6c5ec6c3","position":[-1.6,0.062,-9.8],"rotation":0},{"asset":"dog-agility-and-training-field-training-cone-and-marke-6f253868","position":[5.5,0.062,-8.6],"rotation":0},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-7,0.062,-11],"rotation":0},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-5,0.062,-11],"rotation":0},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-3,0.062,-11],"rotation":0},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-1,0.062,-11],"rotation":0},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,-7],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,-5],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,-3],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,-1],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,1],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,3],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,5],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[-11,0.062,7],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,-7],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,-5],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,-3],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,-1],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,1],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,3],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,5],"rotation":90},{"asset":"dog-agility-and-training-field-hedge-section-5a0f31d8","position":[11,0.062,7],"rotation":90},{"asset":"dog-agility-and-training-field-tree-clump-c836c330","position":[-9.9,0.062,-9.9],"rotation":28.65},{"asset":"dog-agility-and-training-field-tree-clump-c836c330","position":[2,0.062,-9.8],"rotation":120.32},{"asset":"dog-agility-and-training-field-tree-clump-c836c330","position":[-9.9,0.062,9.9],"rotation":91.67},{"asset":"dog-agility-and-training-field-tree-clump-c836c330","position":[9.9,0.062,9.9],"rotation":40.11}],"points":[{"position":[0,0.126,3.9],"title":"The running order","text":"Numbered cones set the order. Two hurdles open the course, the upper setting is the same jump raised a notch, and the wall jump and the brush fence come later in the round.","asset":"dog-agility-and-training-field-hurdle-jump-a24ae81a"},{"position":[1.6,0.126,-1],"title":"A frame and dog walk","text":"The A frame and the dog walk are the contact obstacles: a dog has to touch the painted zone at each end. Both stand on the worn grass down the middle of the ring.","asset":"dog-agility-and-training-field-a-frame-ramp-ed89a0c3"},{"position":[-3.4,0.126,-1],"title":"The seesaw","text":"The seesaw is the obstacle with a moving part: the plank rocks on its fulcrum, and the clip plays as you walk up to it.","asset":"dog-agility-and-training-field-agility-seesaw-a0993001"},{"position":[3.4,0.126,-2.6],"title":"Weaves and tunnels","text":"Twelve weave poles run down the east side, and the tunnel line closes the round: two rigid straights, a curve, and the collapsed tunnel with its fabric chute.","asset":"dog-agility-and-training-field-weave-pole-set-twelve-c565137b"},{"position":[-8,0.126,3.2],"title":"The judging end","text":"The judge and the timekeeper work from the table at the rope. Timing gates stand at the start and the finish, and the scoreboard and the PA post face the ring from across the grass.","asset":"dog-agility-and-training-field-judges-table-8d864aa8"},{"position":[1,0.126,9.8],"title":"The handler area","text":"Handlers wait out here: wire crates and a trolley, grooming tables under the gazebos, lead racks, water stations and the rosette table. The shed and the store rack hold the kit.","asset":"dog-agility-and-training-field-dog-crate-4a7b0539"}],"poster":{"position":[0,2.53,8.5],"lookAt":[-0.5,0.4,-1.5]}},"bounds":{"min":[-14,-0.000030213994933490917,-14],"max":[14,5.042000019073486,14]},"assets":[{"id":"35593","slug":"dog-agility-and-training-field-grass-ground-tile-ba799d86","title":"Mown Grass Ground Tile (Dog Agility and Training Field)","summary":"A 4 m square of mown turf 6 mm thick with a scatter of longer tufts, ported on all four edges so a training field of any size tiles out of it. Static.","description":"A 4 m square of mown turf 6 mm thick with a scatter of longer tufts, ported on all four edges so a training field of any size tiles out of it. Static. Overall 4.000 x 0.126 x 4.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: north (ground), south (ground), west (ground), east (ground). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-grass-ground-tile-ba799d86","cdnUrl":"https://cdn.3dassets.dev/assets/35593/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-grass-ground-tile-ba799d86","thumbnailUrl":"https://cdn.3dassets.dev/assets/35593/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35593/v1/poster.webp","blurhash":"U8BW|}xv00afxtayRkof00M{_LWUIVoMt6V[","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":4468,"triangles":72,"vertices":216,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-2,0.000009797454820756335,-2],"max":[2,0.12599020457173715,2]},"sizeMeters":[4,0.126,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:22.564Z","updatedAt":"2026-09-11T16:32:22.669Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35593/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MownGrassGroundTileDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35593/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35593/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35593/v1/model.glb\" alt=\"Mown Grass Ground Tile (Dog Agility and Training Field)\" 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/35593/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/35593/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35594","slug":"dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","title":"Worn Grass Ground Tile (Dog Agility and Training Field)","summary":"The same 4 m tile in worn bare earth, for the lines a course wears into a field at the jump take offs and along the weaves. Geometry and ports unchanged, so it drops into the grass grid anywhere.","description":"The same 4 m tile in worn bare earth, for the lines a course wears into a field at the jump take offs and along the weaves. Geometry and ports unchanged, so it drops into the grass grid anywhere. Overall 4.000 x 0.126 x 4.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Cosmetic colour variant of grass-ground-tile; the geometry is unchanged. Connectors: north (ground), south (ground), west (ground), east (ground). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","cdnUrl":"https://cdn.3dassets.dev/assets/35594/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-worn-grass-ground-tile-2d5a7617","thumbnailUrl":"https://cdn.3dassets.dev/assets/35594/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35594/v1/poster.webp","blurhash":"U5BMrX%f00WA%2WBRjof00IV~VV_E1ozt7R%","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17832,"triangles":72,"vertices":216,"meshes":1,"materials":1,"textures":1,"animations":[],"boundingBox":{"min":[-2,0.000009797454820756335,-2],"max":[2,0.12599020457173715,2]},"sizeMeters":[4,0.126,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:22.631Z","updatedAt":"2026-09-11T16:32:22.760Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35594/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WornGrassGroundTileDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35594/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35594/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35594/v1/model.glb\" alt=\"Worn Grass Ground Tile (Dog Agility and Training Field)\" 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/35594/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/35594/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35595","slug":"dog-agility-and-training-field-car-park-marking-tile-c0664d63","title":"Car Park Marking Tile (Dog Agility and Training Field)","summary":"A 4 m hardstanding tile in compacted earth with two marked bays and a head line, ported the same way as the grass tile so the club car park joins the field grid. Static.","description":"A 4 m hardstanding tile in compacted earth with two marked bays and a head line, ported the same way as the grass tile so the club car park joins the field grid. Static. Overall 4.000 x 0.116 x 4.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: north (ground), south (ground), west (ground), east (ground). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-car-park-marking-tile-c0664d63","cdnUrl":"https://cdn.3dassets.dev/assets/35595/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-car-park-marking-tile-c0664d63","thumbnailUrl":"https://cdn.3dassets.dev/assets/35595/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35595/v1/poster.webp","blurhash":"U6Bf%=-o00n$xufjRif800Ip~WRkIVjutRax","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19060,"triangles":84,"vertices":252,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.000030213994933490917,-2],"max":[2,0.11603021251971854,2]},"sizeMeters":[4,0.116,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:22.792Z","updatedAt":"2026-09-11T16:32:22.973Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35595/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CarParkMarkingTileDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35595/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35595/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35595/v1/model.glb\" alt=\"Car Park Marking Tile (Dog Agility and Training Field)\" 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/35595/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/35595/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35596","slug":"dog-agility-and-training-field-ring-rope-run-034810d6","title":"Ring Rope and Stanchion Run (Dog Agility and Training Field)","summary":"A 3 m bay of ring rope: one 0.52 m stanchion on a weighted foot at the start of the bay, a red top rope and a white lower rope carrying on to the next stanchion, so bays chain into a ring of any shape. Static: rope is a hanging curve a rigid node cannot hold.","description":"A 3 m bay of ring rope: one 0.52 m stanchion on a weighted foot at the start of the bay, a red top rope and a white lower rope carrying on to the next stanchion, so bays chain into a ring of any shape. Static: rope is a hanging curve a rigid node cannot hold. Overall 3.190 x 0.655 x 0.380 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (rope), end (rope). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-ring-rope-run-034810d6","cdnUrl":"https://cdn.3dassets.dev/assets/35596/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-ring-rope-run-034810d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/35596/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35596/v1/poster.webp","blurhash":"U69i@|%35QtR}t^kN^Io00,p^kEL0e0K=d=|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9836,"triangles":152,"vertices":456,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.690000057220459,-0.0000032116009387635203,-0.19000005722045898],"max":[1.5,0.6549021893970173,0.19000005722045898]},"sizeMeters":[3.19,0.655,0.38],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:25.282Z","updatedAt":"2026-09-11T16:32:25.396Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35596/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RingRopeAndStanchionRunDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35596/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35596/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35596/v1/model.glb\" alt=\"Ring Rope and Stanchion Run (Dog Agility and Training Field)\" 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/35596/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/35596/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35597","slug":"dog-agility-and-training-field-ring-entry-gate-54f316f3","title":"Ring Entry Gate (Dog Agility and Training Field)","summary":"A 3 m gate bay for the ring rope: a hinged 1.4 m blue barred leaf between a hanging post and a strike post, with the rope carrying on from the strike post to the next stanchion. The leaf is one node on the hinge post, so the clip swings it about the real hinge.","description":"A 3 m gate bay for the ring rope: a hinged 1.4 m blue barred leaf between a hanging post and a strike post, with the rope carrying on from the strike post to the next stanchion. The leaf is one node on the hinge post, so the clip swings it about the real hinge. Overall 3.200 x 1.180 x 0.400 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: gate. Connectors: start (rope), end (rope). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-ring-entry-gate-54f316f3","cdnUrl":"https://cdn.3dassets.dev/assets/35597/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-ring-entry-gate-54f316f3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35597/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35597/v1/poster.webp","blurhash":"U59QgWLK4Tv2%y~pNHIA00;__NGHvh00-o.8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23632,"triangles":376,"vertices":1128,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.7000000476837158,-0.000036318497754171675,-0.19993286461040966],"max":[1.5,1.1799995288303764,0.19993286461040966]},"sizeMeters":[3.2,1.18,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:25.357Z","updatedAt":"2026-09-11T16:32:25.458Z","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/35597/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 RingEntryGateDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35597/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/35597/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35597/v1/model.glb\" alt=\"Ring Entry Gate (Dog Agility and Training Field)\" 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/35597/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/35597/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35603","slug":"dog-agility-and-training-field-timing-gate-pair-5f9f50ed","title":"Electronic Timing Gate Pair (Dog Agility and Training Field)","summary":"A matched pair of timing posts 3.4 m apart on weighted feet, the beam head on one and the reflector on the other, used at the start and again at the finish. Static by design: a light beam has nothing to animate.","description":"A matched pair of timing posts 3.4 m apart on weighted feet, the beam head on one and the reflector on the other, used at the start and again at the finish. Static by design: a light beam has nothing to animate. Overall 3.840 x 1.095 x 0.440 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-timing-gate-pair-5f9f50ed","cdnUrl":"https://cdn.3dassets.dev/assets/35603/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-timing-gate-pair-5f9f50ed","thumbnailUrl":"https://cdn.3dassets.dev/assets/35603/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35603/v1/poster.webp","blurhash":"U45q^exa~V%Nof_2t8a#4pWFIWWBV{03Rkt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":12124,"triangles":200,"vertices":600,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.9199999570846558,0.00008178215298693114,-0.22008483653706373],"max":[1.9199999570846558,1.0949946521082843,0.22008483653706373]},"sizeMeters":[3.84,1.095,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:28.485Z","updatedAt":"2026-09-11T16:32:28.603Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35603/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ElectronicTimingGatePairDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35603/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35603/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35603/v1/model.glb\" alt=\"Electronic Timing Gate Pair (Dog Agility and Training Field)\" 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/35603/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/35603/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35576","slug":"dog-agility-and-training-field-hurdle-jump-a24ae81a","title":"Agility Hurdle Jump (Dog Agility and Training Field)","summary":"A 1.24 m single bar agility hurdle on two 0.86 m uprights with slatted blue and red wings, weighted feet and cups at 0.3 m and 0.55 m. The bar is one node resting in the lower cups, so the clip tips it in the cups the way a knocked pole does before it drops.","description":"A 1.24 m single bar agility hurdle on two 0.86 m uprights with slatted blue and red wings, weighted feet and cups at 0.3 m and 0.55 m. The bar is one node resting in the lower cups, so the clip tips it in the cups the way a knocked pole does before it drops. Overall 2.340 x 0.915 x 0.660 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: bar. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-hurdle-jump-a24ae81a","cdnUrl":"https://cdn.3dassets.dev/assets/35576/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-hurdle-jump-a24ae81a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35576/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35576/v1/poster.webp","blurhash":"U69@P0%M57-=%M_4xvD%00t8^jIAE200V??G","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13696,"triangles":252,"vertices":756,"meshes":7,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-1.1699999570846558,0.000018691753499455038,-0.32995972378659144],"max":[1.1699999570846558,0.9149438407521423,0.32995972378659144]},"sizeMeters":[2.34,0.915,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:10.948Z","updatedAt":"2026-09-11T16:32:11.086Z","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/35576/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 AgilityHurdleJumpDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35576/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/35576/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35576/v1/model.glb\" alt=\"Agility Hurdle Jump (Dog Agility and Training Field)\" 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/35576/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/35576/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35577","slug":"dog-agility-and-training-field-hurdle-jump-high-b2051ee0","title":"Agility Hurdle Jump, Upper Setting (Dog Agility and Training Field)","summary":"The same hurdle with its striped bar seated in the upper pair of cups, for the larger height classes on a mixed course. The cups are modelled at both settings on every hurdle; only the bar moves between them.","description":"The same hurdle with its striped bar seated in the upper pair of cups, for the larger height classes on a mixed course. The cups are modelled at both settings on every hurdle; only the bar moves between them. Overall 2.340 x 0.915 x 0.660 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: bar. Functional variant of hurdle-jump. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-hurdle-jump-high-b2051ee0","cdnUrl":"https://cdn.3dassets.dev/assets/35577/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-hurdle-jump-high-b2051ee0","thumbnailUrl":"https://cdn.3dassets.dev/assets/35577/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35577/v1/poster.webp","blurhash":"U6AAUN-;0f%N?I_4X9D%00t8^kIT0L00-V-q","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13768,"triangles":252,"vertices":756,"meshes":7,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-1.1699999570846558,0.000018691753499455038,-0.32995972378659144],"max":[1.1699999570846558,0.9149438407521423,0.32995972378659144]},"sizeMeters":[2.34,0.915,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:10.961Z","updatedAt":"2026-09-11T16:32:11.107Z","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/35577/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 AgilityHurdleJumpUpperSettingDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35577/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/35577/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35577/v1/model.glb\" alt=\"Agility Hurdle Jump, Upper Setting (Dog Agility and Training Field)\" 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/35577/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/35577/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35581","slug":"dog-agility-and-training-field-a-frame-ramp-ed89a0c3","title":"Agility A Frame (Dog Agility and Training Field)","summary":"A 5.0 m A frame climbing to 1.72 m: two 0.9 m wide ramps with eight anti slip slats each, blue side rails, a red apex bar and yellow contact zones at both feet. Static: the panels are pinned at the apex and the height is set by hand on a real frame.","description":"A 5.0 m A frame climbing to 1.72 m: two 0.9 m wide ramps with eight anti slip slats each, blue side rails, a red apex bar and yellow contact zones at both feet. Static: the panels are pinned at the apex and the height is set by hand on a real frame. Overall 1.060 x 1.800 x 5.200 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-a-frame-ramp-ed89a0c3","cdnUrl":"https://cdn.3dassets.dev/assets/35581/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-a-frame-ramp-ed89a0c3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35581/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35581/v1/poster.webp","blurhash":"UA8O0d~pIT8_IXD%D%WE00M}%N-=x9-;?bj;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":18764,"triangles":324,"vertices":972,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5299999713897705,-0.00006234789093290116,-2.5999999046325684],"max":[0.5299999713897705,1.7995740840680825,2.5999999046325684]},"sizeMeters":[1.06,1.8,5.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:13.874Z","updatedAt":"2026-09-11T16:32:14.079Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35581/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityAFrameDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35581/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35581/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35581/v1/model.glb\" alt=\"Agility A Frame (Dog Agility and Training Field)\" 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/35581/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/35581/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35588","slug":"dog-agility-and-training-field-weave-pole-set-twelve-c565137b","title":"Weave Pole Set, Twelve Poles (Dog Agility and Training Field)","summary":"The full competition set of twelve poles on a 7.2 m rail, the same spacing and banding, for the weave a finished course actually asks for.","description":"The full competition set of twelve poles on a 7.2 m rail, the same spacing and banding, for the weave a finished course actually asks for. Overall 7.200 x 1.030 x 0.240 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Functional variant of weave-pole-set. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-weave-pole-set-twelve-c565137b","cdnUrl":"https://cdn.3dassets.dev/assets/35588/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-weave-pole-set-twelve-c565137b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35588/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35588/v1/poster.webp","blurhash":"U468jdWED$g3S%.Tj]RP00g4?wnhr;4TX9%h","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"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":37932,"triangles":1320,"vertices":3960,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-3.5999999046325684,0.000008545347995367325,-0.1199743612738049],"max":[3.5999999046325684,1.0301035203670172,0.1199743612738049]},"sizeMeters":[7.2,1.03,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:19.554Z","updatedAt":"2026-09-11T16:32:19.692Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35588/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeavePoleSetTwelvePolesDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35588/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35588/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35588/v1/model.glb\" alt=\"Weave Pole Set, Twelve Poles (Dog Agility and Training Field)\" 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/35588/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/35588/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35582","slug":"dog-agility-and-training-field-dog-walk-a1112e2c","title":"Agility Dog Walk (Dog Agility and Training Field)","summary":"A 8.8 m dog walk: a 3.6 m plank at 1.2 m on two braced trestles with a slatted ramp down to the grass at each end, blue edge rails along the top and yellow contact zones at the bottom of both ramps. Static.","description":"A 8.8 m dog walk: a 3.6 m plank at 1.2 m on two braced trestles with a slatted ramp down to the grass at each end, blue edge rails along the top and yellow contact zones at the bottom of both ramps. Static. Overall 0.420 x 1.355 x 8.823 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-dog-walk-a1112e2c","cdnUrl":"https://cdn.3dassets.dev/assets/35582/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-dog-walk-a1112e2c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35582/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35582/v1/poster.webp","blurhash":"U67w~M_2-Lt4NO4p9FM~00Mwkr%fMb~p?wt2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":26528,"triangles":488,"vertices":1464,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.21002770779927182,0.00016848417853079778,-4.411524295806885],"max":[0.21002770779927182,1.3548770137409756,4.411524295806885]},"sizeMeters":[0.42,1.355,8.823],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:14.059Z","updatedAt":"2026-09-11T16:32:14.177Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35582/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityDogWalkDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35582/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35582/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35582/v1/model.glb\" alt=\"Agility Dog Walk (Dog Agility and Training Field)\" 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/35582/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/35582/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35584","slug":"dog-agility-and-training-field-rigid-tunnel-straight-b6a7f18f","title":"Rigid Tunnel Section, Straight (Dog Agility and Training Field)","summary":"A 1.6 m straight tunnel section of 0.64 m bore with three coloured hoops, open at both ends and ported so sections chain into a run of any length. Static: a real tunnel is held in shape by sandbags, which are placed separately.","description":"A 1.6 m straight tunnel section of 0.64 m bore with three coloured hoops, open at both ends and ported so sections chain into a run of any length. Static: a real tunnel is held in shape by sandbags, which are placed separately. Overall 0.750 x 0.375 x 1.600 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (tunnel), end (tunnel). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-rigid-tunnel-straight-b6a7f18f","cdnUrl":"https://cdn.3dassets.dev/assets/35584/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-rigid-tunnel-straight-b6a7f18f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35584/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35584/v1/poster.webp","blurhash":"U8CP;Uvz00O@tl9FnO-;00J.~VrsH?_NtkMw","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8456,"triangles":336,"vertices":1008,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.375,-0.000028611102633746555,-0.800000011920929],"max":[0.375,0.37502861110263375,0.800000011920929]},"sizeMeters":[0.75,0.375,1.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:16.685Z","updatedAt":"2026-09-11T16:32:16.788Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35584/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RigidTunnelSectionStraightDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35584/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35584/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35584/v1/model.glb\" alt=\"Rigid Tunnel Section, Straight (Dog Agility and Training Field)\" 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/35584/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/35584/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35585","slug":"dog-agility-and-training-field-rigid-tunnel-curve-03447b4e","title":"Rigid Tunnel Section, Curved (Dog Agility and Training Field)","summary":"A 45 degree tunnel bend of 0.64 m bore on a 2.4 m radius, ported at both mouths so a run of straights can be turned out of the dog's line. Static.","description":"A 45 degree tunnel bend of 0.64 m bore on a 2.4 m radius, ported at both mouths so a run of straights can be turned out of the dog's line. Static. Overall 1.292 x 0.345 x 1.941 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (tunnel), end (tunnel). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-rigid-tunnel-curve-03447b4e","cdnUrl":"https://cdn.3dassets.dev/assets/35585/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-rigid-tunnel-curve-03447b4e","thumbnailUrl":"https://cdn.3dassets.dev/assets/35585/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35585/v1/poster.webp","blurhash":"UA97hUR%00xu-;M{IU%M00WB~qoz9E%g-=D$","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15728,"triangles":304,"vertices":912,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.3450281575017915,0.000002805247848763903,0],"max":[0.946923698454474,0.3449971935600583,1.9410080909729004]},"sizeMeters":[1.292,0.345,1.941],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:16.849Z","updatedAt":"2026-09-11T16:32:16.958Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35585/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RigidTunnelSectionCurvedDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35585/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35585/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35585/v1/model.glb\" alt=\"Rigid Tunnel Section, Curved (Dog Agility and Training Field)\" 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/35585/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/35585/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35587","slug":"dog-agility-and-training-field-collapsed-tunnel-entry-ee5e179a","title":"Collapsed Tunnel Entry (Dog Agility and Training Field)","summary":"A 0.64 m rigid barrel entry with a 2 m fabric chute lying out behind it, in blue and white bands with the exit hem flat on the grass. The chute is static and the description says so: cloth needs a simulation or a bone per hoop, and one rigid node cannot open it.","description":"A 0.64 m rigid barrel entry with a 2 m fabric chute lying out behind it, in blue and white bands with the exit hem flat on the grass. The chute is static and the description says so: cloth needs a simulation or a bone per hoop, and one rigid node cannot open it. Overall 0.760 x 0.380 x 3.150 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (tunnel). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-collapsed-tunnel-entry-ee5e179a","cdnUrl":"https://cdn.3dassets.dev/assets/35587/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-collapsed-tunnel-entry-ee5e179a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35587/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35587/v1/poster.webp","blurhash":"U88Ei0rp4TXTo~IAV[%M00Sj?wn#Mc?wxtDi","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18532,"triangles":360,"vertices":1080,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3799999952316284,-0.000028992583638393077,-2.549999952316284],"max":[0.3799999952316284,0.38002898781526684,0.6000206108781516]},"sizeMeters":[0.76,0.38,3.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:16.877Z","updatedAt":"2026-09-11T16:32:17.004Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35587/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CollapsedTunnelEntryDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35587/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35587/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35587/v1/model.glb\" alt=\"Collapsed Tunnel Entry (Dog Agility and Training Field)\" 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/35587/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/35587/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35583","slug":"dog-agility-and-training-field-agility-seesaw-a0993001","title":"Agility Seesaw (Dog Agility and Training Field)","summary":"A 3.66 m seesaw plank on a cast fulcrum at 0.6 m, slatted, railed in blue and with a yellow up contact and a red down contact at the ends. The plank is one node on the axle itself, so the clip tips it about the real pivot and the base never moves.","description":"A 3.66 m seesaw plank on a cast fulcrum at 0.6 m, slatted, railed in blue and with a yellow up contact and a red down contact at the ends. The plank is one node on the axle itself, so the clip tips it about the real pivot and the base never moves. Overall 0.700 x 0.748 x 3.660 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: plank. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-agility-seesaw-a0993001","cdnUrl":"https://cdn.3dassets.dev/assets/35583/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-agility-seesaw-a0993001","thumbnailUrl":"https://cdn.3dassets.dev/assets/35583/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35583/v1/poster.webp","blurhash":"U78g~hpHMHxG?w9Fivxu004T%itmH;?H%$S1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17320,"triangles":272,"vertices":816,"meshes":7,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.35002135368423365,-0.000018291236985601422,-1.8300000429153442],"max":[0.35002135368423365,0.7474544524703775,1.8300000429153442]},"sizeMeters":[0.7,0.747,3.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:14.096Z","updatedAt":"2026-09-11T16:32:14.218Z","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/35583/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 AgilitySeesawDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35583/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/35583/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35583/v1/model.glb\" alt=\"Agility Seesaw (Dog Agility and Training Field)\" 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/35583/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/35583/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35579","slug":"dog-agility-and-training-field-tyre-jump-d6713e22","title":"Agility Tyre Jump (Dog Agility and Training Field)","summary":"A 0.76 m red tyre slung in a 1.5 m steel frame at 1.75 m, held on two hanger rods above and two steadying rods to a yellow base tie below. The tyre is one node hung on the head rail, so the clip swings it in the frame; the frame and its weighted feet are static.","description":"A 0.76 m red tyre slung in a 1.5 m steel frame at 1.75 m, held on two hanger rods above and two steadying rods to a yellow base tie below. The tyre is one node hung on the head rail, so the clip swings it in the frame; the frame and its weighted feet are static. Overall 1.680 x 1.750 x 1.100 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: tyre. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: swing. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-tyre-jump-d6713e22","cdnUrl":"https://cdn.3dassets.dev/assets/35579/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-tyre-jump-d6713e22","thumbnailUrl":"https://cdn.3dassets.dev/assets/35579/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35579/v1/poster.webp","blurhash":"U9BDKQ-=00IUcb%NrBD%0eR$}qr=,+o|J:Z~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18108,"triangles":296,"vertices":888,"meshes":6,"materials":5,"textures":0,"animations":["swing"],"boundingBox":{"min":[-0.8399999737739563,0.0000393681184844806,-0.5500198386501094],"max":[0.8399999737739563,1.75,0.5500198386501094]},"sizeMeters":[1.68,1.75,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:11.185Z","updatedAt":"2026-09-11T16:32:11.291Z","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/35579/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 AgilityTyreJumpDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35579/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/35579/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35579/v1/model.glb\" alt=\"Agility Tyre Jump (Dog Agility and Training Field)\" 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/35579/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/35579/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35578","slug":"dog-agility-and-training-field-spread-jump-6faf8466","title":"Agility Spread Jump (Dog Agility and Training Field)","summary":"A two bar spread over a 0.5 m gap, the back bar set 0.16 m above the front one so the dog has to clear width as well as height. Each bar is its own node in its own cups.","description":"A two bar spread over a 0.5 m gap, the back bar set 0.16 m above the front one so the dog has to clear width as well as height. Each bar is its own node in its own cups. Overall 2.300 x 0.715 x 0.980 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: bar-front, bar-back. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-spread-jump-6faf8466","cdnUrl":"https://cdn.3dassets.dev/assets/35578/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-spread-jump-6faf8466","thumbnailUrl":"https://cdn.3dassets.dev/assets/35578/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35578/v1/poster.webp","blurhash":"U79aBRxv00%L-;.8S#Mx00tR~WIU4.8_-V-=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16244,"triangles":336,"vertices":1008,"meshes":8,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-1.149999976158142,0.000018691753499455038,-0.48996064332740313],"max":[1.149999976158142,0.7149401636190571,0.48996064332740313]},"sizeMeters":[2.3,0.715,0.98],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:11.155Z","updatedAt":"2026-09-11T16:32:11.270Z","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/35578/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 AgilitySpreadJumpDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35578/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/35578/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35578/v1/model.glb\" alt=\"Agility Spread Jump (Dog Agility and Training Field)\" 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/35578/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/35578/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35580","slug":"dog-agility-and-training-field-long-jump-plank-set-b7506efd","title":"Agility Long Jump Plank Set (Dog Agility and Training Field)","summary":"A four element long jump: rising red and white planks on end blocks over a 2 m run, with four yellow corner marker poles that tell the judge the dog jumped the whole spread. Static; the planks lift off their blocks in reality but are modelled as one set.","description":"A four element long jump: rising red and white planks on end blocks over a 2 m run, with four yellow corner marker poles that tell the judge the dog jumped the whole spread. Static; the planks lift off their blocks in reality but are modelled as one set. Overall 1.616 x 1.000 x 2.148 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-long-jump-plank-set-b7506efd","cdnUrl":"https://cdn.3dassets.dev/assets/35580/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-long-jump-plank-set-b7506efd","thumbnailUrl":"https://cdn.3dassets.dev/assets/35580/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35580/v1/poster.webp","blurhash":"U6Ci,Eog00-oFXIVr_%e00R%EqIp}xx]D~rD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"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":17088,"triangles":288,"vertices":864,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.8080387892465362,-0.00003288162868045341,-1.0742486715316772],"max":[0.8080387892465362,0.9999303565229207,1.0742486715316772]},"sizeMeters":[1.616,1,2.148],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:13.755Z","updatedAt":"2026-09-11T16:32:13.855Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35580/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityLongJumpPlankSetDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35580/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35580/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35580/v1/model.glb\" alt=\"Agility Long Jump Plank Set (Dog Agility and Training Field)\" 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/35580/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/35580/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35590","slug":"dog-agility-and-training-field-wall-jump-51118c85","title":"Agility Wall Jump (Dog Agility and Training Field)","summary":"A 0.68 m panelled wall jump 1.24 m wide with a red coping, two loose yellow displaceable units on top and a marker post at each end. Static: the units lift off in reality but are modelled in place.","description":"A 0.68 m panelled wall jump 1.24 m wide with a red coping, two loose yellow displaceable units on top and a marker post at each end. Static: the units lift off in reality but are modelled in place. Overall 1.570 x 0.900 x 0.280 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-wall-jump-51118c85","cdnUrl":"https://cdn.3dassets.dev/assets/35590/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-wall-jump-51118c85","thumbnailUrl":"https://cdn.3dassets.dev/assets/35590/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35590/v1/poster.webp","blurhash":"UDFrnq-p9cxuv_~px^NL00nf=^XAA2Io$wrq","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":8524,"triangles":132,"vertices":396,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7850000262260437,0.00003323803164972938,-0.1399481240949294],"max":[0.7850000262260437,0.899964731538045,0.1399481240949294]},"sizeMeters":[1.57,0.9,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:19.809Z","updatedAt":"2026-09-11T16:32:19.938Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35590/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityWallJumpDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35590/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35590/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35590/v1/model.glb\" alt=\"Agility Wall Jump (Dog Agility and Training Field)\" 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/35590/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/35590/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35592","slug":"dog-agility-and-training-field-brush-fence-7d8eaf85","title":"Agility Brush Fence (Dog Agility and Training Field)","summary":"A 1.24 m brush fence: a clipped green brush in a timber tray between two posts, with a red top bar over it at 0.72 m. Static; the foliage is solid blocks, not cards, so it reads from any angle.","description":"A 1.24 m brush fence: a clipped green brush in a timber tray between two posts, with a red top bar over it at 0.72 m. Static; the foliage is solid blocks, not cards, so it reads from any angle. Overall 1.340 x 0.780 x 0.600 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-brush-fence-7d8eaf85","cdnUrl":"https://cdn.3dassets.dev/assets/35592/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-brush-fence-7d8eaf85","thumbnailUrl":"https://cdn.3dassets.dev/assets/35592/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35592/v1/poster.webp","blurhash":"U7B{#]${01bJ^7?ZE0D*01#n%y9]5%rG}]Fs","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":16196,"triangles":156,"vertices":468,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.6700000166893005,0.000002444210635221822,-0.3000247274661124],"max":[0.6700000166893005,0.7799975271791353,0.3000247274661124]},"sizeMeters":[1.34,0.78,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:22.500Z","updatedAt":"2026-09-11T16:32:22.612Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35592/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityBrushFenceDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35592/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35592/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35592/v1/model.glb\" alt=\"Agility Brush Fence (Dog Agility and Training Field)\" 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/35592/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/35592/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35589","slug":"dog-agility-and-training-field-pause-table-703be3d4","title":"Agility Pause Table (Dog Agility and Training Field)","summary":"A 0.92 m square pause table at 0.45 m: a timber top with a black rubber mat and yellow edge tapes on a bolted steel frame with cross rails. Static.","description":"A 0.92 m square pause table at 0.45 m: a timber top with a black rubber mat and yellow edge tapes on a bolted steel frame with cross rails. Static. Overall 1.480 x 0.530 x 0.950 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-pause-table-703be3d4","cdnUrl":"https://cdn.3dassets.dev/assets/35589/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-pause-table-703be3d4","thumbnailUrl":"https://cdn.3dassets.dev/assets/35589/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35589/v1/poster.webp","blurhash":"U48E0gWB00-;~VRlM{xt00R.?IM_00f5tSRn","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":15004,"triangles":144,"vertices":432,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.7400000095367432,-0.00004654958770058948,-0.4749999940395355],"max":[0.7400000095367432,0.5299734299891664,0.4749999940395355]},"sizeMeters":[1.48,0.53,0.95],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:19.650Z","updatedAt":"2026-09-11T16:32:19.845Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35589/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AgilityPauseTableDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35589/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35589/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35589/v1/model.glb\" alt=\"Agility Pause Table (Dog Agility and Training Field)\" 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/35589/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/35589/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35591","slug":"dog-agility-and-training-field-pause-box-marking-9d05dfc7","title":"Pause Box Marking (Dog Agility and Training Field)","summary":"A 1.4 m square of white ground tape with red corner patches, the box a dog is sent to in a games class instead of a table. Lays flat on the grass; static.","description":"A 1.4 m square of white ground tape with red corner patches, the box a dog is sent to in a games class instead of a table. Lays flat on the grass; static. Overall 1.480 x 0.014 x 1.480 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-pause-box-marking-9d05dfc7","cdnUrl":"https://cdn.3dassets.dev/assets/35591/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-pause-box-marking-9d05dfc7","thumbnailUrl":"https://cdn.3dassets.dev/assets/35591/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35591/v1/poster.webp","blurhash":"U3C6lj.S00tj-=WCayt700H?uPIC8_xaIUM_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":5152,"triangles":96,"vertices":288,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.7400000095367432,0.000018372296725129716,-0.7400000095367432],"max":[0.7400000095367432,0.013955778985478652,0.7400000095367432]},"sizeMeters":[1.48,0.014,1.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:19.957Z","updatedAt":"2026-09-11T16:32:20.077Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35591/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PauseBoxMarkingDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35591/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35591/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35591/v1/model.glb\" alt=\"Pause Box Marking (Dog Agility and Training Field)\" 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/35591/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/35591/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35598","slug":"dog-agility-and-training-field-course-number-cone-69d5bcb3","title":"Course Number Cone (Dog Agility and Training Field)","summary":"A red marker cone with a white number plate on a short wire, the marker set beside each obstacle to give the running order. The plate carries abstract bar marks rather than a printed numeral, so a project can letter it. Static.","description":"A red marker cone with a white number plate on a short wire, the marker set beside each obstacle to give the running order. The plate carries abstract bar marks rather than a printed numeral, so a project can letter it. Static. Overall 0.260 x 0.555 x 0.260 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-course-number-cone-69d5bcb3","cdnUrl":"https://cdn.3dassets.dev/assets/35598/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-course-number-cone-69d5bcb3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35598/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35598/v1/poster.webp","blurhash":"UAAcPb%2009tAEWU+]sp67WW=Hs.}Xs:5,NH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":6568,"triangles":84,"vertices":252,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.13000694933392964,0,-0.13000694933392964],"max":[0.13000694933392964,0.5550000071525574,0.13000694933392964]},"sizeMeters":[0.26,0.555,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:25.604Z","updatedAt":"2026-09-11T16:32:25.728Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35598/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CourseNumberConeDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35598/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35598/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35598/v1/model.glb\" alt=\"Course Number Cone (Dog Agility and Training Field)\" 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/35598/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/35598/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35600","slug":"dog-agility-and-training-field-judges-table-8d864aa8","title":"Judge and Timekeeper Table (Dog Agility and Training Field)","summary":"A 1.5 m folding table at the ring edge with a scoresheet and pen, a stopwatch on its face and a folding chair behind it. Static: the stopwatch is a prop, and nothing here has a moving part worth a rigid node.","description":"A 1.5 m folding table at the ring edge with a scoresheet and pen, a stopwatch on its face and a folding chair behind it. Static: the stopwatch is a prop, and nothing here has a moving part worth a rigid node. Overall 1.530 x 0.900 x 1.180 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-judges-table-8d864aa8","cdnUrl":"https://cdn.3dassets.dev/assets/35600/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-judges-table-8d864aa8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35600/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35600/v1/poster.webp","blurhash":"U8AA8m9a00V=:hxuKkIo4T-VX:X-Gwn3vyS$","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":26284,"triangles":368,"vertices":1104,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.75,0.000006628634237171305,-0.3499481185338908],"max":[0.7799999713897705,0.9000010521486768,0.8300170762246744]},"sizeMeters":[1.53,0.9,1.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:28.208Z","updatedAt":"2026-09-11T16:32:28.312Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35600/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JudgeAndTimekeeperTableDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35600/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35600/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35600/v1/model.glb\" alt=\"Judge and Timekeeper Table (Dog Agility and Training Field)\" 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/35600/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/35600/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35601","slug":"dog-agility-and-training-field-scoreboard-post-23b98089","title":"Ring Scoreboard (Dog Agility and Training Field)","summary":"A 1.8 m scoreboard on two posts at 1.15 m, with a blue header band and three flip panels for the running dog, the faults and the time. The digits are abstract bars, so a project can letter them. Static.","description":"A 1.8 m scoreboard on two posts at 1.15 m, with a blue header band and three flip panels for the running dog, the faults and the time. The digits are abstract bars, so a project can letter them. Static. Overall 1.860 x 2.050 x 0.300 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-scoreboard-post-23b98089","cdnUrl":"https://cdn.3dassets.dev/assets/35601/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-scoreboard-post-23b98089","thumbnailUrl":"https://cdn.3dassets.dev/assets/35601/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35601/v1/poster.webp","blurhash":"UB9jfkxb00R*~Dxu9ZE1v}s;OXNFrqxao~Io","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":13216,"triangles":216,"vertices":648,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9300000071525574,0,-0.1499789436732198],"max":[0.9300000071525574,2.0499621478188526,0.1499789436732198]},"sizeMeters":[1.86,2.05,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:28.451Z","updatedAt":"2026-09-11T16:32:28.563Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35601/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RingScoreboardDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35601/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35601/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35601/v1/model.glb\" alt=\"Ring Scoreboard (Dog Agility and Training Field)\" 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/35601/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/35601/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35602","slug":"dog-agility-and-training-field-pa-speaker-post-8d62a208","title":"Field PA Speaker Post (Dog Agility and Training Field)","summary":"A 2.9 m post carrying two horn speakers back to back and a grey amplifier box, the public address a club calls its running order over. Static.","description":"A 2.9 m post carrying two horn speakers back to back and a grey amplifier box, the public address a club calls its running order over. Static. Overall 0.720 x 2.980 x 0.560 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-pa-speaker-post-8d62a208","cdnUrl":"https://cdn.3dassets.dev/assets/35602/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-pa-speaker-post-8d62a208","thumbnailUrl":"https://cdn.3dassets.dev/assets/35602/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35602/v1/poster.webp","blurhash":"U47K*mxv009F_Nof8^M{%MofIoWB-6oLI[R*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":8836,"triangles":132,"vertices":396,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.36003113120260405,0,-0.280003651950664],"max":[0.36003113120260405,2.9800000190734863,0.280003651950664]},"sizeMeters":[0.72,2.98,0.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:28.470Z","updatedAt":"2026-09-11T16:32:28.583Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35602/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FieldPASpeakerPostDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35602/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35602/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35602/v1/model.glb\" alt=\"Field PA Speaker Post (Dog Agility and Training Field)\" 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/35602/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/35602/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35617","slug":"dog-agility-and-training-field-club-noticeboard-23490d32","title":"Club Noticeboard (Dog Agility and Training Field)","summary":"A timber noticeboard on two posts with a glazed face and four abstract sheets pinned behind it, the running orders and class lists a club posts at the field gate. The sheets are blank panels, so a project can put its own artwork on them. Static.","description":"A timber noticeboard on two posts with a glazed face and four abstract sheets pinned behind it, the running orders and class lists a club posts at the field gate. The sheets are blank panels, so a project can put its own artwork on them. Static. Overall 1.420 x 1.840 x 0.097 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-club-noticeboard-23490d32","cdnUrl":"https://cdn.3dassets.dev/assets/35617/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-club-noticeboard-23490d32","thumbnailUrl":"https://cdn.3dassets.dev/assets/35617/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35617/v1/poster.webp","blurhash":"UC7nE}so4mWB.Ts:McNHKRkCwHe-Rlogs.Ri","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":14528,"triangles":120,"vertices":360,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.7099999785423279,0,-0.04498306086775942],"max":[0.7099999785423279,1.8399560640597288,0.05202795538860181]},"sizeMeters":[1.42,1.84,0.097],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:39.938Z","updatedAt":"2026-09-11T16:32:40.118Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35617/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClubNoticeboardDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35617/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35617/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35617/v1/model.glb\" alt=\"Club Noticeboard (Dog Agility and Training Field)\" 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/35617/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/35617/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35616","slug":"dog-agility-and-training-field-first-aid-point-578131ba","title":"Field First Aid Point (Dog Agility and Training Field)","summary":"A 1.5 m post with a green first aid box on it, marked with a white and green cross, the point a club sets at the handler end of the field. Static: the box is modelled closed.","description":"A 1.5 m post with a green first aid box on it, marked with a white and green cross, the point a club sets at the handler end of the field. Static: the box is modelled closed. Overall 0.500 x 1.670 x 0.480 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-first-aid-point-578131ba","cdnUrl":"https://cdn.3dassets.dev/assets/35616/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-first-aid-point-578131ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/35616/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35616/v1/poster.webp","blurhash":"U984xdtQ00My_Kk98}aO%eoyMzRRRikCogV@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":8496,"triangles":124,"vertices":372,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.23996490842951268,0,-0.24000366474560766],"max":[0.25996490425718755,1.6699901969923354,0.24000366474560766]},"sizeMeters":[0.5,1.67,0.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:39.737Z","updatedAt":"2026-09-11T16:32:39.836Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35616/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FieldFirstAidPointDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35616/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35616/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35616/v1/model.glb\" alt=\"Field First Aid Point (Dog Agility and Training Field)\" 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/35616/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/35616/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35604","slug":"dog-agility-and-training-field-shade-gazebo-b25e7ce2","title":"Club Shade Gazebo (Dog Agility and Training Field)","summary":"A 3 m pop up shade gazebo on four steel legs, with a blue and white canopy on a red ridge and scalloped yellow valances. Static: the frame is modelled up, and a folding leg set needs a joint per scissor pair.","description":"A 3 m pop up shade gazebo on four steel legs, with a blue and white canopy on a red ridge and scalloped yellow valances. Static: the frame is modelled up, and a folding leg set needs a joint per scissor pair. Overall 3.340 x 2.799 x 3.315 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-shade-gazebo-b25e7ce2","cdnUrl":"https://cdn.3dassets.dev/assets/35604/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-shade-gazebo-b25e7ce2","thumbnailUrl":"https://cdn.3dassets.dev/assets/35604/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35604/v1/poster.webp","blurhash":"UKA1knpKMcnN.TgORPnhDNaKSjba8wivo~W=","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":16000,"triangles":252,"vertices":756,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.6699999570846558,0.00005806175765137381,-1.657410896484382],"max":[1.6699999570846558,2.798711114089386,1.657377086037696]},"sizeMeters":[3.34,2.799,3.315],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:30.902Z","updatedAt":"2026-09-11T16:32:31.035Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35604/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClubShadeGazeboDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35604/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35604/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35604/v1/model.glb\" alt=\"Club Shade Gazebo (Dog Agility and Training Field)\" 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/35604/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/35604/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35614","slug":"dog-agility-and-training-field-rosette-and-trophy-tabl-e70911a3","title":"Rosette and Trophy Table (Dog Agility and Training Field)","summary":"A 1.5 m presentation table with a red cloth, five ribbon rosettes laid out on it and three cups behind them. Static; the rosette ribbons are solid, not cloth.","description":"A 1.5 m presentation table with a red cloth, five ribbon rosettes laid out on it and three cups behind them. Static; the rosette ribbons are solid, not cloth. Overall 1.500 x 1.167 x 0.650 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-rosette-and-trophy-tabl-e70911a3","cdnUrl":"https://cdn.3dassets.dev/assets/35614/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-rosette-and-trophy-tabl-e70911a3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35614/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35614/v1/poster.webp","blurhash":"U8Crl:=003.7~3-V9JIn019t+wo40%FaXlVv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":53108,"triangles":888,"vertices":2664,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.75,-0.000043161025354232496,-0.3249534592730491],"max":[0.75,1.1669729987826336,0.3249534592730491]},"sizeMeters":[1.5,1.167,0.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:37.155Z","updatedAt":"2026-09-11T16:32:37.275Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35614/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RosetteAndTrophyTableDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35614/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35614/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35614/v1/model.glb\" alt=\"Rosette and Trophy Table (Dog Agility and Training Field)\" 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/35614/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/35614/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35605","slug":"dog-agility-and-training-field-shade-gazebo-red-1ef24b1f","title":"Club Shade Gazebo, Red (Dog Agility and Training Field)","summary":"The same gazebo in red and white with a blue ridge, so a club field can carry two or three without them reading as one model copied. Geometry unchanged.","description":"The same gazebo in red and white with a blue ridge, so a club field can carry two or three without them reading as one model copied. Geometry unchanged. Overall 3.340 x 2.799 x 3.315 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Cosmetic colour variant of shade-gazebo; the geometry is unchanged. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-shade-gazebo-red-1ef24b1f","cdnUrl":"https://cdn.3dassets.dev/assets/35605/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-shade-gazebo-red-1ef24b1f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35605/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35605/v1/poster.webp","blurhash":"UND+6:=d9tNw}[$jNGSg0fR-wIoI0fJ8$*ni","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":16048,"triangles":252,"vertices":756,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.6699999570846558,0.00005806175765137381,-1.657410896484382],"max":[1.6699999570846558,2.798711114089386,1.657377086037696]},"sizeMeters":[3.34,2.799,3.315],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:31.348Z","updatedAt":"2026-09-11T16:32:31.442Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35605/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClubShadeGazeboRedDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35605/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35605/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35605/v1/model.glb\" alt=\"Club Shade Gazebo, Red (Dog Agility and Training Field)\" 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/35605/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/35605/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35611","slug":"dog-agility-and-training-field-grooming-table-6f9ac32d","title":"Grooming Table (Dog Agility and Training Field)","summary":"A 1.1 m rubber topped grooming table at 0.78 m on four castors, with a clamped grooming arm and noose and a kit box on the top. The castors are nodes on their own axles; the arm is static, because it is set by hand and clamped.","description":"A 1.1 m rubber topped grooming table at 0.78 m on four castors, with a clamped grooming arm and noose and a kit box on the top. The castors are nodes on their own axles; the arm is static, because it is set by hand and clamped. Overall 1.100 x 1.690 x 0.600 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: castor-lf, castor-rf, castor-lb, castor-rb. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-grooming-table-6f9ac32d","cdnUrl":"https://cdn.3dassets.dev/assets/35611/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-grooming-table-6f9ac32d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35611/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35611/v1/poster.webp","blurhash":"U48z.L%h00n3?Gbu4.R400D%XU-W?]t6Mwbd","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17920,"triangles":456,"vertices":1368,"meshes":12,"materials":4,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.5500006322252502,-2.98023217215615e-10,-0.2999812430368554],"max":[0.5500006322252502,1.690000057220459,0.2999812430368554]},"sizeMeters":[1.1,1.69,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:34.325Z","updatedAt":"2026-09-11T16:32:34.515Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35611/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 GroomingTableDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35611/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/35611/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35611/v1/model.glb\" alt=\"Grooming Table (Dog Agility and Training Field)\" 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/35611/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/35611/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35612","slug":"dog-agility-and-training-field-lead-rack-and-kit-bag-1482a00c","title":"Lead Rack and Handler Kit Bag (Dog Agility and Training Field)","summary":"A 1.45 m timber A rack with four coiled leads on it, a treat pouch and clicker on the lower rail and a kit bag at its foot. Static: the leads are solid coils, because webbing hangs and a rigid node cannot carry that.","description":"A 1.45 m timber A rack with four coiled leads on it, a treat pouch and clicker on the lower rail and a kit bag at its foot. Static: the leads are solid coils, because webbing hangs and a rigid node cannot carry that. Overall 1.550 x 1.501 x 0.280 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-lead-rack-and-kit-bag-1482a00c","cdnUrl":"https://cdn.3dassets.dev/assets/35612/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-lead-rack-and-kit-bag-1482a00c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35612/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35612/v1/poster.webp","blurhash":"U5A0L5x^00U[@?#R7NB:0LRk~BXS5[xu^HIA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"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":38416,"triangles":588,"vertices":1764,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.7749999761581421,-0.000004972133717418004,-0.1199700970006114],"max":[0.7749999761581421,1.5007991444207047,0.15997009610654173]},"sizeMeters":[1.55,1.501,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:36.838Z","updatedAt":"2026-09-11T16:32:36.932Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35612/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LeadRackAndHandlerKitBagDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35612/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35612/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35612/v1/model.glb\" alt=\"Lead Rack and Handler Kit Bag (Dog Agility and Training Field)\" 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/35612/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/35612/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35608","slug":"dog-agility-and-training-field-water-station-9d34699c","title":"Dog Water Station (Dog Agility and Training Field)","summary":"A wheeled tray water point: a lidded blue drum with a tap over two steel bowls, on a rubber tray with a yellow notice. Static: the tap and the water are modelled solid, because a running tap is a shader and a particle system, not a node transform.","description":"A wheeled tray water point: a lidded blue drum with a tap over two steel bowls, on a rubber tray with a yellow notice. Static: the tap and the water are modelled solid, because a running tap is a shader and a particle system, not a node transform. Overall 0.930 x 0.730 x 0.603 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-water-station-9d34699c","cdnUrl":"https://cdn.3dassets.dev/assets/35608/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-water-station-9d34699c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35608/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35608/v1/poster.webp","blurhash":"UFBD~QyZ00MHx]-=Rj9FQRwHT1Em?IM_ROxv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":16192,"triangles":276,"vertices":828,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.47999998927116394,0.000006409010996522024,-0.30001830315791456],"max":[0.44999998807907104,0.7300152645822136,0.3026453364890252]},"sizeMeters":[0.93,0.73,0.603],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:33.971Z","updatedAt":"2026-09-11T16:32:34.074Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35608/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DogWaterStationDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35608/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35608/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35608/v1/model.glb\" alt=\"Dog Water Station (Dog Agility and Training Field)\" 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/35608/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/35608/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35607","slug":"dog-agility-and-training-field-spectator-bench-f8c4825c","title":"Field Spectator Bench (Dog Agility and Training Field)","summary":"A 1.8 m timber slatted bench on two cast ends, the seating a club puts along the handler side of the ring. Static.","description":"A 1.8 m timber slatted bench on two cast ends, the seating a club puts along the handler side of the ring. Static. Overall 1.800 x 0.849 x 0.532 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-spectator-bench-f8c4825c","cdnUrl":"https://cdn.3dassets.dev/assets/35607/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-spectator-bench-f8c4825c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35607/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35607/v1/poster.webp","blurhash":"UAAlOjWE5mxu}U$*J8Ip0z$3r=I:5mS2s.kC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":12904,"triangles":108,"vertices":324,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.00003489475773110762,-0.282486447941263],"max":[0.8999999761581421,0.8488039038710429,0.25003665657367535]},"sizeMeters":[1.8,0.849,0.533],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:31.399Z","updatedAt":"2026-09-11T16:32:31.515Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35607/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FieldSpectatorBenchDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35607/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35607/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35607/v1/model.glb\" alt=\"Field Spectator Bench (Dog Agility and Training Field)\" 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/35607/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/35607/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35609","slug":"dog-agility-and-training-field-dog-crate-4a7b0539","title":"Wire Waiting Crate (Dog Agility and Training Field)","summary":"A 0.92 m barred waiting crate with a blue lower panel on the door side, a yellow bedding mat and a red latch, the crate a dog waits in between runs. Static: the door is a barred panel in the frame and is modelled closed.","description":"A 0.92 m barred waiting crate with a blue lower panel on the door side, a yellow bedding mat and a red latch, the crate a dog waits in between runs. Static: the door is a barred panel in the frame and is modelled closed. Overall 0.920 x 0.720 x 0.620 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-dog-crate-4a7b0539","cdnUrl":"https://cdn.3dassets.dev/assets/35609/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-dog-crate-4a7b0539","thumbnailUrl":"https://cdn.3dassets.dev/assets/35609/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35609/v1/poster.webp","blurhash":"UAC77{pe8_$cMe%1x]NM00VXM{T0.TOaIAn2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":22748,"triangles":408,"vertices":1224,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.46000000834465027,0.000010384067928970175,-0.3099984796980672],"max":[0.46000000834465027,0.7199896445423005,0.3099984796980672]},"sizeMeters":[0.92,0.72,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:34.180Z","updatedAt":"2026-09-11T16:32:34.311Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35609/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WireWaitingCrateDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35609/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35609/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35609/v1/model.glb\" alt=\"Wire Waiting Crate (Dog Agility and Training Field)\" 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/35609/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/35609/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35610","slug":"dog-agility-and-training-field-crate-trolley-6ff04960","title":"Crate Trolley (Dog Agility and Training Field)","summary":"A 1.1 m timber deck trolley on four 0.2 m castors with a blue handle, the way a crate and a kit bag get from the car park to the ring. Each castor is its own node on its own axle, so the clip rolls all four together.","description":"A 1.1 m timber deck trolley on four 0.2 m castors with a blue handle, the way a crate and a kit bag get from the car park to the ring. Each castor is its own node on its own axle, so the clip rolls all four together. Overall 0.800 x 0.938 x 1.218 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: castor-lf, castor-rf, castor-lb, castor-rb. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-crate-trolley-6ff04960","cdnUrl":"https://cdn.3dassets.dev/assets/35610/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-crate-trolley-6ff04960","thumbnailUrl":"https://cdn.3dassets.dev/assets/35610/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35610/v1/poster.webp","blurhash":"U8B380z.0gpdp{DhR5%h0i9Z=EyD=x-Aozx^","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22804,"triangles":432,"vertices":1296,"meshes":13,"materials":5,"textures":1,"animations":["roll"],"boundingBox":{"min":[-0.3999908531167253,-1.4901161138336505e-9,-0.6682794193742069],"max":[0.3999908531167253,0.9375054046180129,0.550000011920929]},"sizeMeters":[0.8,0.938,1.218],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:34.192Z","updatedAt":"2026-09-11T16:32:34.309Z","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/35610/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 CrateTrolleyDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35610/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/35610/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35610/v1/model.glb\" alt=\"Crate Trolley (Dog Agility and Training Field)\" 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/35610/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/35610/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35606","slug":"dog-agility-and-training-field-field-litter-bin-eeefea95","title":"Field Litter Bin (Dog Agility and Training Field)","summary":"A 0.82 m blue field bin with a domed lid hinged along its back edge and a yellow notice panel on the front. The lid is one node on the hinge, so the clip opens it the way the real one lifts.","description":"A 0.82 m blue field bin with a domed lid hinged along its back edge and a yellow notice panel on the front. The lid is one node on the hinge, so the clip opens it the way the real one lifts. Overall 0.504 x 1.040 x 0.487 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: lid. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-field-litter-bin-eeefea95","cdnUrl":"https://cdn.3dassets.dev/assets/35606/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-field-litter-bin-eeefea95","thumbnailUrl":"https://cdn.3dassets.dev/assets/35606/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35606/v1/poster.webp","blurhash":"U95~;Ct,4TH;hyaLcuozHqaKyFbwTMk9rpaN","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11240,"triangles":144,"vertices":432,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.2519785127714133,0,-0.24759786256585614],"max":[0.2519785127714133,1.0400030333734394,0.23966612541581342]},"sizeMeters":[0.504,1.04,0.487],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:31.381Z","updatedAt":"2026-09-11T16:32:31.499Z","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/35606/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 FieldLitterBinDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35606/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/35606/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35606/v1/model.glb\" alt=\"Field Litter Bin (Dog Agility and Training Field)\" 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/35606/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/35606/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35599","slug":"dog-agility-and-training-field-training-cone-and-marke-6f253868","title":"Training Cone and Marker Set (Dog Agility and Training Field)","summary":"Four small training cones and three flat ground discs, the markers a class is set out with for handling drills away from the numbered course. Static; the pieces are one model so a field dresses in a single placement.","description":"Four small training cones and three flat ground discs, the markers a class is set out with for handling drills away from the numbered course. Static; the pieces are one model so a field dresses in a single placement. Overall 1.950 x 0.305 x 1.455 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-training-cone-and-marke-6f253868","cdnUrl":"https://cdn.3dassets.dev/assets/35599/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-training-cone-and-marke-6f253868","thumbnailUrl":"https://cdn.3dassets.dev/assets/35599/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35599/v1/poster.webp","blurhash":"U497X^wv8wHwrCxtI^jF00N_ysy5LMD*^FS$","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"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":13192,"triangles":232,"vertices":696,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9500213979248613,-0.000021283868744031986,-0.692679905654397],"max":[1,0.3050212910213014,0.7626584768295288]},"sizeMeters":[1.95,0.305,1.455],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:25.617Z","updatedAt":"2026-09-11T16:32:25.742Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35599/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrainingConeAndMarkerSetDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35599/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35599/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35599/v1/model.glb\" alt=\"Training Cone and Marker Set (Dog Agility and Training Field)\" 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/35599/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/35599/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35613","slug":"dog-agility-and-training-field-club-shed-5e51ef72","title":"Training Club Shed (Dog Agility and Training Field)","summary":"A 3.2 x 2.4 m timber club shed on a concrete pad, 2.75 m to the ridge, with a blue braced door on the front, a window on the gable end and a yellow board beside the door. The door is one node on its hinge jamb, so the clip opens and closes it about the real hinge.","description":"A 3.2 x 2.4 m timber club shed on a concrete pad, 2.75 m to the ridge, with a blue braced door on the front, a window on the gable end and a yellow board beside the door. The door is one node on its hinge jamb, so the clip opens and closes it about the real hinge. Overall 3.540 x 2.937 x 2.825 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-club-shed-5e51ef72","cdnUrl":"https://cdn.3dassets.dev/assets/35613/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-club-shed-5e51ef72","thumbnailUrl":"https://cdn.3dassets.dev/assets/35613/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35613/v1/poster.webp","blurhash":"U6Am6#~X00QRO?oIrqXT0LEMXlO?vet8T1Mw","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":29020,"triangles":372,"vertices":1116,"meshes":8,"materials":6,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-1.7699999809265137,-0.00004470042758608628,-1.412678914761803],"max":[1.7699999809265137,2.9372550218539777,1.412678914761803]},"sizeMeters":[3.54,2.937,2.825],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:37.134Z","updatedAt":"2026-09-11T16:32:37.252Z","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/35613/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 TrainingClubShedDogAgilityAndTrainingField(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35613/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/35613/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35613/v1/model.glb\" alt=\"Training Club Shed (Dog Agility and Training Field)\" 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/35613/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/35613/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35615","slug":"dog-agility-and-training-field-equipment-store-rack-6c5ec6c3","title":"Equipment Store Rack (Dog Agility and Training Field)","summary":"A 2.6 m open steel rack for the club's spare kit: jump bars on the lower shelf, wing panels stood on edge above and weave poles standing in the top. Static.","description":"A 2.6 m open steel rack for the club's spare kit: jump bars on the lower shelf, wing panels stood on edge above and weave poles standing in the top. Static. Overall 2.570 x 2.500 x 0.720 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-equipment-store-rack-6c5ec6c3","cdnUrl":"https://cdn.3dassets.dev/assets/35615/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-equipment-store-rack-6c5ec6c3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35615/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35615/v1/poster.webp","blurhash":"U7BWoS.800Mc58?c-TDN00E1_Nw[?GI9EMyE","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":21160,"triangles":372,"vertices":1116,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.284999966621399,0.00006625786522374,-0.3600447002640175],"max":[1.284999966621399,2.4999995617293225,0.3600447002640175]},"sizeMeters":[2.57,2.5,0.72],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:37.258Z","updatedAt":"2026-09-11T16:32:37.376Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35615/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EquipmentStoreRackDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35615/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35615/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35615/v1/model.glb\" alt=\"Equipment Store Rack (Dog Agility and Training Field)\" 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/35615/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/35615/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35618","slug":"dog-agility-and-training-field-hedge-section-5a0f31d8","title":"Boundary Hedge Section (Dog Agility and Training Field)","summary":"A 2 m run of clipped boundary hedge at 1.3 m on a strip of bare earth, ported at both ends so a field boundary runs to any length. Static.","description":"A 2 m run of clipped boundary hedge at 1.3 m on a strip of bare earth, ported at both ends so a field boundary runs to any length. Static. Overall 2.000 x 1.400 x 0.900 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (hedge), end (hedge). Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-hedge-section-5a0f31d8","cdnUrl":"https://cdn.3dassets.dev/assets/35618/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-hedge-section-5a0f31d8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35618/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35618/v1/poster.webp","blurhash":"U5DJ%:IU00te0^?@v%Dl00t+%fQp:@v%?[M|","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15948,"triangles":36,"vertices":108,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-1,-0.00003358228135252883,-0.4499954222235786],"max":[1,1.4000335584394947,0.4499954222235786]},"sizeMeters":[2,1.4,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:39.957Z","updatedAt":"2026-09-11T16:32:40.136Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35618/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoundaryHedgeSectionDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35618/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35618/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35618/v1/model.glb\" alt=\"Boundary Hedge Section (Dog Agility and Training Field)\" 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/35618/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/35618/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35619","slug":"dog-agility-and-training-field-tree-clump-c836c330","title":"Boundary Tree Clump (Dog Agility and Training Field)","summary":"Three broadleaf trees of different heights on one patch of bare earth, the planting a training field has along its boundary. Static; the canopy is faceted solid geometry with no billboards or alpha cards.","description":"Three broadleaf trees of different heights on one patch of bare earth, the planting a training field has along its boundary. Static; the canopy is faceted solid geometry with no billboards or alpha cards. Overall 3.159 x 2.804 x 2.399 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Dog Agility and Training Field / agility-lp-v1: faceted turf and worn earth, timber, galvanised steel and three course accents, with embedded procedural concrete and timber maps and no custom shaders. No dogs: the catalogue supplies those in its animal packs. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/dog-agility-and-training-field-tree-clump-c836c330","cdnUrl":"https://cdn.3dassets.dev/assets/35619/v1/model.glb","downloadUrl":"https://3dassets.dev/download/dog-agility-and-training-field-tree-clump-c836c330","thumbnailUrl":"https://cdn.3dassets.dev/assets/35619/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35619/v1/poster.webp","blurhash":"UACGxd%e00RRKMkVnOV[00IC?[xuHuV[x[oy","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"}],"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":46380,"triangles":528,"vertices":1584,"meshes":3,"materials":3,"textures":2,"animations":[],"boundingBox":{"min":[-1.6590526103973389,0.00001495754590173648,-1.0937257328621217],"max":[1.5,2.803896918905594,1.3056194105736085]},"sizeMeters":[3.159,2.804,2.399],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T16:32:40.120Z","updatedAt":"2026-09-11T16:32:40.311Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35619/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoundaryTreeClumpDogAgilityAndTrainingField(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35619/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35619/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35619/v1/model.glb\" alt=\"Boundary Tree Clump (Dog Agility and Training Field)\" 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/35619/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/35619/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}