{"data":{"id":"30","slug":"fps-weapon-set-and-firing-range","title":"Indoor shooting range","summary":"Walk a 16 by 45 metre indoor range built from the FPS Guns and Shooting Range pack: four lane booths with a rifle, carbine and pistol, target carriers to paper and silhouette targets, steel poppers and plates, backstops and berms, and an armoury.","url":"https://3dassets.dev/demos/fps-weapon-set-and-firing-range","coverUrl":"https://cdn.3dassets.dev/media/fps-weapon-set-and-firing-range-demo-2.png","featured":false,"pack":{"slug":"fps-weapon-set-and-firing-range","title":"FPS Guns and Shooting Range","url":"https://3dassets.dev/packs/fps-weapon-set-and-firing-range","summary":"Original socketed firearms, detailed attachments, four-lane range and gunsmith equipment.","assetCount":105,"totalBytes":17055820,"starterScene":{"slug":"fps-weapon-set-and-firing-range-four-lan-04475886-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/19544/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-four-lan-04475886-starter-scene","fileSize":599476}},"placementCount":49,"assetCount":24,"spawn":{"position":[0,0,14],"yaw":180},"publishedAt":"2026-09-07T21:20:45.936Z","updatedAt":"2026-09-07T21:20:45.937Z","description":"One range from 24 of the pack's 105 models, in the hall preset with dark walls, cool light and strip lights under a 5 m ceiling.\n\nYou start at the back wall by the armoury: the gun safe, the armourer cabinet, a wall weapon rack, the ammo shelf, the ear defender rack and the cleaning bench. Ahead is the firing line: four lane booths with dividers, a carbine and a pistol on the counters and the battle rifle on the bench rest, with the safety sign and the range officer tower either side. Each lane has a target carrier rail running down-range to a paper target frame and a silhouette under overhead baffles, then three steel poppers, the dueling tree and a plate rack, and five angled backstops in front of earth berms with the range flag.\n\nThis pack ships animation clips: the poppers, the safe and the cabinet play as you come within three metres and rewind when you leave. The weapons are static models; the rest of the set is not placed here.","scene":{"version":1,"spawn":{"position":[0,0,14],"yaw":180},"bounds":{"min":[-8,0,-28.5],"max":[8,5,17]},"ground":{"style":"plain"},"environment":{"preset":"hall","wallHeight":5,"wall":"#4b4f55","floor":"#6d6f73","light":"cool","lampHeight":4.5,"shadows":true},"placements":[{"asset":"fps-weapon-set-and-firing-range-lane-booth-81401825","position":[-4.5,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","position":[-4.5,0,0],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-paper-target-frame-89407822","position":[-4.5,0,-6],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-silhouette-target-69632afb","position":[-4.5,0,-12],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-booth-81401825","position":[-1.5,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","position":[-1.5,0,0],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-paper-target-frame-89407822","position":[-1.5,0,-6],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-silhouette-target-69632afb","position":[-1.5,0,-12],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-booth-81401825","position":[1.5,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","position":[1.5,0,0],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-paper-target-frame-89407822","position":[1.5,0,-6],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-silhouette-target-69632afb","position":[1.5,0,-12],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-booth-81401825","position":[4.5,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","position":[4.5,0,0],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-paper-target-frame-89407822","position":[4.5,0,-6],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-silhouette-target-69632afb","position":[4.5,0,-12],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-divider-79c8ff39","position":[-3,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-divider-79c8ff39","position":[0,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-lane-divider-79c8ff39","position":[3,0,8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-steel-popper-7447d855","position":[-4,0,-16],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-steel-popper-7447d855","position":[0,0,-16],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-steel-popper-7447d855","position":[4,0,-16],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-dueling-tree-58f7dcac","position":[-2,0,-19],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-plate-rack-ea308d85","position":[3,0,-20],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","position":[-6,0,-24],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","position":[-3,0,-24],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","position":[0,0,-24],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","position":[3,0,-24],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","position":[6,0,-24],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","position":[-6,0,-26.5],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","position":[-2,0,-26.5],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","position":[2,0,-26.5],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","position":[6,0,-26.5],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","position":[0,2,-2],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","position":[0,2,-8],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","position":[0,2,-14],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-range-officer-tower-47d35249","position":[6.8,0,11.5],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-safety-sign-3156e80c","position":[-6.5,0,11],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-range-flag-fb6c5398","position":[7,0,-22],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-bench-rest-927c5d39","position":[-4.5,0,11.2],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-battle-rifle-5ba2a611","position":[-4.5,0.9,11.1],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-assault-carbine-5a5b3ffe","position":[1.5,1,7.7],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-service-pistol-e6a0f894","position":[-1.5,1,7.7],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-ear-defender-rack-c609e0cc","position":[-7.2,0,13.5],"rotation":90},{"asset":"fps-weapon-set-and-firing-range-ammo-shelf-ede2c0cc","position":[7.2,0,14],"rotation":270},{"asset":"fps-weapon-set-and-firing-range-cleaning-bench-c46ea77b","position":[-6.4,0,15.3],"rotation":90},{"asset":"fps-weapon-set-and-firing-range-wall-weapon-rack-319c25b3","position":[2,1.2,16.2],"rotation":0},{"asset":"fps-weapon-set-and-firing-range-gun-safe-a56b99f2","position":[6.5,0,16],"rotation":180},{"asset":"fps-weapon-set-and-firing-range-armourer-cabinet-a11c76c7","position":[4.8,0,16],"rotation":180}],"points":[{"position":[0,0,10],"title":"Firing line","text":"Four lane booths with dividers between them, a carbine and a pistol on the counters, the bench rest with a battle rifle behind lane one, and the range officer tower watching from the right.","asset":"fps-weapon-set-and-firing-range-lane-booth-81401825"},{"position":[0,0,-3.5],"title":"Target carriers","text":"A target carrier rail in every lane runs 5 m down-range to a paper target frame at 14 m and a silhouette at 20 m, under three overhead baffles.","asset":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77"},{"position":[1.5,0,-17],"title":"Steel and plates","text":"Three steel poppers, the dueling tree and a plate rack at the far end. The poppers have clips and fall as you approach.","asset":"fps-weapon-set-and-firing-range-steel-popper-7447d855"},{"position":[0,0,-22],"title":"Backstop","text":"Five angled backstops in front of four earth berms close the range, with the range flag flying.","asset":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20"},{"position":[4.5,0,14.5],"title":"Armoury","text":"The gun safe, the armourer cabinet and a wall weapon rack on the back wall, with the ammo shelf and the cleaning bench either side. The safe and cabinet doors have clips.","asset":"fps-weapon-set-and-firing-range-gun-safe-a56b99f2"}],"poster":{"position":[-2.9,2.8,11.7],"lookAt":[-1.5,1,8]}},"bounds":{"min":[-8,0,-28.5],"max":[8,5,17]},"assets":[{"id":"19491","slug":"fps-weapon-set-and-firing-range-lane-booth-81401825","title":"Lane booth (FPS Guns and Shooting Range)","summary":"Lane booth with original detailed construction in metres.","description":"Lane booth Dimensions 1.40 × 2.24 × 1.30 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-lane-booth-81401825","cdnUrl":"https://cdn.3dassets.dev/assets/19491/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-lane-booth-81401825","thumbnailUrl":"https://cdn.3dassets.dev/assets/19491/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19491/v1/poster.webp","blurhash":"UGC~^@t84:oJ_Nt7DiR+TKazDhV@xuofNGRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":230088,"triangles":4568,"vertices":13704,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.6999530044405169,1.1175860237244706e-10,-0.6500491375353917],"max":[0.6999530044405169,2.240000009536743,0.6500491375353917]},"sizeMeters":[1.4,2.24,1.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:00.674Z","updatedAt":"2026-09-07T21:20:02.073Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19491/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaneBoothFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19491/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19491/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19491/v1/model.glb\" alt=\"Lane booth (FPS Guns and Shooting Range)\" 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/19491/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/19491/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19494","slug":"fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","title":"Target carrier rail (FPS Guns and Shooting Range)","summary":"Target carrier rail with original detailed construction in metres.","description":"Target carrier rail Dimensions 0.14 × 2.20 × 5.10 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","cdnUrl":"https://cdn.3dassets.dev/assets/19494/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-target-carrier-rail-51dffb77","thumbnailUrl":"https://cdn.3dassets.dev/assets/19494/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19494/v1/poster.webp","blurhash":"U77_1fkB?bt7_N9FIUIUIUIUMxx]9FRixu%g","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":114148,"triangles":2272,"vertices":6816,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.0700042753730465,0.00006834336696637244,-2.5480000972747803],"max":[0.0700042753730465,2.200000047683716,2.5480000972747803]},"sizeMeters":[0.14,2.2,5.096],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:03.510Z","updatedAt":"2026-09-07T21:20:01.984Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19494/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TargetCarrierRailFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19494/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19494/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19494/v1/model.glb\" alt=\"Target carrier rail (FPS Guns and Shooting Range)\" 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/19494/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/19494/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19497","slug":"fps-weapon-set-and-firing-range-paper-target-frame-89407822","title":"Paper target frame (FPS Guns and Shooting Range)","summary":"Paper target frame with original detailed construction in metres.","description":"Paper target frame Dimensions 0.68 × 1.70 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-paper-target-frame-89407822","cdnUrl":"https://cdn.3dassets.dev/assets/19497/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-paper-target-frame-89407822","thumbnailUrl":"https://cdn.3dassets.dev/assets/19497/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19497/v1/poster.webp","blurhash":"U4AJ{1%M004o^+t601IUIVay%Lay0Kof~pae","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":182268,"triangles":3652,"vertices":10956,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.34202857493350247,-7.450584593726717e-11,-0.2499908514701679],"max":[0.34202857493350247,1.7000000476837158,0.2499908514701679]},"sizeMeters":[0.684,1.7,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:03.808Z","updatedAt":"2026-09-07T21:20:01.987Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19497/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaperTargetFrameFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19497/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19497/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19497/v1/model.glb\" alt=\"Paper target frame (FPS Guns and Shooting Range)\" 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/19497/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/19497/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19499","slug":"fps-weapon-set-and-firing-range-silhouette-target-69632afb","title":"Silhouette target (FPS Guns and Shooting Range)","summary":"Silhouette target with original detailed construction in metres.","description":"Silhouette target Dimensions 0.68 × 1.70 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-silhouette-target-69632afb","cdnUrl":"https://cdn.3dassets.dev/assets/19499/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-silhouette-target-69632afb","thumbnailUrl":"https://cdn.3dassets.dev/assets/19499/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19499/v1/poster.webp","blurhash":"U28|*D-:004:mjoHElNL.TfRHrR%t.xvrCIA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":125140,"triangles":2420,"vertices":7260,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.34202857493350247,-7.450584593726717e-11,-0.2499908514701679],"max":[0.34202857493350247,1.7000000476837158,0.2499908514701679]},"sizeMeters":[0.684,1.7,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:04.389Z","updatedAt":"2026-09-07T21:20:01.913Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19499/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SilhouetteTargetFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19499/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19499/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19499/v1/model.glb\" alt=\"Silhouette target (FPS Guns and Shooting Range)\" 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/19499/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/19499/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19493","slug":"fps-weapon-set-and-firing-range-lane-divider-79c8ff39","title":"Lane divider (FPS Guns and Shooting Range)","summary":"Lane divider with original detailed construction in metres.","description":"Lane divider Dimensions 1.38 × 1.85 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-lane-divider-79c8ff39","cdnUrl":"https://cdn.3dassets.dev/assets/19493/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-lane-divider-79c8ff39","thumbnailUrl":"https://cdn.3dassets.dev/assets/19493/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19493/v1/poster.webp","blurhash":"U3A]Z:#h00Bs#%^j9Z0M3EI@{ev~x]-;My8{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":142168,"triangles":2776,"vertices":8328,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.6920178414768334,-7.450584593726717e-11,-0.249965951474753],"max":[0.6920178414768334,1.851199984550476,0.249965951474753]},"sizeMeters":[1.384,1.851,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:01.478Z","updatedAt":"2026-09-07T21:20:02.062Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19493/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaneDividerFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19493/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19493/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19493/v1/model.glb\" alt=\"Lane divider (FPS Guns and Shooting Range)\" 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/19493/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/19493/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19496","slug":"fps-weapon-set-and-firing-range-steel-popper-7447d855","title":"Steel popper (FPS Guns and Shooting Range)","summary":"Steel popper with original detailed construction in metres.","description":"Steel popper Dimensions 0.30 × 0.86 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips trigger work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-steel-popper-7447d855","cdnUrl":"https://cdn.3dassets.dev/assets/19496/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-steel-popper-7447d855","thumbnailUrl":"https://cdn.3dassets.dev/assets/19496/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19496/v1/poster.webp","blurhash":"UBAcoA]~9YS$F#4;V@-p01E2-;xu]y~BtRE1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":16768,"triangles":236,"vertices":708,"meshes":3,"materials":3,"textures":1,"animations":["trigger"],"boundingBox":{"min":[-0.1500137333292642,0.000010376069704415292,-0.25],"max":[0.1500137333292642,0.8600000071525573,0.25]},"sizeMeters":[0.3,0.86,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:03.710Z","updatedAt":"2026-09-07T21:20:01.989Z","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/19496/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 SteelPopperFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19496/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/19496/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19496/v1/model.glb\" alt=\"Steel popper (FPS Guns and Shooting Range)\" 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/19496/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/19496/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"19498","slug":"fps-weapon-set-and-firing-range-dueling-tree-58f7dcac","title":"Dueling tree (FPS Guns and Shooting Range)","summary":"Dueling tree with original detailed construction in metres.","description":"Dueling tree Dimensions 0.68 × 1.65 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-dueling-tree-58f7dcac","cdnUrl":"https://cdn.3dassets.dev/assets/19498/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-dueling-tree-58f7dcac","thumbnailUrl":"https://cdn.3dassets.dev/assets/19498/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19498/v1/poster.webp","blurhash":"U08XLS%M004n00?vOX00.7V@j0tS8wbH?vV?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":170120,"triangles":3508,"vertices":10524,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.3400143436994537,-7.450584593726717e-11,-0.2499900778834492],"max":[0.3400143436994537,1.649999976158142,0.2499900778834492]},"sizeMeters":[0.68,1.65,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:04.173Z","updatedAt":"2026-09-07T21:20:01.899Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19498/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DuelingTreeFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19498/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19498/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19498/v1/model.glb\" alt=\"Dueling tree (FPS Guns and Shooting Range)\" 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/19498/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/19498/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19500","slug":"fps-weapon-set-and-firing-range-plate-rack-ea308d85","title":"Plate rack (FPS Guns and Shooting Range)","summary":"Plate rack with original detailed construction in metres.","description":"Plate rack Dimensions 2.28 × 1.15 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-plate-rack-ea308d85","cdnUrl":"https://cdn.3dassets.dev/assets/19500/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-plate-rack-ea308d85","thumbnailUrl":"https://cdn.3dassets.dev/assets/19500/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19500/v1/poster.webp","blurhash":"UABM_Qj]Rjx[~q_39FM{4nxuof9F00%M?vM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":147208,"triangles":2860,"vertices":8580,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-1.1419999599456787,2.2429191381956315e-7,-0.24995952368939506],"max":[1.1419999599456787,1.149978932845355,0.24995952368939506]},"sizeMeters":[2.284,1.15,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:06.468Z","updatedAt":"2026-09-07T21:20:01.904Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19500/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlateRackFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19500/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19500/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19500/v1/model.glb\" alt=\"Plate rack (FPS Guns and Shooting Range)\" 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/19500/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/19500/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19502","slug":"fps-weapon-set-and-firing-range-angled-backstop-79a13e20","title":"Angled backstop (FPS Guns and Shooting Range)","summary":"Angled backstop with original detailed construction in metres.","description":"Angled backstop Dimensions 3.00 × 2.10 × 0.67 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-angled-backstop-79a13e20","cdnUrl":"https://cdn.3dassets.dev/assets/19502/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-angled-backstop-79a13e20","thumbnailUrl":"https://cdn.3dassets.dev/assets/19502/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19502/v1/poster.webp","blurhash":"U68}3?WB4mWB~q?bIUIU00-;%NIUITt6xvRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":102312,"triangles":2080,"vertices":6240,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.5011999607086182,-0.00007553033072085769,-0.3360568926617843],"max":[1.5,2.1000359067073235,0.33593589467921847]},"sizeMeters":[3.001,2.1,0.672],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:07.047Z","updatedAt":"2026-09-07T21:20:01.819Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19502/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AngledBackstopFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19502/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19502/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19502/v1/model.glb\" alt=\"Angled backstop (FPS Guns and Shooting Range)\" 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/19502/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/19502/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19504","slug":"fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","title":"Earth berm (FPS Guns and Shooting Range)","summary":"Earth berm with original detailed construction in metres.","description":"Earth berm Dimensions 4.00 × 2.00 × 2.40 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","cdnUrl":"https://cdn.3dassets.dev/assets/19504/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-earth-berm-e0cbf1cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/19504/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19504/v1/poster.webp","blurhash":"UDFFpj~q00M{IU-;%MM{00D%%MWBxuM{t7Rj","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":46100,"triangles":660,"vertices":1980,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.00015259254737998162,-1.2001098666341137],"max":[2,2.00015259254738,1.2001098666341137]},"sizeMeters":[4,2,2.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:07.153Z","updatedAt":"2026-09-07T21:20:01.823Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19504/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EarthBermFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19504/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19504/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19504/v1/model.glb\" alt=\"Earth berm (FPS Guns and Shooting Range)\" 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/19504/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/19504/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19505","slug":"fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","title":"Overhead baffle (FPS Guns and Shooting Range)","summary":"Overhead baffle with original detailed construction in metres.","description":"Overhead baffle Dimensions 3.17 × 2.80 × 0.17 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","cdnUrl":"https://cdn.3dassets.dev/assets/19505/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-overhead-baffle-78c286d8","thumbnailUrl":"https://cdn.3dassets.dev/assets/19505/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19505/v1/poster.webp","blurhash":"U15}s,~q%M-;00?bM{4n0000ITxu~q?bxuIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":101048,"triangles":2068,"vertices":6204,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.5839999914169312,-0.000089754156044064,-0.08392052934659237],"max":[1.5839999914169312,2.8012896672927052,0.08392052934659237]},"sizeMeters":[3.168,2.801,0.168],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:07.235Z","updatedAt":"2026-09-07T21:20:01.829Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19505/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OverheadBaffleFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19505/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19505/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19505/v1/model.glb\" alt=\"Overhead baffle (FPS Guns and Shooting Range)\" 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/19505/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/19505/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19515","slug":"fps-weapon-set-and-firing-range-range-officer-tower-47d35249","title":"Range officer tower (FPS Guns and Shooting Range)","summary":"Range officer tower with original detailed construction in metres.","description":"Range officer tower Dimensions 1.70 × 3.26 × 1.73 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-range-officer-tower-47d35249","cdnUrl":"https://cdn.3dassets.dev/assets/19515/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-range-officer-tower-47d35249","thumbnailUrl":"https://cdn.3dassets.dev/assets/19515/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19515/v1/poster.webp","blurhash":"U5A,j~-;009Z~SWA9IxvGXRjQmxaPBoz#,Vr","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":468040,"triangles":9568,"vertices":28704,"meshes":3,"materials":3,"textures":2,"animations":[],"boundingBox":{"min":[-0.8500000238418579,0,-0.8650000095367432],"max":[0.8500000238418579,3.2599875073257274,0.8650606973218093]},"sizeMeters":[1.7,3.26,1.73],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:14.195Z","updatedAt":"2026-09-07T21:20:01.609Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19515/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RangeOfficerTowerFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19515/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19515/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19515/v1/model.glb\" alt=\"Range officer tower (FPS Guns and Shooting Range)\" 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/19515/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/19515/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19509","slug":"fps-weapon-set-and-firing-range-safety-sign-3156e80c","title":"Safety sign (FPS Guns and Shooting Range)","summary":"Safety sign with original detailed construction in metres.","description":"Safety sign Dimensions 0.75 × 1.60 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-safety-sign-3156e80c","cdnUrl":"https://cdn.3dassets.dev/assets/19509/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-safety-sign-3156e80c","thumbnailUrl":"https://cdn.3dassets.dev/assets/19509/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19509/v1/poster.webp","blurhash":"U5AJ~E%h009D~px[0K9FjBxTohE94oxu?bD%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":140000,"triangles":2824,"vertices":8472,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.375,-7.450584593726717e-11,-0.25003204817236063],"max":[0.375,1.600000023841858,0.25003204817236063]},"sizeMeters":[0.75,1.6,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:09.876Z","updatedAt":"2026-09-07T21:20:01.750Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19509/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SafetySignFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19509/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19509/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19509/v1/model.glb\" alt=\"Safety sign (FPS Guns and Shooting Range)\" 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/19509/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/19509/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19503","slug":"fps-weapon-set-and-firing-range-range-flag-fb6c5398","title":"Range flag (FPS Guns and Shooting Range)","summary":"Range flag with original detailed construction in metres.","description":"Range flag Dimensions 0.74 × 2.26 × 0.36 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-range-flag-fb6c5398","cdnUrl":"https://cdn.3dassets.dev/assets/19503/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-range-flag-fb6c5398","thumbnailUrl":"https://cdn.3dassets.dev/assets/19503/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19503/v1/poster.webp","blurhash":"U37dg?yE008w}+EM0-^i-.ofE3V@AIxZ,.E3","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":30560,"triangles":300,"vertices":900,"meshes":3,"materials":3,"textures":2,"animations":[],"boundingBox":{"min":[-0.37250000424683094,0.000006407024599475175,-0.18000000715255737],"max":[0.3725000023841858,2.259999990463257,0.18000000715255737]},"sizeMeters":[0.745,2.26,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:07.076Z","updatedAt":"2026-09-07T21:20:01.831Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19503/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RangeFlagFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19503/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19503/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19503/v1/model.glb\" alt=\"Range flag (FPS Guns and Shooting Range)\" 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/19503/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/19503/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19495","slug":"fps-weapon-set-and-firing-range-bench-rest-927c5d39","title":"Bench rest (FPS Guns and Shooting Range)","summary":"Bench rest with original detailed construction in metres.","description":"Bench rest Dimensions 1.50 × 0.92 × 0.80 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-bench-rest-927c5d39","cdnUrl":"https://cdn.3dassets.dev/assets/19495/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-bench-rest-927c5d39","thumbnailUrl":"https://cdn.3dassets.dev/assets/19495/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19495/v1/poster.webp","blurhash":"U5B3mIaw9|~qUu~WE24n00H?8_IoGaD%~V%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":341112,"triangles":6596,"vertices":19788,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-0.75,0.000008335028828965196,-0.40005188146610926],"max":[0.75,0.9171002204325156,0.40005188146610926]},"sizeMeters":[1.5,0.917,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:03.538Z","updatedAt":"2026-09-07T21:20:01.991Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19495/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BenchRestFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19495/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19495/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19495/v1/model.glb\" alt=\"Bench rest (FPS Guns and Shooting Range)\" 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/19495/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/19495/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19437","slug":"fps-weapon-set-and-firing-range-battle-rifle-5ba2a611","title":"Battle rifle (FPS Guns and Shooting Range)","summary":"Battle rifle with original detailed construction in metres.","description":"Battle rifle Dimensions 0.07 × 0.26 × 1.05 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips stock-open, stock-close, magazine-open, magazine-close work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-battle-rifle-5ba2a611","cdnUrl":"https://cdn.3dassets.dev/assets/19437/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-battle-rifle-5ba2a611","thumbnailUrl":"https://cdn.3dassets.dev/assets/19437/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19437/v1/poster.webp","blurhash":"U13[xW?c4n00_4RjIUM{0000?b~q00M__3?b","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":550236,"triangles":11324,"vertices":33972,"meshes":7,"materials":5,"textures":0,"animations":["stock-open","stock-close","magazine-open","magazine-close"],"boundingBox":{"min":[-0.035482905354669934,0,-0.5254976418035658],"max":[0.035482905354669934,0.2604987416030428,0.5254999995231628]},"sizeMeters":[0.071,0.26,1.051],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:58:39.325Z","updatedAt":"2026-09-07T21:20:02.944Z","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/19437/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 BattleRifleFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19437/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/19437/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19437/v1/model.glb\" alt=\"Battle rifle (FPS Guns and Shooting Range)\" 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/19437/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/19437/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"19436","slug":"fps-weapon-set-and-firing-range-assault-carbine-5a5b3ffe","title":"Assault carbine (FPS Guns and Shooting Range)","summary":"Assault carbine with original detailed construction in metres.","description":"Assault carbine Dimensions 0.07 × 0.26 × 0.89 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips stock-open, stock-close, magazine-open, magazine-close work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-assault-carbine-5a5b3ffe","cdnUrl":"https://cdn.3dassets.dev/assets/19436/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-assault-carbine-5a5b3ffe","thumbnailUrl":"https://cdn.3dassets.dev/assets/19436/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19436/v1/poster.webp","blurhash":"U24B^4%3I99F?wMxM_M|009Ex]?c00t7-=.8","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":550288,"triangles":11324,"vertices":33972,"meshes":7,"materials":5,"textures":0,"animations":["stock-open","stock-close","magazine-open","magazine-close"],"boundingBox":{"min":[-0.03548446273361319,0,-0.4454976435917052],"max":[0.03548446273361319,0.2604908547554464,0.445499986410141]},"sizeMeters":[0.071,0.26,0.891],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:58:39.311Z","updatedAt":"2026-09-07T21:20:02.950Z","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/19436/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 AssaultCarbineFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19436/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/19436/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19436/v1/model.glb\" alt=\"Assault carbine (FPS Guns and Shooting Range)\" 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/19436/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/19436/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"19434","slug":"fps-weapon-set-and-firing-range-service-pistol-e6a0f894","title":"Service pistol (FPS Guns and Shooting Range)","summary":"Service pistol with original detailed construction in metres.","description":"Service pistol Dimensions 0.04 × 0.22 × 0.22 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips magazine-open, magazine-close, slide-open, slide-close work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-service-pistol-e6a0f894","cdnUrl":"https://cdn.3dassets.dev/assets/19434/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-service-pistol-e6a0f894","thumbnailUrl":"https://cdn.3dassets.dev/assets/19434/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19434/v1/poster.webp","blurhash":"U655LTof4nV@_4fk9FWB%3RjM{t8M{M{og%M","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":487132,"triangles":10024,"vertices":30072,"meshes":6,"materials":4,"textures":0,"animations":["magazine-open","magazine-close","slide-open","slide-close"],"boundingBox":{"min":[-0.02074835492864128,0,-0.11150368250967632],"max":[0.02074835492864128,0.21850570769308697,0.11150597035884857]},"sizeMeters":[0.041,0.219,0.223],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:58:39.248Z","updatedAt":"2026-09-07T21:20:03.020Z","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/19434/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 ServicePistolFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19434/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/19434/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19434/v1/model.glb\" alt=\"Service pistol (FPS Guns and Shooting Range)\" 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/19434/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/19434/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"19508","slug":"fps-weapon-set-and-firing-range-ear-defender-rack-c609e0cc","title":"Ear defender rack (FPS Guns and Shooting Range)","summary":"Ear defender rack with original detailed construction in metres.","description":"Ear defender rack Dimensions 1.18 × 1.50 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-ear-defender-rack-c609e0cc","cdnUrl":"https://cdn.3dassets.dev/assets/19508/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-ear-defender-rack-c609e0cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/19508/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19508/v1/poster.webp","blurhash":"U39QgY-n00O[}o?a0f00N1IoQ,xv1%.8]~00","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":238980,"triangles":4684,"vertices":14052,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.5919751579626902,-7.450584593726717e-11,-0.24996948150294013],"max":[0.5919751579626902,1.5,0.24996948150294013]},"sizeMeters":[1.184,1.5,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:08.486Z","updatedAt":"2026-09-07T21:20:01.755Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19508/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EarDefenderRackFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19508/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19508/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19508/v1/model.glb\" alt=\"Ear defender rack (FPS Guns and Shooting Range)\" 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/19508/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/19508/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19538","slug":"fps-weapon-set-and-firing-range-ammo-shelf-ede2c0cc","title":"Ammo shelf (FPS Guns and Shooting Range)","summary":"Ammo shelf with original detailed construction in metres.","description":"Ammo shelf Dimensions 1.28 × 1.80 × 0.53 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-ammo-shelf-ede2c0cc","cdnUrl":"https://cdn.3dassets.dev/assets/19538/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-ammo-shelf-ede2c0cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/19538/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19538/v1/poster.webp","blurhash":"U4Bg9z-.00D,~p%M4o9G4pNF-nogXSx[a1IB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":250176,"triangles":5000,"vertices":15000,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.6420056593955593,1.1175871339474952e-10,-0.2670033804647999],"max":[0.6420056593955593,1.7999999523162842,0.2670033804647999]},"sizeMeters":[1.284,1.8,0.534],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:23.285Z","updatedAt":"2026-09-07T21:20:01.141Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19538/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AmmoShelfFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19538/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19538/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19538/v1/model.glb\" alt=\"Ammo shelf (FPS Guns and Shooting Range)\" 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/19538/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/19538/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19524","slug":"fps-weapon-set-and-firing-range-cleaning-bench-c46ea77b","title":"Cleaning bench (FPS Guns and Shooting Range)","summary":"Cleaning bench with original detailed construction in metres.","description":"Cleaning bench Dimensions 1.80 × 0.94 × 1.30 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-cleaning-bench-c46ea77b","cdnUrl":"https://cdn.3dassets.dev/assets/19524/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-cleaning-bench-c46ea77b","thumbnailUrl":"https://cdn.3dassets.dev/assets/19524/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19524/v1/poster.webp","blurhash":"U27^lQawF|?H:i-qS~IU00xa00D*ClIT-qNZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":226004,"triangles":4568,"vertices":13704,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.000018379318380057352,-0.6500259235132478],"max":[0.8999999761581421,0.9400024490307768,0.6500259235132478]},"sizeMeters":[1.8,0.94,1.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:17.330Z","updatedAt":"2026-09-07T21:20:01.449Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19524/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleaningBenchFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19524/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19524/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19524/v1/model.glb\" alt=\"Cleaning bench (FPS Guns and Shooting Range)\" 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/19524/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/19524/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19523","slug":"fps-weapon-set-and-firing-range-wall-weapon-rack-319c25b3","title":"Wall weapon rack (FPS Guns and Shooting Range)","summary":"Wall weapon rack with original detailed construction in metres.","description":"Wall weapon rack Dimensions 1.20 × 1.10 × 0.17 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Static visual asset only; no working mechanism. +Z faces front. Named parts have pivots.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-wall-weapon-rack-319c25b3","cdnUrl":"https://cdn.3dassets.dev/assets/19523/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-wall-weapon-rack-319c25b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/19523/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19523/v1/poster.webp","blurhash":"U27UM7M_00-=~q-=IT9FIUxuM{D*WA?bM{4m","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":184040,"triangles":3416,"vertices":10248,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.00002593079997792458,-0.08680717212036851],"max":[0.6000000238418579,1.09997409304188,0.08678975914978919]},"sizeMeters":[1.2,1.1,0.174],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:16.762Z","updatedAt":"2026-09-07T21:20:01.462Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/19523/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallWeaponRackFPSGunsAndShootingRange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/19523/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/19523/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19523/v1/model.glb\" alt=\"Wall weapon rack (FPS Guns and Shooting Range)\" 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/19523/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/19523/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"19522","slug":"fps-weapon-set-and-firing-range-gun-safe-a56b99f2","title":"Gun safe (FPS Guns and Shooting Range)","summary":"Gun safe with original detailed construction in metres.","description":"Gun safe Dimensions 0.80 × 1.80 × 0.61 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips open, close work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-gun-safe-a56b99f2","cdnUrl":"https://cdn.3dassets.dev/assets/19522/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-gun-safe-a56b99f2","thumbnailUrl":"https://cdn.3dassets.dev/assets/19522/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19522/v1/poster.webp","blurhash":"U17UPCRj00Rk~qM{D$-;RXxtRzM}%ht6ITog","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":96040,"triangles":1644,"vertices":4932,"meshes":4,"materials":3,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.39994200423715043,0,-0.3075236433671123],"max":[0.39994200423715043,1.7999999523162842,0.3074896958633786]},"sizeMeters":[0.8,1.8,0.615],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:14.779Z","updatedAt":"2026-09-07T21:20:01.452Z","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/19522/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 GunSafeFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19522/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/19522/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19522/v1/model.glb\" alt=\"Gun safe (FPS Guns and Shooting Range)\" 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/19522/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/19522/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"19542","slug":"fps-weapon-set-and-firing-range-armourer-cabinet-a11c76c7","title":"Armourer cabinet (FPS Guns and Shooting Range)","summary":"Armourer cabinet with original detailed construction in metres.","description":"Armourer cabinet Dimensions 1.20 × 1.80 × 0.61 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Blued steel, galvanised frames, walnut, polymer and canvas. Static geometry; no rig, animation, collision or navigation data. Rigid node-transform clips open, close work the named parts on their own pivots; there is no skinning. +Z faces front.","status":"published","url":"https://3dassets.dev/assets/fps-weapon-set-and-firing-range-armourer-cabinet-a11c76c7","cdnUrl":"https://cdn.3dassets.dev/assets/19542/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-weapon-set-and-firing-range-armourer-cabinet-a11c76c7","thumbnailUrl":"https://cdn.3dassets.dev/assets/19542/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/19542/v1/poster.webp","blurhash":"U284oM9F00%M_Nt6D$Rl9H%ftJM*.9xtMwM|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"}],"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":96104,"triangles":1644,"vertices":4932,"meshes":4,"materials":3,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.6000366063158291,0,-0.3075236433671123],"max":[0.6000366063158291,1.7999999523162842,0.3074896958633786]},"sizeMeters":[1.2,1.8,0.615],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:59:25.689Z","updatedAt":"2026-09-07T21:20:01.057Z","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/19542/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 ArmourerCabinetFPSGunsAndShootingRange(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/19542/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/19542/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/19542/v1/model.glb\" alt=\"Armourer cabinet (FPS Guns and Shooting Range)\" 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/19542/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/19542/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}