{"data":{"id":238,"slug":"abandoned-telephone-exchange","title":"Abandoned Telephone Exchange","summary":"Fifty premium manual-exchange and early electromechanical telephone equipment designs with routed cablework and a furnished roofed building.","description":"Fictional decommissioned exchange in dark oak, aged ivory, black steel and oxidized copper. Recessed jack fields, continuous patch cords, separate handset bodies, rotary selectors with contact banks, relays with coil/armature detail, and supported overhead cable troughs form a furnished operator room connected to an equipment room. Original abstract indices and plans; not a historic installation replica. All electrical and mechanical devices are static, with no call routing, simulation, electrical instruction, collision or navigation.","url":"https://3dassets.dev/packs/abandoned-telephone-exchange","coverUrl":"https://cdn.3dassets.dev/assets/32025/v1/poster.webp","assetCount":51,"aiGenerated":true,"aiGeneratedAssetCount":51,"aiModels":["GPT-6"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":22297248,"totalTriangles":1219280,"starterScene":{"id":"32025","slug":"abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","title":"Silent Operator Exchange (Abandoned Telephone Exchange)","summary":"A full roof shelters three manual console bays and a dressed supervisor desk beside a connected selector room, stocked repair desk, battery storage and routed overhead cablework. Floor-supported drops terminate each end, and a fallen panel remains clear of the front access path.","description":"A full roof shelters three manual console bays and a dressed supervisor desk beside a connected selector room, stocked repair desk, battery storage and routed overhead cablework. Floor-supported drops terminate each end, and a fallen panel remains clear of the front access path.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/32025/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/32025/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32025/v1/poster.webp","blurhash":"UA9%-Xt7D*of9Gf6%2ay00WBRQV[~pkCIojZ","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":10967828,"triangles":613828,"vertices":479398,"meshes":195,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-6.5,-0.00025034518097559466,-5.000320444349498],"max":[6.5,3.8566597194575585,5.000320444349498]},"sizeMeters":[13,3.857,10.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":2,"publishedAt":"2026-09-08T10:51:57.587Z","updatedAt":"2026-09-08T16:10:26.684Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32025/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SilentOperatorExchangeAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32025/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32025/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32025/v1/model.glb\" alt=\"Silent Operator Exchange (Abandoned Telephone Exchange)\" 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/32025/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/32025/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"31972","slug":"abandoned-telephone-exchange-roofed-exchange-building-21e40607","title":"Roofed Exchange Building (Abandoned Telephone Exchange)","summary":"Complete eleven-metre exchange shell with thick rear and side walls, full steel-edged roof, timber ceiling beams and framed open-front operator and equipment service bays. Separate glazed partition and door divide its furnished rooms.","description":"Complete eleven-metre exchange shell with thick rear and side walls, full steel-edged roof, timber ceiling beams and framed open-front operator and equipment service bays. Separate glazed partition and door divide its furnished rooms. Dimensions 11.30 × 3.67 × 6.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-roofed-exchange-building-21e40607","cdnUrl":"https://cdn.3dassets.dev/assets/31972/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-roofed-exchange-building-21e40607","thumbnailUrl":"https://cdn.3dassets.dev/assets/31972/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31972/v1/poster.webp","blurhash":"U99@L,IVW.x]9ax[s:RQ00ozD*V@~VIVNHof","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":124204,"triangles":6900,"vertices":4896,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-5.650000095367432,0.00003143764103896718,-3.2499558435286913],"max":[5.650000095367432,3.6746597194575585,3.250262411497778]},"sizeMeters":[11.3,3.675,6.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:29.653Z","updatedAt":"2026-09-08T10:51:29.749Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31972/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofedExchangeBuildingAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31972/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31972/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31972/v1/model.glb\" alt=\"Roofed Exchange Building (Abandoned Telephone Exchange)\" 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/31972/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/31972/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31973","slug":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","title":"Glazed Operator Partition (Abandoned Telephone Exchange)","summary":"Two-metre oak operator partition with thick kick panel, central mullion, two framed glass-like panes and a transom rail; fully modeled front and rear trim.","description":"Two-metre oak operator partition with thick kick panel, central mullion, two framed glass-like panes and a transom rail; fully modeled front and rear trim. Dimensions 2.00 × 3.19 × 0.14 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-glazed-operator-partition-cff3e702","cdnUrl":"https://cdn.3dassets.dev/assets/31973/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-glazed-operator-partition-cff3e702","thumbnailUrl":"https://cdn.3dassets.dev/assets/31973/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31973/v1/poster.webp","blurhash":"U37U0M%200D*-oxtM{D+D4WB*Js:wIslS#JW","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":84072,"triangles":4520,"vertices":3322,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9999305494981198,0,-0.07006408925403185],"max":[0.9999305494981198,3.194999933242798,0.06996344895848375]},"sizeMeters":[2,3.195,0.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:28.866Z","updatedAt":"2026-09-08T10:51:28.959Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31973/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GlazedOperatorPartitionAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31973/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31973/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31973/v1/model.glb\" alt=\"Glazed Operator Partition (Abandoned Telephone Exchange)\" 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/31973/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/31973/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31974","slug":"abandoned-telephone-exchange-equipment-room-door-0078100b","title":"Equipment Room Door (Abandoned Telephone Exchange)","summary":"Tall oak doorway and transom with a modeled glazed door held open on its hinge side, real leaf thickness, jambs and projecting handle. Opening connects the two exchange rooms.","description":"Tall oak doorway and transom with a modeled glazed door held open on its hinge side, real leaf thickness, jambs and projecting handle. Opening connects the two exchange rooms. Dimensions 2.00 × 3.18 × 1.63 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-equipment-room-door-0078100b","cdnUrl":"https://cdn.3dassets.dev/assets/31974/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-equipment-room-door-0078100b","thumbnailUrl":"https://cdn.3dassets.dev/assets/31974/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31974/v1/poster.webp","blurhash":"U26jzWEM01S~~BE257~A5+RQX9^jxsjFR-X9","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54900,"triangles":3012,"vertices":2119,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.0000885246721691,0,-0.8125901229577945],"max":[1.0000885246721691,3.180000066757202,0.8125901229577945]},"sizeMeters":[2,3.18,1.625],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:29.813Z","updatedAt":"2026-09-08T10:51:29.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31974/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EquipmentRoomDoorAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31974/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31974/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31974/v1/model.glb\" alt=\"Equipment Room Door (Abandoned Telephone Exchange)\" 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/31974/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/31974/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31975","slug":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","title":"Manual Switchboard Bay (Abandoned Telephone Exchange)","summary":"Manual switchboard console with thirty-five genuinely recessed jack openings, ivory index strips, seven lever controls, three connected hanging cords, thick oak writing ledge and rear service panel.","description":"Manual switchboard console with thirty-five genuinely recessed jack openings, ivory index strips, seven lever controls, three connected hanging cords, thick oak writing ledge and rear service panel. Dimensions 0.94 × 1.66 × 1.03 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","cdnUrl":"https://cdn.3dassets.dev/assets/31975/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/31975/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31975/v1/poster.webp","blurhash":"U99jT3Nb00s,~qR+4ns,RjoMogRj9FoJ.8R*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1160612,"triangles":51756,"vertices":52786,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.46997954314849444,0,-0.5166552464814553],"max":[0.46997954314849444,1.659999966621399,0.5165752395794238]},"sizeMeters":[0.94,1.66,1.033],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:31.652Z","updatedAt":"2026-09-08T10:51:31.763Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31975/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ManualSwitchboardBayAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31975/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31975/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31975/v1/model.glb\" alt=\"Manual Switchboard Bay (Abandoned Telephone Exchange)\" 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/31975/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/31975/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31976","slug":"abandoned-telephone-exchange-switchboard-end-panel-62bcf2ae","title":"Switchboard End Panel (Abandoned Telephone Exchange)","summary":"Thick finished oak switchboard end cheek with raised copper border rails and a broad ground edge, suitable for terminating adjacent switchboard bays.","description":"Thick finished oak switchboard end cheek with raised copper border rails and a broad ground edge, suitable for terminating adjacent switchboard bays. Dimensions 0.15 × 1.70 × 0.76 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-switchboard-end-panel-62bcf2ae","cdnUrl":"https://cdn.3dassets.dev/assets/31976/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-switchboard-end-panel-62bcf2ae","thumbnailUrl":"https://cdn.3dassets.dev/assets/31976/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31976/v1/poster.webp","blurhash":"U15qt#-6005Y^+WU4:n-oIbIM}jF?abE9anm","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":28112,"triangles":1500,"vertices":1066,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.07447497794989506,0,-0.38000580917567606],"max":[0.07450799552165717,1.7000000476837158,0.38000580917567606]},"sizeMeters":[0.149,1.7,0.76],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:32.270Z","updatedAt":"2026-09-08T10:51:32.376Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31976/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SwitchboardEndPanelAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31976/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31976/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31976/v1/model.glb\" alt=\"Switchboard End Panel (Abandoned Telephone Exchange)\" 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/31976/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/31976/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31977","slug":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","title":"Operator Chair (Abandoned Telephone Exchange)","summary":"Adjustable-looking operator chair with wide weighted foot, height spindle, padded seat, curved edged backrest and a circular foot ring; static.","description":"Adjustable-looking operator chair with wide weighted foot, height spindle, padded seat, curved edged backrest and a circular foot ring; static. Dimensions 0.54 × 0.94 × 0.54 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-operator-chair-bc2cb2f2","cdnUrl":"https://cdn.3dassets.dev/assets/31977/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-operator-chair-bc2cb2f2","thumbnailUrl":"https://cdn.3dassets.dev/assets/31977/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31977/v1/poster.webp","blurhash":"U35hoVXm00q^^%Na9b$jD4M{*J%fm,e-T0XA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":39784,"triangles":1992,"vertices":1743,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.27001042328846553,0,-0.27001042328846553],"max":[0.27001042328846553,0.9399833776117932,0.27001042328846553]},"sizeMeters":[0.54,0.94,0.54],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:31.387Z","updatedAt":"2026-09-08T10:51:31.480Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31977/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OperatorChairAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31977/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31977/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31977/v1/model.glb\" alt=\"Operator Chair (Abandoned Telephone Exchange)\" 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/31977/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/31977/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31978","slug":"abandoned-telephone-exchange-twin-cord-patch-pair-c3cd9bf8","title":"Twin Cord Patch Pair (Abandoned Telephone Exchange)","summary":"Paired looped patch cords with four machined plug bodies, stepped metal contact tips and continuous supported-looking cable loops; static spare cord pair.","description":"Paired looped patch cords with four machined plug bodies, stepped metal contact tips and continuous supported-looking cable loops; static spare cord pair. Dimensions 0.48 × 0.63 × 0.12 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-twin-cord-patch-pair-c3cd9bf8","cdnUrl":"https://cdn.3dassets.dev/assets/31978/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-twin-cord-patch-pair-c3cd9bf8","thumbnailUrl":"https://cdn.3dassets.dev/assets/31978/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31978/v1/poster.webp","blurhash":"U33[|{V[00tQ_MWB8xoyoMofR%RjDQt7.7M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":62352,"triangles":3376,"vertices":2498,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.24162037670612335,-0.000007854417208824627,-0.05861727645629856],"max":[0.24162037670612335,0.6297068767483559,0.0586051143794296]},"sizeMeters":[0.483,0.63,0.117],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:31.427Z","updatedAt":"2026-09-08T10:51:31.526Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31978/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwinCordPatchPairAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31978/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31978/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31978/v1/model.glb\" alt=\"Twin Cord Patch Pair (Abandoned Telephone Exchange)\" 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/31978/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/31978/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31979","slug":"abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","title":"Patch Cord Storage Rail (Abandoned Telephone Exchange)","summary":"Oak wall rail with six rounded projecting pegs and six separate hanging cable loops; mounting rail and cable undersides modeled.","description":"Oak wall rail with six rounded projecting pegs and six separate hanging cable loops; mounting rail and cable undersides modeled. Dimensions 0.77 × 0.42 × 0.19 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","cdnUrl":"https://cdn.3dassets.dev/assets/31979/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","thumbnailUrl":"https://cdn.3dassets.dev/assets/31979/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31979/v1/poster.webp","blurhash":"U76k09kpIpbb~CxuJ7S2Rk-VX8I;D*xZt6I:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":114676,"triangles":6948,"vertices":4376,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.38499999046325684,0.000014869660793032091,-0.09476228427490593],"max":[0.38499999046325684,0.42479724480996517,0.09475985941703279]},"sizeMeters":[0.77,0.425,0.19],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:33.201Z","updatedAt":"2026-09-08T10:51:33.433Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31979/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PatchCordStorageRailAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31979/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31979/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31979/v1/model.glb\" alt=\"Patch Cord Storage Rail (Abandoned Telephone Exchange)\" 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/31979/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/31979/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31980","slug":"abandoned-telephone-exchange-operator-headset-3dee2a51","title":"Operator Headset (Abandoned Telephone Exchange)","summary":"Lightweight operator headset with curved spring band, paired thick ear capsules and a curved speaking-tube boom ending in a small mouthpiece; static.","description":"Lightweight operator headset with curved spring band, paired thick ear capsules and a curved speaking-tube boom ending in a small mouthpiece; static. Dimensions 0.29 × 0.26 × 0.16 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-operator-headset-3dee2a51","cdnUrl":"https://cdn.3dassets.dev/assets/31980/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-operator-headset-3dee2a51","thumbnailUrl":"https://cdn.3dassets.dev/assets/31980/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31980/v1/poster.webp","blurhash":"U34oAzIU00?b00xu~qD%?uRQ9F%MRjt7s;M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":35316,"triangles":2000,"vertices":1325,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.14418461918830872,0.000001084677269981571,-0.07950218442387369],"max":[0.14418461918830872,0.25501914107228,0.07950218442387369]},"sizeMeters":[0.288,0.255,0.159],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:33.412Z","updatedAt":"2026-09-08T10:51:33.649Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31980/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OperatorHeadsetAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31980/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31980/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31980/v1/model.glb\" alt=\"Operator Headset (Abandoned Telephone Exchange)\" 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/31980/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/31980/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31981","slug":"abandoned-telephone-exchange-headset-hanging-bracket-2b0f4977","title":"Headset Hanging Bracket (Abandoned Telephone Exchange)","summary":"Screwed oak wall bracket with a curved rounded metal hook for a suspended headset; flat rear mounting surface.","description":"Screwed oak wall bracket with a curved rounded metal hook for a suspended headset; flat rear mounting surface. Dimensions 0.09 × 0.26 × 0.21 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-headset-hanging-bracket-2b0f4977","cdnUrl":"https://cdn.3dassets.dev/assets/31981/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-headset-hanging-bracket-2b0f4977","thumbnailUrl":"https://cdn.3dassets.dev/assets/31981/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31981/v1/poster.webp","blurhash":"U46Q@$KP01;K~VkX9aiwDjWA%Mf,8_IU%g?H","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":36956,"triangles":1996,"vertices":1376,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.042500075346322955,0,-0.10474464366270526],"max":[0.042500075346322955,0.2630000114440918,0.10475581005921888]},"sizeMeters":[0.085,0.263,0.21],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:33.809Z","updatedAt":"2026-09-08T10:51:33.939Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31981/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HeadsetHangingBracketAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31981/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31981/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31981/v1/model.glb\" alt=\"Headset Hanging Bracket (Abandoned Telephone Exchange)\" 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/31981/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/31981/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31982","slug":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","title":"Call Indicator Panel (Abandoned Telephone Exchange)","summary":"Twenty-four-position call indicator board with separate lamp lenses, ivory drop-shutter faces, original miniature index strips and corner screws; unlit.","description":"Twenty-four-position call indicator board with separate lamp lenses, ivory drop-shutter faces, original miniature index strips and corner screws; unlit. Dimensions 0.75 × 0.53 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-call-indicator-panel-0e60b24d","cdnUrl":"https://cdn.3dassets.dev/assets/31982/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-call-indicator-panel-0e60b24d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31982/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31982/v1/poster.webp","blurhash":"U37^}S-;00a#t8?bt79F00IV~qxaofIVM|%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":894040,"triangles":52796,"vertices":35791,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.375,0.000015397542170614287,-0.041759765744218386],"max":[0.375,0.5299845738475999,0.04173406874498929]},"sizeMeters":[0.75,0.53,0.083],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:36.283Z","updatedAt":"2026-09-08T10:51:36.385Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31982/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CallIndicatorPanelAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31982/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31982/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31982/v1/model.glb\" alt=\"Call Indicator Panel (Abandoned Telephone Exchange)\" 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/31982/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/31982/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31983","slug":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","title":"Subscriber Jack Panel (Abandoned Telephone Exchange)","summary":"Forty-hole subscriber jack panel with actual through-panel recessed openings, copper bezel rings, deep dark backing, numbered-looking index strips and mounting screws.","description":"Forty-hole subscriber jack panel with actual through-panel recessed openings, copper bezel rings, deep dark backing, numbered-looking index strips and mounting screws. Dimensions 0.91 × 0.59 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-subscriber-jack-panel-4262f872","cdnUrl":"https://cdn.3dassets.dev/assets/31983/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-subscriber-jack-panel-4262f872","thumbnailUrl":"https://cdn.3dassets.dev/assets/31983/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31983/v1/poster.webp","blurhash":"UFHV6g%K00oxt7~pt6D%00a#-;ofofj]fSM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1147560,"triangles":49384,"vertices":52915,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.453000009059906,-0.000004601518777569424,-0.04074220949560008],"max":[0.453000009059906,0.586004626791147,0.04074220949560008]},"sizeMeters":[0.906,0.586,0.081],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:35.417Z","updatedAt":"2026-09-08T10:51:35.509Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31983/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SubscriberJackPanelAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31983/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31983/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31983/v1/model.glb\" alt=\"Subscriber Jack Panel (Abandoned Telephone Exchange)\" 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/31983/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/31983/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31984","slug":"abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","title":"Operator Writing Shelf (Abandoned Telephone Exchange)","summary":"Separate oak writing shelf with genuine slab thickness, two triangular underside mounting brackets and a rear retaining strip; wall mount origin is its lowest bracket.","description":"Separate oak writing shelf with genuine slab thickness, two triangular underside mounting brackets and a rear retaining strip; wall mount origin is its lowest bracket. Dimensions 0.97 × 0.23 × 0.43 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","cdnUrl":"https://cdn.3dassets.dev/assets/31984/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","thumbnailUrl":"https://cdn.3dassets.dev/assets/31984/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31984/v1/poster.webp","blurhash":"U46an*w001XR~VxGD%NZ02tR={M{00K3-;rs","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16708,"triangles":664,"vertices":613,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4866487383842468,0.000030461686833044288,-0.21498550954735135],"max":[0.4866487383842468,0.22849757311317187,0.21498550954735135]},"sizeMeters":[0.973,0.228,0.43],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:35.470Z","updatedAt":"2026-09-08T10:51:35.575Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31984/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OperatorWritingShelfAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31984/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31984/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31984/v1/model.glb\" alt=\"Operator Writing Shelf (Abandoned Telephone Exchange)\" 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/31984/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/31984/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31985","slug":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","title":"Message Slip Tray (Abandoned Telephone Exchange)","summary":"Hollow wooden message-slip tray with raised four-sided rim and six offset individual paper slips resting on its base.","description":"Hollow wooden message-slip tray with raised four-sided rim and six offset individual paper slips resting on its base. Dimensions 0.32 × 0.09 × 0.23 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-message-slip-tray-4789cfd4","cdnUrl":"https://cdn.3dassets.dev/assets/31985/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-message-slip-tray-4789cfd4","thumbnailUrl":"https://cdn.3dassets.dev/assets/31985/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31985/v1/poster.webp","blurhash":"U89s-fs:00s.%MoMNFWB00S4~pR%9GW-%Mbb","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59228,"triangles":3300,"vertices":2335,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.1599999964237213,-0.000002304426810706417,-0.11499374113524695],"max":[0.1599999964237213,0.08700230192341563,0.11499374113524695]},"sizeMeters":[0.32,0.087,0.23],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:35.561Z","updatedAt":"2026-09-08T10:51:35.671Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31985/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MessageSlipTrayAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31985/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31985/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31985/v1/model.glb\" alt=\"Message Slip Tray (Abandoned Telephone Exchange)\" 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/31985/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/31985/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31986","slug":"abandoned-telephone-exchange-call-log-register-eec3dd31","title":"Call Log Register (Abandoned Telephone Exchange)","summary":"Open call log book with thick leather-like cover, two pale pages and physically modeled blank ledger rows and columns; no real customer data.","description":"Open call log book with thick leather-like cover, two pale pages and physically modeled blank ledger rows and columns; no real customer data. Dimensions 0.38 × 0.05 × 0.28 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-call-log-register-eec3dd31","cdnUrl":"https://cdn.3dassets.dev/assets/31986/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-call-log-register-eec3dd31","thumbnailUrl":"https://cdn.3dassets.dev/assets/31986/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31986/v1/poster.webp","blurhash":"U8C6rr%M00Rj~qxuIBM{00WC~qRQ00IU%Mxt","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":81884,"triangles":4500,"vertices":3200,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1899999976158142,0.000011673623829953211,-0.1399877908395943],"max":[0.1899999976158142,0.05400747825053163,0.1399877908395943]},"sizeMeters":[0.38,0.054,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:37.119Z","updatedAt":"2026-09-08T10:51:37.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31986/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CallLogRegisterAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31986/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31986/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31986/v1/model.glb\" alt=\"Call Log Register (Abandoned Telephone Exchange)\" 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/31986/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/31986/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31987","slug":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","title":"Directory Book Rack (Abandoned Telephone Exchange)","summary":"Open directory rack with thick end cheeks, rear brace and five distinct heavy bound volumes, supported on a wooden shelf.","description":"Open directory rack with thick end cheeks, rear brace and five distinct heavy bound volumes, supported on a wooden shelf. Dimensions 0.58 × 0.35 × 0.28 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-directory-book-rack-880a1ce8","cdnUrl":"https://cdn.3dassets.dev/assets/31987/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-directory-book-rack-880a1ce8","thumbnailUrl":"https://cdn.3dassets.dev/assets/31987/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31987/v1/poster.webp","blurhash":"U6C6oh_M008_~qxZDjX700Dj?^.800%1?aE2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":49636,"triangles":2700,"vertices":1908,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.28999999165534973,0.000014724923481868046,-0.14249976701079703],"max":[0.28999999165534973,0.3549852643476821,0.14249976701079703]},"sizeMeters":[0.58,0.355,0.285],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:37.143Z","updatedAt":"2026-09-08T10:51:37.243Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31987/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DirectoryBookRackAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31987/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31987/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31987/v1/model.glb\" alt=\"Directory Book Rack (Abandoned Telephone Exchange)\" 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/31987/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/31987/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31988","slug":"abandoned-telephone-exchange-supervisor-desk-50df53f9","title":"Supervisor Desk (Abandoned Telephone Exchange)","summary":"Oak supervisor desk with two three-drawer pedestals, six metal handles, thick desktop, leather-like blotter and a clear knee opening.","description":"Oak supervisor desk with two three-drawer pedestals, six metal handles, thick desktop, leather-like blotter and a clear knee opening. Dimensions 1.70 × 0.81 × 0.76 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-supervisor-desk-50df53f9","cdnUrl":"https://cdn.3dassets.dev/assets/31988/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-supervisor-desk-50df53f9","thumbnailUrl":"https://cdn.3dassets.dev/assets/31988/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31988/v1/poster.webp","blurhash":"U68Wsv={H?,p~V-UZ~aL0fS~XmEL9FOXPAI:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":137648,"triangles":7872,"vertices":5422,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.8500000238418579,-0.00003204969508197042,-0.38000580917567606],"max":[0.8500000238418579,0.8080284633653064,0.38000580917567606]},"sizeMeters":[1.7,0.808,0.76],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:37.264Z","updatedAt":"2026-09-08T10:51:37.374Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31988/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SupervisorDeskAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31988/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31988/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31988/v1/model.glb\" alt=\"Supervisor Desk (Abandoned Telephone Exchange)\" 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/31988/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/31988/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31989","slug":"abandoned-telephone-exchange-wall-exchange-clock-48d7d029","title":"Wall Exchange Clock (Abandoned Telephone Exchange)","summary":"Square oak exchange clock with recessed round ivory face, raised bezel, modeled ticks and two separate hands, plus a flat wall-mount back; static.","description":"Square oak exchange clock with recessed round ivory face, raised bezel, modeled ticks and two separate hands, plus a flat wall-mount back; static. Dimensions 0.47 × 0.47 × 0.14 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-wall-exchange-clock-48d7d029","cdnUrl":"https://cdn.3dassets.dev/assets/31989/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-wall-exchange-clock-48d7d029","thumbnailUrl":"https://cdn.3dassets.dev/assets/31989/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31989/v1/poster.webp","blurhash":"UCBfz--;004niwsotRR+00My~p-;-;s:D%R*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":77980,"triangles":3644,"vertices":3219,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.23499999940395355,0,-0.06799862837855072],"max":[0.23499999940395355,0.4700000005960464,0.06800152185006726]},"sizeMeters":[0.47,0.47,0.136],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:38.185Z","updatedAt":"2026-09-08T10:51:38.294Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31989/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallExchangeClockAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31989/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31989/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31989/v1/model.glb\" alt=\"Wall Exchange Clock (Abandoned Telephone Exchange)\" 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/31989/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/31989/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31990","slug":"abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","title":"Rotary Desk Telephone (Abandoned Telephone Exchange)","summary":"Rounded black desk telephone with stepped base, ten-hole rotary dial, cradle forks, separate curved handset and a connected curled-looking cord; static.","description":"Rounded black desk telephone with stepped base, ten-hole rotary dial, cradle forks, separate curved handset and a connected curled-looking cord; static. Dimensions 0.46 × 0.28 × 0.38 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","cdnUrl":"https://cdn.3dassets.dev/assets/31990/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","thumbnailUrl":"https://cdn.3dassets.dev/assets/31990/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31990/v1/poster.webp","blurhash":"U13+J;xu00D%o#oLW9WB00IU~q?bIUbHxvae","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":162452,"triangles":9744,"vertices":6313,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2297174334526062,-0.0000063930574610016055,-0.18784992917760499],"max":[0.2297174334526062,0.2793813799444391,0.18784992917760499]},"sizeMeters":[0.459,0.279,0.376],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:38.776Z","updatedAt":"2026-09-08T10:51:38.868Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31990/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RotaryDeskTelephoneAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31990/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31990/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31990/v1/model.glb\" alt=\"Rotary Desk Telephone (Abandoned Telephone Exchange)\" 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/31990/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/31990/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31991","slug":"abandoned-telephone-exchange-wall-service-telephone-0dadc98b","title":"Wall Service Telephone (Abandoned Telephone Exchange)","summary":"Oak wall service telephone with compact calling dial, separate top cradle and handset, connected hanging cord and screw-mounted backing plate.","description":"Oak wall service telephone with compact calling dial, separate top cradle and handset, connected hanging cord and screw-mounted backing plate. Dimensions 0.44 × 0.51 × 0.14 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-wall-service-telephone-0dadc98b","cdnUrl":"https://cdn.3dassets.dev/assets/31991/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-wall-service-telephone-0dadc98b","thumbnailUrl":"https://cdn.3dassets.dev/assets/31991/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31991/v1/poster.webp","blurhash":"U04-tpK600+a~WTI0ez=0OS~~9#S^%Si9av|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":164104,"triangles":9864,"vertices":6320,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.21900899360563433,0,-0.07250640796035371],"max":[0.21900899360563433,0.5143750309944153,0.0724865742846955]},"sizeMeters":[0.438,0.514,0.145],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:38.813Z","updatedAt":"2026-09-08T10:51:38.904Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31991/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallServiceTelephoneAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31991/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31991/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31991/v1/model.glb\" alt=\"Wall Service Telephone (Abandoned Telephone Exchange)\" 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/31991/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/31991/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31992","slug":"abandoned-telephone-exchange-telephone-bell-box-98147a1b","title":"Telephone Bell Box (Abandoned Telephone Exchange)","summary":"External telephone bell box with two separate domed bells, central striker arm, oak backplate and blank index label; static bells.","description":"External telephone bell box with two separate domed bells, central striker arm, oak backplate and blank index label; static bells. Dimensions 0.30 × 0.39 × 0.15 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-telephone-bell-box-98147a1b","cdnUrl":"https://cdn.3dassets.dev/assets/31992/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-telephone-bell-box-98147a1b","thumbnailUrl":"https://cdn.3dassets.dev/assets/31992/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31992/v1/poster.webp","blurhash":"U37Ae:NI00xC$PocOXR-M|snbuSg}[xG57Ip","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54964,"triangles":2956,"vertices":2092,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.15199999511241913,0,-0.07374305934902886],"max":[0.15199999511241913,0.38999998569488525,0.07375016769837359]},"sizeMeters":[0.304,0.39,0.147],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:39.113Z","updatedAt":"2026-09-08T10:51:39.213Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31992/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TelephoneBellBoxAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31992/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31992/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31992/v1/model.glb\" alt=\"Telephone Bell Box (Abandoned Telephone Exchange)\" 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/31992/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/31992/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31993","slug":"abandoned-telephone-exchange-line-test-handset-bb64c6a7","title":"Line Test Handset (Abandoned Telephone Exchange)","summary":"Portable line-test receiver with center toggle, long looped test lead and machined plug; visually distinct from desk and wall telephone assemblies.","description":"Portable line-test receiver with center toggle, long looped test lead and machined plug; visually distinct from desk and wall telephone assemblies. Dimensions 0.53 × 0.24 × 0.22 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-line-test-handset-bb64c6a7","cdnUrl":"https://cdn.3dassets.dev/assets/31993/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-line-test-handset-bb64c6a7","thumbnailUrl":"https://cdn.3dassets.dev/assets/31993/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31993/v1/poster.webp","blurhash":"U02$NtMx8_E0V_xuD%a#00%3Rka{-;IU?bIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":70256,"triangles":3924,"vertices":2734,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.26538515090942383,-0.000007895628126169951,-0.10759811543052596],"max":[0.26538515090942383,0.24377325980528397,0.10759811543052596]},"sizeMeters":[0.531,0.244,0.215],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:39.824Z","updatedAt":"2026-09-08T10:51:39.929Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31993/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LineTestHandsetAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31993/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31993/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31993/v1/model.glb\" alt=\"Line Test Handset (Abandoned Telephone Exchange)\" 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/31993/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/31993/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31994","slug":"abandoned-telephone-exchange-plug-test-block-2a27a8bb","title":"Plug Test Block (Abandoned Telephone Exchange)","summary":"Small six-socket plug test block with genuinely recessed holes, ivory face, copper rings and a thick wooden tabletop foot.","description":"Small six-socket plug test block with genuinely recessed holes, ivory face, copper rings and a thick wooden tabletop foot. Dimensions 0.32 × 0.19 × 0.20 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-plug-test-block-2a27a8bb","cdnUrl":"https://cdn.3dassets.dev/assets/31994/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-plug-test-block-2a27a8bb","thumbnailUrl":"https://cdn.3dassets.dev/assets/31994/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31994/v1/poster.webp","blurhash":"UDCGDH~p0KM{%#?HxtNG00E1?us:8_9FWB%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":249696,"triangles":11440,"vertices":10981,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.1599999964237213,3.367104437768109e-7,-0.09999328369289118],"max":[0.1599999964237213,0.18599966770029994,0.09999328369289118]},"sizeMeters":[0.32,0.186,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:41.431Z","updatedAt":"2026-09-08T10:51:41.573Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31994/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlugTestBlockAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31994/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31994/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31994/v1/model.glb\" alt=\"Plug Test Block (Abandoned Telephone Exchange)\" 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/31994/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/31994/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31995","slug":"abandoned-telephone-exchange-resistance-test-box-aeef6874","title":"Resistance Test Box (Abandoned Telephone Exchange)","summary":"Three-dial resistance test box with thick oak case, black top panel, separately modeled rotary knobs, binding posts and original index strips; no calibrated electrical claim.","description":"Three-dial resistance test box with thick oak case, black top panel, separately modeled rotary knobs, binding posts and original index strips; no calibrated electrical claim. Dimensions 0.42 × 0.20 × 0.27 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-resistance-test-box-aeef6874","cdnUrl":"https://cdn.3dassets.dev/assets/31995/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-resistance-test-box-aeef6874","thumbnailUrl":"https://cdn.3dassets.dev/assets/31995/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31995/v1/poster.webp","blurhash":"U37dau~VDiR~Kk%Mxsen0059o$WGzUIUS$bv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":111708,"triangles":5736,"vertices":4546,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.20999999344348907,0.000007476679798626429,-0.13500960911528492],"max":[0.20999999344348907,0.19699283824711114,0.13500960911528492]},"sizeMeters":[0.42,0.197,0.27],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:40.486Z","updatedAt":"2026-09-08T10:51:40.592Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31995/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ResistanceTestBoxAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31995/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31995/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31995/v1/model.glb\" alt=\"Resistance Test Box (Abandoned Telephone Exchange)\" 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/31995/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/31995/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31996","slug":"abandoned-telephone-exchange-insulation-test-meter-e4d96a43","title":"Insulation Test Meter (Abandoned Telephone Exchange)","summary":"Hand-cranked insulation meter with rounded case, recessed analog scale and pointer, carry handle and offset crank. Static illustrative device, not a working electrical meter.","description":"Hand-cranked insulation meter with rounded case, recessed analog scale and pointer, carry handle and offset crank. Static illustrative device, not a working electrical meter. Dimensions 0.36 × 0.31 × 0.18 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-insulation-test-meter-e4d96a43","cdnUrl":"https://cdn.3dassets.dev/assets/31996/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-insulation-test-meter-e4d96a43","thumbnailUrl":"https://cdn.3dassets.dev/assets/31996/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31996/v1/poster.webp","blurhash":"U56[2F~q4n00?bx[IUIU009Gxu?bj]V@WBWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":83612,"triangles":4020,"vertices":3476,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.18249664897395926,0,-0.09150021850722159],"max":[0.18250000476837158,0.31000147244146947,0.09150227983840449]},"sizeMeters":[0.365,0.31,0.183],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:40.817Z","updatedAt":"2026-09-08T10:51:40.996Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31996/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InsulationTestMeterAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31996/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31996/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31996/v1/model.glb\" alt=\"Insulation Test Meter (Abandoned Telephone Exchange)\" 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/31996/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/31996/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31997","slug":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","title":"Selector Switch Assembly (Abandoned Telephone Exchange)","summary":"Supported rotary selector assembly with five annular contact banks, sixty individual copper contact pads, five wiper arms, central shaft, twin electromagnets and a braced frame; static.","description":"Supported rotary selector assembly with five annular contact banks, sixty individual copper contact pads, five wiper arms, central shaft, twin electromagnets and a braced frame; static. Dimensions 0.38 × 0.83 × 0.39 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","cdnUrl":"https://cdn.3dassets.dev/assets/31997/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","thumbnailUrl":"https://cdn.3dassets.dev/assets/31997/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31997/v1/poster.webp","blurhash":"UB9j$C%M009Fofj[WBay00M{~p-pofayWBof","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":427196,"triangles":23324,"vertices":17717,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.18999038284926606,0,-0.1950057945957036],"max":[0.18999038284926606,0.8299999833106995,0.1950057945957036]},"sizeMeters":[0.38,0.83,0.39],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:42.688Z","updatedAt":"2026-09-08T10:51:42.783Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31997/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SelectorSwitchAssemblyAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31997/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31997/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31997/v1/model.glb\" alt=\"Selector Switch Assembly (Abandoned Telephone Exchange)\" 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/31997/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/31997/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31998","slug":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","title":"Selector Equipment Rack (Abandoned Telephone Exchange)","summary":"Two-tier steel selector rack holding four supported five-bank rotary selectors, with separate shelf plates, upright frames and a front index plate; static mechanisms.","description":"Two-tier steel selector rack holding four supported five-bank rotary selectors, with separate shelf plates, upright frames and a front index plate; static mechanisms. Dimensions 1.16 × 2.06 × 0.63 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-selector-equipment-rack-63a91af2","cdnUrl":"https://cdn.3dassets.dev/assets/31998/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-selector-equipment-rack-63a91af2","thumbnailUrl":"https://cdn.3dassets.dev/assets/31998/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31998/v1/poster.webp","blurhash":"U36a@p-;004n-;t7IUIU00M|~q-:M|R%t7xu","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1760716,"triangles":96896,"vertices":73421,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5799797212622421,0,-0.31500908798536525],"max":[0.5799797212622421,2.065000057220459,0.31500908798536525]},"sizeMeters":[1.16,2.065,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:42.404Z","updatedAt":"2026-09-08T10:51:42.507Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31998/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SelectorEquipmentRackAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31998/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31998/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31998/v1/model.glb\" alt=\"Selector Equipment Rack (Abandoned Telephone Exchange)\" 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/31998/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/31998/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31999","slug":"abandoned-telephone-exchange-relay-bank-e0fe853e","title":"Relay Bank (Abandoned Telephone Exchange)","summary":"Eight-relay steel bank with copper coil bodies, separate winding bands, angled armatures and three-contact leaf stacks on two supported shelves; static.","description":"Eight-relay steel bank with copper coil bodies, separate winding bands, angled armatures and three-contact leaf stacks on two supported shelves; static. Dimensions 0.84 × 0.49 × 0.44 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-relay-bank-e0fe853e","cdnUrl":"https://cdn.3dassets.dev/assets/31999/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-relay-bank-e0fe853e","thumbnailUrl":"https://cdn.3dassets.dev/assets/31999/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31999/v1/poster.webp","blurhash":"U28Nzw?uDj00~q_M-;4U00%No]?bDjIB01x]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":627296,"triangles":37916,"vertices":24755,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.41999998688697815,0.000018062731746537608,-0.22002990126962696],"max":[0.41999998688697815,0.49502304232022376,0.22002990126962696]},"sizeMeters":[0.84,0.495,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:43.598Z","updatedAt":"2026-09-08T10:51:43.700Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31999/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RelayBankAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31999/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31999/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31999/v1/model.glb\" alt=\"Relay Bank (Abandoned Telephone Exchange)\" 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/31999/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/31999/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32000","slug":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","title":"Main Distribution Frame (Abandoned Telephone Exchange)","summary":"Main distribution frame with seven insulated terminal rails, one hundred forty copper terminal posts, supported steel uprights and twenty-four connected jumper runs between adjacent rails; static.","description":"Main distribution frame with seven insulated terminal rails, one hundred forty copper terminal posts, supported steel uprights and twenty-four connected jumper runs between adjacent rails; static. Dimensions 1.35 × 2.25 × 0.58 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","cdnUrl":"https://cdn.3dassets.dev/assets/32000/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","thumbnailUrl":"https://cdn.3dassets.dev/assets/32000/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32000/v1/poster.webp","blurhash":"UA9Qptxu00D*xtofRjM|00Rj~qxuRjWCt7of","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":348880,"triangles":17252,"vertices":15101,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6750617999816889,0,-0.2899449140903958],"max":[0.6750617999816889,2.25,0.2899449140903958]},"sizeMeters":[1.35,2.25,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:43.158Z","updatedAt":"2026-09-08T10:51:43.265Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32000/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MainDistributionFrameAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32000/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32000/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32000/v1/model.glb\" alt=\"Main Distribution Frame (Abandoned Telephone Exchange)\" 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/32000/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/32000/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32001","slug":"abandoned-telephone-exchange-terminal-strip-5a59d234","title":"Terminal Strip (Abandoned Telephone Exchange)","summary":"Eight-position insulated terminal strip with independent copper binding posts, slotted screw heads, rounded carrier body and mounting tabs.","description":"Eight-position insulated terminal strip with independent copper binding posts, slotted screw heads, rounded carrier body and mounting tabs. Dimensions 0.55 × 0.10 × 0.16 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-terminal-strip-5a59d234","cdnUrl":"https://cdn.3dassets.dev/assets/32001/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-terminal-strip-5a59d234","thumbnailUrl":"https://cdn.3dassets.dev/assets/32001/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32001/v1/poster.webp","blurhash":"U8BWi3t700M|og_2odIU00a#~ps.sk00NG-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":107532,"triangles":6372,"vertices":5468,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2750000059604645,-5.918353884470928e-7,-0.07873825126766675],"max":[0.2750000059604645,0.10300059282631566,0.07874463323878797]},"sizeMeters":[0.55,0.103,0.157],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:44.041Z","updatedAt":"2026-09-08T10:51:44.135Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32001/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TerminalStripAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32001/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32001/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32001/v1/model.glb\" alt=\"Terminal Strip (Abandoned Telephone Exchange)\" 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/32001/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/32001/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32002","slug":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","title":"Jumper Wire Spool (Abandoned Telephone Exchange)","summary":"Wooden jumper-wire supply spool with separate end flanges, eighteen modeled copper wire loops and a central spindle cap.","description":"Wooden jumper-wire supply spool with separate end flanges, eighteen modeled copper wire loops and a central spindle cap. Dimensions 0.18 × 0.28 × 0.18 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","cdnUrl":"https://cdn.3dassets.dev/assets/32002/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/32002/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32002/v1/poster.webp","blurhash":"U37n8q-o009GnkWCOWoy8xV@?]tR%zbHQ-jF","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":160968,"triangles":9984,"vertices":6138,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.09000457447507315,0,-0.09000457447507315],"max":[0.09000457447507315,0.28499945975539037,0.09000457447507315]},"sizeMeters":[0.18,0.285,0.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:44.399Z","updatedAt":"2026-09-08T10:51:44.505Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32002/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JumperWireSpoolAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32002/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32002/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32002/v1/model.glb\" alt=\"Jumper Wire Spool (Abandoned Telephone Exchange)\" 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/32002/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/32002/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32003","slug":"abandoned-telephone-exchange-cable-lacing-comb-880bdf7d","title":"Cable Lacing Comb (Abandoned Telephone Exchange)","summary":"Eleven-tooth cable lacing comb with solid insulated spine, rounded tooth edges, open wire gaps and two mounting screw heads.","description":"Eleven-tooth cable lacing comb with solid insulated spine, rounded tooth edges, open wire gaps and two mounting screw heads. Dimensions 0.49 × 0.23 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-cable-lacing-comb-880bdf7d","cdnUrl":"https://cdn.3dassets.dev/assets/32003/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-cable-lacing-comb-880bdf7d","thumbnailUrl":"https://cdn.3dassets.dev/assets/32003/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32003/v1/poster.webp","blurhash":"UFHo8vt70LxZ?G~pS2IU00j@%LRjRlIVM{M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":79648,"triangles":4360,"vertices":3161,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.24500000476837158,-0.000004272743462457873,-0.041260148074390254],"max":[0.24500000476837158,0.2300042769157876,0.041259676018278964]},"sizeMeters":[0.49,0.23,0.083],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:44.904Z","updatedAt":"2026-09-08T10:51:45.005Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32003/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableLacingCombAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32003/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32003/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32003/v1/model.glb\" alt=\"Cable Lacing Comb (Abandoned Telephone Exchange)\" 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/32003/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/32003/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32004","slug":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","title":"Overhead Cable Trough (Abandoned Telephone Exchange)","summary":"Two-metre overhead cable trough with real U-section, three continuous cable bundles, two hanging cradle bars and paired ceiling rods with attachment plates. End ports form a routed overhead run.","description":"Two-metre overhead cable trough with real U-section, three continuous cable bundles, two hanging cradle bars and paired ceiling rods with attachment plates. End ports form a routed overhead run. Dimensions 2.00 × 0.70 × 0.45 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","cdnUrl":"https://cdn.3dassets.dev/assets/32004/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","thumbnailUrl":"https://cdn.3dassets.dev/assets/32004/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32004/v1/poster.webp","blurhash":"U14oG_W;8_xvV@_3tR8{00n+.7M{%f4TR5.7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50168,"triangles":2548,"vertices":1962,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.000004583824927684166,-0.22497871650652493],"max":[1,0.7050601889682563,0.22497871650652493]},"sizeMeters":[2,0.705,0.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:45.222Z","updatedAt":"2026-09-08T10:51:45.329Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32004/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OverheadCableTroughAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32004/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32004/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32004/v1/model.glb\" alt=\"Overhead Cable Trough (Abandoned Telephone Exchange)\" 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/32004/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/32004/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32005","slug":"abandoned-telephone-exchange-cable-trough-corner-4299e114","title":"Cable Trough Corner (Abandoned Telephone Exchange)","summary":"Right-angle overhead cable corner with continuous thick trough floor, inner and outer retaining walls, three bent cable bundles and two ceiling suspension cradles. West and south ports terminate its routed bend.","description":"Right-angle overhead cable corner with continuous thick trough floor, inner and outer retaining walls, three bent cable bundles and two ceiling suspension cradles. West and south ports terminate its routed bend. Dimensions 1.16 × 0.70 × 1.22 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-cable-trough-corner-4299e114","cdnUrl":"https://cdn.3dassets.dev/assets/32005/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-cable-trough-corner-4299e114","thumbnailUrl":"https://cdn.3dassets.dev/assets/32005/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32005/v1/poster.webp","blurhash":"U13+Q2IA00.8%MayIUog00x]_MMeX7V[oMkV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":98076,"triangles":5656,"vertices":3769,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5800008773803711,0.000014582226229631345,-0.6100008487701416],"max":[0.5799913887946021,0.7050241686792118,0.6100008487701416]},"sizeMeters":[1.16,0.705,1.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:45.658Z","updatedAt":"2026-09-08T10:51:45.765Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32005/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableTroughCornerAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32005/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32005/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32005/v1/model.glb\" alt=\"Cable Trough Corner (Abandoned Telephone Exchange)\" 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/32005/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/32005/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32006","slug":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","title":"Cable Drop Ladder (Abandoned Telephone Exchange)","summary":"Floor-supported cable drop ladder with ten rungs, three continuous curved cable runs from its top horizontal port and three terminated bottom glands. Completes an overhead route without loose floating wire ends.","description":"Floor-supported cable drop ladder with ten rungs, three continuous curved cable runs from its top horizontal port and three terminated bottom glands. Completes an overhead route without loose floating wire ends. Dimensions 0.54 × 2.63 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","cdnUrl":"https://cdn.3dassets.dev/assets/32006/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","thumbnailUrl":"https://cdn.3dassets.dev/assets/32006/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32006/v1/poster.webp","blurhash":"U02PSlxu008{.mi{D5b^pcV@VYt+%~jFHsb]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":102184,"triangles":5692,"vertices":4019,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2700384522421547,0,-0.2487335898393452],"max":[0.2700384522421547,2.626563310623169,0.24862665566316614]},"sizeMeters":[0.54,2.627,0.497],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:46.134Z","updatedAt":"2026-09-08T10:51:46.229Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32006/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableDropLadderAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32006/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32006/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32006/v1/model.glb\" alt=\"Cable Drop Ladder (Abandoned Telephone Exchange)\" 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/32006/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/32006/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32007","slug":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","title":"Floor Cable Trench Cover (Abandoned Telephone Exchange)","summary":"Heavy removable trench-cover plate with twelve transverse non-slip ribs, two recessed-looking lift slots and a fully closed underside.","description":"Heavy removable trench-cover plate with twelve transverse non-slip ribs, two recessed-looking lift slots and a fully closed underside. Dimensions 1.20 × 0.06 × 0.43 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","cdnUrl":"https://cdn.3dassets.dev/assets/32007/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","thumbnailUrl":"https://cdn.3dassets.dev/assets/32007/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32007/v1/poster.webp","blurhash":"U46a@tt700WB-;%MM{IU00t8_4RP4T9F%M?b","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":79992,"triangles":4500,"vertices":3180,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000030213325581805728,-0.21499070039757234],"max":[0.6000000238418579,0.0600302157097676,0.21499070039757234]},"sizeMeters":[1.2,0.06,0.43],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:46.610Z","updatedAt":"2026-09-08T10:51:46.715Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32007/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FloorCableTrenchCoverAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32007/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32007/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32007/v1/model.glb\" alt=\"Floor Cable Trench Cover (Abandoned Telephone Exchange)\" 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/32007/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/32007/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32008","slug":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","title":"Battery Cell Bank (Abandoned Telephone Exchange)","summary":"Five separate glass-like battery jars in a steel tray with individual lids, paired terminals and four connected inter-cell straps; static sealed visual model.","description":"Five separate glass-like battery jars in a steel tray with individual lids, paired terminals and four connected inter-cell straps; static sealed visual model. Dimensions 1.07 × 0.46 × 0.44 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-battery-cell-bank-d25c2656","cdnUrl":"https://cdn.3dassets.dev/assets/32008/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-battery-cell-bank-d25c2656","thumbnailUrl":"https://cdn.3dassets.dev/assets/32008/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32008/v1/poster.webp","blurhash":"U268jR%34Txb_3.8R*Mx00oy%gIn0J8xMxb]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":120256,"triangles":6076,"vertices":5008,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5350000262260437,0.00001325870142698804,-0.2199791056045255],"max":[0.5350000262260437,0.4589587491001453,0.2199791056045255]},"sizeMeters":[1.07,0.459,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:46.905Z","updatedAt":"2026-09-08T10:51:47.003Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32008/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BatteryCellBankAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32008/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32008/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32008/v1/model.glb\" alt=\"Battery Cell Bank (Abandoned Telephone Exchange)\" 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/32008/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/32008/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32009","slug":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","title":"Charging Cabinet (Abandoned Telephone Exchange)","summary":"Vented oak charging cabinet with thick inset black control panel, analog meter, two rotary controls, individual door and a slotted lower grille; static.","description":"Vented oak charging cabinet with thick inset black control panel, analog meter, two rotary controls, individual door and a slotted lower grille; static. Dimensions 0.77 × 1.32 × 0.70 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-charging-cabinet-166b6a9c","cdnUrl":"https://cdn.3dassets.dev/assets/32009/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-charging-cabinet-166b6a9c","thumbnailUrl":"https://cdn.3dassets.dev/assets/32009/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32009/v1/poster.webp","blurhash":"U27dI1$+00IU^lM}5Ox?%ebE9Iof}[$jELK1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":178416,"triangles":9484,"vertices":7361,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3850088725787685,0,-0.3477465774417497],"max":[0.3850088725787685,1.3250000476837158,0.34774041088846463]},"sizeMeters":[0.77,1.325,0.695],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:47.353Z","updatedAt":"2026-09-08T10:51:47.457Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32009/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChargingCabinetAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32009/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32009/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32009/v1/model.glb\" alt=\"Charging Cabinet (Abandoned Telephone Exchange)\" 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/32009/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/32009/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32010","slug":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","title":"Fuse Distribution Board (Abandoned Telephone Exchange)","summary":"Six-position fuse board on a thick wooden backplate, with ceramic carriers, projecting cartridge covers, individual blank labels and mounting screws; static.","description":"Six-position fuse board on a thick wooden backplate, with ceramic carriers, projecting cartridge covers, individual blank labels and mounting screws; static. Dimensions 0.58 × 0.73 × 0.25 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-fuse-distribution-board-a9865666","cdnUrl":"https://cdn.3dassets.dev/assets/32010/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-fuse-distribution-board-a9865666","thumbnailUrl":"https://cdn.3dassets.dev/assets/32010/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32010/v1/poster.webp","blurhash":"U59QKsIp00={^kxaE1Io00xa~qIoV?V@oztR","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":189888,"triangles":11588,"vertices":8555,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.2900105364631827,0,-0.12374168576557676],"max":[0.2900105364631827,0.7300000190734863,0.12373293038792678]},"sizeMeters":[0.58,0.73,0.247],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:47.857Z","updatedAt":"2026-09-08T10:51:47.949Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32010/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FuseDistributionBoardAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32010/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32010/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32010/v1/model.glb\" alt=\"Fuse Distribution Board (Abandoned Telephone Exchange)\" 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/32010/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/32010/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32011","slug":"abandoned-telephone-exchange-ringing-generator-223a9956","title":"Ringing Generator (Abandoned Telephone Exchange)","summary":"Hand ringing generator with supported copper armature, eight winding bands, bearing cheeks, through shaft and an offset crank grip on a wooden foot; static.","description":"Hand ringing generator with supported copper armature, eight winding bands, bearing cheeks, through shaft and an offset crank grip on a wooden foot; static. Dimensions 0.62 × 0.39 × 0.35 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-ringing-generator-223a9956","cdnUrl":"https://cdn.3dassets.dev/assets/32011/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-ringing-generator-223a9956","thumbnailUrl":"https://cdn.3dassets.dev/assets/32011/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32011/v1/poster.webp","blurhash":"U25}Q.?G01Mx0iR+-UWB01IqpIov}q-UozOE","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":90632,"triangles":5380,"vertices":3415,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3100000023841858,-0.000007575223828409916,-0.1750047317149165],"max":[0.3100000023841858,0.39200756497182954,0.1750047317149165]},"sizeMeters":[0.62,0.392,0.35],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:48.270Z","updatedAt":"2026-09-08T10:51:48.364Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32011/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RingingGeneratorAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32011/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32011/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32011/v1/model.glb\" alt=\"Ringing Generator (Abandoned Telephone Exchange)\" 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/32011/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/32011/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32012","slug":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","title":"Maintenance Tool Chest (Abandoned Telephone Exchange)","summary":"Three-drawer oak maintenance chest with thick case, individual indexed drawer fronts, metal handles, broad top and four feet; closed tool storage.","description":"Three-drawer oak maintenance chest with thick case, individual indexed drawer fronts, metal handles, broad top and four feet; closed tool storage. Dimensions 0.92 × 0.77 × 0.61 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","cdnUrl":"https://cdn.3dassets.dev/assets/32012/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","thumbnailUrl":"https://cdn.3dassets.dev/assets/32012/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32012/v1/poster.webp","blurhash":"U59sk$=z02IU~C$|IoIq5lNGaKtOkVxaRkIp","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":127848,"triangles":7236,"vertices":5039,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.46000000834465027,0.0000026514835272384296,-0.3069297245415973],"max":[0.46000000834465027,0.765011675221886,0.30693232429830847]},"sizeMeters":[0.92,0.765,0.614],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:48.588Z","updatedAt":"2026-09-08T10:51:48.700Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32012/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MaintenanceToolChestAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32012/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32012/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32012/v1/model.glb\" alt=\"Maintenance Tool Chest (Abandoned Telephone Exchange)\" 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/32012/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/32012/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32013","slug":"abandoned-telephone-exchange-contact-cleaning-brush-39fabdae","title":"Contact Cleaning Brush (Abandoned Telephone Exchange)","summary":"Slim contact brush with contoured wooden handle, copper ferrule and fifteen separate fine splayed bristle tufts; static hand tool.","description":"Slim contact brush with contoured wooden handle, copper ferrule and fifteen separate fine splayed bristle tufts; static hand tool. Dimensions 0.05 × 0.29 × 0.05 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-contact-cleaning-brush-39fabdae","cdnUrl":"https://cdn.3dassets.dev/assets/32013/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-contact-cleaning-brush-39fabdae","thumbnailUrl":"https://cdn.3dassets.dev/assets/32013/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32013/v1/poster.webp","blurhash":"U77A@_t600Io_NkC4TV@-;j[D%aen%j@W.ay","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37736,"triangles":1596,"vertices":1580,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.023997161477494033,0,-0.023997161477494033],"max":[0.023997161477494033,0.2900935709476471,0.023997161477494033]},"sizeMeters":[0.048,0.29,0.048],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:49.083Z","updatedAt":"2026-09-08T10:51:49.188Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32013/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ContactCleaningBrushAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32013/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32013/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32013/v1/model.glb\" alt=\"Contact Cleaning Brush (Abandoned Telephone Exchange)\" 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/32013/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/32013/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32014","slug":"abandoned-telephone-exchange-relay-adjustment-tool-521e0441","title":"Relay Adjustment Tool (Abandoned Telephone Exchange)","summary":"Fine relay adjustment tool with a tapered insulated grip, narrow steel shank and thick slotted fork blade for illustrative contact work; static.","description":"Fine relay adjustment tool with a tapered insulated grip, narrow steel shank and thick slotted fork blade for illustrative contact work; static. Dimensions 0.05 × 0.39 × 0.05 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-relay-adjustment-tool-521e0441","cdnUrl":"https://cdn.3dassets.dev/assets/32014/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-relay-adjustment-tool-521e0441","thumbnailUrl":"https://cdn.3dassets.dev/assets/32014/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32014/v1/poster.webp","blurhash":"U12=.TtR00D%_3of4nRjM{RjxuxuIUWB%Mxu","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21416,"triangles":1000,"vertices":834,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.024000487918546996,0,-0.024000487918546996],"max":[0.024000487918546996,0.39399999380111694,0.024000487918546996]},"sizeMeters":[0.048,0.394,0.048],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:49.522Z","updatedAt":"2026-09-08T10:51:49.623Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32014/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RelayAdjustmentToolAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32014/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32014/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32014/v1/model.glb\" alt=\"Relay Adjustment Tool (Abandoned Telephone Exchange)\" 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/32014/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/32014/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32015","slug":"abandoned-telephone-exchange-cable-splicing-vise-25f36eaa","title":"Cable Splicing Vise (Abandoned Telephone Exchange)","summary":"Bench-mounted cable vise with bolted foot, raised cast body, two separate steel jaws, horizontal screw and sliding cross-handle; static.","description":"Bench-mounted cable vise with bolted foot, raised cast body, two separate steel jaws, horizontal screw and sliding cross-handle; static. Dimensions 0.37 × 0.31 × 0.29 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-cable-splicing-vise-25f36eaa","cdnUrl":"https://cdn.3dassets.dev/assets/32015/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-cable-splicing-vise-25f36eaa","thumbnailUrl":"https://cdn.3dassets.dev/assets/32015/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32015/v1/poster.webp","blurhash":"U36u9Oxu00IB~qxu00IU4ToMb@Int7j[xuR*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54292,"triangles":2696,"vertices":2198,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.18700000643730164,-0.0000042786323929955294,-0.14500427446006786],"max":[0.18700000643730164,0.30798869098472403,0.14500427446006786]},"sizeMeters":[0.374,0.308,0.29],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:50.011Z","updatedAt":"2026-09-08T10:51:50.115Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32015/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableSplicingViseAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32015/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32015/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32015/v1/model.glb\" alt=\"Cable Splicing Vise (Abandoned Telephone Exchange)\" 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/32015/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/32015/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32016","slug":"abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","title":"Component Sorting Drawers (Abandoned Telephone Exchange)","summary":"Twelve-drawer component sorter with independent shallow fronts, miniature metal pulls, ivory label strips and a thick wooden backing cabinet.","description":"Twelve-drawer component sorter with independent shallow fronts, miniature metal pulls, ivory label strips and a thick wooden backing cabinet. Dimensions 0.71 × 0.71 × 0.44 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","cdnUrl":"https://cdn.3dassets.dev/assets/32016/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","thumbnailUrl":"https://cdn.3dassets.dev/assets/32016/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32016/v1/poster.webp","blurhash":"U39%Fw~o0001}TxUKPXA5RW-wbxH-n%LOFE2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":382640,"triangles":22044,"vertices":15407,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.35499998927116394,0,-0.21768867313269746],"max":[0.35499998927116394,0.7099999785423279,0.2176986900953064]},"sizeMeters":[0.71,0.71,0.435],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:50.419Z","updatedAt":"2026-09-08T10:51:50.521Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32016/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ComponentSortingDrawersAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32016/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32016/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32016/v1/model.glb\" alt=\"Component Sorting Drawers (Abandoned Telephone Exchange)\" 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/32016/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/32016/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32017","slug":"abandoned-telephone-exchange-exchange-plan-board-07adf048","title":"Exchange Plan Board (Abandoned Telephone Exchange)","summary":"Framed exchange plan board with thick wooden backing, inset pale sheet, original abstract line-route grid and four corner pins; no real wiring instructions.","description":"Framed exchange plan board with thick wooden backing, inset pale sheet, original abstract line-route grid and four corner pins; no real wiring instructions. Dimensions 1.00 × 0.73 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-exchange-plan-board-07adf048","cdnUrl":"https://cdn.3dassets.dev/assets/32017/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-exchange-plan-board-07adf048","thumbnailUrl":"https://cdn.3dassets.dev/assets/32017/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32017/v1/poster.webp","blurhash":"UFEfH3%L00WA%2-:a}9G00V@~qfkV@M{f6x]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":97264,"triangles":5420,"vertices":3940,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,0.00002915471329273389,-0.04002517696938028],"max":[0.5,0.7299708643601936,0.03998412707646645]},"sizeMeters":[1,0.73,0.08],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:50.852Z","updatedAt":"2026-09-08T10:51:50.945Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32017/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ExchangePlanBoardAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32017/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32017/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32017/v1/model.glb\" alt=\"Exchange Plan Board (Abandoned Telephone Exchange)\" 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/32017/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/32017/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32018","slug":"abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","title":"Spare Handset Cabinet (Abandoned Telephone Exchange)","summary":"Open three-shelf spare receiver cabinet with six separately supported handsets, thick back and side walls, shelf edges and protective overhanging top.","description":"Open three-shelf spare receiver cabinet with six separately supported handsets, thick back and side walls, shelf edges and protective overhanging top. Dimensions 1.15 × 1.23 × 0.42 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","cdnUrl":"https://cdn.3dassets.dev/assets/32018/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","thumbnailUrl":"https://cdn.3dassets.dev/assets/32018/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32018/v1/poster.webp","blurhash":"U28WgL={009t~A-AE4EkOTspMzI:=_=xIr5R","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":313904,"triangles":18252,"vertices":12593,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.575040066735543,0,-0.20997383446479065],"max":[0.575040066735543,1.225000023841858,0.20997383446479065]},"sizeMeters":[1.15,1.225,0.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:52.400Z","updatedAt":"2026-09-08T10:51:52.744Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32018/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpareHandsetCabinetAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32018/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32018/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32018/v1/model.glb\" alt=\"Spare Handset Cabinet (Abandoned Telephone Exchange)\" 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/32018/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/32018/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32019","slug":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","title":"Abandoned Mail Sack (Abandoned Telephone Exchange)","summary":"Slumped hollow canvas mail sack with a gathered mouth, thick interior cloth surface, tied-looking cord, stitch details and a blank paper tag; no real correspondence.","description":"Slumped hollow canvas mail sack with a gathered mouth, thick interior cloth surface, tied-looking cord, stitch details and a blank paper tag; no real correspondence. Dimensions 0.50 × 0.63 × 0.50 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","cdnUrl":"https://cdn.3dassets.dev/assets/32019/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","thumbnailUrl":"https://cdn.3dassets.dev/assets/32019/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32019/v1/poster.webp","blurhash":"U36[pw_M0000%NV[ITtQ009F_N_3RPoLozR*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50604,"triangles":2468,"vertices":2052,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2500106914128485,0,-0.25051068497554685],"max":[0.2500106914128485,0.6319413616435643,0.25050164208875264]},"sizeMeters":[0.5,0.632,0.501],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:51.813Z","updatedAt":"2026-09-08T10:51:51.939Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32019/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AbandonedMailSackAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32019/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32019/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32019/v1/model.glb\" alt=\"Abandoned Mail Sack (Abandoned Telephone Exchange)\" 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/32019/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/32019/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32020","slug":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","title":"Fallen Ceiling Panel (Abandoned Telephone Exchange)","summary":"One fallen plaster ceiling panel with thick uneven clipped edge and attached rear battens, resting flat clear of walkways; no destroyed building shell.","description":"One fallen plaster ceiling panel with thick uneven clipped edge and attached rear battens, resting flat clear of walkways; no destroyed building shell. Dimensions 1.12 × 0.08 × 0.69 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","cdnUrl":"https://cdn.3dassets.dev/assets/32020/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","thumbnailUrl":"https://cdn.3dassets.dev/assets/32020/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32020/v1/poster.webp","blurhash":"U8DSzP%N00t7s;-:t7IU00M_~pRjNE4oM|-:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":26012,"triangles":1268,"vertices":1021,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.55814528465271,-0.0000024758799797817976,-0.3430259023510322],"max":[0.55814528465271,0.07600956652472068,0.3430259023510322]},"sizeMeters":[1.116,0.076,0.686],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:52.095Z","updatedAt":"2026-09-08T10:51:52.472Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32020/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FallenCeilingPanelAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32020/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32020/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32020/v1/model.glb\" alt=\"Fallen Ceiling Panel (Abandoned Telephone Exchange)\" 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/32020/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/32020/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32021","slug":"abandoned-telephone-exchange-exchange-floor-base-b16e93a4","title":"Exchange Floor Base (Abandoned Telephone Exchange)","summary":"Thirteen-by-ten-metre exchange foundation with one hundred thirty individual worn ivory and stone floor tiles, full underside and narrow service-edge curbs.","description":"Thirteen-by-ten-metre exchange foundation with one hundred thirty individual worn ivory and stone floor tiles, full underside and narrow service-edge curbs. Dimensions 13.00 × 0.29 × 10.00 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Fictional decommissioned telephone exchange in dark oak, aged ivory, black steel and oxidized copper. Static mechanisms and original index marks; no operational or electrical claims. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-exchange-floor-base-b16e93a4","cdnUrl":"https://cdn.3dassets.dev/assets/32021/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-exchange-floor-base-b16e93a4","thumbnailUrl":"https://cdn.3dassets.dev/assets/32021/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32021/v1/poster.webp","blurhash":"U8BWe_%L00WUx[ofRjWB00M{~qV[D%aexuj[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":693396,"triangles":39900,"vertices":28198,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-6.5,-0.00025034518097559466,-5.000320444349498],"max":[6.5,0.29182039292507456,5.000320444349498]},"sizeMeters":[13,0.292,10.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:51:52.677Z","updatedAt":"2026-09-08T10:51:53.054Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32021/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ExchangeFloorBaseAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32021/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32021/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32021/v1/model.glb\" alt=\"Exchange Floor Base (Abandoned Telephone Exchange)\" 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/32021/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/32021/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"32025","slug":"abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","title":"Silent Operator Exchange (Abandoned Telephone Exchange)","summary":"A full roof shelters three manual console bays and a dressed supervisor desk beside a connected selector room, stocked repair desk, battery storage and routed overhead cablework. Floor-supported drops terminate each end, and a fallen panel remains clear of the front access path.","description":"A full roof shelters three manual console bays and a dressed supervisor desk beside a connected selector room, stocked repair desk, battery storage and routed overhead cablework. Floor-supported drops terminate each end, and a fallen panel remains clear of the front access path.","status":"published","url":"https://3dassets.dev/assets/abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/32025/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-telephone-exchange-silent-oper-67480b84-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/32025/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/32025/v1/poster.webp","blurhash":"UA9%-Xt7D*of9Gf6%2ay00WBRQV[~pkCIojZ","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":10967828,"triangles":613828,"vertices":479398,"meshes":195,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-6.5,-0.00025034518097559466,-5.000320444349498],"max":[6.5,3.8566597194575585,5.000320444349498]},"sizeMeters":[13,3.857,10.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":2,"publishedAt":"2026-09-08T10:51:57.587Z","updatedAt":"2026-09-08T16:10:26.684Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/32025/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SilentOperatorExchangeAbandonedTelephoneExchange(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/32025/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/32025/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/32025/v1/model.glb\" alt=\"Silent Operator Exchange (Abandoned Telephone Exchange)\" 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/32025/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/32025/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"abandoned-telephone-exchange","title":"Abandoned telephone exchange","url":"https://3dassets.dev/demos/abandoned-telephone-exchange"}}}