{"data":{"id":"122","slug":"theatre-stage-and-backstage","title":"Theatre Stage and Backstage","summary":"Walk a working playhouse: raked stalls and circle, an orchestra pit, a proscenium arch with the tabs part open on a dressed set, the fly floor and pin rail, and backstage through the dock to the dressing room.","url":"https://3dassets.dev/demos/theatre-stage-and-backstage","coverUrl":"https://cdn.3dassets.dev/media/theatre-stage-and-backstage-demo-4.png","featured":true,"pack":{"slug":"theatre-stage-and-backstage","title":"Theatre Stage and Backstage","url":"https://3dassets.dev/packs/theatre-stage-and-backstage","summary":"Realistic playhouse models: modular stage decking with a trap, a proscenium arch, house tabs on a track, fly bars, counterweights, scenery flats and rostra, raked stalls, a circle front and pit rail, and the dressing rooms, wardrobe and props tables backstage.","assetCount":53,"totalBytes":5436280,"starterScene":{"slug":"theatre-stage-and-backstage-playhouse-st-bcd91a59-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/35925/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-playhouse-st-bcd91a59-starter-scene","fileSize":2533860}},"placementCount":233,"assetCount":52,"spawn":{"position":[0,0.8,8.2],"yaw":180},"publishedAt":"2026-09-11T18:32:27.809Z","updatedAt":"2026-09-11T18:32:27.810Z","description":"## What is placed\n\nA whole playhouse in one room. Five raked rows of tip up stalls seating with stepped aisles, row letters and boxes at the sides, the circle front and its follow spot overhead, and tabs across the back of the house. In front of them a railed orchestra pit with rostra for the players, then the apron and its footlight strip. The proscenium arch frames a dressed set: painted flats and a door flat braced from behind, rostra, an armchair and a table, stage steps, a backdrop cloth and masking legs and borders. Stage right carries the counterweight frame, the pin rail, the prompt desk and the sandbags; stage left, through the scene dock door, is the get in ramp, the dressing room mirror stations and makeup tables, costume rails, a quick change booth, the props table and a stack of flight cases.\n\n## What moves\n\nWalk up to a piece and its clips play. The house tabs draw apart as two leaves on their track. The trap section in the stage deck hinges open, as do the door flat, the scene dock door, the exit doors, the flight cases and the hamper lid. Seats tip up in their rows, the fly bar rides in and out on its lines, the counterweight frame runs its weights, the follow spot tilts and the costume rail rolls on its castors.\n\n## What does not move, and why\n\nCloths, hemp lines, the fire curtain and cables are static geometry. None of it is reachable with the rigid node transforms this library uses: cloth bunching as a curtain gathers is exactly what a rigid node cannot do, so the drawn open tabs are modelled in that pose rather than faked. There is no cast, crew or audience, because nothing here is skinned. Every painted flat, poster and board face is abstract rather than readable, and no real theatre, production or play is named.","scene":{"version":1,"spawn":{"position":[0,0.8,8.2],"yaw":180},"ground":{"style":"none"},"environment":{"preset":"hall","wallHeight":9,"lampHeight":7.6,"shadows":true},"placements":[{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-5,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-5,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-5,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-5,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-5,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-3,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-3,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-3,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-3,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-3,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-1,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-1,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-trap-section-c946022f","position":[-1,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-1,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[-1,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[1,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[1,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[1,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[1,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[1,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[3,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[3,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[3,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[3,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[3,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[5,0,-6.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[5,0,-5.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[5,0,-4.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[5,0,-3.5],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-deck-module-5173fe61","position":[5,0,-2.5],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[-5,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[-3,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[-1,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[1,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[3,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","position":[5,0,-1.74],"rotation":0},{"asset":"theatre-stage-and-backstage-proscenium-arch-frame-f9dcb7bb","position":[0,0.9,-2.25],"rotation":0},{"asset":"theatre-stage-and-backstage-fire-curtain-guide-afd72e04","position":[-3.36,0.9,-2.45],"rotation":90},{"asset":"theatre-stage-and-backstage-fire-curtain-guide-afd72e04","position":[3.36,0.9,-2.45],"rotation":270},{"asset":"theatre-stage-and-backstage-house-tabs-on-track-open-00c29a91","position":[0,0.9,-2.95],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-leg-drape-a99e970d","position":[-4.6,0.9,-3.9],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-leg-drape-a99e970d","position":[4.6,0.9,-3.9],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-border-drape-88789270","position":[0,4.6,-3.9],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-leg-drape-a99e970d","position":[-4.6,0.9,-5.05],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-leg-drape-a99e970d","position":[4.6,0.9,-5.05],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-border-drape-88789270","position":[0,4.6,-5.05],"rotation":0},{"asset":"theatre-stage-and-backstage-backdrop-cloth-on-batten-358ce409","position":[0,0.9,-6.9],"rotation":0},{"asset":"theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","position":[-2.35,4.6,-4.4],"rotation":180},{"asset":"theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","position":[2.35,4.6,-4.4],"rotation":0},{"asset":"theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","position":[-2.35,4.6,-6],"rotation":180},{"asset":"theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","position":[2.35,4.6,-6],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[-3,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-painted-5c01f286","position":[-1.8,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[-0.6,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-door-flat-1964e852","position":[0.6,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-painted-5c01f286","position":[1.8,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[3,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[-3.55,0.9,-5],"rotation":90},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[-3.55,0.9,-3.8],"rotation":90},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[3.55,0.9,-5],"rotation":270},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[3.55,0.9,-3.8],"rotation":270},{"asset":"theatre-stage-and-backstage-stage-brace-and-weight-c75020db","position":[-2.8,0.9,-5.85],"rotation":180},{"asset":"theatre-stage-and-backstage-stage-brace-and-weight-c75020db","position":[2.4,0.9,-5.85],"rotation":180},{"asset":"theatre-stage-and-backstage-rostrum-block-f552283b","position":[-1.9,0.9,-5.15],"rotation":0},{"asset":"theatre-stage-and-backstage-rostrum-block-f552283b","position":[-1.9,0.9,-3.95],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-steps-2cbf11aa","position":[-0.6,0.9,-3.75],"rotation":180},{"asset":"theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","position":[0.9,0.9,-3.8],"rotation":338.04999999999995},{"asset":"theatre-stage-and-backstage-set-dressing-table-5d0f7164","position":[2.4,0.9,-3.6],"rotation":17.189999999999998},{"asset":"theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","position":[-1.9,1.5,-5],"rotation":28.649999999999977},{"asset":"theatre-stage-and-backstage-prompt-desk-with-monitor-a-568e24df","position":[5.6,0.9,-2.7],"rotation":270},{"asset":"theatre-stage-and-backstage-stage-manager-desk-with-pa-e34d027a","position":[-5.6,0.9,-2.7],"rotation":90},{"asset":"theatre-stage-and-backstage-counterweight-frame-with-w-65d65714","position":[5.75,0.9,-4.6],"rotation":270},{"asset":"theatre-stage-and-backstage-pin-rail-40ffb613","position":[5.65,0.9,-6.4],"rotation":270},{"asset":"theatre-stage-and-backstage-sandbag-pile-983c6955","position":[4.75,0.9,-6.9],"rotation":0},{"asset":"theatre-stage-and-backstage-rope-coil-on-a-cleat-6a373854","position":[4.55,0.9,-5.95],"rotation":40.110000000000014},{"asset":"theatre-stage-and-backstage-flight-case-c898f4a9","position":[-5.45,0.9,-6.5],"rotation":20.05000000000001},{"asset":"theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","position":[-1.2,0,-0.7],"rotation":11.45999999999998},{"asset":"theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","position":[1,0,-0.7],"rotation":349.5},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[-3,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[-1,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[1,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[3,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[-4.8,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[0,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[4.8,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[-2.4,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[2.4,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[-4.8,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[0,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[4.8,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[-2.4,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[2.4,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[-4.8,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[0,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[4.8,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[-2.4,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[2.4,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[-4.8,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[0,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[4.8,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[-2.4,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[2.4,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[-4.8,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[0,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249","position":[4.8,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[-2.4,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-step-module-fda1c692","position":[2.4,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[-6.9,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[6.9,0,2.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[-6.9,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[6.9,0.5,4.5],"rotation":180},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-7,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-5,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-3,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-1,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[1,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[3,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[5,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[7,0,1],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-7,0.25,3],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-7,0.5,5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-7,1,7],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-7,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[7,0.25,3],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[7,0.5,5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[7,1,7],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[7,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-5,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-3,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[-1,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[1,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[3,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","position":[5,0.6,8.5],"rotation":0},{"asset":"theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","position":[-8,0,1],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-8,0,3],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-8,0,5],"rotation":90},{"asset":"theatre-stage-and-backstage-control-box-window-frame-a919fc62","position":[-8,0,7],"rotation":90},{"asset":"theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","position":[8,0,1],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[8,0,3],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[8,0,5],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[8,0,7],"rotation":270},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[-7.9,2.6,3],"rotation":90},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[-7.9,2.6,7],"rotation":90},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[7.9,2.6,3],"rotation":270},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[7.9,2.6,7],"rotation":270},{"asset":"theatre-stage-and-backstage-box-seating-unit-0c0f5168","position":[-6.4,1.7,1.6],"rotation":0},{"asset":"theatre-stage-and-backstage-box-seating-unit-0c0f5168","position":[6.4,1.7,1.6],"rotation":0},{"asset":"theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","position":[-3,3.2,8],"rotation":180},{"asset":"theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","position":[0,3.2,8],"rotation":180},{"asset":"theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","position":[3,3.2,8],"rotation":180},{"asset":"theatre-stage-and-backstage-follow-spot-on-a-rail-f0bba477","position":[0,4.25,8.7],"rotation":180},{"asset":"theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","position":[-2,4.2,2.6],"rotation":0},{"asset":"theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","position":[2,4.2,2.6],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-6.07,0,-7],"rotation":270},{"asset":"theatre-stage-and-backstage-scene-dock-door-module-490e11a3","position":[-6.07,0,-5],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-6.07,0,-3],"rotation":270},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-11,0,-7],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-11,0,-5],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-11,0,-3],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-9,0,-7],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-9,0,-5],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-9,0,-3],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-7,0,-7],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-7,0,-5],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-7,0,-3],"rotation":0},{"asset":"theatre-stage-and-backstage-get-in-ramp-16be106b","position":[-11.9,0,-6.6],"rotation":270},{"asset":"theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1","position":[-10,0,-7.6],"rotation":0},{"asset":"theatre-stage-and-backstage-makeup-table-with-stool-efb91280","position":[-8.1,0,-7.5],"rotation":0},{"asset":"theatre-stage-and-backstage-wig-block-stand-347eee98","position":[-9,0,-7.4],"rotation":0},{"asset":"theatre-stage-and-backstage-costume-rail-with-covers-8ed59fc5","position":[-10.7,0,-4.4],"rotation":90},{"asset":"theatre-stage-and-backstage-costume-rail-with-covers-8ed59fc5","position":[-10.2,0,-3],"rotation":90},{"asset":"theatre-stage-and-backstage-quick-change-booth-frame-9bc2af73","position":[-7,0,-2.6],"rotation":22.920000000000016},{"asset":"theatre-stage-and-backstage-props-table-with-numbered--83c6e43e","position":[-7.5,0,-5.6],"rotation":270},{"asset":"theatre-stage-and-backstage-prop-shelf-unit-791c9034","position":[-8.8,0,-2.4],"rotation":180},{"asset":"theatre-stage-and-backstage-flight-case-hamper-7c0d5f54","position":[-8,0,-3.9],"rotation":17.189999999999998},{"asset":"theatre-stage-and-backstage-flight-case-c898f4a9","position":[-9.2,0,-4.9],"rotation":338.04999999999995},{"asset":"theatre-stage-and-backstage-tannoy-speaker-efacfc9d","position":[-6.2,2.2,-6.6],"rotation":90},{"asset":"theatre-stage-and-backstage-rope-coil-on-a-cleat-6a373854","position":[-8.7,0,-6.3],"rotation":120.32},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-7,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-3,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-1,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[3,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[7,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","position":[-5,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","position":[5,0.6,9.7],"rotation":180},{"asset":"theatre-stage-and-backstage-house-tabs-on-track-2201a546","position":[0,0.6,9.35],"rotation":180},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[-7.9,2.6,5],"rotation":90},{"asset":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","position":[7.9,2.6,5],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-8,0,-1],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[8,0,-1],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[8,0,-3],"rotation":270},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-7.2,0,-1.6],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-9.2,0,-2],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-11.2,0,-2],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-5,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-3,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[-1,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[1,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[3,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","position":[5,0,-1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[-5.05,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","position":[5.05,0,0.1],"rotation":0},{"asset":"theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","position":[-3.3,0,-0.75],"rotation":6.8700000000000045},{"asset":"theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","position":[3.1,0,-0.8],"rotation":352.4},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[-6.9,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[6.9,0.25,3.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[-6.9,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[6.9,0.75,5.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[-6.9,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-row-letter-plate-160b8d03","position":[6.9,1,6.5],"rotation":180},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[6.2,0,-7],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[6.2,0,-5],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[6.2,0,-3],"rotation":90},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-3,0,-7.45],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[-1,0,-7.45],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[1,0,-7.45],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[3,0,-7.45],"rotation":0},{"asset":"theatre-stage-and-backstage-house-wall-module-0ed307a4","position":[5,0,-7.75],"rotation":0},{"asset":"theatre-stage-and-backstage-flight-case-c898f4a9","position":[4.4,0.9,-4.5],"rotation":340},{"asset":"theatre-stage-and-backstage-sandbag-pile-983c6955","position":[4.5,0.9,-3.1],"rotation":0},{"asset":"theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","position":[-2.35,5.6,-3.6],"rotation":0},{"asset":"theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","position":[2.35,5.6,-3.6],"rotation":0},{"asset":"theatre-stage-and-backstage-scenery-flat-eef5eda8","position":[-4.2,0.9,-6.2],"rotation":0},{"asset":"theatre-stage-and-backstage-stage-brace-and-weight-c75020db","position":[-4.2,0.9,-5.85],"rotation":180},{"asset":"theatre-stage-and-backstage-rostrum-block-f552283b","position":[1.5,0.9,-5.1],"rotation":0},{"asset":"theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","position":[1.5,1.5,-5.1],"rotation":12.5},{"asset":"theatre-stage-and-backstage-tannoy-speaker-efacfc9d","position":[-6.2,2.2,-3.4],"rotation":90},{"asset":"theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1","position":[-11.4,0,-3.6],"rotation":90},{"asset":"theatre-stage-and-backstage-wig-block-stand-347eee98","position":[-11.4,0,-4.6],"rotation":0},{"asset":"theatre-stage-and-backstage-makeup-table-with-stool-efb91280","position":[-10.2,0,-6.6],"rotation":0},{"asset":"theatre-stage-and-backstage-prop-shelf-unit-791c9034","position":[-6.6,0,-4.4],"rotation":270},{"asset":"theatre-stage-and-backstage-flight-case-c898f4a9","position":[-10.6,0,-5.6],"rotation":15.199999999999989},{"asset":"theatre-stage-and-backstage-sandbag-pile-983c6955","position":[-6.7,0,-7.2],"rotation":8}],"points":[{"position":[0,0.6,2.2],"title":"The proscenium arch","text":"Ten metres of moulded frame, with the house tabs drawn part open behind it and the fire curtain guides running up the jambs. Everything the audience sees is cut by this opening.","asset":"theatre-stage-and-backstage-proscenium-arch-frame-f9dcb7bb"},{"position":[0,0.6,-4.4],"title":"The dressed set","text":"Flats, braces and rostra stand on decking modules that tile out to any stage size. One module is a trap section: its lid hinges open on the deck line.","asset":"theatre-stage-and-backstage-stage-trap-section-c946022f"},{"position":[5,0.6,-5.4],"title":"Fly floor and pin rail","text":"Bars fly in on hemp lines with sandbag cradles, balanced by a loaded counterweight frame and made off at the pin rail. The prompt desk sits in the corner beside it.","asset":"theatre-stage-and-backstage-counterweight-frame-with-w-65d65714"},{"position":[0,0.6,4.6],"title":"The raked stalls","text":"Tip up seats in three metre row modules, stepped up an aisle that climbs a quarter of a metre a row, with the circle front and its follow spot overhead and boxes at the sides.","asset":"theatre-stage-and-backstage-stalls-seating-row-71aea249"},{"position":[0,0.6,-0.8],"title":"The orchestra pit","text":"A railed pit sunk between the stalls and the apron, floored with rostra for the players. Above it the footlight strip runs the width of the stage edge.","asset":"theatre-stage-and-backstage-orchestra-pit-rail-45132244"},{"position":[-9,0.6,-5],"title":"Backstage through the dock","text":"Past the scene dock door: mirror stations and makeup tables, costume rails on castors, a quick change booth, flight cases and the props table with its numbered spaces.","asset":"theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1"}],"poster":{"position":[0,2.55,5.4],"lookAt":[0,2.45,-3.5]}},"bounds":{"min":[-14.700048861406247,-0.00005189053732235216,-10],"max":[10.13996719572022,9.339863112672269,11.83996719572022]},"assets":[{"id":"35876","slug":"theatre-stage-and-backstage-stage-deck-module-5173fe61","title":"Stage Deck Module (Theatre Stage and Backstage)","summary":"A 2 by 1 m stage deck on 900 mm legs: a painted ply top on a welded frame with sleeved legs, levelling feet and steel corner plates. Repeat it on the 2 by 1 m grid to lay a stage of any size.","description":"A 2 by 1 m stage deck on 900 mm legs: a painted ply top on a welded frame with sleeved legs, levelling feet and steel corner plates. Repeat it on the 2 by 1 m grid to lay a stage of any size. Ports deck-left, deck-right, deck-front and deck-back sit on the deck surface at the edge midpoints, so modules butt without a gap and the trap section drops straight into the grid. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-deck-module-5173fe61","cdnUrl":"https://cdn.3dassets.dev/assets/35876/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-deck-module-5173fe61","thumbnailUrl":"https://cdn.3dassets.dev/assets/35876/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35876/v1/poster.webp","blurhash":"UC8;75ogD*oz~VxuIoR*IUxuofM{4.oKxtRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":40256,"triangles":896,"vertices":2009,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.000045990617935809386,-0.50007629627369],"max":[1,0.9000251777703177,0.50007629627369]},"sizeMeters":[2,0.9,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:22.283Z","updatedAt":"2026-09-11T18:07:22.401Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35876/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageDeckModuleTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35876/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35876/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35876/v1/model.glb\" alt=\"Stage Deck Module (Theatre Stage and Backstage)\" 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/35876/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/35876/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35873","slug":"theatre-stage-and-backstage-stage-trap-section-c946022f","title":"Stage Trap Section (Theatre Stage and Backstage)","summary":"The deck module with a 900 mm trap in it: a boarded lid with a ring pull sitting in a rebated well, four guide posts running down into the understage and the same legs and corner plates as a plain module.","description":"The deck module with a 900 mm trap in it: a boarded lid with a ring pull sitting in a rebated well, four guide posts running down into the understage and the same legs and corner plates as a plain module. The lid is a named node on the deck surface, so it drops straight down its guides into the well and comes back flush; the understage machinery that would drive it is not modelled. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: trap, trap/gilt. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-trap-section-c946022f","cdnUrl":"https://cdn.3dassets.dev/assets/35873/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-trap-section-c946022f","thumbnailUrl":"https://cdn.3dassets.dev/assets/35873/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35873/v1/poster.webp","blurhash":"UC97Fbt79ZkC~VxuIoR*E1xtt6M|4.soxaRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":60936,"triangles":1336,"vertices":2993,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1,0.000045990617935809386,-0.50007629627369],"max":[1,0.9155059227022129,0.50007629627369]},"sizeMeters":[2,0.915,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:22.212Z","updatedAt":"2026-09-11T18:07:22.329Z","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/35873/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 StageTrapSectionTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35873/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/35873/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35873/v1/model.glb\" alt=\"Stage Trap Section (Theatre Stage and Backstage)\" 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/35873/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/35873/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35874","slug":"theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","title":"Apron Edge with Footlight Strip (Theatre Stage and Backstage)","summary":"A 2 m run of apron edge: the black downstage facing with a gilt moulded nosing, a boarded apron strip behind it and a reflector trough of six footlights let into the deck. Butt the sections along the front of a stage of deck modules.","description":"A 2 m run of apron edge: the black downstage facing with a gilt moulded nosing, a boarded apron strip behind it and a reflector trough of six footlights let into the deck. Butt the sections along the front of a stage of deck modules. Ports apron-left and apron-right sit at mid height on the ends of the facing. The lamps are emissive geometry, not lights: add a real light source in the engine. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","cdnUrl":"https://cdn.3dassets.dev/assets/35874/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-apron-edge-with-footlight--ae05f3d8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35874/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35874/v1/poster.webp","blurhash":"UDATTDxtD*t6~U-oRkRjD*-nxsM|9Ixt%KNG","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":30688,"triangles":680,"vertices":1462,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.0011999607086182,0.000034777987780787445,-0.26001891693102097],"max":[1,1.0049883274582447,0.20996039321993248]},"sizeMeters":[2.001,1.005,0.47],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:22.229Z","updatedAt":"2026-09-11T18:07:22.340Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35874/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ApronEdgeWithFootlightStripTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35874/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35874/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35874/v1/model.glb\" alt=\"Apron Edge with Footlight Strip (Theatre Stage and Backstage)\" 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/35874/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/35874/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35875","slug":"theatre-stage-and-backstage-proscenium-arch-frame-f9dcb7bb","title":"Proscenium Arch Frame (Theatre Stage and Backstage)","summary":"The arch that frames a playhouse stage: two 1.4 m jambs on boarded plinths with gilt pilasters and fluted reveal beads, and a 1.2 m head with a moulded band and an abstract centre cartouche over a 7.2 by 5.2 m opening. It stands 10 m wide and 6.4 m tall.","description":"The arch that frames a playhouse stage: two 1.4 m jambs on boarded plinths with gilt pilasters and fluted reveal beads, and a 1.2 m head with a moulded band and an abstract centre cartouche over a 7.2 by 5.2 m opening. It stands 10 m wide and 6.4 m tall. The opening is sized so the house tabs, the fire curtain guides and a 4 m bar pair all sit behind it. Every ornament is abstract: nothing here carries a name, a date or a readable device. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-proscenium-arch-frame-f9dcb7bb","cdnUrl":"https://cdn.3dassets.dev/assets/35875/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-proscenium-arch-frame-f9dcb7bb","thumbnailUrl":"https://cdn.3dassets.dev/assets/35875/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35875/v1/poster.webp","blurhash":"UEB.o+xFIV%1~B=yE2NGKNxZRkE2Efx[xaIV","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":30776,"triangles":668,"vertices":1497,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-5.059999942779541,-0.00016632304766556194,-0.47006560947968756],"max":[5.059999942779541,6.439863112672269,0.5498921379265533]},"sizeMeters":[10.12,6.44,1.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:22.265Z","updatedAt":"2026-09-11T18:07:22.379Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35875/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ProsceniumArchFrameTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35875/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35875/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35875/v1/model.glb\" alt=\"Proscenium Arch Frame (Theatre Stage and Backstage)\" 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/35875/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/35875/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35922","slug":"theatre-stage-and-backstage-fire-curtain-guide-afd72e04","title":"Fire Curtain Guide (Theatre Stage and Backstage)","summary":"The guide channel the fire curtain runs in: a 5.2 m black channel with a steel smoke seal up its face, a shoe at the foot, a gilt head block and the edge of the curtain sitting in it at the top.","description":"The guide channel the fire curtain runs in: a 5.2 m black channel with a steel smoke seal up its face, a shoe at the foot, a gilt head block and the edge of the curtain sitting in it at the top. The curtain is a flexible blanket and is not rigged: only its edge in the guide is modelled, so a project can drop its own. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-fire-curtain-guide-afd72e04","cdnUrl":"https://cdn.3dassets.dev/assets/35922/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-fire-curtain-guide-afd72e04","thumbnailUrl":"https://cdn.3dassets.dev/assets/35922/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35922/v1/poster.webp","blurhash":"U04oD:xa009ty=s:L$EfA8oJ,LNb~oWB02t7","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":19716,"triangles":384,"vertices":860,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.150013426261749,0,-0.1899999976158142],"max":[0.150013426261749,5.201189965518112,0.1899999976158142]},"sizeMeters":[0.3,5.201,0.38],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:56.654Z","updatedAt":"2026-09-11T18:07:56.900Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35922/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FireCurtainGuideTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35922/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35922/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35922/v1/model.glb\" alt=\"Fire Curtain Guide (Theatre Stage and Backstage)\" 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/35922/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/35922/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35877","slug":"theatre-stage-and-backstage-house-tabs-on-track-open-00c29a91","title":"House Tabs on a Track, Drawn Open (Theatre Stage and Backstage)","summary":"The same 7.4 m tab track with both leaves drawn off to the sides and gathered into deep folds, leaving the opening clear. Use it where the curtain is open for the whole scene and nothing needs to move.","description":"The same 7.4 m tab track with both leaves drawn off to the sides and gathered into deep folds, leaving the opening clear. Use it where the curtain is open for the whole scene and nothing needs to move. The open pose is baked into the geometry, so this variant carries no clips: take the closed model where the tabs have to draw. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: tab-left, tab-left/black, tab-left/gilt, tab-right, tab-right/black, tab-right/gilt. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-house-tabs-on-track-open-00c29a91","cdnUrl":"https://cdn.3dassets.dev/assets/35877/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-house-tabs-on-track-open-00c29a91","thumbnailUrl":"https://cdn.3dassets.dev/assets/35877/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35877/v1/poster.webp","blurhash":"U7C4;H$+0y#,.S}aMx9@3UXmrXM_xHtlbaIU","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":102824,"triangles":3048,"vertices":6582,"meshes":8,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-3.7514355677082305,0,-0.1754269052957304],"max":[3.7514355677082305,5.290167280165652,0.3068702195500143]},"sizeMeters":[7.503,5.29,0.482],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:25.184Z","updatedAt":"2026-09-11T18:07:25.324Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35877/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HouseTabsOnATrackDrawnOpenTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35877/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35877/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35877/v1/model.glb\" alt=\"House Tabs on a Track, Drawn Open (Theatre Stage and Backstage)\" 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/35877/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/35877/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35879","slug":"theatre-stage-and-backstage-stage-leg-drape-a99e970d","title":"Stage Leg Drape (Theatre Stage and Backstage)","summary":"A masking leg: a 1.6 m wide pleated black-red cloth hanging 6 m from its own webbing heading and tie lines on a pipe. Hang a pair each side of every entrance to mask the wings.","description":"A masking leg: a 1.6 m wide pleated black-red cloth hanging 6 m from its own webbing heading and tie lines on a pipe. Hang a pair each side of every entrance to mask the wings. The cloth is rigid geometry with no rig: a drape only ever moves by flying the bar it is tied to, so fly the whole model. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-leg-drape-a99e970d","cdnUrl":"https://cdn.3dassets.dev/assets/35879/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-leg-drape-a99e970d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35879/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35879/v1/poster.webp","blurhash":"U27]F@$k0J1ao|oMa1NZ7cW;[Yr@ozoMV@R%","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":57892,"triangles":1384,"vertices":2926,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.949999988079071,0,-0.11464522790925366],"max":[0.949999988079071,6.104006021377219,0.14171025168912274]},"sizeMeters":[1.9,6.104,0.256],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:25.179Z","updatedAt":"2026-09-11T18:07:25.326Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35879/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageLegDrapeTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35879/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35879/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35879/v1/model.glb\" alt=\"Stage Leg Drape (Theatre Stage and Backstage)\" 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/35879/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/35879/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35878","slug":"theatre-stage-and-backstage-stage-border-drape-88789270","title":"Stage Border Drape (Theatre Stage and Backstage)","summary":"A masking border: the same pleated cloth 8 m wide and 1.4 m deep, hung across the stage on its pipe to mask the fly bars and lanterns above the scene.","description":"A masking border: the same pleated cloth 8 m wide and 1.4 m deep, hung across the stage on its pipe to mask the fly bars and lanterns above the scene. The cloth is rigid geometry with no rig: a drape only ever moves by flying the bar it is tied to, so fly the whole model. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-border-drape-88789270","cdnUrl":"https://cdn.3dassets.dev/assets/35878/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-border-drape-88789270","thumbnailUrl":"https://cdn.3dassets.dev/assets/35878/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35878/v1/poster.webp","blurhash":"U8ARxIofOBxaOr}ts;W;0_S~=fn+w11GOWxG","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":186488,"triangles":4400,"vertices":9826,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-4.150000095367432,0.0002214917058412924,-0.11148836986778908],"max":[4.150000095367432,1.5038105011091834,0.13780158536194498]},"sizeMeters":[8.3,1.504,0.249],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:25.196Z","updatedAt":"2026-09-11T18:07:25.321Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35878/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageBorderDrapeTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35878/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35878/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35878/v1/model.glb\" alt=\"Stage Border Drape (Theatre Stage and Backstage)\" 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/35878/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/35878/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35881","slug":"theatre-stage-and-backstage-backdrop-cloth-on-batten-358ce409","title":"Backdrop Cloth on a Batten (Theatre Stage and Backstage)","summary":"An 8 by 5.4 m painted backcloth tied to a top batten with a weighted pipe in the bottom pocket: a rippled canvas ground with abstract painted blocks on it, never a readable scene.","description":"An 8 by 5.4 m painted backcloth tied to a top batten with a weighted pipe in the bottom pocket: a rippled canvas ground with abstract painted blocks on it, never a readable scene. The cloth is rigid geometry: it flies as one model on its batten and has no rig of its own. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-backdrop-cloth-on-batten-358ce409","cdnUrl":"https://cdn.3dassets.dev/assets/35881/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-backdrop-cloth-on-batten-358ce409","thumbnailUrl":"https://cdn.3dassets.dev/assets/35881/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35881/v1/poster.webp","blurhash":"UEEy=6_300%Mn#_4%gIA00My%gR+X9RinPbF","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":46656,"triangles":1088,"vertices":2224,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-4.199999809265137,0.00024862442519513195,-0.7026399927645868],"max":[4.199999809265137,5.4579560696072775,0.07503999345600071]},"sizeMeters":[8.4,5.458,0.778],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:27.945Z","updatedAt":"2026-09-11T18:07:28.082Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35881/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BackdropClothOnABattenTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35881/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35881/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35881/v1/model.glb\" alt=\"Backdrop Cloth on a Batten (Theatre Stage and Backstage)\" 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/35881/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/35881/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35882","slug":"theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","title":"Fly Bar with Lines and Sandbag Cradle (Theatre Stage and Backstage)","summary":"A 4 m fly bar hung on three hemp lines, with four hook clamps on it and a sandbagged cradle on its own line at the end. Butt two bars for an 8 m barrel over a stage and hang cloths, flats or lanterns from them.","description":"A 4 m fly bar hung on three hemp lines, with four hook clamps on it and a sandbagged cradle on its own line at the end. Butt two bars for an 8 m barrel over a stage and hang cloths, flats or lanterns from them. Ports bar-left and bar-right sit on the pipe centre line at both ends. The pipe and its clamps are one named node, so the bar flies out on its lines and back in; the hemp lines and the sandbag cradle beside it are static, because a rope is not reachable with a rigid node transform. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: bar, bar/black. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","cdnUrl":"https://cdn.3dassets.dev/assets/35882/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-fly-bar-with-lines-and-san-2b2d681b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35882/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35882/v1/poster.webp","blurhash":"U9AAUE0Lxuoct8~pE1V]4n?ax]of9GIU?aj]","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":42780,"triangles":972,"vertices":1984,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2,0,-0.15001285098333705],"max":[2.600007589940902,2.5800579760124602,0.15001285098333705]},"sizeMeters":[4.6,2.58,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:27.970Z","updatedAt":"2026-09-11T18:07:28.100Z","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/35882/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 FlyBarWithLinesAndSandbagCradleTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35882/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/35882/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35882/v1/model.glb\" alt=\"Fly Bar with Lines and Sandbag Cradle (Theatre Stage and Backstage)\" 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/35882/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/35882/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35885","slug":"theatre-stage-and-backstage-scenery-flat-eef5eda8","title":"Scenery Flat (Theatre Stage and Backstage)","summary":"A 1.2 by 3.6 m canvas flat: a timber frame with two toggle rails and corner braces on the back and primed canvas stretched over the face. Butt a run of them for a stage wall.","description":"A 1.2 by 3.6 m canvas flat: a timber frame with two toggle rails and corner braces on the back and primed canvas stretched over the face. Butt a run of them for a stage wall. Ports flat-left and flat-right sit at mid height on the stiles, so flats butt edge to edge and the door flat drops into the same run. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-scenery-flat-eef5eda8","cdnUrl":"https://cdn.3dassets.dev/assets/35885/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-scenery-flat-eef5eda8","thumbnailUrl":"https://cdn.3dassets.dev/assets/35885/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35885/v1/poster.webp","blurhash":"U6ECa#+|005*^kxa9aE100I:~q^Q%MoyIVM|","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":21572,"triangles":464,"vertices":1047,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999267396846261,0,-0.08996153833442866],"max":[0.5999267396846261,3.5999999046325684,0.26996154548698603]},"sizeMeters":[1.2,3.6,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:30.906Z","updatedAt":"2026-09-11T18:07:31.018Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35885/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneryFlatTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35885/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35885/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35885/v1/model.glb\" alt=\"Scenery Flat (Theatre Stage and Backstage)\" 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/35885/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/35885/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35887","slug":"theatre-stage-and-backstage-scenery-flat-painted-5c01f286","title":"Scenery Flat, Painted (Theatre Stage and Backstage)","summary":"The same 1.2 by 3.6 m flat painted for a room set: a deep scenic ground with abstract blocks, a band and a disc laid over it. The painting is deliberately abstract and carries no words or devices.","description":"The same 1.2 by 3.6 m flat painted for a room set: a deep scenic ground with abstract blocks, a band and a disc laid over it. The painting is deliberately abstract and carries no words or devices. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-scenery-flat-painted-5c01f286","cdnUrl":"https://cdn.3dassets.dev/assets/35887/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-scenery-flat-painted-5c01f286","thumbnailUrl":"https://cdn.3dassets.dev/assets/35887/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35887/v1/poster.webp","blurhash":"U99RC5Y*00qGx]o|M{MxMxn4xHPA$js;J,NF","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":31524,"triangles":664,"vertices":1485,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999267396846261,0,-0.5470020262660402],"max":[0.5999267396846261,3.5999999046325684,0.26996154548698603]},"sizeMeters":[1.2,3.6,0.817],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:30.953Z","updatedAt":"2026-09-11T18:07:31.061Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35887/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneryFlatPaintedTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35887/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35887/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35887/v1/model.glb\" alt=\"Scenery Flat, Painted (Theatre Stage and Backstage)\" 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/35887/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/35887/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35886","slug":"theatre-stage-and-backstage-door-flat-1964e852","title":"Door Flat (Theatre Stage and Backstage)","summary":"The same 1.2 by 3.6 m flat with a 820 by 2050 mm doorway in it and a panelled door hung in the opening on a gilt knob, so a run of flats has a way on and off.","description":"The same 1.2 by 3.6 m flat with a 820 by 2050 mm doorway in it and a panelled door hung in the opening on a gilt knob, so a run of flats has a way on and off. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: door-1, door-1/ply, door-1/gilt. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-door-flat-1964e852","cdnUrl":"https://cdn.3dassets.dev/assets/35886/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-door-flat-1964e852","thumbnailUrl":"https://cdn.3dassets.dev/assets/35886/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35886/v1/poster.webp","blurhash":"U5DJFp~q0000?ut88{D%00M|-;xsIAxu.8IV","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":42704,"triangles":892,"vertices":2008,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999267396846261,0,-0.09004532058141773],"max":[0.5999267396846261,3.5999999046325684,0.014015839337386496]},"sizeMeters":[1.2,3.6,0.104],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:31.027Z","updatedAt":"2026-09-11T18:07:31.173Z","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/35886/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 DoorFlatTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35886/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/35886/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35886/v1/model.glb\" alt=\"Door Flat (Theatre Stage and Backstage)\" 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/35886/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/35886/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35892","slug":"theatre-stage-and-backstage-stage-brace-and-weight-c75020db","title":"Stage Brace and Weight (Theatre Stage and Backstage)","summary":"The brace that holds a flat upright: a telescopic tube with a hook at the top and a shoe at the foot, standing on a 420 mm cast stage weight with a gilt edge and a lifting handle.","description":"The brace that holds a flat upright: a telescopic tube with a hook at the top and a shoe at the foot, standing on a 420 mm cast stage weight with a gilt edge and a lifting handle. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-brace-and-weight-c75020db","cdnUrl":"https://cdn.3dassets.dev/assets/35892/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-brace-and-weight-c75020db","thumbnailUrl":"https://cdn.3dassets.dev/assets/35892/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35892/v1/poster.webp","blurhash":"U56Hu^xp00R;Iw9ZW9~W?Ft4NIR.M|WExtax","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"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":21224,"triangles":456,"vertices":970,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.20000000298023224,0,-1.0117483191486265],"max":[0.23999999463558197,1.9874317646026611,0.23999633512376672]},"sizeMeters":[0.44,1.987,1.252],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:33.857Z","updatedAt":"2026-09-11T18:07:34.057Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35892/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageBraceAndWeightTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35892/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35892/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35892/v1/model.glb\" alt=\"Stage Brace and Weight (Theatre Stage and Backstage)\" 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/35892/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/35892/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35888","slug":"theatre-stage-and-backstage-rostrum-block-f552283b","title":"Rostrum Block (Theatre Stage and Backstage)","summary":"A 1.2 m square rostrum 600 mm high: a boarded top on a folding frame with rails, and a gilt nosing along the front edge. Stack them for a level or line them up for a low platform.","description":"A 1.2 m square rostrum 600 mm high: a boarded top on a folding frame with rails, and a gilt nosing along the front edge. Stack them for a level or line them up for a low platform. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-rostrum-block-f552283b","cdnUrl":"https://cdn.3dassets.dev/assets/35888/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-rostrum-block-f552283b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35888/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35888/v1/poster.webp","blurhash":"UBA0q3xu9Yog~VogIUfk4oRjWARj0LWAs:WA","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":29460,"triangles":640,"vertices":1425,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.00004091084860219363,-0.6000000238418579],"max":[0.6000000238418579,0.5999763670290205,0.6000000238418579]},"sizeMeters":[1.2,0.6,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:30.929Z","updatedAt":"2026-09-11T18:07:31.039Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35888/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RostrumBlockTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35888/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35888/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35888/v1/model.glb\" alt=\"Rostrum Block (Theatre Stage and Backstage)\" 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/35888/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/35888/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35889","slug":"theatre-stage-and-backstage-stage-steps-2cbf11aa","title":"Stage Steps (Theatre Stage and Backstage)","summary":"A three tread stage stair rising 600 mm to rostrum height, 1 m wide with gilt nosings and closed black strings. The top tread stands against a rostrum or the end of a deck run.","description":"A three tread stage stair rising 600 mm to rostrum height, 1 m wide with gilt nosings and closed black strings. The top tread stands against a rostrum or the end of a deck run. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-steps-2cbf11aa","cdnUrl":"https://cdn.3dassets.dev/assets/35889/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-steps-2cbf11aa","thumbnailUrl":"https://cdn.3dassets.dev/assets/35889/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35889/v1/poster.webp","blurhash":"U69%eks+00R+~VNGE1R*00IpayRkM{-pIpIo","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":34920,"triangles":768,"vertices":1719,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5074999928474426,-0.000016548803874416596,-0.3900304359087746],"max":[0.5074999928474426,0.5999952058517329,0.4200304371008675]},"sizeMeters":[1.015,0.6,0.81],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:33.730Z","updatedAt":"2026-09-11T18:07:33.849Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35889/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageStepsTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35889/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35889/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35889/v1/model.glb\" alt=\"Stage Steps (Theatre Stage and Backstage)\" 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/35889/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/35889/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35890","slug":"theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","title":"Set Dressing Armchair (Theatre Stage and Backstage)","summary":"A period armchair for a room set: a crimson buttoned seat, back and arms on a boarded carcass, with turned gilt front legs, scrolled arm caps and gilt piping round the seat. It is 780 mm wide and sits 440 mm high.","description":"A period armchair for a room set: a crimson buttoned seat, back and arms on a boarded carcass, with turned gilt front legs, scrolled arm caps and gilt piping round the seat. It is 780 mm wide and sits 440 mm high. The upholstery is rigid geometry: it does not compress under a sitter. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","cdnUrl":"https://cdn.3dassets.dev/assets/35890/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-set-dressing-armchair-8b3b7993","thumbnailUrl":"https://cdn.3dassets.dev/assets/35890/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35890/v1/poster.webp","blurhash":"UCCq+2-V0{NG{,njFsoL0eNG$Rt6C4ozw0NG","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":70756,"triangles":1756,"vertices":3581,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.44449999928474426,-0.000007203751663631408,-0.380002122357268],"max":[0.44449999928474426,0.8150406635109184,0.380002122357268]},"sizeMeters":[0.889,0.815,0.76],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:33.751Z","updatedAt":"2026-09-11T18:07:33.878Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35890/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SetDressingArmchairTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35890/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35890/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35890/v1/model.glb\" alt=\"Set Dressing Armchair (Theatre Stage and Backstage)\" 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/35890/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/35890/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35891","slug":"theatre-stage-and-backstage-set-dressing-table-5d0f7164","title":"Set Dressing Table (Theatre Stage and Backstage)","summary":"A small side table for a room set: a bullnosed top 780 by 560 mm at 715 mm on tapered gilt legs with an H stretcher, dressed with a runner over one end and a prop book on the other.","description":"A small side table for a room set: a bullnosed top 780 by 560 mm at 715 mm on tapered gilt legs with an H stretcher, dressed with a runner over one end and a prop book on the other. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-set-dressing-table-5d0f7164","cdnUrl":"https://cdn.3dassets.dev/assets/35891/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-set-dressing-table-5d0f7164","thumbnailUrl":"https://cdn.3dassets.dev/assets/35891/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35891/v1/poster.webp","blurhash":"UHBpUq%M01IU~q%MD%IUo~t7RPM|NFjZjIWX","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":30848,"triangles":672,"vertices":1449,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.38999998569488525,0,-0.2800115867628367],"max":[0.38999998569488525,0.7659801310712477,0.2800115867628367]},"sizeMeters":[0.78,0.766,0.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:33.773Z","updatedAt":"2026-09-11T18:07:33.874Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35891/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SetDressingTableTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35891/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35891/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35891/v1/model.glb\" alt=\"Set Dressing Table (Theatre Stage and Backstage)\" 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/35891/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/35891/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35893","slug":"theatre-stage-and-backstage-prompt-desk-with-monitor-a-568e24df","title":"Prompt Desk with Monitor and Cue Light (Theatre Stage and Backstage)","summary":"The corner desk that runs a show from the wing: a boarded top at 900 mm on a black frame with a shelf, a bezelled monitor showing the stage, a paging microphone on a gooseneck, a cue light head in red and green, and the prompt copy open on the desk.","description":"The corner desk that runs a show from the wing: a boarded top at 900 mm on a black frame with a shelf, a bezelled monitor showing the stage, a paging microphone on a gooseneck, a cue light head in red and green, and the prompt copy open on the desk. The monitor image and the cue light heads are emissive geometry, not lights or a video feed. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-prompt-desk-with-monitor-a-568e24df","cdnUrl":"https://cdn.3dassets.dev/assets/35893/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-prompt-desk-with-monitor-a-568e24df","thumbnailUrl":"https://cdn.3dassets.dev/assets/35893/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35893/v1/poster.webp","blurhash":"UC9%u5t700M{~pt69GM{E1ays:Rj4:a#%2ae","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":57880,"triangles":1238,"vertices":2798,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.5600000023841858,0,-0.3100222852314694],"max":[0.5600000023841858,1.2599999904632568,0.32498077099733724]},"sizeMeters":[1.12,1.26,0.635],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:36.686Z","updatedAt":"2026-09-11T18:07:36.812Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35893/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PromptDeskWithMonitorAndCueLightTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35893/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35893/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35893/v1/model.glb\" alt=\"Prompt Desk with Monitor and Cue Light (Theatre Stage and Backstage)\" 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/35893/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/35893/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35920","slug":"theatre-stage-and-backstage-stage-manager-desk-with-pa-e34d027a","title":"Stage Manager Desk with Paging Panel (Theatre Stage and Backstage)","summary":"The corner the show is called from: a 1.3 m desk at 920 mm with a gilt edge, a sloped paging panel of eight cue light keys with three standbys lit above them, a monitor on a pole and the book open on the desk with the paging microphone beside it.","description":"The corner the show is called from: a 1.3 m desk at 920 mm with a gilt edge, a sloped paging panel of eight cue light keys with three standbys lit above them, a monitor on a pole and the book open on the desk with the paging microphone beside it. The keys, the standby lamps and the monitor image are emissive or fixed geometry: nothing on this desk is rigged. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stage-manager-desk-with-pa-e34d027a","cdnUrl":"https://cdn.3dassets.dev/assets/35920/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stage-manager-desk-with-pa-e34d027a","thumbnailUrl":"https://cdn.3dassets.dev/assets/35920/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35920/v1/poster.webp","blurhash":"U98|#6s900tS~WsAD%X84njG-pWU4obH-pV@","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":74548,"triangles":1662,"vertices":3627,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6600000262260437,0,-0.35004423899919357],"max":[0.6600000262260437,1.3600000143051147,0.36500094011578316]},"sizeMeters":[1.32,1.36,0.715],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:54.001Z","updatedAt":"2026-09-11T18:07:54.124Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35920/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageManagerDeskWithPagingPanelTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35920/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35920/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35920/v1/model.glb\" alt=\"Stage Manager Desk with Paging Panel (Theatre Stage and Backstage)\" 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/35920/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/35920/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35883","slug":"theatre-stage-and-backstage-counterweight-frame-with-w-65d65714","title":"Counterweight Frame with Weights (Theatre Stage and Backstage)","summary":"A 4.4 m counterweight frame: two guide channels with a head and foot block, a cradle carrying six weights on its guides, the purchase line running to the head, and a rope lock on the operating side.","description":"A 4.4 m counterweight frame: two guide channels with a head and foot block, a cradle carrying six weights on its guides, the purchase line running to the head, and a rope lock on the operating side. The cradle and its weights are one named node running in the guides, so it travels as the bar it balances flies; the hemp lines are static. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: cradle, cradle/black. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-counterweight-frame-with-w-65d65714","cdnUrl":"https://cdn.3dassets.dev/assets/35883/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-counterweight-frame-with-w-65d65714","thumbnailUrl":"https://cdn.3dassets.dev/assets/35883/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35883/v1/poster.webp","blurhash":"U26a#J%L004:~pbI01ad4:kC?aaK9Gs:_1NG","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":50572,"triangles":1048,"vertices":2395,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6150023071905675,0,-0.13001988047402666],"max":[0.530019058213336,4.401199817657471,0.16000091921054135]},"sizeMeters":[1.145,4.401,0.29],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:28.050Z","updatedAt":"2026-09-11T18:07:28.155Z","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/35883/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 CounterweightFrameWithWeightsTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35883/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/35883/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35883/v1/model.glb\" alt=\"Counterweight Frame with Weights (Theatre Stage and Backstage)\" 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/35883/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/35883/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35884","slug":"theatre-stage-and-backstage-pin-rail-40ffb613","title":"Pin Rail (Theatre Stage and Backstage)","summary":"A 2.4 m pin rail on two posts: a steel barrel at 1.12 m with seven turned belaying pins through it and two hemp lines made off and flaked down in coils on the floor.","description":"A 2.4 m pin rail on two posts: a steel barrel at 1.12 m with seven turned belaying pins through it and two hemp lines made off and flaked down in coils on the floor. The rope is rigid geometry: a hemp line is not reachable with a node transform, so the coils and the made off line are static. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-pin-rail-40ffb613","cdnUrl":"https://cdn.3dassets.dev/assets/35884/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-pin-rail-40ffb613","thumbnailUrl":"https://cdn.3dassets.dev/assets/35884/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35884/v1/poster.webp","blurhash":"U5Bpe0xt009G?a?bIp4:00j]%L%L4.~W%M0L","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":81816,"triangles":2024,"vertices":4132,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,0.0000839488228440155,-0.17995422486074056],"max":[1.2000000476837158,1.1199160559455277,0.3311362425984362]},"sizeMeters":[2.4,1.12,0.511],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:28.077Z","updatedAt":"2026-09-11T18:07:28.275Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35884/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PinRailTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35884/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35884/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35884/v1/model.glb\" alt=\"Pin Rail (Theatre Stage and Backstage)\" 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/35884/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/35884/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35924","slug":"theatre-stage-and-backstage-sandbag-pile-983c6955","title":"Sandbag Pile (Theatre Stage and Backstage)","summary":"Four stage sandbags slumped in a pile with rope handles at their throats, about 700 mm across and 400 mm high, for the foot of a pin rail or a brace.","description":"Four stage sandbags slumped in a pile with rope handles at their throats, about 700 mm across and 400 mm high, for the foot of a pin rail or a brace. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-sandbag-pile-983c6955","cdnUrl":"https://cdn.3dassets.dev/assets/35924/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-sandbag-pile-983c6955","thumbnailUrl":"https://cdn.3dassets.dev/assets/35924/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35924/v1/poster.webp","blurhash":"UBC~^*%L00_1ofxuR*M{00D*~VIVMyIUxu%M","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":57124,"triangles":1472,"vertices":2888,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.40940046310424805,-0.000006967314479217057,-0.1487689670329364],"max":[0.5332285761833191,0.4000069732749437,0.37877189183285553]},"sizeMeters":[0.943,0.4,0.528],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T18:07:56.969Z","updatedAt":"2026-09-11T19:50:01.849Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35924/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SandbagPileTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35924/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35924/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35924/v1/model.glb\" alt=\"Sandbag Pile (Theatre Stage and Backstage)\" 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/35924/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/35924/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35923","slug":"theatre-stage-and-backstage-rope-coil-on-a-cleat-6a373854","title":"Rope Coil on a Cleat (Theatre Stage and Backstage)","summary":"A hemp fall flaked down into a 600 mm coil with a smaller coil beside it and the tail made off to a floor cleat, for the foot of a fly line or a dressing for the wings.","description":"A hemp fall flaked down into a 600 mm coil with a smaller coil beside it and the tail made off to a floor cleat, for the foot of a fly line or a dressing for the wings. The rope is rigid geometry: a line is not reachable with a node transform, so nothing here moves. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-rope-coil-on-a-cleat-6a373854","cdnUrl":"https://cdn.3dassets.dev/assets/35923/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-rope-coil-on-a-cleat-6a373854","thumbnailUrl":"https://cdn.3dassets.dev/assets/35923/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35923/v1/poster.webp","blurhash":"UEAJ=#R+00t6NGt7xtM|00t6~pRk%1M{M{xu","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":67708,"triangles":1704,"vertices":3462,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5799999833106995,-0.000004877994050120349,-0.31101908402588896],"max":[0.6370000243186951,0.16000487441777145,0.4515764327540689]},"sizeMeters":[1.217,0.16,0.763],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:57.096Z","updatedAt":"2026-09-11T18:07:57.205Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35923/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RopeCoilOnACleatTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35923/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35923/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35923/v1/model.glb\" alt=\"Rope Coil on a Cleat (Theatre Stage and Backstage)\" 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/35923/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/35923/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35918","slug":"theatre-stage-and-backstage-flight-case-c898f4a9","title":"Flight Case (Theatre Stage and Backstage)","summary":"A 800 by 500 mm flight case 600 mm tall: a black ply body in aluminium edge extrusion with corner caps, butterfly catches, a hinged lid and a gilt route card holder on the front.","description":"A 800 by 500 mm flight case 600 mm tall: a black ply body in aluminium edge extrusion with corner caps, butterfly catches, a hinged lid and a gilt route card holder on the front. The lid is a named node hinged on its back edge; the catches and the route card holder are fixed. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: lid, lid/metal. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-flight-case-c898f4a9","cdnUrl":"https://cdn.3dassets.dev/assets/35918/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-flight-case-c898f4a9","thumbnailUrl":"https://cdn.3dassets.dev/assets/35918/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35918/v1/poster.webp","blurhash":"U28qQr_300D*00t8x[Mx9ZR*DhxYDh?b_49G","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":66008,"triangles":1472,"vertices":3291,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.414000004529953,-0.000023355082400033922,-0.2720242957100097],"max":[0.414000004529953,0.6610022847904254,0.27599871428864453]},"sizeMeters":[0.828,0.661,0.548],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:53.785Z","updatedAt":"2026-09-11T18:07:53.972Z","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/35918/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 FlightCaseTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35918/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/35918/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35918/v1/model.glb\" alt=\"Flight Case (Theatre Stage and Backstage)\" 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/35918/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/35918/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35898","slug":"theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","title":"Orchestra Pit Rostrum (Theatre Stage and Backstage)","summary":"A 1.2 m square player rostrum 400 mm high for the pit, dressed with a music stand and a stool: the same folding frame and boarded top as a stage rostrum at half the height.","description":"A 1.2 m square player rostrum 400 mm high for the pit, dressed with a music stand and a stool: the same folding frame and boarded top as a stage rostrum at half the height. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","cdnUrl":"https://cdn.3dassets.dev/assets/35898/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-orchestra-pit-rostrum-8834f48d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35898/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35898/v1/poster.webp","blurhash":"U38zfP-V00TaDjMxIntl00bv~CH@_MXR,],[","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":44632,"triangles":1000,"vertices":2132,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0,-0.6000000238418579],"max":[0.6000000238418579,1.2821781635284424,0.6000000238418579]},"sizeMeters":[1.2,1.282,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:39.479Z","updatedAt":"2026-09-11T18:07:39.598Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35898/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OrchestraPitRostrumTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35898/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35898/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35898/v1/model.glb\" alt=\"Orchestra Pit Rostrum (Theatre Stage and Backstage)\" 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/35898/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/35898/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35900","slug":"theatre-stage-and-backstage-orchestra-pit-rail-45132244","title":"Orchestra Pit Rail (Theatre Stage and Backstage)","summary":"A 2 m run of brass pit rail: two standards on plates carrying a top and mid rail with a dark mesh infill and a boarded kerb at the foot, for the edge between the stalls and the pit.","description":"A 2 m run of brass pit rail: two standards on plates carrying a top and mid rail with a dark mesh infill and a boarded kerb at the foot, for the edge between the stalls and the pit. Ports pit-left and pit-right sit at mid height on the ends, so runs butt into a rail of any length. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-orchestra-pit-rail-45132244","cdnUrl":"https://cdn.3dassets.dev/assets/35900/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-orchestra-pit-rail-45132244","thumbnailUrl":"https://cdn.3dassets.dev/assets/35900/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35900/v1/poster.webp","blurhash":"U5Ac*h--4o%1%C~UxbRP0Lk7t7R:%M-:WT9b","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":32136,"triangles":744,"vertices":1559,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.0199999809265137,-0.00005035479557733563,-0.1399584953486533],"max":[1.0199999809265137,1.0599844069499378,0.06997772017953438]},"sizeMeters":[2.04,1.06,0.21],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:39.621Z","updatedAt":"2026-09-11T18:07:39.812Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35900/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OrchestraPitRailTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35900/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35900/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35900/v1/model.glb\" alt=\"Orchestra Pit Rail (Theatre Stage and Backstage)\" 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/35900/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/35900/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35895","slug":"theatre-stage-and-backstage-stalls-seating-row-71aea249","title":"Stalls Seating Row Module (Theatre Stage and Backstage)","summary":"A 3 m stalls module carrying four tip up seats on a 720 mm pitch: a 1 m tread on a 250 mm riser with a gilt nosing and a carpet runner, crimson buttoned backs with gilt piping, black standards with scroll ends and four folding bases.","description":"A 3 m stalls module carrying four tip up seats on a 720 mm pitch: a 1 m tread on a 250 mm riser with a gilt nosing and a carpet runner, crimson buttoned backs with gilt piping, black standards with scroll ends and four folding bases. Ports tier-front and tier-back sit at the tread edges at riser and deck height, so a module placed 1 m back and 250 mm up meets the row in front; row-left and row-right sit at seat height on the ends, so two modules butt into an eight seat bank. Each base hinges on its own back edge, which is where a real tip up seat hinges, so a raised seat clears the row rather than swinging off the floor. The upholstery is rigid geometry and does not compress. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: seat-1, seat-2, seat-3, seat-4. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-stalls-seating-row-71aea249","cdnUrl":"https://cdn.3dassets.dev/assets/35895/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-stalls-seating-row-71aea249","thumbnailUrl":"https://cdn.3dassets.dev/assets/35895/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35895/v1/poster.webp","blurhash":"U49ZA%=f0yxb+c^6xtEe00Ri|_O97e1HRU#B","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":172040,"triangles":4784,"vertices":10215,"meshes":9,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.5,-0.000037465239188239075,-0.499938962981048],"max":[1.5,0.9884875751978369,0.499938962981048]},"sizeMeters":[3,0.989,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:36.693Z","updatedAt":"2026-09-11T18:07:36.815Z","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/35895/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 StallsSeatingRowModuleTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35895/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/35895/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35895/v1/model.glb\" alt=\"Stalls Seating Row Module (Theatre Stage and Backstage)\" 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/35895/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/35895/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35894","slug":"theatre-stage-and-backstage-aisle-step-module-fda1c692","title":"Aisle Step Module (Theatre Stage and Backstage)","summary":"The 1.2 m aisle step that runs up the side of a seating bank: the same 1 m tread and 250 mm riser as a stalls row, with a gilt nosing, a carpet runner and a step light let into the riser.","description":"The 1.2 m aisle step that runs up the side of a seating bank: the same 1 m tread and 250 mm riser as a stalls row, with a gilt nosing, a carpet runner and a step light let into the riser. Stacked one tread back and one riser up it makes a stair that keeps pace with the rake beside it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-aisle-step-module-fda1c692","cdnUrl":"https://cdn.3dassets.dev/assets/35894/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-aisle-step-module-fda1c692","thumbnailUrl":"https://cdn.3dassets.dev/assets/35894/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35894/v1/poster.webp","blurhash":"U49GRA?a0dxa}[oKExkA00D*}HI.0eS5;ARR","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":13488,"triangles":256,"vertices":573,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.0000450098362120982,-0.500021382825697],"max":[0.6000000238418579,0.270011296767913,0.5129968641635012]},"sizeMeters":[1.2,0.27,1.013],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:36.706Z","updatedAt":"2026-09-11T18:07:36.818Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35894/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AisleStepModuleTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35894/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35894/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35894/v1/model.glb\" alt=\"Aisle Step Module (Theatre Stage and Backstage)\" 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/35894/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/35894/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35908","slug":"theatre-stage-and-backstage-row-letter-plate-160b8d03","title":"Row Letter Plate (Theatre Stage and Backstage)","summary":"The plate on a standard at the end of a stalls row: a gilt surround on a black ground with a blank cream tablet on it, on a short post 860 mm tall. The tablet is deliberately blank so a project can letter its own rows.","description":"The plate on a standard at the end of a stalls row: a gilt surround on a black ground with a blank cream tablet on it, on a short post 860 mm tall. The tablet is deliberately blank so a project can letter its own rows. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-row-letter-plate-160b8d03","cdnUrl":"https://cdn.3dassets.dev/assets/35908/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-row-letter-plate-160b8d03","thumbnailUrl":"https://cdn.3dassets.dev/assets/35908/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35908/v1/poster.webp","blurhash":"U65;~yt700M_~Ut64qM|%Ls.M{M~M_obxbR:","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":13916,"triangles":264,"vertices":593,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.13000977868639735,0,-0.06656697228840594],"max":[0.13000977868639735,0.8600000143051147,0.06656697228840594]},"sizeMeters":[0.26,0.86,0.133],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:45.314Z","updatedAt":"2026-09-11T18:07:45.426Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35908/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RowLetterPlateTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35908/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35908/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35908/v1/model.glb\" alt=\"Row Letter Plate (Theatre Stage and Backstage)\" 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/35908/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/35908/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35904","slug":"theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","title":"Aisle Carpet Tile (Theatre Stage and Backstage)","summary":"A 2 m square of house carpet: crimson pile with a woven border and four gilt lozenges on it, for the aisles, the cross gangways and the foyer side of the auditorium.","description":"A 2 m square of house carpet: crimson pile with a woven border and four gilt lozenges on it, for the aisles, the cross gangways and the foyer side of the auditorium. Ports floor-left, floor-right, floor-front and floor-back sit on the surface at the edge midpoints, so tiles lay a floor of any size and the backstage variant carries on the same grid. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","cdnUrl":"https://cdn.3dassets.dev/assets/35904/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-aisle-carpet-tile-2724c5bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/35904/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35904/v1/poster.webp","blurhash":"U7BBbw$j0{WC$ja|R*j@0JNt}ZWVEfn+xGWC","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":9480,"triangles":160,"vertices":360,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000010071331644496972,-1],"max":[1,0.027977600029069162,1]},"sizeMeters":[2,0.028,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:42.476Z","updatedAt":"2026-09-11T18:07:42.596Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35904/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AisleCarpetTileTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35904/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35904/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35904/v1/model.glb\" alt=\"Aisle Carpet Tile (Theatre Stage and Backstage)\" 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/35904/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/35904/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35901","slug":"theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","title":"Exit Sign and Door Module (Theatre Stage and Backstage)","summary":"The 2 m wall module with a 1.5 m pair of exit doors in it: crimson leaves on a boarded frame with push bars and kick plates, under a lit exit box carrying an abstract bar and arrow rather than any wording.","description":"The 2 m wall module with a 1.5 m pair of exit doors in it: crimson leaves on a boarded frame with push bars and kick plates, under a lit exit box carrying an abstract bar and arrow rather than any wording. Both leaves are named nodes on their outer stiles and swing away from the house, which is the way a real exit door has to open. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: door-1, door-1/metal, door-2, door-2/metal. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","cdnUrl":"https://cdn.3dassets.dev/assets/35901/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-exit-sign-and-door-module-f64fc225","thumbnailUrl":"https://cdn.3dassets.dev/assets/35901/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35901/v1/poster.webp","blurhash":"UDDvD:xG00J7?]%MDP8{9Fof-;RjH@aeyDbv","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":49368,"triangles":1224,"vertices":2753,"meshes":11,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1,-0.000004282322780380099,-0.13996719572021996],"max":[1,4.599999904632568,0.17998741795038448]},"sizeMeters":[2,4.6,0.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:42.437Z","updatedAt":"2026-09-11T18:07:42.542Z","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/35901/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 ExitSignAndDoorModuleTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35901/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/35901/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35901/v1/model.glb\" alt=\"Exit Sign and Door Module (Theatre Stage and Backstage)\" 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/35901/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/35901/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35899","slug":"theatre-stage-and-backstage-house-wall-module-0ed307a4","title":"House Wall Module (Theatre Stage and Backstage)","summary":"The 2 by 4.6 m wall the auditorium and the backstage are built from: cream plaster over a crimson dado with a gilt rail, and a shallow pilaster with a gilt cap up the face.","description":"The 2 by 4.6 m wall the auditorium and the backstage are built from: cream plaster over a crimson dado with a gilt rail, and a shallow pilaster with a gilt cap up the face. Ports wall-left and wall-right sit at 1.8 m on the module ends, so walls butt into a run and the exit door, the scene dock door and the control box window drop straight into it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-house-wall-module-0ed307a4","cdnUrl":"https://cdn.3dassets.dev/assets/35899/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-house-wall-module-0ed307a4","thumbnailUrl":"https://cdn.3dassets.dev/assets/35899/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35899/v1/poster.webp","blurhash":"UDD+rSxa00EL?^tRDOIB8{WV.7oLs.n%R*Sg","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":15352,"triangles":320,"vertices":720,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9998931644869982,0,-0.06991180005819937],"max":[0.9998931644869982,4.599999904632568,0.12991839297206528]},"sizeMeters":[2,4.6,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:39.602Z","updatedAt":"2026-09-11T18:07:39.809Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35899/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HouseWallModuleTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35899/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35899/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35899/v1/model.glb\" alt=\"House Wall Module (Theatre Stage and Backstage)\" 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/35899/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/35899/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35902","slug":"theatre-stage-and-backstage-control-box-window-frame-a919fc62","title":"Control Box Window Frame (Theatre Stage and Backstage)","summary":"The 2 m wall module with the control box window in it: a 1.4 by 0.9 m opening at 2 m on a boarded frame with a deep cill, gilt beads and the lit box behind it.","description":"The 2 m wall module with the control box window in it: a 1.4 by 0.9 m opening at 2 m on a boarded frame with a deep cill, gilt beads and the lit box behind it. The opening is unglazed, so a project can put its own glass or its own operator behind it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-control-box-window-frame-a919fc62","cdnUrl":"https://cdn.3dassets.dev/assets/35902/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-control-box-window-frame-a919fc62","thumbnailUrl":"https://cdn.3dassets.dev/assets/35902/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35902/v1/poster.webp","blurhash":"U7EfH9?H000K?]%gH@8_00R*_3s.r?sBRkI:","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":44836,"triangles":960,"vertices":2160,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000004282322780380099,-0.12998443749708627],"max":[1,4.599999904632568,0.13003021108920707]},"sizeMeters":[2,4.6,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:42.456Z","updatedAt":"2026-09-11T18:07:42.578Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35902/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ControlBoxWindowFrameTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35902/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35902/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35902/v1/model.glb\" alt=\"Control Box Window Frame (Theatre Stage and Backstage)\" 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/35902/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/35902/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35905","slug":"theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","title":"House Lighting Bracket (Theatre Stage and Backstage)","summary":"A wall bracket for the house lights: a gilt back plate and scrolled arm carrying a cream shade with a lamp in it, reaching 260 mm off the wall and standing 640 mm tall.","description":"A wall bracket for the house lights: a gilt back plate and scrolled arm carrying a cream shade with a lamp in it, reaching 260 mm off the wall and standing 640 mm tall. The lamp is emissive geometry, not a light: add a real light source in the engine. Hang it with the back plate against a house wall module. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","cdnUrl":"https://cdn.3dassets.dev/assets/35905/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-house-lighting-bracket-381e7e7d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35905/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35905/v1/poster.webp","blurhash":"U99s|?T100Vp_N-:9F4.4?%1-mD+8{Io-;%M","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":16368,"triangles":332,"vertices":713,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.10999840082728103,0,-0.05000638573442956],"max":[0.10999840082728103,0.5899998314259607,0.3400000035762787]},"sizeMeters":[0.22,0.59,0.39],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:45.157Z","updatedAt":"2026-09-11T18:07:45.267Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35905/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HouseLightingBracketTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35905/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35905/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35905/v1/model.glb\" alt=\"House Lighting Bracket (Theatre Stage and Backstage)\" 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/35905/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/35905/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35897","slug":"theatre-stage-and-backstage-box-seating-unit-0c0f5168","title":"Box Seating Unit (Theatre Stage and Backstage)","summary":"A two seat side box: a carpeted floor 2.2 by 1.8 m with a panelled front under a gilt band, plaster side walls, a crimson draped canopy over it and two chairs inside.","description":"A two seat side box: a carpeted floor 2.2 by 1.8 m with a panelled front under a gilt band, plaster side walls, a crimson draped canopy over it and two chairs inside. It is modelled as the box itself: the wall it is set into is a run of house wall modules behind it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-box-seating-unit-0c0f5168","cdnUrl":"https://cdn.3dassets.dev/assets/35897/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-box-seating-unit-0c0f5168","thumbnailUrl":"https://cdn.3dassets.dev/assets/35897/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35897/v1/poster.webp","blurhash":"U7GRo2_200bw_k%2LKM{00M|TID$~Wt64.E2","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":57496,"triangles":1408,"vertices":2968,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.1299999952316284,-0.000023807079476710624,-0.9000837539498354],"max":[1.1299999952316284,2.90120005607605,0.9300837849442507]},"sizeMeters":[2.26,2.901,1.83],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:39.460Z","updatedAt":"2026-09-11T18:07:39.587Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35897/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoxSeatingUnitTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35897/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35897/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35897/v1/model.glb\" alt=\"Box Seating Unit (Theatre Stage and Backstage)\" 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/35897/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/35897/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35896","slug":"theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","title":"Circle Balcony Front Section (Theatre Stage and Backstage)","summary":"A 3 m section of circle front: a bowed plaster face with gilt bands top and bottom and three crimson panels, a carpeted soffit 1.4 m deep behind it and a brass rail on two standards above.","description":"A 3 m section of circle front: a bowed plaster face with gilt bands top and bottom and three crimson panels, a carpeted soffit 1.4 m deep behind it and a brass rail on two standards above. Ports circle-left and circle-right sit at mid height on the ends, so sections butt into a balcony of any width. The section is the front and its soffit only: the structure that carries it is not modelled. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","cdnUrl":"https://cdn.3dassets.dev/assets/35896/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-circle-balcony-front-secti-6fc1787e","thumbnailUrl":"https://cdn.3dassets.dev/assets/35896/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35896/v1/poster.webp","blurhash":"UCC=rH~B0ytRrwxt%KV@009a-CadI:MyE2S#","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":32636,"triangles":680,"vertices":1531,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.5011999607086182,-0.000025201612175562715,-1.6498962251468527],"max":[1.5011999607086182,1.3320037266171025,0.3098885016703724]},"sizeMeters":[3.002,1.332,1.96],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:36.793Z","updatedAt":"2026-09-11T18:07:36.917Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35896/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CircleBalconyFrontSectionTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35896/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35896/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35896/v1/model.glb\" alt=\"Circle Balcony Front Section (Theatre Stage and Backstage)\" 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/35896/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/35896/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35906","slug":"theatre-stage-and-backstage-follow-spot-on-a-rail-f0bba477","title":"Follow Spot on a Rail (Theatre Stage and Backstage)","summary":"A follow spot at the front of the circle: a boarded platform with a rail on two posts, and a long barrelled lamp in a yoke on its pedestal with a gilt handle and douser on it.","description":"A follow spot at the front of the circle: a boarded platform with a rail on two posts, and a long barrelled lamp in a yoke on its pedestal with a gilt handle and douser on it. The barrel is a named node in its yoke, so it tilts through its cradle; the pan of the whole pedestal and the iris are left to the consumer. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: spot, spot/glow, spot/gilt. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-follow-spot-on-a-rail-f0bba477","cdnUrl":"https://cdn.3dassets.dev/assets/35906/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-follow-spot-on-a-rail-f0bba477","thumbnailUrl":"https://cdn.3dassets.dev/assets/35906/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35906/v1/poster.webp","blurhash":"U28zrw^,00000f^+-700000L~q~V#Q%2x^kq","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":37132,"triangles":780,"vertices":1671,"meshes":6,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.8999999761581421,-0.00004959154178188138,-0.4630937874317169],"max":[0.8999999761581421,1.0589247458862692,0.5109922289848328]},"sizeMeters":[1.8,1.059,0.974],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:45.263Z","updatedAt":"2026-09-11T18:07:45.395Z","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/35906/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 FollowSpotOnARailTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35906/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/35906/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35906/v1/model.glb\" alt=\"Follow Spot on a Rail (Theatre Stage and Backstage)\" 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/35906/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/35906/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35907","slug":"theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","title":"Lighting Bar with Lanterns (Theatre Stage and Backstage)","summary":"A 4 m lighting bar with four lanterns hung under it on hook clamps: rectangular bodies with lenses and barn doors, a cable run tied along the bar and three hanging lines above it.","description":"A 4 m lighting bar with four lanterns hung under it on hook clamps: rectangular bodies with lenses and barn doors, a cable run tied along the bar and three hanging lines above it. It shares the fly-bar ports, so it butts end to end with another bar for an 8 m barrel. The lanterns are fixed to the bar and their lenses are emissive geometry, not lights. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","cdnUrl":"https://cdn.3dassets.dev/assets/35907/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-lighting-bar-with-lanterns-4450efe2","thumbnailUrl":"https://cdn.3dassets.dev/assets/35907/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35907/v1/poster.webp","blurhash":"U37d%qju9F-:-._3azRj00%K_2M}4:00-:xv","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":69260,"triangles":1612,"vertices":3492,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.00006511091192773488,-0.11040375849498284],"max":[2,1.1400498516470394,0.11040375849498284]},"sizeMeters":[4,1.14,0.221],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:45.283Z","updatedAt":"2026-09-11T18:07:45.398Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35907/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LightingBarWithLanternsTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35907/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35907/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35907/v1/model.glb\" alt=\"Lighting Bar with Lanterns (Theatre Stage and Backstage)\" 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/35907/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/35907/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35915","slug":"theatre-stage-and-backstage-scene-dock-door-module-490e11a3","title":"Scene Dock Door Module (Theatre Stage and Backstage)","summary":"The 2 m wall module with the scene dock opening in it: a 1.4 by 3 m braced dock door on a boarded frame with a long gilt pull, tall and wide enough for a scenery flat to go through.","description":"The 2 m wall module with the scene dock opening in it: a 1.4 by 3 m braced dock door on a boarded frame with a long gilt pull, tall and wide enough for a scenery flat to go through. The leaf is a named node hung on its own stile, so the dock opens into the wall run the house and backstage share. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: door-1, door-1/metal, door-1/gilt. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-scene-dock-door-module-490e11a3","cdnUrl":"https://cdn.3dassets.dev/assets/35915/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-scene-dock-door-module-490e11a3","thumbnailUrl":"https://cdn.3dassets.dev/assets/35915/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35915/v1/poster.webp","blurhash":"UCC$_-^+000K_N%M9F9FIUayt7RjMxn*xuS2","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":45264,"triangles":1000,"vertices":2224,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.9998931644869982,-0.00005189053732235216,-0.17000881955068964],"max":[0.9998931644869982,4.599999904632568,0.1299496421482271]},"sizeMeters":[2,4.6,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:51.006Z","updatedAt":"2026-09-11T18:07:51.106Z","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/35915/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 SceneDockDoorModuleTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35915/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/35915/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35915/v1/model.glb\" alt=\"Scene Dock Door Module (Theatre Stage and Backstage)\" 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/35915/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/35915/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35903","slug":"theatre-stage-and-backstage-backstage-floor-tile-43e15b90","title":"Backstage Floor Tile (Theatre Stage and Backstage)","summary":"The same 2 m floor tile as bare boards: a painted timber deck with its joints, for the wings, the scene dock and the dressing room corridor.","description":"The same 2 m floor tile as bare boards: a painted timber deck with its joints, for the wings, the scene dock and the dressing room corridor. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-backstage-floor-tile-43e15b90","cdnUrl":"https://cdn.3dassets.dev/assets/35903/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-backstage-floor-tile-43e15b90","thumbnailUrl":"https://cdn.3dassets.dev/assets/35903/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35903/v1/poster.webp","blurhash":"U49Z+U%L00nP%KafRRbb00Ip~WS1E2oytOaK","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"},{"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":15512,"triangles":320,"vertices":730,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000010071331644496972,-1],"max":[1,0.02296488825368219,1]},"sizeMeters":[2,0.023,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:42.459Z","updatedAt":"2026-09-11T18:07:42.584Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35903/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BackstageFloorTileTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35903/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35903/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35903/v1/model.glb\" alt=\"Backstage Floor Tile (Theatre Stage and Backstage)\" 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/35903/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/35903/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35917","slug":"theatre-stage-and-backstage-get-in-ramp-16be106b","title":"Get In Ramp (Theatre Stage and Backstage)","summary":"The ramp at the dock door: a 2.4 by 1.6 m boarded slope rising 550 mm with black kerbs each side, a steel lip at the low end and gilt grip strips across it.","description":"The ramp at the dock door: a 2.4 by 1.6 m boarded slope rising 550 mm with black kerbs each side, a steel lip at the low end and gilt grip strips across it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-get-in-ramp-16be106b","cdnUrl":"https://cdn.3dassets.dev/assets/35917/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-get-in-ramp-16be106b","thumbnailUrl":"https://cdn.3dassets.dev/assets/35917/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35917/v1/poster.webp","blurhash":"U39jfd~W00Di4:tR-pM{004n^+%g^hMwM{-;","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":22844,"triangles":488,"vertices":1020,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,0.00004043205960879703,-0.8000488614062459],"max":[1.2000000476837158,0.6300221268902444,0.8000488614062459]},"sizeMeters":[2.4,0.63,1.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:53.604Z","updatedAt":"2026-09-11T18:07:53.708Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35917/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GetInRampTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35917/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35917/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35917/v1/model.glb\" alt=\"Get In Ramp (Theatre Stage and Backstage)\" 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/35917/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/35917/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35909","slug":"theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1","title":"Dressing Room Mirror Station (Theatre Stage and Backstage)","summary":"One place at a dressing room bench: a 1.3 m mirror in a surround of nineteen bare bulbs, a bullnosed shelf at 780 mm with a gilt edge on two standards, and a tray of sticks, a brush pot and a folded towel on it. It stands 2.05 m tall.","description":"One place at a dressing room bench: a 1.3 m mirror in a surround of nineteen bare bulbs, a bullnosed shelf at 780 mm with a gilt edge on two standards, and a tray of sticks, a brush pot and a folded towel on it. It stands 2.05 m tall. The bulbs are emissive geometry, not lights: add a real light source in the engine. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1","cdnUrl":"https://cdn.3dassets.dev/assets/35909/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-dressing-room-mirror-stati-97cf3af1","thumbnailUrl":"https://cdn.3dassets.dev/assets/35909/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35909/v1/poster.webp","blurhash":"U98|w{tR00Mx~Wt89GMxD%ofxuRjM_Rjbcxt","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":77412,"triangles":1780,"vertices":3750,"meshes":8,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-0.7200000286102295,-0.000006615597142267671,-0.05503837389642219],"max":[0.7200000286102295,2,0.41001982848861523]},"sizeMeters":[1.44,2,0.465],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T18:07:47.978Z","updatedAt":"2026-09-11T19:07:51.045Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35909/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DressingRoomMirrorStationTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35909/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35909/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35909/v1/model.glb\" alt=\"Dressing Room Mirror Station (Theatre Stage and Backstage)\" 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/35909/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/35909/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35913","slug":"theatre-stage-and-backstage-makeup-table-with-stool-efb91280","title":"Makeup Table with Stool (Theatre Stage and Backstage)","summary":"A dressing room makeup table: a bullnosed top 1.2 by 0.55 m at 760 mm with a gilt edge, a three drawer pedestal one end, an angled lamp on the other and an upholstered stool tucked under it.","description":"A dressing room makeup table: a bullnosed top 1.2 by 0.55 m at 760 mm with a gilt edge, a three drawer pedestal one end, an angled lamp on the other and an upholstered stool tucked under it. The drawer fronts are modelled as fronts on the pedestal and are not rigged: take the flight case where a moving lid is wanted. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-makeup-table-with-stool-efb91280","cdnUrl":"https://cdn.3dassets.dev/assets/35913/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-makeup-table-with-stool-efb91280","thumbnailUrl":"https://cdn.3dassets.dev/assets/35913/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35913/v1/poster.webp","blurhash":"U49???^Q009Y~Wx[4n4n00Ki%KIB9uxa%Lbu","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":94992,"triangles":2180,"vertices":4772,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.6100000143051147,-0.000028707268262262442,-0.27498174800245084],"max":[0.6100000143051147,1.1553826220832677,0.4935004807285373]},"sizeMeters":[1.22,1.155,0.768],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T18:07:50.842Z","updatedAt":"2026-09-11T19:07:40.483Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35913/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MakeupTableWithStoolTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35913/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35913/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35913/v1/model.glb\" alt=\"Makeup Table with Stool (Theatre Stage and Backstage)\" 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/35913/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/35913/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35912","slug":"theatre-stage-and-backstage-wig-block-stand-347eee98","title":"Wig Block Stand (Theatre Stage and Backstage)","summary":"A wig block on a turned stand: a canvas head form 930 mm up on a weighted column, with a dressed wig pinned over it, a gilt band round the crown and a dish of pins at the foot.","description":"A wig block on a turned stand: a canvas head form 930 mm up on a weighted column, with a dressed wig pinned over it, a gilt band round the crown and a dish of pins at the foot. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-wig-block-stand-347eee98","cdnUrl":"https://cdn.3dassets.dev/assets/35912/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-wig-block-stand-347eee98","thumbnailUrl":"https://cdn.3dassets.dev/assets/35912/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35912/v1/poster.webp","blurhash":"U48zW1^*0000[Xw|BnJ7}an%5kS#00M{_N-;","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":24304,"triangles":492,"vertices":1056,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.13998000524185705,0,-0.13998000524185705],"max":[0.22499999403953552,0.9429980929502435,0.17132862241128155]},"sizeMeters":[0.365,0.943,0.311],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:48.237Z","updatedAt":"2026-09-11T18:07:48.363Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35912/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WigBlockStandTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35912/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35912/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35912/v1/model.glb\" alt=\"Wig Block Stand (Theatre Stage and Backstage)\" 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/35912/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/35912/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35910","slug":"theatre-stage-and-backstage-costume-rail-with-covers-8ed59fc5","title":"Costume Rail with Covers (Theatre Stage and Backstage)","summary":"A wheeled wardrobe rail 1.6 m long: two braced A frames on four castors carrying a hanging barrel of seven costumes under bagged covers, with a show bag and a shoe box on the shelf above.","description":"A wheeled wardrobe rail 1.6 m long: two braced A frames on four castors carrying a hanging barrel of seven costumes under bagged covers, with a show bag and a shoe box on the shelf above. The four castors are named nodes that roll; the covers are rigid geometry, because a hanging cloth is not reachable with a rigid node transform. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: wheel-3, wheel-4, wheel-1, wheel-2. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-costume-rail-with-covers-8ed59fc5","cdnUrl":"https://cdn.3dassets.dev/assets/35910/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-costume-rail-with-covers-8ed59fc5","thumbnailUrl":"https://cdn.3dassets.dev/assets/35910/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35910/v1/poster.webp","blurhash":"UBBzC5xa00JR~q%29F9t00n+~qSz4TWB?bxt","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":95504,"triangles":2432,"vertices":5174,"meshes":8,"materials":5,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.8000088648022856,-1.7881393449270533e-9,-0.28499999806284904],"max":[0.8000088648022856,1.8299896696029732,0.28499999806284904]},"sizeMeters":[1.6,1.83,0.57],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:48.208Z","updatedAt":"2026-09-11T18:07:48.347Z","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/35910/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 CostumeRailWithCoversTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35910/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/35910/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35910/v1/model.glb\" alt=\"Costume Rail with Covers (Theatre Stage and Backstage)\" 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/35910/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/35910/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35911","slug":"theatre-stage-and-backstage-quick-change-booth-frame-9bc2af73","title":"Quick Change Booth Frame (Theatre Stage and Backstage)","summary":"The booth in the wings a costume change happens in: a 1.1 m square tube frame 2.1 m tall with pleated blacks on three sides, a carpet square underfoot, a mirror and a hook rail inside, and the fourth side left open.","description":"The booth in the wings a costume change happens in: a 1.1 m square tube frame 2.1 m tall with pleated blacks on three sides, a carpet square underfoot, a mirror and a hook rail inside, and the fourth side left open. The curtains are rigid geometry: they mask as a whole and are not rigged. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-quick-change-booth-frame-9bc2af73","cdnUrl":"https://cdn.3dassets.dev/assets/35911/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-quick-change-booth-frame-9bc2af73","thumbnailUrl":"https://cdn.3dassets.dev/assets/35911/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35911/v1/poster.webp","blurhash":"U2C56%.T00I8p^aeVFWX4PV].oVX%zbcIBiv","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":58968,"triangles":1334,"vertices":2955,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000640616191515,0,-0.5545196158404837],"max":[0.6000640616191515,2.0999999046325684,0.599993135016893]},"sizeMeters":[1.2,2.1,1.155],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:48.221Z","updatedAt":"2026-09-11T18:07:48.349Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35911/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuickChangeBoothFrameTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35911/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35911/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35911/v1/model.glb\" alt=\"Quick Change Booth Frame (Theatre Stage and Backstage)\" 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/35911/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/35911/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35914","slug":"theatre-stage-and-backstage-props-table-with-numbered--83c6e43e","title":"Props Table with Numbered Spaces (Theatre Stage and Backstage)","summary":"The props table in the wing: a 2 m trestle top at 820 mm with six taped out spaces and a blank plate at each, three of them holding a tankard, a candlestick and a prop book. The plates carry no numbering, so a project can letter its own.","description":"The props table in the wing: a 2 m trestle top at 820 mm with six taped out spaces and a blank plate at each, three of them holding a tankard, a candlestick and a prop book. The plates carry no numbering, so a project can letter its own. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-props-table-with-numbered--83c6e43e","cdnUrl":"https://cdn.3dassets.dev/assets/35914/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-props-table-with-numbered--83c6e43e","thumbnailUrl":"https://cdn.3dassets.dev/assets/35914/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35914/v1/poster.webp","blurhash":"U59jZO-p00rr~V?HNHMx00%L?HEL00E1-:bu","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":127136,"triangles":2880,"vertices":6526,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.000025061277407922855,-0.3500167851802118],"max":[1,1.1899690537708891,0.3500167851802118]},"sizeMeters":[2,1.19,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:50.988Z","updatedAt":"2026-09-11T18:07:51.086Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35914/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PropsTableWithNumberedSpacesTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35914/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35914/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35914/v1/model.glb\" alt=\"Props Table with Numbered Spaces (Theatre Stage and Backstage)\" 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/35914/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/35914/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35916","slug":"theatre-stage-and-backstage-prop-shelf-unit-791c9034","title":"Prop Shelf Unit (Theatre Stage and Backstage)","summary":"A 1.2 by 2 m prop rack on four decks: black posts with a boarded shelf at each level and a back panel, loaded with hat boxes, a stack of trays, a prop lantern and three rolled cloths.","description":"A 1.2 by 2 m prop rack on four decks: black posts with a boarded shelf at each level and a back panel, loaded with hat boxes, a stack of trays, a prop lantern and three rolled cloths. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-prop-shelf-unit-791c9034","cdnUrl":"https://cdn.3dassets.dev/assets/35916/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-prop-shelf-unit-791c9034","thumbnailUrl":"https://cdn.3dassets.dev/assets/35916/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35916/v1/poster.webp","blurhash":"U397R._20000_3xt8{IU4oM{?a-;01WX~pt6","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":55556,"triangles":1252,"vertices":2709,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000549333170568,0,-0.250038148136845],"max":[0.6000549333170568,2,0.250038148136845]},"sizeMeters":[1.2,2,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-11T18:07:51.067Z","updatedAt":"2026-09-11T19:07:43.634Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35916/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PropShelfUnitTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35916/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35916/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35916/v1/model.glb\" alt=\"Prop Shelf Unit (Theatre Stage and Backstage)\" 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/35916/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/35916/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35919","slug":"theatre-stage-and-backstage-flight-case-hamper-7c0d5f54","title":"Flight Case Hamper on Castors (Theatre Stage and Backstage)","summary":"The bigger wardrobe hamper: a 1.1 m case in the same extrusion on four castors, for costumes and soft goods on a get out.","description":"The bigger wardrobe hamper: a 1.1 m case in the same extrusion on four castors, for costumes and soft goods on a get out. The lid is a named node hinged on its back edge; the catches and the route card holder are fixed. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: lid, lid/metal, wheel-1, wheel-3, wheel-2, wheel-4. Rigid node-transform clips: open, close and roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-flight-case-hamper-7c0d5f54","cdnUrl":"https://cdn.3dassets.dev/assets/35919/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-flight-case-hamper-7c0d5f54","thumbnailUrl":"https://cdn.3dassets.dev/assets/35919/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35919/v1/poster.webp","blurhash":"UG9[uk%g8wV@y?x]Z~emMIS2XSniMdaeoLR*","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":80044,"triangles":2016,"vertices":4390,"meshes":9,"materials":4,"textures":0,"animations":["open","close","roll"],"boundingBox":{"min":[-0.5640000104904175,-1.7881393449270533e-9,-0.3219758963662755],"max":[0.5640000104904175,1.0650065924199088,0.3259987262095735]},"sizeMeters":[1.128,1.065,0.648],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:53.985Z","updatedAt":"2026-09-11T18:07:54.102Z","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/35919/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 FlightCaseHamperOnCastorsTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35919/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/35919/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35919/v1/model.glb\" alt=\"Flight Case Hamper on Castors (Theatre Stage and Backstage)\" 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/35919/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/35919/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"35921","slug":"theatre-stage-and-backstage-tannoy-speaker-efacfc9d","title":"Tannoy Speaker (Theatre Stage and Backstage)","summary":"The show relay speaker on a backstage wall: a 300 by 340 mm black cabinet with a perforated steel front, a gilt band across the foot and a wall bracket behind it.","description":"The show relay speaker on a backstage wall: a 300 by 340 mm black cabinet with a perforated steel front, a gilt band across the foot and a wall bracket behind it. Metre units, +Y up, the house side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-tannoy-speaker-efacfc9d","cdnUrl":"https://cdn.3dassets.dev/assets/35921/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-tannoy-speaker-efacfc9d","thumbnailUrl":"https://cdn.3dassets.dev/assets/35921/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35921/v1/poster.webp","blurhash":"U37B7e_2004n?dWsMwsk9FM{xuxus%%1R.E2","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":23524,"triangles":516,"vertices":1098,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.14999450824600655,0,-0.11999999731779099],"max":[0.14999450824600655,0.3400000035762787,0.11500000208616257]},"sizeMeters":[0.3,0.34,0.235],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:56.395Z","updatedAt":"2026-09-11T18:07:56.578Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/35921/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TannoySpeakerTheatreStageAndBackstage(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35921/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/35921/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35921/v1/model.glb\" alt=\"Tannoy Speaker (Theatre Stage and Backstage)\" 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/35921/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/35921/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"35880","slug":"theatre-stage-and-backstage-house-tabs-on-track-2201a546","title":"House Tabs on a Track (Theatre Stage and Backstage)","summary":"The house curtain: two pleated crimson leaves with gilt fringes hanging 5.2 m from a 7.4 m overhead track on its carriers, closed on the centre line.","description":"The house curtain: two pleated crimson leaves with gilt fringes hanging 5.2 m from a 7.4 m overhead track on its carriers, closed on the centre line. Each leaf is its own named node on the track, so they draw apart rather than gathering: the cloth itself is rigid geometry and does not bunch. Metre units, +Y up, the house side toward +Z, resting on y=0. Named pivoted nodes: tab-left, tab-left/black, tab-left/gilt, tab-right, tab-right/black, tab-right/gilt. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/theatre-stage-and-backstage-house-tabs-on-track-2201a546","cdnUrl":"https://cdn.3dassets.dev/assets/35880/v1/model.glb","downloadUrl":"https://3dassets.dev/download/theatre-stage-and-backstage-house-tabs-on-track-2201a546","thumbnailUrl":"https://cdn.3dassets.dev/assets/35880/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/35880/v1/poster.webp","blurhash":"U9EANSwg0xsAt,}aVsAC35S~;7V@s;cEsoMx","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":215544,"triangles":5752,"vertices":12540,"meshes":8,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-3.8581571502154666,1.9073486345888568e-7,-0.10134352593499858],"max":[3.8581571502154666,5.290167280165652,0.21527470140535077]},"sizeMeters":[7.716,5.29,0.317],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T18:07:25.207Z","updatedAt":"2026-09-11T18:07:25.341Z","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/35880/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 HouseTabsOnATrackTheatreStageAndBackstage(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35880/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/35880/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/35880/v1/model.glb\" alt=\"House Tabs on a Track (Theatre Stage and Backstage)\" 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/35880/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/35880/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}