{"data":{"id":248,"slug":"fps-survival-forest-outpost","title":"FPS Survival Forest Outpost","summary":"Free 3D game assets for a first person survival shooter: a modular forest station kit, crafting and power, a palisade perimeter with traps, five invented weapons on a rarity ladder, vehicles and twelve rigged characters.","description":"A complete set for a survival extraction shooter set in dense conifer forest, where a scavenger crew has fortified a half derelict logging and research station. The station kit is seventeen modules on a 4 m bay grid at a 3.5 m storey: corrugated and concrete wall bays, a window bay glazed and boarded, a hinged steel door bay, a tilting roller shutter bay, corner columns, floor slabs plain and with a stairwell, a stair flight, flat and pitched roof bays, a timber lookout tower with a ladder and a lit roof, a shipping container closed and standing open, a lean-to and a fuel shed. Sixteen pieces cover base building and crafting: a workbench with drawers and a lit lamp, a gunsmith bench, a scrap forge with a glowing firebox and worked bellows, a generator with a spinning flywheel, a fuel drum rack, a water purifier, a wind turbine, a solar array, a lattice radio mast with a swaying aerial and a red beacon, a tracking antenna dish, a two door steel locker, a shelving rack with crates that slide out, a hand ammunition press, a cooking fire with a pot, a drying rack and a tool wall. Thirteen pieces close and defend the perimeter: palisade bays and a two leaf gate, a sandbag wall, razor wire, chain link bays and a gate, a watch platform, a covered spike pit, a sprung bear trap, a tripwire flare, a punji line, a boarded barricade and a wrecked truck barricade. Twenty nine loot and gear pieces cover the five step rarity ladder on emissive rings, five original weapon archetypes with detachable magazines and moving bolts, slides or a break action, a recurve bow, a machete, backpacks, a plate carrier, a medical kit, bandages, a canteen, ration tins, an ammunition box, scrap and ore nodes, a fuel can, a lockbox, a supply crate, a landed supply drop, a field radio, a wind up torch and signal flares. Nineteen more give the world its vehicles and dressing: a quad, a battered pickup and a loaded logging truck with rolling wheels and opening cab doors, conifers in three sizes, stumps, a fallen log, boulders, undergrowth, ferns, a fuel bowser, oil drums plain and burning, pallet and tyre stacks, a floodlight mast, a hanging road sign and a campfire. Twelve figures finish it: a survivor scavenger, a masked raider, an armoured heavy, a scout with a bow, a field medic, a trader, a hazmat researcher, two infected variants, a stalker, a wolf and a boar. Every figure is a rigid jointed puppet of parented nodes on real joint pivots, with idle, head-turn, arm-swing and weapon-raise clips. Each is built to the tier: a shaped skull with a brow, a nose, cheekbones, a jaw and ears, eyes and a mouth in geometry rather than a texture, mitted hands with a separated thumb, layered clothing with a collar, a belt, straps, pockets and a hem with thickness, and boots with soles, toe caps and laces. There is no skeleton and no skin weighting anywhere in this pipeline, the fingers inside the mitt, the faces and the cloth are solid, and the legs are static so the feet stay planted. The pack is night capable by design: with no punctual lights in the pipeline, five emissive materials carry the light, on the fires, the furnace mouth, the floodlights, the screens, the warning lamps, the flares and the loot rings. The design is original throughout: no game names, logos, map layouts, callouts, operator or weapon names, no calibre designations, and no badges, insignia or lettering. Metre units, +Y up, +Z front, ground contact at y = 0.","url":"https://3dassets.dev/packs/fps-survival-forest-outpost","coverUrl":"https://cdn.3dassets.dev/assets/32712/v1/poster.webp","assetCount":109,"aiGenerated":true,"aiGeneratedAssetCount":109,"aiModels":["claude-opus-5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":39128676,"totalTriangles":1332592,"starterScene":{"id":"32712","slug":"fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","title":"Fortified forest outpost (FPS Survival Forest Outpost)","summary":"A free survival game scene: a fortified scavenger outpost in dense conifer forest around a half derelict research station. A ring of timber palisade and chain link closes a 28 by 20 metre compound, with a two leaf palisade gate on the south track under a lit red lamp and...","description":"A free survival game scene: a fortified scavenger outpost in dense conifer forest around a half derelict research station. A ring of timber palisade and chain link closes a 28 by 20 metre compound, with a two leaf palisade gate on the south track under a lit red lamp and razor wire, punji stakes, a covered spike pit, a bear trap and a tripwire flare on the approach outside it. The station in the middle is built from the modular kit: two bays by two on the 4 m grid, two storeys of corrugated, concrete, window, boarded, door and roller shutter bays with a column in every corner, a deck and a stair flight between the storeys, and a flat roof carrying a solar array, a tracking dish and a legendary loot cache. In front of it the crafting yard is in use: the workbench with a carbine on it, the forge with its glowing firebox, the generator, the water purifier, the fuel drum rack, the drying rack and a steel locker, with the cooking fire and a campfire burning and a brazier going in a cut down drum. The lookout tower, the radio mast and the wind turbine give height at the back and a floodlight mast lights the yard. A pickup and a quad are parked inside. Loot is where a player would find it: four rarity caches, crates, an ammunition box, a lockbox, a medical kit, a pack, a plate carrier, a fuel can, scrap and ore. Eight figures are in play: the scavenger at the bench, the heavy on the gate, the scout on the tower with a marksman rifle beside her, the medic at the campfire, the trader by the container, a raider walking up the track, an infected in the trees and a wolf out in the forest. Static layout: the models keep their own clips, the scene adds none.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/32712/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/32712/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32712/v1/poster.webp","blurhash":"U268jHyC00%|S_tks;Me00IB_2MLq{MKN?%|","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8216824,"triangles":382592,"vertices":356926,"meshes":470,"materials":16,"textures":3,"animations":[],"boundingBox":{"min":[-23.29836976242612,-1.0499496355322198,-17.23649920341523],"max":[24.24718951806467,14.140439987182617,20.328361734036932]},"sizeMeters":[47.546,15.19,37.565],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":4,"publishedAt":"2026-09-08T12:54:40.826Z","updatedAt":"2026-09-08T18:41:10.438Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32712/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FortifiedForestOutpostFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32712/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32712/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32712/v1/model.glb\" alt=\"Fortified forest outpost (FPS Survival Forest Outpost)\" 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/32712/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/32712/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"32605","slug":"fps-survival-forest-outpost-wall-bay-corrugated-10ebe840","title":"Corrugated Wall Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular corrugated steel wall bay, 4 m wide and 3.5 m high, with a connector port at each end.","description":"A corrugated steel wall bay for the station kit: a 4 m by 3.5 m frame 0.28 m thick clad both sides in fluted sheet that stands 22 mm proud of the studs, on a cast plinth with a rusted head rail. The pivot is on the grid origin, so bays run end to end and stack at a 3.72 m storey pitch over the floor deck. Dimensions 4.00 × 3.53 × 0.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-corrugated-10ebe840","cdnUrl":"https://cdn.3dassets.dev/assets/32605/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-corrugated-10ebe840","thumbnailUrl":"https://cdn.3dassets.dev/assets/32605/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32605/v1/poster.webp","blurhash":"U27UCz~p00ITHrjE%zN1^jVs4:XS?b~p$~01","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":562268,"triangles":7850,"vertices":8124,"meshes":6,"materials":6,"textures":2,"animations":[],"boundingBox":{"min":[-2,-0.0000054821557119999476,-0.25996521267466144],"max":[2,3.5256752386590504,0.25996521267466144]},"sizeMeters":[4,3.526,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:02.596Z","updatedAt":"2026-09-08T12:54:02.694Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32605/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CorrugatedWallBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32605/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32605/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32605/v1/model.glb\" alt=\"Corrugated Wall Bay 4 m (FPS Survival Forest Outpost)\" 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/32605/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/32605/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32609","slug":"fps-survival-forest-outpost-wall-bay-concrete-8adc6c13","title":"Concrete Wall Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular cast concrete wall bay, 4 m wide and 3.5 m high, with a connector port at each end.","description":"The cast concrete finish of the plain wall bay: the same 4 m by 3.5 m panel and grid pivot with the cladding stripped off, leaving damp shuttered concrete with a proud plinth and pilasters. Dimensions 4.00 × 3.59 × 0.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-concrete-8adc6c13","cdnUrl":"https://cdn.3dassets.dev/assets/32609/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-concrete-8adc6c13","thumbnailUrl":"https://cdn.3dassets.dev/assets/32609/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32609/v1/poster.webp","blurhash":"U5C%8H~q00M{%M_3of4n00IU_3ofa#%MayD%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":344416,"triangles":6474,"vertices":5868,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.00007418521021707036,-0.26001770073549607],"max":[2,3.5880000591278076,0.26001770073549607]},"sizeMeters":[4,3.588,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:03.173Z","updatedAt":"2026-09-08T12:54:03.366Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32609/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ConcreteWallBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32609/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32609/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32609/v1/model.glb\" alt=\"Concrete Wall Bay 4 m (FPS Survival Forest Outpost)\" 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/32609/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/32609/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32607","slug":"fps-survival-forest-outpost-wall-bay-window-cd623f25","title":"Window Wall Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular concrete wall bay with a steel framed window, cill and lintel, 4 m wide with a port at each end.","description":"A concrete wall bay pierced by a 1.7 m by 1.4 m opening: a steel window frame with a centre mullion and transom set inside the reveal, a proud cast cill below and a lintel over. The pivot is on the grid origin and a port sits at each end. Dimensions 4.02 × 3.54 × 0.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-window-cd623f25","cdnUrl":"https://cdn.3dassets.dev/assets/32607/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-window-cd623f25","thumbnailUrl":"https://cdn.3dassets.dev/assets/32607/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32607/v1/poster.webp","blurhash":"U5C%58~p00WX^j~ptR4n00aJ%gNH-p-pV@9G","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":370980,"triangles":8176,"vertices":7644,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-2.009999990463257,0.00003082250826236255,-0.25996521267466144],"max":[2.009999990463257,3.5356752291223073,0.25996521267466144]},"sizeMeters":[4.02,3.536,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:02.999Z","updatedAt":"2026-09-08T12:54:03.111Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32607/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WindowWallBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32607/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32607/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32607/v1/model.glb\" alt=\"Window Wall Bay 4 m (FPS Survival Forest Outpost)\" 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/32607/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/32607/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32611","slug":"fps-survival-forest-outpost-wall-bay-window-boarded-fd43ce84","title":"Boarded Window Wall Bay (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular wall bay with the window smashed out and boarded over with pine, 4 m wide with a port at each end.","description":"The boarded finish of the window wall bay: the same opening with the pane smashed out, shards left in the top corners and five pine boards nailed across the front, standing proud of the reveal. Dimensions 4.02 × 3.54 × 0.54 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-window-boarded-fd43ce84","cdnUrl":"https://cdn.3dassets.dev/assets/32611/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-window-boarded-fd43ce84","thumbnailUrl":"https://cdn.3dassets.dev/assets/32611/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32611/v1/poster.webp","blurhash":"U4CPw{^+00Xm,C~ppJ0100V[#lNG?v?bIA4n","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":442104,"triangles":9452,"vertices":8808,"meshes":7,"materials":7,"textures":2,"animations":[],"boundingBox":{"min":[-2.009999990463257,0.00003082250826236255,-0.25996521267466144],"max":[2.009999990463257,3.5356752291223073,0.27796848117964135]},"sizeMeters":[4.02,3.536,0.538],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:03.765Z","updatedAt":"2026-09-08T12:54:03.931Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32611/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoardedWindowWallBayFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32611/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32611/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32611/v1/model.glb\" alt=\"Boarded Window Wall Bay (FPS Survival Forest Outpost)\" 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/32611/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/32611/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32608","slug":"fps-survival-forest-outpost-wall-bay-door-68988fab","title":"Steel Door Wall Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular wall bay with a hinged steel door on three hinges, 4 m wide with a port at each end. Animated open and close.","description":"A concrete wall bay with a 1.14 m by 2.4 m doorway and a hinged steel leaf. The leaf hangs on three barrel hinges on the left stile, carries two stiffening ribs and a vertical pull bar, and swings outward on a pivot set on the wall face. A steel threshold plate stands proud of the plinth. Dimensions 4.02 × 3.55 × 0.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-door-68988fab","cdnUrl":"https://cdn.3dassets.dev/assets/32608/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-door-68988fab","thumbnailUrl":"https://cdn.3dassets.dev/assets/32608/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32608/v1/poster.webp","blurhash":"U4CZU_xu00xa#k~XNf0000xb-;IVg5%M-pIV","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"},{"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":370136,"triangles":7950,"vertices":7687,"meshes":7,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-2.009999990463257,0,-0.25996521267466144],"max":[2.009999990463257,3.5506752744218373,0.25996521267466144]},"sizeMeters":[4.02,3.551,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:03.032Z","updatedAt":"2026-09-08T12:54:03.162Z","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/32608/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 SteelDoorWallBay4MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32608/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/32608/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32608/v1/model.glb\" alt=\"Steel Door Wall Bay 4 m (FPS Survival Forest Outpost)\" 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/32608/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/32608/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32610","slug":"fps-survival-forest-outpost-wall-bay-shutter-b4058c18","title":"Roller Shutter Wall Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular wall bay with a 3 m tilting roller shutter on guide rails, 4 m wide with a port at each end. Animated open and close.","description":"A concrete wall bay with a 3 m by 2.7 m vehicle opening closed by a shutter of thirteen slats. The curtain hangs from a barrel at the head and tilts up and out over it, running in two guide rails that stand proud of the jamb reveals, with a rusted bottom rail and a lifting bar across it. Dimensions 4.02 × 3.54 × 0.59 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The barrel above the opening is fixed: the curtain is one rigid leaf, not a coiling slat chain, because a rigid node transform cannot roll a curtain onto a drum.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wall-bay-shutter-b4058c18","cdnUrl":"https://cdn.3dassets.dev/assets/32610/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wall-bay-shutter-b4058c18","thumbnailUrl":"https://cdn.3dassets.dev/assets/32610/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32610/v1/poster.webp","blurhash":"U5Ame$V@00bF~q?bDiD%rCxa9tIUM{-on$4:","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"},{"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":586036,"triangles":7912,"vertices":8859,"meshes":6,"materials":5,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-2.009999990463257,0.00003082250826236255,-0.25996521267466144],"max":[2.009999990463257,3.5356752291223073,0.32994226421307615]},"sizeMeters":[4.02,3.536,0.59],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:03.457Z","updatedAt":"2026-09-08T12:54:03.845Z","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/32610/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 RollerShutterWallBay4MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32610/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/32610/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32610/v1/model.glb\" alt=\"Roller Shutter Wall Bay 4 m (FPS Survival Forest Outpost)\" 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/32610/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/32610/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32606","slug":"fps-survival-forest-outpost-corner-column-31b0d308","title":"Station Corner Column 3.5 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 0.46 m square concrete corner column 3.5 m tall, filling the square where two modular wall bays meet.","description":"The corner post of the station kit: a 0.46 m square concrete column 3.5 m tall on a spread base, with a rusted cap band and four external tie rods at its arrises. It is wider than the 0.28 m wall bays, so two runs stopping at each other's inner face meet inside it with nothing sharing a plane. Dimensions 0.66 × 3.50 × 0.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-corner-column-31b0d308","cdnUrl":"https://cdn.3dassets.dev/assets/32606/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-corner-column-31b0d308","thumbnailUrl":"https://cdn.3dassets.dev/assets/32606/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32606/v1/poster.webp","blurhash":"U17nRQ_30000Z~Rikr%M?GWBE2ozs-ofX9WB","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":245376,"triangles":2264,"vertices":2384,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.329901129131944,0,-0.329901129131944],"max":[0.329901129131944,3.5,0.329901129131944]},"sizeMeters":[0.66,3.5,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:02.632Z","updatedAt":"2026-09-08T12:54:02.734Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32606/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationCornerColumn35MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32606/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32606/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32606/v1/model.glb\" alt=\"Station Corner Column 3.5 m (FPS Survival Forest Outpost)\" 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/32606/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/32606/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32612","slug":"fps-survival-forest-outpost-floor-slab-f61a944d","title":"Station Floor Slab 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m square concrete floor slab 0.22 m thick with a chequer deck plate, with ports on all four edges.","description":"A 4 m square concrete floor slab 0.22 m thick, with a deck plate laid proud of its top face and two rusted downstand beams under it. The pivot is on the grid origin and a port sits at the centre of each edge, so decks tile without a gap. Dimensions 4.02 × 0.45 × 4.02 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-floor-slab-f61a944d","cdnUrl":"https://cdn.3dassets.dev/assets/32612/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-floor-slab-f61a944d","thumbnailUrl":"https://cdn.3dassets.dev/assets/32612/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32612/v1/poster.webp","blurhash":"U28g+}?v00IU.8M{awx[00DjS7j[DN-;M|D%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"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":567796,"triangles":5368,"vertices":8924,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-2.007999897003174,0.000015938616626243185,-2.007999897003174],"max":[2.007999897003174,0.4473654563028346,2.007999897003174]},"sizeMeters":[4.016,0.447,4.016],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:03.876Z","updatedAt":"2026-09-08T12:54:03.978Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32612/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationFloorSlab4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32612/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32612/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32612/v1/model.glb\" alt=\"Station Floor Slab 4 m (FPS Survival Forest Outpost)\" 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/32612/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/32612/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32613","slug":"fps-survival-forest-outpost-floor-slab-stairwell-8a26f4b7","title":"Stairwell Floor Slab 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m floor slab with a 1.5 m by 2.6 m stairwell opening and a guard rail, with ports on all four edges.","description":"The stairwell version of the floor slab: the same 4 m square deck with a 1.5 m by 2.6 m opening cut through it for the stair flight, guarded on three sides by a steel rail. Ports on all four edges. Dimensions 4.36 × 1.38 × 4.02 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-floor-slab-stairwell-8a26f4b7","cdnUrl":"https://cdn.3dassets.dev/assets/32613/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-floor-slab-stairwell-8a26f4b7","thumbnailUrl":"https://cdn.3dassets.dev/assets/32613/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32613/v1/poster.webp","blurhash":"U39tJt%g00%14oITxtx]00D%x]M{~V_3x]Di","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"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":484696,"triangles":4212,"vertices":5201,"meshes":5,"materials":5,"textures":2,"animations":[],"boundingBox":{"min":[-2.3499999046325684,0.000015938616626243185,-2.007999897003174],"max":[2.007999897003174,1.3769770713433953,2.007999897003174]},"sizeMeters":[4.358,1.377,4.016],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:05.506Z","updatedAt":"2026-09-08T12:54:05.596Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32613/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StairwellFloorSlab4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32613/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32613/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32613/v1/model.glb\" alt=\"Stairwell Floor Slab 4 m (FPS Survival Forest Outpost)\" 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/32613/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/32613/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32614","slug":"fps-survival-forest-outpost-stair-flight-8f862d7e","title":"Station Stair Flight 3.72 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a straight steel stair flight of sixteen treads climbing one 3.72 m storey, with a handrail on both stringers.","description":"A straight steel stair flight climbing +Z through one 3.72 m storey in sixteen open treads on two plate stringers, each tread a chequer plate proud of its riser. A tubular handrail on three stanchions runs up both sides. It lands under the stairwell floor slab. Dimensions 1.67 × 4.95 × 4.61 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-stair-flight-8f862d7e","cdnUrl":"https://cdn.3dassets.dev/assets/32614/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-stair-flight-8f862d7e","thumbnailUrl":"https://cdn.3dassets.dev/assets/32614/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32614/v1/poster.webp","blurhash":"U24_wr%M00Rj-;?bRj9F00ay_4WV9E9F%M_3","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":526316,"triangles":14200,"vertices":15136,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.8350757271727637,0.00006576107859990188,-2.3026504516601562],"max":[0.8350757271727637,4.949197292327881,2.3026504516601562]},"sizeMeters":[1.67,4.949,4.605],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:05.635Z","updatedAt":"2026-09-08T12:54:05.797Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32614/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationStairFlight372MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32614/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32614/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32614/v1/model.glb\" alt=\"Station Stair Flight 3.72 m (FPS Survival Forest Outpost)\" 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/32614/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/32614/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32615","slug":"fps-survival-forest-outpost-roof-slab-flat-d77204d7","title":"Flat Roof Slab 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m square flat roof slab with a drip edge and felt covering, with ports on all four edges.","description":"A 4 m square flat roof slab 0.24 m thick with a rusted drip edge standing proud of it and a felt covering inset from that, laid in two runs with a lapped seam. The pivot is on the grid origin and a port sits at the centre of each edge. Dimensions 4.24 × 0.84 × 4.24 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-roof-slab-flat-d77204d7","cdnUrl":"https://cdn.3dassets.dev/assets/32615/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-roof-slab-flat-d77204d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/32615/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32615/v1/poster.webp","blurhash":"U38Wy^~U00RhvgRjS#t8009HkXR.C6%M%2In","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":248256,"triangles":2200,"vertices":2243,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-2.119999885559082,0.00005628277771088652,-2.119999885559082],"max":[2.119999885559082,0.8379999995231628,2.119999885559082]},"sizeMeters":[4.24,0.838,4.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:05.910Z","updatedAt":"2026-09-08T12:54:06.046Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32615/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FlatRoofSlab4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32615/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32615/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32615/v1/model.glb\" alt=\"Flat Roof Slab 4 m (FPS Survival Forest Outpost)\" 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/32615/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/32615/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32616","slug":"fps-survival-forest-outpost-roof-slab-pitched-af6b032f","title":"Pitched Roof Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m pitched roof bay in corroded corrugated sheet on pine purlins, with ports on all four edges.","description":"The pitched version of the roof bay: two 16 degree slopes of corroded corrugated sheet on four pine purlins, closed by a proud ridge cap and an eaves board on each side. Bays sit side by side along the ridge. Dimensions 4.00 × 1.09 × 4.26 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-roof-slab-pitched-af6b032f","cdnUrl":"https://cdn.3dassets.dev/assets/32616/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-roof-slab-pitched-af6b032f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32616/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32616/v1/poster.webp","blurhash":"U6AlqU}?0LEM$%S1W-xa019v^isp9vsEn,Ip","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":325204,"triangles":4220,"vertices":4540,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-1.9999912570880374,-0.000042077697701869976,-2.130000114440918],"max":[1.9999912570880374,1.0851221639787698,2.130000114440918]},"sizeMeters":[4,1.085,4.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:06.474Z","updatedAt":"2026-09-08T12:54:06.582Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32616/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PitchedRoofBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32616/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32616/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32616/v1/model.glb\" alt=\"Pitched Roof Bay 4 m (FPS Survival Forest Outpost)\" 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/32616/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/32616/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32617","slug":"fps-survival-forest-outpost-lookout-tower-6ec2904b","title":"Timber Lookout Tower 8.7 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a battered timber lookout tower 8.7 m tall with a railed platform, a fixed ladder and a lit roof over it.","description":"A four legged timber lookout tower with a 2.7 m railed platform 5.6 m up, reached by an eighteen rung steel ladder on the back face. The legs rake outward to a splayed base, braced on both flanks; the platform is decked in chequer plate over a timber frame and screened waist high in steel sheet, with the rail left open over the ladder head. A shingled pyramid roof on four posts carries a lit work lamp on its underside. Dimensions 3.32 × 8.65 × 3.79 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data. The ladder, the rail and the roof are one static assembly; only the pack's doors, machinery and figures animate.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-lookout-tower-6ec2904b","cdnUrl":"https://cdn.3dassets.dev/assets/32617/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-lookout-tower-6ec2904b","thumbnailUrl":"https://cdn.3dassets.dev/assets/32617/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32617/v1/poster.webp","blurhash":"U17,*_^j000M~7xb0jE1_Lxt0M9a4nR+?bxV","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":862240,"triangles":16002,"vertices":18681,"meshes":8,"materials":8,"textures":3,"animations":[],"boundingBox":{"min":[-1.6617008447647095,-0.00008453560273586486,-1.8932662378560763],"max":[1.6617008447647095,8.649999618530273,1.893450379371643]},"sizeMeters":[3.323,8.65,3.787],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:06.636Z","updatedAt":"2026-09-08T12:54:06.753Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32617/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberLookoutTower87MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32617/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32617/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32617/v1/model.glb\" alt=\"Timber Lookout Tower 8.7 m (FPS Survival Forest Outpost)\" 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/32617/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/32617/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32618","slug":"fps-survival-forest-outpost-shipping-container-9486906f","title":"Shipping Container 6 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a corroded 6 m shipping container with two hinged end doors on locking bars. Animated open and close.","description":"A corroded 6.05 m by 2.44 m by 2.59 m shipping container: a corrugated shell over a boxed frame, with eight corner castings, top and bottom side rails and two hinged end leaves on the +X face. Each leaf carries two locking bars and a cam handle and swings clear of the flank on its own stile. Dimensions 6.21 × 2.60 × 2.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-shipping-container-9486906f","cdnUrl":"https://cdn.3dassets.dev/assets/32618/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-shipping-container-9486906f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32618/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32618/v1/poster.webp","blurhash":"U15YA}oh00%1~W_3InD*00xZ%gRj00a%%NMw","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":430276,"triangles":11696,"vertices":10822,"meshes":9,"materials":5,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-3.1075000762939453,0.00007097673877454191,-1.3314384652016475],"max":[3.1075316988004076,2.6011291270209913,1.3314384652016475]},"sizeMeters":[6.215,2.601,2.663],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:06.682Z","updatedAt":"2026-09-08T12:54:06.918Z","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/32618/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 ShippingContainer6MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32618/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/32618/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32618/v1/model.glb\" alt=\"Shipping Container 6 m (FPS Survival Forest Outpost)\" 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/32618/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/32618/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32620","slug":"fps-survival-forest-outpost-shipping-container-open-69ef7291","title":"Open Shipping Container 6 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a corroded 6 m shipping container with both end doors swung back against its flanks.","description":"The open pose of the shipping container: the same 6.05 m by 2.44 m box with both end leaves swung 100 degrees back against the flanks and held there in the geometry, so it can be dropped into a scene as a shelter without playing a clip. Dimensions 6.13 × 2.60 × 2.78 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-shipping-container-open-69ef7291","cdnUrl":"https://cdn.3dassets.dev/assets/32620/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-shipping-container-open-69ef7291","thumbnailUrl":"https://cdn.3dassets.dev/assets/32620/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32620/v1/poster.webp","blurhash":"U25=Lj_4Z}_1~q?bRmjL00D%IU4n009GIU9E","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":450532,"triangles":11696,"vertices":10822,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-3.067142963409424,0.00007102782119394746,-1.387782323825027],"max":[3.067142963409424,2.6011290759385717,1.387782323825027]},"sizeMeters":[6.134,2.601,2.776],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:07.048Z","updatedAt":"2026-09-08T12:54:07.179Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32620/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenShippingContainer6MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32620/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32620/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32620/v1/model.glb\" alt=\"Open Shipping Container 6 m (FPS Survival Forest Outpost)\" 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/32620/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/32620/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32619","slug":"fps-survival-forest-outpost-lean-to-shelter-97e59032","title":"Lean-to Shelter 3.6 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a lean-to of pine poles and corrugated sheet, boarded at the back with a canvas flank, 3.6 m wide.","description":"A lean-to shelter on four pine poles: rafters falling from a 2.6 m back plate to a 1.85 m front, a corroded corrugated roof laid proud of them, a back wall of eight spaced boards, one flank hung with canvas and a bed of dry needles on the floor. Dimensions 4.10 × 2.81 × 2.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-lean-to-shelter-97e59032","cdnUrl":"https://cdn.3dassets.dev/assets/32619/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-lean-to-shelter-97e59032","thumbnailUrl":"https://cdn.3dassets.dev/assets/32619/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32619/v1/poster.webp","blurhash":"UDD8wSt50fjF}rxsI;R+EOe.RjNd9woLofM|","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":363588,"triangles":5952,"vertices":5436,"meshes":7,"materials":7,"textures":2,"animations":[],"boundingBox":{"min":[-2.049999952316284,0.0000900297047979684,-1.3292122863524818],"max":[2.049999952316284,2.8078483679574937,1.3292122863524818]},"sizeMeters":[4.1,2.808,2.658],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:06.941Z","updatedAt":"2026-09-08T12:54:07.082Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32619/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LeanToShelter36MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32619/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32619/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32619/v1/model.glb\" alt=\"Lean-to Shelter 3.6 m (FPS Survival Forest Outpost)\" 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/32619/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/32619/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32621","slug":"fps-survival-forest-outpost-fuel-shed-de138f49","title":"Fuel Store Shed 2.5 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a small corrugated fuel store on a concrete pad with a hinged door and a lit red warning lamp. Animated open and close.","description":"A 2.5 m by 2 m fuel store on a raised concrete pad: a boxed steel frame clad in corrugated sheet on three sides under a rusted mono-pitch roof, with a hinged panel door on the +X face on a proud jamb, a pull handle and cam, a louvred vent in the back wall and a lit red warning lamp over the head. Dimensions 2.82 × 2.70 × 2.36 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fuel-shed-de138f49","cdnUrl":"https://cdn.3dassets.dev/assets/32621/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fuel-shed-de138f49","thumbnailUrl":"https://cdn.3dassets.dev/assets/32621/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32621/v1/poster.webp","blurhash":"UEBfOnxa0gRj}SjYEhof-VayNGW;ENbIxaR*","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":514280,"triangles":5304,"vertices":6150,"meshes":9,"materials":7,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-1.409999966621399,0,-1.1799740655492716],"max":[1.409999966621399,2.7028989084673203,1.1800797748333565]},"sizeMeters":[2.82,2.703,2.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:08.489Z","updatedAt":"2026-09-08T12:54:08.587Z","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/32621/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 FuelStoreShed25MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32621/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/32621/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32621/v1/model.glb\" alt=\"Fuel Store Shed 2.5 m (FPS Survival Forest Outpost)\" 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/32621/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/32621/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32622","slug":"fps-survival-forest-outpost-workbench-28adb1a3","title":"Scavenger Workbench 2 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2 m scavenger workbench with two sliding drawers, a pegboard of tools, a bench vice and a lit work lamp. Animated open and close.","description":"The camp's main crafting bench: a 2 m planked pine top on a welded steel frame, with two drawers on runners under it, a pegboard back hung with hand tools, a vice bolted to the near corner, a scrap tray on the lower rail and a lit work lamp on a gooseneck over the work. Dimensions 2.04 × 1.91 × 0.90 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-workbench-28adb1a3","cdnUrl":"https://cdn.3dassets.dev/assets/32622/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-workbench-28adb1a3","thumbnailUrl":"https://cdn.3dassets.dev/assets/32622/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32622/v1/poster.webp","blurhash":"U15rDD-:00w~MbxbOa9X009E-.?cImx^rxIS","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":541156,"triangles":14600,"vertices":13957,"meshes":9,"materials":5,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-1.0199999809265137,0.000034031102490561516,-0.4474362026891299],"max":[1.0199999809265137,1.9126154211606212,0.44749465785975534]},"sizeMeters":[2.04,1.913,0.895],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:08.909Z","updatedAt":"2026-09-08T12:54:09.019Z","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/32622/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 ScavengerWorkbench2MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32622/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/32622/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32622/v1/model.glb\" alt=\"Scavenger Workbench 2 m (FPS Survival Forest Outpost)\" 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/32622/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/32622/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32623","slug":"fps-survival-forest-outpost-gunsmith-bench-71201a3d","title":"Gunsmith Bench 1.7 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.7 m gunsmith bench with a rubber mat, a barrel rack, a parts bin, a lit blue inspection screen and one drawer. Animated open and close.","description":"A weapons bench: a 1.7 m steel top with a rubber work mat laid on it, one deep drawer on runners, a back rack holding four spare barrels, a bin of small parts and springs, and a lit blue inspection screen angled over the work. Dimensions 1.70 × 1.67 × 0.81 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-gunsmith-bench-71201a3d","cdnUrl":"https://cdn.3dassets.dev/assets/32623/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-gunsmith-bench-71201a3d","thumbnailUrl":"https://cdn.3dassets.dev/assets/32623/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32623/v1/poster.webp","blurhash":"U15#nkVD00yZ.8-o9F9u4TE2%g-n00t-xvHq","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":326792,"triangles":7156,"vertices":6227,"meshes":8,"materials":6,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.8500000238418579,0,-0.40747954719859797],"max":[0.8500000238418579,1.6650223541777103,0.40750077179168626]},"sizeMeters":[1.7,1.665,0.815],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:09.002Z","updatedAt":"2026-09-08T12:54:09.109Z","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/32623/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 GunsmithBench17MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32623/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/32623/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32623/v1/model.glb\" alt=\"Gunsmith Bench 1.7 m (FPS Survival Forest Outpost)\" 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/32623/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/32623/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32624","slug":"fps-survival-forest-outpost-forge-furnace-0f59b719","title":"Scrap Forge and Anvil (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scrap built forge with a glowing firebox, a flue, worked bellows, an anvil on a block and a quench tub. Animated press-pull.","description":"A forge built out of scrap: a cast concrete base carrying a rusted steel firebox whose mouth glows behind a proud steel arch, a 1.6 m flue with a cap, a leather bellows on the flank worked by a pine lever on a real pivot, an anvil on a stump block and a quench tub of water beside it. Dimensions 2.31 × 3.48 × 1.25 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips press-pull turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The bellows bag itself is static: only the lever above it turns, because a rigid node transform cannot compress a bag.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-forge-furnace-0f59b719","cdnUrl":"https://cdn.3dassets.dev/assets/32624/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-forge-furnace-0f59b719","thumbnailUrl":"https://cdn.3dassets.dev/assets/32624/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32624/v1/poster.webp","blurhash":"U38Dz;-;004n00R%~po#5XR%=qxbt8jE$ft8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":365168,"triangles":6188,"vertices":5464,"meshes":9,"materials":8,"textures":2,"animations":["press-pull"],"boundingBox":{"min":[-1.156691494820818,0,-0.6250540475662414],"max":[1.156593840567325,3.4800000190734863,0.6249485774283537]},"sizeMeters":[2.313,3.48,1.25],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:09.446Z","updatedAt":"2026-09-08T12:54:09.553Z","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/32624/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 ScrapForgeAndAnvilFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32624/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/32624/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32624/v1/model.glb\" alt=\"Scrap Forge and Anvil (FPS Survival Forest Outpost)\" 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/32624/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/32624/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32625","slug":"fps-survival-forest-outpost-generator-unit-6a95d3ba","title":"Camp Generator and Flywheel (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scrap petrol generator on a skid with a spinning flywheel, a fuel tank, an exhaust and lit green and red status lamps. Animated spin.","description":"The camp's power: a single cylinder generator bolted to a steel skid, with a finned barrel, a fuel tank over it, an upright exhaust and a spoked flywheel on the +X end of the crank that turns about its own axle. The control panel carries a lit blue output meter and green and red status lamps. Dimensions 1.50 × 2.43 × 0.81 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips spin turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The belt, the pulley and the cylinder are static: only the flywheel turns, because a rigid node transform cannot run a belt round two pulleys.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-generator-unit-6a95d3ba","cdnUrl":"https://cdn.3dassets.dev/assets/32625/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-generator-unit-6a95d3ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/32625/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32625/v1/poster.webp","blurhash":"U35O7}xZ00Iq%0s:IpNG0MS5}@r;FfR+,.s,","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":272632,"triangles":4436,"vertices":3970,"meshes":9,"materials":8,"textures":1,"animations":["spin"],"boundingBox":{"min":[-0.7500566673165301,0,-0.40266239132309106],"max":[0.7500566673165301,2.4340999126434326,0.40266239132309106]},"sizeMeters":[1.5,2.434,0.805],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:09.641Z","updatedAt":"2026-09-08T12:54:09.784Z","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/32625/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 CampGeneratorAndFlywheelFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32625/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/32625/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32625/v1/model.glb\" alt=\"Camp Generator and Flywheel (FPS Survival Forest Outpost)\" 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/32625/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/32625/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32627","slug":"fps-survival-forest-outpost-fuel-drum-rack-d20f553a","title":"Fuel Drum Rack, Three Drums (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2.9 m welded rack holding three 200 litre drums on their sides with taps, over a drip tray and a jerry can.","description":"A 2.9 m welded steel rack carrying three 200 litre drums laid on their sides with a tap under each, standing over a shallow drip tray with a spare can beside it. Two of the drums are corroded and one is a repainted replacement. Dimensions 3.23 × 1.46 × 1.00 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fuel-drum-rack-d20f553a","cdnUrl":"https://cdn.3dassets.dev/assets/32627/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fuel-drum-rack-d20f553a","thumbnailUrl":"https://cdn.3dassets.dev/assets/32627/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32627/v1/poster.webp","blurhash":"U48Dtpw^00}T~B^O$iRk00={^kIp0Lx[$%E2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":296112,"triangles":4740,"vertices":5035,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.6150000095367432,0.00001704182052764125,-0.4999130386877938],"max":[1.6150000095367432,1.460017122680835,0.4999130386877938]},"sizeMeters":[3.23,1.46,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:10.132Z","updatedAt":"2026-09-08T12:54:10.262Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32627/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FuelDrumRackThreeDrumsFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32627/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32627/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32627/v1/model.glb\" alt=\"Fuel Drum Rack, Three Drums (FPS Survival Forest Outpost)\" 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/32627/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/32627/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32626","slug":"fps-survival-forest-outpost-water-purifier-b566db3e","title":"Water Purifier Still (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scrap water purifier with a settling tank, a filter column, pipework and a lit blue readout with a green ready lamp.","description":"A scrap built water purifier on a cast pad: a 1.7 m settling tank banded with two hoops and fitted with a sight glass, a filter column beside it, a hose from the intake and a cross pipe to the outlet. The control box carries a lit blue readout and a green ready lamp, with a collecting can under the tap. Dimensions 1.28 × 1.78 × 1.14 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-water-purifier-b566db3e","cdnUrl":"https://cdn.3dassets.dev/assets/32626/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-water-purifier-b566db3e","thumbnailUrl":"https://cdn.3dassets.dev/assets/32626/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32626/v1/poster.webp","blurhash":"U17K-uSw00Me04xv=roZxwIV8_--0ftR^j9E","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":439032,"triangles":3338,"vertices":3062,"meshes":8,"materials":8,"textures":2,"animations":[],"boundingBox":{"min":[-0.6413736930273619,-0.000023807079476710624,-0.57000489705393],"max":[0.6413736930273619,1.7799999713897705,0.5699574241278976]},"sizeMeters":[1.283,1.78,1.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:10.100Z","updatedAt":"2026-09-08T12:54:10.190Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32626/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterPurifierStillFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32626/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32626/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32626/v1/model.glb\" alt=\"Water Purifier Still (FPS Survival Forest Outpost)\" 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/32626/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/32626/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32628","slug":"fps-survival-forest-outpost-wind-turbine-dee233d0","title":"Guyed Wind Turbine, 5.2 m Mast (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a small guyed wind turbine on a tapered mast, with three blades that turn and a tail vane. Animated turbine-spin.","description":"A small wind turbine on a 5.2 m tapered mast guyed by three stays off a cast pad, with a nacelle, a cut plate tail vane and a three bladed rotor on a nose cone that turns about its own hub axis. Dimensions 3.75 × 7.03 × 4.24 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips turbine-spin turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The nacelle does not yaw: the tail vane is modelled but static, because yaw and rotor would need two nested channels on one node.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wind-turbine-dee233d0","cdnUrl":"https://cdn.3dassets.dev/assets/32628/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wind-turbine-dee233d0","thumbnailUrl":"https://cdn.3dassets.dev/assets/32628/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32628/v1/poster.webp","blurhash":"U34.G2x[00IB00Rj^,s:ITV@%Mxu_4t79FM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":458112,"triangles":3480,"vertices":3920,"meshes":5,"materials":4,"textures":2,"animations":["turbine-spin"],"boundingBox":{"min":[-1.8760923235516347,-0.000038361447601886756,-2.1218583583831787],"max":[1.8761561814362826,7.026078551636013,2.1218583583831787]},"sizeMeters":[3.752,7.026,4.244],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:10.310Z","updatedAt":"2026-09-08T12:54:10.551Z","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/32628/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 GuyedWindTurbine52MMastFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32628/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/32628/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32628/v1/model.glb\" alt=\"Guyed Wind Turbine, 5.2 m Mast (FPS Survival Forest Outpost)\" 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/32628/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/32628/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32629","slug":"fps-survival-forest-outpost-solar-array-d333e53f","title":"Solar Array on Frame 2.4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: two solar panels on a raked steel frame with pad footings, a charge controller and a lit green status lamp.","description":"A 2.4 m solar array: two glazed panels raked 30 degrees on a welded steel frame standing on four cast pad footings, with cell strings across the glass and a charge controller box on the back leg carrying a lit green status lamp. Dimensions 2.36 × 1.62 × 1.29 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-solar-array-d333e53f","cdnUrl":"https://cdn.3dassets.dev/assets/32629/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-solar-array-d333e53f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32629/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32629/v1/poster.webp","blurhash":"U37-sOx[00_2t.%fIA4n8wIUNfng8w?H_3V]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":467184,"triangles":4764,"vertices":4073,"meshes":6,"materials":6,"textures":2,"animations":[],"boundingBox":{"min":[-1.1799999475479126,0.00003998061938725178,-0.6428113365193713],"max":[1.1799999475479126,1.6157003831973638,0.6428113365193713]},"sizeMeters":[2.36,1.616,1.286],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:11.476Z","updatedAt":"2026-09-08T12:54:11.572Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32629/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SolarArrayOnFrame24MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32629/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32629/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32629/v1/model.glb\" alt=\"Solar Array on Frame 2.4 m (FPS Survival Forest Outpost)\" 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/32629/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/32629/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32630","slug":"fps-survival-forest-outpost-radio-mast-cba3b9db","title":"Lattice Radio Mast 11 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a tapered lattice radio mast with a swaying whip aerial, a lit red beacon and a transceiver cabinet at its foot. Animated sway.","description":"A tapered four leg lattice mast on a cast pad, braced in twelve panels, carrying a whip aerial with two cross elements that sways on its own base pivot, a lit red beacon under it, a cable run down one leg and a transceiver cabinet at the foot with a lit blue screen. Dimensions 1.58 × 11.05 × 1.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips sway turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-radio-mast-cba3b9db","cdnUrl":"https://cdn.3dassets.dev/assets/32630/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-radio-mast-cba3b9db","thumbnailUrl":"https://cdn.3dassets.dev/assets/32630/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32630/v1/poster.webp","blurhash":"U25}s-%M004n00Rj~qx]4nay?vofIoWV%2s:","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":461388,"triangles":12852,"vertices":11984,"meshes":7,"materials":6,"textures":1,"animations":["sway"],"boundingBox":{"min":[-0.7900000214576721,0,-0.75],"max":[0.7899902471899896,11.050000095367432,0.75]},"sizeMeters":[1.58,11.05,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:11.814Z","updatedAt":"2026-09-08T12:54:11.984Z","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/32630/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 LatticeRadioMast11MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32630/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/32630/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32630/v1/model.glb\" alt=\"Lattice Radio Mast 11 m (FPS Survival Forest Outpost)\" 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/32630/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/32630/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32631","slug":"fps-survival-forest-outpost-antenna-dish-8592b464","title":"Tracking Antenna Dish 1.9 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.9 m tracking dish on a pedestal with a tripod feed, a lit blue feed lamp and a control cabinet. Animated dish-spin.","description":"A 1.9 m parabolic dish on a 1.5 m pedestal: the reflector is a lathed shell raked 58 degrees, with a tripod feed and a lit blue feed lamp at its focus, and it sweeps a full turn about the pedestal axis. A control cabinet stands at the foot. Dimensions 1.96 × 3.08 × 1.75 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips dish-spin turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. Elevation is fixed: the dish turns in azimuth only, because the reflector and its feed are one rigid node.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-antenna-dish-8592b464","cdnUrl":"https://cdn.3dassets.dev/assets/32631/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-antenna-dish-8592b464","thumbnailUrl":"https://cdn.3dassets.dev/assets/32631/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32631/v1/poster.webp","blurhash":"U25OZ=%M009X00RP~q%M%2s:M{NG-pWANFt8","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":436484,"triangles":3016,"vertices":2798,"meshes":7,"materials":6,"textures":2,"animations":["dish-spin"],"boundingBox":{"min":[-0.9800000190734863,0,-0.8772400757824883],"max":[0.9800000190734863,3.0848991498726273,0.8772125734289099]},"sizeMeters":[1.96,3.085,1.754],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:12.082Z","updatedAt":"2026-09-08T12:54:12.241Z","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/32631/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 TrackingAntennaDish19MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32631/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/32631/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32631/v1/model.glb\" alt=\"Tracking Antenna Dish 1.9 m (FPS Survival Forest Outpost)\" 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/32631/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/32631/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32632","slug":"fps-survival-forest-outpost-storage-locker-c1d14d27","title":"Steel Storage Locker Pair (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.6 m two door steel storage locker on a plinth, with louvred vents and cam handles. Animated open and close.","description":"A 1.6 m by 1.9 m two door steel locker on a rusted plinth: a boxed carcass with a centre mullion, two hinged leaves each stiffened with two rails, hung on three barrel hinges, closed by a vertical cam handle and vented by four louvres at the head. Dimensions 1.66 × 2.04 × 0.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-storage-locker-c1d14d27","cdnUrl":"https://cdn.3dassets.dev/assets/32632/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-storage-locker-c1d14d27","thumbnailUrl":"https://cdn.3dassets.dev/assets/32632/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32632/v1/poster.webp","blurhash":"U77,[KoL0LoL^PoyEMRk}=ae9]kD$*$%NGEM","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":254824,"triangles":4120,"vertices":3758,"meshes":10,"materials":4,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.8299893030013011,0,-0.32996963434075727],"max":[0.8299893030013011,2.0399999618530273,0.3300234308243696]},"sizeMeters":[1.66,2.04,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:11.513Z","updatedAt":"2026-09-08T12:54:11.606Z","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/32632/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 SteelStorageLockerPairFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32632/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/32632/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32632/v1/model.glb\" alt=\"Steel Storage Locker Pair (FPS Survival Forest Outpost)\" 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/32632/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/32632/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32633","slug":"fps-survival-forest-outpost-shelving-rack-3b3a7a3c","title":"Camp Shelving Rack 2 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2 m four shelf rack of rusted angle and pine boards, stocked with crates, cases and cans, with two crates that slide out. Animated open and close.","description":"A 2 m by 2.05 m storage rack: four pine shelves on rusted angle uprights with edge rails, stocked with steel cases, cans and banded crates. Two of the crates sit on runners and slide out on their own pivots. Dimensions 2.04 × 2.23 × 0.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-shelving-rack-3b3a7a3c","cdnUrl":"https://cdn.3dassets.dev/assets/32633/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-shelving-rack-3b3a7a3c","thumbnailUrl":"https://cdn.3dassets.dev/assets/32633/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32633/v1/poster.webp","blurhash":"U7AI[F}D0Mn,nP-VwcE21OEzskNubbkWR*M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":317588,"triangles":4524,"vertices":4302,"meshes":9,"materials":5,"textures":2,"animations":["open","close"],"boundingBox":{"min":[-1.0199999809265137,0.00003875846978729745,-0.3299972471633647],"max":[1.0199999809265137,2.233799934387207,0.3299972471633647]},"sizeMeters":[2.04,2.234,0.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:13.696Z","updatedAt":"2026-09-08T12:54:13.818Z","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/32633/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 CampShelvingRack2MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32633/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/32633/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32633/v1/model.glb\" alt=\"Camp Shelving Rack 2 m (FPS Survival Forest Outpost)\" 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/32633/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/32633/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32634","slug":"fps-survival-forest-outpost-ammunition-press-dcc61975","title":"Hand Ammunition Press (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a bench mounted hand press for reloading, with a worked lever, trays of cases and a powder measure. Animated press-pull.","description":"A single stage hand press bolted to a pine block: a cast steel O frame with a ram and die head, a lever with a ball handle that rocks on its own pivot, two trays of brass cases and a glass powder measure beside it. Dimensions 0.87 × 1.71 × 0.91 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips press-pull turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The ram is static: only the lever moves, because the toggle linkage that drives a real press cannot be reached with one rigid node transform.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-ammunition-press-dcc61975","cdnUrl":"https://cdn.3dassets.dev/assets/32634/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-ammunition-press-dcc61975","thumbnailUrl":"https://cdn.3dassets.dev/assets/32634/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32634/v1/poster.webp","blurhash":"U36k0Ct700IBT}ogmjRh4.of%LahvfV@Osx]","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":293476,"triangles":2408,"vertices":2934,"meshes":7,"materials":6,"textures":2,"animations":["press-pull"],"boundingBox":{"min":[-0.4350000023841858,3.2263035398827355e-7,-0.453201643425679],"max":[0.4349957242738587,1.7099855310770027,0.45318028099834917]},"sizeMeters":[0.87,1.71,0.906],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:13.105Z","updatedAt":"2026-09-08T15:01:25.356Z","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/32634/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 HandAmmunitionPressFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32634/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/32634/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32634/v1/model.glb\" alt=\"Hand Ammunition Press (FPS Survival Forest Outpost)\" 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/32634/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/32634/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32636","slug":"fps-survival-forest-outpost-cooking-fire-56fa2805","title":"Cooking Fire and Pot (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a stone ringed cooking fire with glowing embers, a timber tripod and a pot hanging over it, with a log seat.","description":"A cooking fire in a ring of fourteen set stones: five burning logs over a bed of amber embers, a timber tripod 1.5 m over it carrying a blackened pot on a chain hook, and a felled log rolled up as a seat. The emissive amber embers are the light source; there are no punctual lights in this pipeline. Dimensions 1.93 × 1.67 × 2.32 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data. The flame is static geometry: it glows but does not flicker, because a flicker is a material animation and this pipeline ships node transforms only.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-cooking-fire-56fa2805","cdnUrl":"https://cdn.3dassets.dev/assets/32636/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-cooking-fire-56fa2805","thumbnailUrl":"https://cdn.3dassets.dev/assets/32636/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32636/v1/poster.webp","blurhash":"UA8;A8ad01%LD*W;xtWB01fl^*NG~VoJE1t7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":282724,"triangles":2254,"vertices":1936,"meshes":6,"materials":6,"textures":2,"animations":[],"boundingBox":{"min":[-0.9655372500419617,-0.00004586904570691441,-1.1594421635834222],"max":[0.9655273093425835,1.674472689628601,1.1594041585922241]},"sizeMeters":[1.931,1.675,2.319],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:13.456Z","updatedAt":"2026-09-08T12:54:13.569Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32636/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CookingFireAndPotFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32636/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32636/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32636/v1/model.glb\" alt=\"Cooking Fire and Pot (FPS Survival Forest Outpost)\" 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/32636/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/32636/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32635","slug":"fps-survival-forest-outpost-drying-rack-8e0dc362","title":"Meat Drying Rack 2.7 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a timber drying rack 2.7 m across its splayed legs, hung with strips of meat and cloth over three rails.","description":"A drying rack 2.7 m across its splayed feet: two pine A frames tied by a cross rail, carrying three horizontal rails hung with nine strips of drying meat and cloth, with a bundled hide on the ground beneath. Dimensions 2.70 × 1.98 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-drying-rack-8e0dc362","cdnUrl":"https://cdn.3dassets.dev/assets/32635/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-drying-rack-8e0dc362","thumbnailUrl":"https://cdn.3dassets.dev/assets/32635/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32635/v1/poster.webp","blurhash":"U17K6h+I00?s*|~APU020gkR^QAGEOaK}n$+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":82336,"triangles":1872,"vertices":1596,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1.3494161367416382,-0.00002040483620724398,-0.46309349216161755],"max":[1.3494161367416382,1.9818287553218168,0.46309349216161755]},"sizeMeters":[2.699,1.982,0.926],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:13.322Z","updatedAt":"2026-09-08T12:54:13.434Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32635/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MeatDryingRack27MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32635/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32635/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32635/v1/model.glb\" alt=\"Meat Drying Rack 2.7 m (FPS Survival Forest Outpost)\" 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/32635/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/32635/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32637","slug":"fps-survival-forest-outpost-tool-wall-e06c2052","title":"Tool Wall Board 1.8 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.8 m boarded tool wall hung with axes, a saw, a shovel, wrenches and a coil of rope, on a shelf and pegs.","description":"A 1.8 m by 1.6 m tool board of pine planks on two posts under a capping rail, with a shelf across it and eight pegs. Hung on it are a felling axe, a hatchet, a bow saw blade, a shovel, three wrenches and a coil of rope; every tool stands proud of the boards. Dimensions 1.96 × 1.70 × 0.30 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-tool-wall-e06c2052","cdnUrl":"https://cdn.3dassets.dev/assets/32637/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-tool-wall-e06c2052","thumbnailUrl":"https://cdn.3dassets.dev/assets/32637/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32637/v1/poster.webp","blurhash":"U28MX5+_03Xk}G}YS00}0zs;^6NFJ$FuSijG","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":121748,"triangles":3412,"vertices":3290,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.9800000190734863,0.00004059691692104295,-0.15001922958075525],"max":[0.9800000190734863,1.6999594507667948,0.15001922958075525]},"sizeMeters":[1.96,1.7,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:14.448Z","updatedAt":"2026-09-08T15:01:24.130Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32637/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ToolWallBoard18MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32637/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32637/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32637/v1/model.glb\" alt=\"Tool Wall Board 1.8 m (FPS Survival Forest Outpost)\" 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/32637/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/32637/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32638","slug":"fps-survival-forest-outpost-palisade-bay-884ec4c5","title":"Timber Palisade Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m palisade bay of seventeen sharpened pine stakes on two rails with raking braces, with a port at each end.","description":"A 4 m palisade bay: seventeen sharpened pine stakes of uneven height driven into a bank of spoil, tied by two rails on the inside face and held by a raking brace at each end. The pivot is on the grid origin, so bays run end to end round a compound. Dimensions 4.18 × 3.02 × 1.43 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-palisade-bay-884ec4c5","cdnUrl":"https://cdn.3dassets.dev/assets/32638/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-palisade-bay-884ec4c5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32638/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32638/v1/poster.webp","blurhash":"U27]w@}A0iKNIo^6,;AD0iI:^OW=aOOAW.i~","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":329668,"triangles":4208,"vertices":3876,"meshes":4,"materials":4,"textures":2,"animations":[],"boundingBox":{"min":[-2.170729637145996,-0.00003326457754065232,-1.0420415621164691],"max":[2.0118472576141357,3.0152690058709615,0.38639676748522067]},"sizeMeters":[4.183,3.015,1.428],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:14.660Z","updatedAt":"2026-09-08T12:54:14.760Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32638/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberPalisadeBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32638/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32638/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32638/v1/model.glb\" alt=\"Timber Palisade Bay 4 m (FPS Survival Forest Outpost)\" 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/32638/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/32638/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32639","slug":"fps-survival-forest-outpost-palisade-gate-05355173","title":"Palisade Gate, Two Leaves (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 4 m palisade gate on two braced posts, with two boarded leaves on strap hinges and a lit red warning lamp. Animated open and close.","description":"The gate in the palisade run: two braced pine posts 3.5 m tall carrying a head beam and a rusted cap, with a lit red warning lamp over the middle. Each leaf is seven boards on two ledges and a diagonal brace, hung on two strap hinges and swinging clear of its own post. Dimensions 4.10 × 3.75 × 1.34 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-palisade-gate-05355173","cdnUrl":"https://cdn.3dassets.dev/assets/32639/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-palisade-gate-05355173","thumbnailUrl":"https://cdn.3dassets.dev/assets/32639/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32639/v1/poster.webp","blurhash":"U28W8D=y01EM~U=w9a9v1HxU]%IqIWxt-oE2","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":113424,"triangles":3560,"vertices":3666,"meshes":7,"materials":4,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-2.049999952316284,0.00006855606294253747,-0.6714196035476842],"max":[2.049999952316284,3.745558738708496,0.6714473512497557]},"sizeMeters":[4.1,3.745,1.343],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:14.844Z","updatedAt":"2026-09-08T12:54:15.037Z","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/32639/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 PalisadeGateTwoLeavesFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32639/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/32639/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32639/v1/model.glb\" alt=\"Palisade Gate, Two Leaves (FPS Survival Forest Outpost)\" 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/32639/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/32639/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32640","slug":"fps-survival-forest-outpost-sandbag-wall-5cbc0e55","title":"Sandbag Wall, Five Courses (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a stacked sandbag wall of five courses tapering to a firing step, with two picket posts and an ammunition can.","description":"A sandbag emplacement: five courses of filled bags laid in a staggered bond, tapering from eight bags to six so the top course reads as a firing step, with a steel picket at each end and an ammunition can dropped behind it. Dimensions 4.07 × 1.30 × 0.91 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-sandbag-wall-5cbc0e55","cdnUrl":"https://cdn.3dassets.dev/assets/32640/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-sandbag-wall-5cbc0e55","thumbnailUrl":"https://cdn.3dassets.dev/assets/32640/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32640/v1/poster.webp","blurhash":"U48XE~I;00xUyC-:RQD*00xt_LRSDk9H%K%L","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":138728,"triangles":6496,"vertices":6001,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0349128246307373,-0.0000987459510400912,-0.454900712157735],"max":[2.0349128246307373,1.3000986982673242,0.4549951590124962]},"sizeMeters":[4.07,1.3,0.91],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:14.052Z","updatedAt":"2026-09-08T12:54:14.237Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32640/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SandbagWallFiveCoursesFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32640/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32640/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32640/v1/model.glb\" alt=\"Sandbag Wall, Five Courses (FPS Survival Forest Outpost)\" 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/32640/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/32640/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32641","slug":"fps-survival-forest-outpost-razor-wire-coil-8bbc330d","title":"Razor Wire Coil 3.2 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 3.2 m coil of razor wire in seven turns with barbs, pinned at each end.","description":"A 3.2 m run of razor wire drawn out into seven turns of a 0.92 m coil, with twenty eight barbs swaged along it and a steel pin at each end. It sits on the ground and lays along a fence line or across an approach. Dimensions 3.22 × 1.01 × 1.00 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-razor-wire-coil-8bbc330d","cdnUrl":"https://cdn.3dassets.dev/assets/32641/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-razor-wire-coil-8bbc330d","thumbnailUrl":"https://cdn.3dassets.dev/assets/32641/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32641/v1/poster.webp","blurhash":"U37nUZx]9F%Mxu_4xvM_00so?asDIV00Inxv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31700,"triangles":1294,"vertices":1420,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-1.6118358373641968,0.000056153239884282335,-0.500024759264109],"max":[1.6118358373641968,1.0099438372233727,0.500024759264109]},"sizeMeters":[3.224,1.01,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:15.877Z","updatedAt":"2026-09-08T12:54:15.977Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32641/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RazorWireCoil32MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32641/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32641/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32641/v1/model.glb\" alt=\"Razor Wire Coil 3.2 m (FPS Survival Forest Outpost)\" 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/32641/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/32641/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32642","slug":"fps-survival-forest-outpost-chain-link-bay-42a0b2bc","title":"Chain Link Fence Bay 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a modular 4 m chain link fence bay 2.4 m high with barbed wire arms, with a port at each end.","description":"A 4 m chain link fence bay: two tubular posts and top and bottom rails carrying a diamond mesh drawn as two crossing wire sets on separate planes, topped by raked arms with three strands of barbed wire. The pivot is on the grid origin and a port sits at each end. Dimensions 3.99 × 2.75 × 0.33 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-chain-link-bay-42a0b2bc","cdnUrl":"https://cdn.3dassets.dev/assets/32642/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-chain-link-bay-42a0b2bc","thumbnailUrl":"https://cdn.3dassets.dev/assets/32642/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32642/v1/poster.webp","blurhash":"U6ATl^WV00jZ~X?bD%4-00%M_NIUM{Rj%Ms;","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"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":12284,"triangles":400,"vertices":490,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.9950000047683716,0.00008515877694148521,-0.055071306689606414],"max":[1.9950000047683716,2.753278927374182,0.2785753508051498]},"sizeMeters":[3.99,2.753,0.334],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:15.282Z","updatedAt":"2026-09-08T12:54:15.392Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32642/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChainLinkFenceBay4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32642/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32642/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32642/v1/model.glb\" alt=\"Chain Link Fence Bay 4 m (FPS Survival Forest Outpost)\" 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/32642/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/32642/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32643","slug":"fps-survival-forest-outpost-chain-link-gate-084d4112","title":"Chain Link Gate, Two Leaves (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 4 m chain link gate on two posts with two mesh leaves, a latch box and a lit red lamp. Animated open and close.","description":"A 4 m double leaf chain link gate: two heavy tubular posts carrying two framed mesh leaves, each on its own stile with a drop bolt and a pull handle, with a latch box and a lit red lamp on the west post. Dimensions 4.00 × 2.50 × 0.39 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-chain-link-gate-084d4112","cdnUrl":"https://cdn.3dassets.dev/assets/32643/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-chain-link-gate-084d4112","thumbnailUrl":"https://cdn.3dassets.dev/assets/32643/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32643/v1/poster.webp","blurhash":"U58NwtIU00%gWF%gt6Di00%M~qITt6IURj-:","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22808,"triangles":996,"vertices":1018,"meshes":6,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.002500057220459,-0.000011785344623316263,-0.19245049446365542],"max":[2.002500057220459,2.5000117853446233,0.19250075078767598]},"sizeMeters":[4.005,2.5,0.385],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:15.294Z","updatedAt":"2026-09-08T12:54:15.416Z","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/32643/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 ChainLinkGateTwoLeavesFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32643/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/32643/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32643/v1/model.glb\" alt=\"Chain Link Gate, Two Leaves (FPS Survival Forest Outpost)\" 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/32643/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/32643/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32644","slug":"fps-survival-forest-outpost-watch-platform-8aa2689f","title":"Perimeter Watch Platform (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2.1 m timber watch platform 2.6 m up with a boarded rail, steps and a sandbag rest.","description":"A firing platform for the perimeter: a 2.1 m square deck 2.6 m up on four braced pine posts, decked in boards, screened waist high in steel sheet on three sides with a rail over it, reached by seven steps on the +Z face with a handrail, and with a sandbag laid on the rail as a rest. Dimensions 2.12 × 3.86 × 3.35 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-watch-platform-8aa2689f","cdnUrl":"https://cdn.3dassets.dev/assets/32644/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-watch-platform-8aa2689f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32644/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32644/v1/poster.webp","blurhash":"U17mZ@V;00BrzrES6P^a8tWmDP=g[aEM-U-n","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":512012,"triangles":4320,"vertices":3947,"meshes":5,"materials":5,"textures":3,"animations":[],"boundingBox":{"min":[-1.0600135502910732,-0.000040587754050684655,-1.675016432312056],"max":[1.0600135502910732,3.858008061178356,1.6750789133897344]},"sizeMeters":[2.12,3.858,3.35],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:16.737Z","updatedAt":"2026-09-08T12:54:16.854Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32644/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PerimeterWatchPlatformFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32644/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32644/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32644/v1/model.glb\" alt=\"Perimeter Watch Platform (FPS Survival Forest Outpost)\" 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/32644/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/32644/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32645","slug":"fps-survival-forest-outpost-spike-pit-20ee2b42","title":"Covered Spike Pit 2.7 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a dug spike pit with thirteen sharpened stakes and a stick and brush cover hinged on one lip. Animated open and close.","description":"A trap pit 1.05 m deep and 2.3 m across, revetted with fourteen pine posts, with thirteen sharpened stakes leaning in the bottom and a cover of eleven sticks on two ledges under a mat of brush that lifts on the -Z lip. The origin is the pit floor, not the rim: sink the model until the spoil lip is level with the terrain. Dimensions 3.10 × 1.34 × 3.10 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-spike-pit-20ee2b42","cdnUrl":"https://cdn.3dassets.dev/assets/32645/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-spike-pit-20ee2b42","thumbnailUrl":"https://cdn.3dassets.dev/assets/32645/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32645/v1/poster.webp","blurhash":"U15;]g_0000LY4XR#9#+00Nd~owgD6rvPnE#","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":118048,"triangles":2888,"vertices":2802,"meshes":5,"materials":3,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-1.5499999523162842,0.000050364467780228406,-1.5499999523162842],"max":[1.5499999523162842,1.3400396682648599,1.5499999523162842]},"sizeMeters":[3.1,1.34,3.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:17.094Z","updatedAt":"2026-09-08T12:54:17.185Z","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/32645/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 CoveredSpikePit27MFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32645/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/32645/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32645/v1/model.glb\" alt=\"Covered Spike Pit 2.7 m (FPS Survival Forest Outpost)\" 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/32645/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/32645/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32646","slug":"fps-survival-forest-outpost-bear-trap-62509816","title":"Sprung Bear Trap and Anchor (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 0.7 m sprung bear trap with two toothed jaws, twin springs, a pan plate and an anchor chain. Animated open and close.","description":"A 0.7 m leg hold trap: a rusted ring frame with a pan plate at its centre, a leaf spring and eye on each side, and an anchor chain running to a stake. The two toothed jaws lie flat when the trap is set. The `open` clip throws both jaws up over the centre line, which is the trap snapping shut, and `close` lays them flat again as it is reset. Dimensions 1.97 × 0.51 × 0.73 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-bear-trap-62509816","cdnUrl":"https://cdn.3dassets.dev/assets/32646/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-bear-trap-62509816","thumbnailUrl":"https://cdn.3dassets.dev/assets/32646/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32646/v1/poster.webp","blurhash":"U46*Ew_24:IVxu-pt8E2009Z?a%1IV4.M_~B","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58792,"triangles":2648,"vertices":2407,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.9842658638954163,-0.0000017015787266427829,-0.36710077202305186],"max":[0.9842658638954163,0.5109464323002778,0.36710077202305186]},"sizeMeters":[1.969,0.511,0.734],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:17.447Z","updatedAt":"2026-09-08T15:01:22.963Z","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/32646/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 SprungBearTrapAndAnchorFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32646/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/32646/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32646/v1/model.glb\" alt=\"Sprung Bear Trap and Anchor (FPS Survival Forest Outpost)\" 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/32646/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/32646/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32647","slug":"fps-survival-forest-outpost-tripwire-flare-20163459","title":"Tripwire Flare Post 3 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 3 m tripwire between two pegs, triggering a flare canister with a lit red head on a spring latch.","description":"An early warning trip: a 3 m wire strung between two pine pegs at 0.72 m, with a spring latch box on the left peg carrying a flare canister whose head glows red, and a bight clip on the wire. Brush is heaped over the launcher to hide it. Dimensions 3.26 × 1.07 × 0.44 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-tripwire-flare-20163459","cdnUrl":"https://cdn.3dassets.dev/assets/32647/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-tripwire-flare-20163459","thumbnailUrl":"https://cdn.3dassets.dev/assets/32647/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32647/v1/poster.webp","blurhash":"U47nE[xVMIkU~C^QR5Vr00=z?IMy009a_3%h","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":57288,"triangles":472,"vertices":499,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-1.6294856071472168,0.000012073410395191386,-0.2200000286102295],"max":[1.6294856071472168,1.0729999542236328,0.2200000286102295]},"sizeMeters":[3.259,1.073,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:17.671Z","updatedAt":"2026-09-08T12:54:17.762Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32647/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TripwireFlarePost3MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32647/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32647/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32647/v1/model.glb\" alt=\"Tripwire Flare Post 3 m (FPS Survival Forest Outpost)\" 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/32647/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/32647/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32648","slug":"fps-survival-forest-outpost-punji-line-f3e57e45","title":"Punji Stake Line 4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 4 m line of twenty two fire hardened punji stakes leaning out of a strip of turned earth.","description":"A 4 m denial strip: twenty two fire hardened pine stakes in two staggered rows leaning at random out of a band of turned earth, with five clumps of brush laid over them. It lays across an approach or in front of a palisade run. Dimensions 3.90 × 0.79 × 0.91 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-punji-line-f3e57e45","cdnUrl":"https://cdn.3dassets.dev/assets/32648/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-punji-line-f3e57e45","thumbnailUrl":"https://cdn.3dassets.dev/assets/32648/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32648/v1/poster.webp","blurhash":"U26%[}xt0f$i4o?G%MEL009Z^Px]~q4;9G$~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":76056,"triangles":916,"vertices":1380,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1.9500000476837158,0.000010681000976474342,-0.4542742801977004],"max":[1.9500000476837158,0.7885536180270987,0.45425278159115867]},"sizeMeters":[3.9,0.789,0.909],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:17.846Z","updatedAt":"2026-09-08T12:54:17.948Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32648/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PunjiStakeLine4MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32648/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32648/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32648/v1/model.glb\" alt=\"Punji Stake Line 4 m (FPS Survival Forest Outpost)\" 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/32648/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/32648/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32649","slug":"fps-survival-forest-outpost-barricade-boards-c76078d6","title":"Boarded Barricade 1.9 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a barricade of six pine boards nailed across an opening on two stiles with a diagonal brace.","description":"A hasty barricade: six pine boards of uneven length nailed across an opening 1.9 m wide and 1.9 m high, on two vertical stiles with a diagonal brace over them and fourteen nail heads standing proud. It fits the window and door bays of the station kit. Dimensions 2.00 × 1.88 × 0.36 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-barricade-boards-c76078d6","cdnUrl":"https://cdn.3dassets.dev/assets/32649/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-barricade-boards-c76078d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/32649/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32649/v1/poster.webp","blurhash":"U28MQ.}r049^xF=wsC100}S2].a#sU$hsnIr","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":105332,"triangles":2656,"vertices":2368,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-1,0.0000019074068422497703,-0.17993713187047944],"max":[1,1.8749980925931578,0.17993713187047944]},"sizeMeters":[2,1.875,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:18.135Z","updatedAt":"2026-09-08T12:54:18.231Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32649/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoardedBarricade19MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32649/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32649/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32649/v1/model.glb\" alt=\"Boarded Barricade 1.9 m (FPS Survival Forest Outpost)\" 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/32649/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/32649/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32650","slug":"fps-survival-forest-outpost-wreck-barricade-8037d50f","title":"Wrecked Truck Barricade (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a burnt out truck dragged across a gap, stripped of a wheel and packed with sandbags and corrugated sheet.","description":"A wreck used as a barricade: a burnt out cab and flatbed dropped on its axles with one wheel gone and the hub exposed, the windscreen crazed and the engine bay open, with seven sandbags stacked along the near flank and a sheet of corrugated steel leaned against it. It fills a 4.3 m gap in a perimeter run. Dimensions 5.02 × 1.60 × 2.82 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-wreck-barricade-8037d50f","cdnUrl":"https://cdn.3dassets.dev/assets/32650/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-wreck-barricade-8037d50f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32650/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32650/v1/poster.webp","blurhash":"U484D0?a01v#=_%LT0M}00My~BE+0hD*#Rt6","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":218936,"triangles":1648,"vertices":1494,"meshes":7,"materials":7,"textures":1,"animations":[],"boundingBox":{"min":[-2.511852264404297,-0.00009829424853491364,-1.41145809767182],"max":[2.5118755514116695,1.6019092857361088,1.4113054933379385]},"sizeMeters":[5.024,1.602,2.823],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:18.413Z","updatedAt":"2026-09-08T16:14:01.523Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32650/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WreckedTruckBarricadeFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32650/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32650/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32650/v1/model.glb\" alt=\"Wrecked Truck Barricade (FPS Survival Forest Outpost)\" 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/32650/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/32650/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32651","slug":"fps-survival-forest-outpost-weapon-scout-carbine-55d669ba","title":"Scout Carbine, Folding Stock (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an original short gas carbine with a folding stock, a detachable magazine, a moving bolt and a lit red dot sight. Animated open and close.","description":"A short gas operated carbine of original design: a machined upper and lower with a folding tube stock, a handguard with four vent slots, a stubby suppressor, a reflex sight with a lit red dot, a detachable box magazine that drops out of its well and a charging handle and bolt that run back along the bore. Dimensions 0.13 × 0.37 × 0.84 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips magazine-open, magazine-close, bolt-open, bolt-close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The trigger, the safety and the folding hinge are modelled but static; only the magazine and the bolt move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-scout-carbine-55d669ba","cdnUrl":"https://cdn.3dassets.dev/assets/32651/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-scout-carbine-55d669ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/32651/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32651/v1/poster.webp","blurhash":"U13S03M{D$_3_4D%IU-;4TIUWBM|4m-;xvD%","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":129932,"triangles":6432,"vertices":5230,"meshes":7,"materials":4,"textures":0,"animations":["magazine-open","magazine-close","bolt-open","bolt-close"],"boundingBox":{"min":[-0.06498122858434119,4.0995853933800674e-9,-0.42124998569488525],"max":[0.06499999622255564,0.3728493939285134,0.42124998569488525]},"sizeMeters":[0.13,0.373,0.842],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:17.705Z","updatedAt":"2026-09-08T15:01:21.896Z","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/32651/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 ScoutCarbineFoldingStockFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32651/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/32651/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32651/v1/model.glb\" alt=\"Scout Carbine, Folding Stock (FPS Survival Forest Outpost)\" 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/32651/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/32651/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32652","slug":"fps-survival-forest-outpost-weapon-scrap-rifle-b357ed81","title":"Improvised Scrap Rifle (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an original improvised rifle built from pipe, plate and a plank stock, with a taped magazine, a moving bolt and iron sights.","description":"A rifle built in the camp out of what came to hand: a steel pipe barrel clamped into a folded plate receiver on a rough pine plank stock, bound with wire and tape at three points, with a hand bent bolt handle, a taped box magazine in a plate well and iron sights filed from strip. Dimensions 0.12 × 0.30 × 1.24 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips magazine-open, magazine-close, bolt-open, bolt-close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The wire bindings, the tape and the trigger are static geometry; only the magazine and the bolt move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-scrap-rifle-b357ed81","cdnUrl":"https://cdn.3dassets.dev/assets/32652/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-scrap-rifle-b357ed81","thumbnailUrl":"https://cdn.3dassets.dev/assets/32652/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32652/v1/poster.webp","blurhash":"U15EKfPU4nI@}t5lZ$kV009G^*-n0x^P.8nP","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":99600,"triangles":2626,"vertices":2078,"meshes":8,"materials":5,"textures":1,"animations":["magazine-open","magazine-close","bolt-open","bolt-close"],"boundingBox":{"min":[-0.061016115192823024,1.788139358804841e-9,-0.6179041862487793],"max":[0.061000615920159054,0.30500000387430193,0.6179041862487793]},"sizeMeters":[0.122,0.305,1.236],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:19.527Z","updatedAt":"2026-09-08T15:01:18.695Z","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/32652/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 ImprovisedScrapRifleFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32652/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/32652/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32652/v1/model.glb\" alt=\"Improvised Scrap Rifle (FPS Survival Forest Outpost)\" 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/32652/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/32652/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32653","slug":"fps-survival-forest-outpost-weapon-breach-shotgun-7f8e2b62","title":"Break Action Breach Gun (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an original break action side by side shotgun with a cut down stock, exposed hammers and a barrel group that drops open. Animated open and close.","description":"A cut down side by side break gun of original design: two barrels brazed to a rib, a case hardened action with two exposed hammers and a top lever, a shortened pine stock with a rubber pad and a wire sling loop. The barrel group drops forward off the standing breech on a real hinge pin. Dimensions 0.08 × 0.20 × 1.04 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The hammers, the top lever and the extractor are modelled but static; only the barrel group opens.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-breach-shotgun-7f8e2b62","cdnUrl":"https://cdn.3dassets.dev/assets/32653/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-breach-shotgun-7f8e2b62","thumbnailUrl":"https://cdn.3dassets.dev/assets/32653/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32653/v1/poster.webp","blurhash":"U13[k}F28^?G^l9aR4-p00RO?bR:0c~C.A4.","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":99672,"triangles":2492,"vertices":2157,"meshes":5,"materials":4,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.03992126167526998,-0.0000056966631730576145,-0.5224983149523192],"max":[0.03992126167526998,0.19522704775315983,0.5224999938718975]},"sizeMeters":[0.08,0.195,1.045],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:19.885Z","updatedAt":"2026-09-08T15:01:16.438Z","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/32653/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 BreakActionBreachGunFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32653/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/32653/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32653/v1/model.glb\" alt=\"Break Action Breach Gun (FPS Survival Forest Outpost)\" 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/32653/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/32653/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32654","slug":"fps-survival-forest-outpost-weapon-sidearm-pistol-afb8da46","title":"Compact Sidearm Pistol (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an original compact pistol with a polymer frame, a detachable magazine and a slide that cycles. Animated open and close.","description":"A compact striker fired pistol of original design: a polymer frame with a checkered grip and an accessory rail, a machined slide with two rear serration groups and a shallow ejection port, three dot iron sights and a detachable magazine that drops out of the grip well. Dimensions 0.06 × 0.20 × 0.20 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips magazine-open, magazine-close, slide-open, slide-close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The trigger, the takedown lever and the striker are modelled but static; only the magazine and the slide move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-sidearm-pistol-afb8da46","cdnUrl":"https://cdn.3dassets.dev/assets/32654/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-sidearm-pistol-afb8da46","thumbnailUrl":"https://cdn.3dassets.dev/assets/32654/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32654/v1/poster.webp","blurhash":"U22$Kpoe4mj^_4j[Dij^%NWAMxt8s;RiRix]","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":69344,"triangles":3536,"vertices":2639,"meshes":7,"materials":3,"textures":0,"animations":["magazine-open","magazine-close","slide-open","slide-close"],"boundingBox":{"min":[-0.029999117012227405,1.1256608700715987e-9,-0.09750789131470203],"max":[0.029999117012227405,0.20470006162712542,0.09750927601165046]},"sizeMeters":[0.06,0.205,0.195],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:19.147Z","updatedAt":"2026-09-08T15:01:20.805Z","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/32654/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 CompactSidearmPistolFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32654/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/32654/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32654/v1/model.glb\" alt=\"Compact Sidearm Pistol (FPS Survival Forest Outpost)\" 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/32654/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/32654/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32655","slug":"fps-survival-forest-outpost-weapon-marksman-rifle-e20c7bc2","title":"Marksman Rifle and Bipod (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an original long bolt action marksman rifle with a scope, a folded bipod, a detachable magazine and a working bolt. Animated open and close.","description":"A long range bolt action of original design: a heavy fluted barrel with a muzzle brake in an aluminium chassis, a thumbhole stock with an adjustable cheek piece, a scope on high rings with a lit blue reticle glow in the ocular, a folded bipod under the fore end, a detachable box magazine and a bolt with a round knob that runs back on its own pivot. Dimensions 0.15 × 0.34 × 1.38 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips magazine-open, magazine-close, bolt-open, bolt-close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The bipod is modelled folded and does not deploy, and the cheek piece does not slide; only the magazine and the bolt move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-marksman-rifle-e20c7bc2","cdnUrl":"https://cdn.3dassets.dev/assets/32655/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-marksman-rifle-e20c7bc2","thumbnailUrl":"https://cdn.3dassets.dev/assets/32655/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32655/v1/poster.webp","blurhash":"U03bjxxu00?b_N4n9EtR008_?cNG8_~q~qjF","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":129468,"triangles":6068,"vertices":5330,"meshes":8,"materials":5,"textures":0,"animations":["magazine-open","magazine-close","bolt-open","bolt-close"],"boundingBox":{"min":[-0.07726325919413257,0.000008953796568275663,-0.6894999742507935],"max":[0.07728340755403042,0.344440302233192,0.6894999742507935]},"sizeMeters":[0.155,0.344,1.379],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:19.384Z","updatedAt":"2026-09-08T15:01:19.739Z","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/32655/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 MarksmanRifleAndBipodFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32655/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/32655/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32655/v1/model.glb\" alt=\"Marksman Rifle and Bipod (FPS Survival Forest Outpost)\" 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/32655/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/32655/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32656","slug":"fps-survival-forest-outpost-weapon-recurve-bow-5c7b8abf","title":"Scavenged Recurve Bow (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.5 m recurve bow with a leather wrapped grip, an arrow rest and three arrows in a leather quiver.","description":"A 1.5 m recurve bow: laminated limbs curving away at the tips, a leather wrapped riser with a filed arrow rest, and a linen string. Three fletched arrows stand in a leather quiver leaned against the lower limb. Dimensions 0.30 × 1.46 × 0.41 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data. The string is a straight run of geometry and the limbs do not flex: there is no draw pose and no clip on this model.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-recurve-bow-5c7b8abf","cdnUrl":"https://cdn.3dassets.dev/assets/32656/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-recurve-bow-5c7b8abf","thumbnailUrl":"https://cdn.3dassets.dev/assets/32656/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32656/v1/poster.webp","blurhash":"U054v*~B0000ISM_ks-=03jw~oX2.-v~LMGZ","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":65404,"triangles":972,"vertices":842,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.14830515816115147,0,-0.20374813661328073],"max":[0.14832129398316568,1.46261727809906,0.20374813661328073]},"sizeMeters":[0.297,1.463,0.407],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:20.564Z","updatedAt":"2026-09-08T15:01:15.318Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32656/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScavengedRecurveBowFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32656/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32656/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32656/v1/model.glb\" alt=\"Scavenged Recurve Bow (FPS Survival Forest Outpost)\" 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/32656/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/32656/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32657","slug":"fps-survival-forest-outpost-weapon-machete-3907750d","title":"Camp Machete and Sheath (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 0.66 m machete with a leather wrapped handle and a lanyard, lying beside its sheath.","description":"A 0.66 m machete: a flat ground blade with a swelled belly and a filed edge, a leather slab handle on two pins with a brass ferrule and a canvas lanyard loop, lying flat on the ground beside its open leather sheath. Dimensions 0.30 × 0.05 × 0.84 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-weapon-machete-3907750d","cdnUrl":"https://cdn.3dassets.dev/assets/32657/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-weapon-machete-3907750d","thumbnailUrl":"https://cdn.3dassets.dev/assets/32657/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32657/v1/poster.webp","blurhash":"U36au4Q,D*tmtRD%ogoM00pJ?HR4IA~WV=R$","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18200,"triangles":628,"vertices":667,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1485091949069164,0.000008707027492949049,-0.4223470687866211],"max":[0.14853167490876837,0.05282516015121712,0.4223470687866211]},"sizeMeters":[0.297,0.053,0.845],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:19.603Z","updatedAt":"2026-09-08T15:01:17.583Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32657/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CampMacheteAndSheathFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32657/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32657/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32657/v1/model.glb\" alt=\"Camp Machete and Sheath (FPS Survival Forest Outpost)\" 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/32657/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/32657/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32658","slug":"fps-survival-forest-outpost-loot-cache-common-df93b08e","title":"Common Loot Cache, White Ring (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scavenged hard case on a lit white rarity ring, rung 1 of five, with a hinged lid. Animated open and close.","description":"Rung 1 of the pack's five step loot ladder: a scavenged hard case with a hinged lid on two barrel hinges and a proud latch, standing inside a lit white ring with three markers round it. The ring is the pack's own ladder, invented for it: white, green, blue, red then amber. No published game's rarity colours, names or iconography are used. Dimensions 0.94 × 0.39 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-loot-cache-common-df93b08e","cdnUrl":"https://cdn.3dassets.dev/assets/32658/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-loot-cache-common-df93b08e","thumbnailUrl":"https://cdn.3dassets.dev/assets/32658/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32658/v1/poster.webp","blurhash":"UKBWY*xuD%j]4nWB%Mj?4.RjV@ae~qt7Rjay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":67540,"triangles":3196,"vertices":2695,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46799999475479126,0.000017089473592551974,-0.4648006784052605],"max":[0.46799999475479126,0.38501204901282865,0.4648006784052605]},"sizeMeters":[0.936,0.385,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:20.866Z","updatedAt":"2026-09-08T12:54:20.986Z","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/32658/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 CommonLootCacheWhiteRingFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32658/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/32658/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32658/v1/model.glb\" alt=\"Common Loot Cache, White Ring (FPS Survival Forest Outpost)\" 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/32658/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/32658/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32659","slug":"fps-survival-forest-outpost-loot-cache-uncommon-b2b0be36","title":"Uncommon Loot Cache, Green Ring (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scavenged hard case on a lit green rarity ring, rung 2 of five, with a hinged lid. Animated open and close.","description":"Rung 2 of the pack's five step loot ladder: a scavenged hard case with a hinged lid on two barrel hinges and a proud latch, standing inside a lit green ring with three markers round it. The ring is the pack's own ladder, invented for it: white, green, blue, red then amber. No published game's rarity colours, names or iconography are used. Dimensions 0.94 × 0.39 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-loot-cache-uncommon-b2b0be36","cdnUrl":"https://cdn.3dassets.dev/assets/32659/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-loot-cache-uncommon-b2b0be36","thumbnailUrl":"https://cdn.3dassets.dev/assets/32659/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32659/v1/poster.webp","blurhash":"UJ9@t*xtIBbF8{WBx[j[8{RkaLaf_Mt7aMay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":67568,"triangles":3196,"vertices":2695,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46799999475479126,0.000017089473592551974,-0.4648006784052605],"max":[0.46799999475479126,0.38501204901282865,0.4648006784052605]},"sizeMeters":[0.936,0.385,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:21.344Z","updatedAt":"2026-09-08T12:54:21.442Z","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/32659/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 UncommonLootCacheGreenRingFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32659/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/32659/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32659/v1/model.glb\" alt=\"Uncommon Loot Cache, Green Ring (FPS Survival Forest Outpost)\" 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/32659/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/32659/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32660","slug":"fps-survival-forest-outpost-loot-cache-rare-fb7d48a6","title":"Rare Loot Cache, Blue Ring (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scavenged hard case on a lit blue rarity ring, rung 3 of five, with a hinged lid. Animated open and close.","description":"Rung 3 of the pack's five step loot ladder: a scavenged hard case with a hinged lid on two barrel hinges and a proud latch, standing inside a lit blue ring with three markers round it. The ring is the pack's own ladder, invented for it: white, green, blue, red then amber. No published game's rarity colours, names or iconography are used. Dimensions 0.94 × 0.39 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-loot-cache-rare-fb7d48a6","cdnUrl":"https://cdn.3dassets.dev/assets/32660/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-loot-cache-rare-fb7d48a6","thumbnailUrl":"https://cdn.3dassets.dev/assets/32660/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32660/v1/poster.webp","blurhash":"UJ8;#{t8ITa~DhWBtSj?9EV@jEjF?wt7e-ay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":67520,"triangles":3196,"vertices":2695,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46799999475479126,0.000017089473592551974,-0.4648006784052605],"max":[0.46799999475479126,0.38501204901282865,0.4648006784052605]},"sizeMeters":[0.936,0.385,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.242Z","updatedAt":"2026-09-08T12:54:22.363Z","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/32660/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 RareLootCacheBlueRingFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32660/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/32660/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32660/v1/model.glb\" alt=\"Rare Loot Cache, Blue Ring (FPS Survival Forest Outpost)\" 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/32660/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/32660/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32662","slug":"fps-survival-forest-outpost-loot-cache-epic-b1bb7fb4","title":"Epic Loot Cache, Red Ring (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scavenged hard case on a lit red rarity ring, rung 4 of five, with a hinged lid. Animated open and close.","description":"Rung 4 of the pack's five step loot ladder: a scavenged hard case with a hinged lid on two barrel hinges and a proud latch, standing inside a lit red ring with three markers round it. The ring is the pack's own ladder, invented for it: white, green, blue, red then amber. No published game's rarity colours, names or iconography are used. Dimensions 0.94 × 0.39 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-loot-cache-epic-b1bb7fb4","cdnUrl":"https://cdn.3dassets.dev/assets/32662/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-loot-cache-epic-b1bb7fb4","thumbnailUrl":"https://cdn.3dassets.dev/assets/32662/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32662/v1/poster.webp","blurhash":"UMBx.mxaEMf65RWC$jj[57R*WWay}ss:S#ay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":67516,"triangles":3196,"vertices":2695,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46799999475479126,0.000017089473592551974,-0.4648006784052605],"max":[0.46799999475479126,0.38501204901282865,0.4648006784052605]},"sizeMeters":[0.936,0.385,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:21.275Z","updatedAt":"2026-09-08T12:54:21.404Z","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/32662/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 EpicLootCacheRedRingFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32662/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/32662/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32662/v1/model.glb\" alt=\"Epic Loot Cache, Red Ring (FPS Survival Forest Outpost)\" 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/32662/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/32662/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32661","slug":"fps-survival-forest-outpost-loot-cache-legendary-975367a5","title":"Legendary Loot Cache, Amber Ring (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a scavenged hard case on a lit amber rarity ring, rung 5 of five, with a hinged lid. Animated open and close.","description":"Rung 5 of the pack's five step loot ladder: a scavenged hard case with a hinged lid on two barrel hinges and a proud latch, standing inside a lit amber ring with three markers round it. The ring is the pack's own ladder, invented for it: white, green, blue, red then amber. No published game's rarity colours, names or iconography are used. Dimensions 0.94 × 0.39 × 0.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-loot-cache-legendary-975367a5","cdnUrl":"https://cdn.3dassets.dev/assets/32661/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-loot-cache-legendary-975367a5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32661/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32661/v1/poster.webp","blurhash":"ULBfwlxaE2j?4;WB%1j[4:RkWBaf~Ut6R.ay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":67572,"triangles":3196,"vertices":2695,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.46799999475479126,0.000017089473592551974,-0.4648006784052605],"max":[0.46799999475479126,0.38501204901282865,0.4648006784052605]},"sizeMeters":[0.936,0.385,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.350Z","updatedAt":"2026-09-08T12:54:22.494Z","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/32661/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 LegendaryLootCacheAmberRingFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32661/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/32661/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32661/v1/model.glb\" alt=\"Legendary Loot Cache, Amber Ring (FPS Survival Forest Outpost)\" 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/32661/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/32661/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32663","slug":"fps-survival-forest-outpost-backpack-field-c4b3f20b","title":"Field Backpack, Side Pouches (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a canvas field backpack with a lid flap, two side pouches and leather shoulder straps.","description":"A canvas field pack: a rounded main body with a lid flap over it and a leather retaining strap, a pouch on each flank, two shoulder straps with steel adjusters and a waist strap across the front. It rests on its base. Dimensions 0.70 × 0.84 × 0.58 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-backpack-field-c4b3f20b","cdnUrl":"https://cdn.3dassets.dev/assets/32663/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-backpack-field-c4b3f20b","thumbnailUrl":"https://cdn.3dassets.dev/assets/32663/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32663/v1/poster.webp","blurhash":"U57^_Cxu00M_~oa$9Gob01M|^*%LD*Rj%Lt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50212,"triangles":2532,"vertices":2010,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.34999996928233423,0,-0.28789226949773383],"max":[0.34999996928233423,0.8379999995231628,0.28789226949773383]},"sizeMeters":[0.7,0.838,0.576],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.460Z","updatedAt":"2026-09-08T12:54:22.566Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32663/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FieldBackpackSidePouchesFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32663/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32663/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32663/v1/model.glb\" alt=\"Field Backpack, Side Pouches (FPS Survival Forest Outpost)\" 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/32663/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/32663/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32664","slug":"fps-survival-forest-outpost-backpack-frame-245da625","title":"External Frame Backpack (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a large external frame backpack with a bed roll lashed on top and a side pouch.","description":"The framed version of the backpack: the same canvas body lashed to a tubular steel external frame with three cross bars, a bed roll strapped across the head and one side pouch. It stands on the frame foot. Dimensions 0.57 × 1.07 × 0.58 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-backpack-frame-245da625","cdnUrl":"https://cdn.3dassets.dev/assets/32664/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-backpack-frame-245da625","thumbnailUrl":"https://cdn.3dassets.dev/assets/32664/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32664/v1/poster.webp","blurhash":"U58NnI%2009Z~poz4oMx0LNH?Z%0n+jaj?oy","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":53428,"triangles":2640,"vertices":2167,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2875267142532781,0,-0.2879018426454438],"max":[0.2874824960539309,1.0735950469970703,0.2879018426454438]},"sizeMeters":[0.575,1.074,0.576],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.671Z","updatedAt":"2026-09-08T12:54:22.820Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32664/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ExternalFrameBackpackFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32664/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32664/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32664/v1/model.glb\" alt=\"External Frame Backpack (FPS Survival Forest Outpost)\" 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/32664/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/32664/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32665","slug":"fps-survival-forest-outpost-plate-carrier-2ac4f423","title":"Plate Carrier with Pouches (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a canvas plate carrier with a front plate, three magazine pouches, shoulder pads and a lit green marker light.","description":"A plate carrier standing on its own skirt: a canvas front panel over a steel plate, three magazine pouches with their flaps proud of the webbing, padded shoulder yokes, a back panel with a drag handle and a lit green marker light clipped at the shoulder. Dimensions 0.53 × 0.58 × 0.33 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-plate-carrier-2ac4f423","cdnUrl":"https://cdn.3dassets.dev/assets/32665/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-plate-carrier-2ac4f423","thumbnailUrl":"https://cdn.3dassets.dev/assets/32665/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32665/v1/poster.webp","blurhash":"U38XOHo#00-l~otQDkRQ00Rj%Ns:k7j]RUWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58200,"triangles":2808,"vertices":2443,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.2626419616970853,0,-0.16647557948955333],"max":[0.2626419616970853,0.5811127424240112,0.16647557948955333]},"sizeMeters":[0.525,0.581,0.333],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.257Z","updatedAt":"2026-09-08T12:54:22.380Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32665/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlateCarrierWithPouchesFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32665/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32665/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32665/v1/model.glb\" alt=\"Plate Carrier with Pouches (FPS Survival Forest Outpost)\" 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/32665/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/32665/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32666","slug":"fps-survival-forest-outpost-medical-kit-740d05cd","title":"Field Medical Kit (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a canvas field medical kit with a hinged lid, a lit red cross, bandage rolls, vials and scissors. Animated open and close.","description":"A canvas field medical kit 0.4 m across: a stiffened box with a hinged lid on two barrel hinges, a lit red cross and catch proud of the front, and three bandage rolls, three glass vials and a pair of scissors packed in the tray. Dimensions 0.42 × 0.47 × 0.42 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-medical-kit-740d05cd","cdnUrl":"https://cdn.3dassets.dev/assets/32666/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-medical-kit-740d05cd","thumbnailUrl":"https://cdn.3dassets.dev/assets/32666/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32666/v1/poster.webp","blurhash":"U69Gv]=|000zD*V@t7bu01Nw~B,@EMR*-B$i","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":40652,"triangles":1660,"vertices":1477,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.21200262285775182,-0.000002137079908162698,-0.21188414356223817],"max":[0.21200262285775182,0.46799999475479126,0.21188931441866515]},"sizeMeters":[0.424,0.468,0.424],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:23.624Z","updatedAt":"2026-09-08T12:54:23.733Z","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/32666/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 FieldMedicalKitFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32666/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/32666/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32666/v1/model.glb\" alt=\"Field Medical Kit (FPS Survival Forest Outpost)\" 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/32666/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/32666/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32667","slug":"fps-survival-forest-outpost-bandage-roll-6fb139f6","title":"Bandage Roll Bundle (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: four rolled field bandages banded in canvas, stacked on a cloth.","description":"Four rolled field bandages 0.16 m long, each banded round its middle, stacked two by two on a square of cloth. A small pickup for a survival loot table. Dimensions 0.24 × 0.21 × 0.28 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-bandage-roll-6fb139f6","cdnUrl":"https://cdn.3dassets.dev/assets/32667/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-bandage-roll-6fb139f6","thumbnailUrl":"https://cdn.3dassets.dev/assets/32667/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32667/v1/poster.webp","blurhash":"UGF=~-t700WW-;M{D%%M00M{~q%Mxuj[jZt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13196,"triangles":492,"vertices":508,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.12184738367795944,-0.000007291502163039865,-0.14150728285312653],"max":[0.12185676609426231,0.20600729174058163,0.14150728285312653]},"sizeMeters":[0.244,0.206,0.283],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:22.960Z","updatedAt":"2026-09-08T12:54:23.061Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32667/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BandageRollBundleFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32667/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32667/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32667/v1/model.glb\" alt=\"Bandage Roll Bundle (FPS Survival Forest Outpost)\" 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/32667/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/32667/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32668","slug":"fps-survival-forest-outpost-canteen-8846bb28","title":"Steel Canteen and Cup (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1 litre steel canteen with a rubber cap, a canvas band and a wire carrying bail.","description":"A 1 litre steel canteen 0.32 m tall: a lathed body with a rolled shoulder, a screw neck under a rubber cap, a canvas band round its waist and a wire carrying bail over the top. Dimensions 0.19 × 0.36 × 0.18 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-canteen-8846bb28","cdnUrl":"https://cdn.3dassets.dev/assets/32668/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-canteen-8846bb28","thumbnailUrl":"https://cdn.3dassets.dev/assets/32668/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32668/v1/poster.webp","blurhash":"U37w]6_10002RoM|WAx[009H~q?atJ%Lt9D*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11912,"triangles":444,"vertices":402,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.0949999988079071,0,-0.0915068368519175],"max":[0.0949999988079071,0.3580000102519989,0.09149664409021384]},"sizeMeters":[0.19,0.358,0.183],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:24.127Z","updatedAt":"2026-09-08T12:54:24.255Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32668/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SteelCanteenAndCupFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32668/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32668/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32668/v1/model.glb\" alt=\"Steel Canteen and Cup (FPS Survival Forest Outpost)\" 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/32668/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/32668/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32669","slug":"fps-survival-forest-outpost-ration-tin-stack-0e22a226","title":"Ration Tin Stack, Seven (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: seven ration tins, some corroded, stacked in a loose group with pale paper lids.","description":"Seven ration tins 0.1 m across in a loose group with one stacked on top, two of them corroded and all with a pale paper lid. A small pickup for a survival loot table. Dimensions 0.33 × 0.15 × 0.32 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-ration-tin-stack-0e22a226","cdnUrl":"https://cdn.3dassets.dev/assets/32669/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-ration-tin-stack-0e22a226","thumbnailUrl":"https://cdn.3dassets.dev/assets/32669/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32669/v1/poster.webp","blurhash":"U9B:maax00-;~q%MMxaK00%M~WD%00D$%gXS","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23772,"triangles":840,"vertices":987,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.166442409157753,-0.0000028493771394369483,-0.16148474469845042],"max":[0.166442409157753,0.14999917960098808,0.16148474469845042]},"sizeMeters":[0.333,0.15,0.323],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:25.043Z","updatedAt":"2026-09-08T15:00:46.486Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32669/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RationTinStackSevenFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32669/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32669/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32669/v1/model.glb\" alt=\"Ration Tin Stack, Seven (FPS Survival Forest Outpost)\" 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/32669/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/32669/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32672","slug":"fps-survival-forest-outpost-ammunition-box-67867ab3","title":"Steel Ammunition Box (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a steel ammunition box with a hinged lid, a folding carry handle and twelve loose rounds inside. Animated open and close.","description":"A steel ammunition box 0.46 m long: a stiffened body with a hinged lid on two barrel hinges, a proud catch, a folding carry handle across the top and twelve loose rounds standing in the bottom. Dimensions 0.46 × 0.39 × 0.33 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-ammunition-box-67867ab3","cdnUrl":"https://cdn.3dassets.dev/assets/32672/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-ammunition-box-67867ab3","thumbnailUrl":"https://cdn.3dassets.dev/assets/32672/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32672/v1/poster.webp","blurhash":"U39HC5_M004oIDRlt3xt00k9tSWBRj-n%MD+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":20884,"triangles":876,"vertices":852,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.23000000417232513,-0.000007326474211089007,-0.16699380190202223],"max":[0.23000000417232513,0.3850020505557326,0.16699999323114753]},"sizeMeters":[0.46,0.385,0.334],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:25.345Z","updatedAt":"2026-09-08T12:54:25.448Z","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/32672/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 SteelAmmunitionBoxFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32672/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/32672/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32672/v1/model.glb\" alt=\"Steel Ammunition Box (FPS Survival Forest Outpost)\" 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/32672/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/32672/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32671","slug":"fps-survival-forest-outpost-scrap-pile-1de09c0e","title":"Scrap Metal Pile 1 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1 m pile of scrap metal, plate offcuts, bar and crushed cans for a crafting resource node.","description":"A 1 m heap of scrap: twenty six pieces of plate offcut, bent bar, crushed housings and flattened cans in rust and bright steel, dropped in a loose mound. It reads as a gatherable crafting node. Dimensions 0.88 × 0.26 × 0.95 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-scrap-pile-1de09c0e","cdnUrl":"https://cdn.3dassets.dev/assets/32671/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-scrap-pile-1de09c0e","thumbnailUrl":"https://cdn.3dassets.dev/assets/32671/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32671/v1/poster.webp","blurhash":"U36aYTVY0L%g-pnhNbNe00b^~BIU0ebx$%-4","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":40424,"triangles":1860,"vertices":1650,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.44226754094609394,-0.000011372492369932097,-0.4727995991706848],"max":[0.44226754094609394,0.26349665515190057,0.4727995991706848]},"sizeMeters":[0.885,0.264,0.946],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:25.295Z","updatedAt":"2026-09-08T12:54:25.414Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32671/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScrapMetalPile1MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32671/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32671/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32671/v1/model.glb\" alt=\"Scrap Metal Pile 1 m (FPS Survival Forest Outpost)\" 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/32671/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/32671/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32670","slug":"fps-survival-forest-outpost-ore-pile-595ae3b5","title":"Ore and Stone Pile 0.9 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 0.9 m pile of broken stone with four glowing amber ore lumps in it, for a mining resource node.","description":"A 0.9 m heap of broken stone on a bed of spoil, with four lumps of ore glowing amber among the twenty two pieces. It reads as a gatherable mining node and the glowing ore is what makes it readable at night. Dimensions 0.93 × 0.34 × 0.88 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-ore-pile-595ae3b5","cdnUrl":"https://cdn.3dassets.dev/assets/32670/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-ore-pile-595ae3b5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32670/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32670/v1/poster.webp","blurhash":"U79t7F9c00${%Mj]V[j?00?F~WIq9Gj=ofRk","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":215072,"triangles":1156,"vertices":955,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.46413493156433105,0.000014090610240963253,-0.4406781779197944],"max":[0.46413493156433105,0.34261022904090765,0.4406781779197944]},"sizeMeters":[0.928,0.343,0.881],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:25.259Z","updatedAt":"2026-09-08T12:54:25.403Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32670/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OreAndStonePile09MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32670/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32670/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32670/v1/model.glb\" alt=\"Ore and Stone Pile 0.9 m (FPS Survival Forest Outpost)\" 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/32670/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/32670/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32673","slug":"fps-survival-forest-outpost-fuel-can-99fa33e8","title":"Jerry Fuel Can 20 Litre (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a corroded 20 litre jerry can with three handles, a cam cap, a spare spout and a lit amber level strip.","description":"A 20 litre steel jerry can 0.53 m tall: a pressed body with an X swage on each face, three handles across the top, a cam action cap with a wire retainer, a flexible spout clipped to the flank and a lit amber level strip on the front. Dimensions 0.41 × 0.54 × 0.35 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fuel-can-99fa33e8","cdnUrl":"https://cdn.3dassets.dev/assets/32673/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fuel-can-99fa33e8","thumbnailUrl":"https://cdn.3dassets.dev/assets/32673/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32673/v1/poster.webp","blurhash":"UA9ZWG~B0z4:xuX9Rkr=0$ENxD$zk9oLWCS1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18448,"triangles":700,"vertices":605,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.20344580150951325,0,-0.1774923663038277],"max":[0.20343893766403198,0.5439985409891976,0.17749786020261155]},"sizeMeters":[0.407,0.544,0.355],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:24.478Z","updatedAt":"2026-09-08T12:54:24.578Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32673/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JerryFuelCan20LitreFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32673/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32673/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32673/v1/model.glb\" alt=\"Jerry Fuel Can 20 Litre (FPS Survival Forest Outpost)\" 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/32673/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/32673/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32674","slug":"fps-survival-forest-outpost-lockbox-922ca3d4","title":"Reinforced Lockbox (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a reinforced steel lockbox with corner straps, a hinged lid, a combination dial and a lit green ready lamp. Animated open and close.","description":"A reinforced lockbox 0.52 m across: a welded steel body with a strap on each end, a hinged lid on two barrel hinges, a proud lock housing with a combination dial and a lit green ready lamp in its face. Dimensions 0.52 × 0.56 × 0.42 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-lockbox-922ca3d4","cdnUrl":"https://cdn.3dassets.dev/assets/32674/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-lockbox-922ca3d4","thumbnailUrl":"https://cdn.3dassets.dev/assets/32674/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32674/v1/poster.webp","blurhash":"U26u04a}00oMXT-;M{9E00oz_3WA00IU~q-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":20908,"triangles":776,"vertices":702,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.25999999046325684,-0.000006412974183772624,-0.20800872215411156],"max":[0.25999999046325684,0.5549842871120054,0.20800116233964003]},"sizeMeters":[0.52,0.555,0.416],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:24.851Z","updatedAt":"2026-09-08T12:54:24.954Z","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/32674/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 ReinforcedLockboxFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32674/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/32674/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32674/v1/model.glb\" alt=\"Reinforced Lockbox (FPS Survival Forest Outpost)\" 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/32674/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/32674/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32675","slug":"fps-survival-forest-outpost-supply-crate-b0ec2a51","title":"Slatted Supply Crate (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a slatted pine supply crate 0.78 m across with corner posts and a hinged lid on strap hinges. Animated open and close.","description":"A slatted pine supply crate 0.78 m by 0.6 m: four boards a side with gaps between them, corner posts standing proud of the slats, a planked floor and a hinged lid on two strap hinges with a rusted batten and a catch. Dimensions 0.82 × 0.66 × 0.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-supply-crate-b0ec2a51","cdnUrl":"https://cdn.3dassets.dev/assets/32675/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-supply-crate-b0ec2a51","thumbnailUrl":"https://cdn.3dassets.dev/assets/32675/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32675/v1/poster.webp","blurhash":"U48{t4}r0#J7I@ahr@V]1INbnlW:Efxr-nOB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":103832,"triangles":2256,"vertices":2250,"meshes":5,"materials":3,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-0.4099999964237213,0.000014947656891473038,-0.3275094507195499],"max":[0.4099999964237213,0.6550179286471649,0.3275122754410056]},"sizeMeters":[0.82,0.655,0.655],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:26.572Z","updatedAt":"2026-09-08T12:54:26.666Z","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/32675/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 SlattedSupplyCrateFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32675/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/32675/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32675/v1/model.glb\" alt=\"Slatted Supply Crate (FPS Survival Forest Outpost)\" 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/32675/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/32675/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32676","slug":"fps-survival-forest-outpost-supply-drop-726a9bac","title":"Landed Supply Drop (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a landed supply drop crate with a lashed frame, a lit amber beacon and its canopy spilled and rigged beside it.","description":"A supply drop that has landed: a canvas wrapped crate 0.94 m across lashed into a timber frame, with a lit amber beacon on the top face, eight rigging lines running out of it and the canopy collapsed into ten pale panels spread across two metres of ground. Dimensions 3.13 × 1.10 × 2.87 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-supply-drop-726a9bac","cdnUrl":"https://cdn.3dassets.dev/assets/32676/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-supply-drop-726a9bac","thumbnailUrl":"https://cdn.3dassets.dev/assets/32676/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32676/v1/poster.webp","blurhash":"UCBWe{WA00%Nt6axWCj]00t7~qITRot8axRi","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30796,"triangles":1388,"vertices":1168,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.5632492303848267,-0.000027233172471496925,-1.4328491687774658],"max":[1.563226310864546,1.1000087266074992,1.4328491687774658]},"sizeMeters":[3.126,1.1,2.866],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:25.965Z","updatedAt":"2026-09-08T12:54:26.114Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32676/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LandedSupplyDropFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32676/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32676/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32676/v1/model.glb\" alt=\"Landed Supply Drop (FPS Survival Forest Outpost)\" 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/32676/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/32676/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32677","slug":"fps-survival-forest-outpost-portable-radio-9096ed3f","title":"Portable Field Radio (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a handheld field radio 0.7 m tall with its aerial up, a lit blue screen, a green channel lamp, a keypad and a whip aerial that sways. Animated sway.","description":"A handheld field radio, 0.3 m in the hand and 0.7 m with its aerial up: a rubber armoured body with a lit blue screen, a lit green channel lamp, an eight key pad, a belt clip on the back and a rubber whip aerial that sways on its own base pivot. Dimensions 0.23 × 0.70 × 0.13 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips sway turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-portable-radio-9096ed3f","cdnUrl":"https://cdn.3dassets.dev/assets/32677/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-portable-radio-9096ed3f","thumbnailUrl":"https://cdn.3dassets.dev/assets/32677/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32677/v1/poster.webp","blurhash":"U32$X3tS8wI9I9WA%htSI9V@%NtS?wt8DhMv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19972,"triangles":676,"vertices":675,"meshes":5,"materials":4,"textures":0,"animations":["sway"],"boundingBox":{"min":[-0.1124994680681096,0,-0.06249498203334267],"max":[0.11250396939321103,0.6999999821186067,0.06250152406251032]},"sizeMeters":[0.225,0.7,0.125],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:26.179Z","updatedAt":"2026-09-08T12:54:26.300Z","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/32677/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 PortableFieldRadioFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32677/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/32677/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32677/v1/model.glb\" alt=\"Portable Field Radio (FPS Survival Forest Outpost)\" 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/32677/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/32677/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32678","slug":"fps-survival-forest-outpost-hand-crank-torch-c8dc334e","title":"Hand Crank Torch (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a wind up hand torch with a lit white lens, a green charge lamp and a crank that turns. Animated crank-spin.","description":"A wind up hand torch 0.17 m long: a moulded body with a reflector head and a lit white lens, a lit green charge lamp on the top and a folding crank handle on the flank that turns about its own axle. Dimensions 0.15 × 0.17 × 0.23 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips crank-spin turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-hand-crank-torch-c8dc334e","cdnUrl":"https://cdn.3dassets.dev/assets/32678/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-hand-crank-torch-c8dc334e","thumbnailUrl":"https://cdn.3dassets.dev/assets/32678/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32678/v1/poster.webp","blurhash":"UB8qZ=~q$,-:x[IUDjoy004n4nM{?H?b%Mt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14172,"triangles":468,"vertices":436,"meshes":4,"materials":4,"textures":0,"animations":["crank-spin"],"boundingBox":{"min":[-0.07599633618174917,0.000005799194094532889,-0.11400000005960464],"max":[0.07600122185248205,0.16500137920257862,0.11399871721785527]},"sizeMeters":[0.152,0.165,0.228],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:26.592Z","updatedAt":"2026-09-08T12:54:26.700Z","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/32678/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 HandCrankTorchFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32678/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/32678/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32678/v1/model.glb\" alt=\"Hand Crank Torch (FPS Survival Forest Outpost)\" 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/32678/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/32678/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32679","slug":"fps-survival-forest-outpost-signal-flare-c4560270","title":"Signal Flare, Three Sticks (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: three flare sticks on the ground, one burning with a glowing amber head and a pool of light around it.","description":"Three 0.26 m flare sticks dropped on the ground with their striker caps beside them; one is burning, its head glowing amber over a shallow emissive pool that reads as the light it casts on the ground. Emissive geometry is the light source here: there are no punctual lights in this pipeline. Dimensions 0.42 × 0.04 × 0.26 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data. The flame does not flicker and the smoke is not modelled, because this pipeline ships node transforms only.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-signal-flare-c4560270","cdnUrl":"https://cdn.3dassets.dev/assets/32679/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-signal-flare-c4560270","thumbnailUrl":"https://cdn.3dassets.dev/assets/32679/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32679/v1/poster.webp","blurhash":"U58|U_0M57^%n--oW;M|00~U^j4;XM0Nw{-:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":12412,"triangles":480,"vertices":482,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.20999999344348907,-0.000003022468585838628,-0.13025905474475605],"max":[0.20999999344348907,0.03800300634552943,0.13025976717472076]},"sizeMeters":[0.42,0.038,0.261],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:26.794Z","updatedAt":"2026-09-08T12:54:26.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32679/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalFlareThreeSticksFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32679/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32679/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32679/v1/model.glb\" alt=\"Signal Flare, Three Sticks (FPS Survival Forest Outpost)\" 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/32679/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/32679/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32681","slug":"fps-survival-forest-outpost-quad-bike-58c0c941","title":"Scavenger Quad Bike (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a battered utility quad with a rear cargo rack, mudguards, a lit headlight and four rolling wheels. Animated wheel-roll.","description":"A battered utility quad 1.9 m long: a tube frame with a rusted engine cowl, a rubber seat, a barred rear cargo rack with a strapped bundle on it, front and rear mudguards, raked handlebars with rubber grips, a lit headlight and a small instrument pod. All four knobbly wheels turn on their own axles. Dimensions 1.10 × 1.25 × 1.93 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips wheel-roll turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The steering, the suspension and the brake levers are static: only the wheels turn.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-quad-bike-58c0c941","cdnUrl":"https://cdn.3dassets.dev/assets/32681/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-quad-bike-58c0c941","thumbnailUrl":"https://cdn.3dassets.dev/assets/32681/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32681/v1/poster.webp","blurhash":"U26RASwM00Tc_2D%9G?t009b^j~A4:xu-pMx","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":260372,"triangles":10688,"vertices":9247,"meshes":15,"materials":7,"textures":1,"animations":["wheel-roll"],"boundingBox":{"min":[-0.5487106279756225,-0.00001947628447845906,-0.9669514894485474],"max":[0.5487106284703411,1.2460365991699622,0.966951489079527]},"sizeMeters":[1.097,1.246,1.934],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:28.529Z","updatedAt":"2026-09-08T16:13:56.556Z","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/32681/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 ScavengerQuadBikeFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32681/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/32681/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32681/v1/model.glb\" alt=\"Scavenger Quad Bike (FPS Survival Forest Outpost)\" 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/32681/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/32681/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32682","slug":"fps-survival-forest-outpost-pickup-battered-0972afc5","title":"Battered Survival Pickup (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a rusted four wheel pickup with a planked load bed, a roof floodlight bar, two opening cab doors and four rolling wheels. Animated open, close and wheel-roll.","description":"A rusted survival pickup 5.1 m long: a ladder chassis under a dented cab with a raked windscreen, a bonnet, a barred grille and two lit headlamps, a planked load bed with sides carrying a spare wheel and a fuel drum, a roof rack with two lit floodlights and a whip aerial. Both cab doors hinge on their front edge and all four wheels turn. Dimensions 2.51 × 2.97 × 5.12 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close, wheel-roll turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The steering, the suspension, the bonnet and the tailgate are static: only the two cab doors and the four wheels move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-pickup-battered-0972afc5","cdnUrl":"https://cdn.3dassets.dev/assets/32682/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-pickup-battered-0972afc5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32682/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32682/v1/poster.webp","blurhash":"U57^lJ-:D%IpE29bV@$%00Rjx]xu={~BkrEN","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":517880,"triangles":21992,"vertices":19725,"meshes":24,"materials":8,"textures":2,"animations":["open","close","wheel-roll"],"boundingBox":{"min":[-1.255095089584608,-0.000021550781816370712,-2.559999942779541],"max":[1.255095089584608,2.9683161400144624,2.559999942779541]},"sizeMeters":[2.51,2.968,5.12],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:28.789Z","updatedAt":"2026-09-08T16:13:55.027Z","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/32682/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 BatteredSurvivalPickupFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32682/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/32682/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32682/v1/model.glb\" alt=\"Battered Survival Pickup (FPS Survival Forest Outpost)\" 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/32682/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/32682/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32680","slug":"fps-survival-forest-outpost-logging-truck-3bbb0ea7","title":"Derelict Logging Truck (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an 11 m logging truck loaded with nine trunks, with lit headlamps and marker lights, two opening cab doors and six rolling wheels. Animated open, close and wheel-roll.","description":"A derelict logging truck 11 m long: a cab over the front axle with a raked screen, a barred grille, two lit headlamps, two exhaust stacks and a roof bar of lit amber markers, on a chassis carrying three bunks of raked stakes loaded with nine trunks. Both cab doors hinge on their front edge and all six wheels turn. Dimensions 3.29 × 3.09 × 10.06 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips open, close, wheel-roll turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data. The steering, the suspension, the load straps and the bonnet are static: only the two cab doors and the six wheels move.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-logging-truck-3bbb0ea7","cdnUrl":"https://cdn.3dassets.dev/assets/32680/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-logging-truck-3bbb0ea7","thumbnailUrl":"https://cdn.3dassets.dev/assets/32680/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32680/v1/poster.webp","blurhash":"U26*8ju514_2]50K56xa00Vr}@RQ1M~p~CV[","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":506476,"triangles":27748,"vertices":25116,"meshes":28,"materials":9,"textures":1,"animations":["open","close","wheel-roll"],"boundingBox":{"min":[-1.6458945827306302,0.000013753865135246457,-5.029614448547363],"max":[1.6458945827306302,3.0867799580621087,5.029614448547363]},"sizeMeters":[3.292,3.087,10.059],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:28.386Z","updatedAt":"2026-09-08T16:13:59.434Z","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/32680/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 DerelictLoggingTruckFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32680/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/32680/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32680/v1/model.glb\" alt=\"Derelict Logging Truck (FPS Survival Forest Outpost)\" 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/32680/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/32680/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32683","slug":"fps-survival-forest-outpost-conifer-tall-a3b77255","title":"Tall Conifer 14 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 14 m conifer with 9 needle tiers on a tapered trunk with a flared root and dead lower branches.","description":"A 14 m conifer: a tapered trunk with a flared root collar carrying 9 stacked needle tiers narrowing to the leader, with five bare dead branches low on the stem. Crowd several at different rotations to build a stand. Dimensions 4.65 × 14.14 × 4.54 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-conifer-tall-a3b77255","cdnUrl":"https://cdn.3dassets.dev/assets/32683/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-conifer-tall-a3b77255","thumbnailUrl":"https://cdn.3dassets.dev/assets/32683/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32683/v1/poster.webp","blurhash":"U44yAZx@00H]IVWCxts.D5V[*HtjyVofR6Rk","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19040,"triangles":606,"vertices":837,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2.3233390914897956,0,-2.267510563347066],"max":[2.3233390914897956,14.140439987182617,2.267510563347066]},"sizeMeters":[4.647,14.14,4.535],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:27.786Z","updatedAt":"2026-09-08T12:54:27.886Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32683/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TallConifer14MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32683/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32683/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32683/v1/model.glb\" alt=\"Tall Conifer 14 m (FPS Survival Forest Outpost)\" 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/32683/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/32683/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32684","slug":"fps-survival-forest-outpost-conifer-mid-28a9f4cb","title":"Mid Conifer 8.4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 8.4 m conifer with 7 needle tiers on a tapered trunk with a flared root and dead lower branches.","description":"A 8.4 m conifer: a tapered trunk with a flared root collar carrying 7 stacked needle tiers narrowing to the leader, with five bare dead branches low on the stem. Crowd several at different rotations to build a stand. Dimensions 3.59 × 8.48 × 3.65 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-conifer-mid-28a9f4cb","cdnUrl":"https://cdn.3dassets.dev/assets/32684/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-conifer-mid-28a9f4cb","thumbnailUrl":"https://cdn.3dassets.dev/assets/32684/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32684/v1/poster.webp","blurhash":"U54o+Otk00H[Vue:oebF8xVt.ktkyBkBRQe;","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16632,"triangles":530,"vertices":715,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.7932384452082892,0,-1.825060217185595],"max":[1.7932384452082892,8.484267234802246,1.825060217185595]},"sizeMeters":[3.586,8.484,3.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:27.857Z","updatedAt":"2026-09-08T12:54:27.948Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32684/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MidConifer84MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32684/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32684/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32684/v1/model.glb\" alt=\"Mid Conifer 8.4 m (FPS Survival Forest Outpost)\" 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/32684/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/32684/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32685","slug":"fps-survival-forest-outpost-conifer-young-9e2432f7","title":"Young Conifer 3.6 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 3.6 m conifer with 5 needle tiers on a tapered trunk with a flared root and dead lower branches.","description":"A 3.6 m conifer: a tapered trunk with a flared root collar carrying 5 stacked needle tiers narrowing to the leader, with five bare dead branches low on the stem. Crowd several at different rotations to build a stand. Dimensions 1.96 × 3.64 × 1.97 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-conifer-young-9e2432f7","cdnUrl":"https://cdn.3dassets.dev/assets/32685/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-conifer-young-9e2432f7","thumbnailUrl":"https://cdn.3dassets.dev/assets/32685/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32685/v1/poster.webp","blurhash":"U55Fgrxu00IBR6WBozof8xRj*GtQ%|ozMyR%","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14240,"triangles":454,"vertices":593,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.9786104551967342,0,-0.9866052304242795],"max":[0.9786104551967342,3.636115074157715,0.9866052304242795]},"sizeMeters":[1.957,3.636,1.973],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:28.331Z","updatedAt":"2026-09-08T12:54:28.437Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32685/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YoungConifer36MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32685/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32685/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32685/v1/model.glb\" alt=\"Young Conifer 3.6 m (FPS Survival Forest Outpost)\" 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/32685/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/32685/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32686","slug":"fps-survival-forest-outpost-tree-stump-8562d738","title":"Felled Tree Stump 1.9 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a felled conifer stump with a splintered top, surface roots and a patch of moss.","description":"A felled conifer stump 1.9 m across the roots and 0.74 m tall: a flared bole with a sawn face, four splinters standing proud of it, five surface roots running out into the ground and a patch of moss on the shoulder. Dimensions 1.84 × 0.90 × 1.40 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-tree-stump-8562d738","cdnUrl":"https://cdn.3dassets.dev/assets/32686/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-tree-stump-8562d738","thumbnailUrl":"https://cdn.3dassets.dev/assets/32686/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32686/v1/poster.webp","blurhash":"U37KPB--00Na9GWDxvR*01D,~Bxu~UxsNFsm","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":62160,"triangles":802,"vertices":711,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.9197019338607788,0.00005212553609701409,-0.6977407261526871],"max":[0.9197019338607788,0.9000259272795803,0.6977407261526871]},"sizeMeters":[1.839,0.9,1.395],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:29.429Z","updatedAt":"2026-09-08T12:54:29.542Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32686/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FelledTreeStump19MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32686/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32686/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32686/v1/model.glb\" alt=\"Felled Tree Stump 1.9 m (FPS Survival Forest Outpost)\" 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/32686/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/32686/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32687","slug":"fps-survival-forest-outpost-fallen-log-56e7e78a","title":"Fallen Mossy Log 5.4 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 5.4 m fallen conifer log with a sawn end, broken branch stubs, moss along the top and shed bark beside it.","description":"A 5.4 m fallen conifer lying on the forest floor: a tapered trunk with one sawn end, six broken branch stubs, seven patches of moss along the upper surface and four slabs of shed bark on the ground beside it. It reads as cover and as a firewood source. Dimensions 5.42 × 0.98 × 1.34 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fallen-log-56e7e78a","cdnUrl":"https://cdn.3dassets.dev/assets/32687/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fallen-log-56e7e78a","thumbnailUrl":"https://cdn.3dassets.dev/assets/32687/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32687/v1/poster.webp","blurhash":"U26@p2xs0ft8$j~BozE200nT~BNGIp02RP?Z","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59144,"triangles":664,"vertices":672,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2.7084760665893555,-0.0000027100340354579977,-0.6725107967702565],"max":[2.7084760665893555,0.9793370048300254,0.6725107967702565]},"sizeMeters":[5.417,0.979,1.345],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:29.557Z","updatedAt":"2026-09-08T12:54:29.669Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32687/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FallenMossyLog54MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32687/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32687/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32687/v1/model.glb\" alt=\"Fallen Mossy Log 5.4 m (FPS Survival Forest Outpost)\" 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/32687/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/32687/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32688","slug":"fps-survival-forest-outpost-boulder-cluster-3fd6db72","title":"Mossy Boulder Cluster 3.6 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a cluster of four granite boulders with mossy caps, the largest 1.5 m across.","description":"Four granite boulders in a loose cluster 3.6 m across, each a displaced rock form flattened where it beds into the ground, with a cap of moss on the weather side. It blocks a line and gives a shooter a rest. Dimensions 3.22 × 1.30 × 2.64 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-boulder-cluster-3fd6db72","cdnUrl":"https://cdn.3dassets.dev/assets/32688/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-boulder-cluster-3fd6db72","thumbnailUrl":"https://cdn.3dassets.dev/assets/32688/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32688/v1/poster.webp","blurhash":"U58Nth?b00xuM{oft6IU009Z~qRjxujuog-;","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":209924,"triangles":544,"vertices":785,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-1.6103622913360596,0.00007632043060656901,-1.3177966406926953],"max":[1.6103622913360596,1.298804733493954,1.317751275515154]},"sizeMeters":[3.221,1.299,2.636],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:30.547Z","updatedAt":"2026-09-08T16:12:21.611Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32688/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MossyBoulderCluster36MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32688/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32688/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32688/v1/model.glb\" alt=\"Mossy Boulder Cluster 3.6 m (FPS Survival Forest Outpost)\" 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/32688/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/32688/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32689","slug":"fps-survival-forest-outpost-undergrowth-clump-d68b2daa","title":"Forest Undergrowth Clump 2 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2 m clump of scrub and grass in forty leaning blades with five bare stems through it.","description":"A 2 m clump of forest floor scrub: forty leaning blades of grass and low shrub at random heights and rotations, with five bare stems standing through them. Scatter several at different rotations to break up open ground. Dimensions 1.94 × 0.76 × 1.79 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-undergrowth-clump-d68b2daa","cdnUrl":"https://cdn.3dassets.dev/assets/32689/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-undergrowth-clump-d68b2daa","thumbnailUrl":"https://cdn.3dassets.dev/assets/32689/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32689/v1/poster.webp","blurhash":"U24{S5t54UIBRRbuWBVt00oN.jtjyBrao|pH","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19168,"triangles":820,"vertices":760,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.9700484871864319,0.00003284692789751187,-0.8943820681627478],"max":[0.9700484871864319,0.7622286033627824,0.8943731188774109]},"sizeMeters":[1.94,0.762,1.789],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:29.791Z","updatedAt":"2026-09-08T12:54:29.892Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32689/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ForestUndergrowthClump2MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32689/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32689/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32689/v1/model.glb\" alt=\"Forest Undergrowth Clump 2 m (FPS Survival Forest Outpost)\" 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/32689/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/32689/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32690","slug":"fps-survival-forest-outpost-fern-cluster-73632b47","title":"Fern Cluster 1.5 m (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.5 m fern cluster of nine arching fronds with pinnae along each.","description":"A 1.5 m fern cluster: nine fronds arching out of one crown, each a tapered stem carrying five pinnae that shorten toward the tip. It fills the damp ground under a conifer stand. Dimensions 1.57 × 0.80 × 1.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fern-cluster-73632b47","cdnUrl":"https://cdn.3dassets.dev/assets/32690/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fern-cluster-73632b47","thumbnailUrl":"https://cdn.3dassets.dev/assets/32690/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32690/v1/poster.webp","blurhash":"U34MIXe?4Tb;%{ofVtX400ox.kaOD6V@tknn","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":34108,"triangles":1044,"vertices":1665,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.7840229272842407,-0.000005379763492685541,-0.7611485134384894],"max":[0.7840229272842407,0.7956222449215737,0.7611485134384894]},"sizeMeters":[1.568,0.796,1.522],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:30.097Z","updatedAt":"2026-09-08T16:12:23.266Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32690/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FernCluster15MFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32690/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32690/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32690/v1/model.glb\" alt=\"Fern Cluster 1.5 m (FPS Survival Forest Outpost)\" 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/32690/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/32690/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32691","slug":"fps-survival-forest-outpost-fuel-bowser-004a2166","title":"Towable Fuel Bowser (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a rusted towable fuel bowser with a banded tank, a pump cabinet with a lit blue meter, a delivery hose and four rolling wheels. Animated wheel-roll.","description":"A towable fuel bowser 3.8 m long: a banded steel tank on a welded chassis with a filler turret, a pump cabinet with a lit blue meter and a green ready lamp, a delivery hose ending in a nozzle stowed on the flank, a step plate, a hand rail and a drawbar with a hitch. All four wheels turn. Dimensions 1.79 × 2.66 × 3.73 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips wheel-roll turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fuel-bowser-004a2166","cdnUrl":"https://cdn.3dassets.dev/assets/32691/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fuel-bowser-004a2166","thumbnailUrl":"https://cdn.3dassets.dev/assets/32691/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32691/v1/poster.webp","blurhash":"U88zJiR+0fWB~AIpE3%10fIq-U-n0#s:-UWV","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":263648,"triangles":11120,"vertices":9701,"meshes":15,"materials":7,"textures":1,"animations":["wheel-roll"],"boundingBox":{"min":[-0.8972239742963325,0.00007064141603452256,-1.8650533871250943],"max":[0.8970934308904585,2.660124108163017,1.8650000095367432]},"sizeMeters":[1.794,2.66,3.73],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:31.253Z","updatedAt":"2026-09-08T16:13:52.017Z","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/32691/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 TowableFuelBowserFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32691/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/32691/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32691/v1/model.glb\" alt=\"Towable Fuel Bowser (FPS Survival Forest Outpost)\" 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/32691/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/32691/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32692","slug":"fps-survival-forest-outpost-oil-drum-0476e302","title":"Corroded Oil Drum 200 L (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a corroded 200 litre oil drum with two rolling hoops, a chime and two bungs.","description":"A corroded 200 litre oil drum 0.88 m tall: a lathed shell with two rolling hoops, a rolled chime at the head and two bungs in the top face. Dimensions 0.68 × 0.91 × 0.68 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-oil-drum-0476e302","cdnUrl":"https://cdn.3dassets.dev/assets/32692/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-oil-drum-0476e302","thumbnailUrl":"https://cdn.3dassets.dev/assets/32692/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32692/v1/poster.webp","blurhash":"U5BCus-o004:~WbH9ZoJ1kSh+ZwbW?oMWBWV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":43172,"triangles":2336,"vertices":1697,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.3415448450989787,0,-0.33902035400880337],"max":[0.3415448450989787,0.9110525846481323,0.33902035400880337]},"sizeMeters":[0.683,0.911,0.678],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:31.507Z","updatedAt":"2026-09-08T12:54:31.625Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32692/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CorrodedOilDrum200LFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32692/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32692/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32692/v1/model.glb\" alt=\"Corroded Oil Drum 200 L (FPS Survival Forest Outpost)\" 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/32692/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/32692/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32693","slug":"fps-survival-forest-outpost-oil-drum-open-e354f8b6","title":"Burning Oil Drum Brazier (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a cut down oil drum burning as a brazier, with glowing embers and five logs standing in it.","description":"The brazier version of the oil drum: the same corroded shell with its head cut out, a bed of ash inside and five logs standing in a glowing amber fire. It is the pack's cheapest night light and reads at thirty metres. Dimensions 0.73 × 0.91 × 0.68 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-oil-drum-open-e354f8b6","cdnUrl":"https://cdn.3dassets.dev/assets/32693/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-oil-drum-open-e354f8b6","thumbnailUrl":"https://cdn.3dassets.dev/assets/32693/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32693/v1/poster.webp","blurhash":"U5BMGM~B000f~qjGD%xt2LJ-;c$f%NbvM{V@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":90516,"triangles":2496,"vertices":1823,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-0.3651120708338141,0,-0.33901676992095703],"max":[0.3651073303122645,0.9110525846481323,0.33901676992095703]},"sizeMeters":[0.73,0.911,0.678],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:31.636Z","updatedAt":"2026-09-08T12:54:31.785Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32693/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BurningOilDrumBrazierFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32693/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32693/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32693/v1/model.glb\" alt=\"Burning Oil Drum Brazier (FPS Survival Forest Outpost)\" 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/32693/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/32693/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32694","slug":"fps-survival-forest-outpost-pallet-stack-62114bf2","title":"Pallet Stack, Six High (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: six pine pallets stacked and slightly out of square, with a canvas wrapped load strapped on top.","description":"A stack of six pine pallets 1.2 m by 0.9 m, each rotated a little out of square, carrying a canvas wrapped load strapped down with two rubber ties. It is a cover piece and a scrap timber source. Dimensions 1.30 × 1.17 × 1.01 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-pallet-stack-62114bf2","cdnUrl":"https://cdn.3dassets.dev/assets/32694/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-pallet-stack-62114bf2","thumbnailUrl":"https://cdn.3dassets.dev/assets/32694/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32694/v1/poster.webp","blurhash":"U8A9~5-o02NH.logMejF57NakWWCHsaextWX","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":170616,"triangles":4860,"vertices":5230,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.6475257277488708,-0.000003720348862923384,-0.502658046188326],"max":[0.6475257277488708,1.1699957043613742,0.502658046188326]},"sizeMeters":[1.295,1.17,1.005],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:32.255Z","updatedAt":"2026-09-08T12:54:32.352Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32694/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PalletStackSixHighFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32694/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32694/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32694/v1/model.glb\" alt=\"Pallet Stack, Six High (FPS Survival Forest Outpost)\" 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/32694/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/32694/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32695","slug":"fps-survival-forest-outpost-tyre-stack-a24f4aaf","title":"Tyre Stack, Five High (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: five worn truck tyres stacked out of true with a sixth leaning against them.","description":"Five worn truck tyres 1.08 m across stacked out of true, each with twelve tread blocks standing proud of the carcass, and a sixth leaning on its side against the stack. Dimensions 1.70 × 2.00 × 1.43 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-tyre-stack-a24f4aaf","cdnUrl":"https://cdn.3dassets.dev/assets/32695/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-tyre-stack-a24f4aaf","thumbnailUrl":"https://cdn.3dassets.dev/assets/32695/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32695/v1/poster.webp","blurhash":"U01{Tw%M00D%%Mt7M{M{00Rj?bt6RhWBogt6","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":56248,"triangles":2256,"vertices":2598,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.848139896847438,0,-0.7126071962645344],"max":[0.848139896847438,2,0.7126071962645344]},"sizeMeters":[1.696,2,1.425],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:31.470Z","updatedAt":"2026-09-08T12:54:31.594Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32695/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TyreStackFiveHighFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32695/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32695/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32695/v1/model.glb\" alt=\"Tyre Stack, Five High (FPS Survival Forest Outpost)\" 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/32695/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/32695/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32696","slug":"fps-survival-forest-outpost-floodlight-mast-98fcda0b","title":"Four Head Floodlight Mast (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 5.6 m floodlight mast with four lit heads on a cross bar, a guyed base and a switch box with a green lamp.","description":"A 5.6 m floodlight mast on a cast pad: a tapered tube braced by three struts, carrying a cross bar with four raked heads whose lenses are lit white, with a switch box at the foot showing a green lamp and a cable run up the mast. The lit lenses are the light source; there are no punctual lights in this pipeline, so add a real light in your engine if you need the ground lit. Dimensions 2.20 × 5.78 × 1.14 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-floodlight-mast-98fcda0b","cdnUrl":"https://cdn.3dassets.dev/assets/32696/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-floodlight-mast-98fcda0b","thumbnailUrl":"https://cdn.3dassets.dev/assets/32696/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32696/v1/poster.webp","blurhash":"U45hV;%M004n%MxuRiD%~Wxu9FD*ahofoxRj","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":317500,"triangles":6070,"vertices":5503,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-1.1000213822752996,0.00003539794966680998,-0.5674999952316284],"max":[1.1000213822752996,5.777735233306885,0.5674977212444879]},"sizeMeters":[2.2,5.778,1.135],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:32.620Z","updatedAt":"2026-09-08T12:54:32.723Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32696/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FourHeadFloodlightMastFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32696/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32696/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32696/v1/model.glb\" alt=\"Four Head Floodlight Mast (FPS Survival Forest Outpost)\" 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/32696/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/32696/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32697","slug":"fps-survival-forest-outpost-road-sign-0ff86136","title":"Hanging Forest Road Sign (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a leaning post carrying two hanging direction boards that sway, over a lit red hazard plate. Animated sway.","description":"A forest road sign on a 2.5 m rusted post in a cast footing: a cross arm hung with two blank direction boards on wire loops that sway together on the arm pivot, over a fixed plate with a lit red hazard panel. The boards carry no lettering, so nothing on this model reads as a real mark. Dimensions 1.20 × 2.64 × 0.44 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips sway turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-road-sign-0ff86136","cdnUrl":"https://cdn.3dassets.dev/assets/32697/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-road-sign-0ff86136","thumbnailUrl":"https://cdn.3dassets.dev/assets/32697/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32697/v1/poster.webp","blurhash":"U16Q^:^k00004TM{?].8T|kWz:n3IBkD%fac","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":389364,"triangles":936,"vertices":832,"meshes":6,"materials":4,"textures":2,"animations":["sway"],"boundingBox":{"min":[-0.6000000131130219,0.0000057968236516214855,-0.2200000062584877],"max":[0.600000034570694,2.640000104904175,0.2200000062584877]},"sizeMeters":[1.2,2.64,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:33.075Z","updatedAt":"2026-09-08T12:54:33.174Z","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/32697/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 HangingForestRoadSignFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32697/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/32697/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32697/v1/model.glb\" alt=\"Hanging Forest Road Sign (FPS Survival Forest Outpost)\" 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/32697/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/32697/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32698","slug":"fps-survival-forest-outpost-campfire-9a18b153","title":"Open Campfire with Embers (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: an open campfire ringed with eleven stones, six burning logs and a bed of glowing amber embers.","description":"An open campfire 1.9 m across the stone ring: eleven set stones round six logs leaning into a bed of glowing amber embers, with three spare logs dropped outside the ring. Emissive geometry is the light source here. Dimensions 2.61 × 0.96 × 2.03 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Static geometry; no rig, animation, collision or navigation data. The flame is static geometry: it glows but does not flicker, because this pipeline ships node transforms only.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-campfire-9a18b153","cdnUrl":"https://cdn.3dassets.dev/assets/32698/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-campfire-9a18b153","thumbnailUrl":"https://cdn.3dassets.dev/assets/32698/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32698/v1/poster.webp","blurhash":"UA7^*+M{01-:odj[WCfR00xu~VE2M}a#t6WU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":214720,"triangles":604,"vertices":1010,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1.3029314279556274,-0.00004953534892637723,-1.0151249170303345],"max":[1.3029314279556274,0.964718759059906,1.015171293511354]},"sizeMeters":[2.606,0.965,2.03],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":0,"publishedAt":"2026-09-08T12:54:33.312Z","updatedAt":"2026-09-08T12:54:33.411Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32698/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenCampfireWithEmbersFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32698/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32698/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32698/v1/model.glb\" alt=\"Open Campfire with Embers (FPS Survival Forest Outpost)\" 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/32698/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/32698/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32699","slug":"fps-survival-forest-outpost-figure-survivor-scavenger-2d14537c","title":"Survivor Scavenger, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.78 m survivor scavenger in a layered canvas coat with webbing, a pack and a carbine, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"A survivor scavenger 1.78 m tall in a layered canvas coat with a storm flap, two flapped chest pockets, a skirt with a thickened hem and a webbing belt of three pouches, a soft cap, a framed shoulder pack with straps, and a carbine carried across his front in the right hand. The face is modelled: brow, nose, cheekbones, jaw, ears, eyes and mouth. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the weapon. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.63 × 1.74 × 1.16 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-survivor-scavenger-2d14537c","cdnUrl":"https://cdn.3dassets.dev/assets/32699/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-survivor-scavenger-2d14537c","thumbnailUrl":"https://cdn.3dassets.dev/assets/32699/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32699/v1/poster.webp","blurhash":"U25}gRIV00?Z~oaL4pbt0Moy?GRk9HNt%K-V","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":294864,"triangles":15776,"vertices":12587,"meshes":16,"materials":4,"textures":0,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.31536909178552414,8.780534359043024e-7,-0.5775901240376113],"max":[0.31537687857564534,1.74032976840727,0.5775874218371593]},"sizeMeters":[0.631,1.74,1.155],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:34.009Z","updatedAt":"2026-09-08T16:15:20.469Z","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/32699/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 SurvivorScavengerJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32699/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/32699/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32699/v1/model.glb\" alt=\"Survivor Scavenger, Jointed (FPS Survival Forest Outpost)\" 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/32699/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/32699/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32700","slug":"fps-survival-forest-outpost-figure-masked-raider-958f10e5","title":"Masked Raider, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.8 m masked raider in a respirator and hood with steel pauldrons and a machete, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"A masked raider 1.8 m tall leaning forward in leathers under a canvas hood, wearing a rubber respirator with twin cartridge filters, glass eye lenses and a head strap, a wrapped torso with a bandolier and a webbing belt of four pouches, a steel pauldron with a rolled edge on each shoulder, and a machete raised in the right hand with a riveted scale handle, a guard and a lanyard. The face is covered, so no eyes or mouth are modelled under the mask. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the machete. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.97 × 1.81 × 0.68 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-masked-raider-958f10e5","cdnUrl":"https://cdn.3dassets.dev/assets/32700/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-masked-raider-958f10e5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32700/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32700/v1/poster.webp","blurhash":"U25#X}M|00%f~pWB8{t601t7^*IU4ntQ-;IU","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":259036,"triangles":13976,"vertices":11029,"meshes":18,"materials":5,"textures":0,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.48306435876126286,8.892842192145811e-7,-0.3409849482468065],"max":[0.48309348935358354,1.8071857643813336,0.3409916966130617]},"sizeMeters":[0.966,1.807,0.682],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:33.157Z","updatedAt":"2026-09-08T16:15:28.739Z","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/32700/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 MaskedRaiderJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32700/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/32700/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32700/v1/model.glb\" alt=\"Masked Raider, Jointed (FPS Survival Forest Outpost)\" 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/32700/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/32700/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32701","slug":"fps-survival-forest-outpost-figure-armoured-heavy-50145224","title":"Armoured Heavy, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.89 m armoured heavy in a bolted plate rig and a visored helmet with a break gun, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"An armoured heavy 1.89 m tall and heavily built, in a bolted plate rig with three abdominal lames, a groin flap, a back plate, two magazine pouches with flaps and rows of hex bolts along the flanges, a steel helmet with a brow guard, ear cups, cheek plates and a rail carrying a glass visor, and a bolted pauldron with a rolled edge and a lame on each shoulder. He holds a break action gun at the ready, with a rib along its twin barrels, a fore end and a trigger guard. The face is behind the visor, so no eyes or mouth are modelled. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the weapon. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.78 × 1.89 × 1.10 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-armoured-heavy-50145224","cdnUrl":"https://cdn.3dassets.dev/assets/32701/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-armoured-heavy-50145224","thumbnailUrl":"https://cdn.3dassets.dev/assets/32701/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32701/v1/poster.webp","blurhash":"U14.6w9H00~p~qRi4T%M9gob-iohn$M|WU-:","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":302068,"triangles":16132,"vertices":12976,"meshes":18,"materials":6,"textures":0,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.3901674515320794,9.492183385001463e-7,-0.5517221347408074],"max":[0.3901674515320794,1.8936032205212114,0.5517305045532956]},"sizeMeters":[0.78,1.894,1.103],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:33.355Z","updatedAt":"2026-09-08T16:15:27.117Z","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/32701/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 ArmouredHeavyJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32701/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/32701/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32701/v1/model.glb\" alt=\"Armoured Heavy, Jointed (FPS Survival Forest Outpost)\" 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/32701/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/32701/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32702","slug":"fps-survival-forest-outpost-figure-scout-archer-39d4ea47","title":"Forest Scout with Bow, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.81 m forest scout in a green hood and jerkin with a quiver of arrows and a recurve bow, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"A forest scout 1.81 m tall to the crown of the hood and lightly built, in a green hood with a peak and a shoulder cape over a canvas jerkin with chest pockets, a bandolier and a webbing belt of three pouches, and a leather quiver of four fletched arrows on a strap. She holds a recurve bow out in the left hand, with a wrapped riser, an arrow rest, string nocks and a linen string. The face is modelled: brow, nose, cheekbones, jaw, ears, eyes and mouth. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm; the bow hangs on the left forearm rather than the right, because that is the hand a right handed archer holds it in. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.59 × 1.84 × 1.16 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-scout-archer-39d4ea47","cdnUrl":"https://cdn.3dassets.dev/assets/32702/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-scout-archer-39d4ea47","thumbnailUrl":"https://cdn.3dassets.dev/assets/32702/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32702/v1/poster.webp","blurhash":"U355RSMe00.k?siyDkX+9Zt7%fM{MyX8tRr?","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":315748,"triangles":14500,"vertices":11429,"meshes":19,"materials":5,"textures":1,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.29535886396283084,8.59317159575268e-7,-0.5798831589399669],"max":[0.2953587323333906,1.843532437801957,0.5798988757692372]},"sizeMeters":[0.591,1.844,1.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:34.448Z","updatedAt":"2026-09-08T16:15:17.899Z","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/32702/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 ForestScoutWithBowJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32702/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/32702/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32702/v1/model.glb\" alt=\"Forest Scout with Bow, Jointed (FPS Survival Forest Outpost)\" 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/32702/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/32702/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32703","slug":"fps-survival-forest-outpost-figure-field-medic-e9128e01","title":"Field Medic, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.69 m field medic in a pale smock with a lit red cross and a medical kit, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"A field medic 1.69 m tall as posed, leaning forward over her work in a pale smock with two flapped pockets, a bandolier and a webbing belt of four pouches, a soft cap with a peak and a band, and a lit red cross on the chest and cap. She carries a canvas medical kit in the right hand with a lid, a catch and a carry handle. The face is modelled: brow, nose, cheekbones, jaw, ears, eyes and mouth. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the medical kit. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.91 × 1.69 × 0.76 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-field-medic-e9128e01","cdnUrl":"https://cdn.3dassets.dev/assets/32703/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-field-medic-e9128e01","thumbnailUrl":"https://cdn.3dassets.dev/assets/32703/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32703/v1/poster.webp","blurhash":"UA9tAUoJ00bI~qoL4nWBIBj[%LWBIUWVtQfi","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":249540,"triangles":13466,"vertices":10559,"meshes":17,"materials":5,"textures":0,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.45378294986077883,8.510226558247624e-7,-0.3782377067832319],"max":[0.45377322971701317,1.6859366103238425,0.3782644309095035]},"sizeMeters":[0.908,1.686,0.757],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:35.075Z","updatedAt":"2026-09-08T16:15:14.203Z","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/32703/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 FieldMedicJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32703/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/32703/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32703/v1/model.glb\" alt=\"Field Medic, Jointed (FPS Survival Forest Outpost)\" 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/32703/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/32703/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32704","slug":"fps-survival-forest-outpost-figure-trader-96f9bfd4","title":"Outpost Trader, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.76 m trader in a long coat and brimmed hat carrying a slatted crate, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"An outpost trader 1.76 m tall and heavily built, in a long canvas coat with a storm placket, a shoulder yoke and a belted skirt, a webbing belt with three pouches, two rusted cases and a horn, and a felt hat with a wide brim and a band. He holds a slatted pine crate out in the right hand, boarded on four sides with proud corner posts. The face is modelled: brow, nose, cheekbones, jaw, ears, eyes and mouth. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the crate. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 1.16 × 1.77 × 0.81 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-trader-96f9bfd4","cdnUrl":"https://cdn.3dassets.dev/assets/32704/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-trader-96f9bfd4","thumbnailUrl":"https://cdn.3dassets.dev/assets/32704/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32704/v1/poster.webp","blurhash":"U36Hor-:0002_Kt74pM{57M}={-nXPbHi}jF","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":298732,"triangles":13680,"vertices":10832,"meshes":16,"materials":5,"textures":1,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.579230746910202,8.71238327281032e-7,-0.40658521092315164],"max":[0.5792286978880495,1.765336516770552,0.4065860702132974]},"sizeMeters":[1.158,1.765,0.813],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:35.471Z","updatedAt":"2026-09-08T16:15:09.044Z","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/32704/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 OutpostTraderJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32704/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/32704/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32704/v1/model.glb\" alt=\"Outpost Trader, Jointed (FPS Survival Forest Outpost)\" 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/32704/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/32704/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32705","slug":"fps-survival-forest-outpost-figure-hazmat-researcher-22ebafd5","title":"Hazmat Researcher, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.78 m researcher in a sealed suit with twin tanks, a wrapped visor and a glowing sample flask, built as a rigid jointed puppet. Animated idle, head-turn, arm-swing and weapon-raise.","description":"A researcher 1.78 m tall in a sealed pale hazmat suit with a taped front seam, two flapped pockets and a waist ring, a hood with a sealing collar and a wrapped glass visor, a lit green helmet lamp, two breathing tanks on a back pack with valve collars and a pair of rubber hoses running round to the hood. He holds a glowing blue sample flask with a screw neck and a carry ring in the right hand. The face is behind the visor, so no eyes or mouth are modelled. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm, and the right forearm carries the flask. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.88 × 1.78 × 0.83 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing, weapon-raise turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-figure-hazmat-researcher-22ebafd5","cdnUrl":"https://cdn.3dassets.dev/assets/32705/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-figure-hazmat-researcher-22ebafd5","thumbnailUrl":"https://cdn.3dassets.dev/assets/32705/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32705/v1/poster.webp","blurhash":"UEBg3ut700Rj_3t79FM{00ay~qWC4nM{-;%M","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":252488,"triangles":13592,"vertices":10579,"meshes":19,"materials":8,"textures":0,"animations":["idle","head-turn","arm-swing","weapon-raise"],"boundingBox":{"min":[-0.44087140732589813,8.852468490264109e-7,-0.4173769604072223],"max":[0.4408736742570078,1.781018379495144,0.4173862159565788]},"sizeMeters":[0.882,1.781,0.835],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:35.906Z","updatedAt":"2026-09-08T16:15:07.208Z","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/32705/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 HazmatResearcherJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32705/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/32705/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32705/v1/model.glb\" alt=\"Hazmat Researcher, Jointed (FPS Survival Forest Outpost)\" 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/32705/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/32705/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32707","slug":"fps-survival-forest-outpost-creature-infected-runner-d6e26047","title":"Infected Runner, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.59 m infected runner hunched forward in torn rags with glowing lesions and pale claws, built as a rigid jointed puppet. Animated idle, head-turn and arm-swing.","description":"An infected runner 1.59 m as posed and 1.7 m if it stood up, hunched 24 degrees forward on bent knees, with sickly grey green flesh, torn rags hanging off the shoulders and hips, five glowing amber lesions across the back and shoulders, matted hair over a shaped skull with pale glowing eyes, and four claws on each hand. Both arms are thrown up and out. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm; the claws ride the forearms, so an arm swing carries them. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 0.82 × 1.61 × 0.83 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-creature-infected-runner-d6e26047","cdnUrl":"https://cdn.3dassets.dev/assets/32707/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-creature-infected-runner-d6e26047","thumbnailUrl":"https://cdn.3dassets.dev/assets/32707/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32707/v1/poster.webp","blurhash":"U471flf,00$~~ot7D+Rj00WB^*Rk01IU-:%M","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"horror","title":"Horror"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":231692,"triangles":12564,"vertices":9938,"meshes":17,"materials":5,"textures":0,"animations":["idle","head-turn","arm-swing"],"boundingBox":{"min":[-0.4112307937964218,8.390028617827339e-7,-0.41543909679206825],"max":[0.41123079287438824,1.606444949682245,0.41543838038560055]},"sizeMeters":[0.822,1.606,0.831],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:37.016Z","updatedAt":"2026-09-08T16:15:03.355Z","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/32707/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 InfectedRunnerJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32707/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/32707/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32707/v1/model.glb\" alt=\"Infected Runner, Jointed (FPS Survival Forest Outpost)\" 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/32707/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/32707/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32706","slug":"fps-survival-forest-outpost-creature-infected-bloated-605d5b91","title":"Bloated Infected, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 1.6 m bloated infected with a swollen torso, skin folds and glowing amber blisters, built as a rigid jointed puppet. Animated idle, head-turn and arm-swing.","description":"A bloated infected 1.6 m tall and grossly heavy, with a swollen torso banded by three skin folds, growths over one shoulder and one flank, six glowing amber blisters across the chest and two more on the skull. It is the same jointed body and shaped skull as the runner at a much greater girth, so it reads as a variant of the same infection. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 1.16 × 1.60 × 0.71 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-creature-infected-bloated-605d5b91","cdnUrl":"https://cdn.3dassets.dev/assets/32706/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-creature-infected-bloated-605d5b91","thumbnailUrl":"https://cdn.3dassets.dev/assets/32706/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32706/v1/poster.webp","blurhash":"U58E0Y-:009c~oxt9GIW01IV_0%101IV-:%L","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"horror","title":"Horror"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":230400,"triangles":12668,"vertices":9780,"meshes":15,"materials":5,"textures":0,"animations":["idle","head-turn","arm-swing"],"boundingBox":{"min":[-0.5785244417152752,8.218446069171992e-7,-0.352566852171635],"max":[0.578517371764315,1.6001769290186683,0.35254349348890873]},"sizeMeters":[1.157,1.6,0.705],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:36.474Z","updatedAt":"2026-09-08T16:15:05.149Z","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/32706/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 BloatedInfectedJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32706/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/32706/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32706/v1/model.glb\" alt=\"Bloated Infected, Jointed (FPS Survival Forest Outpost)\" 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/32706/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/32706/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32708","slug":"fps-survival-forest-outpost-creature-stalker-ec567238","title":"Forest Stalker, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a 2.06 m gaunt stalker with a horned skull, a spined back, glowing red eyes and long claws, built as a rigid jointed puppet. Animated idle, head-turn and arm-swing.","description":"A gaunt stalker 2.06 m as posed and 2.16 m if it stood up, crouched 32 degrees forward on bent legs with long thin limbs. It has an elongated skull with a tapered muzzle, a split jaw of six glowing teeth, two long horns and two short ones, a pair of glowing red eyes, seven pale spines down the back over three ribbed bands, and four long claws on each hand. Motion is rigid node transforms on parented joint nodes: the pelvis carries the head and both shoulders, each shoulder carries its forearm; the claws ride the forearms and the spines ride the torso. There is no skeleton, no skin weighting and no deformation anywhere. The fingers inside the mitt, the face, the hair and the clothing are solid, and the legs are static so the feet stay planted. Dimensions 1.04 × 2.02 × 1.23 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn, arm-swing turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-creature-stalker-ec567238","cdnUrl":"https://cdn.3dassets.dev/assets/32708/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-creature-stalker-ec567238","thumbnailUrl":"https://cdn.3dassets.dev/assets/32708/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32708/v1/poster.webp","blurhash":"U47A}8%M00n$~pt69Hbc01D%-p-=4-D%s=-;","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"horror","title":"Horror"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":222264,"triangles":12016,"vertices":9604,"meshes":16,"materials":5,"textures":0,"animations":["idle","head-turn","arm-swing"],"boundingBox":{"min":[-0.5177059535881194,0.000001068517329706753,-0.6147400813989905],"max":[0.5177059581511434,2.0161457353952237,0.6147383465279184]},"sizeMeters":[1.035,2.016,1.229],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:37.212Z","updatedAt":"2026-09-08T16:15:01.894Z","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/32708/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 ForestStalkerJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32708/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/32708/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32708/v1/model.glb\" alt=\"Forest Stalker, Jointed (FPS Survival Forest Outpost)\" 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/32708/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/32708/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32709","slug":"fps-survival-forest-outpost-creature-wolf-4be4d311","title":"Timber Wolf, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a timber wolf 1.77 m nose to tail with jointed legs, pricked ears, a shaped muzzle and a brush tail, built as a rigid jointed puppet. Animated idle and head-turn.","description":"A timber wolf 1.77 m nose to tail, 1.5 m nose to rump and 0.82 m at the shoulder: a lofted barrel with a chest, haunches and shoulder masses on four static legs, each with a shoulder, a stifle, a hock and a three toed foot. The head has a shaped skull with a brow ridge and cheeks, a tapered muzzle and jaw, a wet nose, two pricked ears and two glowing amber eyes, and a ruff of fur runs down the neck and back. The head is its own node at the base of the neck and the brush tail its own node at the rump, both parented to the body, so a head turn and an idle sway compose without any skinning. Nothing else deforms: the fur, the jaw and the paws are solid. Dimensions 0.49 × 1.09 × 1.81 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-creature-wolf-4be4d311","cdnUrl":"https://cdn.3dassets.dev/assets/32709/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-creature-wolf-4be4d311","thumbnailUrl":"https://cdn.3dassets.dev/assets/32709/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32709/v1/poster.webp","blurhash":"U17ArI^j00F^_2RkE1-U00D*^jo}01Ef^j,]","category":{"slug":"animals","title":"Animals"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":169004,"triangles":8536,"vertices":6878,"meshes":8,"materials":3,"textures":0,"animations":["idle","head-turn"],"boundingBox":{"min":[-0.24597035780006518,0.000005383095073474564,-0.9050867055072227],"max":[0.24597035780006518,1.088409106333855,0.9050867153988442]},"sizeMeters":[0.492,1.088,1.81],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":2,"publishedAt":"2026-09-08T12:54:36.987Z","updatedAt":"2026-09-08T16:15:52.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/32709/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 TimberWolfJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32709/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/32709/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32709/v1/model.glb\" alt=\"Timber Wolf, Jointed (FPS Survival Forest Outpost)\" 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/32709/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/32709/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32710","slug":"fps-survival-forest-outpost-creature-boar-2eae041a","title":"Forest Boar, Jointed (FPS Survival Forest Outpost)","summary":"Free 3D game asset for a forest survival outpost: a forest boar 1.71 m nose to tail with jointed legs, tusks, a snout, ears and a bristled back, built as a rigid jointed puppet. Animated idle and head-turn.","description":"A forest boar 1.71 m nose to tail, 1.42 m nose to rump and 0.76 m at the shoulder: a heavy lofted barrel with a deep chest and haunches on four short static legs, each with a shoulder, a stifle, a hock and a three toed trotter. The head has a shaped skull with a brow ridge and cheeks, a blunt snout with a disc and nostrils, a heavy jaw, two pale tusks, two flopped ears and small dark eyes, and a ridge of thirteen bristles runs from the neck to the rump. The head is its own node at the base of the neck and the tail its own node at the rump, both parented to the body. Nothing deforms: the hide, the jaw and the trotters are solid. Dimensions 0.60 × 1.11 × 1.68 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Damp conifer forest realism: wet concrete and corroded corrugated steel, weathered pine, dark bark and soil, deep needle green, olive canvas, gunmetal and machined steel, with five emissive colours (amber fire, white floodlight, green status, blue screen, red warning) that also form the loot rarity ladder. Rigid node-transform clips idle, head-turn turn named nodes on their own pivots. No skinning, no skeleton, no skin weighting, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-creature-boar-2eae041a","cdnUrl":"https://cdn.3dassets.dev/assets/32710/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-creature-boar-2eae041a","thumbnailUrl":"https://cdn.3dassets.dev/assets/32710/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32710/v1/poster.webp","blurhash":"U17ArG^*00I.-,IpIW^i0057^*wM02Na_2wO","category":{"slug":"animals","title":"Animals"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":169968,"triangles":8544,"vertices":6889,"meshes":9,"materials":3,"textures":0,"animations":["idle","head-turn"],"boundingBox":{"min":[-0.30095376241347915,-0.000013374148931655228,-0.8407106448766951],"max":[0.30095376241347915,1.1119818585446046,0.8407106525781388]},"sizeMeters":[0.602,1.112,1.681],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":3,"publishedAt":"2026-09-08T12:54:37.324Z","updatedAt":"2026-09-08T18:52:07.440Z","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/32710/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 ForestBoarJointedFPSSurvivalForestOutpost(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/32710/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/32710/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32710/v1/model.glb\" alt=\"Forest Boar, Jointed (FPS Survival Forest Outpost)\" 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/32710/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/32710/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"32712","slug":"fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","title":"Fortified forest outpost (FPS Survival Forest Outpost)","summary":"A free survival game scene: a fortified scavenger outpost in dense conifer forest around a half derelict research station. A ring of timber palisade and chain link closes a 28 by 20 metre compound, with a two leaf palisade gate on the south track under a lit red lamp and...","description":"A free survival game scene: a fortified scavenger outpost in dense conifer forest around a half derelict research station. A ring of timber palisade and chain link closes a 28 by 20 metre compound, with a two leaf palisade gate on the south track under a lit red lamp and razor wire, punji stakes, a covered spike pit, a bear trap and a tripwire flare on the approach outside it. The station in the middle is built from the modular kit: two bays by two on the 4 m grid, two storeys of corrugated, concrete, window, boarded, door and roller shutter bays with a column in every corner, a deck and a stair flight between the storeys, and a flat roof carrying a solar array, a tracking dish and a legendary loot cache. In front of it the crafting yard is in use: the workbench with a carbine on it, the forge with its glowing firebox, the generator, the water purifier, the fuel drum rack, the drying rack and a steel locker, with the cooking fire and a campfire burning and a brazier going in a cut down drum. The lookout tower, the radio mast and the wind turbine give height at the back and a floodlight mast lights the yard. A pickup and a quad are parked inside. Loot is where a player would find it: four rarity caches, crates, an ammunition box, a lockbox, a medical kit, a pack, a plate carrier, a fuel can, scrap and ore. Eight figures are in play: the scavenger at the bench, the heavy on the gate, the scout on the tower with a marksman rifle beside her, the medic at the campfire, the trader by the container, a raider walking up the track, an infected in the trees and a wolf out in the forest. Static layout: the models keep their own clips, the scene adds none.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/32712/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-fortified-fo-e26da282-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/32712/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32712/v1/poster.webp","blurhash":"U268jHyC00%|S_tks;Me00IB_2MLq{MKN?%|","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8216824,"triangles":382592,"vertices":356926,"meshes":470,"materials":16,"textures":3,"animations":[],"boundingBox":{"min":[-23.29836976242612,-1.0499496355322198,-17.23649920341523],"max":[24.24718951806467,14.140439987182617,20.328361734036932]},"sizeMeters":[47.546,15.19,37.565],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":4,"publishedAt":"2026-09-08T12:54:40.826Z","updatedAt":"2026-09-08T18:41:10.438Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32712/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FortifiedForestOutpostFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32712/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32712/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32712/v1/model.glb\" alt=\"Fortified forest outpost (FPS Survival Forest Outpost)\" 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/32712/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/32712/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32711","slug":"fps-survival-forest-outpost-extraction-pad-clearing-d8d8ed40","title":"Extraction pad clearing (FPS Survival Forest Outpost)","summary":"A free survival game scene: the extraction pad in a forest clearing out from the outpost. A landed supply drop lies in the middle of the pad with its canopy spilled, lit by a floodlight mast and a campfire, screened from the track by a short chain link run with a gate in it...","description":"A free survival game scene: the extraction pad in a forest clearing out from the outpost. A landed supply drop lies in the middle of the pad with its canopy spilled, lit by a floodlight mast and a campfire, screened from the track by a short chain link run with a gate in it and covered by a watch platform, a radio mast and a sandbag position. A generator and a fuel drum rack power the pad, a lean-to and an open container shelter the gear, and the ground carries loot caches, a crate, an ammunition box, a medical kit, a pack, a radio, a torch, a canteen and bandages. A quad is parked at the wire and a pickup waits out on the track, with razor wire, a bear trap and a tripwire flare on the approach. Four figures work the pad and a bloated infected watches from the treeline. Static layout: the models keep their own clips, the scene adds none.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-extraction-pad-clearing-d8d8ed40","cdnUrl":"https://cdn.3dassets.dev/assets/32711/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-extraction-pad-clearing-d8d8ed40","thumbnailUrl":"https://cdn.3dassets.dev/assets/32711/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32711/v1/poster.webp","blurhash":"U26ukI-B00*G55o{-:IC00I:_2Q:}waLEK%f","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":4272376,"triangles":208556,"vertices":184407,"meshes":301,"materials":16,"textures":3,"animations":[],"boundingBox":{"min":[-17.330510778622333,-0.0000987459510400912,-14.247189518064669],"max":[15.83408830376222,14.140439987182617,18.33085925942513]},"sizeMeters":[33.165,14.141,32.578],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:40.706Z","updatedAt":"2026-09-08T15:02:52.102Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32711/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ExtractionPadClearingFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32711/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32711/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32711/v1/model.glb\" alt=\"Extraction pad clearing (FPS Survival Forest Outpost)\" 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/32711/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/32711/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32713","slug":"fps-survival-forest-outpost-roadside-landing-and-cache-57d2a1cb","title":"Roadside landing and cache (FPS Survival Forest Outpost)","summary":"A free survival game scene: the logging landing on the forest road, where the crew keeps its workshop and its cache. A loaded logging truck stands on the track beside a towable fuel bowser, past a wrecked truck dragged across the old road and a leaning sign. Behind them a...","description":"A free survival game scene: the logging landing on the forest road, where the crew keeps its workshop and its cache. A loaded logging truck stands on the track beside a towable fuel bowser, past a wrecked truck dragged across the old road and a leaning sign. Behind them a four bay open workshop of corrugated wall bays under two pitched roof bays holds the gunsmith bench, the ammunition press, the shelving rack and the tool wall, with a solar array, a locker and a tracking dish along the back palisade. The cache is out in front: two rarity caches, a lockbox, a crate, a plate carrier, a pack, ration tins, scrap and ore, drums and a fuel can, with a scrap rifle, a break gun, a pistol and a machete laid out on and around the bench. A bear trap and a punji line cover the road, the trader is working the bench, a raider is coming up the track, a stalker is in the trees and a boar is rooting at the edge of the clearing. Static layout: the models keep their own clips, the scene adds none.","status":"published","url":"https://3dassets.dev/assets/fps-survival-forest-outpost-roadside-landing-and-cache-57d2a1cb","cdnUrl":"https://cdn.3dassets.dev/assets/32713/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fps-survival-forest-outpost-roadside-landing-and-cache-57d2a1cb","thumbnailUrl":"https://cdn.3dassets.dev/assets/32713/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32713/v1/poster.webp","blurhash":"U26uhD$+00x[4nt3-;WC00J6.7My~WN2EKs:","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"post-apocalyptic","title":"Post-apocalyptic"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":3774784,"triangles":182048,"vertices":163274,"meshes":293,"materials":16,"textures":3,"animations":[],"boundingBox":{"min":[-18.285080464059725,-0.00009829424853491364,-15.32685456646395],"max":[16.323339091489796,14.140439987182617,16.799715165284276]},"sizeMeters":[34.608,14.141,32.127],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"claude-opus-5","downloads":1,"publishedAt":"2026-09-08T12:54:40.663Z","updatedAt":"2026-09-08T15:02:53.123Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32713/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoadsideLandingAndCacheFPSSurvivalForestOutpost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32713/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32713/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32713/v1/model.glb\" alt=\"Roadside landing and cache (FPS Survival Forest Outpost)\" 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/32713/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/32713/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"fps-survival-forest-outpost","title":"FPS survival forest outpost","url":"https://3dassets.dev/demos/fps-survival-forest-outpost"}}}