{"data":{"id":264,"slug":"petrol-station-and-forecourt-shop","title":"Petrol Station and Forecourt Shop","summary":"A complete filling station: dispensers, pump islands, a modular canopy, paving, totem and pylon signs, the wash and air equipment, and a shop built from facade bays and stocked with chillers, gondolas, a counter and a coffee station.","description":"A realistic modern petrol station in metre units, usable as a British filling station or an American gas station. The forecourt has two and four hose dispensers with holstered nozzles, precast pump islands with end caps and bollards, a 6 m canopy bay that repeats into a canopy of any size, marked paving tiles, price totem and pylon signs with blank faces, a jet wash bay, an air and water tower, a vacuum, a screen wash stand, a fire point, a spill kit and the tanker fill point. The shop is built from 1.5 m glazed, entrance and solid facade bays with matching roof panels, floor tiles and wall panels, and is stocked with a counter and till, a cigarette gantry, drinks chillers, snack gondolas, coffee and hot food, papers, an ice cream chest, baskets and a cash machine. Doors, lids, shutters, the till drawer, the nozzle, the wheels and the air line drum ship rigid node transform clips. Fuel hoses, air lines, wash leads, cables and liquids are deliberately static: a flexible linkage is not reachable with one rigid node. No real brand, logo or fuel company name appears anywhere; every sign face is blank. CC0 geometry prepared for human review.","url":"https://3dassets.dev/packs/petrol-station-and-forecourt-shop","coverUrl":"https://cdn.3dassets.dev/assets/33992/v1/poster.webp","assetCount":54,"aiGenerated":true,"aiGeneratedAssetCount":54,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":8537796,"totalTriangles":202288,"starterScene":{"id":"33992","slug":"petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","title":"Filling station and forecourt shop (Petrol Station and Forecourt Shop)","summary":"A working filling station: two pump islands of dispensers standing under an assembled two bay canopy on marked forecourt paving, a car filling up on the outside lane, the shop behind built from glazed and entrance facade bays with a roof and a lit, stocked interior of...","description":"A working filling station: two pump islands of dispensers standing under an assembled two bay canopy on marked forecourt paving, a car filling up on the outside lane, the shop behind built from glazed and entrance facade bays with a roof and a lit, stocked interior of chillers, gondolas, a counter with its till and cigarette gantry, coffee and hot food, and a service strip to one side with the jet wash bay, the air and water tower and the vacuum. Price totem and pylon signs on the road side, bins, bollards, a spill kit, a fire point and the tanker fill point around it. Every sign face is blank. Static geometry; the models carry their own clips.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/33992/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/33992/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33992/v1/poster.webp","blurhash":"U6Am^{?v00eo9Ft7%MNF00Di_NWV-;IoRj%N","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":3813292,"triangles":93122,"vertices":206891,"meshes":274,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-10.610000038146973,-0.000030213994933490917,-12.164961242789836],"max":[7.549899307256157,6.360000190734863,4.5]},"sizeMeters":[18.16,6.36,16.665],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:55.981Z","updatedAt":"2026-09-11T05:43:56.077Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33992/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FillingStationAndForecourtShopPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33992/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33992/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33992/v1/model.glb\" alt=\"Filling station and forecourt shop (Petrol Station and Forecourt Shop)\" 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/33992/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/33992/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"33940","slug":"petrol-station-and-forecourt-shop-fuel-pump-two-hose-d914fce2","title":"Fuel pump, two hose (Petrol Station and Forecourt Shop)","summary":"A forecourt fuel dispenser serving both sides on one hose each: a painted body with an accent skirt, a raised head carrying blank volume and price displays and grade keys on both faces, a card reader, keypad and receipt slot, and a nozzle holstered on each served face.","description":"A forecourt fuel dispenser serving both sides on one hose each: a painted body with an accent skirt, a raised head carrying blank volume and price displays and grade keys on both faces, a card reader, keypad and receipt slot, and a nozzle holstered on each served face. Dimensions 0.72 by 2.27 by 0.91 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: pump-nozzle. The fuel hose, the hose boom and the breakaway are modelled static: a hose is a flexible linkage and a rigid node transform cannot carry it, so only the nozzle is rigged. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-fuel-pump-two-hose-d914fce2","cdnUrl":"https://cdn.3dassets.dev/assets/33940/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-fuel-pump-two-hose-d914fce2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33940/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33940/v1/poster.webp","blurhash":"U8AKjh-q000K_NWBDit79ZRj?H-WFYs;#qM{","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":138908,"triangles":3088,"vertices":6948,"meshes":10,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.36003310917099446,0,-0.4500288693371606],"max":[0.36003310917099446,2.2699999809265137,0.45720662402949275]},"sizeMeters":[0.72,2.27,0.907],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:26.357Z","updatedAt":"2026-09-11T05:43:26.525Z","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/33940/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 FuelPumpTwoHosePetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33940/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/33940/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33940/v1/model.glb\" alt=\"Fuel pump, two hose (Petrol Station and Forecourt Shop)\" 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/33940/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/33940/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33941","slug":"petrol-station-and-forecourt-shop-fuel-pump-four-hose-a3b0d5a7","title":"Fuel pump, four hose (Petrol Station and Forecourt Shop)","summary":"The multi grade island dispenser: the same body with two nozzles holstered on each served face and a four key grade selector on each display, for a station where every pump offers every grade.","description":"The multi grade island dispenser: the same body with two nozzles holstered on each served face and a four key grade selector on each display, for a station where every pump offers every grade. Dimensions 0.72 by 2.27 by 0.91 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: pump-nozzle. The fuel hose, the hose boom and the breakaway are modelled static: a hose is a flexible linkage and a rigid node transform cannot carry it, so only the nozzle is rigged. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-fuel-pump-four-hose-a3b0d5a7","cdnUrl":"https://cdn.3dassets.dev/assets/33941/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-fuel-pump-four-hose-a3b0d5a7","thumbnailUrl":"https://cdn.3dassets.dev/assets/33941/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33941/v1/poster.webp","blurhash":"U99@^k%M004.?^ayDiofD%Rj-p%2EyoL#;R*","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":222972,"triangles":5088,"vertices":11454,"meshes":10,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.36003310917099446,0,-0.4499956595416355],"max":[0.36003310917099446,2.2699999809265137,0.45720662402949275]},"sizeMeters":[0.72,2.27,0.907],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:25.475Z","updatedAt":"2026-09-11T05:43:25.592Z","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/33941/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 FuelPumpFourHosePetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33941/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/33941/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33941/v1/model.glb\" alt=\"Fuel pump, four hose (Petrol Station and Forecourt Shop)\" 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/33941/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/33941/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33939","slug":"petrol-station-and-forecourt-shop-pump-island-kerb-02812f2e","title":"Pump island kerb (Petrol Station and Forecourt Shop)","summary":"A 4.8 m precast pump island: a chamfered kerb with a painted hazard nosing, a recessed deck screed for the dispensers to stand on, and a protective bollard at each end. Couple the modules end to end and cap the run with island end pieces.","description":"A 4.8 m precast pump island: a chamfered kerb with a painted hazard nosing, a recessed deck screed for the dispensers to stand on, and a protective bollard at each end. Couple the modules end to end and cap the run with island end pieces. Dimensions 4.80 by 0.96 by 1.23 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: island-left, island-right (type pump-island). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-pump-island-kerb-02812f2e","cdnUrl":"https://cdn.3dassets.dev/assets/33939/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-pump-island-kerb-02812f2e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33939/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33939/v1/poster.webp","blurhash":"U9Amk@xr9Gxt4p?a%LIV009b%Nxs~o9ED*xb","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":33772,"triangles":768,"vertices":1599,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.4000000953674316,0.000017085398931929174,-0.6131214082675811],"max":[2.4000000953674316,0.9600015306501337,0.6131214082675811]},"sizeMeters":[4.8,0.96,1.226],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:26.342Z","updatedAt":"2026-09-11T05:43:26.539Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33939/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PumpIslandKerbPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33939/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33939/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33939/v1/model.glb\" alt=\"Pump island kerb (Petrol Station and Forecourt Shop)\" 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/33939/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/33939/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33942","slug":"petrol-station-and-forecourt-shop-island-end-cap-446f2a24","title":"Pump island end cap (Petrol Station and Forecourt Shop)","summary":"The 700 mm bull-nosed piece that closes a run of pump island kerb, with its own end bollard and a painted nose band so a driver can see where the island stops.","description":"The 700 mm bull-nosed piece that closes a run of pump island kerb, with its own end bollard and a painted nose band so a driver can see where the island stops. Dimensions 0.71 by 0.96 by 1.20 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: island-left (type pump-island). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-island-end-cap-446f2a24","cdnUrl":"https://cdn.3dassets.dev/assets/33942/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-island-end-cap-446f2a24","thumbnailUrl":"https://cdn.3dassets.dev/assets/33942/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33942/v1/poster.webp","blurhash":"UBBM*.o$00M_00Rh-.o$9FxuxuM_~qNLs%xZ","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":21792,"triangles":464,"vertices":962,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.349998487982216,0.000017085398931929174,-0.6000000238418579],"max":[0.36299432514911095,0.9599999785423279,0.6000000238418579]},"sizeMeters":[0.713,0.96,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:26.597Z","updatedAt":"2026-09-11T05:43:26.712Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33942/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PumpIslandEndCapPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33942/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33942/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33942/v1/model.glb\" alt=\"Pump island end cap (Petrol Station and Forecourt Shop)\" 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/33942/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/33942/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33943","slug":"petrol-station-and-forecourt-shop-forecourt-canopy-sec-fbd8f3da","title":"Forecourt canopy section (Petrol Station and Forecourt Shop)","summary":"A 6 m square canopy bay on its own central column: a clad column on a concrete base, a lit soffit with four downlight strips, a steel deck and a blank accent fascia wrapping all four sides. Repeat it on the 6 m grid and a canopy of any size falls out.","description":"A 6 m square canopy bay on its own central column: a clad column on a concrete base, a lit soffit with four downlight strips, a steel deck and a blank accent fascia wrapping all four sides. Repeat it on the 6 m grid and a canopy of any size falls out. Dimensions 6.04 by 5.50 by 6.04 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: canopy-left, canopy-right, canopy-front, canopy-back (type canopy). Clearance under the soffit is 4.6 m. Stand the column on a pump island so the bay lands where a real one does, with a lane each side of it. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-canopy-sec-fbd8f3da","cdnUrl":"https://cdn.3dassets.dev/assets/33943/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-canopy-sec-fbd8f3da","thumbnailUrl":"https://cdn.3dassets.dev/assets/33943/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33943/v1/poster.webp","blurhash":"UWBq9woz9FWB_NkCMxj[n,afWVkCIAWBn+jZ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":69472,"triangles":1536,"vertices":3463,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-3.0179998874664307,0.000009461098522289824,-3.0179998874664307],"max":[3.0179998874664307,5.499913025228226,3.0179998874664307]},"sizeMeters":[6.036,5.5,6.036],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:28.273Z","updatedAt":"2026-09-11T05:43:28.366Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33943/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForecourtCanopySectionPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33943/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33943/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33943/v1/model.glb\" alt=\"Forecourt canopy section (Petrol Station and Forecourt Shop)\" 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/33943/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/33943/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33944","slug":"petrol-station-and-forecourt-shop-canopy-column-9faa06ee","title":"Canopy column (Petrol Station and Forecourt Shop)","summary":"The canopy column on its own with its head plate, for an edge bay or a span that needs a second leg. Same clad section, concrete base and accent reveals as the section it belongs to.","description":"The canopy column on its own with its head plate, for an edge bay or a span that needs a second leg. Same clad section, concrete base and accent reveals as the section it belongs to. Dimensions 0.62 by 4.62 by 0.62 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-canopy-column-9faa06ee","cdnUrl":"https://cdn.3dassets.dev/assets/33944/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-canopy-column-9faa06ee","thumbnailUrl":"https://cdn.3dassets.dev/assets/33944/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33944/v1/poster.webp","blurhash":"U39Qz0~q0000?cof9FRjw~M{N??b-=j[D%ae","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":22864,"triangles":448,"vertices":1017,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3100000023841858,0.000009461098522289824,-0.3100000023841858],"max":[0.3100000023841858,4.6199861427947955,0.3100000023841858]},"sizeMeters":[0.62,4.62,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:29.147Z","updatedAt":"2026-09-11T05:43:29.265Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33944/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CanopyColumnPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33944/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33944/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33944/v1/model.glb\" alt=\"Canopy column (Petrol Station and Forecourt Shop)\" 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/33944/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/33944/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33945","slug":"petrol-station-and-forecourt-shop-price-totem-sign-6d5c4b7e","title":"Price totem sign (Petrol Station and Forecourt Shop)","summary":"The roadside price totem: a twin post board with a blank illuminated header and three double sided price rows of blank seven segment digits, each with a colour grade tab. No wording, no operator name and no figures.","description":"The roadside price totem: a twin post board with a blank illuminated header and three double sided price rows of blank seven segment digits, each with a colour grade tab. No wording, no operator name and no figures. Dimensions 1.50 by 3.90 by 0.41 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-price-totem-sign-6d5c4b7e","cdnUrl":"https://cdn.3dassets.dev/assets/33945/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-price-totem-sign-6d5c4b7e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33945/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33945/v1/poster.webp","blurhash":"U58E9=-;0000~qx[4U9F%Mj]InW9IAog%MNF","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":514548,"triangles":12224,"vertices":27659,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.7498993072561572,0,-0.20698723400261607],"max":[0.7498993072561572,3.9000000953674316,0.20698723400261607]},"sizeMeters":[1.5,3.9,0.414],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:29.163Z","updatedAt":"2026-09-11T05:43:29.280Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33945/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PriceTotemSignPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33945/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33945/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33945/v1/model.glb\" alt=\"Price totem sign (Petrol Station and Forecourt Shop)\" 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/33945/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/33945/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33946","slug":"petrol-station-and-forecourt-shop-station-pylon-sign-bc7a7388","title":"Station pylon sign (Petrol Station and Forecourt Shop)","summary":"A 6.4 m roadside pylon on a single tapered column: a large blank illuminated cabinet over a slim blank blade, on a precast base. Both faces are wordless so a project can put its own sign art on them.","description":"A 6.4 m roadside pylon on a single tapered column: a large blank illuminated cabinet over a slim blank blade, on a precast base. Both faces are wordless so a project can put its own sign art on them. Dimensions 1.70 by 6.30 by 0.70 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-station-pylon-sign-bc7a7388","cdnUrl":"https://cdn.3dassets.dev/assets/33946/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-station-pylon-sign-bc7a7388","thumbnailUrl":"https://cdn.3dassets.dev/assets/33946/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33946/v1/poster.webp","blurhash":"U78z_c-;0000_Nx]8{9F_3xb9FIU8{ae.8o|","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":27932,"triangles":704,"vertices":1557,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.8499759608644859,-0.000023807079476710624,-0.3499710150014151],"max":[0.8499759608644859,6.300000190734863,0.3499710150014151]},"sizeMeters":[1.7,6.3,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:29.431Z","updatedAt":"2026-09-11T05:43:29.536Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33946/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationPylonSignPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33946/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33946/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33946/v1/model.glb\" alt=\"Station pylon sign (Petrol Station and Forecourt Shop)\" 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/33946/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/33946/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33947","slug":"petrol-station-and-forecourt-shop-forecourt-paving-til-a21747fa","title":"Forecourt paving tile (Petrol Station and Forecourt Shop)","summary":"A 3 m square of forecourt tarmac with the painted markings on it: two walkway lines, a run of hatching and a drainage channel. The paint stands proud of the wearing course rather than sharing its plane, so a field of tiles never flickers.","description":"A 3 m square of forecourt tarmac with the painted markings on it: two walkway lines, a run of hatching and a drainage channel. The paint stands proud of the wearing course rather than sharing its plane, so a field of tiles never flickers. Dimensions 3.00 by 0.07 by 3.00 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: tile-left, tile-right, tile-front, tile-back (type forecourt-tile). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-paving-til-a21747fa","cdnUrl":"https://cdn.3dassets.dev/assets/33947/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-paving-til-a21747fa","thumbnailUrl":"https://cdn.3dassets.dev/assets/33947/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33947/v1/poster.webp","blurhash":"U39tJz-;00M{-;RjRjt800D*~qog9FxuWEIU","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":25492,"triangles":576,"vertices":1253,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.5,-0.000030213994933490917,-1.5],"max":[1.5,0.06807060561568035,1.5]},"sizeMeters":[3,0.068,3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:29.918Z","updatedAt":"2026-09-11T05:43:30.022Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33947/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForecourtPavingTilePetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33947/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33947/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33947/v1/model.glb\" alt=\"Forecourt paving tile (Petrol Station and Forecourt Shop)\" 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/33947/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/33947/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33948","slug":"petrol-station-and-forecourt-shop-air-and-water-tower-81ec4159","title":"Air and water tower (Petrol Station and Forecourt Shop)","summary":"The air and water pedestal: a painted cabinet on a concrete base with a pressure gauge head, a blank coin and keypad panel, a water tap with a bucket recess and the air line coiled on a side bracket.","description":"The air and water pedestal: a painted cabinet on a concrete base with a pressure gauge head, a blank coin and keypad panel, a water tap with a bucket recess and the air line coiled on a side bracket. Dimensions 0.83 by 1.85 by 0.64 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The coiled air line is static geometry; the retractable reel in this pack is the model with the turning drum. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-air-and-water-tower-81ec4159","cdnUrl":"https://cdn.3dassets.dev/assets/33948/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-air-and-water-tower-81ec4159","thumbnailUrl":"https://cdn.3dassets.dev/assets/33948/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33948/v1/poster.webp","blurhash":"U9D0iYxv00D$ExWB#qt700j;~Ce@I;oyxGRQ","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":43152,"triangles":924,"vertices":1990,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.4500095408434732,0.000020141627797669315,-0.3200201382005306],"max":[0.3799999952316284,1.850000023841858,0.3200201382005306]},"sizeMeters":[0.83,1.85,0.64],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:30.884Z","updatedAt":"2026-09-11T05:43:30.999Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33948/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AirAndWaterTowerPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33948/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33948/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33948/v1/model.glb\" alt=\"Air and water tower (Petrol Station and Forecourt Shop)\" 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/33948/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/33948/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33949","slug":"petrol-station-and-forecourt-shop-jet-wash-bay-frame-bd39f477","title":"Jet wash bay frame (Petrol Station and Forecourt Shop)","summary":"A self service jet wash bay: two columns on precast bases carrying a blank header, a boom arm over the bay with the lance lead hanging from it, the lance holstered with its trigger and guard, a blank instruction board and the painted bay edge.","description":"A self service jet wash bay: two columns on precast bases carrying a blank header, a boom arm over the bay with the lance lead hanging from it, the lance holstered with its trigger and guard, a blank instruction board and the painted bay edge. Dimensions 4.42 by 3.72 by 3.25 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The lance lead is static: a flexible hose is not reachable with a rigid node transform. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-jet-wash-bay-frame-bd39f477","cdnUrl":"https://cdn.3dassets.dev/assets/33949/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-jet-wash-bay-frame-bd39f477","thumbnailUrl":"https://cdn.3dassets.dev/assets/33949/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33949/v1/poster.webp","blurhash":"U8Bg9sDO00_L0=wHVD9#EdD-R6?X~T_1$%9a","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":65340,"triangles":1432,"vertices":3156,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-2.2100000381469727,-0.000050353631388590225,-1.650001496268493],"max":[2.2100000381469727,3.720079257585879,1.6001318896966803]},"sizeMeters":[4.42,3.72,3.25],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:30.899Z","updatedAt":"2026-09-11T05:43:31.016Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33949/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JetWashBayFramePetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33949/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33949/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33949/v1/model.glb\" alt=\"Jet wash bay frame (Petrol Station and Forecourt Shop)\" 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/33949/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/33949/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33950","slug":"petrol-station-and-forecourt-shop-vacuum-unit-8a7f2e9c","title":"Forecourt vacuum unit (Petrol Station and Forecourt Shop)","summary":"A coin operated forecourt vacuum: a painted column with a domed head and exhaust stack, a blank payment panel, and the suction hose coiled on a bracket with a real crevice nozzle on the end.","description":"A coin operated forecourt vacuum: a painted column with a domed head and exhaust stack, a blank payment panel, and the suction hose coiled on a bracket with a real crevice nozzle on the end. Dimensions 0.71 by 1.89 by 0.59 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The suction hose is static for the same reason as the fuel hoses. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-vacuum-unit-8a7f2e9c","cdnUrl":"https://cdn.3dassets.dev/assets/33950/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-vacuum-unit-8a7f2e9c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33950/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33950/v1/poster.webp","blurhash":"U79RRfwJ00FwvhWBKJt7:SXSB+v#0dae~Coz","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":40044,"triangles":848,"vertices":1803,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.3979264199733734,0.000009461098522289824,-0.2799905414154478],"max":[0.3100000023841858,1.8899999856948853,0.3107377588748932]},"sizeMeters":[0.708,1.89,0.591],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:31.241Z","updatedAt":"2026-09-11T05:43:31.338Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33950/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForecourtVacuumUnitPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33950/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33950/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33950/v1/model.glb\" alt=\"Forecourt vacuum unit (Petrol Station and Forecourt Shop)\" 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/33950/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/33950/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33951","slug":"petrol-station-and-forecourt-shop-screen-wash-bucket-s-1b306da2","title":"Screen wash bucket stand (Petrol Station and Forecourt Shop)","summary":"The screen wash stand beside the pumps: a steel frame on a drip tray with two wash buckets of coloured fluid and two squeegees hung on the rail, each with a rubber blade and a sponge head.","description":"The screen wash stand beside the pumps: a steel frame on a drip tray with two wash buckets of coloured fluid and two squeegees hung on the rail, each with a rubber blade and a sponge head. Dimensions 1.04 by 1.02 by 0.43 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The wash fluid is a solid coloured volume inside each bucket, not a simulated liquid. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-screen-wash-bucket-s-1b306da2","cdnUrl":"https://cdn.3dassets.dev/assets/33951/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-screen-wash-bucket-s-1b306da2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33951/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33951/v1/poster.webp","blurhash":"U9AdP~WT00V[~ot74pM{H[a_tjV]Dnt7%YIn","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":50636,"triangles":1120,"vertices":2460,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5199999809265137,0.000008545755461421278,-0.18001754383243074],"max":[0.5199999809265137,1.0199999809265137,0.25001753667987336]},"sizeMeters":[1.04,1.02,0.43],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:32.650Z","updatedAt":"2026-09-11T05:43:32.838Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33951/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScreenWashBucketStandPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33951/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33951/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33951/v1/model.glb\" alt=\"Screen wash bucket stand (Petrol Station and Forecourt Shop)\" 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/33951/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/33951/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33953","slug":"petrol-station-and-forecourt-shop-fire-point-cabinet-3b99e7b1","title":"Fire point cabinet (Petrol Station and Forecourt Shop)","summary":"The forecourt fire point: a red cabinet on a post with a glazed door on a real hinge and an extinguisher inside, carrying its own handle and discharge hose. The door swings on its left stile.","description":"The forecourt fire point: a red cabinet on a post with a glazed door on a real hinge and an extinguisher inside, carrying its own handle and discharge hose. The door swings on its left stile. Dimensions 0.50 by 1.50 by 0.30 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: fire-door. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-fire-point-cabinet-3b99e7b1","cdnUrl":"https://cdn.3dassets.dev/assets/33953/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-fire-point-cabinet-3b99e7b1","thumbnailUrl":"https://cdn.3dassets.dev/assets/33953/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33953/v1/poster.webp","blurhash":"UHAS70WV0yso}ZbH5ljFbuaye.kCJ*aywfkC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":854,"vertices":1927,"meshes":8,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.25001799674998504,-0.0000012518320359165835,-0.13998198894490022],"max":[0.25001799674998504,1.5,0.15900173806871842]},"sizeMeters":[0.5,1.5,0.299],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:33.694Z","updatedAt":"2026-09-11T05:43:33.897Z","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/33953/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 FirePointCabinetPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33953/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/33953/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33953/v1/model.glb\" alt=\"Fire point cabinet (Petrol Station and Forecourt Shop)\" 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/33953/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/33953/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33952","slug":"petrol-station-and-forecourt-shop-spill-kit-bin-dfacf958","title":"Spill kit bin (Petrol Station and Forecourt Shop)","summary":"A granule spill kit bin in hazard amber with a back hinged lid, a dark kick band, a blank hazard plate and grab handles on both flanks.","description":"A granule spill kit bin in hazard amber with a back hinged lid, a dark kick band, a blank hazard plate and grab handles on both flanks. Dimensions 0.71 by 0.87 by 0.55 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: spill-lid. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-spill-kit-bin-dfacf958","cdnUrl":"https://cdn.3dassets.dev/assets/33952/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-spill-kit-bin-dfacf958","thumbnailUrl":"https://cdn.3dassets.dev/assets/33952/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33952/v1/poster.webp","blurhash":"U9GRe9~T015Q-+t6RRM}03I;^PVf05nT.5Sx","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":23740,"triangles":456,"vertices":1024,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3540000021457672,0,-0.2750039774083527],"max":[0.3540000021457672,0.869995723832331,0.2760092697196998]},"sizeMeters":[0.708,0.87,0.551],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:33.601Z","updatedAt":"2026-09-11T05:43:33.708Z","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/33952/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 SpillKitBinPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33952/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/33952/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33952/v1/model.glb\" alt=\"Spill kit bin (Petrol Station and Forecourt Shop)\" 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/33952/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/33952/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33954","slug":"petrol-station-and-forecourt-shop-tanker-fill-point-co-a2a23449","title":"Tanker fill point cover (Petrol Station and Forecourt Shop)","summary":"The tank fill point a delivery tanker connects to: a kerbed chamber flush with the paving, a hinged steel cover with a colour coded grade ring and a lifting handle, and the sealed riser cap underneath.","description":"The tank fill point a delivery tanker connects to: a kerbed chamber flush with the paving, a hinged steel cover with a colour coded grade ring and a lifting handle, and the sealed riser cap underneath. Dimensions 0.90 by 0.19 by 0.90 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: fill-cover. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-tanker-fill-point-co-a2a23449","cdnUrl":"https://cdn.3dassets.dev/assets/33954/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-tanker-fill-point-co-a2a23449","thumbnailUrl":"https://cdn.3dassets.dev/assets/33954/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33954/v1/poster.webp","blurhash":"UMC?.UxuDiWB9FWBxuoL00RjtQjb~Ws:NZa}","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":33564,"triangles":664,"vertices":1419,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.44999998807907104,0.000012818021993044049,-0.44999998807907104],"max":[0.44999998807907104,0.18599765580168992,0.44999998807907104]},"sizeMeters":[0.9,0.186,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:32.897Z","updatedAt":"2026-09-11T05:43:32.998Z","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/33954/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 TankerFillPointCoverPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33954/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/33954/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33954/v1/model.glb\" alt=\"Tanker fill point cover (Petrol Station and Forecourt Shop)\" 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/33954/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/33954/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33955","slug":"petrol-station-and-forecourt-shop-forecourt-bollard-38259649","title":"Forecourt bollard (Petrol Station and Forecourt Shop)","summary":"A standalone steel bollard on a root plinth with a hazard band and a domed cap, for protecting a fill point, a corner or the shop front.","description":"A standalone steel bollard on a root plinth with a hazard band and a domed cap, for protecting a fill point, a corner or the shop front. Dimensions 0.34 by 1.01 by 0.34 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-bollard-38259649","cdnUrl":"https://cdn.3dassets.dev/assets/33955/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-bollard-38259649","thumbnailUrl":"https://cdn.3dassets.dev/assets/33955/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33955/v1/poster.webp","blurhash":"U69Qjd%M009Z00Rj?ct8_4t7DiRPIxWD$^xY","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":13980,"triangles":288,"vertices":589,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.17000000178813934,0.000012511602910516423,-0.17000000178813934],"max":[0.17000000178813934,1.0099999904632568,0.17000000178813934]},"sizeMeters":[0.34,1.01,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:34.435Z","updatedAt":"2026-09-11T05:43:34.543Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33955/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForecourtBollardPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33955/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33955/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33955/v1/model.glb\" alt=\"Forecourt bollard (Petrol Station and Forecourt Shop)\" 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/33955/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/33955/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33956","slug":"petrol-station-and-forecourt-shop-forecourt-canopy-sec-ca00675b","title":"Forecourt canopy section, amber livery (Petrol Station and Forecourt Shop)","summary":"The same canopy bay in the amber house colour, for a second operator on the same road or a station rebranded mid project. Geometry, ports and clearance are identical to the green section.","description":"The same canopy bay in the amber house colour, for a second operator on the same road or a station rebranded mid project. Geometry, ports and clearance are identical to the green section. Dimensions 6.04 by 5.50 by 6.04 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: canopy-left, canopy-right, canopy-front, canopy-back (type canopy). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-canopy-sec-ca00675b","cdnUrl":"https://cdn.3dassets.dev/assets/33956/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-canopy-sec-ca00675b","thumbnailUrl":"https://cdn.3dassets.dev/assets/33956/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33956/v1/poster.webp","blurhash":"UcEfD@t6D%ax~poeM_j[R.WCjYj[9aWBR.WX","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":69564,"triangles":1536,"vertices":3463,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-3.0179998874664307,0.000009461098522289824,-3.0179998874664307],"max":[3.0179998874664307,5.499913025228226,3.0179998874664307]},"sizeMeters":[6.036,5.5,6.036],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:35.587Z","updatedAt":"2026-09-11T05:43:35.690Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33956/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForecourtCanopySectionAmberLiveryPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33956/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33956/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33956/v1/model.glb\" alt=\"Forecourt canopy section, amber livery (Petrol Station and Forecourt Shop)\" 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/33956/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/33956/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33957","slug":"petrol-station-and-forecourt-shop-price-totem-sign-amb-4562735c","title":"Price totem sign, amber livery (Petrol Station and Forecourt Shop)","summary":"The price totem in the amber livery, with the grade tabs swapped to match. Still wordless on both faces.","description":"The price totem in the amber livery, with the grade tabs swapped to match. Still wordless on both faces. Dimensions 1.50 by 3.90 by 0.41 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-price-totem-sign-amb-4562735c","cdnUrl":"https://cdn.3dassets.dev/assets/33957/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-price-totem-sign-amb-4562735c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33957/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33957/v1/poster.webp","blurhash":"U68XFA-;0001~pxu4o9G%MofM{RjD*of%MRi","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":514640,"triangles":12224,"vertices":27659,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.7498993072561572,0,-0.20698723400261607],"max":[0.7498993072561572,3.9000000953674316,0.20698723400261607]},"sizeMeters":[1.5,3.9,0.414],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:36.506Z","updatedAt":"2026-09-11T05:43:36.606Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33957/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PriceTotemSignAmberLiveryPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33957/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33957/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33957/v1/model.glb\" alt=\"Price totem sign, amber livery (Petrol Station and Forecourt Shop)\" 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/33957/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/33957/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33958","slug":"petrol-station-and-forecourt-shop-shop-facade-bay-glaz-d2751295","title":"Shop facade bay, glazed (Petrol Station and Forecourt Shop)","summary":"A 1.5 m glazed shopfront bay: pilasters with accent reveals, a precast cill, a full height pane in a steel frame, a spandrel panel and a blank signband over it. Couple the bays on their jambs to build a shop of any width.","description":"A 1.5 m glazed shopfront bay: pilasters with accent reveals, a precast cill, a full height pane in a steel frame, a spandrel panel and a blank signband over it. Couple the bays on their jambs to build a shop of any width. Dimensions 1.50 by 3.22 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: bay-left, bay-right (type shop-bay). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-facade-bay-glaz-d2751295","cdnUrl":"https://cdn.3dassets.dev/assets/33958/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-facade-bay-glaz-d2751295","thumbnailUrl":"https://cdn.3dassets.dev/assets/33958/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33958/v1/poster.webp","blurhash":"U3CG[C7,00{rC~.7zD0000=P}]0]AD%N^78_","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":41136,"triangles":896,"vertices":2010,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500717296742082,0,-0.14502395842696517],"max":[0.7500717296742082,3.2200000286102295,0.16496124278983537]},"sizeMeters":[1.5,3.22,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:36.534Z","updatedAt":"2026-09-11T05:43:36.638Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33958/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopFacadeBayGlazedPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33958/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33958/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33958/v1/model.glb\" alt=\"Shop facade bay, glazed (Petrol Station and Forecourt Shop)\" 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/33958/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/33958/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33959","slug":"petrol-station-and-forecourt-shop-shop-facade-bay-door-7dcc2735","title":"Shop facade bay, entrance (Petrol Station and Forecourt Shop)","summary":"The entrance bay: the same 1.5 m shell with a lined opening, a transom light and a glazed door on a real hinge with a full height pull. The leaf swings out on its left stile.","description":"The entrance bay: the same 1.5 m shell with a lined opening, a transom light and a glazed door on a real hinge with a full height pull. The leaf swings out on its left stile. Dimensions 1.50 by 3.22 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: shop-door. Connectors: bay-left, bay-right (type shop-bay). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-facade-bay-door-7dcc2735","cdnUrl":"https://cdn.3dassets.dev/assets/33959/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-facade-bay-door-7dcc2735","thumbnailUrl":"https://cdn.3dassets.dev/assets/33959/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33959/v1/poster.webp","blurhash":"U8Aw;lAV00}Gp^x]MKIAD$w|r]JQK1tQ$QIU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":63532,"triangles":1376,"vertices":3124,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7500717296742082,0,-0.14502395842696517],"max":[0.7500717296742082,3.2200000286102295,0.16496124278983537]},"sizeMeters":[1.5,3.22,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:37.150Z","updatedAt":"2026-09-11T05:43:37.255Z","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/33959/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 ShopFacadeBayEntrancePetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33959/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/33959/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33959/v1/model.glb\" alt=\"Shop facade bay, entrance (Petrol Station and Forecourt Shop)\" 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/33959/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/33959/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33960","slug":"petrol-station-and-forecourt-shop-shop-facade-bay-soli-93616857","title":"Shop facade bay, solid (Petrol Station and Forecourt Shop)","summary":"The blank flank bay: a rendered panel between the same pilasters with a recessed louvre vent and a kick band, for the sides and back of the shop and for the stretches a shopfront does not glaze.","description":"The blank flank bay: a rendered panel between the same pilasters with a recessed louvre vent and a kick band, for the sides and back of the shop and for the stretches a shopfront does not glaze. Dimensions 1.50 by 3.22 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: bay-left, bay-right (type shop-bay). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-facade-bay-soli-93616857","cdnUrl":"https://cdn.3dassets.dev/assets/33960/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-facade-bay-soli-93616857","thumbnailUrl":"https://cdn.3dassets.dev/assets/33960/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33960/v1/poster.webp","blurhash":"U8Ca9+G600;CXjxuV@D%00xJ}]Im.8tRIAIA","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":57240,"triangles":1280,"vertices":2813,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500717296742082,0,-0.14504593164551832],"max":[0.7500717296742082,3.2200000286102295,0.16496124278983537]},"sizeMeters":[1.5,3.22,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:37.288Z","updatedAt":"2026-09-11T05:43:37.386Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33960/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopFacadeBaySolidPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33960/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33960/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33960/v1/model.glb\" alt=\"Shop facade bay, solid (Petrol Station and Forecourt Shop)\" 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/33960/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/33960/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33961","slug":"petrol-station-and-forecourt-shop-shop-roof-panel-3083d2ea","title":"Shop roof panel (Petrol Station and Forecourt Shop)","summary":"A 1.5 m square membrane roof deck module on the same grid as the facade bays, dark against the walls with one wide standing seam across it. Lay a field of them just below the signband so the band reads as the parapet round the roof.","description":"A 1.5 m square membrane roof deck module on the same grid as the facade bays, dark against the walls with one wide standing seam across it. Lay a field of them just below the signband so the band reads as the parapet round the roof. Dimensions 1.50 by 0.14 by 1.50 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: roof-left, roof-right, roof-front, roof-back (type shop-roof). Place the panels at 3.0 m, 200 mm under the top of the bays, so the facade signband stands proud of the deck as a parapet. The module rests on y=0 like every other piece. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-roof-panel-3083d2ea","cdnUrl":"https://cdn.3dassets.dev/assets/33961/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-roof-panel-3083d2ea","thumbnailUrl":"https://cdn.3dassets.dev/assets/33961/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33961/v1/poster.webp","blurhash":"U49Qp$%N00WB-;RjRixu00IU~qj]4TxvxHIA","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":7324,"triangles":128,"vertices":289,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.00001068222337465008,-0.75],"max":[0.75,0.1350237321446581,0.75]},"sizeMeters":[1.5,0.135,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:38.148Z","updatedAt":"2026-09-11T05:43:38.272Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33961/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopRoofPanelPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33961/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33961/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33961/v1/model.glb\" alt=\"Shop roof panel (Petrol Station and Forecourt Shop)\" 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/33961/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/33961/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33962","slug":"petrol-station-and-forecourt-shop-roof-plant-unit-e72a63c5","title":"Roof plant unit (Petrol Station and Forecourt Shop)","summary":"The air conditioning condenser these shops carry on the roof: a cased unit on anti vibration rails with an accent band, a guarded fan cowl, coil louvres down both flanks and the refrigerant pipes leaving the base.","description":"The air conditioning condenser these shops carry on the roof: a cased unit on anti vibration rails with an accent band, a guarded fan cowl, coil louvres down both flanks and the refrigerant pipes leaving the base. Dimensions 1.34 by 1.05 by 1.02 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The fan is modelled behind its guard and does not turn; the guard would have to lift for a clip to read. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-roof-plant-unit-e72a63c5","cdnUrl":"https://cdn.3dassets.dev/assets/33962/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-roof-plant-unit-e72a63c5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33962/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33962/v1/poster.webp","blurhash":"U79*7Dt700My~DxuIUM{D5soRiNGATt7xIIU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":60112,"triangles":1392,"vertices":3057,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5849999785423279,-0.000012290577072526787,-0.36702756183273383],"max":[0.7544249296188354,1.0550122381249851,0.6505812144088117]},"sizeMeters":[1.339,1.055,1.018],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:38.228Z","updatedAt":"2026-09-11T05:43:38.339Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33962/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofPlantUnitPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33962/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33962/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33962/v1/model.glb\" alt=\"Roof plant unit (Petrol Station and Forecourt Shop)\" 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/33962/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/33962/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33963","slug":"petrol-station-and-forecourt-shop-roof-vent-cowl-1901c168","title":"Roof vent cowl (Petrol Station and Forecourt Shop)","summary":"A kerbed extract stack with a weather hat and a coloured band, for the kitchen and toilet vents on a shop roof.","description":"A kerbed extract stack with a weather hat and a coloured band, for the kitchen and toilet vents on a shop roof. Dimensions 0.56 by 0.65 by 0.55 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-roof-vent-cowl-1901c168","cdnUrl":"https://cdn.3dassets.dev/assets/33963/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-roof-vent-cowl-1901c168","thumbnailUrl":"https://cdn.3dassets.dev/assets/33963/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33963/v1/poster.webp","blurhash":"U79aKqxv00IA?bj]D%WA00WB_NkC00WB~Ws;","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":13352,"triangles":268,"vertices":560,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2800000011920929,0.00001571906427150216,-0.27576159057802146],"max":[0.2800000011920929,0.6499999910593033,0.27576159057802146]},"sizeMeters":[0.56,0.65,0.552],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:39.835Z","updatedAt":"2026-09-11T05:43:39.954Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33963/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofVentCowlPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33963/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33963/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33963/v1/model.glb\" alt=\"Roof vent cowl (Petrol Station and Forecourt Shop)\" 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/33963/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/33963/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33964","slug":"petrol-station-and-forecourt-shop-shop-wall-panel-e781bd52","title":"Shop wall panel (Petrol Station and Forecourt Shop)","summary":"A 1.5 m lined internal wall module at full bay height, with a skirting and a picture rail in the accent colour. Couple them on their stiles for the back of house wall and internal partitions.","description":"A 1.5 m lined internal wall module at full bay height, with a skirting and a picture rail in the accent colour. Couple them on their stiles for the back of house wall and internal partitions. Dimensions 1.50 by 3.20 by 0.12 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: wall-left, wall-right (type shop-wall). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-wall-panel-e781bd52","cdnUrl":"https://cdn.3dassets.dev/assets/33964/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-wall-panel-e781bd52","thumbnailUrl":"https://cdn.3dassets.dev/assets/33964/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33964/v1/poster.webp","blurhash":"UFC%Q%%M00D%~W%M4.D%9FWB-;kVJ6R%w|xa","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":13620,"triangles":256,"vertices":578,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500717296742082,0,-0.050001526670554595],"max":[0.7500717296742082,3.200000047683716,0.07250834602256513]},"sizeMeters":[1.5,3.2,0.123],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:39.112Z","updatedAt":"2026-09-11T05:43:39.223Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33964/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopWallPanelPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33964/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33964/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33964/v1/model.glb\" alt=\"Shop wall panel (Petrol Station and Forecourt Shop)\" 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/33964/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/33964/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33965","slug":"petrol-station-and-forecourt-shop-shop-floor-tile-0496b275","title":"Shop floor tile (Petrol Station and Forecourt Shop)","summary":"A 1.5 m square of shop floor on the bay grid: a vinyl field with a proud jointing border and a centre inlay, sized so a floor and a roof are the same count of modules.","description":"A 1.5 m square of shop floor on the bay grid: a vinyl field with a proud jointing border and a centre inlay, sized so a floor and a roof are the same count of modules. Dimensions 1.50 by 0.04 by 1.50 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: tile-left, tile-right, tile-front, tile-back (type shop-floor). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-floor-tile-0496b275","cdnUrl":"https://cdn.3dassets.dev/assets/33965/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-floor-tile-0496b275","thumbnailUrl":"https://cdn.3dassets.dev/assets/33965/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33965/v1/poster.webp","blurhash":"U9DJVD%M00oLa}ayoLj[00M{_NWBoJofWVay","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":18240,"triangles":384,"vertices":852,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.000012894144759415666,-0.75],"max":[0.75,0.04301501576405502,0.75]},"sizeMeters":[1.5,0.043,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:39.814Z","updatedAt":"2026-09-11T05:43:39.939Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33965/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopFloorTilePetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33965/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33965/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33965/v1/model.glb\" alt=\"Shop floor tile (Petrol Station and Forecourt Shop)\" 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/33965/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/33965/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33966","slug":"petrol-station-and-forecourt-shop-shop-counter-with-ti-fd81d9fb","title":"Shop counter with till (Petrol Station and Forecourt Shop)","summary":"A 2.4 m serving counter: a dark worktop over a painted carcass with an accent reveal, a till on a raised plate, a customer facing screen on a stub column, a card reader on a gooseneck, a stocked impulse display, a bag rail and a cash drawer on runners.","description":"A 2.4 m serving counter: a dark worktop over a painted carcass with an accent reveal, a till on a raised plate, a customer facing screen on a stub column, a card reader on a gooseneck, a stocked impulse display, a bag rail and a cash drawer on runners. Dimensions 2.46 by 1.52 by 0.82 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: till-drawer. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-counter-with-ti-fd81d9fb","cdnUrl":"https://cdn.3dassets.dev/assets/33966/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-counter-with-ti-fd81d9fb","thumbnailUrl":"https://cdn.3dassets.dev/assets/33966/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33966/v1/poster.webp","blurhash":"U9E3VT9s00~qH@-;o|ja00VZogIopaInMeDi","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":86828,"triangles":1936,"vertices":4324,"meshes":8,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.2300000190734863,0.000038443436958579547,-0.4049949707261527],"max":[1.2300000190734863,1.5245222464891888,0.4109983045381473]},"sizeMeters":[2.46,1.524,0.816],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:40.145Z","updatedAt":"2026-09-11T05:43:40.257Z","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/33966/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 ShopCounterWithTillPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33966/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/33966/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33966/v1/model.glb\" alt=\"Shop counter with till (Petrol Station and Forecourt Shop)\" 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/33966/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/33966/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33967","slug":"petrol-station-and-forecourt-shop-cigarette-gantry-521fef7f","title":"Cigarette gantry (Petrol Station and Forecourt Shop)","summary":"The shuttered gantry that stands behind the counter: five stocked shelves in a dark frame under a blank accent header, closed by two sliding shutter leaves. One leaf is rigged and runs sideways in the head track.","description":"The shuttered gantry that stands behind the counter: five stocked shelves in a dark frame under a blank accent header, closed by two sliding shutter leaves. One leaf is rigged and runs sideways in the head track. Dimensions 2.26 by 2.27 by 0.38 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: gantry-door. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-cigarette-gantry-521fef7f","cdnUrl":"https://cdn.3dassets.dev/assets/33967/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-cigarette-gantry-521fef7f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33967/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33967/v1/poster.webp","blurhash":"UA8;_Mxu00M}uhx[iJMx5kXl-An4t7k;R*VF","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":259636,"triangles":6016,"vertices":13579,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.1299999952316284,-0.00007100159420425634,-0.1899484229174416],"max":[1.1299999952316284,2.269941065434181,0.1899484229174416]},"sizeMeters":[2.26,2.27,0.38],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:41.821Z","updatedAt":"2026-09-11T05:43:41.916Z","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/33967/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 CigaretteGantryPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33967/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/33967/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33967/v1/model.glb\" alt=\"Cigarette gantry (Petrol Station and Forecourt Shop)\" 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/33967/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/33967/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33970","slug":"petrol-station-and-forecourt-shop-drinks-chiller-f745bb13","title":"Glass door drinks chiller (Petrol Station and Forecourt Shop)","summary":"A 1.8 m two door multideck drinks chiller: five stocked shelves with accent price rails, a lit blank header canopy and two glazed doors, each hinged on its outer stile and rigged to open.","description":"A 1.8 m two door multideck drinks chiller: five stocked shelves with accent price rails, a lit blank header canopy and two glazed doors, each hinged on its outer stile and rigged to open. Dimensions 1.82 by 2.02 by 0.81 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: fridge-door-left, fridge-door-right. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-drinks-chiller-f745bb13","cdnUrl":"https://cdn.3dassets.dev/assets/33970/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-drinks-chiller-f745bb13","thumbnailUrl":"https://cdn.3dassets.dev/assets/33970/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33970/v1/poster.webp","blurhash":"UBDTO$IA00ozqE%MQnD*00%g-VIA%MJ6Rj$Q","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":227200,"triangles":5568,"vertices":12545,"meshes":12,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.9100000262260437,0.00001495622163703858,-0.39994233154335934],"max":[0.9100000262260437,2.020006204316198,0.4109866705697771]},"sizeMeters":[1.82,2.02,0.811],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:42.824Z","updatedAt":"2026-09-11T05:43:42.955Z","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/33970/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 GlassDoorDrinksChillerPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33970/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/33970/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33970/v1/model.glb\" alt=\"Glass door drinks chiller (Petrol Station and Forecourt Shop)\" 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/33970/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/33970/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33968","slug":"petrol-station-and-forecourt-shop-snack-gondola-1800-f03bcc47","title":"Snack gondola, 1.8 m (Petrol Station and Forecourt Shop)","summary":"A double sided snack shelving gondola at full height: four stocked shelves a side with accent price rails, on a plinth with a blank header board. Run them end to end for an aisle.","description":"A double sided snack shelving gondola at full height: four stocked shelves a side with accent price rails, on a plinth with a blank header board. Run them end to end for an aisle. Dimensions 1.29 by 1.96 by 0.90 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-snack-gondola-1800-f03bcc47","cdnUrl":"https://cdn.3dassets.dev/assets/33968/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-snack-gondola-1800-f03bcc47","thumbnailUrl":"https://cdn.3dassets.dev/assets/33968/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33968/v1/poster.webp","blurhash":"U9CQ3z?F00D-t+xuR5IA00I@~BwGIpWExur?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":245980,"triangles":5760,"vertices":12935,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6450529671346177,0,-0.4500335703604236],"max":[0.6450529671346177,1.9600000381469727,0.4500335703604236]},"sizeMeters":[1.29,1.96,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:41.767Z","updatedAt":"2026-09-11T05:43:41.859Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33968/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SnackGondola18MPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33968/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33968/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33968/v1/model.glb\" alt=\"Snack gondola, 1.8 m (Petrol Station and Forecourt Shop)\" 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/33968/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/33968/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33969","slug":"petrol-station-and-forecourt-shop-snack-gondola-1200-59981ceb","title":"Snack gondola, 1.2 m (Petrol Station and Forecourt Shop)","summary":"The low run of the same gondola at 1.2 m with three shelves a side, for the middle of a small shop where a customer has to see the counter over the fixtures.","description":"The low run of the same gondola at 1.2 m with three shelves a side, for the middle of a small shop where a customer has to see the counter over the fixtures. Dimensions 1.29 by 1.36 by 0.90 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-snack-gondola-1200-59981ceb","cdnUrl":"https://cdn.3dassets.dev/assets/33969/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-snack-gondola-1200-59981ceb","thumbnailUrl":"https://cdn.3dassets.dev/assets/33969/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33969/v1/poster.webp","blurhash":"UACs,9?a00IXyVx[R5D%00OF~UR49vNv%M-B","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":183620,"triangles":4288,"vertices":9619,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6449999809265137,-0.00002165837098289103,-0.4500335703604236],"max":[0.6449999809265137,1.360044089523325,0.4500335703604236]},"sizeMeters":[1.29,1.36,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:42.809Z","updatedAt":"2026-09-11T05:43:42.938Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33969/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SnackGondola12MPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33969/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33969/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33969/v1/model.glb\" alt=\"Snack gondola, 1.2 m (Petrol Station and Forecourt Shop)\" 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/33969/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/33969/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33971","slug":"petrol-station-and-forecourt-shop-coffee-machine-stati-0548e2cc","title":"Coffee machine station (Petrol Station and Forecourt Shop)","summary":"A bean to cup coffee station: a counter unit with an accent reveal carrying the machine, its touch panel, two glass bean hoppers, a dispensing head over a grated drip tray, cup stacks, a lid pot and a stirrer tray.","description":"A bean to cup coffee station: a counter unit with an accent reveal carrying the machine, its touch panel, two glass bean hoppers, a dispensing head over a grated drip tray, cup stacks, a lid pot and a stirrer tray. Dimensions 0.99 by 1.87 by 0.69 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-coffee-machine-stati-0548e2cc","cdnUrl":"https://cdn.3dassets.dev/assets/33971/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-coffee-machine-stati-0548e2cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/33971/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33971/v1/poster.webp","blurhash":"UIBzOatR00RPDis:x[NG4nWB%Mof_NW:D%nk","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58676,"triangles":1280,"vertices":2792,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.4950000047683716,0,-0.3450059544328156],"max":[0.4950000047683716,1.8699984943919572,0.34698931621270784]},"sizeMeters":[0.99,1.87,0.692],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:44.404Z","updatedAt":"2026-09-11T05:43:44.505Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33971/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoffeeMachineStationPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33971/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33971/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33971/v1/model.glb\" alt=\"Coffee machine station (Petrol Station and Forecourt Shop)\" 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/33971/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/33971/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33972","slug":"petrol-station-and-forecourt-shop-hot-food-cabinet-b778bb4c","title":"Hot food cabinet (Petrol Station and Forecourt Shop)","summary":"A heated grab and go display on a stainless base: two stocked shelves behind curved glazing under a lit blank header, with a glazed crew door at the back on a real hinge.","description":"A heated grab and go display on a stainless base: two stocked shelves behind curved glazing under a lit blank header, with a glazed crew door at the back on a real hinge. Dimensions 0.92 by 1.67 by 0.64 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: hot-door. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-hot-food-cabinet-b778bb4c","cdnUrl":"https://cdn.3dassets.dev/assets/33972/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-hot-food-cabinet-b778bb4c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33972/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33972/v1/poster.webp","blurhash":"UCA,?_?b004n~qxb9FIUR.V[WAoyM}g2xZr@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":72596,"triangles":1632,"vertices":3672,"meshes":9,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46000000834465027,0.000009765377782695872,-0.31999786821142856],"max":[0.46000000834465027,1.6699999570846558,0.3219954139410414]},"sizeMeters":[0.92,1.67,0.642],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:43.480Z","updatedAt":"2026-09-11T05:43:43.576Z","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/33972/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 HotFoodCabinetPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33972/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/33972/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33972/v1/model.glb\" alt=\"Hot food cabinet (Petrol Station and Forecourt Shop)\" 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/33972/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/33972/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33973","slug":"petrol-station-and-forecourt-shop-newspaper-rack-59b158c5","title":"Newspaper and magazine rack (Petrol Station and Forecourt Shop)","summary":"A four tier sloping paper rack with accent retaining rails and a blank header, stocked with papers and magazines. Wordless covers, so nothing in the shop names a real title.","description":"A four tier sloping paper rack with accent retaining rails and a blank header, stocked with papers and magazines. Wordless covers, so nothing in the shop names a real title. Dimensions 1.02 by 1.49 by 0.54 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-newspaper-rack-59b158c5","cdnUrl":"https://cdn.3dassets.dev/assets/33973/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-newspaper-rack-59b158c5","thumbnailUrl":"https://cdn.3dassets.dev/assets/33973/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33973/v1/poster.webp","blurhash":"UABzg|NG00-ou4n*Q-R*00nO~VS$X5WUr^s:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59860,"triangles":1344,"vertices":2959,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5100227398068831,0.000010682223374657018,-0.250038148136845],"max":[0.5100227398068831,1.4900000095367432,0.2880272160117636]},"sizeMeters":[1.02,1.49,0.538],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:44.543Z","updatedAt":"2026-09-11T05:43:44.655Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33973/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NewspaperAndMagazineRackPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33973/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33973/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33973/v1/model.glb\" alt=\"Newspaper and magazine rack (Petrol Station and Forecourt Shop)\" 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/33973/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/33973/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33974","slug":"petrol-station-and-forecourt-shop-ice-cream-freezer-2df75916","title":"Ice cream chest freezer (Petrol Station and Forecourt Shop)","summary":"A glass lid ice cream chest: a painted body with an accent band and a lit blank panel, a divided and stocked well, and a framed glass lid on its back hinge.","description":"A glass lid ice cream chest: a painted body with an accent band and a lit blank panel, a divided and stocked well, and a framed glass lid on its back hinge. Dimensions 1.12 by 0.96 by 0.89 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: freezer-lid. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-ice-cream-freezer-2df75916","cdnUrl":"https://cdn.3dassets.dev/assets/33974/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-ice-cream-freezer-2df75916","thumbnailUrl":"https://cdn.3dassets.dev/assets/33974/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33974/v1/poster.webp","blurhash":"UDF6OZ_N00n,Vtxu%MS100Di?HayOoIoIUsB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":48720,"triangles":1024,"vertices":2304,"meshes":9,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5600000023841858,-0.000006252855483591946,-0.5399807848520838],"max":[0.5600000023841858,0.9650041852966958,0.35198076610975637]},"sizeMeters":[1.12,0.965,0.892],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:44.615Z","updatedAt":"2026-09-11T05:43:44.705Z","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/33974/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 IceCreamChestFreezerPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33974/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/33974/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33974/v1/model.glb\" alt=\"Ice cream chest freezer (Petrol Station and Forecourt Shop)\" 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/33974/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/33974/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33975","slug":"petrol-station-and-forecourt-shop-basket-stack-40e2ce9c","title":"Shopping basket stack (Petrol Station and Forecourt Shop)","summary":"A nest of seven shopping baskets in alternating colours on a low dolly, with the folding carry handles modelled on each.","description":"A nest of seven shopping baskets in alternating colours on a low dolly, with the folding carry handles modelled on each. Dimensions 0.52 by 0.81 by 0.40 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-basket-stack-40e2ce9c","cdnUrl":"https://cdn.3dassets.dev/assets/33975/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-basket-stack-40e2ce9c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33975/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33975/v1/poster.webp","blurhash":"UEEVv4-.00D+~Tt69cRkDRRkk:oz$ys.M~NH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":64876,"triangles":1488,"vertices":3271,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.26001036644564485,0,-0.20002318649156636],"max":[0.26001036644564485,0.8119999766349792,0.20002318649156636]},"sizeMeters":[0.52,0.812,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:46.462Z","updatedAt":"2026-09-11T05:43:46.575Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33975/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShoppingBasketStackPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33975/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33975/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33975/v1/model.glb\" alt=\"Shopping basket stack (Petrol Station and Forecourt Shop)\" 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/33975/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/33975/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33976","slug":"petrol-station-and-forecourt-shop-queue-rail-cc666e73","title":"Queue rail post pair (Petrol Station and Forecourt Shop)","summary":"A pair of weighted belt posts with the webbing tape drawn between them, for the queue in front of the counter. Place them end to end for a longer run.","description":"A pair of weighted belt posts with the webbing tape drawn between them, for the queue in front of the counter. Place them end to end for a longer run. Dimensions 1.72 by 0.95 by 0.32 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-queue-rail-cc666e73","cdnUrl":"https://cdn.3dassets.dev/assets/33976/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-queue-rail-cc666e73","thumbnailUrl":"https://cdn.3dassets.dev/assets/33976/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33976/v1/poster.webp","blurhash":"U57-[^tQ*~%Nc=?uMKH@8wI.OqVYL$?b*IIT","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22840,"triangles":512,"vertices":1063,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.8600000143051147,0.0000013594714040054967,-0.15999511969981933],"max":[0.8600000143051147,0.949998628607667,0.15999511969981933]},"sizeMeters":[1.72,0.95,0.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:46.094Z","updatedAt":"2026-09-11T05:43:46.195Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33976/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QueueRailPostPairPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33976/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33976/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33976/v1/model.glb\" alt=\"Queue rail post pair (Petrol Station and Forecourt Shop)\" 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/33976/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/33976/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33977","slug":"petrol-station-and-forecourt-shop-ceiling-light-bar-61d6a7f3","title":"Ceiling light bar (Petrol Station and Forecourt Shop)","summary":"A 1.45 m suspended light bar with a lit lens, a white housing and two drop rods ending in ceiling plates.","description":"A 1.45 m suspended light bar with a lit lens, a white housing and two drop rods ending in ceiling plates. Dimensions 1.54 by 0.33 by 0.21 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The model rests on its lens at y=0; hang it by placing it so the plates at the top of the rods meet the soffit. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-ceiling-light-bar-61d6a7f3","cdnUrl":"https://cdn.3dassets.dev/assets/33977/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-ceiling-light-bar-61d6a7f3","thumbnailUrl":"https://cdn.3dassets.dev/assets/33977/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33977/v1/poster.webp","blurhash":"U9CGc6x]00oz9F?v%M9Z00Dj~q%2_3008_^+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23508,"triangles":464,"vertices":1068,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7699999809265137,0.00004196250230546067,-0.10499465666004405],"max":[0.7699999809265137,0.33198360355163503,0.10499465666004405]},"sizeMeters":[1.54,0.332,0.21],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:47.271Z","updatedAt":"2026-09-11T05:43:47.391Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33977/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CeilingLightBarPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33977/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33977/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33977/v1/model.glb\" alt=\"Ceiling light bar (Petrol Station and Forecourt Shop)\" 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/33977/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/33977/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33978","slug":"petrol-station-and-forecourt-shop-cctv-dome-57449d14","title":"CCTV dome camera (Petrol Station and Forecourt Shop)","summary":"A ceiling mounted dome camera: a smoked dome in a white collar on a stem and mounting plate, with a small status marker.","description":"A ceiling mounted dome camera: a smoked dome in a white collar on a stem and mounting plate, with a small status marker. Dimensions 0.22 by 0.19 by 0.21 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The model rests on the dome at y=0; mount it by placing the plate at the top against the soffit. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-cctv-dome-57449d14","cdnUrl":"https://cdn.3dassets.dev/assets/33978/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-cctv-dome-57449d14","thumbnailUrl":"https://cdn.3dassets.dev/assets/33978/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33978/v1/poster.webp","blurhash":"UKC6}nt700Rj~qoe9FWB4UWB%Mof9Faf%3ay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18704,"triangles":380,"vertices":804,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.10899999737739563,-0.0000034137445220627782,-0.10735004472078415],"max":[0.10899999737739563,0.18899850092734366,0.10735004472078415]},"sizeMeters":[0.218,0.189,0.215],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:46.446Z","updatedAt":"2026-09-11T05:43:46.561Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33978/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CCTVDomeCameraPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33978/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33978/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33978/v1/model.glb\" alt=\"CCTV dome camera (Petrol Station and Forecourt Shop)\" 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/33978/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/33978/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33979","slug":"petrol-station-and-forecourt-shop-shop-atm-3c11d96e","title":"Shop cash machine (Petrol Station and Forecourt Shop)","summary":"A through the wall style cash machine in a steel housing: a blank screen, keypad, card slot and dispense tray under an accent head box, with a slatted security shutter that runs up into the head.","description":"A through the wall style cash machine in a steel housing: a blank screen, keypad, card slot and dispense tray under an accent head box, with a slatted security shutter that runs up into the head. Dimensions 0.72 by 1.92 by 0.42 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: atm-shutter. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-atm-3c11d96e","cdnUrl":"https://cdn.3dassets.dev/assets/33979/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-atm-3c11d96e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33979/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33979/v1/poster.webp","blurhash":"U57UxDx[00IBY$kVUwRPGqNFvN%2%}x[QnIB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":56580,"triangles":1216,"vertices":2711,"meshes":6,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.36000091103786813,0,-0.17998536537784598],"max":[0.36000091103786813,1.9199999570846558,0.2450006117857862]},"sizeMeters":[0.72,1.92,0.425],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:47.853Z","updatedAt":"2026-09-11T05:43:48.028Z","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/33979/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 ShopCashMachinePetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33979/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/33979/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33979/v1/model.glb\" alt=\"Shop cash machine (Petrol Station and Forecourt Shop)\" 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/33979/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/33979/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33981","slug":"petrol-station-and-forecourt-shop-shop-facade-bay-glaz-fd865d5a","title":"Shop facade bay, glazed, amber livery (Petrol Station and Forecourt Shop)","summary":"The glazed shopfront bay in the amber house colour, matching the amber canopy and totem. Geometry and ports are identical to the green bay.","description":"The glazed shopfront bay in the amber house colour, matching the amber canopy and totem. Geometry and ports are identical to the green bay. Dimensions 1.50 by 3.22 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: bay-left, bay-right (type shop-bay). All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-shop-facade-bay-glaz-fd865d5a","cdnUrl":"https://cdn.3dassets.dev/assets/33981/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-shop-facade-bay-glaz-fd865d5a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33981/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33981/v1/poster.webp","blurhash":"U9E{Xv=:009*~L%L9g9ZD$XAXCVqxmxtR;D+","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":41228,"triangles":896,"vertices":2010,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500717296742082,0,-0.14502395842696517],"max":[0.7500717296742082,3.2200000286102295,0.16496124278983537]},"sizeMeters":[1.5,3.22,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:48.213Z","updatedAt":"2026-09-11T05:43:48.324Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33981/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopFacadeBayGlazedAmberLiveryPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33981/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33981/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33981/v1/model.glb\" alt=\"Shop facade bay, glazed, amber livery (Petrol Station and Forecourt Shop)\" 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/33981/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/33981/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33980","slug":"petrol-station-and-forecourt-shop-forecourt-car-d90aa1c0","title":"Forecourt car (Petrol Station and Forecourt Shop)","summary":"A small hatchback to stand at a pump: a lofted body with a tapered cabin, set back glazing, lamps, a grille, door mirrors, arch liners and a fuel flap on the near side. All four wheels are rigged to roll.","description":"A small hatchback to stand at a pump: a lofted body with a tapered cabin, set back glazing, lamps, a grille, door mirrors, arch liners and a fuel flap on the near side. All four wheels are rigged to roll. Dimensions 2.10 by 1.38 by 4.01 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. Doors, bonnet and tailgate are modelled shut and do not open; this is a dressing vehicle, not a drivable one. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-car-d90aa1c0","cdnUrl":"https://cdn.3dassets.dev/assets/33980/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-car-d90aa1c0","thumbnailUrl":"https://cdn.3dassets.dev/assets/33980/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33980/v1/poster.webp","blurhash":"U97fMWyEHXRPy=MxMKtR4TMdl8tkHYyCyDa1","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":89220,"triangles":2400,"vertices":5023,"meshes":12,"materials":7,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.0499588000122073,7.152557379708213e-9,-2],"max":[1.0499588000122073,1.3799529994092445,2.009999990463257]},"sizeMeters":[2.1,1.38,4.01],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:48.231Z","updatedAt":"2026-09-11T05:43:48.347Z","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/33980/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 ForecourtCarPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33980/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/33980/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33980/v1/model.glb\" alt=\"Forecourt car (Petrol Station and Forecourt Shop)\" 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/33980/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/33980/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33982","slug":"petrol-station-and-forecourt-shop-jerrycan-4a507df8","title":"Jerrycan (Petrol Station and Forecourt Shop)","summary":"A 20 litre steel jerrycan with the three ribbed faces, a top plate, a triple grab handle and a capped pouring spout.","description":"A 20 litre steel jerrycan with the three ribbed faces, a top plate, a triple grab handle and a capped pouring spout. Dimensions 0.34 by 0.52 by 0.17 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-jerrycan-4a507df8","cdnUrl":"https://cdn.3dassets.dev/assets/33982/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-jerrycan-4a507df8","thumbnailUrl":"https://cdn.3dassets.dev/assets/33982/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33982/v1/poster.webp","blurhash":"U67CsWyX00L~]TbwF]nMUbRPUYpHOrs.rrM|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":27352,"triangles":584,"vertices":1268,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.16999237345638507,0,-0.08499618672819254],"max":[0.16999237345638507,0.5239969991359209,0.08499618672819254]},"sizeMeters":[0.34,0.524,0.17],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:48.930Z","updatedAt":"2026-09-11T05:43:49.108Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33982/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JerrycanPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33982/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33982/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33982/v1/model.glb\" alt=\"Jerrycan (Petrol Station and Forecourt Shop)\" 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/33982/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/33982/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33983","slug":"petrol-station-and-forecourt-shop-oil-shelf-unit-dfd4730a","title":"Oil and additive shelf unit (Petrol Station and Forecourt Shop)","summary":"A narrow four shelf unit of oil and additive bottles, each with a real neck and cap, with accent price rails and a blank header. Stands against a wall inside or by the forecourt door.","description":"A narrow four shelf unit of oil and additive bottles, each with a real neck and cap, with accent price rails and a blank header. Stands against a wall inside or by the forecourt door. Dimensions 0.93 by 1.75 by 0.40 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-oil-shelf-unit-dfd4730a","cdnUrl":"https://cdn.3dassets.dev/assets/33983/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-oil-shelf-unit-dfd4730a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33983/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33983/v1/poster.webp","blurhash":"U9BN7kjX00bdyWsAMeNu03nm~9S]TJWqrqsm","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":192012,"triangles":4592,"vertices":9947,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.4650425694974504,0,-0.19997886618263397],"max":[0.4650425694974504,1.75,0.19997886618263397]},"sizeMeters":[0.93,1.75,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:50.651Z","updatedAt":"2026-09-11T05:43:50.766Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33983/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OilAndAdditiveShelfUnitPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33983/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33983/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33983/v1/model.glb\" alt=\"Oil and additive shelf unit (Petrol Station and Forecourt Shop)\" 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/33983/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/33983/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33985","slug":"petrol-station-and-forecourt-shop-squeegee-bucket-6a01ab07","title":"Windscreen squeegee bucket (Petrol Station and Forecourt Shop)","summary":"A wash bucket of screen wash with a wire handle and a long squeegee standing in it, with a rubber blade on one side of the head and a sponge on the other.","description":"A wash bucket of screen wash with a wire handle and a long squeegee standing in it, with a rubber blade on one side of the head and a sponge on the other. Dimensions 0.47 by 0.89 by 0.35 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-squeegee-bucket-6a01ab07","cdnUrl":"https://cdn.3dassets.dev/assets/33985/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-squeegee-bucket-6a01ab07","thumbnailUrl":"https://cdn.3dassets.dev/assets/33985/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33985/v1/poster.webp","blurhash":"U7AAKm?E000O5FIX-h?E02Iq_1--~Qxs9NE3","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":24668,"triangles":484,"vertices":1076,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.17634040056553169,0,-0.17332011553301607],"max":[0.29000696419617233,0.8900031844658159,0.17332011553301607]},"sizeMeters":[0.466,0.89,0.347],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:50.167Z","updatedAt":"2026-09-11T05:43:50.280Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33985/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WindscreenSqueegeeBucketPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33985/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33985/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33985/v1/model.glb\" alt=\"Windscreen squeegee bucket (Petrol Station and Forecourt Shop)\" 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/33985/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/33985/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33984","slug":"petrol-station-and-forecourt-shop-forecourt-litter-bin-5dfdef80","title":"Forecourt litter bin (Petrol Station and Forecourt Shop)","summary":"A hooded forecourt bin on a base plate: a painted body with a dark kick band, a blank lit panel on the front, an inner liner and a back hinged lid.","description":"A hooded forecourt bin on a base plate: a painted body with a dark kick band, a blank lit panel on the front, an inner liner and a back hinged lid. Dimensions 0.58 by 1.16 by 0.53 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: bin-lid. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-forecourt-litter-bin-5dfdef80","cdnUrl":"https://cdn.3dassets.dev/assets/33984/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-forecourt-litter-bin-5dfdef80","thumbnailUrl":"https://cdn.3dassets.dev/assets/33984/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33984/v1/poster.webp","blurhash":"U6732f?c0000T]WVZ*s-4TI,.l?Jxst7RRMx","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":26624,"triangles":528,"vertices":1173,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.2899792393588254,0,-0.2650205926324398],"max":[0.2899792393588254,1.1600065410256506,0.2650205926324398]},"sizeMeters":[0.58,1.16,0.53],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:50.187Z","updatedAt":"2026-09-11T05:43:50.301Z","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/33984/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 ForecourtLitterBinPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33984/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/33984/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33984/v1/model.glb\" alt=\"Forecourt litter bin (Petrol Station and Forecourt Shop)\" 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/33984/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/33984/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33986","slug":"petrol-station-and-forecourt-shop-stock-trolley-08d92005","title":"Stock trolley (Petrol Station and Forecourt Shop)","summary":"A three shelf picking trolley loaded with shop stock, with a push handle, a blank ticket holder and four castors. All four wheels are rigged to roll.","description":"A three shelf picking trolley loaded with shop stock, with a push handle, a blank ticket holder and four castors. All four wheels are rigged to roll. Dimensions 0.90 by 1.07 by 0.56 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-stock-trolley-08d92005","cdnUrl":"https://cdn.3dassets.dev/assets/33986/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-stock-trolley-08d92005","thumbnailUrl":"https://cdn.3dassets.dev/assets/33986/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33986/v1/poster.webp","blurhash":"U8Eob??E004?~A-.9c9b00R*~UsmoybcRiRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":100384,"triangles":2576,"vertices":5733,"meshes":8,"materials":5,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-0.4500354977294647,-7.450580569168253e-10,-0.2800111516763974],"max":[0.4500354977294647,1.0750000476837158,0.2800111516763974]},"sizeMeters":[0.9,1.075,0.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:51.738Z","updatedAt":"2026-09-11T05:43:51.841Z","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/33986/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 StockTrolleyPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33986/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/33986/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33986/v1/model.glb\" alt=\"Stock trolley (Petrol Station and Forecourt Shop)\" 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/33986/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/33986/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33988","slug":"petrol-station-and-forecourt-shop-delivery-roll-cage-5d9ef58a","title":"Delivery roll cage (Petrol Station and Forecourt Shop)","summary":"The wheeled cage a shop delivery arrives in: a steel frame with wire mesh on three and a half sides, a loaded deck, a top frame, a blank hazard label and four castors rigged to roll.","description":"The wheeled cage a shop delivery arrives in: a steel frame with wire mesh on three and a half sides, a loaded deck, a top frame, a blank hazard label and four castors rigged to roll. Dimensions 0.84 by 1.78 by 0.72 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-delivery-roll-cage-5d9ef58a","cdnUrl":"https://cdn.3dassets.dev/assets/33988/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-delivery-roll-cage-5d9ef58a","thumbnailUrl":"https://cdn.3dassets.dev/assets/33988/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33988/v1/poster.webp","blurhash":"UACPw_-p009a?wofDhWCTNW=rUxC_2t79ZRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":151708,"triangles":3808,"vertices":8529,"meshes":7,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-0.41998936341090964,0,-0.3600413965073642],"max":[0.41998936341090964,1.7825000286102295,0.3600413965073642]},"sizeMeters":[0.84,1.783,0.72],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:51.917Z","updatedAt":"2026-09-11T05:43:52.024Z","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/33988/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 DeliveryRollCagePetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33988/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/33988/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33988/v1/model.glb\" alt=\"Delivery roll cage (Petrol Station and Forecourt Shop)\" 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/33988/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/33988/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33987","slug":"petrol-station-and-forecourt-shop-wet-floor-sign-93248cf2","title":"Wet floor sign (Petrol Station and Forecourt Shop)","summary":"A folding hazard A frame in amber with two blank pictogram panels and a hinge strap, for the shop floor after a delivery or a spill.","description":"A folding hazard A frame in amber with two blank pictogram panels and a hinge strap, for the shop floor after a delivery or a spill. Dimensions 0.52 by 0.63 by 0.36 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-wet-floor-sign-93248cf2","cdnUrl":"https://cdn.3dassets.dev/assets/33987/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-wet-floor-sign-93248cf2","thumbnailUrl":"https://cdn.3dassets.dev/assets/33987/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33987/v1/poster.webp","blurhash":"UCGRkR^$004;~Ts+9bSP06jY-,I]Rpflt1oH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23916,"triangles":524,"vertices":1122,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.259987888921332,0,-0.17840994894504547],"max":[0.259987888921332,0.6287333965301514,0.17840994894504547]},"sizeMeters":[0.52,0.629,0.357],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:53.162Z","updatedAt":"2026-09-11T05:43:53.304Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33987/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WetFloorSignPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33987/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33987/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33987/v1/model.glb\" alt=\"Wet floor sign (Petrol Station and Forecourt Shop)\" 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/33987/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/33987/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33989","slug":"petrol-station-and-forecourt-shop-sandwich-board-219c2a5f","title":"Pavement sandwich board (Petrol Station and Forecourt Shop)","summary":"A pavement A board with two blank illuminated faces, a hinge rail and two spreader bars, for the forecourt entrance. Both faces are wordless.","description":"A pavement A board with two blank illuminated faces, a hinge rail and two spreader bars, for the forecourt entrance. Both faces are wordless. Dimensions 0.62 by 0.96 by 0.37 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-sandwich-board-219c2a5f","cdnUrl":"https://cdn.3dassets.dev/assets/33989/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-sandwich-board-219c2a5f","thumbnailUrl":"https://cdn.3dassets.dev/assets/33989/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33989/v1/poster.webp","blurhash":"UGDJ^k_20000RQXSt6n400IU~q=}ozofoeR%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":23988,"triangles":496,"vertices":1086,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.31002713477793087,0,-0.18654916903756283],"max":[0.31002713477793087,0.9615932106971741,0.18654916903756283]},"sizeMeters":[0.62,0.962,0.373],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:52.388Z","updatedAt":"2026-09-11T05:43:52.503Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33989/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PavementSandwichBoardPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33989/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33989/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33989/v1/model.glb\" alt=\"Pavement sandwich board (Petrol Station and Forecourt Shop)\" 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/33989/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/33989/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33990","slug":"petrol-station-and-forecourt-shop-screen-wash-pallet-e983d54e","title":"Pallet of screen wash (Petrol Station and Forecourt Shop)","summary":"A timber pallet stacked three layers deep with capped screen wash bottles under a shrink wrap band, as a delivery drops it on the forecourt.","description":"A timber pallet stacked three layers deep with capped screen wash bottles under a shrink wrap band, as a delivery drops it on the forecourt. Dimensions 1.23 by 1.05 by 1.04 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-screen-wash-pallet-e983d54e","cdnUrl":"https://cdn.3dassets.dev/assets/33990/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-screen-wash-pallet-e983d54e","thumbnailUrl":"https://cdn.3dassets.dev/assets/33990/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33990/v1/poster.webp","blurhash":"UDI}Xu.703jc~nxrE3Rk01Rj9ZRjENxZ,nM|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":307984,"triangles":7408,"vertices":16189,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6150000095367432,-0.000012605883383233485,-0.5199931497288918],"max":[0.6150000095367432,1.0520117838467415,0.5199931497288918]},"sizeMeters":[1.23,1.052,1.04],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:54.542Z","updatedAt":"2026-09-11T05:43:54.661Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33990/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PalletOfScreenWashPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33990/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33990/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33990/v1/model.glb\" alt=\"Pallet of screen wash (Petrol Station and Forecourt Shop)\" 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/33990/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/33990/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"33991","slug":"petrol-station-and-forecourt-shop-air-line-reel-2a607dc9","title":"Air line reel (Petrol Station and Forecourt Shop)","summary":"A retractable air line reel on a floor mounted bracket: a drum of coiled hose between accent flanges, with the lead running down to a chuck with a gauge and a trigger. The drum is rigged to spin.","description":"A retractable air line reel on a floor mounted bracket: a drum of coiled hose between accent flanges, with the lead running down to a chuck with a gauge and a trigger. The drum is rigged to spin. Dimensions 0.55 by 1.26 by 0.51 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: reel-drum. The lead hanging off the drum is static; only the drum turns. All signage geometry is blank: no wording, logo or fuel company livery anywhere in this pack. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-air-line-reel-2a607dc9","cdnUrl":"https://cdn.3dassets.dev/assets/33991/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-air-line-reel-2a607dc9","thumbnailUrl":"https://cdn.3dassets.dev/assets/33991/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33991/v1/poster.webp","blurhash":"U23]lhz?008DQ6VZu+u3D4Xm*IvNL#cDqDh~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":35672,"triangles":740,"vertices":1614,"meshes":7,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.15000000596046448,1.7232153565194253e-8,-0.2560643236255916],"max":[0.3999831543565087,1.2599999904632568,0.2560643236255916]},"sizeMeters":[0.55,1.26,0.512],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:53.637Z","updatedAt":"2026-09-11T05:43:53.820Z","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/33991/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 AirLineReelPetrolStationAndForecourtShop(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33991/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/33991/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33991/v1/model.glb\" alt=\"Air line reel (Petrol Station and Forecourt Shop)\" 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/33991/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/33991/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"33992","slug":"petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","title":"Filling station and forecourt shop (Petrol Station and Forecourt Shop)","summary":"A working filling station: two pump islands of dispensers standing under an assembled two bay canopy on marked forecourt paving, a car filling up on the outside lane, the shop behind built from glazed and entrance facade bays with a roof and a lit, stocked interior of...","description":"A working filling station: two pump islands of dispensers standing under an assembled two bay canopy on marked forecourt paving, a car filling up on the outside lane, the shop behind built from glazed and entrance facade bays with a roof and a lit, stocked interior of chillers, gondolas, a counter with its till and cigarette gantry, coffee and hot food, and a service strip to one side with the jet wash bay, the air and water tower and the vacuum. Price totem and pylon signs on the road side, bins, bollards, a spill kit, a fire point and the tanker fill point around it. Every sign face is blank. Static geometry; the models carry their own clips.","status":"published","url":"https://3dassets.dev/assets/petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/33992/v1/model.glb","downloadUrl":"https://3dassets.dev/download/petrol-station-and-forecourt-shop-fillin-e7147b85-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/33992/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33992/v1/poster.webp","blurhash":"U6Am^{?v00eo9Ft7%MNF00Di_NWV-;IoRj%N","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":3813292,"triangles":93122,"vertices":206891,"meshes":274,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-10.610000038146973,-0.000030213994933490917,-12.164961242789836],"max":[7.549899307256157,6.360000190734863,4.5]},"sizeMeters":[18.16,6.36,16.665],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T05:43:55.981Z","updatedAt":"2026-09-11T05:43:56.077Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/33992/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FillingStationAndForecourtShopPetrolStationAndForecourtShop(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/33992/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/33992/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33992/v1/model.glb\" alt=\"Filling station and forecourt shop (Petrol Station and Forecourt Shop)\" 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/33992/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/33992/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"petrol-station-and-forecourt-shop","title":"Petrol Station and Forecourt Shop","url":"https://3dassets.dev/demos/petrol-station-and-forecourt-shop"}}}