{"data":{"id":7,"slug":"signal-house","title":"Signal House","summary":"A remote analogue relay station with weathered masonry, practical radio equipment and restrained amber safety lighting.","description":"A remote analogue relay station with weathered masonry, practical radio equipment and restrained amber safety lighting. Individually reusable GLB models share a coordinated material palette, metre scale and grounded origins. The assembled sample scene demonstrates placement and a navigable layout. Static meshes only; collision meshes, scripts and animation are not included. CC0.","url":"https://3dassets.dev/packs/signal-house","coverUrl":"https://cdn.3dassets.dev/assets/214/v1/poster.webp","assetCount":25,"aiGenerated":true,"aiGeneratedAssetCount":25,"aiModels":["GPT-6 via Codex"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":1574612,"totalTriangles":28884,"starterScene":{"id":"214","slug":"signal-house-starter-scene","title":"Signal House starter scene","summary":"A composed signal house scene with named objects. Use it as a starting layout for a web or mobile game.","description":"A composed example built from the Signal House kit. Each placed object has a named parent node for editing in three.js or Blender.\n\nUses metres, Y up and the pack's shared palette. This is a static environment layout. Individual models are also included in the pack. Collision meshes, navigation meshes, scripts and lighting are not included.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/214/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/214/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/214/v1/poster.webp","blurhash":"UCAJ_~xu4nf64oWBxta}00Rk%MWB~pt7WCWB","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"horror","title":"Horror"},{"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":416144,"triangles":7900,"vertices":23700,"meshes":44,"materials":8,"textures":1,"animations":[],"boundingBox":{"min":[-7.599999904632568,-0.1998028510387745,-8.599843211470443],"max":[7.539999961853027,6.139999626493088,5.841536708174544]},"sizeMeters":[15.14,6.34,14.441],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:30.206Z","updatedAt":"2026-09-06T03:41:44.946Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/214/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseStarterScene(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/214/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/214/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/214/v1/model.glb\" alt=\"Signal House starter scene\" 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/214/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/214/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"190","slug":"signal-house-remote-relay-building","title":"Signal House: Remote relay building","summary":"Six-metre concrete relay hut with a shallow pitched metal roof, inset windows, service door and external vent stacks.","description":"Six-metre concrete relay hut with a shallow pitched metal roof, inset windows, service door and external vent stacks.\n\nPart of Signal House. Dimensions: 6.4 × 3.95 × 4.42 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-remote-relay-building","cdnUrl":"https://cdn.3dassets.dev/assets/190/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-remote-relay-building","thumbnailUrl":"https://cdn.3dassets.dev/assets/190/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/190/v1/poster.webp","blurhash":"U6DJS2~p00x;NMxat3W.00DkD,D,I9f*%MRQ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"horror","title":"Horror"},{"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":43784,"triangles":560,"vertices":1680,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-3.200000047683716,0.00018926089846171834,-2.210200561662034],"max":[3.200000047683716,3.950134037732787,2.210200561662034]},"sizeMeters":[6.4,3.95,4.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:31.547Z","updatedAt":"2026-09-06T03:41:45.140Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/190/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRemoteRelayBuilding(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/190/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/190/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/190/v1/model.glb\" alt=\"Signal House: Remote relay building\" 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/190/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/190/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"191","slug":"signal-house-braced-relay-antenna-mast","title":"Signal House: Braced relay antenna mast","summary":"Six-metre lattice mast with cross braces, a ladder and twin directional antenna arrays.","description":"Six-metre lattice mast with cross braces, a ladder and twin directional antenna arrays.\n\nPart of Signal House. Dimensions: 2.6 × 6.14 × 1.2 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-braced-relay-antenna-mast","cdnUrl":"https://cdn.3dassets.dev/assets/191/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-braced-relay-antenna-mast","thumbnailUrl":"https://cdn.3dassets.dev/assets/191/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/191/v1/poster.webp","blurhash":"U06t?v~p0000}]s.1GI=}st90~IlHY%3p^4.","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"horror","title":"Horror"},{"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":104568,"triangles":1840,"vertices":5520,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.3000934669341448,-0.0000022888883016575212,-0.6000000238418579],"max":[1.3000934669341448,6.139999626493088,0.6000000238418579]},"sizeMeters":[2.6,6.14,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:33.987Z","updatedAt":"2026-09-06T03:41:45.132Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/191/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseBracedRelayAntennaMast(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/191/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/191/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/191/v1/model.glb\" alt=\"Signal House: Braced relay antenna mast\" 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/191/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/191/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"192","slug":"signal-house-institutional-doorway","title":"Signal House: Institutional doorway","summary":"Two-metre wall module with a clear 0.92 m doorway, painted lower wall band and metal door jambs.","description":"Two-metre wall module with a clear 0.92 m doorway, painted lower wall band and metal door jambs.\n\nPart of Signal House. Dimensions: 2 × 2.8 × 0.27 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Use 2 m placement increments for modular layout. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-institutional-doorway","cdnUrl":"https://cdn.3dassets.dev/assets/192/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-institutional-doorway","thumbnailUrl":"https://cdn.3dassets.dev/assets/192/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/192/v1/poster.webp","blurhash":"U3B3{Cpb00H?^i~p4:004UnPx[EK?Ir_adE0","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"horror","title":"Horror"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"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":53812,"triangles":804,"vertices":2412,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.0000427088826402,-0.00007629627368999081,-0.12002793605469692],"max":[1.0000427088826402,2.799999952316284,0.14702793861769664]},"sizeMeters":[2,2.8,0.267],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:36.669Z","updatedAt":"2026-09-06T03:41:45.124Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/192/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseInstitutionalDoorway(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/192/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/192/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/192/v1/model.glb\" alt=\"Signal House: Institutional doorway\" 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/192/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/192/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"193","slug":"signal-house-boarded-window-wall","title":"Signal House: Boarded window wall","summary":"Two-metre masonry wall with a recessed glazed window, three weathered boards and visible fixing heads.","description":"Two-metre masonry wall with a recessed glazed window, three weathered boards and visible fixing heads.\n\nPart of Signal House. Dimensions: 2 × 2.8 × 0.43 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Use 2 m placement increments for modular layout. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-boarded-window-wall","cdnUrl":"https://cdn.3dassets.dev/assets/193/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-boarded-window-wall","thumbnailUrl":"https://cdn.3dassets.dev/assets/193/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/193/v1/poster.webp","blurhash":"U3Bpe1-q00I.%M?aNG4o9vM{VXt6~q?a4n00","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"horror","title":"Horror"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"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":74728,"triangles":1104,"vertices":3312,"meshes":5,"materials":5,"textures":2,"animations":[],"boundingBox":{"min":[-1.0000427088826402,0,-0.11499679413030559],"max":[1.0000427088826402,2.799999952316284,0.31499678965995725]},"sizeMeters":[2,2.8,0.43],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:39.243Z","updatedAt":"2026-09-06T03:41:45.117Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/193/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseBoardedWindowWall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/193/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/193/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/193/v1/model.glb\" alt=\"Signal House: Boarded window wall\" 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/193/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/193/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"194","slug":"signal-house-relay-entrance-steps","title":"Signal House: Relay entrance steps","summary":"Three broad concrete steps with worn-colour nosings and a practical steel handrail.","description":"Three broad concrete steps with worn-colour nosings and a practical steel handrail.\n\nPart of Signal House. Dimensions: 1.8 × 1.46 × 1.02 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-relay-entrance-steps","cdnUrl":"https://cdn.3dassets.dev/assets/194/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-relay-entrance-steps","thumbnailUrl":"https://cdn.3dassets.dev/assets/194/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/194/v1/poster.webp","blurhash":"U7BM[B~q00W900t7~WjZ009GIVkB?b%MRlIV","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"horror","title":"Horror"},{"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":27076,"triangles":264,"vertices":792,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.00006152726610930692,-0.5100558353604754],"max":[0.8999999761581421,1.4615113887925986,0.5100558353604754]},"sizeMeters":[1.8,1.462,1.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:41.709Z","updatedAt":"2026-09-06T03:41:45.110Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/194/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRelayEntranceSteps(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/194/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/194/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/194/v1/model.glb\" alt=\"Signal House: Relay entrance steps\" 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/194/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/194/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"195","slug":"signal-house-relay-security-fence","title":"Signal House: Relay security fence","summary":"Two-metre steel fence panel with narrow vertical bars, two rails and bolted ground plates.","description":"Two-metre steel fence panel with narrow vertical bars, two rails and bolted ground plates.\n\nPart of Signal House. Dimensions: 2.08 × 2.1 × 0.2 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Use 2 m placement increments for modular layout. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-relay-security-fence","cdnUrl":"https://cdn.3dassets.dev/assets/195/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-relay-security-fence","thumbnailUrl":"https://cdn.3dassets.dev/assets/195/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/195/v1/poster.webp","blurhash":"U27BAk~q00IUxu?bof9F4o9Foc%MNG%Mj[D%","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"horror","title":"Horror"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"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":18848,"triangles":356,"vertices":1068,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.0400020890659811,0,-0.09997863250303068],"max":[1.0400020890659811,2.0999999046325684,0.09997863250303068]},"sizeMeters":[2.08,2.1,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:43.804Z","updatedAt":"2026-09-06T03:41:45.102Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/195/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRelaySecurityFence(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/195/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/195/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/195/v1/model.glb\" alt=\"Signal House: Relay security fence\" 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/195/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/195/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"196","slug":"signal-house-relay-service-estate-car","title":"Signal House: Relay service estate car","summary":"Older utility estate car with long rear cargo body, framed windows, roof rails and an amber service beacon.","description":"Older utility estate car with long rear cargo body, framed windows, roof rails and an amber service beacon.\n\nPart of Signal House. Dimensions: 1.96 × 1.77 × 4.36 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-relay-service-estate-car","cdnUrl":"https://cdn.3dassets.dev/assets/196/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-relay-service-estate-car","thumbnailUrl":"https://cdn.3dassets.dev/assets/196/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/196/v1/poster.webp","blurhash":"U4AdM]~q00IU_34n4n%g004T?u?b4m_N_MxZ","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"horror","title":"Horror"},{"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":42036,"triangles":780,"vertices":2340,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.9799531179217033,0.00010613445491014506,-2.1500000953674316],"max":[0.9799531179217033,1.7699961791512884,2.2100000381469727]},"sizeMeters":[1.96,1.77,4.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:46.530Z","updatedAt":"2026-09-06T03:41:45.095Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/196/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRelayServiceEstateCar(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/196/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/196/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/196/v1/model.glb\" alt=\"Signal House: Relay service estate car\" 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/196/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/196/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"197","slug":"signal-house-radio-equipment-trolley","title":"Signal House: Radio equipment trolley","summary":"Wheeled two-tier service trolley with raised tray edges, push handle and a strapped instrument case.","description":"Wheeled two-tier service trolley with raised tray edges, push handle and a strapped instrument case.\n\nPart of Signal House. Dimensions: 0.8 × 1.03 × 1.08 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-radio-equipment-trolley","cdnUrl":"https://cdn.3dassets.dev/assets/197/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-radio-equipment-trolley","thumbnailUrl":"https://cdn.3dassets.dev/assets/197/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/197/v1/poster.webp","blurhash":"U8BWlC?b00j?_MWBD%of00IUogIUMyV[WCt8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":35472,"triangles":688,"vertices":2064,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4000266855293537,-0.0000064386895670676125,-0.5400000214576721],"max":[0.4000266855293537,1.0250033094613147,0.5400000214576721]},"sizeMeters":[0.8,1.025,1.08],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:49.176Z","updatedAt":"2026-09-06T03:41:45.087Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/197/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRadioEquipmentTrolley(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/197/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/197/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/197/v1/model.glb\" alt=\"Signal House: Radio equipment trolley\" 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/197/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/197/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"198","slug":"signal-house-reel-to-reel-recorder","title":"Signal House: Reel-to-reel recorder","summary":"Portable analogue tape machine with twin six-spoke reels, transport buttons, speaker grille and carrying handle.","description":"Portable analogue tape machine with twin six-spoke reels, transport buttons, speaker grille and carrying handle.\n\nPart of Signal House. Dimensions: 0.51 × 0.54 × 0.26 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-reel-to-reel-recorder","cdnUrl":"https://cdn.3dassets.dev/assets/198/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-reel-to-reel-recorder","thumbnailUrl":"https://cdn.3dassets.dev/assets/198/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/198/v1/poster.webp","blurhash":"U3BDvPTo00OSRQ?vxu0000r_^+a200yB?[E0","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":64088,"triangles":1284,"vertices":3852,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2549999952316284,-0.000010372120896717796,-0.0999862666707358],"max":[0.2549999952316284,0.5379999876022339,0.15899532638058406]},"sizeMeters":[0.51,0.538,0.259],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:51.477Z","updatedAt":"2026-09-06T03:41:45.078Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/198/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseReelToReelRecorder(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/198/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/198/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/198/v1/model.glb\" alt=\"Signal House: Reel-to-reel recorder\" 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/198/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/198/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"199","slug":"signal-house-analogue-relay-switchboard","title":"Signal House: Analogue relay switchboard","summary":"Full-height rack with meter faces, patch sockets, breaker levers and a ventilated lower service panel.","description":"Full-height rack with meter faces, patch sockets, breaker levers and a ventilated lower service panel.\n\nPart of Signal House. Dimensions: 0.82 × 2 × 0.67 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-analogue-relay-switchboard","cdnUrl":"https://cdn.3dassets.dev/assets/199/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-analogue-relay-switchboard","thumbnailUrl":"https://cdn.3dassets.dev/assets/199/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/199/v1/poster.webp","blurhash":"U79Qv=V@00tR~qoe8{WBj[ofRjV@%gWCIUt6","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":145428,"triangles":2956,"vertices":8868,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.41004348810823904,0,-0.2750430305833713],"max":[0.41004348810823904,2,0.39252434820496107]},"sizeMeters":[0.82,2,0.668],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:53.915Z","updatedAt":"2026-09-06T03:41:45.068Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/199/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseAnalogueRelaySwitchboard(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/199/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/199/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/199/v1/model.glb\" alt=\"Signal House: Analogue relay switchboard\" 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/199/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/199/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"200","slug":"signal-house-relay-operator-desk","title":"Signal House: Relay operator desk","summary":"One-person wooden equipment desk with steel legs, side drawers, an inlaid writing pad and cable grommet.","description":"One-person wooden equipment desk with steel legs, side drawers, an inlaid writing pad and cable grommet.\n\nPart of Signal House. Dimensions: 1.5 × 0.76 × 0.8 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-relay-operator-desk","cdnUrl":"https://cdn.3dassets.dev/assets/200/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-relay-operator-desk","thumbnailUrl":"https://cdn.3dassets.dev/assets/200/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/200/v1/poster.webp","blurhash":"U49GgfIB5+_2{K?HO@Mx00-UD%9aPoH?VsFd","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":21656,"triangles":284,"vertices":852,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.75,-0.00002469769307672509,-0.40005188146610926],"max":[0.75,0.7630247091371685,0.40005188146610926]},"sizeMeters":[1.5,0.763,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:56.443Z","updatedAt":"2026-09-06T03:41:45.060Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/200/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRelayOperatorDesk(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/200/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/200/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/200/v1/model.glb\" alt=\"Signal House: Relay operator desk\" 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/200/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/200/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"201","slug":"signal-house-operator-swivel-chair","title":"Signal House: Operator swivel chair","summary":"Five-spoke office chair with a padded seat, separate backrest, adjustment stem and short arm supports.","description":"Five-spoke office chair with a padded seat, separate backrest, adjustment stem and short arm supports.\n\nPart of Signal House. Dimensions: 0.67 × 1.05 × 0.7 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-operator-swivel-chair","cdnUrl":"https://cdn.3dassets.dev/assets/201/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-operator-swivel-chair","thumbnailUrl":"https://cdn.3dassets.dev/assets/201/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/201/v1/poster.webp","blurhash":"U77BJ.Rj00xu_MRj8{xubtWBVut7NFofs;RQ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":57644,"triangles":1148,"vertices":3444,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.30782911110325234,-0.0000070374932321093375,-0.35018205642700195],"max":[0.3649960749189414,1.0500062350263877,0.35035058856010437]},"sizeMeters":[0.673,1.05,0.701],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:17:59.620Z","updatedAt":"2026-09-06T03:41:45.052Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/201/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseOperatorSwivelChair(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/201/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/201/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/201/v1/model.glb\" alt=\"Signal House: Operator swivel chair\" 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/201/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/201/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"202","slug":"signal-house-caretaker-coat-locker","title":"Signal House: Caretaker coat locker","summary":"Narrow vented steel locker with upper coat compartment, lower boot vent and inset nameplate.","description":"Narrow vented steel locker with upper coat compartment, lower boot vent and inset nameplate.\n\nPart of Signal House. Dimensions: 0.5 × 1.85 × 0.58 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-caretaker-coat-locker","cdnUrl":"https://cdn.3dassets.dev/assets/202/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-caretaker-coat-locker","thumbnailUrl":"https://cdn.3dassets.dev/assets/202/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/202/v1/poster.webp","blurhash":"U68qZ:eo00kp_NoM8_WBR*ofaxRj.7afD%oy","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":43092,"triangles":840,"vertices":2520,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.25000519102530405,0,-0.2500554699788733],"max":[0.25000519102530405,1.850000023841858,0.33005548309189514]},"sizeMeters":[0.5,1.85,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:02.105Z","updatedAt":"2026-09-06T03:41:45.043Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/202/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseCaretakerCoatLocker(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/202/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/202/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/202/v1/model.glb\" alt=\"Signal House: Caretaker coat locker\" 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/202/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/202/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"203","slug":"signal-house-three-drawer-file-cabinet","title":"Signal House: Three-drawer file cabinet","summary":"Steel filing cabinet with recessed drawer fronts, pull handles and paper label holders.","description":"Steel filing cabinet with recessed drawer fronts, pull handles and paper label holders.\n\nPart of Signal House. Dimensions: 0.58 × 1.13 × 0.73 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-three-drawer-file-cabinet","cdnUrl":"https://cdn.3dassets.dev/assets/203/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-three-drawer-file-cabinet","thumbnailUrl":"https://cdn.3dassets.dev/assets/203/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/203/v1/poster.webp","blurhash":"U9A,:+xu00R%~qay9FoLIBR*bXn%%fafMxof","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":8832,"triangles":144,"vertices":432,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2900201416172154,0,-0.33500962215460817],"max":[0.2900201416172154,1.1299999952316284,0.3950264907716908]},"sizeMeters":[0.58,1.13,0.73],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:04.410Z","updatedAt":"2026-09-06T03:41:45.034Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/203/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseThreeDrawerFileCabinet(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/203/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/203/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/203/v1/model.glb\" alt=\"Signal House: Three-drawer file cabinet\" 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/203/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/203/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"204","slug":"signal-house-analogue-desk-telephone","title":"Signal House: Analogue desk telephone","summary":"Wired desk phone with raised handset, rotary-style dial, cradle switches and a short coiled lead.","description":"Wired desk phone with raised handset, rotary-style dial, cradle switches and a short coiled lead.\n\nPart of Signal House. Dimensions: 0.35 × 0.23 × 0.23 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-analogue-desk-telephone","cdnUrl":"https://cdn.3dassets.dev/assets/204/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-analogue-desk-telephone","thumbnailUrl":"https://cdn.3dassets.dev/assets/204/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/204/v1/poster.webp","blurhash":"U16t,h~q004U%znhDkS#009F.9-pxst7sqIo","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":79760,"triangles":1624,"vertices":4872,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.1599999964237213,-0.000008753416719561868,-0.11500875550288213],"max":[0.18799999356269836,0.2300087575890447,0.11999999731779099]},"sizeMeters":[0.348,0.23,0.235],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:07.135Z","updatedAt":"2026-09-06T03:41:45.026Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/204/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseAnalogueDeskTelephone(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/204/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/204/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/204/v1/model.glb\" alt=\"Signal House: Analogue desk telephone\" 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/204/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/204/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"205","slug":"signal-house-caged-storm-lantern","title":"Signal House: Caged storm lantern","summary":"Portable amber work lantern with a glass-style core, steel cage, broad foot and raised carrying bail.","description":"Portable amber work lantern with a glass-style core, steel cage, broad foot and raised carrying bail.\n\nPart of Signal House. Dimensions: 0.28 × 0.49 × 0.28 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-caged-storm-lantern","cdnUrl":"https://cdn.3dassets.dev/assets/205/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-caged-storm-lantern","thumbnailUrl":"https://cdn.3dassets.dev/assets/205/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/205/v1/poster.webp","blurhash":"U99%#D%M009GtmofVrV@02Rj~Uxt-PoME7NG","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":22956,"triangles":480,"vertices":1440,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.14000000059604645,0.00000160195566214702,-0.14000000059604645],"max":[0.14000000059604645,0.492000013589859,0.1400000024586916]},"sizeMeters":[0.28,0.492,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:09.285Z","updatedAt":"2026-09-06T03:41:45.019Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/205/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseCagedStormLantern(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/205/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/205/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/205/v1/model.glb\" alt=\"Signal House: Caged storm lantern\" 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/205/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/205/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"206","slug":"signal-house-industrial-fire-extinguisher","title":"Signal House: Industrial fire extinguisher","summary":"Metal extinguisher with pressure gauge, squeeze handle, side hose and a restrained cream service label.","description":"Metal extinguisher with pressure gauge, squeeze handle, side hose and a restrained cream service label.\n\nPart of Signal House. Dimensions: 0.26 × 0.53 × 0.22 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-industrial-fire-extinguisher","cdnUrl":"https://cdn.3dassets.dev/assets/206/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-industrial-fire-extinguisher","thumbnailUrl":"https://cdn.3dassets.dev/assets/206/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/206/v1/poster.webp","blurhash":"U6A9{3~o00009_NI-S-S01Io~U?HWUsna$Na","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":27772,"triangles":512,"vertices":1536,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1000152607450815,0,-0.1000152607450815],"max":[0.15600149205149086,0.5299999713897705,0.11999999731779099]},"sizeMeters":[0.256,0.53,0.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:11.076Z","updatedAt":"2026-09-06T03:41:45.011Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/206/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseIndustrialFireExtinguisher(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/206/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/206/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/206/v1/model.glb\" alt=\"Signal House: Industrial fire extinguisher\" 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/206/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/206/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"207","slug":"signal-house-extension-cable-reel","title":"Signal House: Extension cable reel","summary":"Portable electrical cable reel in a tubular stand with wound cable drum, carry grip and four outlet faces.","description":"Portable electrical cable reel in a tubular stand with wound cable drum, carry grip and four outlet faces.\n\nPart of Signal House. Dimensions: 0.36 × 0.41 × 0.31 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-extension-cable-reel","cdnUrl":"https://cdn.3dassets.dev/assets/207/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-extension-cable-reel","thumbnailUrl":"https://cdn.3dassets.dev/assets/207/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/207/v1/poster.webp","blurhash":"U7AwSI~p00IUD%IUxuxu00Djxtx]t7xuaKRj","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"horror","title":"Horror"},{"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":1120,"vertices":3360,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.17800738269499392,0,-0.15684203098113658],"max":[0.17800738269499392,0.41137006878852844,0.15779294648684114]},"sizeMeters":[0.356,0.411,0.315],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:12.979Z","updatedAt":"2026-09-06T03:41:45.003Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/207/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseExtensionCableReel(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/207/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/207/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/207/v1/model.glb\" alt=\"Signal House: Extension cable reel\" 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/207/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/207/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"208","slug":"signal-house-wall-side-breaker-box","title":"Signal House: Wall-side breaker box","summary":"Freestanding placement mesh for a six-switch electrical box with external mounting feet and visible conduit ends.","description":"Freestanding placement mesh for a six-switch electrical box with external mounting feet and visible conduit ends.\n\nPart of Signal House. Dimensions: 0.45 × 0.74 × 0.25 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-wall-side-breaker-box","cdnUrl":"https://cdn.3dassets.dev/assets/208/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-wall-side-breaker-box","thumbnailUrl":"https://cdn.3dassets.dev/assets/208/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/208/v1/poster.webp","blurhash":"U48}3,n+00x]_Moy8{RQ00kV-;R69GWB-;t7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":50400,"triangles":992,"vertices":2976,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.22501587013104038,0,-0.08499053945322586],"max":[0.22501587013104038,0.7400000095367432,0.16498558666287289]},"sizeMeters":[0.45,0.74,0.25],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:14.888Z","updatedAt":"2026-09-06T03:41:44.994Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/208/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseWallSideBreakerBox(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/208/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/208/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/208/v1/model.glb\" alt=\"Signal House: Wall-side breaker box\" 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/208/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/208/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"209","slug":"signal-house-heavy-utility-padlock","title":"Signal House: Heavy utility padlock","summary":"Steel padlock with a U-shaped shackle, recessed keyway and reinforced painted body.","description":"Steel padlock with a U-shaped shackle, recessed keyway and reinforced painted body.\n\nPart of Signal House. Dimensions: 0.13 × 0.18 × 0.08 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-heavy-utility-padlock","cdnUrl":"https://cdn.3dassets.dev/assets/209/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-heavy-utility-padlock","thumbnailUrl":"https://cdn.3dassets.dev/assets/209/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/209/v1/poster.webp","blurhash":"U6C6DOF|00M_6U-Ar:9u02rs~9$%}EKNRli{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"horror","title":"Horror"},{"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":51636,"triangles":1024,"vertices":3072,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.06700093122066444,-0.0000021344329704173215,-0.027497786793439546],"max":[0.06700093122066444,0.1770000010728836,0.053996750626950765]},"sizeMeters":[0.134,0.177,0.081],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:17.131Z","updatedAt":"2026-09-06T03:41:44.985Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/209/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseHeavyUtilityPadlock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/209/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/209/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/209/v1/model.glb\" alt=\"Signal House: Heavy utility padlock\" 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/209/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/209/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"210","slug":"signal-house-relay-room-key-pickup","title":"Signal House: Relay room key pickup","summary":"Flat utility key and identification tag on a metal ring for investigation-game inventory pickups.","description":"Flat utility key and identification tag on a metal ring for investigation-game inventory pickups.\n\nPart of Signal House. Dimensions: 0.17 × 0.01 × 0.26 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-relay-room-key-pickup","cdnUrl":"https://cdn.3dassets.dev/assets/210/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-relay-room-key-pickup","thumbnailUrl":"https://cdn.3dassets.dev/assets/210/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/210/v1/poster.webp","blurhash":"U88;V.IU00-:WCaxj?a#00%L~pIVxtofR+oe","category":{"slug":"icons","title":"3D Icons & UI"},"tags":[{"slug":"horror","title":"Horror"},{"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":20388,"triangles":380,"vertices":1140,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.05499221733884244,-0.000006332698125756375,-0.054999999701976776],"max":[0.11900329576053116,0.01500633236284963,0.20499999821186066]},"sizeMeters":[0.174,0.015,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:19.673Z","updatedAt":"2026-09-06T03:41:44.976Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/210/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseRelayRoomKeyPickup(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/210/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/210/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/210/v1/model.glb\" alt=\"Signal House: Relay room key pickup\" 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/210/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/210/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"211","slug":"signal-house-static-alarm-lamp","title":"Signal House: Static alarm lamp","summary":"Amber caged warning beacon on a square mounting box. Emissive surface is static and does not cast a light by itself.","description":"Amber caged warning beacon on a square mounting box. Emissive surface is static and does not cast a light by itself.\n\nPart of Signal House. Dimensions: 0.26 × 0.31 × 0.28 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-static-alarm-lamp","cdnUrl":"https://cdn.3dassets.dev/assets/211/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-static-alarm-lamp","thumbnailUrl":"https://cdn.3dassets.dev/assets/211/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/211/v1/poster.webp","blurhash":"UCF5{W~U0003$wad9aoz019b-j^$TLN0%Lxt","category":{"slug":"effects-primitives","title":"Effects & Primitives"},"tags":[{"slug":"horror","title":"Horror"},{"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":36396,"triangles":692,"vertices":2076,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.12999999523162842,0.000005649362775472788,-0.12999999523162842],"max":[0.12999999523162842,0.3100022938639443,0.15299999713897705]},"sizeMeters":[0.26,0.31,0.283],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:22.035Z","updatedAt":"2026-09-06T03:41:44.968Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/211/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseStaticAlarmLamp(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/211/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/211/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/211/v1/model.glb\" alt=\"Signal House: Static alarm lamp\" 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/211/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/211/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"212","slug":"signal-house-concrete-drainage-channel","title":"Signal House: Concrete drainage channel","summary":"Two-metre grated rain channel with a concrete surround, recessed dark bed and closely spaced steel bars.","description":"Two-metre grated rain channel with a concrete surround, recessed dark bed and closely spaced steel bars.\n\nPart of Signal House. Dimensions: 2 × 0.16 × 0.44 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Use 2 m placement increments for modular layout. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-concrete-drainage-channel","cdnUrl":"https://cdn.3dassets.dev/assets/212/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-concrete-drainage-channel","thumbnailUrl":"https://cdn.3dassets.dev/assets/212/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/212/v1/poster.webp","blurhash":"U49aBO-o4ns;xu~pt7IU00NG?cRjM{00M{%M","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"horror","title":"Horror"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"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":31232,"triangles":348,"vertices":1044,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1,0.00006164604803700346,-0.21997741630298775],"max":[1,0.15995155276027653,0.21997741630298775]},"sizeMeters":[2,0.16,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:25.051Z","updatedAt":"2026-09-06T03:41:44.961Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/212/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseConcreteDrainageChannel(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/212/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/212/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/212/v1/model.glb\" alt=\"Signal House: Concrete drainage channel\" 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/212/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/212/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"213","slug":"signal-house-static-relay-caretaker","title":"Signal House: Static relay caretaker","summary":"Standing maintenance figure with protective eyewear, work clothing and a belt-mounted radio. No rig or animation.","description":"Standing maintenance figure with protective eyewear, work clothing and a belt-mounted radio. No rig or animation.\n\nPart of Signal House. Dimensions: 0.88 × 1.78 × 0.38 m (width × height × depth). One unit equals one metre. Grounded origin, +Y up and +Z forward. Static model with named material groups. No collision meshes or animation supplied. CC0 permits commercial use without attribution.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-static-relay-caretaker","cdnUrl":"https://cdn.3dassets.dev/assets/213/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-static-relay-caretaker","thumbnailUrl":"https://cdn.3dassets.dev/assets/213/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/213/v1/poster.webp","blurhash":"U58E9*o|00VZ?Fbb9vnO00Rk?^xtDiWB%Moy","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"horror","title":"Horror"},{"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":40616,"triangles":760,"vertices":2280,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.4399999976158142,0,-0.1719760681192232],"max":[0.4399999976158142,1.7799999713897705,0.20501594681527088]},"sizeMeters":[0.88,1.78,0.377],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:27.600Z","updatedAt":"2026-09-06T03:41:44.953Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/213/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseStaticRelayCaretaker(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/213/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/213/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/213/v1/model.glb\" alt=\"Signal House: Static relay caretaker\" 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/213/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/213/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"214","slug":"signal-house-starter-scene","title":"Signal House starter scene","summary":"A composed signal house scene with named objects. Use it as a starting layout for a web or mobile game.","description":"A composed example built from the Signal House kit. Each placed object has a named parent node for editing in three.js or Blender.\n\nUses metres, Y up and the pack's shared palette. This is a static environment layout. Individual models are also included in the pack. Collision meshes, navigation meshes, scripts and lighting are not included.\n\nPart of [Signal House](/packs/signal-house).","status":"published","url":"https://3dassets.dev/assets/signal-house-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/214/v1/model.glb","downloadUrl":"https://3dassets.dev/download/signal-house-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/214/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/214/v1/poster.webp","blurhash":"UCAJ_~xu4nf64oWBxta}00Rk%MWB~pt7WCWB","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"horror","title":"Horror"},{"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":416144,"triangles":7900,"vertices":23700,"meshes":44,"materials":8,"textures":1,"animations":[],"boundingBox":{"min":[-7.599999904632568,-0.1998028510387745,-8.599843211470443],"max":[7.539999961853027,6.139999626493088,5.841536708174544]},"sizeMeters":[15.14,6.34,14.441],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:18:30.206Z","updatedAt":"2026-09-06T03:41:44.946Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/214/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalHouseStarterScene(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/214/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/214/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/214/v1/model.glb\" alt=\"Signal House starter scene\" 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/214/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/214/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}