{"data":{"id":"100","slug":"indoor-market-hall-and-traders","title":"Indoor Market Hall and Traders","summary":"Walk a Victorian covered market: iron columns and a glazed roof over three rows of open stalls, a wall of lock up units with working shutters, and traders pitched with produce, flowers, fabric, books and records.","url":"https://3dassets.dev/demos/indoor-market-hall-and-traders","coverUrl":"https://cdn.3dassets.dev/media/indoor-market-hall-and-traders-demo-1.png","featured":true,"pack":{"slug":"indoor-market-hall-and-traders","title":"Indoor Market Hall and Traders","url":"https://3dassets.dev/packs/indoor-market-hall-and-traders","summary":"A Victorian covered market hall: cast iron columns, glazed roof bays, brick walls and paving on one 4 m grid, lock up units with roller shutters, open stalls with striped canopies, and the mixed goods, dressing and barrows of a hall of traders.","assetCount":53,"totalBytes":10773856,"starterScene":{"slug":"indoor-market-hall-and-traders-covered-m-3aaa6199-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/34887/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-covered-m-3aaa6199-starter-scene","fileSize":5162824}},"placementCount":142,"assetCount":52,"spawn":{"position":[0,0.056,7],"yaw":180},"publishedAt":"2026-09-11T10:24:01.262Z","updatedAt":"2026-09-11T10:24:01.262Z","description":"## What is placed\n\nA covered market hall about 12 by 16 metres, laid on its own paving bays inside brick and clerestory walls. Cast iron columns carry three roof truss bays with glazed rooflights, an entrance arch with gates opens the south end, and a service door breaks the west wall.\n\nInside, a wall of lock up stall units faces three rows of open stalls with counters, canopies and back shelving, plus a corner unit. The traders are pitched: a produce slope with crates, fruit and veg, bakery and haberdashery trays, preserves and cheese, ceramics, flowers, a fabric bolt rack, a hanging stock rail, second hand books, vinyl, plant pots, hardware pegboard and a luggage rack. Counters carry scales, tills, a glass display case and a cash box. The concourse inside the entrance has counter modules, a cafe table, benches, planters, bins, a recycling station, an information board and wayfinding, with hanging trader signs above the aisles, pigeon netting under the eaves and a clock on the gable.\n\n## What moves\n\nRoller shutters on the lock up units run up and down, the entrance gates and the service door swing, the glass display case slides, the till drawer and the cash box open, the counter scales tip their pan, and the stock trolley, cleaning trolley and market barrow roll. Clips play as you walk up to each piece.\n\n## What does not move and why\n\nAwning fabric, the pigeon netting, the produce and the cloth are static geometry: none of it is reachable with the rigid node transforms this library uses, and faking the drape would cost a consumer more than it gives. There are no traders or shoppers in the hall because nothing here is skinned. Every stall name is invented and abstract: no real brand or trader is named anywhere in the pack.","scene":{"version":1,"spawn":{"position":[0,0.056,7],"yaw":180},"ground":{"style":"none"},"environment":{"preset":"hall","wallHeight":7.5,"lampHeight":6.2,"shadows":true},"placements":[{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-5,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-3,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[-1,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[1,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[3,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,-5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,-3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,-1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,1],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,5],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","position":[5,0,7],"rotation":0},{"asset":"indoor-market-hall-and-traders-service-door-module-49fde5ba","position":[-6.15,0.05,-6],"rotation":90},{"asset":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","position":[-6.15,0.05,-2],"rotation":90},{"asset":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","position":[-6.15,0.05,2],"rotation":90},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[-6.15,0.05,6],"rotation":90},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[6.15,0.05,-6],"rotation":-90},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[6.15,0.05,-2],"rotation":-90},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[6.15,0.05,2],"rotation":-90},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[6.15,0.05,6],"rotation":-90},{"asset":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","position":[-4,0.05,-8.15],"rotation":0},{"asset":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","position":[0,0.05,-8.15],"rotation":0},{"asset":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","position":[4,0.05,-8.15],"rotation":0},{"asset":"indoor-market-hall-and-traders-entrance-arch-module-6d78b50f","position":[0,0.05,8.15],"rotation":0},{"asset":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","position":[-4,0.05,8.15],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[-5.6,0.05,-6],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[-5.6,0.05,-2],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[-5.6,0.05,2],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[5.6,0.05,-6],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[5.6,0.05,-2],"rotation":0},{"asset":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","position":[5.6,0.05,2],"rotation":0},{"asset":"indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","position":[0,4.05,-6],"rotation":0},{"asset":"indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","position":[0,4.05,-2],"rotation":0},{"asset":"indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","position":[0,4.05,2],"rotation":0},{"asset":"indoor-market-hall-and-traders-lock-up-stall-unit-3085836b","position":[-4.8,0.05,-6],"rotation":90},{"asset":"indoor-market-hall-and-traders-lock-up-stall-unit-open-83b67308","position":[-4.8,0.05,-3],"rotation":90},{"asset":"indoor-market-hall-and-traders-lock-up-stall-unit-red-3f955420","position":[-4.8,0.05,0],"rotation":90},{"asset":"indoor-market-hall-and-traders-lock-up-stall-unit-open-83b67308","position":[-4.8,0.05,3],"rotation":90},{"asset":"indoor-market-hall-and-traders-awning-strip-90d45f49","position":[-3.55,2.3499999999999996,-3],"rotation":90},{"asset":"indoor-market-hall-and-traders-awning-strip-90d45f49","position":[-3.55,2.3499999999999996,3],"rotation":90},{"asset":"indoor-market-hall-and-traders-hardware-and-tool-pegbo-aa16ea76","position":[-5.5,0.05,-3],"rotation":90},{"asset":"indoor-market-hall-and-traders-stock-trolley-8a4988c7","position":[-4.4,0.05,-4.1],"rotation":90},{"asset":"indoor-market-hall-and-traders-luggage-and-bag-rack-be990ed8","position":[-5.5,0.05,3],"rotation":90},{"asset":"indoor-market-hall-and-traders-ceramic-and-homeware-sh-fcd061ca","position":[-4.5,0.05,2.1],"rotation":90},{"asset":"indoor-market-hall-and-traders-stall-stool-3c24a76c","position":[-4.3,0.05,3.9],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-5124bc70","position":[-1.5,0.05,-5.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","position":[1.5,0.05,-5.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-5124bc70","position":[4.5,0.05,-5.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","position":[-1.5,0.05,-1.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-5124bc70","position":[1.5,0.05,-1.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-corner-stall-unit-62d7d118","position":[4.5,0.05,-1.5],"rotation":180},{"asset":"indoor-market-hall-and-traders-open-stall-unit-5124bc70","position":[-1.5,0.05,2.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","position":[1.5,0.05,2.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-produce-display-slope-7c65dc44","position":[-1.5,0.05,-4.7],"rotation":0},{"asset":"indoor-market-hall-and-traders-fruit-and-veg-crate-set-222d673b","position":[-3,0.05,-4.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-bakery-tray-set-13f8fc39","position":[1.1,1,-5.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-preserve-and-cheese-she-99589905","position":[1.7,0.05,-6.3],"rotation":0},{"asset":"indoor-market-hall-and-traders-counter-scales-d24b89b3","position":[0.6,1,-5.1],"rotation":0},{"asset":"indoor-market-hall-and-traders-glass-display-case-8f12ea4d","position":[4.4,1,-5.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-till-and-card-reader-facdd132","position":[3.6,1,-5.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-back-shelving-3462e261","position":[-1.5,0.05,-6.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-price-board-85782807","position":[-0.6,1,-5.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-flower-bucket-display-f1808ce9","position":[-2,0.05,-0.7],"rotation":0},{"asset":"indoor-market-hall-and-traders-flower-bucket-display-f1808ce9","position":[-1,0.05,-2.5],"rotation":0},{"asset":"indoor-market-hall-and-traders-fabric-bolt-rack-98282900","position":[1.5,0.05,-2.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-haberdashery-tray-set-6ba8e2f8","position":[1.9,1,-1.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-stock-rail-d052326c","position":[0.2,0.05,-0.8],"rotation":0},{"asset":"indoor-market-hall-and-traders-cash-box-8c5754d7","position":[0.9,1,-1.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-second-hand-book-box-se-5632c81f","position":[4.3,0.05,-0.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-vinyl-record-crate-set-672bf283","position":[5.2,0.05,-2.3],"rotation":90},{"asset":"indoor-market-hall-and-traders-stall-stool-3c24a76c","position":[3.4,0.05,-2.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-plant-pot-display-dee4b9d4","position":[-1.5,0.05,3.3],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-back-shelving-3462e261","position":[1.5,0.05,1.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-price-board-85782807","position":[-2.2,1,2.1],"rotation":0},{"asset":"indoor-market-hall-and-traders-counter-scales-d24b89b3","position":[2.1,1,2.1],"rotation":0},{"asset":"indoor-market-hall-and-traders-folding-trader-table-c8986b1d","position":[-3.4,0.05,2.6],"rotation":90},{"asset":"indoor-market-hall-and-traders-market-barrow-a17cac01","position":[-2.9,0.05,0.6],"rotation":90},{"asset":"indoor-market-hall-and-traders-cleaning-trolley-5775ad0c","position":[3.6,0.05,1.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-counter-module-0979a957","position":[-2.25,0.05,6.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-counter-module-0979a957","position":[-0.75,0.05,6.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-counter-module-0979a957","position":[0.75,0.05,6.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-till-and-card-reader-facdd132","position":[-2.1,1,6.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-glass-display-case-8f12ea4d","position":[0.5,1,6.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-fruit-and-veg-crate-set-222d673b","position":[-1.2,0.05,7.1],"rotation":0},{"asset":"indoor-market-hall-and-traders-cafe-table-and-chairs-82b61c7a","position":[4,0.05,5.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-cafe-table-and-chairs-82b61c7a","position":[4,0.05,3],"rotation":0},{"asset":"indoor-market-hall-and-traders-planter-f3ac7b38","position":[2.3,0.05,6.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-planter-f3ac7b38","position":[5.6,0.05,6.8],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-bench-4b9bad27","position":[-3.4,0.05,4.6],"rotation":0},{"asset":"indoor-market-hall-and-traders-market-bench-4b9bad27","position":[3,0.05,-3.5],"rotation":90},{"asset":"indoor-market-hall-and-traders-market-bench-4b9bad27","position":[-3.4,0.05,-1.6],"rotation":90},{"asset":"indoor-market-hall-and-traders-litter-bin-06bd3ac5","position":[-3.4,0.05,5.8],"rotation":0},{"asset":"indoor-market-hall-and-traders-litter-bin-06bd3ac5","position":[3.2,0.05,-7.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-recycling-station-46f71b3a","position":[5.4,0.05,4.4],"rotation":-90},{"asset":"indoor-market-hall-and-traders-information-board-04c099de","position":[-5.2,0.05,6.4],"rotation":90},{"asset":"indoor-market-hall-and-traders-wayfinding-sign-4b3f002e","position":[2.4,0.05,4.4],"rotation":0},{"asset":"indoor-market-hall-and-traders-fire-point-08a2cd7f","position":[5.5,0.05,-7],"rotation":0},{"asset":"indoor-market-hall-and-traders-stall-stool-3c24a76c","position":[-0.9,0.05,6.9],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","position":[-1.5,2.9499999999999997,-4.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-trader-sign-blu-1948335a","position":[1.5,2.9499999999999997,-4.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-trader-sign-blu-1948335a","position":[-1.5,2.9499999999999997,-0.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","position":[1.5,2.9499999999999997,-0.2],"rotation":0},{"asset":"indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","position":[-1.5,2.9499999999999997,3.8],"rotation":0},{"asset":"indoor-market-hall-and-traders-hall-clock-on-bracket-f59f5cf2","position":[-1.4,2.25,-7.9],"rotation":0},{"asset":"indoor-market-hall-and-traders-pigeon-netting-frame-7a60e351","position":[5.2,2.75,-4],"rotation":90},{"asset":"indoor-market-hall-and-traders-pigeon-netting-frame-7a60e351","position":[-5.2,2.75,-4],"rotation":90}],"points":[{"position":[1.5,0,-3.5],"title":"Iron and glass overhead","text":"Cast iron columns carry the roof on both sides of the hall, and the truss bays between them lift a glazed rooflight over the aisles. Look up before you look at the stock.","asset":"indoor-market-hall-and-traders-roof-truss-bay-1bcce11e"},{"position":[-3,0,-3.5],"title":"The lock up stalls","text":"The west wall is a run of lock up units. Two stand open for trade, one keeps its roller shutter down, and the shutters animate as you come near them.","asset":"indoor-market-hall-and-traders-lock-up-stall-unit-3085836b"},{"position":[0,0,-3.5],"title":"The open stalls","text":"Three rows of open stalls fill the middle of the hall, each with a serving counter, a canopy and back shelving. Folding awning strips reach out over the aisle from the lock ups.","asset":"indoor-market-hall-and-traders-open-stall-unit-5124bc70"},{"position":[-1.5,0,0.5],"title":"Produce and flowers","text":"A sloped display of crates holds the fruit and veg pitch, and buckets of cut flowers stand out into the aisle where the light from the rooflight falls.","asset":"indoor-market-hall-and-traders-flower-bucket-display-f1808ce9"},{"position":[1.5,0,0.5],"title":"Fabric, books and records","text":"The dry goods traders sit on the east side: bolts of cloth on a rack, a haberdashery tray, and boxes of second hand books and vinyl to sort through.","asset":"indoor-market-hall-and-traders-fabric-bolt-rack-98282900"},{"position":[-2,0,5],"title":"The hall dressing","text":"Benches, litter bins, planters and a cafe table furnish the concourse inside the entrance, with hanging trader signs above the aisles and the hall clock on the far gable.","asset":"indoor-market-hall-and-traders-market-bench-4b9bad27"}],"poster":{"position":[0,1.7,7],"lookAt":[0,1.3,1]}},"bounds":{"min":[-8.363873714407788,-0.000025177397788667816,-10.363873714407788],"max":[8.363873714407788,8.390110128903864,10.38010979702625]},"assets":[{"id":"34839","slug":"indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","title":"Market hall floor bay (Indoor Market Hall and Traders)","summary":"A 2 m square of the hall floor: 50 mm stone flags with a raked jointing grid and a proud edge joint, so a field of bays reads as paving and the stalls and aisles have ground to stand on.","description":"A 2 m square of the hall floor: 50 mm stone flags with a raked jointing grid and a proud edge joint, so a field of bays reads as paving and the stalls and aisles have ground to stand on. Dimensions 2.00 by 0.06 by 2.00 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: paving-left, paving-right, paving-front, paving-back (type hall-floor). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","cdnUrl":"https://cdn.3dassets.dev/assets/34839/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-market-hall-floor-bay-d36d1956","thumbnailUrl":"https://cdn.3dassets.dev/assets/34839/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34839/v1/poster.webp","blurhash":"UADcXQ%M00WBxuayRjj[00M{~qayIUofogWB","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7836,"triangles":136,"vertices":315,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000025177397788667816,-1],"max":[1,0.056036592944210456,1]},"sizeMeters":[2,0.056,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:15.004Z","updatedAt":"2026-09-11T10:19:15.211Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34839/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarketHallFloorBayIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34839/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34839/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34839/v1/model.glb\" alt=\"Market hall floor bay (Indoor Market Hall and Traders)\" 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/34839/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/34839/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34840","slug":"indoor-market-hall-and-traders-service-door-module-49fde5ba","title":"Service door wall module (Indoor Market Hall and Traders)","summary":"The same bay with the traders entrance in it: a stone head over a 1.06 m opening, an iron lining and threshold, and a ribbed steel leaf with a vision panel and a pull handle on a real hinge.","description":"The same bay with the traders entrance in it: a stone head over a 1.06 m opening, an iron lining and threshold, and a ribbed steel leaf with a vision panel and a pull handle on a real hinge. Dimensions 4.00 by 4.00 by 0.43 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: service-door. Connectors: wall-left, wall-right (type hall-wall). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-service-door-module-49fde5ba","cdnUrl":"https://cdn.3dassets.dev/assets/34840/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-service-door-module-49fde5ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/34840/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34840/v1/poster.webp","blurhash":"U7GH@_iw00Mx^K~CEm0e00xu=_X9O?%M$f9F","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":121404,"triangles":2720,"vertices":6170,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2,0,-0.21387371440778832],"max":[2,4,0.21387371440778832]},"sizeMeters":[4,4,0.428],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:15.022Z","updatedAt":"2026-09-11T10:19:15.215Z","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/34840/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 ServiceDoorWallModuleIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34840/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/34840/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34840/v1/model.glb\" alt=\"Service door wall module (Indoor Market Hall and Traders)\" 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/34840/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/34840/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34838","slug":"indoor-market-hall-and-traders-brick-wall-module-a50fce56","title":"Brick hall wall module (Indoor Market Hall and Traders)","summary":"The 4 m by 4 m bay of the hall shell: red stock brick faced on both sides with a stone plinth, a string course and a moulded cornice, and a brick pilaster on each pier so a run reads as a structural bay rather than a flat panel.","description":"The 4 m by 4 m bay of the hall shell: red stock brick faced on both sides with a stone plinth, a string course and a moulded cornice, and a brick pilaster on each pier so a run reads as a structural bay rather than a flat panel. Dimensions 4.00 by 4.00 by 0.43 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: wall-left, wall-right (type hall-wall). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-brick-wall-module-a50fce56","cdnUrl":"https://cdn.3dassets.dev/assets/34838/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-brick-wall-module-a50fce56","thumbnailUrl":"https://cdn.3dassets.dev/assets/34838/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34838/v1/poster.webp","blurhash":"UBG@[L}t00Vs=y^jt7560MOU-oWVoy%MX69Z","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"historical","title":"Historical"}],"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":103204,"triangles":2360,"vertices":5446,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2,0,-0.21387371440778832],"max":[2,4,0.21387371440778832]},"sizeMeters":[4,4,0.428],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:13.333Z","updatedAt":"2026-09-11T10:19:13.454Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34838/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BrickHallWallModuleIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34838/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34838/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34838/v1/model.glb\" alt=\"Brick hall wall module (Indoor Market Hall and Traders)\" 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/34838/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/34838/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34836","slug":"indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","title":"Clerestory wall module (Indoor Market Hall and Traders)","summary":"The same bay with a cast iron window band over a brick base: a stone cill and head, five mullions and a transom, and a single pane behind them. This is what lights a hall at stall height when the rooflights alone are not enough.","description":"The same bay with a cast iron window band over a brick base: a stone cill and head, five mullions and a transom, and a single pane behind them. This is what lights a hall at stall height when the rooflights alone are not enough. Dimensions 4.00 by 4.00 by 0.43 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: wall-left, wall-right (type hall-wall). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","cdnUrl":"https://cdn.3dassets.dev/assets/34836/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-clerestory-wall-module-43fef6e8","thumbnailUrl":"https://cdn.3dassets.dev/assets/34836/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34836/v1/poster.webp","blurhash":"U5F#:m_300IUxb~Ct60000M|?aoe|G~CGa00","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"historical","title":"Historical"}],"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":96824,"triangles":2240,"vertices":4988,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2,0,-0.21387371440778832],"max":[2,4,0.21387371440778832]},"sizeMeters":[4,4,0.428],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:13.172Z","updatedAt":"2026-09-11T10:19:13.318Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34836/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClerestoryWallModuleIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34836/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34836/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34836/v1/model.glb\" alt=\"Clerestory wall module (Indoor Market Hall and Traders)\" 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/34836/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/34836/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34841","slug":"indoor-market-hall-and-traders-entrance-arch-module-6d78b50f","title":"Entrance arch module with gates (Indoor Market Hall and Traders)","summary":"The public way in: brick piers on the wall grid carrying a turned stone arch of eleven voussoirs, a blank name panel and a cornice above, and a pair of cast iron gates of vertical bars with spear heads hung on the imposts.","description":"The public way in: brick piers on the wall grid carrying a turned stone arch of eleven voussoirs, a blank name panel and a cornice above, and a pair of cast iron gates of vertical bars with spear heads hung on the imposts. Dimensions 4.16 by 5.20 by 0.46 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: gate-left, gate-right. Connectors: wall-left, wall-right (type hall-wall). The module is 5.2 m tall and couples to the 4 m wall modules on the same pier ports, so the arch stands proud of the parapet as a real market entrance does. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-entrance-arch-module-6d78b50f","cdnUrl":"https://cdn.3dassets.dev/assets/34841/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-entrance-arch-module-6d78b50f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34841/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34841/v1/poster.webp","blurhash":"UCDb~KS#00r=~q%24.9tJAxus-InIoxu%2IU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":156928,"triangles":3872,"vertices":8861,"meshes":4,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.0800948350876727,0,-0.23010979702624976],"max":[2.0800948350876727,5.199999809265137,0.23010979702624976]},"sizeMeters":[4.16,5.2,0.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:16.133Z","updatedAt":"2026-09-11T10:19:16.313Z","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/34841/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 EntranceArchModuleWithGatesIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34841/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/34841/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34841/v1/model.glb\" alt=\"Entrance arch module with gates (Indoor Market Hall and Traders)\" 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/34841/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/34841/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34835","slug":"indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","title":"Cast iron column module (Indoor Market Hall and Traders)","summary":"The 4 m cast iron column a market hall roof stands on: a stone pad, a moulded base, a shaft with a shallow entasis, a foliate capital and a square bearing plate, with pierced spandrel brackets in the knee facing along the hall.","description":"The 4 m cast iron column a market hall roof stands on: a stone pad, a moulded base, a shaft with a shallow entasis, a foliate capital and a square bearing plate, with pierced spandrel brackets in the knee facing along the hall. Dimensions 0.44 by 4.00 by 0.92 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: column-top (type hall-frame). The cap plate is at 4 m, which is the roof bay bearing height. Pair the columns at 11.2 m centres across the hall and 4 m along it. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","cdnUrl":"https://cdn.3dassets.dev/assets/34835/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-cast-iron-column-module-c40b7c4c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34835/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34835/v1/poster.webp","blurhash":"U24{3bg100n7ELRj-V%M_3tR4.D%00oM_MNZ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"historical","title":"Historical"}],"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":37348,"triangles":900,"vertices":1868,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2199999988079071,-0.000006407870966972096,-0.45990173022376757],"max":[0.2199999988079071,4,0.45990173022376757]},"sizeMeters":[0.44,4,0.92],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:13.196Z","updatedAt":"2026-09-11T10:19:13.344Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34835/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CastIronColumnModuleIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34835/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34835/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34835/v1/model.glb\" alt=\"Cast iron column module (Indoor Market Hall and Traders)\" 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/34835/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/34835/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34837","slug":"indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","title":"Roof truss bay with glazed rooflight (Indoor Market Hall and Traders)","summary":"One 4 m bay of the hall roof: a wrought iron truss of tie beam, principal rafters, king post and struts spanning 11.2 m, with purlins, slate sheeting, eaves gutters and a patent glazed ridge rooflight that lights the hall from above.","description":"One 4 m bay of the hall roof: a wrought iron truss of tie beam, principal rafters, king post and struts spanning 11.2 m, with purlins, slate sheeting, eaves gutters and a patent glazed ridge rooflight that lights the hall from above. Dimensions 11.50 by 2.34 by 4.00 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: bearing-left, bearing-right, bay-front, bay-back (type hall-frame, hall-roof). The bearing plates rest at y=0, so the bay is placed at the column cap height of 4 m. Couple bays front to back at 4 m centres and the rooflight runs the length of the hall. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","cdnUrl":"https://cdn.3dassets.dev/assets/34837/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-roof-truss-bay-1bcce11e","thumbnailUrl":"https://cdn.3dassets.dev/assets/34837/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34837/v1/poster.webp","blurhash":"U46uFf9F00_3bF-;R6IU00x]_ND%IA9E%z%M","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"historical","title":"Historical"}],"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":60560,"triangles":1384,"vertices":3140,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-5.75,-0.0001102147345526383,-2.001365703299051],"max":[5.75,2.340110128903864,2.001365703299051]},"sizeMeters":[11.5,2.34,4.003],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:13.255Z","updatedAt":"2026-09-11T10:19:13.375Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34837/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofTrussBayWithGlazedRooflightIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34837/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34837/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34837/v1/model.glb\" alt=\"Roof truss bay with glazed rooflight (Indoor Market Hall and Traders)\" 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/34837/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/34837/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34848","slug":"indoor-market-hall-and-traders-lock-up-stall-unit-3085836b","title":"Lock up stall unit with roller shutter (Indoor Market Hall and Traders)","summary":"The shuttered unit that lines a market hall wall: a painted timber carcass 3 m wide and 2.4 m deep with party walls, a stone deck, a fascia with a blank sign band, a serving counter and stocked back shelves, and a corrugated roller shutter in its box.","description":"The shuttered unit that lines a market hall wall: a painted timber carcass 3 m wide and 2.4 m deep with party walls, a stone deck, a fascia with a blank sign band, a serving counter and stocked back shelves, and a corrugated roller shutter in its box. Dimensions 3.00 by 3.00 by 2.51 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: shutter. Connectors: stall-left, stall-right (type market-stall). The unit is open topped, as a hall lock up is: the market roof over it is its roof. Couple the units shoulder to shoulder on their party wall ports to make a row of any length. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-lock-up-stall-unit-3085836b","cdnUrl":"https://cdn.3dassets.dev/assets/34848/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-lock-up-stall-unit-3085836b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34848/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34848/v1/poster.webp","blurhash":"UCHLPEX;00~U^+WBEMS%0LV=0M9Hawt6xaix","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":244376,"triangles":5632,"vertices":12687,"meshes":8,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.5,-0.00006301688926757532,-1.2000640888698997],"max":[1.5004018564432633,3.001199960708618,1.3089455773054992]},"sizeMeters":[3,3.001,2.509],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:19.790Z","updatedAt":"2026-09-11T10:19:19.995Z","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/34848/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 LockUpStallUnitWithRollerShutterIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34848/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/34848/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34848/v1/model.glb\" alt=\"Lock up stall unit with roller shutter (Indoor Market Hall and Traders)\" 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/34848/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/34848/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34847","slug":"indoor-market-hall-and-traders-lock-up-stall-unit-open-83b67308","title":"Lock up stall unit, shutter up (Indoor Market Hall and Traders)","summary":"The same unit trading: the shutter is modelled rolled into its box instead of hanging in the opening, so the counter, the stocked shelves and the interior are open to the aisle without animating anything.","description":"The same unit trading: the shutter is modelled rolled into its box instead of hanging in the opening, so the counter, the stocked shelves and the interior are open to the aisle without animating anything. Dimensions 3.00 by 3.00 by 2.51 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: stall-left, stall-right (type market-stall). The rolled shutter is fixed geometry here. Use the shuttered unit and its clip where a project wants the shutter to move. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-lock-up-stall-unit-open-83b67308","cdnUrl":"https://cdn.3dassets.dev/assets/34847/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-lock-up-stall-unit-open-83b67308","thumbnailUrl":"https://cdn.3dassets.dev/assets/34847/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34847/v1/poster.webp","blurhash":"UBIOFB.A00--%MM{S5x^01IU4pD+?Y-.M|Dj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":156136,"triangles":3576,"vertices":8032,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-1.5,-0.00006301688926757532,-1.2000640888698997],"max":[1.5004018564432633,3.001199960708618,1.3089455773054992]},"sizeMeters":[3,3.001,2.509],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:19.768Z","updatedAt":"2026-09-11T10:19:19.956Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34847/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LockUpStallUnitShutterUpIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34847/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34847/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34847/v1/model.glb\" alt=\"Lock up stall unit, shutter up (Indoor Market Hall and Traders)\" 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/34847/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/34847/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34849","slug":"indoor-market-hall-and-traders-lock-up-stall-unit-red-3f955420","title":"Lock up stall unit, red livery (Indoor Market Hall and Traders)","summary":"The same unit painted in the hall's market red instead of the blue, so a row of lock ups reads as separate businesses. Geometry, ports and shutter are identical.","description":"The same unit painted in the hall's market red instead of the blue, so a row of lock ups reads as separate businesses. Geometry, ports and shutter are identical. Dimensions 3.00 by 3.00 by 2.51 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: shutter. Connectors: stall-left, stall-right (type market-stall). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-lock-up-stall-unit-red-3f955420","cdnUrl":"https://cdn.3dassets.dev/assets/34849/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-lock-up-stall-unit-red-3f955420","thumbnailUrl":"https://cdn.3dassets.dev/assets/34849/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34849/v1/poster.webp","blurhash":"UDH-#-xd01~U}@v}IVSP0fV=4o9GKPXmxanO","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":243608,"triangles":5632,"vertices":12687,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.5,-0.00006301688926757532,-1.2000640888698997],"max":[1.5004018564432633,3.001199960708618,1.3089995175608238]},"sizeMeters":[3,3.001,2.509],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:18.950Z","updatedAt":"2026-09-11T10:19:19.057Z","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/34849/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 LockUpStallUnitRedLiveryIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34849/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/34849/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34849/v1/model.glb\" alt=\"Lock up stall unit, red livery (Indoor Market Hall and Traders)\" 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/34849/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/34849/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34855","slug":"indoor-market-hall-and-traders-awning-strip-90d45f49","title":"Awning strip on folding arms (Indoor Market Hall and Traders)","summary":"A 2.8 m striped canvas awning on folding steel arms with a scalloped valance, the strip a hall fixes over a lock up front so the row under the clerestory reads as shopfronts rather than shutters.","description":"A 2.8 m striped canvas awning on folding steel arms with a scalloped valance, the strip a hall fixes over a lock up front so the row under the clerestory reads as shopfronts rather than shutters. Dimensions 2.80 by 1.31 by 1.48 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The awning canvas, the netting mesh, the hanging cloth and the sacking are static geometry: a flexible sheet is not reachable with one rigid node transform, so it is modelled in its hanging shape. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-awning-strip-90d45f49","cdnUrl":"https://cdn.3dassets.dev/assets/34855/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-awning-strip-90d45f49","thumbnailUrl":"https://cdn.3dassets.dev/assets/34855/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34855/v1/poster.webp","blurhash":"UEE_?iX800en~WWVE1M{00xuVsIU0L?Hs:E1","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":49948,"triangles":1140,"vertices":2516,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.399999976158142,-0.000018920526479115907,-0.7482257503962159],"max":[1.399999976158142,1.3132444282626852,0.7289974278966134]},"sizeMeters":[2.8,1.313,1.477],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:23.879Z","updatedAt":"2026-09-11T10:19:23.980Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34855/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AwningStripOnFoldingArmsIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34855/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34855/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34855/v1/model.glb\" alt=\"Awning strip on folding arms (Indoor Market Hall and Traders)\" 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/34855/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/34855/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34875","slug":"indoor-market-hall-and-traders-hardware-and-tool-pegbo-aa16ea76","title":"Hardware and tool pegboard (Indoor Market Hall and Traders)","summary":"The hardware pitch's back wall: a 1.5 m pegboard in a steel frame with twenty hooks of blank card packets, a row of hand tools, a lower display shelf and a bin of boxed stock under it.","description":"The hardware pitch's back wall: a 1.5 m pegboard in a steel frame with twenty hooks of blank card packets, a row of hand tools, a lower display shelf and a bin of boxed stock under it. Dimensions 1.50 by 1.80 by 0.50 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-hardware-and-tool-pegbo-aa16ea76","cdnUrl":"https://cdn.3dassets.dev/assets/34875/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-hardware-and-tool-pegbo-aa16ea76","thumbnailUrl":"https://cdn.3dassets.dev/assets/34875/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34875/v1/poster.webp","blurhash":"UCB|c]-;009Z~qx]4.D%01Rj^+xZIUkCx]i{","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":172972,"triangles":4080,"vertices":9584,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.7499823798268745,0,-0.25003077323579276],"max":[0.7499823798268745,1.801200032234192,0.25003077323579276]},"sizeMeters":[1.5,1.801,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:35.886Z","updatedAt":"2026-09-11T10:19:36.001Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34875/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HardwareAndToolPegboardIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34875/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34875/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34875/v1/model.glb\" alt=\"Hardware and tool pegboard (Indoor Market Hall and Traders)\" 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/34875/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/34875/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34863","slug":"indoor-market-hall-and-traders-stock-trolley-8a4988c7","title":"Stock trolley (Indoor Market Hall and Traders)","summary":"The two deck steel trolley stock comes in on: a welded frame on four castors with a push handle, loaded with blank cartons on the lower deck and an open crate and bundles on the upper one.","description":"The two deck steel trolley stock comes in on: a welded frame on four castors with a push handle, loaded with blank cartons on the lower deck and an open crate and bundles on the upper one. Dimensions 0.88 by 1.02 by 0.56 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-stock-trolley-8a4988c7","cdnUrl":"https://cdn.3dassets.dev/assets/34863/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-stock-trolley-8a4988c7","thumbnailUrl":"https://cdn.3dassets.dev/assets/34863/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34863/v1/poster.webp","blurhash":"UEDvTM%M00IV~Uxu9aIo00RP^*t8E9Rjsjog","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":108312,"triangles":2768,"vertices":6160,"meshes":8,"materials":5,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.44001170664141315,-7.450580569168253e-10,-0.27998678726264786],"max":[0.44001170664141315,1.0180000066757202,0.27998678726264786]},"sizeMeters":[0.88,1.018,0.56],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:28.026Z","updatedAt":"2026-09-11T10:19:28.132Z","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/34863/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 StockTrolleyIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34863/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/34863/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34863/v1/model.glb\" alt=\"Stock trolley (Indoor Market Hall and Traders)\" 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/34863/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/34863/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34876","slug":"indoor-market-hall-and-traders-luggage-and-bag-rack-be990ed8","title":"Luggage and bag rack (Indoor Market Hall and Traders)","summary":"The bag trader's rack: a steel frame 1.9 m high with two decks of stacked cases and four holdalls hung by their handles from the top rail, in four plain colours with no logo, tag or trim detail.","description":"The bag trader's rack: a steel frame 1.9 m high with two decks of stacked cases and four holdalls hung by their handles from the top rail, in four plain colours with no logo, tag or trim detail. Dimensions 1.39 by 1.90 by 0.59 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-luggage-and-bag-rack-be990ed8","cdnUrl":"https://cdn.3dassets.dev/assets/34876/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-luggage-and-bag-rack-be990ed8","thumbnailUrl":"https://cdn.3dassets.dev/assets/34876/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34876/v1/poster.webp","blurhash":"U5Bfz=s@00XI55og?HRi02S_~AmpZ+?GtQ0L","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":85624,"triangles":2144,"vertices":4630,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6949522298121688,0,-0.29505752368787824],"max":[0.6949522298121688,1.899999976158142,0.29505752368787824]},"sizeMeters":[1.39,1.9,0.59],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:37.664Z","updatedAt":"2026-09-11T10:19:37.824Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34876/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LuggageAndBagRackIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34876/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34876/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34876/v1/model.glb\" alt=\"Luggage and bag rack (Indoor Market Hall and Traders)\" 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/34876/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/34876/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34870","slug":"indoor-market-hall-and-traders-ceramic-and-homeware-sh-fcd061ca","title":"Ceramic and homeware shelf (Indoor Market Hall and Traders)","summary":"The same unit stocked as a homeware pitch: stacked bowls on the bottom deck, plates stood on edge in a rack on the middle one and twelve mugs above, glazed in cream, blue and green.","description":"The same unit stocked as a homeware pitch: stacked bowls on the bottom deck, plates stood on edge in a rack on the middle one and twelve mugs above, glazed in cream, blue and green. Dimensions 1.10 by 1.30 by 0.36 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-ceramic-and-homeware-sh-fcd061ca","cdnUrl":"https://cdn.3dassets.dev/assets/34870/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-ceramic-and-homeware-sh-fcd061ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/34870/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34870/v1/poster.webp","blurhash":"UCGl03-;00xC~W?aD*9G00V@oxS4xZxaR*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":157100,"triangles":3920,"vertices":8113,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5500213427819699,0,-0.17998137710754183],"max":[0.5500213427819699,1.2999999523162842,0.17998137710754183]},"sizeMeters":[1.1,1.3,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:32.306Z","updatedAt":"2026-09-11T10:19:32.408Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34870/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CeramicAndHomewareShelfIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34870/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34870/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34870/v1/model.glb\" alt=\"Ceramic and homeware shelf (Indoor Market Hall and Traders)\" 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/34870/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/34870/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34862","slug":"indoor-market-hall-and-traders-stall-stool-3c24a76c","title":"Stall stool (Indoor Market Hall and Traders)","summary":"The four legged timber stool a trader perches on between customers: a 0.32 m turned seat at 0.66 m on splayed round legs with a ring stretcher.","description":"The four legged timber stool a trader perches on between customers: a 0.32 m turned seat at 0.66 m on splayed round legs with a ring stretcher. Dimensions 0.32 by 0.66 by 0.32 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-stall-stool-3c24a76c","cdnUrl":"https://cdn.3dassets.dev/assets/34862/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-stall-stool-3c24a76c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34862/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34862/v1/poster.webp","blurhash":"UADI].%L00D*~VoM4:RjM}WBRjWX^*ocIoe?","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":14556,"triangles":320,"vertices":714,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.15998993150904198,0,-0.15998993150904198],"max":[0.15998993150904198,0.6622105836868286,0.15998993150904198]},"sizeMeters":[0.32,0.662,0.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:27.624Z","updatedAt":"2026-09-11T10:19:27.815Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34862/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StallStoolIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34862/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34862/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34862/v1/model.glb\" alt=\"Stall stool (Indoor Market Hall and Traders)\" 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/34862/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/34862/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34850","slug":"indoor-market-hall-and-traders-open-stall-unit-5124bc70","title":"Open stall unit with counter and canopy (Indoor Market Hall and Traders)","summary":"The pitch a trader hires by the day: four steel posts and a head frame carrying a striped canvas canopy with a scalloped valance, over a boarded timber counter with a raked display back, a price rail and a blank valance board.","description":"The pitch a trader hires by the day: four steel posts and a head frame carrying a striped canvas canopy with a scalloped valance, over a boarded timber counter with a raked display back, a price rail and a blank valance board. Dimensions 2.95 by 2.76 by 2.72 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: stall-left, stall-right (type market-stall). Couple the stalls on their side ports to build a row down an aisle, and turn the row with the corner unit. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-open-stall-unit-5124bc70","cdnUrl":"https://cdn.3dassets.dev/assets/34850/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-open-stall-unit-5124bc70","thumbnailUrl":"https://cdn.3dassets.dev/assets/34850/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34850/v1/poster.webp","blurhash":"UEGH-#=e00F^?w%MR5RQ00kp-oMxVrRkbbNZ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":108884,"triangles":2544,"vertices":5620,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.475000023841858,-0.00009097603165075796,-1.175021381949645],"max":[1.475000023841858,2.7645494676081594,1.5475537134765047]},"sizeMeters":[2.95,2.765,2.723],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:20.700Z","updatedAt":"2026-09-11T10:19:20.820Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34850/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenStallUnitWithCounterAndCanopyIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34850/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34850/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34850/v1/model.glb\" alt=\"Open stall unit with counter and canopy (Indoor Market Hall and Traders)\" 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/34850/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/34850/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34851","slug":"indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","title":"Open stall unit, blue livery (Indoor Market Hall and Traders)","summary":"The same stall with its counter boarding and valance in the hall's blue livery under the same striped canopy, so neighbouring pitches in one row are told apart at a glance.","description":"The same stall with its counter boarding and valance in the hall's blue livery under the same striped canopy, so neighbouring pitches in one row are told apart at a glance. Dimensions 2.95 by 2.76 by 2.72 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: stall-left, stall-right (type market-stall). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","cdnUrl":"https://cdn.3dassets.dev/assets/34851/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-open-stall-unit-blue-7bc77762","thumbnailUrl":"https://cdn.3dassets.dev/assets/34851/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34851/v1/poster.webp","blurhash":"UEE{U+xw00aI~C-oEgI=00xr-oIWEfNewcaI","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":109744,"triangles":2544,"vertices":5620,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.475000023841858,-0.00009097603165075796,-1.175021381949645],"max":[1.475000023841858,2.7645494676081594,1.5475537134765047]},"sizeMeters":[2.95,2.765,2.723],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:21.056Z","updatedAt":"2026-09-11T10:19:21.155Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34851/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenStallUnitBlueLiveryIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34851/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34851/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34851/v1/model.glb\" alt=\"Open stall unit, blue livery (Indoor Market Hall and Traders)\" 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/34851/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/34851/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34852","slug":"indoor-market-hall-and-traders-corner-stall-unit-62d7d118","title":"Corner stall unit (Indoor Market Hall and Traders)","summary":"The square unit that turns a row through 90 degrees: canopies on both open faces, an L of boarded counter round the corner with a mitred timber top in the knee, and the same posts, valance and head frame as the straight stall.","description":"The square unit that turns a row through 90 degrees: canopies on both open faces, an L of boarded counter round the corner with a mitred timber top in the knee, and the same posts, valance and head frame as the straight stall. Dimensions 3.30 by 2.74 by 3.38 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: stall-right, stall-front (type market-stall). Ports are on the right gable and the front face, so the unit sits in the knee of an L with its two counters facing the aisles. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-corner-stall-unit-62d7d118","cdnUrl":"https://cdn.3dassets.dev/assets/34852/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-corner-stall-unit-62d7d118","thumbnailUrl":"https://cdn.3dassets.dev/assets/34852/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34852/v1/poster.webp","blurhash":"UGEout%M0Knh~CWBSLt700M{%1of9]WWniax","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":172808,"triangles":4096,"vertices":8978,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.475000023841858,-0.00009265074262931883,-1.5499999523162842],"max":[1.825355887413025,2.7422473035227752,1.825355887413025]},"sizeMeters":[3.3,2.742,3.375],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:22.619Z","updatedAt":"2026-09-11T10:19:22.730Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34852/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CornerStallUnitIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34852/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34852/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34852/v1/model.glb\" alt=\"Corner stall unit (Indoor Market Hall and Traders)\" 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/34852/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/34852/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34856","slug":"indoor-market-hall-and-traders-produce-display-slope-7c65dc44","title":"Produce display slope with crates (Indoor Market Hall and Traders)","summary":"The raked front a greengrocer trades off: a timber trestle with a 0.96 m sloping deck, a toe board along the front and three stepped crates of generic produce in green, red and amber, with a slate board over the top crate.","description":"The raked front a greengrocer trades off: a timber trestle with a 0.96 m sloping deck, a toe board along the front and three stepped crates of generic produce in green, red and amber, with a slate board over the top crate. Dimensions 1.80 by 1.43 by 0.96 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-produce-display-slope-7c65dc44","cdnUrl":"https://cdn.3dassets.dev/assets/34856/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-produce-display-slope-7c65dc44","thumbnailUrl":"https://cdn.3dassets.dev/assets/34856/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34856/v1/poster.webp","blurhash":"U6FreH-r00M|?H^%E20M00IU~VIo01V[%1WU","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":367168,"triangles":10472,"vertices":21582,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.8999999761581421,-0.000003262096886613719,-0.5183744622205659],"max":[0.8999999761581421,1.4264374786502045,0.445046026799576]},"sizeMeters":[1.8,1.426,0.963],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:25.029Z","updatedAt":"2026-09-11T10:19:25.237Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34856/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ProduceDisplaySlopeWithCratesIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34856/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34856/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34856/v1/model.glb\" alt=\"Produce display slope with crates (Indoor Market Hall and Traders)\" 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/34856/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/34856/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34865","slug":"indoor-market-hall-and-traders-fruit-and-veg-crate-set-222d673b","title":"Fruit and veg crate set (Indoor Market Hall and Traders)","summary":"The greengrocer's ground display: four slatted timber crates on a low stand, heaped with generic produce in green, red and amber, with a spare crate and a folded sack stacked at the back.","description":"The greengrocer's ground display: four slatted timber crates on a low stand, heaped with generic produce in green, red and amber, with a spare crate and a folded sack stacked at the back. Dimensions 1.35 by 0.68 by 0.81 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-fruit-and-veg-crate-set-222d673b","cdnUrl":"https://cdn.3dassets.dev/assets/34865/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-fruit-and-veg-crate-set-222d673b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34865/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34865/v1/poster.webp","blurhash":"U6Gk,f?[00#F0N?ZxAVz004VtkpF$~Dl-=EJ","category":{"slug":"food","title":"Food & Drink"},"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":379512,"triangles":10200,"vertices":21098,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.675000011920929,-0.00002350168104892081,-0.4000426856110529],"max":[0.675000011920929,0.6800235088336063,0.409042688948913]},"sizeMeters":[1.35,0.68,0.809],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:29.677Z","updatedAt":"2026-09-11T10:19:29.774Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34865/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FruitAndVegCrateSetIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34865/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34865/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34865/v1/model.glb\" alt=\"Fruit and veg crate set (Indoor Market Hall and Traders)\" 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/34865/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/34865/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34867","slug":"indoor-market-hall-and-traders-bakery-tray-set-13f8fc39","title":"Bakery tray set (Indoor Market Hall and Traders)","summary":"Four stacking bakery trays on their corner posts, three laid with tin loaves and the top one with rolls. Generic bread with no wrapper, label or bag, so it suits a bakery pitch in any setting.","description":"Four stacking bakery trays on their corner posts, three laid with tin loaves and the top one with rolls. Generic bread with no wrapper, label or bag, so it suits a bakery pitch in any setting. Dimensions 0.77 by 0.80 by 0.53 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-bakery-tray-set-13f8fc39","cdnUrl":"https://cdn.3dassets.dev/assets/34867/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-bakery-tray-set-13f8fc39","thumbnailUrl":"https://cdn.3dassets.dev/assets/34867/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34867/v1/poster.webp","blurhash":"UAE2]^-:00E3~mt79cR%01RkxaoLIos:ogM|","category":{"slug":"food","title":"Food & Drink"},"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":158312,"triangles":4228,"vertices":8182,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.3859859062002602,0,-0.2659993325564904],"max":[0.3859859062002602,0.800000011920929,0.2659993325564904]},"sizeMeters":[0.772,0.8,0.532],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:30.997Z","updatedAt":"2026-09-11T10:19:31.099Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34867/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BakeryTraySetIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34867/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34867/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34867/v1/model.glb\" alt=\"Bakery tray set (Indoor Market Hall and Traders)\" 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/34867/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/34867/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34869","slug":"indoor-market-hall-and-traders-preserve-and-cheese-she-99589905","title":"Preserve and cheese shelf (Indoor Market Hall and Traders)","summary":"A 1.3 m timber shelf unit for the deli pitch: three cut truckles with a darker rind on the bottom deck and two decks of lidded jars above, all of them blank. No label, seal or brand anywhere on the stock.","description":"A 1.3 m timber shelf unit for the deli pitch: three cut truckles with a darker rind on the bottom deck and two decks of lidded jars above, all of them blank. No label, seal or brand anywhere on the stock. Dimensions 1.10 by 1.30 by 0.36 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-preserve-and-cheese-she-99589905","cdnUrl":"https://cdn.3dassets.dev/assets/34869/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-preserve-and-cheese-she-99589905","thumbnailUrl":"https://cdn.3dassets.dev/assets/34869/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34869/v1/poster.webp","blurhash":"UCG[fu-:00t7~V?a9a4:00R*wHV[tSxuRiD*","category":{"slug":"food","title":"Food & Drink"},"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":142036,"triangles":3456,"vertices":7300,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5500213427819699,0,-0.17998137710754183],"max":[0.5500213427819699,1.2999999523162842,0.17998137710754183]},"sizeMeters":[1.1,1.3,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:32.697Z","updatedAt":"2026-09-11T10:19:32.810Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34869/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PreserveAndCheeseShelfIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34869/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34869/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34869/v1/model.glb\" alt=\"Preserve and cheese shelf (Indoor Market Hall and Traders)\" 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/34869/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/34869/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34859","slug":"indoor-market-hall-and-traders-counter-scales-d24b89b3","title":"Counter scales with a tipping pan (Indoor Market Hall and Traders)","summary":"The cast iron balance every market counter has: a moulded base, a beam, a dial head with a blank face and a single needle, a brass pan on a stirrup and three loose weights. No figures on the dial and no maker name.","description":"The cast iron balance every market counter has: a moulded base, a beam, a dial head with a blank face and a single needle, a brass pan on a stirrup and three loose weights. No figures on the dial and no maker name. Dimensions 0.56 by 0.46 by 0.28 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: scale-pan. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-counter-scales-d24b89b3","cdnUrl":"https://cdn.3dassets.dev/assets/34859/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-counter-scales-d24b89b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/34859/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34859/v1/poster.webp","blurhash":"U8AT}+lA00,B~Abd9w%04Urr-:Sh16%0~99b","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41516,"triangles":964,"vertices":2019,"meshes":3,"materials":3,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.23000000417232513,-0.00002069637749191333,-0.13788080262681054],"max":[0.33399999141693115,0.45850147173378464,0.13788080262681054]},"sizeMeters":[0.564,0.459,0.276],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:25.771Z","updatedAt":"2026-09-11T10:19:25.886Z","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/34859/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 CounterScalesWithATippingPanIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34859/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/34859/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34859/v1/model.glb\" alt=\"Counter scales with a tipping pan (Indoor Market Hall and Traders)\" 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/34859/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/34859/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34858","slug":"indoor-market-hall-and-traders-glass-display-case-8f12ea4d","title":"Glass display case with sliding doors (Indoor Market Hall and Traders)","summary":"A 1.2 m glazed counter top case on a timber base: a steel frame with glass on the front, both gables and the top, two glass shelves of blank boxed stock, and two sliding rear leaves in a single head and sill track.","description":"A 1.2 m glazed counter top case on a timber base: a steel frame with glass on the front, both gables and the top, two glass shelves of blank boxed stock, and two sliding rear leaves in a single head and sill track. Dimensions 1.20 by 0.73 by 0.57 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: case-door-left, case-door-right. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-glass-display-case-8f12ea4d","cdnUrl":"https://cdn.3dassets.dev/assets/34858/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-glass-display-case-8f12ea4d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34858/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34858/v1/poster.webp","blurhash":"U8F~Kw]:00TJC,?v#RE100F3$#wa=X=yrJDj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":72840,"triangles":1664,"vertices":3745,"meshes":8,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6011999845504761,0.000008542699465964587,-0.2750012184025607],"max":[0.6011999845504761,0.7300116522575034,0.2949733438513322]},"sizeMeters":[1.202,0.73,0.57],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:26.440Z","updatedAt":"2026-09-11T10:19:26.574Z","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/34858/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 GlassDisplayCaseWithSlidingDoorsIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34858/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/34858/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34858/v1/model.glb\" alt=\"Glass display case with sliding doors (Indoor Market Hall and Traders)\" 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/34858/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/34858/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34860","slug":"indoor-market-hall-and-traders-till-and-card-reader-facdd132","title":"Till and card reader (Indoor Market Hall and Traders)","summary":"The pay point of a modern pitch: a steel till body with a raked blank display and a key block, a card reader on a gooseneck stand beside it, and a cash drawer on runners under the deck.","description":"The pay point of a modern pitch: a steel till body with a raked blank display and a key block, a card reader on a gooseneck stand beside it, and a cash drawer on runners under the deck. Dimensions 0.56 by 0.47 by 0.41 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: till-drawer. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-till-and-card-reader-facdd132","cdnUrl":"https://cdn.3dassets.dev/assets/34860/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-till-and-card-reader-facdd132","thumbnailUrl":"https://cdn.3dassets.dev/assets/34860/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34860/v1/poster.webp","blurhash":"U99apw?w00R5yYo#IARi00Dik?t7L}V=x^bH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":75872,"triangles":1680,"vertices":3775,"meshes":5,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.20999999344348907,-0.000014364264402239035,-0.19000014677977115],"max":[0.35499998927116394,0.4707011277894114,0.2199860367758783]},"sizeMeters":[0.565,0.471,0.41],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:26.241Z","updatedAt":"2026-09-11T10:19:26.357Z","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/34860/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 TillAndCardReaderIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34860/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/34860/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34860/v1/model.glb\" alt=\"Till and card reader (Indoor Market Hall and Traders)\" 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/34860/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/34860/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34854","slug":"indoor-market-hall-and-traders-stall-back-shelving-3462e261","title":"Stall back shelving unit (Indoor Market Hall and Traders)","summary":"The stocked shelf unit that closes the back of a pitch: four timber decks 2.05 m high carrying blank cartons and bundles, with two open crates and a base deck underneath for the day's reserve stock.","description":"The stocked shelf unit that closes the back of a pitch: four timber decks 2.05 m high carrying blank cartons and bundles, with two open crates and a base deck underneath for the day's reserve stock. Dimensions 1.70 by 2.05 by 0.44 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-stall-back-shelving-3462e261","cdnUrl":"https://cdn.3dassets.dev/assets/34854/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-stall-back-shelving-3462e261","thumbnailUrl":"https://cdn.3dassets.dev/assets/34854/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34854/v1/poster.webp","blurhash":"U8GbO[^*00Dj-;?aM{0L00Ip~pt6xF%LozD+","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":192268,"triangles":4480,"vertices":10155,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.850073987612461,0,-0.21997130748448304],"max":[0.850073987612461,2.049999952316284,0.21997130748448304]},"sizeMeters":[1.7,2.05,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:23.645Z","updatedAt":"2026-09-11T10:19:23.765Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34854/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StallBackShelvingUnitIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34854/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34854/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34854/v1/model.glb\" alt=\"Stall back shelving unit (Indoor Market Hall and Traders)\" 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/34854/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/34854/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34845","slug":"indoor-market-hall-and-traders-stall-price-board-85782807","title":"Stall price board on an easel (Indoor Market Hall and Traders)","summary":"The same blank board fitted to a folding counter easel: a timber frame round a slate field with a chalk rail head, raked back on splayed legs to stand on a counter or the end of a display slope.","description":"The same blank board fitted to a folding counter easel: a timber frame round a slate field with a chalk rail head, raked back on splayed legs to stand on a counter or the end of a display slope. Dimensions 0.72 by 0.63 by 0.28 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-stall-price-board-85782807","cdnUrl":"https://cdn.3dassets.dev/assets/34845/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-stall-price-board-85782807","thumbnailUrl":"https://cdn.3dassets.dev/assets/34845/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34845/v1/poster.webp","blurhash":"U9DcEstS00-m~p?H9Z4.01t6N2IUR%-oxuE2","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":15440,"triangles":352,"vertices":756,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.36000001430511475,-0.000007739276667972916,-0.16746916506607368],"max":[0.36000001430511475,0.6277043130109514,0.11108671013433769]},"sizeMeters":[0.72,0.628,0.279],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:17.100Z","updatedAt":"2026-09-11T10:19:17.197Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34845/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StallPriceBoardOnAnEaselIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34845/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34845/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34845/v1/model.glb\" alt=\"Stall price board on an easel (Indoor Market Hall and Traders)\" 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/34845/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/34845/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34866","slug":"indoor-market-hall-and-traders-flower-bucket-display-f1808ce9","title":"Flower bucket display (Indoor Market Hall and Traders)","summary":"The florist's stepped staging: three timber tiers carrying twelve galvanised buckets, each with a bunch of generic stems and simple blooms in red, amber and cream. The single tallest piece of colour in a brick and iron hall.","description":"The florist's stepped staging: three timber tiers carrying twelve galvanised buckets, each with a bunch of generic stems and simple blooms in red, amber and cream. The single tallest piece of colour in a brick and iron hall. Dimensions 1.30 by 1.51 by 0.78 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-flower-bucket-display-f1808ce9","cdnUrl":"https://cdn.3dassets.dev/assets/34866/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-flower-bucket-display-f1808ce9","thumbnailUrl":"https://cdn.3dassets.dev/assets/34866/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34866/v1/poster.webp","blurhash":"U3F5sp1600:#np~U0x0100RUyq^M|}KPxBIA","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":222240,"triangles":5888,"vertices":12410,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499999761581421,-0.00003202609388375244,-0.37003569652198764],"max":[0.6499999761581421,1.5099999904632568,0.4100356881773374]},"sizeMeters":[1.3,1.51,0.78],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:30.537Z","updatedAt":"2026-09-11T10:19:30.641Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34866/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FlowerBucketDisplayIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34866/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34866/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34866/v1/model.glb\" alt=\"Flower bucket display (Indoor Market Hall and Traders)\" 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/34866/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/34866/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34871","slug":"indoor-market-hall-and-traders-fabric-bolt-rack-98282900","title":"Fabric bolt rack (Indoor Market Hall and Traders)","summary":"The draper's raked rack: a steel frame with three rails carrying twelve rolled bolts of cloth in the hall's five colours, wound ends out so the rack reads as fabric at any distance.","description":"The draper's raked rack: a steel frame with three rails carrying twelve rolled bolts of cloth in the hall's five colours, wound ends out so the rack reads as fabric at any distance. Dimensions 1.66 by 1.50 by 0.60 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. The awning canvas, the netting mesh, the hanging cloth and the sacking are static geometry: a flexible sheet is not reachable with one rigid node transform, so it is modelled in its hanging shape. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-fabric-bolt-rack-98282900","cdnUrl":"https://cdn.3dassets.dev/assets/34871/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-fabric-bolt-rack-98282900","thumbnailUrl":"https://cdn.3dassets.dev/assets/34871/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34871/v1/poster.webp","blurhash":"U5Bf|ZO=00+H~n%#0M8w00ov~pIu57$f=_K6","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":30728,"triangles":968,"vertices":2000,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.95652174949646,0,-0.2999588000122074],"max":[0.7000106814783166,1.5,0.2999588000122074]},"sizeMeters":[1.657,1.5,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:32.887Z","updatedAt":"2026-09-11T10:19:33.077Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34871/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FabricBoltRackIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34871/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34871/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34871/v1/model.glb\" alt=\"Fabric bolt rack (Indoor Market Hall and Traders)\" 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/34871/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/34871/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34868","slug":"indoor-market-hall-and-traders-haberdashery-tray-set-6ba8e2f8","title":"Haberdashery tray set (Indoor Market Hall and Traders)","summary":"The same stacking trays fitted with a divider grid and filled with reels of thread and rolls of ribbon in four colours, with a stack of blank card packets on top. The draper's half of a mixed hall.","description":"The same stacking trays fitted with a divider grid and filled with reels of thread and rolls of ribbon in four colours, with a stack of blank card packets on top. The draper's half of a mixed hall. Dimensions 0.77 by 0.74 by 0.53 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-haberdashery-tray-set-6ba8e2f8","cdnUrl":"https://cdn.3dassets.dev/assets/34868/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-haberdashery-tray-set-6ba8e2f8","thumbnailUrl":"https://cdn.3dassets.dev/assets/34868/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34868/v1/poster.webp","blurhash":"UAB3._?b004n~q-;9F9FM_xuM|D%Rkj[t7M{","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":221192,"triangles":6800,"vertices":15346,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.38600000739097595,-0.000004937821982631263,-0.26601923175460124],"max":[0.38600000739097595,0.7369630932807922,0.26601923175460124]},"sizeMeters":[0.772,0.737,0.532],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:32.559Z","updatedAt":"2026-09-11T10:19:32.681Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34868/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HaberdasheryTraySetIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34868/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34868/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34868/v1/model.glb\" alt=\"Haberdashery tray set (Indoor Market Hall and Traders)\" 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/34868/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/34868/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34857","slug":"indoor-market-hall-and-traders-hanging-stock-rail-d052326c","title":"Hanging stock rail (Indoor Market Hall and Traders)","summary":"A free standing steel rail 1.65 m high on two footplates, hung with nine blank shouldered garments on wire hangers in the hall's three trader colours, the rail a clothing pitch stands beside its counter.","description":"A free standing steel rail 1.65 m high on two footplates, hung with nine blank shouldered garments on wire hangers in the hall's three trader colours, the rail a clothing pitch stands beside its counter. Dimensions 2.00 by 1.69 by 0.50 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The awning canvas, the netting mesh, the hanging cloth and the sacking are static geometry: a flexible sheet is not reachable with one rigid node transform, so it is modelled in its hanging shape. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-hanging-stock-rail-d052326c","cdnUrl":"https://cdn.3dassets.dev/assets/34857/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-hanging-stock-rail-d052326c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34857/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34857/v1/poster.webp","blurhash":"U8Aw9zxa00N[Vs%MIn9F4-Io?H%10K%g~WIA","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":56348,"triangles":1652,"vertices":3435,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.00003405674829526362,-0.250038148136845],"max":[1,1.6899660004721637,0.250038148136845]},"sizeMeters":[2,1.69,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:24.360Z","updatedAt":"2026-09-11T10:19:24.463Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34857/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HangingStockRailIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34857/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34857/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34857/v1/model.glb\" alt=\"Hanging stock rail (Indoor Market Hall and Traders)\" 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/34857/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/34857/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34861","slug":"indoor-market-hall-and-traders-cash-box-8c5754d7","title":"Trader cash box (Indoor Market Hall and Traders)","summary":"The tin a day trader takes the float in: a 0.3 m pressed steel box with a lipped hinged lid, a wire carry handle and a blank lock escutcheon on the front.","description":"The tin a day trader takes the float in: a 0.3 m pressed steel box with a lipped hinged lid, a wire carry handle and a blank lock escutcheon on the front. Dimensions 0.30 by 0.17 by 0.22 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: cash-lid. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-cash-box-8c5754d7","cdnUrl":"https://cdn.3dassets.dev/assets/34861/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-cash-box-8c5754d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/34861/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34861/v1/poster.webp","blurhash":"U8Amxa?v00NF4nt7%Max009E%Mxa_4RjITWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17788,"triangles":336,"vertices":766,"meshes":3,"materials":2,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.15000000596046448,0.0000050355542636285056,-0.11000397207542005],"max":[0.15000000596046448,0.17497484691928786,0.1120060450042235]},"sizeMeters":[0.3,0.175,0.222],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:26.871Z","updatedAt":"2026-09-11T10:19:26.982Z","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/34861/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 TraderCashBoxIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34861/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/34861/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34861/v1/model.glb\" alt=\"Trader cash box (Indoor Market Hall and Traders)\" 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/34861/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/34861/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34872","slug":"indoor-market-hall-and-traders-second-hand-book-box-se-5632c81f","title":"Second hand book box set (Indoor Market Hall and Traders)","summary":"Three open crates of upright second hand books on a folding stand, the spines varied in thickness, height and colour with a few leaning at the end of each box. Every spine and cover is blank.","description":"Three open crates of upright second hand books on a folding stand, the spines varied in thickness, height and colour with a few leaning at the end of each box. Every spine and cover is blank. Dimensions 1.30 by 1.03 by 0.55 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-second-hand-book-box-se-5632c81f","cdnUrl":"https://cdn.3dassets.dev/assets/34872/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-second-hand-book-box-se-5632c81f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34872/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34872/v1/poster.webp","blurhash":"UKC~|?xt4ojv~V%LIVM|9GxsxaM}4:oLxaaf","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":209480,"triangles":4848,"vertices":10877,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499999761581421,-0.00001694608055557989,-0.2749610788149055],"max":[0.6499999761581421,1.0322048843569085,0.2749610788149055]},"sizeMeters":[1.3,1.032,0.55],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:35.436Z","updatedAt":"2026-09-11T10:19:35.529Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34872/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SecondHandBookBoxSetIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34872/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34872/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34872/v1/model.glb\" alt=\"Second hand book box set (Indoor Market Hall and Traders)\" 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/34872/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/34872/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34873","slug":"indoor-market-hall-and-traders-vinyl-record-crate-set-672bf283","title":"Vinyl record crate set (Indoor Market Hall and Traders)","summary":"The same stand with three crates of filed record sleeves, raked back for browsing, and one sleeve stood at the front of the deck. Every sleeve face is a blank colour field with no artwork or text.","description":"The same stand with three crates of filed record sleeves, raked back for browsing, and one sleeve stood at the front of the deck. Every sleeve face is a blank colour field with no artwork or text. Dimensions 1.30 by 1.11 by 0.55 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-vinyl-record-crate-set-672bf283","cdnUrl":"https://cdn.3dassets.dev/assets/34873/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-vinyl-record-crate-set-672bf283","thumbnailUrl":"https://cdn.3dassets.dev/assets/34873/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34873/v1/poster.webp","blurhash":"URD+rFt64:e:~VxtIVNGD*xat6NH9Gf6xaS2","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":188832,"triangles":5212,"vertices":11503,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499999761581421,-0.00001694608055557989,-0.2749610788149055],"max":[0.6499999761581421,1.1141731537494013,0.2749610788149055]},"sizeMeters":[1.3,1.114,0.55],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:35.477Z","updatedAt":"2026-09-11T10:19:35.565Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34873/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VinylRecordCrateSetIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34873/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34873/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34873/v1/model.glb\" alt=\"Vinyl record crate set (Indoor Market Hall and Traders)\" 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/34873/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/34873/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34874","slug":"indoor-market-hall-and-traders-plant-pot-display-dee4b9d4","title":"Plant pot display (Indoor Market Hall and Traders)","summary":"The garden trader's tiered staging: three timber tiers of fifteen terracotta pots, each with a spray of foliage and some with flower heads, stepped so the back row still reads over the front one.","description":"The garden trader's tiered staging: three timber tiers of fifteen terracotta pots, each with a spray of foliage and some with flower heads, stepped so the back row still reads over the front one. Dimensions 1.39 by 1.18 by 0.84 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The goods are modelled as stock rather than as a rig: produce, loaves, bolts, books and packets are fixed geometry in their display. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-plant-pot-display-dee4b9d4","cdnUrl":"https://cdn.3dassets.dev/assets/34874/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-plant-pot-display-dee4b9d4","thumbnailUrl":"https://cdn.3dassets.dev/assets/34874/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34874/v1/poster.webp","blurhash":"U9FFQhIW00%L~nt74pE100IVnhov9G%L%LNG","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":176316,"triangles":4408,"vertices":9134,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6949999928474426,-0.000030140458280536464,-0.4100076199404637],"max":[0.6949999928474426,1.1833082478407388,0.43000763066929976]},"sizeMeters":[1.39,1.183,0.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:34.710Z","updatedAt":"2026-09-11T10:19:34.817Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34874/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlantPotDisplayIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34874/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34874/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34874/v1/model.glb\" alt=\"Plant pot display (Indoor Market Hall and Traders)\" 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/34874/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/34874/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34864","slug":"indoor-market-hall-and-traders-folding-trader-table-c8986b1d","title":"Folding trader table (Indoor Market Hall and Traders)","summary":"The 1.5 m folding table a casual pitch is built on: a timber top on a tubular steel frame with folding legs and a stretcher, dressed with a green cloth over the front edge and a stack of blank paper bags.","description":"The 1.5 m folding table a casual pitch is built on: a timber top on a tubular steel frame with folding legs and a stretcher, dressed with a green cloth over the front edge and a stack of blank paper bags. Dimensions 1.54 by 0.88 by 0.74 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The awning canvas, the netting mesh, the hanging cloth and the sacking are static geometry: a flexible sheet is not reachable with one rigid node transform, so it is modelled in its hanging shape. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-folding-trader-table-c8986b1d","cdnUrl":"https://cdn.3dassets.dev/assets/34864/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-folding-trader-table-c8986b1d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34864/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34864/v1/poster.webp","blurhash":"UPDA6|xu9Ga_~p%MM{M{8zxuxuM{4UV[xbWB","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":39756,"triangles":864,"vertices":1934,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7699999809265137,0.00004244972876815689,-0.36999571824359745],"max":[0.7699999809265137,0.8788998855210989,0.36999571824359745]},"sizeMeters":[1.54,0.879,0.74],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:29.386Z","updatedAt":"2026-09-11T10:19:29.493Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34864/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldingTraderTableIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34864/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34864/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34864/v1/model.glb\" alt=\"Folding trader table (Indoor Market Hall and Traders)\" 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/34864/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/34864/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34886","slug":"indoor-market-hall-and-traders-market-barrow-a17cac01","title":"Market barrow (Indoor Market Hall and Traders)","summary":"The porter's two wheeled barrow: a 1.5 m timber deck on a steel axle with two spoked iron wheels, a back board, front legs and long handles, loaded with two open crates and a stack of blank cartons.","description":"The porter's two wheeled barrow: a 1.5 m timber deck on a steel axle with two spoked iron wheels, a back board, front legs and long handles, loaded with two open crates and a stack of blank cartons. Dimensions 1.06 by 0.87 by 1.75 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1. The lashing is not modelled and the load is fixed to the deck: a rope is not reachable with one rigid node transform. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-market-barrow-a17cac01","cdnUrl":"https://cdn.3dassets.dev/assets/34886/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-market-barrow-a17cac01","thumbnailUrl":"https://cdn.3dassets.dev/assets/34886/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34886/v1/poster.webp","blurhash":"UHECap-o01bv~WIoIUxu00D*xte.01xt%MR*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":142408,"triangles":3664,"vertices":8101,"meshes":5,"materials":4,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.5299819817863536,5.364418020903372e-9,-1.0027141571044922],"max":[0.5299819817863536,0.873887273903263,0.75]},"sizeMeters":[1.06,0.874,1.753],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:41.998Z","updatedAt":"2026-09-11T10:19:42.152Z","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/34886/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 MarketBarrowIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34886/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/34886/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34886/v1/model.glb\" alt=\"Market barrow (Indoor Market Hall and Traders)\" 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/34886/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/34886/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34880","slug":"indoor-market-hall-and-traders-cleaning-trolley-5775ad0c","title":"Cleaning trolley (Indoor Market Hall and Traders)","summary":"The hall cleaner's trolley: a steel frame on four castors with a sack ring and liner, a mop bucket with a wringer, a caddy of blank bottles and a mop leaning in its clip.","description":"The hall cleaner's trolley: a steel frame on four castors with a sack ring and liner, a mop bucket with a wringer, a caddy of blank bottles and a mop leaning in its clip. Dimensions 0.80 by 1.32 by 0.61 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. The mop head and the sack liner are static: a hinged mop and a slack liner are not reachable with one rigid node transform. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-cleaning-trolley-5775ad0c","cdnUrl":"https://cdn.3dassets.dev/assets/34880/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-cleaning-trolley-5775ad0c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34880/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34880/v1/poster.webp","blurhash":"UBAmh?-;008{M{oft7WB00IU~p-;xGWUS4sq","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":76312,"triangles":2012,"vertices":4328,"meshes":10,"materials":7,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.4000397476460282,-1.7881393449270533e-9,-0.34211523857698833],"max":[0.4000397476460282,1.3210700750350952,0.2700082449521639]},"sizeMeters":[0.8,1.321,0.612],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:40.056Z","updatedAt":"2026-09-11T10:19:40.190Z","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/34880/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 CleaningTrolleyIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34880/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/34880/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34880/v1/model.glb\" alt=\"Cleaning trolley (Indoor Market Hall and Traders)\" 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/34880/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/34880/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34853","slug":"indoor-market-hall-and-traders-stall-counter-module-0979a957","title":"Stall counter module (Indoor Market Hall and Traders)","summary":"The 1.5 m boarded counter a trader couples into any length of frontage: a timber trestle frame with a red boarded front, a 0.95 m deck with a back upstand and an undershelf of blank paper bags and cartons.","description":"The 1.5 m boarded counter a trader couples into any length of frontage: a timber trestle frame with a red boarded front, a 0.95 m deck with a back upstand and an undershelf of blank paper bags and cartons. Dimensions 1.50 by 1.00 by 0.70 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Connectors: counter-left, counter-right (type stall-counter). Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-stall-counter-module-0979a957","cdnUrl":"https://cdn.3dassets.dev/assets/34853/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-stall-counter-module-0979a957","thumbnailUrl":"https://cdn.3dassets.dev/assets/34853/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34853/v1/poster.webp","blurhash":"UKIzSH[v0Lof~p-om-M|0|P8aeM|R6xuKNIo","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":57004,"triangles":1280,"vertices":2905,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,-0.000030518509475996325,-0.3499481185338908],"max":[0.75,1.000030518509476,0.3499481185338908]},"sizeMeters":[1.5,1,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:21.834Z","updatedAt":"2026-09-11T10:19:22.031Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34853/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StallCounterModuleIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34853/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34853/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34853/v1/model.glb\" alt=\"Stall counter module (Indoor Market Hall and Traders)\" 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/34853/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/34853/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34883","slug":"indoor-market-hall-and-traders-cafe-table-and-chairs-82b61c7a","title":"Cafe table and chairs (Indoor Market Hall and Traders)","summary":"The two seat setting at the cafe end of a hall: a 0.72 m round timber top on a moulded cast iron pedestal with two bentwood chairs, a cup and saucer each and a blank folded card on the table.","description":"The two seat setting at the cafe end of a hall: a 0.72 m round timber top on a moulded cast iron pedestal with two bentwood chairs, a cup and saucer each and a blank folded card on the table. Dimensions 1.86 by 0.91 by 0.71 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-cafe-table-and-chairs-82b61c7a","cdnUrl":"https://cdn.3dassets.dev/assets/34883/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-cafe-table-and-chairs-82b61c7a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34883/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34883/v1/poster.webp","blurhash":"U8C~@t?G00sA}@~U9t9a00M|-:9a0f0M^%%1","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":54088,"triangles":1232,"vertices":2684,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9300000071525574,-0.000019848085677287575,-0.35628193273067577],"max":[0.9300000071525574,0.9137171504271384,0.35628193273067577]},"sizeMeters":[1.86,0.914,0.713],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:40.677Z","updatedAt":"2026-09-11T10:19:40.787Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34883/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CafeTableAndChairsIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34883/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34883/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34883/v1/model.glb\" alt=\"Cafe table and chairs (Indoor Market Hall and Traders)\" 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/34883/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/34883/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34884","slug":"indoor-market-hall-and-traders-planter-f3ac7b38","title":"Timber planter (Indoor Market Hall and Traders)","summary":"The hall's one piece of soft landscaping: a 0.8 m tapered timber tub with corner posts and a capping rail, filled with a mound of evergreen planting.","description":"The hall's one piece of soft landscaping: a 0.8 m tapered timber tub with corner posts and a capping rail, filled with a mound of evergreen planting. Dimensions 0.89 by 0.68 by 0.89 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-planter-f3ac7b38","cdnUrl":"https://cdn.3dassets.dev/assets/34884/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-planter-f3ac7b38","thumbnailUrl":"https://cdn.3dassets.dev/assets/34884/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34884/v1/poster.webp","blurhash":"U8H2Af~p00NFFxRjr@tQ00DkEMM|U_xupGM{","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":54928,"triangles":1184,"vertices":2814,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4449999928474426,-0.000021358937999149674,-0.4449999928474426],"max":[0.4449999928474426,0.6778015663990747,0.4449999928474426]},"sizeMeters":[0.89,0.678,0.89],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:40.980Z","updatedAt":"2026-09-11T10:19:41.230Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34884/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TimberPlanterIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34884/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34884/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34884/v1/model.glb\" alt=\"Timber planter (Indoor Market Hall and Traders)\" 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/34884/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/34884/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34877","slug":"indoor-market-hall-and-traders-market-bench-4b9bad27","title":"Market bench (Indoor Market Hall and Traders)","summary":"The aisle's own seat: a 1.8 m bench with cast iron ends and scrolled brackets carrying four timber seat slats and a three slat raked back, in the hall's bottle green and timber.","description":"The aisle's own seat: a 1.8 m bench with cast iron ends and scrolled brackets carrying four timber seat slats and a three slat raked back, in the hall's bottle green and timber. Dimensions 1.80 by 0.99 by 0.54 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-market-bench-4b9bad27","cdnUrl":"https://cdn.3dassets.dev/assets/34877/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-market-bench-4b9bad27","thumbnailUrl":"https://cdn.3dassets.dev/assets/34877/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34877/v1/poster.webp","blurhash":"UMF5?FRk4:bI~V%MIUIV01-o%1IV4:Rkxts:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"historical","title":"Historical"}],"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":54584,"triangles":1328,"vertices":2788,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.8999999761581421,0.000048208407502692285,-0.2699862652077871],"max":[0.8999999761581421,0.9907261346868081,0.2699862652077871]},"sizeMeters":[1.8,0.991,0.54],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:37.310Z","updatedAt":"2026-09-11T10:19:37.437Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34877/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarketBenchIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34877/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34877/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34877/v1/model.glb\" alt=\"Market bench (Indoor Market Hall and Traders)\" 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/34877/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/34877/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34878","slug":"indoor-market-hall-and-traders-litter-bin-06bd3ac5","title":"Litter bin with a hinged hood (Indoor Market Hall and Traders)","summary":"The hooped cast iron bin a hall keeps down its aisles: a moulded base, sixteen bars with three banding rings, a dark liner inside and a domed hood hinged along its back edge.","description":"The hooped cast iron bin a hall keeps down its aisles: a moulded base, sixteen bars with three banding rings, a dark liner inside and a domed hood hinged along its back edge. Dimensions 0.51 by 0.86 by 0.50 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Named pivoted nodes: bin-lid. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-litter-bin-06bd3ac5","cdnUrl":"https://cdn.3dassets.dev/assets/34878/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-litter-bin-06bd3ac5","thumbnailUrl":"https://cdn.3dassets.dev/assets/34878/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34878/v1/poster.webp","blurhash":"U25ruZ.S004TD5Vt%}x[4TjX.8VxMMWFyCt2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":33884,"triangles":748,"vertices":1616,"meshes":3,"materials":2,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.25300132804464537,0,-0.24840000785887242],"max":[0.25300132804464537,0.8600001610244674,0.24839999757707118]},"sizeMeters":[0.506,0.86,0.497],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:37.327Z","updatedAt":"2026-09-11T10:19:37.454Z","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/34878/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 LitterBinWithAHingedHoodIndoorMarketHallAndTraders(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34878/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/34878/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34878/v1/model.glb\" alt=\"Litter bin with a hinged hood (Indoor Market Hall and Traders)\" 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/34878/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/34878/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34879","slug":"indoor-market-hall-and-traders-recycling-station-46f71b3a","title":"Recycling station (Indoor Market Hall and Traders)","summary":"Three sorting bins in a shared iron frame with a hooded top and a blank coloured band over each aperture, in green, blue and amber. The streams are told apart by colour alone, so no wording is needed.","description":"Three sorting bins in a shared iron frame with a hooded top and a blank coloured band over each aperture, in green, blue and amber. The streams are told apart by colour alone, so no wording is needed. Dimensions 1.50 by 0.95 by 0.53 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-recycling-station-46f71b3a","cdnUrl":"https://cdn.3dassets.dev/assets/34879/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-recycling-station-46f71b3a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34879/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34879/v1/poster.webp","blurhash":"U8C%ywL34T^GPp~os:D,00w]xvER?GT2IVv{","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":48136,"triangles":1572,"vertices":3517,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,-0.00003586520909876212,-0.2499770419741767],"max":[0.75,0.9500358532881699,0.27651730773227345]},"sizeMeters":[1.5,0.95,0.526],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:38.833Z","updatedAt":"2026-09-11T10:19:38.937Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34879/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RecyclingStationIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34879/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34879/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34879/v1/model.glb\" alt=\"Recycling station (Indoor Market Hall and Traders)\" 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/34879/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/34879/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34881","slug":"indoor-market-hall-and-traders-information-board-04c099de","title":"Information board (Indoor Market Hall and Traders)","summary":"The hall's glazed noticeboard: a cast iron case on two moulded posts with a moulded head, glazed on both faces over a cream field with blank notices pinned behind the glass.","description":"The hall's glazed noticeboard: a cast iron case on two moulded posts with a moulded head, glazed on both faces over a cream field with blank notices pinned behind the glass. Dimensions 1.40 by 2.00 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-information-board-04c099de","cdnUrl":"https://cdn.3dassets.dev/assets/34881/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-information-board-04c099de","thumbnailUrl":"https://cdn.3dassets.dev/assets/34881/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34881/v1/poster.webp","blurhash":"U672NvyD00IA?]tlDPH?9Fae%Ma$Dikp?cnP","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":51144,"triangles":1232,"vertices":2666,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.7000335703604236,0,-0.2000340299262051],"max":[0.7000335703604236,2,0.1100340263499264]},"sizeMeters":[1.4,2,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:39.149Z","updatedAt":"2026-09-11T10:19:39.344Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34881/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InformationBoardIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34881/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34881/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34881/v1/model.glb\" alt=\"Information board (Indoor Market Hall and Traders)\" 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/34881/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/34881/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34882","slug":"indoor-market-hall-and-traders-wayfinding-sign-4b3f002e","title":"Wayfinding sign (Indoor Market Hall and Traders)","summary":"The same cast iron post carrying four blank direction fingers at different heights, each turned to its own aisle and faced in a trader colour, with a moulded finial on top.","description":"The same cast iron post carrying four blank direction fingers at different heights, each turned to its own aisle and faced in a trader colour, with a moulded finial on top. Dimensions 1.84 by 2.56 by 1.84 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-wayfinding-sign-4b3f002e","cdnUrl":"https://cdn.3dassets.dev/assets/34882/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-wayfinding-sign-4b3f002e","thumbnailUrl":"https://cdn.3dassets.dev/assets/34882/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34882/v1/poster.webp","blurhash":"U25Y7.WS00xK_NtP8{IW00%N_N8_8^R.%#s%","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":55024,"triangles":1268,"vertices":2733,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9199499290819756,0,-0.9199499290819756],"max":[0.9199499290819756,2.559999942779541,0.9199499290819756]},"sizeMeters":[1.84,2.56,1.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:39.409Z","updatedAt":"2026-09-11T10:19:39.511Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34882/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WayfindingSignIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34882/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34882/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34882/v1/model.glb\" alt=\"Wayfinding sign (Indoor Market Hall and Traders)\" 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/34882/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/34882/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34885","slug":"indoor-market-hall-and-traders-fire-point-08a2cd7f","title":"Fire point (Indoor Market Hall and Traders)","summary":"The fire point at the end of an aisle: a floor stand with two extinguishers in red and cream with their hoses and brackets, a blank sign board over them, a call point and a bucket of sand.","description":"The fire point at the end of an aisle: a floor stand with two extinguishers in red and cream with their hoses and brackets, a blank sign board over them, a call point and a bucket of sand. Dimensions 0.70 by 1.55 by 0.43 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every sign and label is blank: no wording, pictogram or standard mark appears on the board, the call point or the bodies. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-fire-point-08a2cd7f","cdnUrl":"https://cdn.3dassets.dev/assets/34885/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-fire-point-08a2cd7f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34885/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34885/v1/poster.webp","blurhash":"U39G%KX800rX9sM|-V-o0Kn~~CT0?a%ME14n","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":54936,"triangles":1252,"vertices":2736,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.349976337388593,0,-0.17994323003665716],"max":[0.349976337388593,1.5499999523162842,0.2515838214109547]},"sizeMeters":[0.7,1.55,0.432],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:41.381Z","updatedAt":"2026-09-11T10:19:42.017Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34885/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FirePointIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34885/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34885/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34885/v1/model.glb\" alt=\"Fire point (Indoor Market Hall and Traders)\" 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/34885/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/34885/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34843","slug":"indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","title":"Hanging trader sign (Indoor Market Hall and Traders)","summary":"The blank double sided board a hall hangs over each pitch: a bordered iron frame with a market red field on both faces, on two hanger rods, a cross bar and a fixing plate. Wordless on purpose, so a project can letter it.","description":"The blank double sided board a hall hangs over each pitch: a bordered iron frame with a market red field on both faces, on two hanger rods, a cross bar and a fixing plate. Wordless on purpose, so a project can letter it. Dimensions 1.20 by 1.16 by 0.10 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The bottom edge of the board rests at y=0 and the fixing plate is 1.02 m above it, so place the model at the height the board should hang and the plate meets the structure above. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","cdnUrl":"https://cdn.3dassets.dev/assets/34843/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-hanging-trader-sign-b77a654b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34843/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34843/v1/poster.webp","blurhash":"UEAvqU$%01Na1boz+_M|4:Ef%L-A|{wKFcOW","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":18932,"triangles":396,"vertices":907,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000004312327926192516,-0.05002594272090689],"max":[0.6000000238418579,1.1600042789493252,0.05002594272090689]},"sizeMeters":[1.2,1.16,0.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:16.861Z","updatedAt":"2026-09-11T10:19:16.967Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34843/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HangingTraderSignIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34843/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34843/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34843/v1/model.glb\" alt=\"Hanging trader sign (Indoor Market Hall and Traders)\" 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/34843/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/34843/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34844","slug":"indoor-market-hall-and-traders-hanging-trader-sign-blu-1948335a","title":"Hanging trader sign, blue field (Indoor Market Hall and Traders)","summary":"The same hanging board in the hall's second trader livery, a deep blue field in the same iron frame, so a row of pitches reads as different traders without a single word of text.","description":"The same hanging board in the hall's second trader livery, a deep blue field in the same iron frame, so a row of pitches reads as different traders without a single word of text. Dimensions 1.20 by 1.16 by 0.10 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-hanging-trader-sign-blu-1948335a","cdnUrl":"https://cdn.3dassets.dev/assets/34844/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-hanging-trader-sign-blu-1948335a","thumbnailUrl":"https://cdn.3dassets.dev/assets/34844/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34844/v1/poster.webp","blurhash":"U87VMvt,00RPDNtRtnMx8wMcyDx^%%kYRNV?","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":18968,"triangles":396,"vertices":907,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000004312327926192516,-0.05002594272090689],"max":[0.6000000238418579,1.1600042789493252,0.05002594272090689]},"sizeMeters":[1.2,1.16,0.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:16.926Z","updatedAt":"2026-09-11T10:19:17.041Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34844/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HangingTraderSignBlueFieldIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34844/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34844/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34844/v1/model.glb\" alt=\"Hanging trader sign, blue field (Indoor Market Hall and Traders)\" 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/34844/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/34844/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34842","slug":"indoor-market-hall-and-traders-hall-clock-on-bracket-f59f5cf2","title":"Hall clock on a bracket (Indoor Market Hall and Traders)","summary":"The clock the whole hall trades by: a double sided dial in a moulded cast iron case on a scrolled bracket arm and a wall plate, with blank faces, twelve markers and a pair of hands on each side. No figures and no maker name.","description":"The clock the whole hall trades by: a double sided dial in a moulded cast iron case on a scrolled bracket arm and a wall plate, with blank faces, twelve markers and a pair of hands on each side. No figures and no maker name. Dimensions 1.05 by 1.39 by 0.17 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The wall plate rests at y=0, so place the model at the height the bracket is fixed at: 2.2 m above the floor reads correctly against a 4 m wall. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-hall-clock-on-bracket-f59f5cf2","cdnUrl":"https://cdn.3dassets.dev/assets/34842/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-hall-clock-on-bracket-f59f5cf2","thumbnailUrl":"https://cdn.3dassets.dev/assets/34842/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34842/v1/poster.webp","blurhash":"U77_Zeog00ni_NRP4n%g00V@~qkX00tR~qIB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"historical","title":"Historical"}],"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":46416,"triangles":1082,"vertices":2364,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.1299785876296301,0,-0.08596140791834535],"max":[0.9199786090873022,1.3875356912612915,0.08596140791834535]},"sizeMeters":[1.05,1.388,0.172],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:15.267Z","updatedAt":"2026-09-11T10:19:15.384Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34842/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HallClockOnABracketIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34842/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34842/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34842/v1/model.glb\" alt=\"Hall clock on a bracket (Indoor Market Hall and Traders)\" 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/34842/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/34842/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34846","slug":"indoor-market-hall-and-traders-pigeon-netting-frame-7a60e351","title":"Pigeon netting frame (Indoor Market Hall and Traders)","summary":"A galvanised frame of 2.4 m by 1.2 m carrying a fine mesh, the panel a hall fixes under its eaves and rooflights to keep birds out of the trading floor. Rests on its bottom rail at y=0.","description":"A galvanised frame of 2.4 m by 1.2 m carrying a fine mesh, the panel a hall fixes under its eaves and rooflights to keep birds out of the trading floor. Rests on its bottom rail at y=0. Dimensions 2.40 by 1.20 by 0.05 m (X by Y by Z). Metre units, +Y up, customer or aisle side toward +Z, resting on y=0. The awning canvas, the netting mesh, the hanging cloth and the sacking are static geometry: a flexible sheet is not reachable with one rigid node transform, so it is modelled in its hanging shape. Every fascia, sign, board and label is blank: no market, shop, brand or trader name appears anywhere in this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/indoor-market-hall-and-traders-pigeon-netting-frame-7a60e351","cdnUrl":"https://cdn.3dassets.dev/assets/34846/v1/model.glb","downloadUrl":"https://3dassets.dev/download/indoor-market-hall-and-traders-pigeon-netting-frame-7a60e351","thumbnailUrl":"https://cdn.3dassets.dev/assets/34846/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34846/v1/poster.webp","blurhash":"U6AwJ0xu4mxu_4_NRiM{00%MxuM{Ri-;t7E0","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":28452,"triangles":692,"vertices":1442,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.0000915555320660788,-0.025049593573279873],"max":[1.2000000476837158,1.2000916032157818,0.025049593573279873]},"sizeMeters":[2.4,1.2,0.05],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T10:19:19.076Z","updatedAt":"2026-09-11T10:19:19.192Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34846/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PigeonNettingFrameIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34846/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34846/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34846/v1/model.glb\" alt=\"Pigeon netting frame (Indoor Market Hall and Traders)\" 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/34846/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/34846/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}