{"data":{"id":296,"slug":"tv-studio-and-broadcast-gallery","title":"TV Studio and Broadcast Gallery","summary":"Realistic television studio models: a blue cyclorama and set flats on a modular floor, a news desk, chat show seating, cameras on pedestals, tripods and a jib, a lighting grid with fresnels and softboxes, and a production gallery of desks, mixers and monitor walls.","description":"A modern realistic television studio library for building a studio floor, a production gallery and the back of house behind them. The floor is modular: 2 m tiles plain and marked up for a shoot, 2.4 m cyclorama bays 4 m tall with a coved base and a quarter turn corner on a 1.2 m radius, 1.2 m timber framed set flats plain, with a doorway and skinned in chroma green, and riser platforms to stand a set on. The sets are modelled as sets: a bowed news desk with a lit front panel, a monitor let into the top and desk microphones, a two seat chat show sofa with matching interview chairs, a presentation screen on a braced stand, floor monitors, scenery braces on cast stage weights, mark spikes and camera tape. The cameras are a pedestal on a three wheel dolly, the same pedestal with an autocue on the lens, a shoulder camera on a tripod and a 3.1 m jib arm with the head slung under it. Over them, 2 m lighting grid bays with grating walkways carrying fresnels on hook clamps, a barn door spot, softbox panels, cable drapes and a sound boom. Behind the glazed partition, a gallery of 1.8 m desk bays with monitor stacks, a vision mixer, a sixteen channel sound desk, a talkback panel, monitor walls, operator chairs and an equipment rack, and beyond that a makeup station with a lit mirror, a wardrobe rail, a green room sofa and table, prop store shelving and a studio door with a soundlock. Barn doors, camera heads, the jib arm, the boom, autocue and monitor arms, chair seats, rack and desk drawers, the cable drum and every door and soundlock leaf are named nodes on their own pivots and ship rigid open, close, pan, tilt, spin and wheel-roll clips: node transforms only, no skinning. Cables, cable drapes, sound blankets, garment covers, softbox diffusion and light beams stay static, because a flexible run is not reachable with a rigid node transform and a light cone is a shader rather than geometry. Screen faces are plain lit panels with a status strip, never readable pictures, and nothing in the pack carries a broadcaster, programme or equipment brand. Every file is self-contained CC0 geometry with no collision or navigation data.","url":"https://3dassets.dev/packs/tv-studio-and-broadcast-gallery","coverUrl":"https://cdn.3dassets.dev/assets/35527/v1/poster.webp","assetCount":47,"aiGenerated":true,"aiGeneratedAssetCount":47,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":5553344,"totalTriangles":131084,"starterScene":{"id":"35527","slug":"tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","title":"Studio Floor and Production Gallery (TV Studio and Broadcast Gallery)","summary":"A working television studio built from the pack's own modules on its own 2 m floor tiles, 14 by 12 m: a blue cyclorama turning a corner at the far left, a news desk on a two module riser against a set wall at the right with a green screen run down the side, a chat show sofa...","description":"A working television studio built from the pack's own modules on its own 2 m floor tiles, 14 by 12 m: a blue cyclorama turning a corner at the far left, a news desk on a two module riser against a set wall at the right with a green screen run down the side, a chat show sofa and two interview chairs on marked up floor between them, and a weather screen against the cyc. Overhead, eleven bays of lighting grid with walkways carry fresnels, softboxes and a barn door spot. On the floor, two pedestal cameras, one of them with an autocue, a shoulder camera on a tripod, a jib arm, a sound boom, floor monitors, cable ramps, sandbags, braces and mark spikes. Behind a glazed partition with a door in it, the production gallery: three bays of desk with monitor stacks, a vision mixer, a sound desk and a talkback panel, operator chairs, two monitor walls and an equipment rack. Through a run of set flats and a soundlock door under the on air light, the back of house: a lit makeup station, a wardrobe rail, the green room sofa and table, and the prop store shelving.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/35527/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/35527/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35527/v1/poster.webp","blurhash":"U4A^j{~W00Hq5S%g#QIA009s?wT1~7D$Y7tl","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":2655376,"triangles":63902,"vertices":138784,"meshes":243,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-7.341934992957301,-0.000058320792916065,-5],"max":[7,5.320025164657296,7.217444106719304]},"sizeMeters":[14.342,5.32,12.217],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:37.295Z","updatedAt":"2026-09-11T15:30:37.396Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35527/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioFloorAndProductionGalleryTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35527/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35527/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35527/v1/model.glb\" alt=\"Studio Floor and Production Gallery (TV Studio and Broadcast Gallery)\" 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/35527/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/35527/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"35482","slug":"tv-studio-and-broadcast-gallery-studio-floor-tile-51827bac","title":"Studio Floor Tile (TV Studio and Broadcast Gallery)","summary":"A 2 m square studio floor tile, 40 mm thick: a grey painted deck on a steel sub-frame with a recessed alloy cable trap lid in one corner. Ports at the four edge midpoints tile a studio floor of any size in both directions.","description":"A 2 m square studio floor tile, 40 mm thick: a grey painted deck on a steel sub-frame with a recessed alloy cable trap lid in one corner. Ports at the four edge midpoints tile a studio floor of any size in both directions. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-floor-tile-51827bac","cdnUrl":"https://cdn.3dassets.dev/assets/35482/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-floor-tile-51827bac","thumbnailUrl":"https://cdn.3dassets.dev/assets/35482/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35482/v1/poster.webp","blurhash":"U5AwF[xv00t6%MfRaxj[00M{~qRj9Fj@WBWB","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10432,"triangles":192,"vertices":436,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000058320792916065,-1],"max":[1,0.04400912459958932,1]},"sizeMeters":[2,0.044,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:02.195Z","updatedAt":"2026-09-11T15:30:02.302Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35482/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioFloorTileTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35482/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35482/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35482/v1/model.glb\" alt=\"Studio Floor Tile (TV Studio and Broadcast Gallery)\" 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/35482/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/35482/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35483","slug":"tv-studio-and-broadcast-gallery-studio-floor-tile-mark-d2ee72e7","title":"Studio Floor Tile, Marked Up (TV Studio and Broadcast Gallery)","summary":"The same 2 m floor tile with the floor marked up for a shoot: a taped cross on a presenter position, a long camera tape line and three white mark spikes for a second position. The tape is a millimetre proud of the deck.","description":"The same 2 m floor tile with the floor marked up for a shoot: a taped cross on a presenter position, a long camera tape line and three white mark spikes for a second position. The tape is a millimetre proud of the deck. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-floor-tile-mark-d2ee72e7","cdnUrl":"https://cdn.3dassets.dev/assets/35483/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-floor-tile-mark-d2ee72e7","thumbnailUrl":"https://cdn.3dassets.dev/assets/35483/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35483/v1/poster.webp","blurhash":"U5AwI}xv00t6%MfRWCj[00M{~qRj9Fj@aeWB","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23732,"triangles":576,"vertices":1318,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000058320792916065,-1],"max":[1,0.04400912459958932,1]},"sizeMeters":[2,0.044,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:02.279Z","updatedAt":"2026-09-11T15:30:02.376Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35483/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioFloorTileMarkedUpTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35483/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35483/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35483/v1/model.glb\" alt=\"Studio Floor Tile, Marked Up (TV Studio and Broadcast Gallery)\" 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/35483/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/35483/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35481","slug":"tv-studio-and-broadcast-gallery-cyclorama-straight-sec-ea75dfa0","title":"Cyclorama Straight Section (TV Studio and Broadcast Gallery)","summary":"A 2.4 m straight cyclorama bay 4 m tall: a blue painted shell with a 600 mm coved base running the wall into the floor, a steel back frame with raking stays and an alloy toe rail. Its cyc-left and cyc-right ports butt bay to bay.","description":"A 2.4 m straight cyclorama bay 4 m tall: a blue painted shell with a 600 mm coved base running the wall into the floor, a steel back frame with raking stays and an alloy toe rail. Its cyc-left and cyc-right ports butt bay to bay. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-cyclorama-straight-sec-ea75dfa0","cdnUrl":"https://cdn.3dassets.dev/assets/35481/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-cyclorama-straight-sec-ea75dfa0","thumbnailUrl":"https://cdn.3dassets.dev/assets/35481/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35481/v1/poster.webp","blurhash":"U8Ad=#%i00DgIAtRx]McD4RiyZtSWAtRozMx","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25792,"triangles":548,"vertices":1226,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.201200008392334,0,-0.7419349929573009],"max":[1.2001098666341137,4.0011528234157,0.6350702425720165]},"sizeMeters":[2.401,4.001,1.377],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:02.179Z","updatedAt":"2026-09-11T15:30:02.300Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35481/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CycloramaStraightSectionTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35481/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35481/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35481/v1/model.glb\" alt=\"Cyclorama Straight Section (TV Studio and Broadcast Gallery)\" 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/35481/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/35481/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35484","slug":"tv-studio-and-broadcast-gallery-cyclorama-corner-secti-766d1927","title":"Cyclorama Corner Section (TV Studio and Broadcast Gallery)","summary":"A quarter turn cyclorama corner on a 1.2 m radius, 4 m tall, with the same 600 mm cove carried round the turn so floor, wall and corner meet in one surface. Its cyc-a and cyc-b ports sit on the two tangents, 1.2 m from the turn centre.","description":"A quarter turn cyclorama corner on a 1.2 m radius, 4 m tall, with the same 600 mm cove carried round the turn so floor, wall and corner meet in one surface. Its cyc-a and cyc-b ports sit on the two tangents, 1.2 m from the turn centre. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-cyclorama-corner-secti-766d1927","cdnUrl":"https://cdn.3dassets.dev/assets/35484/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-cyclorama-corner-secti-766d1927","thumbnailUrl":"https://cdn.3dassets.dev/assets/35484/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35484/v1/poster.webp","blurhash":"U39*u[XV00-f?KjJImXP4TogyZIU$%ogIoNF","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30652,"triangles":684,"vertices":1479,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.5998832881775806,0,-1.5998832881775806],"max":[0.04988326508078089,4,0.04988326508078089]},"sizeMeters":[1.65,4,1.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:02.436Z","updatedAt":"2026-09-11T15:30:02.538Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35484/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CycloramaCornerSectionTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35484/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35484/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35484/v1/model.glb\" alt=\"Cyclorama Corner Section (TV Studio and Broadcast Gallery)\" 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/35484/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/35484/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35486","slug":"tv-studio-and-broadcast-gallery-set-flat-8389c41a","title":"Set Flat (TV Studio and Broadcast Gallery)","summary":"A 1.2 by 2.7 m timber framed set flat: a studded frame open at the back the way a real flat is, a painted skin on its face and a cream dado rail and skirting. Its flat-left and flat-right ports at half height butt flat to flat, so a run of them builds a set wall.","description":"A 1.2 by 2.7 m timber framed set flat: a studded frame open at the back the way a real flat is, a painted skin on its face and a cream dado rail and skirting. Its flat-left and flat-right ports at half height butt flat to flat, so a run of them builds a set wall. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-set-flat-8389c41a","cdnUrl":"https://cdn.3dassets.dev/assets/35486/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-set-flat-8389c41a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35486/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35486/v1/poster.webp","blurhash":"U3CiaI}]000Jz.$$Te9x0TW-^ar_-U%1I;E1","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23416,"triangles":512,"vertices":1146,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999130328428387,0,-0.04493199075323296],"max":[0.5999130328428387,2.700000047683716,0.05097037180679802]},"sizeMeters":[1.2,2.7,0.096],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:05.051Z","updatedAt":"2026-09-11T15:30:05.172Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35486/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SetFlatTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35486/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35486/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35486/v1/model.glb\" alt=\"Set Flat (TV Studio and Broadcast Gallery)\" 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/35486/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/35486/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35485","slug":"tv-studio-and-broadcast-gallery-set-flat-with-doorway-be2892c8","title":"Set Flat with a Doorway (TV Studio and Broadcast Gallery)","summary":"The same 1.2 by 2.7 m set flat with a 780 by 2100 mm doorway in it: a lined opening and a leaf on three hinges with a lever handle and an inset panel. It carries the same flat-left and flat-right ports.","description":"The same 1.2 by 2.7 m set flat with a 780 by 2100 mm doorway in it: a lined opening and a leaf on three hinges with a lever handle and an inset panel. It carries the same flat-left and flat-right ports. The leaf swings on its hinge stile; the frame and the handle mechanism are fixed. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-set-flat-with-doorway-be2892c8","cdnUrl":"https://cdn.3dassets.dev/assets/35485/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-set-flat-with-doorway-be2892c8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35485/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35485/v1/poster.webp","blurhash":"U2CF@hBT00{f;J%2BE9a01Ri~U-;_N%L4n4o","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59188,"triangles":1312,"vertices":2886,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999130328428387,0,-0.05000202803679451],"max":[0.5999130328428387,2.700000047683716,0.10698698233703563]},"sizeMeters":[1.2,2.7,0.157],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:05.035Z","updatedAt":"2026-09-11T15:30:05.150Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35485/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SetFlatWithADoorwayTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35485/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35485/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35485/v1/model.glb\" alt=\"Set Flat with a Doorway (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35485/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35485/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35487","slug":"tv-studio-and-broadcast-gallery-green-screen-flat-45bcf26d","title":"Green Screen Flat (TV Studio and Broadcast Gallery)","summary":"The same 1.2 by 2.7 m flat skinned in chroma key green, for a virtual set wall. A run of them gives a seamless green wall at the pack's own flat grid.","description":"The same 1.2 by 2.7 m flat skinned in chroma key green, for a virtual set wall. A run of them gives a seamless green wall at the pack's own flat grid. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-green-screen-flat-45bcf26d","cdnUrl":"https://cdn.3dassets.dev/assets/35487/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-green-screen-flat-45bcf26d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35487/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35487/v1/poster.webp","blurhash":"U5ABa$%}008wXdo{nVQ:qJaLUWkp%1t7NHMy","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24292,"triangles":512,"vertices":1146,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999130328428387,0,-0.04499359270442366],"max":[0.5999130328428387,2.700000047683716,0.05097037180679802]},"sizeMeters":[1.2,2.7,0.096],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:05.116Z","updatedAt":"2026-09-11T15:30:05.293Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35487/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GreenScreenFlatTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35487/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35487/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35487/v1/model.glb\" alt=\"Green Screen Flat (TV Studio and Broadcast Gallery)\" 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/35487/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/35487/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35488","slug":"tv-studio-and-broadcast-gallery-news-desk-with-monitor-f724e4b5","title":"News Desk with a Monitor Inset (TV Studio and Broadcast Gallery)","summary":"A 2.6 m news desk with a bowed front: a dark body, a blue lit front panel behind an alloy toe rail, a timber top, a monitor let into it on the reading side, two desk microphones and a stack of scripts. It stands 760 mm high.","description":"A 2.6 m news desk with a bowed front: a dark body, a blue lit front panel behind an alloy toe rail, a timber top, a monitor let into it on the reading side, two desk microphones and a stack of scripts. It stands 760 mm high. The microphones and the monitor are fixed; the desk carries no drawer. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-news-desk-with-monitor-f724e4b5","cdnUrl":"https://cdn.3dassets.dev/assets/35488/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-news-desk-with-monitor-f724e4b5","thumbnailUrl":"https://cdn.3dassets.dev/assets/35488/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35488/v1/poster.webp","blurhash":"U5B:jR.T00Q+~4^%SiD*00#O~WES0V9vwHxW","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41048,"triangles":872,"vertices":1871,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-1.3300000429153442,0.00006300207678477943,-0.5549818593945587],"max":[1.3300000429153442,1.134785338381763,0.5839656234984922]},"sizeMeters":[2.66,1.135,1.139],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:05.391Z","updatedAt":"2026-09-11T15:30:05.502Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35488/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NewsDeskWithAMonitorInsetTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35488/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35488/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35488/v1/model.glb\" alt=\"News Desk with a Monitor Inset (TV Studio and Broadcast Gallery)\" 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/35488/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/35488/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35490","slug":"tv-studio-and-broadcast-gallery-chat-show-sofa-dc53fb17","title":"Chat Show Sofa (TV Studio and Broadcast Gallery)","summary":"A two seat chat show sofa, 2 m wide: a timber framed body on alloy feet with a crowned seat cushion, a raked back pad and padded arms, in teal upholstery. It sits 420 mm to the seat and 1.0 m to the top of the back.","description":"A two seat chat show sofa, 2 m wide: a timber framed body on alloy feet with a crowned seat cushion, a raked back pad and padded arms, in teal upholstery. It sits 420 mm to the seat and 1.0 m to the top of the back. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-chat-show-sofa-dc53fb17","cdnUrl":"https://cdn.3dassets.dev/assets/35490/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-chat-show-sofa-dc53fb17","thumbnailUrl":"https://cdn.3dassets.dev/assets/35490/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35490/v1/poster.webp","blurhash":"U7DT34tm00$%*0.7iwIU00NGGvM{m6V[E*D+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38544,"triangles":880,"vertices":1906,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000050660795540551085,-0.5083147710833336],"max":[1,0.9206325350332178,0.4300073212656761]},"sizeMeters":[2,0.921,0.938],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:07.973Z","updatedAt":"2026-09-11T15:30:08.091Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35490/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChatShowSofaTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35490/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35490/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35490/v1/model.glb\" alt=\"Chat Show Sofa (TV Studio and Broadcast Gallery)\" 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/35490/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/35490/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35489","slug":"tv-studio-and-broadcast-gallery-interview-chair-1d87fb3f","title":"Interview Chair (TV Studio and Broadcast Gallery)","summary":"A single interview chair on the same timber frame and alloy feet as the sofa, 680 mm wide with a crowned seat, a raked back pad and padded arms. Two of them and the sofa make the usual chat show triangle.","description":"A single interview chair on the same timber frame and alloy feet as the sofa, 680 mm wide with a crowned seat, a raked back pad and padded arms. Two of them and the sofa make the usual chat show triangle. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-interview-chair-1d87fb3f","cdnUrl":"https://cdn.3dassets.dev/assets/35489/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-interview-chair-1d87fb3f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35489/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35489/v1/poster.webp","blurhash":"U7C?cP%g00$$?^9aH??a009Ho}%f[mxsF|Z~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38620,"triangles":880,"vertices":1906,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3400200106891155,-0.000002491762174636203,-0.41547526108231125],"max":[0.3400200106891155,1.0102109909057617,0.32998509394135056]},"sizeMeters":[0.68,1.01,0.745],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:07.955Z","updatedAt":"2026-09-11T15:30:08.072Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35489/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InterviewChairTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35489/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35489/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35489/v1/model.glb\" alt=\"Interview Chair (TV Studio and Broadcast Gallery)\" 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/35489/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/35489/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35491","slug":"tv-studio-and-broadcast-gallery-weather-presentation-s-700e8f05","title":"Weather Presentation Screen (TV Studio and Broadcast Gallery)","summary":"A 2.1 by 1.3 m presentation display on a braced floor stand: a bezelled panel with an abstract lit face and a status strip, raked legs on a cross foot with rubber pads and a cable tidy down one leg. The screen centre sits at 1.2 m, which is where a presenter stands beside it.","description":"A 2.1 by 1.3 m presentation display on a braced floor stand: a bezelled panel with an abstract lit face and a status strip, raked legs on a cross foot with rubber pads and a cable tidy down one leg. The screen centre sits at 1.2 m, which is where a presenter stands beside it. The picture is a plain lit panel on purpose: readable screen content would date the model and imply a broadcaster that does not exist. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-weather-presentation-s-700e8f05","cdnUrl":"https://cdn.3dassets.dev/assets/35491/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-weather-presentation-s-700e8f05","thumbnailUrl":"https://cdn.3dassets.dev/assets/35491/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35491/v1/poster.webp","blurhash":"U57UxQ.900D#K-yEvyI84TIW.T-oqsw[Y7I[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":34516,"triangles":776,"vertices":1627,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.0499999523162842,-0.00002664976656696627,-0.7299611320103546],"max":[1.0499999523162842,2.440025066035702,0.16996111472500763]},"sizeMeters":[2.1,2.44,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:08.141Z","updatedAt":"2026-09-11T15:30:08.253Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35491/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeatherPresentationScreenTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35491/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35491/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35491/v1/model.glb\" alt=\"Weather Presentation Screen (TV Studio and Broadcast Gallery)\" 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/35491/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/35491/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35492","slug":"tv-studio-and-broadcast-gallery-riser-platform-1a24d3e0","title":"Riser Platform (TV Studio and Broadcast Gallery)","summary":"A 2 by 1.2 m riser deck at 300 mm: a grey topped platform on folding alloy legs with raking braces, a teal skirt along the camera side and an amber grab rail at the back. Two of them side by side carry a news desk set.","description":"A 2 by 1.2 m riser deck at 300 mm: a grey topped platform on folding alloy legs with raking braces, a teal skirt along the camera side and an amber grab rail at the back. Two of them side by side carry a news desk set. The legs are modelled folded down; they do not fold in the file. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-riser-platform-1a24d3e0","cdnUrl":"https://cdn.3dassets.dev/assets/35492/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-riser-platform-1a24d3e0","thumbnailUrl":"https://cdn.3dassets.dev/assets/35492/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35492/v1/poster.webp","blurhash":"U5AAwB.m00Mx~C%MNaIo00Q,~qR*00E1#-wf","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":29160,"triangles":672,"vertices":1513,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.00003769067615325139,-0.6000549333170568],"max":[1,0.3079862964416324,0.6000549333170568]},"sizeMeters":[2,0.308,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:08.274Z","updatedAt":"2026-09-11T15:30:08.471Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35492/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RiserPlatformTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35492/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35492/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35492/v1/model.glb\" alt=\"Riser Platform (TV Studio and Broadcast Gallery)\" 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/35492/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/35492/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35494","slug":"tv-studio-and-broadcast-gallery-floor-monitor-f6147190","title":"Studio Floor Monitor (TV Studio and Broadcast Gallery)","summary":"A 720 mm studio floor monitor on a raked wedge base: a bezelled panel tipped back 16 degrees so a presenter reads it from standing height, on a weighted foot with an amber trim band and rubber pads.","description":"A 720 mm studio floor monitor on a raked wedge base: a bezelled panel tipped back 16 degrees so a presenter reads it from standing height, on a weighted foot with an amber trim band and rubber pads. The tilt is modelled; the panel does not move on its base. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-floor-monitor-f6147190","cdnUrl":"https://cdn.3dassets.dev/assets/35494/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-floor-monitor-f6147190","thumbnailUrl":"https://cdn.3dassets.dev/assets/35494/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35494/v1/poster.webp","blurhash":"U69tij?H00M|6pS*#4RM00IuyFnf}4-UX;NL","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24860,"triangles":496,"vertices":1087,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.41999998688697815,0.000005371534616681328,-0.23002776466181554],"max":[0.41999998688697815,0.7339779919103595,0.23002776466181554]},"sizeMeters":[0.84,0.734,0.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:10.889Z","updatedAt":"2026-09-11T15:30:11.080Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35494/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioFloorMonitorTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35494/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35494/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35494/v1/model.glb\" alt=\"Studio Floor Monitor (TV Studio and Broadcast Gallery)\" 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/35494/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/35494/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35493","slug":"tv-studio-and-broadcast-gallery-scenery-brace-and-weig-9e0bb91c","title":"Scenery Brace and Stage Weight (TV Studio and Broadcast Gallery)","summary":"A telescopic scenery brace on a 400 mm cast stage weight: a slotted iron plate with a carrying handle and an amber edge band, and an alloy brace raking up 1.35 m with its clutch collar and the shoe that screws to the back of a flat. This is what holds a set flat upright.","description":"A telescopic scenery brace on a 400 mm cast stage weight: a slotted iron plate with a carrying handle and an amber edge band, and an alloy brace raking up 1.35 m with its clutch collar and the shoe that screws to the back of a flat. This is what holds a set flat upright. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-scenery-brace-and-weig-9e0bb91c","cdnUrl":"https://cdn.3dassets.dev/assets/35493/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-scenery-brace-and-weig-9e0bb91c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35493/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35493/v1/poster.webp","blurhash":"U55=2{xu00IUawD%RQ_4WYWVxtxaoft7ofM_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25908,"triangles":556,"vertices":1176,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2200126241240477,0,-1.0133272528878998],"max":[0.2200126241240477,1.387748122215271,0.12999664490105856]},"sizeMeters":[0.44,1.388,1.143],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:10.788Z","updatedAt":"2026-09-11T15:30:10.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35493/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneryBraceAndStageWeightTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35493/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35493/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35493/v1/model.glb\" alt=\"Scenery Brace and Stage Weight (TV Studio and Broadcast Gallery)\" 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/35493/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/35493/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35495","slug":"tv-studio-and-broadcast-gallery-mark-spikes-and-tape-1a84ca0f","title":"Mark Spikes and Gaffer Tape (TV Studio and Broadcast Gallery)","summary":"A floor dressing group: two rolls of amber camera tape stood on end, a roll of white tape on its side, a taped presenter mark and a spike line on the floor, and a marker pen. The tape is 96 mm across and sits a couple of millimetres proud of the deck.","description":"A floor dressing group: two rolls of amber camera tape stood on end, a roll of white tape on its side, a taped presenter mark and a spike line on the floor, and a marker pen. The tape is 96 mm across and sits a couple of millimetres proud of the deck. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-mark-spikes-and-tape-1a84ca0f","cdnUrl":"https://cdn.3dassets.dev/assets/35495/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-mark-spikes-and-tape-1a84ca0f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35495/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35495/v1/poster.webp","blurhash":"UA9G:SIp00%2t8ayM{of00%1~pM|M_j]%NRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30040,"triangles":672,"vertices":1387,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3500184609460089,-0.000011292055681691449,-0.550000011920929],"max":[0.33000001311302185,0.10001129354579781,0.3679963233299599]},"sizeMeters":[0.68,0.1,0.918],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:11.093Z","updatedAt":"2026-09-11T15:30:11.204Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35495/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarkSpikesAndGafferTapeTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35495/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35495/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35495/v1/model.glb\" alt=\"Mark Spikes and Gaffer Tape (TV Studio and Broadcast Gallery)\" 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/35495/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/35495/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35496","slug":"tv-studio-and-broadcast-gallery-pedestal-camera-af273569","title":"Pedestal Camera on a Dolly (TV Studio and Broadcast Gallery)","summary":"A studio pedestal camera: a three wheel dolly with a steering ring, a two stage pneumatic column, a pan and tilt head and a broadcast camera with a stepped zoom lens, a viewfinder, a red tally lamp and two pan bars. The lens sits at 1.37 m at rest and looks toward +Z.","description":"A studio pedestal camera: a three wheel dolly with a steering ring, a two stage pneumatic column, a pan and tilt head and a broadcast camera with a stepped zoom lens, a viewfinder, a red tally lamp and two pan bars. The lens sits at 1.37 m at rest and looks toward +Z. The three wheels are steered parallel, which is how a pedestal is crabbed across a floor, so one wheel-roll clip drives all of them. The column height is fixed geometry: a pneumatic ram is a second joint the consumer would have to drive. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: wheel-a, wheel-b, wheel-c, head. Rigid node-transform clips: wheel-roll and pan. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-pedestal-camera-af273569","cdnUrl":"https://cdn.3dassets.dev/assets/35496/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-pedestal-camera-af273569","thumbnailUrl":"https://cdn.3dassets.dev/assets/35496/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35496/v1/poster.webp","blurhash":"U27nLAR+00xBRUozNEaJ00oe~pW=%KITNy%g","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":104004,"triangles":2736,"vertices":5658,"meshes":15,"materials":7,"textures":0,"animations":["wheel-roll","pan"],"boundingBox":{"min":[-0.49079986993337066,3.2782554587607038e-9,-0.5245939493179321],"max":[0.49079986993337066,1.7100017472705427,0.651194552220951]},"sizeMeters":[0.982,1.71,1.176],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:11.192Z","updatedAt":"2026-09-11T15:30:11.332Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35496/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PedestalCameraOnADollyTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35496/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35496/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35496/v1/model.glb\" alt=\"Pedestal Camera on a Dolly (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35496/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35496/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35498","slug":"tv-studio-and-broadcast-gallery-pedestal-camera-with-a-bd0ce403","title":"Pedestal Camera with an Autocue (TV Studio and Broadcast Gallery)","summary":"The same pedestal camera with an autocue on the lens: a script monitor under the barrel and a 45 degree beamsplitter glass in a hood on its bracket, carried on the camera head so it pans with the lens.","description":"The same pedestal camera with an autocue on the lens: a script monitor under the barrel and a 45 degree beamsplitter glass in a hood on its bracket, carried on the camera head so it pans with the lens. The autocue is modelled on the head rather than on its own node, so it pans with the camera instead of being left behind by it; its hood tilt is not rigged. The monitor face is a plain lit panel, not readable text. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: wheel-a, wheel-b, wheel-c, head. Rigid node-transform clips: wheel-roll and pan. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-pedestal-camera-with-a-bd0ce403","cdnUrl":"https://cdn.3dassets.dev/assets/35498/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-pedestal-camera-with-a-bd0ce403","thumbnailUrl":"https://cdn.3dassets.dev/assets/35498/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35498/v1/poster.webp","blurhash":"U28X5,?Z004p^*?a9Z4p00oL~pRj9b4otR~o","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":126524,"triangles":3280,"vertices":6856,"meshes":15,"materials":7,"textures":0,"animations":["wheel-roll","pan"],"boundingBox":{"min":[-0.49079986993337066,3.2782554587607038e-9,-0.5245939493179321],"max":[0.49079986993337066,1.7100017472705427,0.651199996471405]},"sizeMeters":[0.982,1.71,1.176],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:14.039Z","updatedAt":"2026-09-11T15:30:14.240Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35498/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PedestalCameraWithAnAutocueTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35498/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35498/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35498/v1/model.glb\" alt=\"Pedestal Camera with an Autocue (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35498/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35498/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35497","slug":"tv-studio-and-broadcast-gallery-shoulder-camera-on-tri-31dde6ba","title":"Shoulder Camera on a Tripod (TV Studio and Broadcast Gallery)","summary":"A shoulder camera on a two stage alloy tripod with a spreader and rubber feet: a pan and tilt head at 1.31 m carrying a camera with a 340 mm lens, a viewfinder, a tally lamp, a shoulder pad and a side handle. The head pans on the tripod bowl.","description":"A shoulder camera on a two stage alloy tripod with a spreader and rubber feet: a pan and tilt head at 1.31 m carrying a camera with a 340 mm lens, a viewfinder, a tally lamp, a shoulder pad and a side handle. The head pans on the tripod bowl. The tripod legs are modelled at one working height and do not telescope. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: head. Rigid node-transform clips: pan. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-shoulder-camera-on-tri-31dde6ba","cdnUrl":"https://cdn.3dassets.dev/assets/35497/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-shoulder-camera-on-tri-31dde6ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/35497/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35497/v1/poster.webp","blurhash":"U05#njIA00?v.8ahD$X34TkD.9el00x[_NH[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":80940,"triangles":1804,"vertices":3834,"meshes":11,"materials":8,"textures":0,"animations":["pan"],"boundingBox":{"min":[-0.49871397018432617,0,-0.5245939493179321],"max":[0.49871397018432617,1.8350017472705429,0.5724116888150896]},"sizeMeters":[0.997,1.835,1.097],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:13.916Z","updatedAt":"2026-09-11T15:30:14.026Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35497/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ShoulderCameraOnATripodTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35497/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35497/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35497/v1/model.glb\" alt=\"Shoulder Camera on a Tripod (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35497/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35497/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35500","slug":"tv-studio-and-broadcast-gallery-jib-arm-on-base-78a6f181","title":"Jib Arm on a Base (TV Studio and Broadcast Gallery)","summary":"A 3.1 m camera jib on a three castor base: a triangulated alloy boom through a fulcrum at 1.34 m, three cast counterweights on the short end and a remote pan and tilt head on a hanger at the long end, 2.05 m out.","description":"A 3.1 m camera jib on a three castor base: a triangulated alloy boom through a fulcrum at 1.34 m, three cast counterweights on the short end and a remote pan and tilt head on a hanger at the long end, 2.05 m out. The head is parented to the arm, so tilting the boom carries the camera with it; both are single alloy and grey castings rather than multi part nodes, because a node hung off another node cannot also be split by material. The drive belts and control cables are not modelled: a cable run is not reachable with a rigid node transform. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: arm, head. Rigid node-transform clips: tilt and pan. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-jib-arm-on-base-78a6f181","cdnUrl":"https://cdn.3dassets.dev/assets/35500/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-jib-arm-on-base-78a6f181","thumbnailUrl":"https://cdn.3dassets.dev/assets/35500/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35500/v1/poster.webp","blurhash":"U48NqcjZ00D%~q%MM{M_00_3_3IA4nxtt8Io","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":117012,"triangles":2764,"vertices":5943,"meshes":5,"materials":4,"textures":0,"animations":["tilt","pan"],"boundingBox":{"min":[-1.0499999523162842,0.000006190401077577068,-0.5245939493179321],"max":[2.24911025662174,1.5680033692255808,0.6979951060460027]},"sizeMeters":[3.299,1.568,1.223],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:14.315Z","updatedAt":"2026-09-11T15:30:14.452Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35500/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function JibArmOnABaseTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35500/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35500/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35500/v1/model.glb\" alt=\"Jib Arm on a Base (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35500/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35500/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35499","slug":"tv-studio-and-broadcast-gallery-lighting-grid-bay-ef6f38b3","title":"Lighting Grid Bay with a Walkway (TV Studio and Broadcast Gallery)","summary":"A 2 m bay of studio lighting grid: a 420 mm square section alloy ladder truss with a grating walkway on one side, an amber edge strip and a drop arm for a lamp. Its grid-left and grid-right ports butt bay to bay.","description":"A 2 m bay of studio lighting grid: a 420 mm square section alloy ladder truss with a grating walkway on one side, an amber edge strip and a drop arm for a lamp. Its grid-left and grid-right ports butt bay to bay. The bay is modelled with its base at y=0 and is hung in a scene at grid height. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-lighting-grid-bay-ef6f38b3","cdnUrl":"https://cdn.3dassets.dev/assets/35499/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-lighting-grid-bay-ef6f38b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35499/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35499/v1/poster.webp","blurhash":"U98|;S-.D$oc~q-:RiRi00o#%gM{00D*tSbJ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":68812,"triangles":1536,"vertices":3502,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.0130000114440918,-0.00003451915587965315,-0.24602940078743696],"max":[1.0075314044952393,0.8200251646572958,0.9700151197752125]},"sizeMeters":[2.021,0.82,1.216],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:14.205Z","updatedAt":"2026-09-11T15:30:14.313Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35499/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LightingGridBayWithAWalkwayTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35499/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35499/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35499/v1/model.glb\" alt=\"Lighting Grid Bay with a Walkway (TV Studio and Broadcast Gallery)\" 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/35499/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/35499/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35502","slug":"tv-studio-and-broadcast-gallery-fresnel-lamp-on-hook-c-8c8d3271","title":"Fresnel Lamp on a Hook Clamp (TV Studio and Broadcast Gallery)","summary":"A 320 mm studio fresnel on a hook clamp: a finned lamp house on a yoke with tilt locks, a stepped fresnel lens in its front ring, two barn door leaves with amber edge trim, a cable gland and a safety bond. It hangs 690 mm from the clamp jaw to the bottom of the body.","description":"A 320 mm studio fresnel on a hook clamp: a finned lamp house on a yoke with tilt locks, a stepped fresnel lens in its front ring, two barn door leaves with amber edge trim, a cable gland and a safety bond. It hangs 690 mm from the clamp jaw to the bottom of the body. The barn doors tip open and shut; the beam is not modelled, because a light cone is a shader and a mesh plume reads as a bag over the lens. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: barn-door-top, barn-door-bottom. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-fresnel-lamp-on-hook-c-8c8d3271","cdnUrl":"https://cdn.3dassets.dev/assets/35502/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-fresnel-lamp-on-hook-c-8c8d3271","thumbnailUrl":"https://cdn.3dassets.dev/assets/35502/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35502/v1/poster.webp","blurhash":"U38zx@-N00XoOa4:IT_200EM_4xaQ+~W?b01","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":62808,"triangles":1500,"vertices":3226,"meshes":9,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.20200646519897425,0,-0.17000445855721352],"max":[0.20200646519897425,0.6241381168365479,0.38499787016152776]},"sizeMeters":[0.404,0.624,0.555],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:16.890Z","updatedAt":"2026-09-11T15:30:17.001Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35502/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function FresnelLampOnAHookClampTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35502/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35502/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35502/v1/model.glb\" alt=\"Fresnel Lamp on a Hook Clamp (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35502/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35502/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35501","slug":"tv-studio-and-broadcast-gallery-barn-door-spot-4848405e","title":"Barn Door Spot (TV Studio and Broadcast Gallery)","summary":"The same lamp built as a hard edged spot: a conical snoot with an amber front ring in place of the open lens, on the same yoke, hook clamp and barn door leaves. Use it for a hard key or a background break up beside the fresnel wash.","description":"The same lamp built as a hard edged spot: a conical snoot with an amber front ring in place of the open lens, on the same yoke, hook clamp and barn door leaves. Use it for a hard key or a background break up beside the fresnel wash. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: barn-door-top, barn-door-bottom. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-barn-door-spot-4848405e","cdnUrl":"https://cdn.3dassets.dev/assets/35501/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-barn-door-spot-4848405e","thumbnailUrl":"https://cdn.3dassets.dev/assets/35501/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35501/v1/poster.webp","blurhash":"U597U[$b00toJY4:M{^*00M}-;sl+=~Vxv4:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":69596,"triangles":1680,"vertices":3591,"meshes":9,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.20200646519897425,0,-0.17001811756488416],"max":[0.20200646519897425,0.6241381168365479,0.5649978701615278]},"sizeMeters":[0.404,0.624,0.735],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:16.873Z","updatedAt":"2026-09-11T15:30:16.985Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35501/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function BarnDoorSpotTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35501/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35501/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35501/v1/model.glb\" alt=\"Barn Door Spot (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35501/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35501/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35504","slug":"tv-studio-and-broadcast-gallery-softbox-panel-d57bc9f3","title":"Softbox Panel Light (TV Studio and Broadcast Gallery)","summary":"A 900 by 620 mm softbox on a hook clamp: a tapered fabric box on an alloy frame with a double layer of diffusion across its face, dark skirt panels round the sides and a yoke with tilt locks. It hangs 1.06 m from the clamp jaw to the bottom of the frame.","description":"A 900 by 620 mm softbox on a hook clamp: a tapered fabric box on an alloy frame with a double layer of diffusion across its face, dark skirt panels round the sides and a yoke with tilt locks. It hangs 1.06 m from the clamp jaw to the bottom of the frame. The fabric is modelled taut and the light itself is not: a soft source is an area light in the engine, not geometry. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-softbox-panel-d57bc9f3","cdnUrl":"https://cdn.3dassets.dev/assets/35504/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-softbox-panel-d57bc9f3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35504/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35504/v1/poster.webp","blurhash":"UIC?o,~q004o-;%Mj@M{00D*_2%M9FIUtRxv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":44100,"triangles":972,"vertices":2113,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.46385639905929565,-0.00002448910228658452,-0.31000366504363086],"max":[0.46385639905929565,0.8938672518533344,0.216984049085586]},"sizeMeters":[0.928,0.894,0.527],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:17.168Z","updatedAt":"2026-09-11T15:30:17.369Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35504/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SoftboxPanelLightTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35504/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35504/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35504/v1/model.glb\" alt=\"Softbox Panel Light (TV Studio and Broadcast Gallery)\" 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/35504/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/35504/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35503","slug":"tv-studio-and-broadcast-gallery-cable-drape-d0d0750a","title":"Cable Drape from the Grid (TV Studio and Broadcast Gallery)","summary":"A 4.4 m loom of studio cable dropped from the grid to the floor: seven sheathed runs off a tie off bar, banded at three heights with amber ties and flaked out along the floor at the bottom. It dresses the gap between a lighting grid and the floor, where a studio always has one.","description":"A 4.4 m loom of studio cable dropped from the grid to the floor: seven sheathed runs off a tie off bar, banded at three heights with amber ties and flaked out along the floor at the bottom. It dresses the gap between a lighting grid and the floor, where a studio always has one. The cables are static geometry: a flexible run is not reachable with a rigid node transform, and a fake one reads worse than a still one. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-cable-drape-d0d0750a","cdnUrl":"https://cdn.3dassets.dev/assets/35503/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-cable-drape-d0d0750a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35503/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35503/v1/poster.webp","blurhash":"U14n}Vbb00i^~WkC4nVt_3oz4nMx_3fR4nax","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38020,"triangles":740,"vertices":1922,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4575195135161312,0,-0.024994658835185188],"max":[0.7086113513991268,4.544963501117983,0.9049852116113345]},"sizeMeters":[1.166,4.545,0.93],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:17.061Z","updatedAt":"2026-09-11T15:30:17.185Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35503/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableDrapeFromTheGridTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35503/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35503/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35503/v1/model.glb\" alt=\"Cable Drape from the Grid (TV Studio and Broadcast Gallery)\" 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/35503/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/35503/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35505","slug":"tv-studio-and-broadcast-gallery-boom-microphone-on-pol-952f926e","title":"Boom Microphone on a Pole (TV Studio and Broadcast Gallery)","summary":"A studio sound boom: a two stage telescopic pole on an alloy tripod at 1.72 m, with a shotgun microphone slung in a two ring suspension basket 1.8 m out over the set. The pole tips on its yoke, which is how an operator swings the mic between speakers.","description":"A studio sound boom: a two stage telescopic pole on an alloy tripod at 1.72 m, with a shotgun microphone slung in a two ring suspension basket 1.8 m out over the set. The pole tips on its yoke, which is how an operator swings the mic between speakers. The microphone cable is not modelled; it is a flexible run and a rigid node cannot carry it. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: arm. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-boom-microphone-on-pol-952f926e","cdnUrl":"https://cdn.3dassets.dev/assets/35505/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-boom-microphone-on-pol-952f926e","thumbnailUrl":"https://cdn.3dassets.dev/assets/35505/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35505/v1/poster.webp","blurhash":"U25X=L-;004m_2V@9Ht84TRi?b%N9G%N-o9F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":46144,"triangles":996,"vertices":2117,"meshes":7,"materials":4,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.5420152544975281,0,-0.32240864119860574],"max":[2.049999952316284,2.2759525982403304,0.6224086233172124]},"sizeMeters":[2.592,2.276,0.945],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:19.741Z","updatedAt":"2026-09-11T15:30:19.841Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35505/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function BoomMicrophoneOnAPoleTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35505/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35505/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35505/v1/model.glb\" alt=\"Boom Microphone on a Pole (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35505/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35505/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35507","slug":"tv-studio-and-broadcast-gallery-sound-blanket-on-rail-7bd63b70","title":"Sound Blankets on a Rail (TV Studio and Broadcast Gallery)","summary":"A 1.8 m wheeled rail hung with three heavy acoustic blankets at 1.95 m, on braked castors with an amber band at the head of each blanket. This is what a crew wheels in to kill a reflection off a hard set wall.","description":"A 1.8 m wheeled rail hung with three heavy acoustic blankets at 1.95 m, on braked castors with an amber band at the head of each blanket. This is what a crew wheels in to kill a reflection off a hard set wall. The blankets are modelled as hung slabs and do not drape: cloth is a simulation, not a rigid node. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-sound-blanket-on-rail-7bd63b70","cdnUrl":"https://cdn.3dassets.dev/assets/35507/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-sound-blanket-on-rail-7bd63b70","thumbnailUrl":"https://cdn.3dassets.dev/assets/35507/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35507/v1/poster.webp","blurhash":"UA8hRVt700R%.8tRD%IT8wjt*JR*MJsTyDS~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":64548,"triangles":1464,"vertices":3256,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9250172649702029,0.000045197181239693685,-0.3499740120171855],"max":[0.9250172649702029,1.9852869510650635,0.3499740120171855]},"sizeMeters":[1.85,1.985,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:23.226Z","updatedAt":"2026-09-11T15:30:23.372Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35507/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SoundBlanketsOnARailTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35507/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35507/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35507/v1/model.glb\" alt=\"Sound Blankets on a Rail (TV Studio and Broadcast Gallery)\" 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/35507/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/35507/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35506","slug":"tv-studio-and-broadcast-gallery-studio-clock-b5ba9221","title":"Studio Clock (TV Studio and Broadcast Gallery)","summary":"A 420 mm studio sweep clock: a dark bezel over a cream dial with twelve markers, a pair of hands and a red sweep hand on its boss, on a square wall plate. The plate sits flat against the wall and the dial centre is 70 mm proud of it.","description":"A 420 mm studio sweep clock: a dark bezel over a cream dial with twelve markers, a pair of hands and a red sweep hand on its boss, on a square wall plate. The plate sits flat against the wall and the dial centre is 70 mm proud of it. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-clock-b5ba9221","cdnUrl":"https://cdn.3dassets.dev/assets/35506/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-clock-b5ba9221","thumbnailUrl":"https://cdn.3dassets.dev/assets/35506/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35506/v1/poster.webp","blurhash":"UFBg0l%M009GR*ofxaWB00IV~q-;t6WBM|of","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":50852,"triangles":1200,"vertices":2496,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.21000787940702959,0,-0.02999832248765713],"max":[0.21000787940702959,0.45913782715797424,0.08000215444415167]},"sizeMeters":[0.42,0.459,0.11],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:23.162Z","updatedAt":"2026-09-11T15:30:23.271Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35506/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioClockTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35506/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35506/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35506/v1/model.glb\" alt=\"Studio Clock (TV Studio and Broadcast Gallery)\" 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/35506/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/35506/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35508","slug":"tv-studio-and-broadcast-gallery-on-air-light-76a73bf2","title":"On Air Light (TV Studio and Broadcast Gallery)","summary":"A 720 mm illuminated studio door light: a dark box with a red emissive face behind two cream bars, on an alloy hood and two side brackets that hold it off the wall. It is the one thing in a studio that is meant to be read from the corridor.","description":"A 720 mm illuminated studio door light: a dark box with a red emissive face behind two cream bars, on an alloy hood and two side brackets that hold it off the wall. It is the one thing in a studio that is meant to be read from the corridor. The face is lit geometry with abstract bars rather than lettering, so no wording is baked into the model. Nothing on it moves. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-on-air-light-76a73bf2","cdnUrl":"https://cdn.3dassets.dev/assets/35508/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-on-air-light-76a73bf2","thumbnailUrl":"https://cdn.3dassets.dev/assets/35508/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35508/v1/poster.webp","blurhash":"UCELBO=K0KaK-;^kwIEK00O@}@niRi6jFx+^","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22508,"triangles":448,"vertices":1009,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.4099999964237213,-0.00001846115397124981,-0.05497726589504056],"max":[0.4099999964237213,0.31001846353815704,0.07601135340761551]},"sizeMeters":[0.82,0.31,0.131],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:20.102Z","updatedAt":"2026-09-11T15:30:20.225Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35508/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OnAirLightTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35508/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35508/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35508/v1/model.glb\" alt=\"On Air Light (TV Studio and Broadcast Gallery)\" 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/35508/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/35508/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35509","slug":"tv-studio-and-broadcast-gallery-cable-ramp-9a587edf","title":"Cable Ramp (TV Studio and Broadcast Gallery)","summary":"A 900 by 520 mm moulded cable ramp 75 mm high with three cable channels under amber lids and alloy edge strips. It is what a camera pedestal crosses a cable run on without a bump in the shot.","description":"A 900 by 520 mm moulded cable ramp 75 mm high with three cable channels under amber lids and alloy edge strips. It is what a camera pedestal crosses a cable run on without a bump in the shot. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-cable-ramp-9a587edf","cdnUrl":"https://cdn.3dassets.dev/assets/35509/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-cable-ramp-9a587edf","thumbnailUrl":"https://cdn.3dassets.dev/assets/35509/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35509/v1/poster.webp","blurhash":"U9BD4mxv04WB?Z-pNfIV00s+~9NH029F$w-o","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21736,"triangles":448,"vertices":1018,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,-0.000019453065748686882,-0.2600268493999796],"max":[0.44999998807907104,0.08901532118407351,0.2600268493999796]},"sizeMeters":[0.9,0.089,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:22.607Z","updatedAt":"2026-09-11T15:30:22.705Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35509/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CableRampTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35509/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35509/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35509/v1/model.glb\" alt=\"Cable Ramp (TV Studio and Broadcast Gallery)\" 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/35509/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/35509/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35510","slug":"tv-studio-and-broadcast-gallery-sandbag-4893fabb","title":"Studio Sandbag (TV Studio and Broadcast Gallery)","summary":"A 460 mm canvas sandbag, modelled slumped in two lobes rather than as a square block, with an amber webbing handle over the top and a band round the waist. One goes on the foot of every stand and brace in a studio.","description":"A 460 mm canvas sandbag, modelled slumped in two lobes rather than as a square block, with an amber webbing handle over the top and a band round the waist. One goes on the foot of every stand and brace in a studio. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-sandbag-4893fabb","cdnUrl":"https://cdn.3dassets.dev/assets/35510/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-sandbag-4893fabb","thumbnailUrl":"https://cdn.3dassets.dev/assets/35510/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35510/v1/poster.webp","blurhash":"U5C%59^%00Io?w%NadIA009e_4RQI7siR-W=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18472,"triangles":440,"vertices":862,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.23000000417232513,-0.000008452885714882452,-0.13008055026510046],"max":[0.23584994673728943,0.31141238724514714,0.15008056099393652]},"sizeMeters":[0.466,0.311,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:22.925Z","updatedAt":"2026-09-11T15:30:23.107Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35510/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioSandbagTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35510/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35510/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35510/v1/model.glb\" alt=\"Studio Sandbag (TV Studio and Broadcast Gallery)\" 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/35510/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/35510/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35511","slug":"tv-studio-and-broadcast-gallery-cable-drum-on-stand-a1257c6a","title":"Cable Drum on a Stand (TV Studio and Broadcast Gallery)","summary":"A 520 mm camera cable drum on an alloy A frame stand at 580 mm: a flanged drum with an amber band and a wound core, turning on a through axle, with a tail of cable run off to the floor. The drum spins on its axle.","description":"A 520 mm camera cable drum on an alloy A frame stand at 580 mm: a flanged drum with an amber band and a wound core, turning on a through axle, with a tail of cable run off to the floor. The drum spins on its axle. Only the drum turns; the cable tail is static, because a cable paying off a drum is a simulation. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: drum. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-cable-drum-on-stand-a1257c6a","cdnUrl":"https://cdn.3dassets.dev/assets/35511/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-cable-drum-on-stand-a1257c6a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35511/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35511/v1/poster.webp","blurhash":"U48z+7xu00bcR4bIIpRi00M|~W%0E3af^+t7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":33700,"triangles":744,"vertices":1634,"meshes":5,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.34000885474960896,-0.000004340442174954884,-0.3700000047683716],"max":[0.3514532211296656,0.8399999606609344,0.41040927171707153]},"sizeMeters":[0.691,0.84,0.78],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:25.431Z","updatedAt":"2026-09-11T15:30:25.540Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35511/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function CableDrumOnAStandTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35511/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35511/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35511/v1/model.glb\" alt=\"Cable Drum on a Stand (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35511/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35511/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35513","slug":"tv-studio-and-broadcast-gallery-gallery-desk-run-a72b3947","title":"Gallery Desk Run with Monitor Stacks (TV Studio and Broadcast Gallery)","summary":"A 1.8 m bay of production gallery desk: a dark worktop at 740 mm on alloy gables, a raked control shelf, a riser carrying eight source monitors, one drawer and a monitor on a tilting arm. Its desk-left and desk-right ports butt bay to bay.","description":"A 1.8 m bay of production gallery desk: a dark worktop at 740 mm on alloy gables, a raked control shelf, a riser carrying eight source monitors, one drawer and a monitor on a tilting arm. Its desk-left and desk-right ports butt bay to bay. The screen faces are plain lit panels rather than pictures, so nothing readable is baked in. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: drawer, monitor-arm. Rigid node-transform clips: open, close and tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-gallery-desk-run-a72b3947","cdnUrl":"https://cdn.3dassets.dev/assets/35513/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-gallery-desk-run-a72b3947","thumbnailUrl":"https://cdn.3dassets.dev/assets/35513/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35513/v1/poster.webp","blurhash":"U3ATfw==00A35_o~r9rp00IUyFaeU[sj*0Ng","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":113160,"triangles":2608,"vertices":5720,"meshes":12,"materials":5,"textures":0,"animations":["open","close","tilt"],"boundingBox":{"min":[-0.8999999761581421,0.000010657793260371307,-0.450068654723573],"max":[0.8999999761581421,1.54799199303771,0.46699765144979244]},"sizeMeters":[1.8,1.548,0.917],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:26.018Z","updatedAt":"2026-09-11T15:30:26.122Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35513/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function GalleryDeskRunWithMonitorStacksTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35513/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35513/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35513/v1/model.glb\" alt=\"Gallery Desk Run with Monitor Stacks (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35513/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35513/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35512","slug":"tv-studio-and-broadcast-gallery-vision-mixer-panel-cca4cf8a","title":"Vision Mixer Panel (TV Studio and Broadcast Gallery)","summary":"A 1.02 m vision mixer control surface for a gallery desk: three banked rows of twelve source buttons in cream, amber and red, a transition block, two T bar levers in their slots, a small raked status panel and an alloy front edge. It sits 120 mm proud of a desk top.","description":"A 1.02 m vision mixer control surface for a gallery desk: three banked rows of twelve source buttons in cream, amber and red, a transition block, two T bar levers in their slots, a small raked status panel and an alloy front edge. It sits 120 mm proud of a desk top. The buttons and T bars are modelled in their rest positions and do not move; the status panel is an abstract lit face. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-vision-mixer-panel-cca4cf8a","cdnUrl":"https://cdn.3dassets.dev/assets/35512/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-vision-mixer-panel-cca4cf8a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35512/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35512/v1/poster.webp","blurhash":"U27-j2~X00I9K5?c#88_000d^,n#?Z0J9[.9","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":85980,"triangles":2010,"vertices":4224,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.5099999904632568,-0.000030990563455596254,-0.2800042673553878],"max":[0.5099999904632568,0.3245052653606855,0.2909965084145859]},"sizeMeters":[1.02,0.325,0.571],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:25.964Z","updatedAt":"2026-09-11T15:30:26.065Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35512/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VisionMixerPanelTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35512/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35512/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35512/v1/model.glb\" alt=\"Vision Mixer Panel (TV Studio and Broadcast Gallery)\" 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/35512/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/35512/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35514","slug":"tv-studio-and-broadcast-gallery-sound-desk-b23830ba","title":"Gallery Sound Desk (TV Studio and Broadcast Gallery)","summary":"A sixteen channel sound desk for the gallery: sixteen 100 mm faders with cream caps on a raked bay, three amber rotaries per channel, a red master strip and a meter bridge with a lit window, in a dark shell with an alloy front edge. It is 1.24 m across and sits on a desk top.","description":"A sixteen channel sound desk for the gallery: sixteen 100 mm faders with cream caps on a raked bay, three amber rotaries per channel, a red master strip and a meter bridge with a lit window, in a dark shell with an alloy front edge. It is 1.24 m across and sits on a desk top. Faders and knobs are modelled in their set positions and do not move. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-sound-desk-b23830ba","cdnUrl":"https://cdn.3dassets.dev/assets/35514/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-sound-desk-b23830ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/35514/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35514/v1/poster.webp","blurhash":"U38}0-V?00x^_4%3IAM_00og?vMw00IUx]jD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":235252,"triangles":5680,"vertices":12187,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6200000047683716,-0.000014193991111202675,-0.3174298516292959],"max":[0.6200000047683716,0.29794567539923256,0.32098581818746363]},"sizeMeters":[1.24,0.298,0.638],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:26.347Z","updatedAt":"2026-09-11T15:30:26.445Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35514/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GallerySoundDeskTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35514/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35514/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35514/v1/model.glb\" alt=\"Gallery Sound Desk (TV Studio and Broadcast Gallery)\" 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/35514/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/35514/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35515","slug":"tv-studio-and-broadcast-gallery-talkback-panel-33e20820","title":"Talkback Panel (TV Studio and Broadcast Gallery)","summary":"A 300 mm talkback station for a gallery desk: eight amber key buttons and a red cut key on a raked face, a gooseneck microphone on its boss and an alloy front edge. This is what the director speaks to the floor on.","description":"A 300 mm talkback station for a gallery desk: eight amber key buttons and a red cut key on a raked face, a gooseneck microphone on its boss and an alloy front edge. This is what the director speaks to the floor on. The gooseneck is modelled at one bend and does not articulate. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-talkback-panel-33e20820","cdnUrl":"https://cdn.3dassets.dev/assets/35515/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-talkback-panel-33e20820","thumbnailUrl":"https://cdn.3dassets.dev/assets/35515/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35515/v1/poster.webp","blurhash":"U47w+.wc009u4nt7%MRQ00I;~p-U_3aeNGkC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31008,"triangles":648,"vertices":1410,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000000596046448,0.0000061024603743020656,-0.11000397177739682],"max":[0.15000000596046448,0.3723014129088305,0.17564041912555695]},"sizeMeters":[0.3,0.372,0.286],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:28.378Z","updatedAt":"2026-09-11T15:30:28.482Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35515/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TalkbackPanelTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35515/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35515/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35515/v1/model.glb\" alt=\"Talkback Panel (TV Studio and Broadcast Gallery)\" 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/35515/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/35515/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35517","slug":"tv-studio-and-broadcast-gallery-monitor-wall-frame-a57607a0","title":"Gallery Monitor Wall (TV Studio and Broadcast Gallery)","summary":"A 2.4 by 2.3 m monitor wall on its own floor frame: a two metre multiviewer over a row of four source monitors, in an alloy frame with raking stays, feet and amber capping rails. It stands behind a gallery desk where the whole room can see it.","description":"A 2.4 by 2.3 m monitor wall on its own floor frame: a two metre multiviewer over a row of four source monitors, in an alloy frame with raking stays, feet and amber capping rails. It stands behind a gallery desk where the whole room can see it. Every screen face is a plain lit panel with a status strip, not a picture: readable content would date the model. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-monitor-wall-frame-a57607a0","cdnUrl":"https://cdn.3dassets.dev/assets/35517/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-monitor-wall-frame-a57607a0","thumbnailUrl":"https://cdn.3dassets.dev/assets/35517/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35517/v1/poster.webp","blurhash":"U48;ro?v00VWuP%hiFDg00WT_Ns7=B-.TgD+","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":64220,"triangles":1432,"vertices":3247,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.000047373230319669446,-0.4600457935612639],"max":[1.2000000476837158,2.4800418595422644,0.14004578581266008]},"sizeMeters":[2.4,2.48,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:28.977Z","updatedAt":"2026-09-11T15:30:29.083Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35517/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GalleryMonitorWallTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35517/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35517/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35517/v1/model.glb\" alt=\"Gallery Monitor Wall (TV Studio and Broadcast Gallery)\" 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/35517/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/35517/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35516","slug":"tv-studio-and-broadcast-gallery-gallery-chair-5aec669b","title":"Gallery Operator Chair (TV Studio and Broadcast Gallery)","summary":"A five star gas lift operator chair at 500 mm to the seat: a crowned teal seat pad and a raked back on a dark shell, amber capped arms and castors. The seat swivels on the gas lift column.","description":"A five star gas lift operator chair at 500 mm to the seat: a crowned teal seat pad and a raked back on a dark shell, amber capped arms and castors. The seat swivels on the gas lift column. The height adjustment and the back rake are fixed geometry. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: seat. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-gallery-chair-5aec669b","cdnUrl":"https://cdn.3dassets.dev/assets/35516/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-gallery-chair-5aec669b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35516/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35516/v1/poster.webp","blurhash":"U77_l^%M00Di.moyHrRQ8{kB%#Rk8xWX%#j?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":66872,"triangles":1456,"vertices":3278,"meshes":6,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.2800000011920929,0.0000017509437970388009,-0.32002753019332886],"max":[0.32200948753320774,1.0765143632888794,0.32002753019332886]},"sizeMeters":[0.602,1.077,0.64],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:28.900Z","updatedAt":"2026-09-11T15:30:29.016Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35516/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function GalleryOperatorChairTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35516/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35516/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35516/v1/model.glb\" alt=\"Gallery Operator Chair (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35516/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35516/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35518","slug":"tv-studio-and-broadcast-gallery-glass-partition-module-bf80147b","title":"Gallery Glass Partition Module (TV Studio and Broadcast Gallery)","summary":"A 1.2 by 2.7 m glazed partition module between a gallery and a studio floor: alloy posts, head and transom, a dark dado panel with an amber kick band below 860 mm and a single pane above it. Its glass-left and glass-right ports at half height butt module to module along the run.","description":"A 1.2 by 2.7 m glazed partition module between a gallery and a studio floor: alloy posts, head and transom, a dark dado panel with an amber kick band below 860 mm and a single pane above it. Its glass-left and glass-right ports at half height butt module to module along the run. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-glass-partition-module-bf80147b","cdnUrl":"https://cdn.3dassets.dev/assets/35518/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-glass-partition-module-bf80147b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35518/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35518/v1/poster.webp","blurhash":"UBAd7gt700M_?woz9ERPIAj[x^WUD%az-;oe","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21764,"triangles":448,"vertices":1019,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999130328428387,0,-0.04993438608649959],"max":[0.5999130328428387,2.700000047683716,0.06501309117348628]},"sizeMeters":[1.2,2.7,0.115],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:29.281Z","updatedAt":"2026-09-11T15:30:29.445Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35518/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GalleryGlassPartitionModuleTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35518/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35518/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35518/v1/model.glb\" alt=\"Gallery Glass Partition Module (TV Studio and Broadcast Gallery)\" 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/35518/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/35518/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35519","slug":"tv-studio-and-broadcast-gallery-glass-partition-door-m-bd121cea","title":"Gallery Glass Partition Door (TV Studio and Broadcast Gallery)","summary":"The same 1.2 by 2.7 m partition module with a full height glazed door in it: a framed leaf on its hinge stile with a pull handle and an amber edge strip. It carries the same glass-left and glass-right ports, so it drops into a run of plain modules.","description":"The same 1.2 by 2.7 m partition module with a full height glazed door in it: a framed leaf on its hinge stile with a pull handle and an amber edge strip. It carries the same glass-left and glass-right ports, so it drops into a run of plain modules. The leaf swings on its stile; the frame and the closer are fixed. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-glass-partition-door-m-bd121cea","cdnUrl":"https://cdn.3dassets.dev/assets/35519/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-glass-partition-door-m-bd121cea","thumbnailUrl":"https://cdn.3dassets.dev/assets/35519/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35519/v1/poster.webp","blurhash":"U38XILRi00of_Ns:4TM{IUf6%2t8-;s:IBNG","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38080,"triangles":800,"vertices":1806,"meshes":4,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999130328428387,0,-0.050050355540635395],"max":[0.5999130328428387,2.700000047683716,0.052990692904309473]},"sizeMeters":[1.2,2.7,0.103],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:31.173Z","updatedAt":"2026-09-11T15:30:31.307Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35519/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function GalleryGlassPartitionDoorTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35519/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35519/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35519/v1/model.glb\" alt=\"Gallery Glass Partition Door (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35519/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35519/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35520","slug":"tv-studio-and-broadcast-gallery-rack-cabinet-with-gear-2207fcf1","title":"Equipment Rack with Gear (TV Studio and Broadcast Gallery)","summary":"A 1.6 m 19 inch equipment rack on braked castors: an open alloy frame with dark side and back panels, seven loaded gear faces with meter windows, amber knob rows and rack screws, an amber patch strip and a shallow accessory drawer on slides.","description":"A 1.6 m 19 inch equipment rack on braked castors: an open alloy frame with dark side and back panels, seven loaded gear faces with meter windows, amber knob rows and rack screws, an amber patch strip and a shallow accessory drawer on slides. Only the drawer moves; the gear faces are fixed, and no cabling is modelled behind the rack. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: drawer. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-rack-cabinet-with-gear-2207fcf1","cdnUrl":"https://cdn.3dassets.dev/assets/35520/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-rack-cabinet-with-gear-2207fcf1","thumbnailUrl":"https://cdn.3dassets.dev/assets/35520/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35520/v1/poster.webp","blurhash":"U58qQr%M00D%~qj[9Faz?cIV9E%L_3t6D%M|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":294464,"triangles":7240,"vertices":15281,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.31000853990323923,0,-0.3499999940395355],"max":[0.31000853990323923,1.619995750910006,0.36400396963748993]},"sizeMeters":[0.62,1.62,0.714],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:31.802Z","updatedAt":"2026-09-11T15:30:31.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35520/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function EquipmentRackWithGearTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35520/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35520/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35520/v1/model.glb\" alt=\"Equipment Rack with Gear (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35520/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35520/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35521","slug":"tv-studio-and-broadcast-gallery-makeup-station-7b1006b5","title":"Makeup Station with a Lit Mirror (TV Studio and Broadcast Gallery)","summary":"A 1.5 m makeup station: a timber counter at 780 mm on a recessed plinth with three drawers, a 1 m cream bordered mirror behind it with ten bulbs down the sides in amber housings, a pot of brushes and a folded towel. The middle drawer runs out on its slides.","description":"A 1.5 m makeup station: a timber counter at 780 mm on a recessed plinth with three drawers, a 1 m cream bordered mirror behind it with ten bulbs down the sides in amber housings, a pot of brushes and a folded towel. The middle drawer runs out on its slides. The bulbs are geometry, not lights; the outer two drawers are fixed fronts. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: drawer. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-makeup-station-7b1006b5","cdnUrl":"https://cdn.3dassets.dev/assets/35521/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-makeup-station-7b1006b5","thumbnailUrl":"https://cdn.3dassets.dev/assets/35521/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35521/v1/poster.webp","blurhash":"U8FYiUtm00iv~Vt54oNL00RP~qNea$xtt6D*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":91260,"triangles":2052,"vertices":4504,"meshes":10,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7699999809265137,-0.0000021517773363122217,-0.2999679481346155],"max":[0.7699999809265137,1.7000000476837158,0.2999679481346155]},"sizeMeters":[1.54,1.7,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:31.848Z","updatedAt":"2026-09-11T15:30:32.037Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35521/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function MakeupStationWithALitMirrorTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35521/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35521/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35521/v1/model.glb\" alt=\"Makeup Station with a Lit Mirror (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35521/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35521/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35522","slug":"tv-studio-and-broadcast-gallery-wardrobe-rail-with-cov-f4c70da8","title":"Wardrobe Rail with Garment Covers (TV Studio and Broadcast Gallery)","summary":"A 1.6 m wheeled wardrobe rail at 1.72 m, on braked castors with raking stays: seven garments in soft covers on wire hangers, in two lengths and two colours with an amber label band on each. It is what wardrobe wheels between the green room and the studio floor.","description":"A 1.6 m wheeled wardrobe rail at 1.72 m, on braked castors with raking stays: seven garments in soft covers on wire hangers, in two lengths and two colours with an amber label band on each. It is what wardrobe wheels between the green room and the studio floor. The covers are modelled hanging and do not drape; the hangers do not slide on the rail. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-wardrobe-rail-with-cov-f4c70da8","cdnUrl":"https://cdn.3dassets.dev/assets/35522/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-wardrobe-rail-with-cov-f4c70da8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35522/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35522/v1/poster.webp","blurhash":"UB9t=SyD00IU?vx]D%D%00ae?^aeDOVs%gx]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":135108,"triangles":3212,"vertices":6953,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.826998817527575,0.00005163495105212079,-0.309963295621029],"max":[0.826998817527575,1.7380000352859497,0.309963295621029]},"sizeMeters":[1.654,1.738,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:32.309Z","updatedAt":"2026-09-11T15:30:32.404Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35522/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WardrobeRailWithGarmentCoversTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35522/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35522/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35522/v1/model.glb\" alt=\"Wardrobe Rail with Garment Covers (TV Studio and Broadcast Gallery)\" 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/35522/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/35522/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35523","slug":"tv-studio-and-broadcast-gallery-green-room-sofa-efa6bb4c","title":"Green Room Sofa (TV Studio and Broadcast Gallery)","summary":"The same upholstered body as the chat show sofa on a dark frame instead of timber, 1.72 m wide: the hard wearing version that lives in a green room rather than in shot.","description":"The same upholstered body as the chat show sofa on a dark frame instead of timber, 1.72 m wide: the hard wearing version that lives in a green room rather than in shot. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-green-room-sofa-efa6bb4c","cdnUrl":"https://cdn.3dassets.dev/assets/35523/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-green-room-sofa-efa6bb4c","thumbnailUrl":"https://cdn.3dassets.dev/assets/35523/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35523/v1/poster.webp","blurhash":"U69[72yD00WB*Jx]R5V@00Rky?V@D4t6yDIA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38624,"triangles":880,"vertices":1906,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.8600000143051147,-0.0000189223908865499,-0.49313524417313365],"max":[0.8600000143051147,0.9403748722714509,0.41003930620583323]},"sizeMeters":[1.72,0.94,0.903],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:34.142Z","updatedAt":"2026-09-11T15:30:34.249Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35523/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GreenRoomSofaTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35523/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35523/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35523/v1/model.glb\" alt=\"Green Room Sofa (TV Studio and Broadcast Gallery)\" 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/35523/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/35523/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35524","slug":"tv-studio-and-broadcast-gallery-green-room-table-11df7e49","title":"Green Room Table (TV Studio and Broadcast Gallery)","summary":"A 1.1 m low timber table at 420 mm on raked alloy legs with a stretcher and a dark under shelf, dressed with two mugs and a stack of scripts under an amber cover. It goes in front of the green room sofa.","description":"A 1.1 m low timber table at 420 mm on raked alloy legs with a stretcher and a dark under shelf, dressed with two mugs and a stack of scripts under an amber cover. It goes in front of the green room sofa. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-green-room-table-11df7e49","cdnUrl":"https://cdn.3dassets.dev/assets/35524/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-green-room-table-11df7e49","thumbnailUrl":"https://cdn.3dassets.dev/assets/35524/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35524/v1/poster.webp","blurhash":"UFB{.Ht64:kC~V%LIoM|01xa%KM{02M|-ot6","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":36244,"triangles":808,"vertices":1710,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.550000011920929,-0.000027632667477961448,-0.3000183176084074],"max":[0.550000011920929,0.507482612531306,0.3000183176084074]},"sizeMeters":[1.1,0.508,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:34.752Z","updatedAt":"2026-09-11T15:30:34.867Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35524/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GreenRoomTableTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35524/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35524/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35524/v1/model.glb\" alt=\"Green Room Table (TV Studio and Broadcast Gallery)\" 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/35524/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/35524/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35525","slug":"tv-studio-and-broadcast-gallery-prop-store-shelving-322ea402","title":"Prop Store Shelving Bay (TV Studio and Broadcast Gallery)","summary":"A 1.4 m slotted steel shelving bay 2.1 m tall with four decks, stocked with nine prop crates in timber, amber, teal and cream with dark strapping, and an amber kick rail along the bottom. It is the back of house bay a studio keeps its dressing on.","description":"A 1.4 m slotted steel shelving bay 2.1 m tall with four decks, stocked with nine prop crates in timber, amber, teal and cream with dark strapping, and an amber kick rail along the bottom. It is the back of house bay a studio keeps its dressing on. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-prop-store-shelving-322ea402","cdnUrl":"https://cdn.3dassets.dev/assets/35525/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-prop-store-shelving-322ea402","thumbnailUrl":"https://cdn.3dassets.dev/assets/35525/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35525/v1/poster.webp","blurhash":"U5BDTd?G000M%jX9I8rq4nNH%M$~w[xaNeEM","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":141760,"triangles":3224,"vertices":7260,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.7000645432891484,0,-0.28003226892881283],"max":[0.7000645432891484,2.25,0.28003226892881283]},"sizeMeters":[1.4,2.25,0.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:34.797Z","updatedAt":"2026-09-11T15:30:34.930Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35525/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PropStoreShelvingBayTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35525/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35525/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35525/v1/model.glb\" alt=\"Prop Store Shelving Bay (TV Studio and Broadcast Gallery)\" 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/35525/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/35525/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35526","slug":"tv-studio-and-broadcast-gallery-studio-door-with-sound-f3c48466","title":"Studio Door with a Soundlock (TV Studio and Broadcast Gallery)","summary":"A 1.2 m studio entrance module 2.7 m tall and 1.15 m deep: two heavy acoustic leaves hung on opposite stiles in a lined lobby, each with an amber panel, a vision light and a lever handle. It carries the set flat ports.","description":"A 1.2 m studio entrance module 2.7 m tall and 1.15 m deep: two heavy acoustic leaves hung on opposite stiles in a lined lobby, each with an amber panel, a vision light and a lever handle. It carries the set flat ports. Both leaves swing on one open and close pair, which is what a soundlock is: never both open at once in use, but they are one system in the file. Metre units, +Y up, the camera or operator side toward +Z, resting on y=0. Named pivoted nodes: door-outer, door-inner. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-door-with-sound-f3c48466","cdnUrl":"https://cdn.3dassets.dev/assets/35526/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-door-with-sound-f3c48466","thumbnailUrl":"https://cdn.3dassets.dev/assets/35526/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35526/v1/poster.webp","blurhash":"U4CGS+~p0002.AR.I9$x00IVM_$y^hxBE2I^","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":74196,"triangles":1792,"vertices":4042,"meshes":11,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999130328428387,0,-0.644985923705897],"max":[0.5999130328428387,2.700000047683716,0.644985923705897]},"sizeMeters":[1.2,2.7,1.29],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T15:30:35.184Z","updatedAt":"2026-09-11T17:18:51.054Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35526/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function StudioDoorWithASoundlockTVStudioAndBroadcastGallery(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35526/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35526/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35526/v1/model.glb\" alt=\"Studio Door with a Soundlock (TV Studio and Broadcast Gallery)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35526/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/35526/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35527","slug":"tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","title":"Studio Floor and Production Gallery (TV Studio and Broadcast Gallery)","summary":"A working television studio built from the pack's own modules on its own 2 m floor tiles, 14 by 12 m: a blue cyclorama turning a corner at the far left, a news desk on a two module riser against a set wall at the right with a green screen run down the side, a chat show sofa...","description":"A working television studio built from the pack's own modules on its own 2 m floor tiles, 14 by 12 m: a blue cyclorama turning a corner at the far left, a news desk on a two module riser against a set wall at the right with a green screen run down the side, a chat show sofa and two interview chairs on marked up floor between them, and a weather screen against the cyc. Overhead, eleven bays of lighting grid with walkways carry fresnels, softboxes and a barn door spot. On the floor, two pedestal cameras, one of them with an autocue, a shoulder camera on a tripod, a jib arm, a sound boom, floor monitors, cable ramps, sandbags, braces and mark spikes. Behind a glazed partition with a door in it, the production gallery: three bays of desk with monitor stacks, a vision mixer, a sound desk and a talkback panel, operator chairs, two monitor walls and an equipment rack. Through a run of set flats and a soundlock door under the on air light, the back of house: a lit makeup station, a wardrobe rail, the green room sofa and table, and the prop store shelving.","status":"published","url":"https://3dassets.dev/assets/tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/35527/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tv-studio-and-broadcast-gallery-studio-f-0d3b5716-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/35527/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35527/v1/poster.webp","blurhash":"U4A^j{~W00Hq5S%g#QIA009s?wT1~7D$Y7tl","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":2655376,"triangles":63902,"vertices":138784,"meshes":243,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-7.341934992957301,-0.000058320792916065,-5],"max":[7,5.320025164657296,7.217444106719304]},"sizeMeters":[14.342,5.32,12.217],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T15:30:37.295Z","updatedAt":"2026-09-11T15:30:37.396Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35527/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StudioFloorAndProductionGalleryTVStudioAndBroadcastGallery(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35527/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35527/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35527/v1/model.glb\" alt=\"Studio Floor and Production Gallery (TV Studio and Broadcast Gallery)\" 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/35527/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/35527/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"tv-studio-and-broadcast-gallery","title":"TV Studio and Broadcast Gallery","url":"https://3dassets.dev/demos/tv-studio-and-broadcast-gallery"}}}