{"data":{"id":"111","slug":"caravan-park-and-campsite","title":"Caravan Park and Campsite","summary":"Walk a holiday park: a terrace of static caravans with awnings, a touring field of tourers and a camper van, a tent field round a fire pit, the shower block and the site shop at the barrier.","url":"https://3dassets.dev/demos/caravan-park-and-campsite","coverUrl":"https://cdn.3dassets.dev/media/caravan-park-and-campsite-demo-13.png","featured":true,"pack":{"slug":"caravan-park-and-campsite","title":"Caravan Park and Campsite","url":"https://3dassets.dev/packs/caravan-park-and-campsite","summary":"44 stylized holiday park models: modular pitch, track, fence, hedge and windbreak pieces, statics, tourers, a campervan, five tents, awnings, hook ups, the shower block, shop, play area and entrance barrier, in one assembled site.","assetCount":45,"totalBytes":1765920,"starterScene":{"slug":"caravan-park-and-campsite-holiday-park-a-0e790716-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/35385/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-holiday-park-a-0e790716-starter-scene","fileSize":669100}},"placementCount":137,"assetCount":44,"spawn":{"position":[-3,0.28,1.8],"yaw":180},"publishedAt":"2026-09-11T13:40:07.098Z","updatedAt":"2026-09-11T13:40:07.098Z","description":"## What is placed\n\nA seaside style holiday park laid out on its own tiles: a top terrace of static caravans on hardstanding, a touring field of tourers and a camper van on grass pitches, a tent field of dome, tunnel and bell tents, and a service corner with the shower and toilet block, the laundry room, the washing up sinks and the chemical disposal point. A gravel track runs the width of the site from the entrance barrier and the site sign, past the shop and reception cabin, the noticeboard, the playground and the bin store. Pitches are numbered by marker posts and fed by electric hook up bollards, with picnic benches, folding chairs, camp tables, cool boxes and windbreaks set out on the mats. Hedges, a timber fence and tree clumps close the boundary, and floodlight columns light the track.\n\n## What moves\n\nCaravan and camper van doors open and close, and the tourers and the camper van roll on their wheels. The shower block opens both its shower and toilet doors. The laundry room, the site shop, the gas bottle cage, the bin and recycling store and the cool boxes all open, the entrance barrier lifts, and the swing set swings.\n\n## What does not move and why\n\nTent fabric, awning canvas, windbreak cloth and guy ropes stay as static geometry, and the fire pit holds no flame: none of it is reachable with the rigid node transforms this library uses. There are no holidaymakers anywhere on the site, because nothing here is skinned. No real caravan, tent or holiday park brand is named on any sign, livery or fitting.","scene":{"version":1,"spawn":{"position":[-3,0.28,1.8],"yaw":180},"ground":{"style":"none"},"environment":{"preset":"outdoor","shadows":true},"placements":[{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[-18,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[-12,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[-6,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[0,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[6,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","position":[12,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[18,0,-15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-18,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-12,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-6,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[0,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[6,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[12,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[18,0,-9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-18,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-12,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-6,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[0,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[6,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[12,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[18,0,-3],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-18,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-12,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-6,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[0,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[6,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[12,0,9],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-18,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-12,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[-6,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[0,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[6,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","position":[12,0,15],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[-18,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[-12,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[-6,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[0,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[6,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[12,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-curve-94d53ed9","position":[18,0,3],"rotation":0},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[18,0,9],"rotation":270},{"asset":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","position":[18,0,15],"rotation":270},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-20,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-18,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-16,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-14,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-12,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-10,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-8,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-6,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-4,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[-2,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[0,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-hedge-section-1ddb0f77","position":[2,0.10200000000000001,-17.5],"rotation":0},{"asset":"caravan-park-and-campsite-tree-clump-dbb974b7","position":[17.8,0.10200000000000001,-16.2],"rotation":22.92},{"asset":"caravan-park-and-campsite-tree-clump-dbb974b7","position":[19,0.10200000000000001,-9.4],"rotation":108.86},{"asset":"caravan-park-and-campsite-tree-clump-dbb974b7","position":[-20.2,0.10200000000000001,-5.8],"rotation":137.51},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-20,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-18,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-16,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-14,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-12,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-10,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","position":[-8,0.10200000000000001,17.6],"rotation":0},{"asset":"caravan-park-and-campsite-static-caravan-f2af6369","position":[-16.5,0.14200000000000002,-15],"rotation":0},{"asset":"caravan-park-and-campsite-static-caravan-sunset-livery-ddb0d5fc","position":[-7.5,0.14200000000000002,-15],"rotation":0},{"asset":"caravan-park-and-campsite-static-caravan-f2af6369","position":[1.5,0.14200000000000002,-15],"rotation":0},{"asset":"caravan-park-and-campsite-static-caravan-with-decking-7cb6c0d2","position":[10.5,0.14200000000000002,-15.4],"rotation":0},{"asset":"caravan-park-and-campsite-windbreak-bay-338d1ae6","position":[-20,0.10200000000000001,-12.6],"rotation":0},{"asset":"caravan-park-and-campsite-windbreak-bay-338d1ae6","position":[-18,0.10200000000000001,-12.6],"rotation":0},{"asset":"caravan-park-and-campsite-windbreak-bay-338d1ae6","position":[-16,0.10200000000000001,-12.6],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[-12,0.10200000000000001,-12.5],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[-3,0.10200000000000001,-12.5],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[6,0.10200000000000001,-12.5],"rotation":0},{"asset":"caravan-park-and-campsite-storage-crate-e19a8b9d","position":[-6.2,0.10200000000000001,-12.3],"rotation":22.92},{"asset":"caravan-park-and-campsite-camping-chair-390fe145","position":[-17.6,0.10200000000000001,-11.6],"rotation":166.16},{"asset":"caravan-park-and-campsite-touring-caravan-f889a9ff","position":[-16,0.10200000000000001,-9],"rotation":0},{"asset":"caravan-park-and-campsite-caravan-awning-1094ea21","position":[-13.3,0.10200000000000001,-9],"rotation":90},{"asset":"caravan-park-and-campsite-touring-caravan-f889a9ff","position":[-4,0.10200000000000001,-9.4],"rotation":8.02},{"asset":"caravan-park-and-campsite-campervan-fc4a6247","position":[2.5,0.10200000000000001,-9],"rotation":0},{"asset":"caravan-park-and-campsite-folding-trailer-tent-cc7e1013","position":[9.5,0.10200000000000001,-2.8],"rotation":5.73},{"asset":"caravan-park-and-campsite-touring-caravan-f889a9ff","position":[-13,0.10200000000000001,-3.4],"rotation":0},{"asset":"caravan-park-and-campsite-caravan-awning-1094ea21","position":[-10.3,0.10200000000000001,-3.4],"rotation":90},{"asset":"caravan-park-and-campsite-awning-mat-2ef54a75","position":[-10.3,0.10200000000000001,-0.7],"rotation":90},{"asset":"caravan-park-and-campsite-campervan-fc4a6247","position":[3,0.10200000000000001,-3.2],"rotation":180},{"asset":"caravan-park-and-campsite-touring-caravan-f889a9ff","position":[14,0.10200000000000001,-2],"rotation":189.08},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[-13.8,0.10200000000000001,-6.6],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[-7.2,0.10200000000000001,-6.8],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[1.21,0.10200000000000001,-6.8],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[9.6,0.10200000000000001,-6.8],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[-17,0.10200000000000001,-1.9],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[-6.6,0.10200000000000001,-1.2],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[7.4,0.10200000000000001,-1.2],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[-9.4,0.10200000000000001,-6.4],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[-0.6,0.10200000000000001,-6.4],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[8.4,0.10200000000000001,-7.09],"rotation":0},{"asset":"caravan-park-and-campsite-picnic-bench-99052c3c","position":[-16.6,0.10200000000000001,-0.6],"rotation":11.46},{"asset":"caravan-park-and-campsite-picnic-bench-99052c3c","position":[8.6,0.10200000000000001,-6],"rotation":85.94},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[16.5,0.10200000000000001,-6.4],"rotation":0},{"asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","position":[16.6,0.10200000000000001,-4.6],"rotation":0},{"asset":"caravan-park-and-campsite-picnic-bench-99052c3c","position":[18.8,0.10200000000000001,-4.4],"rotation":17.19},{"asset":"caravan-park-and-campsite-camping-chair-390fe145","position":[17.2,0.10200000000000001,-1.6],"rotation":154.7},{"asset":"caravan-park-and-campsite-camping-chair-blue-3a552568","position":[18.3,0.10200000000000001,-1.2],"rotation":194.81},{"asset":"caravan-park-and-campsite-camping-chair-blue-3a552568","position":[-8.6,0.10200000000000001,-4.6],"rotation":126.05},{"asset":"caravan-park-and-campsite-camping-chair-390fe145","position":[-7.7,0.10200000000000001,-4.9],"rotation":148.97},{"asset":"caravan-park-and-campsite-folding-camp-table-c7e0c488","position":[-8.2,0.10200000000000001,-5.7],"rotation":5.73},{"asset":"caravan-park-and-campsite-cool-box-e9466247","position":[-9.4,0.10200000000000001,-5.4],"rotation":28.65},{"asset":"caravan-park-and-campsite-site-noticeboard-3448b55f","position":[-19.4,0.10200000000000001,5.2],"rotation":0},{"asset":"caravan-park-and-campsite-floodlight-column-b863e812","position":[-9,0.10200000000000001,5.3],"rotation":0},{"asset":"caravan-park-and-campsite-floodlight-column-b863e812","position":[10.5,0.10200000000000001,0.9],"rotation":180},{"asset":"caravan-park-and-campsite-water-point-e404d250","position":[1.2,0.10200000000000001,5.3],"rotation":0},{"asset":"caravan-park-and-campsite-shower-and-toilet-block-430a4fe0","position":[-16.5,0.10200000000000001,9],"rotation":0},{"asset":"caravan-park-and-campsite-laundry-room-module-f39c1a7f","position":[-11.4,0.10200000000000001,9],"rotation":0},{"asset":"caravan-park-and-campsite-washing-up-sinks-43a9c061","position":[-16.4,0.10200000000000001,14.2],"rotation":0},{"asset":"caravan-park-and-campsite-chemical-disposal-point-21dfd40c","position":[-12.4,0.10200000000000001,13.4],"rotation":0},{"asset":"caravan-park-and-campsite-bin-and-recycling-store-beed8b68","position":[-19.8,0.10200000000000001,16.6],"rotation":0},{"asset":"caravan-park-and-campsite-family-tunnel-tent-1859283b","position":[-7,0.10200000000000001,9.2],"rotation":0},{"asset":"caravan-park-and-campsite-dome-tent-72989d5b","position":[-2.6,0.10200000000000001,8.2],"rotation":28.65},{"asset":"caravan-park-and-campsite-dome-tent-blue-49b05934","position":[2.2,0.10200000000000001,8.4],"rotation":137.51},{"asset":"caravan-park-and-campsite-dome-tent-large-b8c0e9d3","position":[7.6,0.10200000000000001,8.6],"rotation":11.46},{"asset":"caravan-park-and-campsite-bell-tent-d7f74bfd","position":[12.4,0.10200000000000001,9.6],"rotation":0},{"asset":"caravan-park-and-campsite-fire-pit-ring-a42e931d","position":[5,0.10200000000000001,12.2],"rotation":0},{"asset":"caravan-park-and-campsite-camping-chair-390fe145","position":[4,0.10200000000000001,12.7],"rotation":223.45},{"asset":"caravan-park-and-campsite-camping-chair-blue-3a552568","position":[6.2,0.10200000000000001,12.7],"rotation":137.51},{"asset":"caravan-park-and-campsite-folding-camp-table-c7e0c488","position":[5,0.10200000000000001,13.7],"rotation":11.46},{"asset":"caravan-park-and-campsite-cool-box-e9466247","position":[7,0.10200000000000001,13.3],"rotation":34.38},{"asset":"caravan-park-and-campsite-awning-mat-2ef54a75","position":[-2.6,0.10200000000000001,11.8],"rotation":0},{"asset":"caravan-park-and-campsite-storage-crate-e19a8b9d","position":[13.8,0.10200000000000001,12.8],"rotation":17.19},{"asset":"caravan-park-and-campsite-picnic-bench-99052c3c","position":[-10,0.10200000000000001,13.4],"rotation":5.73},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[-3.6,0.10200000000000001,6.14],"rotation":0},{"asset":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","position":[8.8,0.10200000000000001,6.14],"rotation":0},{"asset":"caravan-park-and-campsite-playground-swing-set-36359ece","position":[-4.6,0.10200000000000001,15],"rotation":0},{"asset":"caravan-park-and-campsite-playground-slide-513f641c","position":[0.6,0.10200000000000001,15.2],"rotation":0},{"asset":"caravan-park-and-campsite-site-shop-and-reception-3f28f019","position":[10,0.10200000000000001,14.5],"rotation":0},{"asset":"caravan-park-and-campsite-gas-bottle-cage-44ac181f","position":[13.6,0.10200000000000001,16.6],"rotation":0},{"asset":"caravan-park-and-campsite-site-entrance-sign-2d4eea35","position":[14.2,0.10200000000000001,15.76],"rotation":0},{"asset":"caravan-park-and-campsite-entrance-barrier-2a6125c4","position":[15.6,0.10200000000000001,17.2],"rotation":0}],"points":[{"position":[-7.5,1.6,-12.2],"title":"The row of statics","text":"Four static caravans sit on blocks along the top terrace, each with its skirt, entrance steps and a porch awning. Their doors open, so try one as you pass.","asset":"caravan-park-and-campsite-static-caravan-sunset-livery-ddb0d5fc"},{"position":[-9.5,1.4,-5.8],"title":"The touring field","text":"Tourers and a camper van are pitched across the grass with their awnings out, chairs and a camp table set on the mats beside them. The vans open and their wheels roll.","asset":"caravan-park-and-campsite-touring-caravan-f889a9ff"},{"position":[1.4,1.2,-5],"title":"Pitch services","text":"Every pitch is numbered by a marker post and fed from an electric hook up bollard. The water point and the chemical disposal point sit further along the track.","asset":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b"},{"position":[5,1.2,10.6],"title":"The tent field","text":"Dome tents, a family tunnel tent and a canvas bell tent are pitched on the grass, with folding chairs and a camp table round the fire pit ring.","asset":"caravan-park-and-campsite-fire-pit-ring-a42e931d"},{"position":[-13.6,1.6,7],"title":"The facilities block","text":"The shower and toilet block anchors the far side, with the laundry room module beside it and the washing up sinks under their canopy. Its doors open.","asset":"caravan-park-and-campsite-shower-and-toilet-block-430a4fe0"},{"position":[8.4,1.6,12.8],"title":"Reception and the play area","text":"The site shop and reception cabin faces the entrance barrier and the site sign. The swing set and slide are pitched on the grass behind it.","asset":"caravan-park-and-campsite-site-shop-and-reception-3f28f019"}],"poster":{"position":[10,2.2,-4.5],"lookAt":[0,-0.4,-12]}},"bounds":{"min":[-25.043639709246484,-0.00000885513611964539,-20.409021027604993],"max":[23.159002638633687,7.017769037864297,20]},"assets":[{"id":"35355","slug":"caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","title":"Hardstanding Pitch Tile (Caravan Park and Campsite)","summary":"A 6 m square pitch with a 5 x 4.6 m concrete hardstanding laid in it, painted bay lines and a stencilled pitch number, grass to the edges and the same four edge ports as the grass tile so hard and grass pitches mix in one grid.","description":"A 6 m square pitch with a 5 x 4.6 m concrete hardstanding laid in it, painted bay lines and a stencilled pitch number, grass to the edges and the same four edge ports as the grass tile so hard and grass pitches mix in one grid. Overall 6.000 x 0.260 x 6.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: north (pitch), south (pitch), west (pitch), east (pitch). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","cdnUrl":"https://cdn.3dassets.dev/assets/35355/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-hardstanding-pitch-tile-4d76993d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35355/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35355/v1/poster.webp","blurhash":"U7B:{N%M00V[x[azRjkB00M{~qWVIBj[xuV[","category":{"slug":"environments","title":"Environments & Scenes"},"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":27660,"triangles":264,"vertices":792,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-3,-0.00000885513611964539,-3],"max":[3,0.2600088455993765,3]},"sizeMeters":[6,0.26,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-11T13:16:29.415Z","updatedAt":"2026-09-11T13:16:29.511Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35355/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HardstandingPitchTileCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35355/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35355/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35355/v1/model.glb\" alt=\"Hardstanding Pitch Tile (Caravan Park and Campsite)\" 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/35355/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/35355/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35354","slug":"caravan-park-and-campsite-grass-pitch-tile-2fb907e5","title":"Grass Pitch Tile (Caravan Park and Campsite)","summary":"A 6 m square of mown touring field with a scatter of grass tufts, ported on all four edges so any number of them tile into a pitch field. Ports sit at ground level on each edge midpoint, so two tiles butt with no gap.","description":"A 6 m square of mown touring field with a scatter of grass tufts, ported on all four edges so any number of them tile into a pitch field. Ports sit at ground level on each edge midpoint, so two tiles butt with no gap. Overall 6.000 x 0.280 x 6.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: north (pitch), south (pitch), west (pitch), east (pitch). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-grass-pitch-tile-2fb907e5","cdnUrl":"https://cdn.3dassets.dev/assets/35354/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-grass-pitch-tile-2fb907e5","thumbnailUrl":"https://cdn.3dassets.dev/assets/35354/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35354/v1/poster.webp","blurhash":"U9B;8kx[00WCtQbHV@jZ00M|_LaeMyn%t7Wq","category":{"slug":"environments","title":"Environments & Scenes"},"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":11660,"triangles":222,"vertices":666,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-3,0.00010315315807532532,-3],"max":[3,0.2798968480340176,3]},"sizeMeters":[6,0.28,6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:29.133Z","updatedAt":"2026-09-11T13:16:29.233Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35354/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GrassPitchTileCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35354/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35354/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35354/v1/model.glb\" alt=\"Grass Pitch Tile (Caravan Park and Campsite)\" 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/35354/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/35354/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35356","slug":"caravan-park-and-campsite-gravel-track-tile-ae9e0a10","title":"Gravel Track Tile, Straight (Caravan Park and Campsite)","summary":"A 6 m ground tile with a 3 m gravel carriageway running across it and grass verges either side, ported at both ends of the track and on all four tile edges, so a run of them makes the site road through a field of pitches.","description":"A 6 m ground tile with a 3 m gravel carriageway running across it and grass verges either side, ported at both ends of the track and on all four tile edges, so a run of them makes the site road through a field of pitches. Overall 6.000 x 0.280 x 6.000 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (track), end (track), north (pitch), south (pitch). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-gravel-track-tile-ae9e0a10","cdnUrl":"https://cdn.3dassets.dev/assets/35356/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-gravel-track-tile-ae9e0a10","thumbnailUrl":"https://cdn.3dassets.dev/assets/35356/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35356/v1/poster.webp","blurhash":"U8B|f_%L00R+xta$WAk800M|~pafMyoas;V{","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":30588,"triangles":324,"vertices":972,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-3,0.00010315315807532532,-3],"max":[3,0.2798968480340176,3]},"sizeMeters":[6,0.28,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-11T13:16:29.453Z","updatedAt":"2026-09-11T13:16:29.552Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35356/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GravelTrackTileStraightCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35356/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35356/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35356/v1/model.glb\" alt=\"Gravel Track Tile, Straight (Caravan Park and Campsite)\" 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/35356/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/35356/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35357","slug":"caravan-park-and-campsite-gravel-track-curve-94d53ed9","title":"Gravel Track Tile, Curve (Caravan Park and Campsite)","summary":"The quarter turn of the site road: the same 3 m gravel carriageway swept through ninety degrees inside one 6 m tile, entering at the west edge and leaving at the south edge, ported at both ends so it drops into a straight run.","description":"The quarter turn of the site road: the same 3 m gravel carriageway swept through ninety degrees inside one 6 m tile, entering at the west edge and leaving at the south edge, ported at both ends so it drops into a straight run. Overall 6.036 x 0.280 x 6.036 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (track), end (track). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-gravel-track-curve-94d53ed9","cdnUrl":"https://cdn.3dassets.dev/assets/35357/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-gravel-track-curve-94d53ed9","thumbnailUrl":"https://cdn.3dassets.dev/assets/35357/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35357/v1/poster.webp","blurhash":"U8C74o-W00XdxtjuWBoe00I-_MV#IVbFofRk","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":32820,"triangles":348,"vertices":1044,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-3.0363211631774902,0.00010315315807532532,-3],"max":[3,0.2798968480340176,3.0363211631774902]},"sizeMeters":[6.036,0.28,6.036],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:31.038Z","updatedAt":"2026-09-11T13:16:31.141Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35357/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GravelTrackTileCurveCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35357/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35357/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35357/v1/model.glb\" alt=\"Gravel Track Tile, Curve (Caravan Park and Campsite)\" 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/35357/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/35357/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35382","slug":"caravan-park-and-campsite-hedge-section-1ddb0f77","title":"Boundary Hedge Section (Caravan Park and Campsite)","summary":"A 2 m section of clipped boundary hedge, 1.45 m tall with an uneven crown, ported at both ends so sections run nose to tail round a site. Static geometry.","description":"A 2 m section of clipped boundary hedge, 1.45 m tall with an uneven crown, ported at both ends so sections run nose to tail round a site. Static geometry. Overall 2.000 x 1.600 x 1.018 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (hedge), end (hedge). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-hedge-section-1ddb0f77","cdnUrl":"https://cdn.3dassets.dev/assets/35382/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-hedge-section-1ddb0f77","thumbnailUrl":"https://cdn.3dassets.dev/assets/35382/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35382/v1/poster.webp","blurhash":"U5Ef}+9G00xt8y_KV?8z00-;owIByB%y.78|","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":9932,"triangles":186,"vertices":558,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.00004271399233746198,-0.4750750274481137],"max":[1,1.6000427378341953,0.5429003746332486]},"sizeMeters":[2,1.6,1.018],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:46.508Z","updatedAt":"2026-09-11T13:16:46.697Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35382/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoundaryHedgeSectionCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35382/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35382/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35382/v1/model.glb\" alt=\"Boundary Hedge Section (Caravan Park and Campsite)\" 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/35382/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/35382/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35383","slug":"caravan-park-and-campsite-tree-clump-dbb974b7","title":"Boundary Tree Clump (Caravan Park and Campsite)","summary":"A clump of two broadleaf trees and a shrub on one base, 3.8 m across and 3.5 m tall, for the boundary of a park or the far side of a hedge. Static geometry.","description":"A clump of two broadleaf trees and a shrub on one base, 3.8 m across and 3.5 m tall, for the boundary of a park or the far side of a hedge. Static geometry. Overall 4.858 x 3.519 x 2.800 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-tree-clump-dbb974b7","cdnUrl":"https://cdn.3dassets.dev/assets/35383/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-tree-clump-dbb974b7","thumbnailUrl":"https://cdn.3dassets.dev/assets/35383/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35383/v1/poster.webp","blurhash":"UCAwkl%f00Myx]f8IBM|00Rj_Le:M{k9%fx[","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":30380,"triangles":476,"vertices":1428,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-2.1500000953674316,-0.0000265318879085763,-1.2531873709344121],"max":[2.7083981037139893,3.518611239230778,1.5470600849770757]},"sizeMeters":[4.858,3.519,2.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:45.720Z","updatedAt":"2026-09-11T13:16:45.823Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35383/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoundaryTreeClumpCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35383/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35383/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35383/v1/model.glb\" alt=\"Boundary Tree Clump (Caravan Park and Campsite)\" 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/35383/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/35383/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35384","slug":"caravan-park-and-campsite-timber-boundary-fence-d79961b2","title":"Timber Boundary Fence Bay (Caravan Park and Campsite)","summary":"One 2 m bay of post and rail boundary fence: two pointed posts carrying two rails and a top rail, ported at both ends so bays run round a field. Static geometry.","description":"One 2 m bay of post and rail boundary fence: two pointed posts carrying two rails and a top rail, ported at both ends so bays run round a field. Static geometry. Overall 2.043 x 1.200 x 0.171 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (fence), end (fence). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-timber-boundary-fence-d79961b2","cdnUrl":"https://cdn.3dassets.dev/assets/35384/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-timber-boundary-fence-d79961b2","thumbnailUrl":"https://cdn.3dassets.dev/assets/35384/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35384/v1/poster.webp","blurhash":"U79~Wn-9Ef%0}q^4WVNb0#$P=dI;9wRl$Pw{","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":11080,"triangles":80,"vertices":240,"meshes":1,"materials":1,"textures":1,"animations":[],"boundingBox":{"min":[-1.012811541557312,-0.00005676537032717199,-0.08553536777133694],"max":[1.0299999713897705,1.200056813054043,0.08553536777133694]},"sizeMeters":[2.043,1.2,0.171],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:47.502Z","updatedAt":"2026-09-11T13:16:47.598Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35384/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberBoundaryFenceBayCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35384/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35384/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35384/v1/model.glb\" alt=\"Timber Boundary Fence Bay (Caravan Park and Campsite)\" 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/35384/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/35384/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35342","slug":"caravan-park-and-campsite-static-caravan-f2af6369","title":"Static Caravan on Blocks (Caravan Park and Campsite)","summary":"An 8.2 x 3.2 m static holiday caravan on concrete piers with a boarded skirt, a shallow pitched roof, tinted lounge and bedroom lights, a livery band under the eaves and timber steps to the door. The door is one node on its hinge stile and swings open.","description":"An 8.2 x 3.2 m static holiday caravan on concrete piers with a boarded skirt, a shallow pitched roof, tinted lounge and bedroom lights, a livery band under the eaves and timber steps to the door. The door is one node on its hinge stile and swings open. Overall 8.360 x 2.870 x 4.020 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-static-caravan-f2af6369","cdnUrl":"https://cdn.3dassets.dev/assets/35342/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-static-caravan-f2af6369","thumbnailUrl":"https://cdn.3dassets.dev/assets/35342/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35342/v1/poster.webp","blurhash":"UEFFss%M00t7~q?bM{IU00xu?bIV009Fxtoz","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":43000,"triangles":368,"vertices":1104,"meshes":8,"materials":6,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-4.179999828338623,0.00003366606474219935,-1.6998351302411618],"max":[4.179999828338623,2.8697742015472625,2.320006653274947]},"sizeMeters":[8.36,2.87,4.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:22.646Z","updatedAt":"2026-09-11T13:16:22.780Z","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/35342/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 StaticCaravanOnBlocksCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35342/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/35342/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35342/v1/model.glb\" alt=\"Static Caravan on Blocks (Caravan Park and Campsite)\" 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/35342/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/35342/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35344","slug":"caravan-park-and-campsite-static-caravan-sunset-livery-ddb0d5fc","title":"Static Caravan, Sunset Livery (Caravan Park and Campsite)","summary":"The static caravan in the park's second livery: the band under the eaves is painted orange instead of blue, so a row of holiday homes reads as more than one unit. The geometry is unchanged and the door opens the same way.","description":"The static caravan in the park's second livery: the band under the eaves is painted orange instead of blue, so a row of holiday homes reads as more than one unit. The geometry is unchanged and the door opens the same way. Overall 8.360 x 2.870 x 4.020 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Cosmetic colour variant of static-caravan; the geometry is unchanged. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-static-caravan-sunset-livery-ddb0d5fc","cdnUrl":"https://cdn.3dassets.dev/assets/35344/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-static-caravan-sunset-livery-ddb0d5fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/35344/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35344/v1/poster.webp","blurhash":"UEFPEJ%M00t7~q?bM{IU00xu?bIV009FtRt7","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":43156,"triangles":368,"vertices":1104,"meshes":8,"materials":6,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-4.179999828338623,0.00003366606474219935,-1.6998351302411618],"max":[4.179999828338623,2.8697742015472625,2.320006653274947]},"sizeMeters":[8.36,2.87,4.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:22.717Z","updatedAt":"2026-09-11T13:16:22.843Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35344/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 StaticCaravanSunsetLiveryCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35344/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/35344/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35344/v1/model.glb\" alt=\"Static Caravan, Sunset Livery (Caravan Park and Campsite)\" 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/35344/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/35344/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35341","slug":"caravan-park-and-campsite-static-caravan-with-decking-7cb6c0d2","title":"Static Caravan with Timber Decking (Caravan Park and Campsite)","summary":"The same static sited for a long season: a timber deck runs the length of the front with a slatted balustrade round two sides and three steps down to the pitch, so the door opens onto boards rather than grass. The door still opens; the deck and the balustrade are fixed.","description":"The same static sited for a long season: a timber deck runs the length of the front with a slatted balustrade round two sides and three steps down to the pitch, so the door opens onto boards rather than grass. The door still opens; the deck and the balustrade are fixed. Overall 8.360 x 2.870 x 6.660 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Functional variant of static-caravan. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-static-caravan-with-decking-7cb6c0d2","cdnUrl":"https://cdn.3dassets.dev/assets/35341/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-static-caravan-with-decking-7cb6c0d2","thumbnailUrl":"https://cdn.3dassets.dev/assets/35341/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35341/v1/poster.webp","blurhash":"UED04G9F00g3_NogDiM{00?b?HMx00n%.9oz","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":69796,"triangles":812,"vertices":2436,"meshes":8,"materials":6,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-4.179999828338623,0.00003366606474219935,-1.6998351302411618],"max":[4.179999828338623,2.8697742015472625,4.9600897268005175]},"sizeMeters":[8.36,2.87,6.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:22.635Z","updatedAt":"2026-09-11T13:16:22.782Z","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/35341/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 StaticCaravanWithTimberDeckingCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35341/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/35341/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35341/v1/model.glb\" alt=\"Static Caravan with Timber Decking (Caravan Park and Campsite)\" 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/35341/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/35341/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35353","slug":"caravan-park-and-campsite-windbreak-bay-338d1ae6","title":"Windbreak Bay (Caravan Park and Campsite)","summary":"One 2 m bay of a windbreak: striped cloth stretched between three timber poles, ported at both ends so any number of bays make a run round a pitch. The cloth is solid geometry and does not move, because a windbreak is only ever a sheet in the wind.","description":"One 2 m bay of a windbreak: striped cloth stretched between three timber poles, ported at both ends so any number of bays make a run round a pitch. The cloth is solid geometry and does not move, because a windbreak is only ever a sheet in the wind. Overall 2.081 x 1.640 x 0.086 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Connectors: start (windbreak), end (windbreak). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-windbreak-bay-338d1ae6","cdnUrl":"https://cdn.3dassets.dev/assets/35353/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-windbreak-bay-338d1ae6","thumbnailUrl":"https://cdn.3dassets.dev/assets/35353/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35353/v1/poster.webp","blurhash":"UDD+C^$*00R*^*-oIV9t00t6~VIp57NG%1%M","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":13832,"triangles":114,"vertices":342,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-1.0364058017730713,0.000046103780720119225,-0.04281342452681381],"max":[1.0449999570846558,1.640000577162797,0.04281342452681381]},"sizeMeters":[2.081,1.64,0.086],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:28.175Z","updatedAt":"2026-09-11T13:16:28.351Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35353/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WindbreakBayCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35353/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35353/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35353/v1/model.glb\" alt=\"Windbreak Bay (Caravan Park and Campsite)\" 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/35353/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/35353/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35358","slug":"caravan-park-and-campsite-pitch-marker-post-b005d6b3","title":"Pitch Marker Post (Caravan Park and Campsite)","summary":"A 1 m timber pitch marker with a blue number plate and a pointed galvanised cap, driven in at the corner of a pitch so a warden can number the field. Static geometry.","description":"A 1 m timber pitch marker with a blue number plate and a pointed galvanised cap, driven in at the corner of a pitch so a warden can number the field. Static geometry. Overall 0.340 x 1.100 x 0.171 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-pitch-marker-post-b005d6b3","cdnUrl":"https://cdn.3dassets.dev/assets/35358/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-pitch-marker-post-b005d6b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35358/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35358/v1/poster.webp","blurhash":"UA6u3Hxb00E0*0kEH=VraIbGbdjFMIWAt-t8","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":11468,"triangles":70,"vertices":210,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.17000000178813934,0,-0.07608452439308167],"max":[0.17000000178813934,1.1000016644457442,0.09499984561931328]},"sizeMeters":[0.34,1.1,0.171],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:30.983Z","updatedAt":"2026-09-11T13:16:31.085Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35358/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PitchMarkerPostCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35358/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35358/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35358/v1/model.glb\" alt=\"Pitch Marker Post (Caravan Park and Campsite)\" 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/35358/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/35358/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35367","slug":"caravan-park-and-campsite-storage-crate-e19a8b9d","title":"Camping Storage Crate (Caravan Park and Campsite)","summary":"A 0.6 m stacking storage crate with ribbed sides, a clip on lid and moulded hand holds, for the boxes that come out of a car boot onto a pitch. Static geometry; the lid is modelled clipped shut.","description":"A 0.6 m stacking storage crate with ribbed sides, a clip on lid and moulded hand holds, for the boxes that come out of a car boot onto a pitch. Static geometry; the lid is modelled clipped shut. Overall 0.620 x 0.470 x 0.455 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-storage-crate-e19a8b9d","cdnUrl":"https://cdn.3dassets.dev/assets/35367/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-storage-crate-e19a8b9d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35367/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35367/v1/poster.webp","blurhash":"UXH32Hx]4-WB~Vt7M|a_I8oJRPWBIpt7oJRj","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":5968,"triangles":72,"vertices":216,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3100000023841858,-0.000010086009688464737,-0.22000000169200282],"max":[0.3100000023841858,0.47001419141705575,0.23501266343867835]},"sizeMeters":[0.62,0.47,0.455],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:36.970Z","updatedAt":"2026-09-11T13:16:37.090Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35367/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CampingStorageCrateCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35367/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35367/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35367/v1/model.glb\" alt=\"Camping Storage Crate (Caravan Park and Campsite)\" 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/35367/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/35367/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35363","slug":"caravan-park-and-campsite-camping-chair-390fe145","title":"Folding Camping Chair (Caravan Park and Campsite)","summary":"A folding camping chair set up: a galvanised tube frame with a canvas seat, back and arm straps and a cup holder on one arm. Static geometry; the frame is modelled open, because folding it needs a jointed linkage rather than one rigid node.","description":"A folding camping chair set up: a galvanised tube frame with a canvas seat, back and arm straps and a cup holder on one arm. Static geometry; the frame is modelled open, because folding it needs a jointed linkage rather than one rigid node. Overall 0.650 x 0.924 x 0.534 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-camping-chair-390fe145","cdnUrl":"https://cdn.3dassets.dev/assets/35363/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-camping-chair-390fe145","thumbnailUrl":"https://cdn.3dassets.dev/assets/35363/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35363/v1/poster.webp","blurhash":"UKE2IGxt01Rj}?Wo58ni57NIxaxCEMWYxan~","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":11188,"triangles":180,"vertices":540,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.28999999165534973,0,-0.25477903936139346],"max":[0.36000001430511475,0.9243310834185504,0.27878501866093874]},"sizeMeters":[0.65,0.924,0.534],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:34.145Z","updatedAt":"2026-09-11T13:16:34.258Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35363/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldingCampingChairCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35363/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35363/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35363/v1/model.glb\" alt=\"Folding Camping Chair (Caravan Park and Campsite)\" 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/35363/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/35363/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35343","slug":"caravan-park-and-campsite-touring-caravan-f889a9ff","title":"Touring Caravan (Caravan Park and Campsite)","summary":"A 4.4 m two berth touring caravan on a single axle: a chamfered body with a rooflight, tinted windows, a blue side flash, a near side door with a step, and an A frame with a coupling head, gas bottle and jockey wheel. The door opens and the wheels roll; the coupling is fixed.","description":"A 4.4 m two berth touring caravan on a single axle: a chamfered body with a rooflight, tinted windows, a blue side flash, a near side door with a step, and an A frame with a coupling head, gas bottle and jockey wheel. The door opens and the wheels roll; the coupling is fixed. Overall 2.647 x 2.170 x 5.365 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door-side, wheel-left, wheel-right. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open, close and roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-touring-caravan-f889a9ff","cdnUrl":"https://cdn.3dassets.dev/assets/35343/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-touring-caravan-f889a9ff","thumbnailUrl":"https://cdn.3dassets.dev/assets/35343/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35343/v1/poster.webp","blurhash":"UIEMLCoJ00f6~qIUD%xu00IU%g%M00t7%Ms:","category":{"slug":"vehicles","title":"Vehicles"},"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":31440,"triangles":580,"vertices":1740,"meshes":12,"materials":5,"textures":0,"animations":["open","close","roll"],"boundingBox":{"min":[-1.0870011575687346,-2.384185793236071e-9,-2.2249999046325684],"max":[1.5600501574644343,2.1700020068344914,3.140000104904175]},"sizeMeters":[2.647,2.17,5.365],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:22.656Z","updatedAt":"2026-09-11T13:16:22.798Z","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/35343/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 TouringCaravanCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35343/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/35343/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35343/v1/model.glb\" alt=\"Touring Caravan (Caravan Park and Campsite)\" 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/35343/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/35343/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35351","slug":"caravan-park-and-campsite-caravan-awning-1094ea21","title":"Caravan Porch Awning (Caravan Park and Campsite)","summary":"A 3.4 x 2.6 m porch awning for a touring caravan's near side: a pole frame, a canvas roof falling from 2.25 m at the van to 1.95 m at the front, cream panels with a window and a doorway, an orange valance and a groundsheet. The open back butts against the van. Nothing moves.","description":"A 3.4 x 2.6 m porch awning for a touring caravan's near side: a pole frame, a canvas roof falling from 2.25 m at the van to 1.95 m at the front, cream panels with a window and a doorway, an orange valance and a groundsheet. The open back butts against the van. Nothing moves. Overall 3.520 x 2.314 x 2.665 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-caravan-awning-1094ea21","cdnUrl":"https://cdn.3dassets.dev/assets/35351/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-caravan-awning-1094ea21","thumbnailUrl":"https://cdn.3dassets.dev/assets/35351/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35351/v1/poster.webp","blurhash":"UEIEb8-p0Mxa[8-oJCIU00oLMcE1G^SOwIR*","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":16072,"triangles":252,"vertices":756,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.7599999904632568,-0.000015703607392003605,-1.3324478824250623],"max":[1.7599999904632568,2.3142751841999574,1.3324478824250623]},"sizeMeters":[3.52,2.314,2.665],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:27.353Z","updatedAt":"2026-09-11T13:16:27.452Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35351/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CaravanPorchAwningCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35351/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35351/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35351/v1/model.glb\" alt=\"Caravan Porch Awning (Caravan Park and Campsite)\" 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/35351/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/35351/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35347","slug":"caravan-park-and-campsite-campervan-fc4a6247","title":"Camper Van (Caravan Park and Campsite)","summary":"A 5.4 m panel van conversion: a cab with a raked windscreen and grille, a living body with tinted windows and an orange flash, a stowed elevating roof with a rack, and a sliding side door. The door slides and the four wheels roll; the roof is stowed and does not rise.","description":"A 5.4 m panel van conversion: a cab with a raked windscreen and grille, a living body with tinted windows and an orange flash, a stowed elevating roof with a rack, and a sliding side door. The door slides and the four wheels roll; the roof is stowed and does not rise. Overall 2.163 x 2.660 x 5.485 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door-slide and the four wheel nodes. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open, close and roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-campervan-fc4a6247","cdnUrl":"https://cdn.3dassets.dev/assets/35347/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-campervan-fc4a6247","thumbnailUrl":"https://cdn.3dassets.dev/assets/35347/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35347/v1/poster.webp","blurhash":"UFFFsrWW00t7~q9FDixv00IU%MxuIU-;%gxu","category":{"slug":"vehicles","title":"Vehicles"},"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":26036,"triangles":616,"vertices":1848,"meshes":15,"materials":4,"textures":0,"animations":["open","close","roll"],"boundingBox":{"min":[-1.057007679640419,-3.576278662098531e-9,-2.734999895095825],"max":[1.1059962608247724,2.660057282196423,2.75]},"sizeMeters":[2.163,2.66,5.485],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:24.501Z","updatedAt":"2026-09-11T13:16:24.698Z","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/35347/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 CamperVanCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35347/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/35347/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35347/v1/model.glb\" alt=\"Camper Van (Caravan Park and Campsite)\" 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/35347/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/35347/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35346","slug":"caravan-park-and-campsite-folding-trailer-tent-cc7e1013","title":"Folding Trailer Tent (Caravan Park and Campsite)","summary":"A folding trailer tent set up on its pitch: a box trailer on two wheels with a drawbar, coupling head and jockey wheel, the canvas pitched as a ridge over the bed with a doorway and a ladder. The wheels roll; the canvas is fixed, because fabric cannot be folded rigidly.","description":"A folding trailer tent set up on its pitch: a box trailer on two wheels with a drawbar, coupling head and jockey wheel, the canvas pitched as a ridge over the bed with a doorway and a ladder. The wheels roll; the canvas is fixed, because fabric cannot be folded rigidly. Overall 2.980 x 1.967 x 4.020 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: wheel-left, wheel-right. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-folding-trailer-tent-cc7e1013","cdnUrl":"https://cdn.3dassets.dev/assets/35346/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-folding-trailer-tent-cc7e1013","thumbnailUrl":"https://cdn.3dassets.dev/assets/35346/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35346/v1/poster.webp","blurhash":"UCBp959^02;_~CEMIp-700sm}?bw0L=_-7AI","category":{"slug":"vehicles","title":"Vehicles"},"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":22332,"triangles":436,"vertices":1308,"meshes":9,"materials":5,"textures":0,"animations":["roll"],"boundingBox":{"min":[-1.4900397053424697,-0.000018181886009938086,-1.590000033378601],"max":[1.4900397053424697,1.9671106706702952,2.430000066757202]},"sizeMeters":[2.98,1.967,4.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:24.491Z","updatedAt":"2026-09-11T13:16:24.680Z","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/35346/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 FoldingTrailerTentCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35346/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/35346/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35346/v1/model.glb\" alt=\"Folding Trailer Tent (Caravan Park and Campsite)\" 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/35346/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/35346/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35369","slug":"caravan-park-and-campsite-awning-mat-2ef54a75","title":"Awning Ground Mat (Caravan Park and Campsite)","summary":"A 3 x 2.4 m breathable awning mat with woven stripes and bound ends, laid under a porch awning or in front of a tent door. It is 30 mm thick, so it reads on grass without floating. Static geometry.","description":"A 3 x 2.4 m breathable awning mat with woven stripes and bound ends, laid under a porch awning or in front of a tent door. It is 30 mm thick, so it reads on grass without floating. Static geometry. Overall 3.040 x 0.030 x 2.480 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-awning-mat-2ef54a75","cdnUrl":"https://cdn.3dassets.dev/assets/35369/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-awning-mat-2ef54a75","thumbnailUrl":"https://cdn.3dassets.dev/assets/35369/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35369/v1/poster.webp","blurhash":"U7BND_%M00S1x]ogV@oI00M{_NadIAWAa#M}","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":6392,"triangles":84,"vertices":252,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.5199999809265137,-0.00007110835059649136,-1.2400012051804143],"max":[1.5199999809265137,0.030029755022864393,1.2400012051804143]},"sizeMeters":[3.04,0.03,2.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:37.596Z","updatedAt":"2026-09-11T13:16:37.883Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35369/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AwningGroundMatCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35369/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35369/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35369/v1/model.glb\" alt=\"Awning Ground Mat (Caravan Park and Campsite)\" 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/35369/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/35369/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35359","slug":"caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","title":"Electric Hook Up Bollard (Caravan Park and Campsite)","summary":"A 1 m site electricity bollard on a concrete pad: a dark pedestal with a sloped weather top, two orange outlets under their cover and a blue label. Static geometry; the outlet covers are modelled shut.","description":"A 1 m site electricity bollard on a concrete pad: a dark pedestal with a sloped weather top, two orange outlets under their cover and a blue label. Static geometry; the outlet covers are modelled shut. Overall 0.340 x 1.011 x 0.353 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","cdnUrl":"https://cdn.3dassets.dev/assets/35359/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-electric-hook-up-bollard-649c4b9b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35359/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35359/v1/poster.webp","blurhash":"UAAmo8%M009F~qoL4nR*_NWV8_s.%gWCMws.","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"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":21272,"triangles":112,"vertices":336,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.17000000178813934,0,-0.15271309709872377],"max":[0.17000000178813934,1.0106415377488291,0.19999130520468597]},"sizeMeters":[0.34,1.011,0.353],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:31.099Z","updatedAt":"2026-09-11T13:16:31.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35359/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ElectricHookUpBollardCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35359/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35359/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35359/v1/model.glb\" alt=\"Electric Hook Up Bollard (Caravan Park and Campsite)\" 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/35359/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/35359/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35361","slug":"caravan-park-and-campsite-picnic-bench-99052c3c","title":"Picnic Bench (Caravan Park and Campsite)","summary":"A 1.8 m timber picnic bench with the benches built onto the same A frames as the table, of the kind bolted down beside a pitch or outside a site shop. Static geometry.","description":"A 1.8 m timber picnic bench with the benches built onto the same A frames as the table, of the kind bolted down beside a pitch or outside a site shop. Static geometry. Overall 1.800 x 0.811 x 1.520 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-picnic-bench-99052c3c","cdnUrl":"https://cdn.3dassets.dev/assets/35361/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-picnic-bench-99052c3c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35361/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35361/v1/poster.webp","blurhash":"U48:3D-m0#JQ}rxFJ7Na0OV]$jM}0#k9%0o0","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":12704,"triangles":108,"vertices":324,"meshes":1,"materials":1,"textures":1,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.000010293883320133812,-0.7600298880053697],"max":[0.8999999761581421,0.8108603777112926,0.7600298880053697]},"sizeMeters":[1.8,0.811,1.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:33.813Z","updatedAt":"2026-09-11T13:16:33.909Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35361/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PicnicBenchCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35361/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35361/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35361/v1/model.glb\" alt=\"Picnic Bench (Caravan Park and Campsite)\" 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/35361/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/35361/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35365","slug":"caravan-park-and-campsite-camping-chair-blue-3a552568","title":"Folding Camping Chair, Blue (Caravan Park and Campsite)","summary":"The same folding chair in blue canvas with an orange cup holder, so a pitch is not set out in one colour. The geometry is unchanged.","description":"The same folding chair in blue canvas with an orange cup holder, so a pitch is not set out in one colour. The geometry is unchanged. Overall 0.650 x 0.924 x 0.534 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Cosmetic colour variant of camping-chair; the geometry is unchanged. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-camping-chair-blue-3a552568","cdnUrl":"https://cdn.3dassets.dev/assets/35365/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-camping-chair-blue-3a552568","thumbnailUrl":"https://cdn.3dassets.dev/assets/35365/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35365/v1/poster.webp","blurhash":"UH9a:Rtl4TRPyZbFH=WCH=aJxuX9R4n$xbW=","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":11228,"triangles":180,"vertices":540,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.28999999165534973,0,-0.25477903936139346],"max":[0.36000001430511475,0.9243310834185504,0.27878501866093874]},"sizeMeters":[0.65,0.924,0.534],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:35.727Z","updatedAt":"2026-09-11T13:16:35.827Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35365/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldingCampingChairBlueCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35365/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35365/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35365/v1/model.glb\" alt=\"Folding Camping Chair, Blue (Caravan Park and Campsite)\" 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/35365/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/35365/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35366","slug":"caravan-park-and-campsite-folding-camp-table-c7e0c488","title":"Folding Camp Table (Caravan Park and Campsite)","summary":"A 1.1 m folding camp table: a white top with a blue edge rail on crossed galvanised legs. Static geometry; the legs are modelled set up.","description":"A 1.1 m folding camp table: a white top with a blue edge rail on crossed galvanised legs. Static geometry; the legs are modelled set up. Overall 1.140 x 0.752 x 0.620 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-folding-camp-table-c7e0c488","cdnUrl":"https://cdn.3dassets.dev/assets/35366/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-folding-camp-table-c7e0c488","thumbnailUrl":"https://cdn.3dassets.dev/assets/35366/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35366/v1/poster.webp","blurhash":"UbF68|ofD%t7~qxuIUM{ayxuRjM{D%xut7Rj","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":9028,"triangles":144,"vertices":432,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5699999928474426,-0.000016677307573986777,-0.3100222852314694],"max":[0.5699999928474426,0.7518406183325194,0.3100222852314694]},"sizeMeters":[1.14,0.752,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:36.596Z","updatedAt":"2026-09-11T13:16:36.781Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35366/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldingCampTableCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35366/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35366/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35366/v1/model.glb\" alt=\"Folding Camp Table (Caravan Park and Campsite)\" 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/35366/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/35366/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35368","slug":"caravan-park-and-campsite-cool-box-e9466247","title":"Cool Box (Caravan Park and Campsite)","summary":"A 0.62 m rigid cool box with a white lid, a moulded catch and a grab handle each end. The lid is one node hinged along its back edge, so the clip lifts it and shuts it again.","description":"A 0.62 m rigid cool box with a white lid, a moulded catch and a grab handle each end. The lid is one node hinged along its back edge, so the clip lifts it and shuts it again. Overall 0.676 x 0.450 x 0.440 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: lid. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-cool-box-e9466247","cdnUrl":"https://cdn.3dassets.dev/assets/35368/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-cool-box-e9466247","thumbnailUrl":"https://cdn.3dassets.dev/assets/35368/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35368/v1/poster.webp","blurhash":"UCE:rV.S00s,}jxvJDbF00rpnhIq0N%L-oD%","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":7552,"triangles":88,"vertices":264,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3400000035762787,-0.000009460257327675858,-0.20998687234735286],"max":[0.33618032932281494,0.44999571638175045,0.23000762560416915]},"sizeMeters":[0.676,0.45,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:36.987Z","updatedAt":"2026-09-11T13:16:37.104Z","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/35368/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 CoolBoxCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35368/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/35368/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35368/v1/model.glb\" alt=\"Cool Box (Caravan Park and Campsite)\" 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/35368/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/35368/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35378","slug":"caravan-park-and-campsite-site-noticeboard-3448b55f","title":"Site Noticeboard (Caravan Park and Campsite)","summary":"A 1.9 m site noticeboard on two timber posts: a white backing board under a small pent roof with pinned notices on it. Static geometry.","description":"A 1.9 m site noticeboard on two timber posts: a white backing board under a small pent roof with pinned notices on it. Static geometry. Overall 1.900 x 1.990 x 0.417 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-site-noticeboard-3448b55f","cdnUrl":"https://cdn.3dassets.dev/assets/35378/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-site-noticeboard-3448b55f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35378/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35378/v1/poster.webp","blurhash":"UDB:BIM_00o#~Bxt9uIo00%M?cIU9FaK-;o}","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":13540,"triangles":108,"vertices":324,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.9499581108346618,0,-0.06992928693796638],"max":[0.9499581108346618,1.9897898435592651,0.34713289896751887]},"sizeMeters":[1.9,1.99,0.417],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:43.858Z","updatedAt":"2026-09-11T13:16:43.956Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35378/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SiteNoticeboardCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35378/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35378/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35378/v1/model.glb\" alt=\"Site Noticeboard (Caravan Park and Campsite)\" 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/35378/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/35378/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35381","slug":"caravan-park-and-campsite-floodlight-column-b863e812","title":"Site Floodlight Column (Caravan Park and Campsite)","summary":"A 4.75 m galvanised lighting column on a concrete base with a blue collar and a single floodlight head aimed down the track. The lens is plain emissive free geometry: the pack ships no lights, so a consumer adds its own.","description":"A 4.75 m galvanised lighting column on a concrete base with a blue collar and a single floodlight head aimed down the track. The lens is plain emissive free geometry: the pack ships no lights, so a consumer adds its own. Overall 0.600 x 4.916 x 0.972 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-floodlight-column-b863e812","cdnUrl":"https://cdn.3dassets.dev/assets/35381/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-floodlight-column-b863e812","thumbnailUrl":"https://cdn.3dassets.dev/assets/35381/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35381/v1/poster.webp","blurhash":"U17K#f%M004T00t8~qM^xvt6bCIpJE%M-O8_","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"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":21188,"triangles":104,"vertices":312,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.30000001192092896,-0.00001144444150825985,-0.30000001192092896],"max":[0.30000001192092896,4.915769037864297,0.6722019910812378]},"sizeMeters":[0.6,4.916,0.972],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:45.236Z","updatedAt":"2026-09-11T13:16:45.344Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35381/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SiteFloodlightColumnCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35381/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35381/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35381/v1/model.glb\" alt=\"Site Floodlight Column (Caravan Park and Campsite)\" 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/35381/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/35381/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35360","slug":"caravan-park-and-campsite-water-point-e404d250","title":"Water Point (Caravan Park and Campsite)","summary":"A site water point: a galvanised standpipe on a concrete pad with a swan neck tap over a grated drain tray and a blue label. The tap and the water are fixed: a rigid node could turn a handle, but not the water it lets out, so the fitting is modelled shut.","description":"A site water point: a galvanised standpipe on a concrete pad with a swan neck tap over a grated drain tray and a blue label. The tap and the water are fixed: a rigid node could turn a handle, but not the water it lets out, so the fitting is modelled shut. Overall 0.800 x 1.100 x 0.800 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-water-point-e404d250","cdnUrl":"https://cdn.3dassets.dev/assets/35360/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-water-point-e404d250","thumbnailUrl":"https://cdn.3dassets.dev/assets/35360/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35360/v1/poster.webp","blurhash":"U8BM_PWB00-;00IU-;-;M{oft7WB~qt8RjM{","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"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":23496,"triangles":176,"vertices":528,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.4000000059604645,-0.000001525925496535796,-0.4000000059604645],"max":[0.4000000059604645,1.100000023841858,0.4000000059604645]},"sizeMeters":[0.8,1.1,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:31.202Z","updatedAt":"2026-09-11T13:16:31.323Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35360/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterPointCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35360/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35360/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35360/v1/model.glb\" alt=\"Water Point (Caravan Park and Campsite)\" 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/35360/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/35360/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35370","slug":"caravan-park-and-campsite-shower-and-toilet-block-430a4fe0","title":"Shower and Toilet Block (Caravan Park and Campsite)","summary":"A 7.2 x 4.4 m site shower and toilet block: rendered walls on a concrete apron, high frosted lights, a pitched roof and two signed entrances with an orange leaf in each. Each door is its own node, so the shower side and the toilet side open separately. Ported at both ends.","description":"A 7.2 x 4.4 m site shower and toilet block: rendered walls on a concrete apron, high frosted lights, a pitched roof and two signed entrances with an orange leaf in each. Each door is its own node, so the shower side and the toilet side open separately. Ported at both ends. Overall 7.240 x 3.470 x 4.700 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door-shower, door-toilet. Connectors: start (block), end (block). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: shower-open, shower-close, toilet-open and toilet-close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-shower-and-toilet-block-430a4fe0","cdnUrl":"https://cdn.3dassets.dev/assets/35370/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-shower-and-toilet-block-430a4fe0","thumbnailUrl":"https://cdn.3dassets.dev/assets/35370/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35370/v1/poster.webp","blurhash":"UJE36n%MD%WB4.xv%LRj00IVRjof~WRPIoRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":33316,"triangles":332,"vertices":996,"meshes":10,"materials":6,"textures":1,"animations":["shower-open","shower-close","toilet-open","toilet-close"],"boundingBox":{"min":[-3.619999885559082,-0.00020691524041318438,-2.3498458072402624],"max":[3.619999885559082,3.4697779398172193,2.3498458072402624]},"sizeMeters":[7.24,3.47,4.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:38.471Z","updatedAt":"2026-09-11T13:16:38.603Z","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/35370/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 ShowerAndToiletBlockCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35370/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/35370/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35370/v1/model.glb\" alt=\"Shower and Toilet Block (Caravan Park and Campsite)\" 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/35370/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/35370/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35371","slug":"caravan-park-and-campsite-laundry-room-module-f39c1a7f","title":"Laundry Room Module (Caravan Park and Campsite)","summary":"A 3 m laundry end for the shower block: the same render and apron under a lower mono pitch roof, a vent panel, a high light at the back and a blue door. It is ported on its open west face, so it butts onto the block and reads as one building. The door opens and shuts.","description":"A 3 m laundry end for the shower block: the same render and apron under a lower mono pitch roof, a vent panel, a high light at the back and a blue door. It is ported on its open west face, so it butts onto the block and reads as one building. The door opens and shuts. Overall 3.520 x 2.714 x 4.695 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Connectors: start (block). Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-laundry-room-module-f39c1a7f","cdnUrl":"https://cdn.3dassets.dev/assets/35371/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-laundry-room-module-f39c1a7f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35371/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35371/v1/poster.webp","blurhash":"UCEo_Q-;4m-n9FIA%2x]00M|M|9a~q%fD*oc","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":26364,"triangles":180,"vertices":540,"meshes":8,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-1.5798734360539843,-0.0000848415517658227,-2.3477420806884766],"max":[1.9400781932761775,2.7143781019341926,2.3477420806884766]},"sizeMeters":[3.52,2.714,4.695],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:39.931Z","updatedAt":"2026-09-11T13:16:40.031Z","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/35371/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 LaundryRoomModuleCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35371/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/35371/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35371/v1/model.glb\" alt=\"Laundry Room Module (Caravan Park and Campsite)\" 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/35371/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/35371/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35372","slug":"caravan-park-and-campsite-washing-up-sinks-43a9c061","title":"Washing Up Sinks under a Canopy (Caravan Park and Campsite)","summary":"A 3.2 x 2 m washing up point: two stainless bowls and their taps set in a white counter with a splashback and a draining shelf, under an orange canopy on four posts, on its own concrete apron. Static geometry; the taps are modelled shut.","description":"A 3.2 x 2 m washing up point: two stainless bowls and their taps set in a white counter with a splashback and a draining shelf, under an orange canopy on four posts, on its own concrete apron. Static geometry; the taps are modelled shut. Overall 3.700 x 2.705 x 2.495 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-washing-up-sinks-43a9c061","cdnUrl":"https://cdn.3dassets.dev/assets/35372/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-washing-up-sinks-43a9c061","thumbnailUrl":"https://cdn.3dassets.dev/assets/35372/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35372/v1/poster.webp","blurhash":"UIIg=exa00of{]%1K6NF9FsloyNbTzxanONe","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":31388,"triangles":324,"vertices":972,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-1.850000023841858,-0.00009918308356376276,-1.2476363575199858],"max":[1.850000023841858,2.7046352344032654,1.2476363575199858]},"sizeMeters":[3.7,2.705,2.495],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:38.921Z","updatedAt":"2026-09-11T13:16:39.045Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35372/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WashingUpSinksUnderACanopyCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35372/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35372/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35372/v1/model.glb\" alt=\"Washing Up Sinks under a Canopy (Caravan Park and Campsite)\" 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/35372/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/35372/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35362","slug":"caravan-park-and-campsite-chemical-disposal-point-21dfd40c","title":"Chemical Disposal Point (Caravan Park and Campsite)","summary":"The chemical toilet emptying point: a concrete plinth carrying a glazed white chute with a hinged metal cover, a rinsing standpipe and a blue instruction sign. Static geometry; the cover is modelled closed.","description":"The chemical toilet emptying point: a concrete plinth carrying a glazed white chute with a hinged metal cover, a rinsing standpipe and a blue instruction sign. Static geometry; the cover is modelled closed. Overall 1.300 x 1.480 x 1.100 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-chemical-disposal-point-21dfd40c","cdnUrl":"https://cdn.3dassets.dev/assets/35362/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-chemical-disposal-point-21dfd40c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35362/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35362/v1/poster.webp","blurhash":"UDE3PInN00pK00IA?Fx_00ae?btR~p%NNGRO","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"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":22628,"triangles":140,"vertices":420,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.6499999761581421,0.000014956934702645142,-0.5500213427819699],"max":[0.6499999761581421,1.480018621208441,0.5500213427819699]},"sizeMeters":[1.3,1.48,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:32.812Z","updatedAt":"2026-09-11T13:16:32.912Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35362/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChemicalDisposalPointCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35362/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35362/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35362/v1/model.glb\" alt=\"Chemical Disposal Point (Caravan Park and Campsite)\" 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/35362/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/35362/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35375","slug":"caravan-park-and-campsite-bin-and-recycling-store-beed8b68","title":"Bin and Recycling Store (Caravan Park and Campsite)","summary":"A 2.4 m slatted timber bin and recycling store on a concrete pad, with a blue and an orange wheeled bin inside and labelled panels on the front. The top is one node hinged along its back edge, so the clip lifts the lid and drops it shut. The bins themselves are fixed.","description":"A 2.4 m slatted timber bin and recycling store on a concrete pad, with a blue and an orange wheeled bin inside and labelled panels on the front. The top is one node hinged along its back edge, so the clip lifts the lid and drops it shut. The bins themselves are fixed. Overall 2.600 x 1.380 x 1.350 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-bin-and-recycling-store-beed8b68","cdnUrl":"https://cdn.3dassets.dev/assets/35375/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-bin-and-recycling-store-beed8b68","thumbnailUrl":"https://cdn.3dassets.dev/assets/35375/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35375/v1/poster.webp","blurhash":"U5DILD~X0L;^00=v-:I.0fH;n2F|?F?byYNd","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":45884,"triangles":420,"vertices":1260,"meshes":6,"materials":5,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-1.2999999523162842,0.000010684056971931033,-0.675014471532617],"max":[1.2999999523162842,1.3800068860011523,0.675014471532617]},"sizeMeters":[2.6,1.38,1.35],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:40.947Z","updatedAt":"2026-09-11T13:16:41.043Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35375/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 BinAndRecyclingStoreCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35375/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/35375/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35375/v1/model.glb\" alt=\"Bin and Recycling Store (Caravan Park and Campsite)\" 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/35375/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/35375/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35350","slug":"caravan-park-and-campsite-family-tunnel-tent-1859283b","title":"Family Tunnel Tent (Caravan Park and Campsite)","summary":"A 3.1 x 4.8 m family tunnel tent: three hooped bedrooms and a living end under one vault, a zipped front doorway, a rear vent panel, mud skirts down both sides and four guy lines pegged out. Everything is fixed geometry; the fabric does not move.","description":"A 3.1 x 4.8 m family tunnel tent: three hooped bedrooms and a living end under one vault, a zipped front doorway, a rear vent panel, mud skirts down both sides and four guy lines pegged out. Everything is fixed geometry; the fabric does not move. Overall 4.090 x 1.897 x 5.590 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-family-tunnel-tent-1859283b","cdnUrl":"https://cdn.3dassets.dev/assets/35350/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-family-tunnel-tent-1859283b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35350/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35350/v1/poster.webp","blurhash":"UCC$J;X60L$*wHEMR.-U00WC}?RjFg=_$|9_","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":28964,"triangles":536,"vertices":1608,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.044963891386793,-0.000006241988964039713,-2.7950000762939453],"max":[2.044963891386793,1.897041344043798,2.7950000762939453]},"sizeMeters":[4.09,1.897,5.59],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:27.385Z","updatedAt":"2026-09-11T13:16:27.485Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35350/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FamilyTunnelTentCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35350/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35350/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35350/v1/model.glb\" alt=\"Family Tunnel Tent (Caravan Park and Campsite)\" 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/35350/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/35350/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35345","slug":"caravan-park-and-campsite-dome-tent-72989d5b","title":"Two Person Dome Tent (Caravan Park and Campsite)","summary":"A 2.5 x 2.3 m two person dome tent pitched on its groundsheet, with crossed pole arcs over the flysheet, a dark zipped doorway and four guy lines pegged out. Nothing moves: skin, poles, guys and pegs are solid geometry, because fabric needs a deforming surface.","description":"A 2.5 x 2.3 m two person dome tent pitched on its groundsheet, with crossed pole arcs over the flysheet, a dark zipped doorway and four guy lines pegged out. Nothing moves: skin, poles, guys and pegs are solid geometry, because fabric needs a deforming surface. Overall 3.090 x 1.342 x 2.790 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-dome-tent-72989d5b","cdnUrl":"https://cdn.3dassets.dev/assets/35345/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-dome-tent-72989d5b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35345/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35345/v1/poster.webp","blurhash":"U48gpnb_00wbDhoco}o#00V?}sM|yYRk=yaJ","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":23300,"triangles":420,"vertices":1260,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.5449999570846558,0.00003173968298782193,-1.3950594723430192],"max":[1.5449999570846558,1.3416467192719073,1.3950594723430192]},"sizeMeters":[3.09,1.342,2.79],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:25.503Z","updatedAt":"2026-09-11T13:16:25.720Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35345/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwoPersonDomeTentCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35345/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35345/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35345/v1/model.glb\" alt=\"Two Person Dome Tent (Caravan Park and Campsite)\" 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/35345/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/35345/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35349","slug":"caravan-park-and-campsite-dome-tent-blue-49b05934","title":"Two Person Dome Tent, Blue (Caravan Park and Campsite)","summary":"The two person dome in blue with orange poles, so a tent field is not one colour. The geometry is unchanged.","description":"The two person dome in blue with orange poles, so a tent field is not one colour. The geometry is unchanged. Overall 3.090 x 1.342 x 2.790 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Cosmetic colour variant of dome-tent; the geometry is unchanged. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-dome-tent-blue-49b05934","cdnUrl":"https://cdn.3dassets.dev/assets/35349/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-dome-tent-blue-49b05934","thumbnailUrl":"https://cdn.3dassets.dev/assets/35349/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35349/v1/poster.webp","blurhash":"U38zot%100Sj4nXRxt$P00M|yZM_.9ix%OFd","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":23352,"triangles":420,"vertices":1260,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.5449999570846558,0.00003173968298782193,-1.3950594723430192],"max":[1.5449999570846558,1.3416467192719073,1.3950594723430192]},"sizeMeters":[3.09,1.342,2.79],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:26.349Z","updatedAt":"2026-09-11T13:16:26.453Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35349/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwoPersonDomeTentBlueCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35349/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35349/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35349/v1/model.glb\" alt=\"Two Person Dome Tent, Blue (Caravan Park and Campsite)\" 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/35349/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/35349/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35348","slug":"caravan-park-and-campsite-dome-tent-large-b8c0e9d3","title":"Four Person Dome Tent (Caravan Park and Campsite)","summary":"The same dome pitched one size up at 3.5 x 3.2 m, for a family pitch beside the two person tents. Same construction, same fixed fabric.","description":"The same dome pitched one size up at 3.5 x 3.2 m, for a family pitch beside the two person tents. Same construction, same fixed fabric. Overall 4.306 x 1.850 x 3.886 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Functional variant of dome-tent. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-dome-tent-large-b8c0e9d3","cdnUrl":"https://cdn.3dassets.dev/assets/35348/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-dome-tent-large-b8c0e9d3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35348/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35348/v1/poster.webp","blurhash":"U48gpmo}00vgH=oyo~o#00aK}rN]lUR6=xac","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":23356,"triangles":420,"vertices":1260,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.1530001163482666,0.00008979532961472803,-1.9430026075177647],"max":[2.1530001163482666,1.8496206405010365,1.9430026075177647]},"sizeMeters":[4.306,1.85,3.886],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:25.534Z","updatedAt":"2026-09-11T13:16:25.731Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35348/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FourPersonDomeTentCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35348/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35348/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35348/v1/model.glb\" alt=\"Four Person Dome Tent (Caravan Park and Campsite)\" 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/35348/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/35348/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35352","slug":"caravan-park-and-campsite-bell-tent-d7f74bfd","title":"Canvas Bell Tent (Caravan Park and Campsite)","summary":"A 3.6 m canvas bell tent on a single centre pole: a low sidewall under a coned roof with a metal cap, a pegged groundsheet, a zipped doorway and eight guy lines out to their pegs. The pole, the canvas and the guys are all fixed geometry.","description":"A 3.6 m canvas bell tent on a single centre pole: a low sidewall under a coned roof with a metal cap, a pegged groundsheet, a zipped doorway and eight guy lines out to their pegs. The pole, the canvas and the guys are all fixed geometry. Overall 4.665 x 2.680 x 4.665 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-bell-tent-d7f74bfd","cdnUrl":"https://cdn.3dassets.dev/assets/35352/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-bell-tent-d7f74bfd","thumbnailUrl":"https://cdn.3dassets.dev/assets/35352/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35352/v1/poster.webp","blurhash":"UHByT?t70LNGE1axxabH02R*}?s:?GofNKo2","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":30988,"triangles":452,"vertices":1356,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-2.332355499267578,-0.00007817992744368896,-2.332355499267578],"max":[2.332355499267578,2.6800349657560365,2.332355499267578]},"sizeMeters":[4.665,2.68,4.665],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:27.545Z","updatedAt":"2026-09-11T13:16:27.643Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35352/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CanvasBellTentCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35352/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35352/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35352/v1/model.glb\" alt=\"Canvas Bell Tent (Caravan Park and Campsite)\" 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/35352/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/35352/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35364","slug":"caravan-park-and-campsite-fire-pit-ring-a42e931d","title":"Fire Pit Ring with Logs (Caravan Park and Campsite)","summary":"A 1.2 m fire pit: a ring of set stones round an ash bed with three logs stacked over the embers. The fire itself is glowing geometry rather than an effect: there are no lights, no particles and nothing animated, because flame is not a rigid body.","description":"A 1.2 m fire pit: a ring of set stones round an ash bed with three logs stacked over the embers. The fire itself is glowing geometry rather than an effect: there are no lights, no particles and nothing animated, because flame is not a rigid body. Overall 1.392 x 0.375 x 1.294 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-fire-pit-ring-a42e931d","cdnUrl":"https://cdn.3dassets.dev/assets/35364/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-fire-pit-ring-a42e931d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35364/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35364/v1/poster.webp","blurhash":"U8A0%Zxu00Rkoej[bIfk00NG~VoLRkWBn$ae","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":51504,"triangles":532,"vertices":1596,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-0.6959999799728394,0.00004493300748575901,-0.6469760243535482],"max":[0.6959999799728394,0.37457717670761626,0.6469760243535482]},"sizeMeters":[1.392,0.375,1.294],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:34.165Z","updatedAt":"2026-09-11T13:16:34.277Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35364/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FirePitRingWithLogsCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35364/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35364/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35364/v1/model.glb\" alt=\"Fire Pit Ring with Logs (Caravan Park and Campsite)\" 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/35364/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/35364/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35376","slug":"caravan-park-and-campsite-playground-swing-set-36359ece","title":"Playground Swing Set (Caravan Park and Campsite)","summary":"A 4.8 m two bay swing frame on a safety mat: galvanised A frames, a top bar and two seats on chains. Each seat is its own node pivoted on the top bar, so the clip rocks both seats through their arc. The frame and the mat are fixed.","description":"A 4.8 m two bay swing frame on a safety mat: galvanised A frames, a top bar and two seats on chains. Each seat is its own node pivoted on the top bar, so the clip rocks both seats through their arc. The frame and the mat are fixed. Overall 4.800 x 2.400 x 3.400 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: seat-left, seat-right. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: swing. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-playground-swing-set-36359ece","cdnUrl":"https://cdn.3dassets.dev/assets/35376/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-playground-swing-set-36359ece","thumbnailUrl":"https://cdn.3dassets.dev/assets/35376/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35376/v1/poster.webp","blurhash":"U39@YP_400NGIS?bIV9E009Y~qIARq9G~q.8","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":14008,"triangles":252,"vertices":756,"meshes":6,"materials":4,"textures":0,"animations":["swing"],"boundingBox":{"min":[-2.4000000953674316,0.00011627366307877252,-1.7000031194029994],"max":[2.4000000953674316,2.400093861695803,1.7000031194029994]},"sizeMeters":[4.8,2.4,3.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:42.800Z","updatedAt":"2026-09-11T13:16:42.906Z","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/35376/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 PlaygroundSwingSetCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35376/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/35376/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35376/v1/model.glb\" alt=\"Playground Swing Set (Caravan Park and Campsite)\" 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/35376/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/35376/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35377","slug":"caravan-park-and-campsite-playground-slide-513f641c","title":"Playground Slide (Caravan Park and Campsite)","summary":"A 2.2 x 4.2 m playground slide on a safety mat: a galvanised platform at 1.5 m with a ladder up the back and blue grab rails, and an orange slide bed with raised sides running down to a run out at the front. Static geometry.","description":"A 2.2 x 4.2 m playground slide on a safety mat: a galvanised platform at 1.5 m with a ladder up the back and blue grab rails, and an orange slide bed with raised sides running down to a run out at the front. Static geometry. Overall 2.200 x 2.269 x 4.200 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-playground-slide-513f641c","cdnUrl":"https://cdn.3dassets.dev/assets/35377/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-playground-slide-513f641c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35377/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35377/v1/poster.webp","blurhash":"UCB:T:vx01PCERD%RP-p00p0}?wHwG?H%L9a","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":18056,"triangles":308,"vertices":924,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.1001494907352722,0.000006409578538538879,-2.0999999046325684],"max":[1.1001494907352722,2.2685317993164062,2.0999999046325684]},"sizeMeters":[2.2,2.269,4.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:43.606Z","updatedAt":"2026-09-11T13:16:43.709Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35377/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlaygroundSlideCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35377/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35377/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35377/v1/model.glb\" alt=\"Playground Slide (Caravan Park and Campsite)\" 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/35377/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/35377/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35373","slug":"caravan-park-and-campsite-site-shop-and-reception-3f28f019","title":"Site Shop and Reception Cabin (Caravan Park and Campsite)","summary":"A 4.6 x 3.4 m timber clad site shop and reception: a serving window under an orange canopy, a glazed entrance door, a blue fascia sign, a gas bottle for exchange and an A board on the apron. The door is one node and opens; the canopy and the A board are fixed.","description":"A 4.6 x 3.4 m timber clad site shop and reception: a serving window under an orange canopy, a glazed entrance door, a blue fascia sign, a gas bottle for exchange and an A board on the apron. The door is one node and opens; the canopy and the A board are fixed. Overall 4.900 x 3.340 x 4.400 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: door. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-site-shop-and-reception-3f28f019","cdnUrl":"https://cdn.3dassets.dev/assets/35373/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-site-shop-and-reception-3f28f019","thumbnailUrl":"https://cdn.3dassets.dev/assets/35373/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35373/v1/poster.webp","blurhash":"U8B:a5_N00IA0gozxZS2009FM|of]~%Lx^R5","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":42876,"triangles":356,"vertices":1068,"meshes":10,"materials":7,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-2.450000047683716,0.000014953005565629396,-1.899989355500684],"max":[2.450000047683716,3.340066211409127,2.5003880479623413]},"sizeMeters":[4.9,3.34,4.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-11T13:16:40.645Z","updatedAt":"2026-09-11T13:16:40.763Z","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/35373/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 SiteShopAndReceptionCabinCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35373/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/35373/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35373/v1/model.glb\" alt=\"Site Shop and Reception Cabin (Caravan Park and Campsite)\" 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/35373/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/35373/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35374","slug":"caravan-park-and-campsite-gas-bottle-cage-44ac181f","title":"Gas Bottle Cage (Caravan Park and Campsite)","summary":"A 1.9 x 1.2 m galvanised gas bottle cage on a concrete pad: mesh panels in a framed cage with a warning sign, five exchange bottles inside and a framed mesh door. The door opens and shuts; the bottles are fixed.","description":"A 1.9 x 1.2 m galvanised gas bottle cage on a concrete pad: mesh panels in a framed cage with a warning sign, five exchange bottles inside and a framed mesh door. The door opens and shuts; the bottles are fixed. Overall 2.100 x 1.910 x 1.400 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-gas-bottle-cage-44ac181f","cdnUrl":"https://cdn.3dassets.dev/assets/35374/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-gas-bottle-cage-44ac181f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35374/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35374/v1/poster.webp","blurhash":"UDGbr0?H00Nx?wxuMdRiJBkDH?aJ$K%MT1E1","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":67064,"triangles":1044,"vertices":3132,"meshes":5,"materials":4,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-1.0499999523162842,0.0000106844935427175,-0.7000426941221822],"max":[1.0499999523162842,1.9100721434062744,0.7000426941221822]},"sizeMeters":[2.1,1.91,1.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-11T13:16:41.479Z","updatedAt":"2026-09-11T13:16:41.588Z","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/35374/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 GasBottleCageCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35374/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/35374/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35374/v1/model.glb\" alt=\"Gas Bottle Cage (Caravan Park and Campsite)\" 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/35374/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/35374/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35380","slug":"caravan-park-and-campsite-site-entrance-sign-2d4eea35","title":"Site Entrance Sign (Caravan Park and Campsite)","summary":"A 2.8 m painted entrance sign on two timber posts: a blue board with the park name and opening times blocked out in white and an orange strap line under them, of the kind that stands beside the barrier. Static geometry.","description":"A 2.8 m painted entrance sign on two timber posts: a blue board with the park name and opening times blocked out in white and an orange strap line under them, of the kind that stands beside the barrier. Static geometry. Overall 2.820 x 2.500 x 0.160 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-site-entrance-sign-2d4eea35","cdnUrl":"https://cdn.3dassets.dev/assets/35380/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-site-entrance-sign-2d4eea35","thumbnailUrl":"https://cdn.3dassets.dev/assets/35380/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35380/v1/poster.webp","blurhash":"UC9%xHx]00V@_N%MD%E1DNo#%hR58wn4.9b^","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":14808,"triangles":132,"vertices":396,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.409999966621399,-0.00009640889670281538,-0.08003784105703306],"max":[1.409999966621399,2.500096408896703,0.08003784105703306]},"sizeMeters":[2.82,2.5,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:44.668Z","updatedAt":"2026-09-11T13:16:44.765Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35380/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SiteEntranceSignCaravanParkAndCampsite(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35380/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35380/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35380/v1/model.glb\" alt=\"Site Entrance Sign (Caravan Park and Campsite)\" 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/35380/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/35380/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35379","slug":"caravan-park-and-campsite-entrance-barrier-2a6125c4","title":"Entrance Barrier (Caravan Park and Campsite)","summary":"A 4.2 m site entrance barrier: a galvanised pedestal on a concrete base with a striped arm and a counterweight, and a drop leg under the far end. The arm is one node on the pedestal axis, so the clip tilts it up to let a tourer through and drops it again. The pedestal is fixed.","description":"A 4.2 m site entrance barrier: a galvanised pedestal on a concrete base with a striped arm and a counterweight, and a drop leg under the far end. The arm is one node on the pedestal axis, so the clip tilts it up to let a tourer through and drops it again. The pedestal is fixed. Overall 4.565 x 1.290 x 0.700 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: arm. Caravan Park and Campsite / holidaypark-lp-v1: mown grass, concrete hardstanding, cream caravan shell, sawn timber, galvanised steel and charcoal glazing, with the orange and blue of awnings, tents and site signage carrying the colour, embedded procedural timber and concrete maps and no custom shaders. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/caravan-park-and-campsite-entrance-barrier-2a6125c4","cdnUrl":"https://cdn.3dassets.dev/assets/35379/v1/model.glb","downloadUrl":"https://3dassets.dev/download/caravan-park-and-campsite-entrance-barrier-2a6125c4","thumbnailUrl":"https://cdn.3dassets.dev/assets/35379/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35379/v1/poster.webp","blurhash":"U69@9b?b9ws:^+oJE1W=00RP$yI:00t8~Vad","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"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":24156,"triangles":176,"vertices":528,"meshes":7,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.6299999952316284,0.000012817454451030663,-0.3499999940395355],"max":[3.9350083731071663,1.2900008756552435,0.3499999940395355]},"sizeMeters":[4.565,1.29,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T13:16:43.269Z","updatedAt":"2026-09-11T13:16:43.373Z","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/35379/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 EntranceBarrierCaravanParkAndCampsite(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35379/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/35379/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35379/v1/model.glb\" alt=\"Entrance Barrier (Caravan Park and Campsite)\" 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/35379/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/35379/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}