{"data":{"id":"64","slug":"abandoned-telephone-exchange","title":"Abandoned telephone exchange","summary":"Walk a derelict mid-century exchange built from the Abandoned Telephone Exchange pack: a glazed corridor, a switch hall of racks and distribution frames, the manual operator room, the battery plant and the repair benches, all left mid shift.","url":"https://3dassets.dev/demos/abandoned-telephone-exchange","coverUrl":"https://cdn.3dassets.dev/media/abandoned-telephone-exchange-demo.png","featured":true,"pack":{"slug":"abandoned-telephone-exchange","title":"Abandoned Telephone Exchange","url":"https://3dassets.dev/packs/abandoned-telephone-exchange","summary":"Fifty premium manual-exchange and early electromechanical telephone equipment designs with routed cablework and a furnished roofed building.","assetCount":51,"totalBytes":22297248,"starterScene":{"slug":"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","fileSize":10967828}},"placementCount":383,"assetCount":47,"spawn":{"position":[0,0,4.2],"yaw":180},"publishedAt":"2026-09-08T12:00:42.092Z","updatedAt":"2026-09-08T12:00:42.093Z","description":"A 33 by 16 metre exchange from 47 of the pack's 51 models, laid on the pack's own tiled floor bases inside three of its roofed building shells, under the hall preset with the lamps set just below the timber ceilings the shells carry.\n\nYou start in the glazed corridor along the south wall, facing a doorway through the operator partitions. Beyond it the switch hall runs 33 metres across: two back to back suites of selector racks and main distribution frames, broken by cross aisles onto each of the three rooms, with the floor trench covers and the supported overhead troughs following the same route and turning down the drop ladders at either end.\n\nStraight ahead is the operator room, closed off by four glazed partitions and the equipment room door. Six manual switchboard bays with their end panels stand against the back wall under the call indicator and subscriber jack fields, headsets, twin cord pairs and a test handset still on the shelves, the chairs pushed back at angles, and the supervisor and directory desks either side with their telephones, call logs, slip trays and book racks. The cord rails, writing shelves, service telephone and bell box run down the side walls.\n\nOff to the west is the power plant and battery room: twenty five cells in tiered rows, four charging cabinets with terminal strips on top, three ringing generators and five fuse distribution boards. To the east are the repair benches, five along the back wall with the resistance box, insulation meter, plug test block, splicing vise and stripped selector assemblies on them, a relay island behind, tool chests under component sorting drawers, and the spare handset cabinets down the wall.\n\nNothing moves. Every design in this pack is static by intent: the selectors, relays, keys, cords and doors are modelled as they were left, with no call routing, no simulation and no mechanism a rigid node transform could honestly carry. The decay is placed rather than animated, with fallen ceiling panels, mail sacks, chairs and loose paperwork scattered through the corridor, the hall and all three rooms.","scene":{"version":1,"spawn":{"position":[0,0,4.2],"yaw":180},"bounds":{"min":[-16.7,-0.4,-11.2],"max":[16.7,5,5.1]},"ground":{"style":"none"},"environment":{"preset":"hall","wallHeight":4.8,"light":"cool","lampHeight":3,"shadows":true},"placements":[{"asset":"abandoned-telephone-exchange-roofed-exchange-building-21e40607","position":[-11,-0.219,-8],"rotation":0},{"asset":"abandoned-telephone-exchange-roofed-exchange-building-21e40607","position":[0,-0.215,-8],"rotation":0},{"asset":"abandoned-telephone-exchange-roofed-exchange-building-21e40607","position":[11,-0.219,-8],"rotation":0},{"asset":"abandoned-telephone-exchange-exchange-floor-base-b16e93a4","position":[-13,-0.182,0],"rotation":0},{"asset":"abandoned-telephone-exchange-exchange-floor-base-b16e93a4","position":[0,-0.182,0],"rotation":0},{"asset":"abandoned-telephone-exchange-exchange-floor-base-b16e93a4","position":[13,-0.182,0],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[-2.35,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[-1.41,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[-0.47,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[0.47,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[1.41,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc","position":[2.35,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-switchboard-end-panel-62bcf2ae","position":[-2.895,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-switchboard-end-panel-62bcf2ae","position":[2.895,0,-10],"rotation":0},{"asset":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","position":[-4.15,2.02,-10.787],"rotation":0},{"asset":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","position":[4.15,2.02,-10.787],"rotation":0},{"asset":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","position":[-4.15,1.28,-10.788],"rotation":0},{"asset":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","position":[4.15,1.28,-10.788],"rotation":0},{"asset":"abandoned-telephone-exchange-wall-exchange-clock-48d7d029","position":[0,2.46,-10.761],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-headset-3dee2a51","position":[-2.35,0.83,-10.04],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-headset-3dee2a51","position":[0.47,0.83,-10.04],"rotation":0},{"asset":"abandoned-telephone-exchange-twin-cord-patch-pair-c3cd9bf8","position":[-1.41,0.83,-9.92],"rotation":0},{"asset":"abandoned-telephone-exchange-twin-cord-patch-pair-c3cd9bf8","position":[1.41,0.83,-9.92],"rotation":0},{"asset":"abandoned-telephone-exchange-line-test-handset-bb64c6a7","position":[2.35,0.83,-9.94],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-2.47,0,-8.85],"rotation":12},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-1.25,0,-9],"rotation":-35},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-0.59,0,-9.15],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[0.63,0,-8.85],"rotation":24},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[1.29,0,-9],"rotation":-8},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[2.51,0,-9.15],"rotation":47},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[4.2,0,-8.2],"rotation":0},{"asset":"abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","position":[3.62,0.808,-8.22],"rotation":-18},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[4.24,0.808,-8.12],"rotation":0},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[4.76,0.808,-8.26],"rotation":9},{"asset":"abandoned-telephone-exchange-plug-test-block-2a27a8bb","position":[4.7,0.808,-7.98],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[4.05,0,-7.28],"rotation":168},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[-4.2,0,-8.2],"rotation":0},{"asset":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","position":[-4.62,0.808,-8.2],"rotation":0},{"asset":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","position":[-4.02,0.808,-8.2],"rotation":0},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[-3.62,0.808,-8.14],"rotation":-14},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-4.3,0,-7.32],"rotation":190},{"asset":"abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","position":[-5.114,1,-9.6],"rotation":90},{"asset":"abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","position":[-5.234,1.05,-8.6],"rotation":90},{"asset":"abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","position":[-5.234,1.05,-7.9],"rotation":90},{"asset":"abandoned-telephone-exchange-headset-hanging-bracket-2b0f4977","position":[-5.224,1.85,-7.3],"rotation":90},{"asset":"abandoned-telephone-exchange-operator-headset-3dee2a51","position":[-5.1,1.85,-7.3],"rotation":90},{"asset":"abandoned-telephone-exchange-wall-service-telephone-0dadc98b","position":[-5.256,1.2,-6.4],"rotation":90},{"asset":"abandoned-telephone-exchange-telephone-bell-box-98147a1b","position":[-5.255,1.86,-6.4],"rotation":90},{"asset":"abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","position":[5.114,1,-9.6],"rotation":270},{"asset":"abandoned-telephone-exchange-exchange-plan-board-07adf048","position":[5.289,1.66,-6.6],"rotation":270},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-4,0,-5.3],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-2,0,-5.3],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[2,0,-5.3],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[4,0,-5.3],"rotation":0},{"asset":"abandoned-telephone-exchange-equipment-room-door-0078100b","position":[0,0,-5.3],"rotation":0},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-3.1,0,-6.5],"rotation":21},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[2.6,0,-9.4],"rotation":-37},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-4.9,0,-6.1],"rotation":40},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[-1.9,0,-6.9],"rotation":62},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[1.2,0,-7.6],"rotation":-25},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-15.8,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-14.6,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-13.4,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-12.2,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-11,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-9.8,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-8.6,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-7.4,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-6.2,0,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-15.8,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-13.4,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-12.2,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-11,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-8.6,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-7.4,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-6.2,0.459,-10.35],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-15.8,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-14.6,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-13.4,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-11,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-9.8,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-8.6,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-6.2,0,-9.6],"rotation":0},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[-15.8,0,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[-14.9,0,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[-14,0,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[-13.1,0,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-terminal-strip-5a59d234","position":[-15.8,1.325,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-terminal-strip-5a59d234","position":[-14.9,1.325,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-terminal-strip-5a59d234","position":[-14,1.325,-8.55],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[-13.1,1.325,-8.6],"rotation":0},{"asset":"abandoned-telephone-exchange-ringing-generator-223a9956","position":[-10.9,0,-8.6],"rotation":0},{"asset":"abandoned-telephone-exchange-ringing-generator-223a9956","position":[-10.1,0,-8.6],"rotation":0},{"asset":"abandoned-telephone-exchange-ringing-generator-223a9956","position":[-9.3,0,-8.6],"rotation":0},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-8.4,1.62,-10.705],"rotation":0},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-7.6,1.62,-10.705],"rotation":0},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-6.8,1.62,-10.705],"rotation":0},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-16.205,1.62,-8],"rotation":90},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-16.205,1.62,-7.2],"rotation":90},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[-8,0,-6.7],"rotation":180},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[-8,0.808,-6.7],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[-6.9,0.808,-6.62],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-8,0,-7.5],"rotation":6},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[-12.4,0,-6.5],"rotation":8},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-15.93,0,-5.9],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-6.07,0,-5.9],"rotation":0},{"asset":"abandoned-telephone-exchange-exchange-plan-board-07adf048","position":[-5.711,1.66,-7.4],"rotation":270},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-14.3,0,-6.2],"rotation":-14},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-11.4,0,-5.7],"rotation":33},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-9.4,0,-7.4],"rotation":8},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-15.4,0,-6.4],"rotation":-22},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-13.6,0,-7.6],"rotation":-48},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[6.6,0,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[8.5,0,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[10.4,0,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[12.3,0,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[14.2,0,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-resistance-test-box-aeef6874","position":[6.1,0.808,-10.22],"rotation":0},{"asset":"abandoned-telephone-exchange-insulation-test-meter-e4d96a43","position":[6.7,0.808,-10.24],"rotation":0},{"asset":"abandoned-telephone-exchange-plug-test-block-2a27a8bb","position":[7.3,0.808,-10.18],"rotation":0},{"asset":"abandoned-telephone-exchange-line-test-handset-bb64c6a7","position":[8,0.808,-10.22],"rotation":15},{"asset":"abandoned-telephone-exchange-cable-splicing-vise-25f36eaa","position":[8.9,0.808,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[9.8,0.808,-10.24],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[10.5,0.808,-10.24],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[11.2,0.808,-10.24],"rotation":0},{"asset":"abandoned-telephone-exchange-terminal-strip-5a59d234","position":[12,0.808,-10.2],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[12.6,0.808,-10.24],"rotation":0},{"asset":"abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","position":[13.4,0.808,-10.2],"rotation":22},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[14.1,0.808,-10.16],"rotation":0},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[14.7,0.808,-10.22],"rotation":-11},{"asset":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","position":[10,1.72,-10.787],"rotation":0},{"asset":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","position":[13,1.72,-10.788],"rotation":0},{"asset":"abandoned-telephone-exchange-wall-exchange-clock-48d7d029","position":[15.4,2.36,-10.761],"rotation":0},{"asset":"abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","position":[15.4,1.42,-10.734],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[7.8,0,-7.7],"rotation":180},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[9.7,0,-7.7],"rotation":180},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[11.6,0,-7.7],"rotation":180},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[8.6,0.808,-7.7],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[11.6,0.808,-7.7],"rotation":0},{"asset":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","position":[6.6,0.808,-9.92],"rotation":0},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[7.8,0,-8.9],"rotation":172},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[10,0,-9],"rotation":155},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[12.4,0,-8.8],"rotation":-168},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[14.6,0,-6.6],"rotation":41},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[6.6,0,-6.2],"rotation":0},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[7.7,0,-6.2],"rotation":0},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[8.8,0,-6.2],"rotation":0},{"asset":"abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","position":[6.6,0.765,-6.2],"rotation":0},{"asset":"abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","position":[8.8,0.765,-6.2],"rotation":0},{"asset":"abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","position":[16.119,0,-9.4],"rotation":270},{"asset":"abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","position":[16.119,0,-8],"rotation":270},{"asset":"abandoned-telephone-exchange-exchange-plan-board-07adf048","position":[5.711,1.66,-9],"rotation":90},{"asset":"abandoned-telephone-exchange-wall-service-telephone-0dadc98b","position":[5.744,1.2,-7.6],"rotation":90},{"asset":"abandoned-telephone-exchange-telephone-bell-box-98147a1b","position":[5.745,1.86,-7.6],"rotation":90},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[14.4,0,-8.6],"rotation":27},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[10.8,0,-6.9],"rotation":-19},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[15.3,0,-9.4],"rotation":12},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[6.07,0,-5.45],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[-8.02,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[-6.78,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[6.78,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[8.02,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-15.65,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-14.2,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-12.75,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[12.75,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[14.2,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[15.65,0,-3.2],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-8.85,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-7.4,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-5.95,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[5.95,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[7.4,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[8.85,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-15.65,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-14.2,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-12.75,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[12.75,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[14.2,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[15.65,0,-2.5],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[-0.62,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2","position":[0.62,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-9.325,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-7.875,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[7.875,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[9.325,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-15.65,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-14.2,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-12.75,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[12.75,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[14.2,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[15.65,0,-0.4],"rotation":180},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-10.075,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-8.625,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-7.175,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-5.725,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[5.725,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[7.175,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[8.625,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[10.075,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-15.325,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[-13.875,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[13.875,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-main-distribution-frame-4fb8ced9","position":[15.325,0,0.3],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[-5.4,0,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[-5.4,0.808,-1.85],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[-5.4,0.808,-1.05],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[5.4,0,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[5.4,0.808,-1.85],"rotation":0},{"asset":"abandoned-telephone-exchange-selector-switch-assembly-e1b92e40","position":[5.4,0.808,-1.05],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[-10.9,0,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[-10.9,0.808,-1.85],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[10.9,0,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-relay-bank-e0fe853e","position":[10.9,0.808,-1.85],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-15.6,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-13.65,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-11.7,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-9.75,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-7.8,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-5.85,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-3.9,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-1.95,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[0,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[1.95,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[3.9,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[5.85,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[7.8,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[9.75,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[11.7,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[13.65,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[15.6,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-5.2,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-3.9,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-2.6,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-1.3,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[0,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[1.3,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[2.6,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[3.9,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[5.2,0,1.35],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-14,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-12,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-10,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-8,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-6,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-4,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-2,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[0,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[2,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[4,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[6,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[8,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[10,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[12,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[14,2.627,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-14,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-12,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-10,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-8,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-6,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-4,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[-2,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[0,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[2,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[4,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[6,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[8,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[10,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[12,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a","position":[14,2.627,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-trough-corner-4299e114","position":[-15.61,2.627,-4.25],"rotation":90},{"asset":"abandoned-telephone-exchange-cable-trough-corner-4299e114","position":[-15.61,2.627,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-cable-trough-corner-4299e114","position":[15.61,2.627,-4.25],"rotation":90},{"asset":"abandoned-telephone-exchange-cable-trough-corner-4299e114","position":[15.61,2.627,-1.45],"rotation":90},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-15.61,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-9.6,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-3.1,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[3.1,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[9.6,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[15.61,0,-4.25],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[-12.4,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[0,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-cable-drop-ladder-d7c8a571","position":[12.4,0,-1.45],"rotation":0},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[-14,0,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","position":[-14.4,0.808,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[-13.6,0.808,1.86],"rotation":17},{"asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9","position":[14,0,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[13.6,0.808,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-rotary-desk-telephone-cdee2381","position":[14.4,0.808,1.88],"rotation":-12},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[-11.6,0,1.9],"rotation":-6},{"asset":"abandoned-telephone-exchange-component-sorting-drawers-d35f7b70","position":[-11.6,0.765,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[11.6,0,1.9],"rotation":5},{"asset":"abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","position":[-8.6,0,2],"rotation":4},{"asset":"abandoned-telephone-exchange-spare-handset-cabinet-b49b93de","position":[8.6,0,2],"rotation":-3},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[-6.2,0,2],"rotation":0},{"asset":"abandoned-telephone-exchange-charging-cabinet-166b6a9c","position":[6.2,0,2],"rotation":0},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[-4.6,0,2],"rotation":12},{"asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656","position":[4.6,0,2],"rotation":-9},{"asset":"abandoned-telephone-exchange-ringing-generator-223a9956","position":[-3.4,0,2.05],"rotation":24},{"asset":"abandoned-telephone-exchange-ringing-generator-223a9956","position":[3.4,0,2.05],"rotation":-16},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-15.4,0,-4.4],"rotation":33},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-6.9,0,0.9],"rotation":-21},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-1.6,0,-4.3],"rotation":14},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[4.4,0,1],"rotation":46},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[10.2,0,-4.4],"rotation":-8},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[15.4,0,0.8],"rotation":25},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-13.2,0,-4.5],"rotation":62},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-2.4,0,1.7],"rotation":-34},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[7.6,0,-4.5],"rotation":118},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[12.8,0,1.6],"rotation":-71},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-12.1,0,-1],"rotation":96},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-4.9,0,0.9],"rotation":-58},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[1.7,0,-4.4],"rotation":133},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[9.1,0,0.9],"rotation":-105},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[14.6,0,-4.4],"rotation":71},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[-10.3,0,1],"rotation":41},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[-0.9,0,1.1],"rotation":-22},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[8,0,1.1],"rotation":66},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[-7.7,0,-4.4],"rotation":-14},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[2.9,0,1],"rotation":52},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[-9.9,0,-4.5],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[0.6,0,1.9],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[11.9,0,-4.5],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-16,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-14,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-12,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-8,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-6,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-4,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[-2,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[2,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[4,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[6,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[8,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[12,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[14,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702","position":[16,0,2.8],"rotation":0},{"asset":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","position":[-14.2,1.86,4.957],"rotation":180},{"asset":"abandoned-telephone-exchange-call-indicator-panel-0e60b24d","position":[14.2,1.86,4.957],"rotation":180},{"asset":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","position":[-6.9,1.32,4.958],"rotation":180},{"asset":"abandoned-telephone-exchange-subscriber-jack-panel-4262f872","position":[6.9,1.32,4.958],"rotation":180},{"asset":"abandoned-telephone-exchange-wall-exchange-clock-48d7d029","position":[0,2.3,4.931],"rotation":180},{"asset":"abandoned-telephone-exchange-exchange-plan-board-07adf048","position":[-3.4,1.66,4.959],"rotation":180},{"asset":"abandoned-telephone-exchange-exchange-plan-board-07adf048","position":[3.4,1.66,4.959],"rotation":180},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[-11.4,1.5,4.875],"rotation":180},{"asset":"abandoned-telephone-exchange-fuse-distribution-board-a9865666","position":[11.4,1.5,4.875],"rotation":180},{"asset":"abandoned-telephone-exchange-wall-service-telephone-0dadc98b","position":[-4.9,1.2,4.927],"rotation":180},{"asset":"abandoned-telephone-exchange-telephone-bell-box-98147a1b","position":[-4.9,1.86,4.925],"rotation":180},{"asset":"abandoned-telephone-exchange-wall-service-telephone-0dadc98b","position":[4.9,1.2,4.927],"rotation":180},{"asset":"abandoned-telephone-exchange-telephone-bell-box-98147a1b","position":[4.9,1.86,4.925],"rotation":180},{"asset":"abandoned-telephone-exchange-headset-hanging-bracket-2b0f4977","position":[-8.6,1.8,4.894],"rotation":180},{"asset":"abandoned-telephone-exchange-operator-headset-3dee2a51","position":[-8.6,1.8,4.76],"rotation":180},{"asset":"abandoned-telephone-exchange-patch-cord-storage-rail-007d03f4","position":[8.6,1.4,4.904],"rotation":180},{"asset":"abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","position":[-12.4,1,4.784],"rotation":180},{"asset":"abandoned-telephone-exchange-operator-writing-shelf-8f5b29f9","position":[12.4,1,4.784],"rotation":180},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-15.2,0,3.9],"rotation":27},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-9.3,0,4.4],"rotation":-41},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[-3.9,0,3.8],"rotation":63},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[5.6,0,4.4],"rotation":-18},{"asset":"abandoned-telephone-exchange-fallen-ceiling-panel-d672343a","position":[12.1,0,3.9],"rotation":84},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-13.6,0,4.3],"rotation":51},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[-5.2,0,4.2],"rotation":-66},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[7.9,0,4.3],"rotation":22},{"asset":"abandoned-telephone-exchange-abandoned-mail-sack-04e426c8","position":[14.7,0,4.2],"rotation":-95},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-11.9,0,4],"rotation":128},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[-6.6,0,3.9],"rotation":-22},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[6.9,0,4],"rotation":161},{"asset":"abandoned-telephone-exchange-operator-chair-bc2cb2f2","position":[13.3,0,4.4],"rotation":-47},{"asset":"abandoned-telephone-exchange-maintenance-tool-chest-fae767a4","position":[-2.6,0,4.3],"rotation":12},{"asset":"abandoned-telephone-exchange-directory-book-rack-880a1ce8","position":[2.6,0,4.3],"rotation":-28},{"asset":"abandoned-telephone-exchange-message-slip-tray-4789cfd4","position":[3.6,0,4],"rotation":44},{"asset":"abandoned-telephone-exchange-call-log-register-eec3dd31","position":[-4.6,0,3.9],"rotation":-13},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[10.4,0,4.2],"rotation":0},{"asset":"abandoned-telephone-exchange-jumper-wire-spool-1c0c11fc","position":[-10.4,0,4.2],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-13,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-9.75,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-6.5,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[-3.25,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[0,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[3.25,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[6.5,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[9.75,0,3.35],"rotation":0},{"asset":"abandoned-telephone-exchange-floor-cable-trench-cover-3efbdd0b","position":[13,0,3.35],"rotation":0}],"points":[{"position":[0,0,3.6],"title":"The corridor","text":"A glazed run of operator partitions walls the corridor off the switch hall, with three doorways cut through it. Ceiling panels, mail sacks and chairs lie where they came down.","asset":"abandoned-telephone-exchange-glazed-operator-partition-cff3e702"},{"position":[0,0,-1.45],"title":"The switch hall","text":"Two back to back suites of selector racks and distribution frames run the length of the hall, split by cross aisles onto each room. The trench covers follow the cable route under your feet.","asset":"abandoned-telephone-exchange-selector-equipment-rack-63a91af2"},{"position":[0,0,-3.7],"title":"The cable runs","text":"Supported troughs carry the overhead route above the aisle and turn down the drop ladders at each end, terminating on the frames below.","asset":"abandoned-telephone-exchange-overhead-cable-trough-ce23c78a"},{"position":[0,0,-8.9],"title":"The operator room","text":"Six manual switchboard bays behind the glazed partition and the equipment room door, with the indicator and jack fields above them, headsets and patch cords still on the shelves and the chairs pushed back.","asset":"abandoned-telephone-exchange-manual-switchboard-bay-4f0824cc"},{"position":[3.9,0,-8],"title":"The supervisor desk","text":"The rotary telephone, the call log and a slip tray sit where the last shift left them, with the plan board and jack field on the wall beside.","asset":"abandoned-telephone-exchange-supervisor-desk-50df53f9"},{"position":[-11,0,-9],"title":"The power plant and battery room","text":"Twenty five cells in tiered rows against the back wall, four charging cabinets and three ringing generators along the front, and the fuse boards above and beside them.","asset":"abandoned-telephone-exchange-battery-cell-bank-d25c2656"},{"position":[11,0,-8.9],"title":"The test benches","text":"Resistance and insulation meters, a plug test block, a splicing vise and stripped selectors across five benches, with the tool chests, sorting drawers and spare handset cabinets behind them.","asset":"abandoned-telephone-exchange-resistance-test-box-aeef6874"}],"poster":{"position":[-0.1,1.7,3.6],"lookAt":[-0.6,0.9,-0.4]}},"bounds":{"min":[-16.7,-0.4,-11.2],"max":[16.7,5,5.1]},"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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);"}}]}}